Compare commits
37 Commits
fvtt-les-h
...
master
Author | SHA1 | Date | |
---|---|---|---|
b83890a764 | |||
5ad3c165e5 | |||
2b3e774cbb | |||
96f8d2bceb | |||
e288c90ee4 | |||
8916de8613 | |||
8598df5a57 | |||
8781462c8d | |||
8c38aead3e | |||
67bf71e6c0 | |||
63d15e82bb | |||
62c3787cea | |||
df61abac19 | |||
a7d1a14c52 | |||
b0dc6f36e4 | |||
5109d2aa91 | |||
51c162ecbb | |||
44d02b0cd1 | |||
9b1600304a | |||
2dff59c829 | |||
55a2a8e3c3 | |||
2da1f56a91 | |||
66bd9dd2c8 | |||
15427f3747 | |||
577eccbbd3 | |||
05026d454b | |||
6497369d7f | |||
5e5ddd1c3b | |||
a72108db5b | |||
6a46faadc2 | |||
e95f7de0c5 | |||
9d3ef8cbeb | |||
c6ec1b74a2 | |||
1b12dc44c9 | |||
f26cd7670c | |||
02f8207fb7 | |||
439797e71e |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.history/
|
10
README.md
10
README.md
|
@ -1,8 +1,8 @@
|
||||||
# Système Foundry pour Hawkmoon (French RPG, Titam France/Sombres Projets)
|
# Système Foundry pour Les Héritiers (French RPG, Titam France/Sombres Projets)
|
||||||
|
|
||||||
## EN
|
## EN
|
||||||
|
|
||||||
Unofficial system for Hawkmoon (French version from Titam France).
|
Unofficial system for Les Heritiers (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 Hawkmoon (Titam France/Sombres Projets).
|
Système non-officiel pour le JDR Les Héritiers (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
|
||||||
|
|
||||||
Hawkmoon, le jeu de rôle du Troisième Millénaire, is a property of Titam France/Sombres Projets.
|
Les Héritiers, 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, Blondin, Zechrub/Chris, Kyllian, Lightbringer
|
Prêtre, Carter
|
||||||
|
|
BIN
assets/ui/heritiers_background_01.webp
Normal file
BIN
assets/ui/heritiers_background_01.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 192 KiB |
46
lang/fr.json
46
lang/fr.json
|
@ -1,31 +1,23 @@
|
||||||
{
|
{
|
||||||
"ACTOR": {
|
"TYPES": {
|
||||||
"TypePersonnage": "Personnage",
|
"Actor": {
|
||||||
"TypeCellule": "Cellule",
|
"personnage": "Personnage",
|
||||||
"TypeCreature": "Créature"
|
"pnj": "PNJ"
|
||||||
},
|
},
|
||||||
|
"Item": {
|
||||||
"ITEM": {
|
"accessoire": "Accessoire",
|
||||||
"TypeArtefact": "Artefact",
|
"arme": "Arme",
|
||||||
"TypeArme": "Arme",
|
"atoutfeerique": "Atout féerique",
|
||||||
"TypeTalent": "Talent",
|
"avantage": "Avantage",
|
||||||
"TypeHistorique": "Historique",
|
"capacitenaturelle": "Capacité naturelle",
|
||||||
"TypeProfil": "Profil",
|
"competence": "Compétence",
|
||||||
"TypeCompetence": "Compétence",
|
"contact": "Contact",
|
||||||
"TypeProtection": "Protection",
|
"desavantage": "Désavantage",
|
||||||
"TypeMonnaie": "Monnaie",
|
"equipement": "Equipement",
|
||||||
"TypeEquipement": "Equipement",
|
"fee": "Fée",
|
||||||
"TypeRessource": "Ressource",
|
"pouvoir": "Pouvoir",
|
||||||
"TypeContact": "Contact"
|
"profil": "Profil",
|
||||||
|
"protection": "Protection"
|
||||||
},
|
|
||||||
|
|
||||||
"HAWKMOON": {
|
|
||||||
"ui": {
|
|
||||||
"editContact": "Modifier le contact",
|
|
||||||
"deleteContact": "Supprimer le contact",
|
|
||||||
"editTrait": "Modifier le trait",
|
|
||||||
"deleteTrait": "Supprimer le trait"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -3,23 +3,24 @@
|
||||||
* @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 HeritiersCreatureSheet extends HeritiersActorSheet {
|
export class HeritiersActorPNJSheet extends HeritiersActorSheet {
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
|
|
||||||
return mergeObject(super.defaultOptions, {
|
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||||
classes: ["fvtt-les-heritiers", "sheet", "actor"],
|
classes: ["fvtt-les-heritiers", "sheet", "actor"],
|
||||||
template: "systems/fvtt-les-heritiers/templates/creature-sheet.html",
|
template: "systems/fvtt-les-heritiers/templates/actor-pnj-sheet.html",
|
||||||
width: 640,
|
width: 780,
|
||||||
height: 720,
|
height: 840,
|
||||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
||||||
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
||||||
editScore: false
|
editScore: false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -11,11 +11,11 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
|
|
||||||
return mergeObject(super.defaultOptions, {
|
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||||
classes: ["fvtt-les-heritiers", "sheet", "actor"],
|
classes: ["fvtt-les-heritiers", "sheet", "actor"],
|
||||||
template: "systems/fvtt-les-heritiers/templates/actor-sheet.html",
|
template: "systems/fvtt-les-heritiers/templates/actor-sheet.html",
|
||||||
width: 640,
|
width: 780,
|
||||||
height: 720,
|
height: 840,
|
||||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
||||||
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
||||||
editScore: false
|
editScore: false
|
||||||
|
@ -24,7 +24,7 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async getData() {
|
async getData() {
|
||||||
const objectData = duplicate(this.object)
|
const objectData = foundry.utils.duplicate(this.object)
|
||||||
|
|
||||||
let formData = {
|
let formData = {
|
||||||
title: this.title,
|
title: this.title,
|
||||||
|
@ -38,32 +38,37 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||||
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
|
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
|
||||||
limited: this.object.limited,
|
limited: this.object.limited,
|
||||||
skills: this.actor.getSkills(),
|
skills: this.actor.getSkills(),
|
||||||
utileSkills :this.actor.organizeUtileSkills(),
|
utileSkillsMental :this.actor.organizeUtileSkills("mental"),
|
||||||
|
utileSkillsPhysical :this.actor.organizeUtileSkills("physical"),
|
||||||
futileSkills :this.actor.organizeFutileSkills(),
|
futileSkills :this.actor.organizeFutileSkills(),
|
||||||
contacts: this.actor.organizeContacts(),
|
contacts: this.actor.organizeContacts(),
|
||||||
armes: duplicate(this.actor.getWeapons()),
|
armes: foundry.utils.duplicate(this.actor.getWeapons()),
|
||||||
monnaies: duplicate(this.actor.getMonnaies()),
|
monnaies: foundry.utils.duplicate(this.actor.getMonnaies()),
|
||||||
pouvoirs: duplicate(this.actor.getPouvoirs()),
|
pouvoirs: foundry.utils.duplicate(this.actor.getPouvoirs()),
|
||||||
fee: duplicate(this.actor.getFee() || {} ),
|
fee: foundry.utils.duplicate(this.actor.getFee() || {} ),
|
||||||
protections: duplicate(this.actor.getArmors()),
|
protections: foundry.utils.duplicate(this.actor.getArmors()),
|
||||||
combat: this.actor.getCombatValues(),
|
combat: this.actor.getCombatValues(),
|
||||||
equipements: duplicate(this.actor.getEquipments()),
|
equipements: foundry.utils.duplicate(this.actor.getEquipments()),
|
||||||
avantages: duplicate(this.actor.getAvantages()),
|
avantages: foundry.utils.duplicate(this.actor.getAvantages()),
|
||||||
atouts: duplicate(this.actor.getAtouts()),
|
atouts: foundry.utils.duplicate(this.actor.getAtouts()),
|
||||||
capacites: duplicate(this.actor.getCapacites()),
|
capacites: foundry.utils.duplicate(this.actor.getCapacites()),
|
||||||
desavantages: duplicate(this.actor.getDesavantages()),
|
desavantages: foundry.utils.duplicate(this.actor.getDesavantages()),
|
||||||
profils: duplicate(this.actor.getProfils()),
|
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}),
|
revesetranges: await TextEditor.enrichHTML(this.object.system.biodata.revesetranges, {async: true}),
|
||||||
secretsdecouverts: await TextEditor.enrichHTML(this.object.system.biodata.secretsdecouverts, {async: true}),
|
secretsdecouverts: await TextEditor.enrichHTML(this.object.system.biodata.secretsdecouverts, {async: true}),
|
||||||
questions: await TextEditor.enrichHTML(this.object.system.biodata.questions, {async: true}),
|
questions: await TextEditor.enrichHTML(this.object.system.biodata.questions, {async: true}),
|
||||||
habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
|
habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
|
||||||
|
playernotes: await TextEditor.enrichHTML(this.object.system.biodata.playernotes, {async: true}),
|
||||||
options: this.options,
|
options: this.options,
|
||||||
owner: this.document.isOwner,
|
owner: this.document.isOwner,
|
||||||
editScore: this.options.editScore,
|
editScore: this.options.editScore,
|
||||||
isGM: game.user.isGM
|
config: game.system.lesheritiers.config,
|
||||||
|
isGM: game.user.isGM,
|
||||||
|
isPNJ: (this.actor.type == "pnj")
|
||||||
}
|
}
|
||||||
this.formData = formData;
|
this.formData = formData;
|
||||||
|
|
||||||
|
@ -72,19 +77,42 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getCelluleTalents( ) {
|
dialogRecupUsage() {
|
||||||
let talents = []
|
new Dialog({
|
||||||
for(let cellule of game.actors) {
|
title: "Récupération des Points d'Usage",
|
||||||
if (cellule.type == "cellule") {
|
content: "<p>Combien de Points d'Usage souhaitez-vous récupérer ?</p>",
|
||||||
let found = cellule.system.members.find( it => it.id == this.actor.id)
|
buttons: {
|
||||||
if (found) {
|
one: {
|
||||||
talents = talents.concat( cellule.getTalents() )
|
icon: '<i class="fas fa-check"></i>',
|
||||||
|
label: "1 Point",
|
||||||
|
callback: () => {
|
||||||
|
this.actor.recupUsage(1)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
two: {
|
||||||
|
icon: '<i class="fas fa-check"></i>',
|
||||||
|
label: "2 Points",
|
||||||
|
callback: () => {
|
||||||
|
this.actor.recupUsage(2)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
four: {
|
||||||
|
icon: '<i class="fas fa-check"></i>',
|
||||||
|
label: "4 Points",
|
||||||
|
callback: () => {
|
||||||
|
this.actor.recupUsage(4)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
all: {
|
||||||
|
icon: '<i class="fas fa-check"></i>',
|
||||||
|
label: "Tous les Points",
|
||||||
|
callback: () => {
|
||||||
|
this.actor.recupUsage(100)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}).render(true)
|
||||||
return talents
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/** @override */
|
/** @override */
|
||||||
activateListeners(html) {
|
activateListeners(html) {
|
||||||
|
@ -136,6 +164,14 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||||
const key = $(event.currentTarget).data("key")
|
const key = $(event.currentTarget).data("key")
|
||||||
this.actor.rollCarac(key, false)
|
this.actor.rollCarac(key, false)
|
||||||
})
|
})
|
||||||
|
html.find('.roll-rang').click((event) => {
|
||||||
|
const key = $(event.currentTarget).data("rang-key")
|
||||||
|
this.actor.rollRang(key, false)
|
||||||
|
})
|
||||||
|
html.find('.roll-root-competence').click((event) => {
|
||||||
|
const compKey = $(event.currentTarget).data("attr-key")
|
||||||
|
this.actor.rollRootCompetence(compKey)
|
||||||
|
})
|
||||||
html.find('.roll-competence').click((event) => {
|
html.find('.roll-competence').click((event) => {
|
||||||
const li = $(event.currentTarget).parents(".item")
|
const li = $(event.currentTarget).parents(".item")
|
||||||
let compId = li.data("item-id")
|
let compId = li.data("item-id")
|
||||||
|
@ -146,12 +182,31 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||||
let armeId = li.data("item-id")
|
let armeId = li.data("item-id")
|
||||||
this.actor.rollAttaqueArme(armeId)
|
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) => {
|
html.find('.roll-pouvoir').click((event) => {
|
||||||
const li = $(event.currentTarget).parents(".item")
|
const li = $(event.currentTarget).parents(".item")
|
||||||
let pouvoirId = li.data("item-id")
|
let pouvoirId = li.data("item-id")
|
||||||
this.actor.rollPouvoir(pouvoirId)
|
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 })
|
||||||
|
|
|
@ -46,11 +46,7 @@ export class HeritiersActor extends Actor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (data.type == 'creature') {
|
if (data.type == 'pnj') {
|
||||||
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.skills-creatures")
|
|
||||||
data.items = skills.map(i => i.toObject())
|
|
||||||
data.items.push({ name: "Arme naturelle 1", type: 'arme', img: "systems/fvtt-les-heritiers/assets/icons/melee.webp", system: { typearme: "contact", bonusmaniementoff: 0, seuildefense: 0, degats: "0" } })
|
|
||||||
data.items.push({ name: "Arme naturelle 2", type: 'arme', img: "systems/fvtt-les-heritiers/assets/icons/melee.webp", system: { typearme: "contact", bonusmaniementoff: 0, seuildefense: 0, degats: "0" } })
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.create(data, options);
|
return super.create(data, options);
|
||||||
|
@ -58,26 +54,8 @@ export class HeritiersActor extends Actor {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
prepareArme(arme) {
|
prepareArme(arme) {
|
||||||
arme = duplicate(arme)
|
arme = foundry.utils.duplicate(arme)
|
||||||
let combat = this.getCombatValues()
|
arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||||
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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,13 +70,23 @@ 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 = duplicate(this.system.members)
|
let members = foundry.utils.duplicate(this.system.members)
|
||||||
members.push({ id: actorId })
|
members.push({ id: actorId })
|
||||||
this.update({ 'system.members': members })
|
this.update({ 'system.members': members })
|
||||||
}
|
}
|
||||||
|
@ -108,49 +96,62 @@ 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.items.filter(item => item.type == "equipement" || item.type == "accessoire")
|
return this.getItemSorted(["equipement", "accessoire"])
|
||||||
}
|
}
|
||||||
getAvantages() {
|
getAvantages() {
|
||||||
return this.items.filter(item => item.type == "avantage")
|
return this.getItemSorted(["avantage"])
|
||||||
}
|
}
|
||||||
getDesavantages() {
|
getDesavantages() {
|
||||||
return this.items.filter(item => item.type == "desavantage")
|
return this.getItemSorted(["desavantage"])
|
||||||
}
|
}
|
||||||
getMonnaies() {
|
getMonnaies() {
|
||||||
return this.items.filter(item => item.type == "monnaie")
|
return this.getItemSorted(["monnaie"])
|
||||||
}
|
}
|
||||||
getArmors() {
|
getArmors() {
|
||||||
return this.items.filter(item => item.type == "protection")
|
return this.getItemSorted(["protection"])
|
||||||
}
|
}
|
||||||
getTalents() {
|
getTalents() {
|
||||||
return this.items.filter(item => item.type == "talent")
|
return this.getItemSorted(["talent"])
|
||||||
}
|
}
|
||||||
getContacts() {
|
getContacts() {
|
||||||
return this.items.filter(item => item.type == "contact")
|
return this.getItemSorted(["contact"])
|
||||||
}
|
}
|
||||||
getAtouts() {
|
getAtouts() {
|
||||||
return this.items.filter(item => item.type == "atoutfeerique")
|
return this.getItemSorted(["atoutfeerique"])
|
||||||
}
|
}
|
||||||
getCapacites() {
|
getCapacites() {
|
||||||
return this.items.filter(item => item.type == "capacitenaturelle")
|
return this.getItemSorted(["capacitenaturelle"])
|
||||||
}
|
}
|
||||||
getFee() {
|
getFee() {
|
||||||
return this.items.find(item => item.type == "fee")
|
return this.items.find(item => item.type == "fee")
|
||||||
}
|
}
|
||||||
getProfils() {
|
getProfils() {
|
||||||
return this.items.filter(item => item.type == "profil")
|
return this.getItemSorted(["profil"])
|
||||||
}
|
}
|
||||||
getPouvoirs() {
|
getPouvoirs() {
|
||||||
let pouvoirs = this.items.filter(item => item.type == "pouvoir") || []
|
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)
|
HeritiersUtility.sortArrayObjectsByName(pouvoirs)
|
||||||
return pouvoirs
|
return pouvoirs
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getSkills() {
|
getSkills() {
|
||||||
let comp = []
|
let comp = []
|
||||||
for (let item of this.items) {
|
for (let item of this.items) {
|
||||||
item = duplicate(item)
|
item = foundry.utils.duplicate(item)
|
||||||
if (item.type == "competence") {
|
if (item.type == "competence") {
|
||||||
comp.push(item)
|
comp.push(item)
|
||||||
}
|
}
|
||||||
|
@ -161,7 +162,7 @@ export class HeritiersActor extends Actor {
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
prepareUtileSkill(item) {
|
prepareUtileSkill(item) {
|
||||||
let specList = []
|
let specList = []
|
||||||
if (item.system.categorie == "utile") {
|
if (item?.system?.categorie == "utile") {
|
||||||
for (let spec of item.system.specialites) {
|
for (let spec of item.system.specialites) {
|
||||||
specList.push(spec.name)
|
specList.push(spec.name)
|
||||||
}
|
}
|
||||||
|
@ -171,23 +172,25 @@ export class HeritiersActor extends Actor {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
organizeUtileSkills() {
|
organizeUtileSkills(kind = "mental") {
|
||||||
let comp = {}
|
let comp = {}
|
||||||
for (let key in game.system.lesheritiers.config.competenceProfil) {
|
for (let key in game.system.lesheritiers.config.competenceProfil) {
|
||||||
comp[key] = []
|
if (game.system.lesheritiers.config.competenceProfil[key].kind == kind)
|
||||||
|
comp[key] = { skills: [], niveau: this.system.competences[key].niveau }
|
||||||
}
|
}
|
||||||
for (let item of this.items) {
|
for (let item of this.items) {
|
||||||
if (item.type == "competence") {
|
if (item.type == "competence") {
|
||||||
if (item.system.categorie == "utile") {
|
if (item.system.categorie == "utile" && comp[item.system.profil]) {
|
||||||
this.prepareUtileSkill(item)
|
this.prepareUtileSkill(item)
|
||||||
comp[item.system.profil].push(item)
|
comp[item.system.profil].skills.push(item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let key in comp) {
|
for (let key in comp) {
|
||||||
HeritiersUtility.sortArrayObjectsByName(comp[key])
|
HeritiersUtility.sortArrayObjectsByName(comp[key].skills)
|
||||||
}
|
}
|
||||||
return comp
|
return Object.fromEntries(Object.entries(comp).sort())
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
organizeContacts() {
|
organizeContacts() {
|
||||||
|
@ -199,6 +202,9 @@ export class HeritiersActor extends Actor {
|
||||||
contactList[item.system.contacttype] = c
|
contactList[item.system.contacttype] = c
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (let key in contactList) {
|
||||||
|
HeritiersUtility.sortArrayObjectsByName(contactList[key].list)
|
||||||
|
}
|
||||||
return contactList
|
return contactList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -253,6 +259,11 @@ 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 })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -274,7 +285,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 = duplicate(item)
|
item = foundry.utils.duplicate(item)
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
@ -282,7 +293,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 && item.system) {
|
if (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
|
||||||
}
|
}
|
||||||
|
@ -293,7 +304,7 @@ 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) {
|
||||||
if (dataType.toLowerCase() == "number") {
|
if (dataType.toLowerCase() == "number") {
|
||||||
value = Number(value)
|
value = Number(value)
|
||||||
} else {
|
} else {
|
||||||
|
@ -308,15 +319,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 < this.system.pv.max / 2) {
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
if (this.system.pv.value < 5) {
|
if (this.system.pv.value < 5) {
|
||||||
return -2
|
return { name: "Santé", value: -2 }
|
||||||
}
|
}
|
||||||
return 0
|
if (this.system.pv.value < this.system.pv.max / 2) {
|
||||||
|
return { name: "Santé", value: -1 }
|
||||||
|
}
|
||||||
|
return { name: "Santé", value: 0 }
|
||||||
}
|
}
|
||||||
return "Moribond(e)"
|
return { name: "Moribond(e)", value: -50 }
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -332,7 +343,7 @@ export class HeritiersActor extends Actor {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getCarac(attrKey) {
|
getCarac(attrKey) {
|
||||||
return duplicate(this.system.caracteristiques)
|
return foundry.utils.duplicate(this.system.caracteristiques)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -343,7 +354,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 && item.system.data) {
|
if (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
|
||||||
}
|
}
|
||||||
|
@ -353,13 +364,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(duplicate(game.actors.get(id)));
|
subActors.push(foundry.utils.duplicate(game.actors.get(id)));
|
||||||
}
|
}
|
||||||
return subActors;
|
return subActors;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async addSubActor(subActorId) {
|
async addSubActor(subActorId) {
|
||||||
let subActors = duplicate(this.system.subactors);
|
let subActors = foundry.utils.duplicate(this.system.subactors);
|
||||||
subActors.push(subActorId);
|
subActors.push(subActorId);
|
||||||
await this.update({ 'system.subactors': subActors });
|
await this.update({ 'system.subactors': subActors });
|
||||||
}
|
}
|
||||||
|
@ -381,7 +392,7 @@ export class HeritiersActor extends Actor {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async incDecAdversite(adv, incDec = 0) {
|
async incDecAdversite(adv, incDec = 0) {
|
||||||
let adversite = duplicate(this.system.adversite)
|
let adversite = foundry.utils.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 })
|
||||||
|
@ -428,7 +439,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 = duplicate(comp.system.predilections)
|
let pred = foundry.utils.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 }])
|
||||||
}
|
}
|
||||||
|
@ -450,7 +461,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 = duplicate(arme)
|
bestArme = foundry.utils.duplicate(arme)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return bestArme
|
return bestArme
|
||||||
|
@ -465,7 +476,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 = duplicate(talent)
|
talent = foundry.utils.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)
|
||||||
|
@ -476,7 +487,23 @@ 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
|
||||||
|
@ -489,9 +516,27 @@ 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
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -509,18 +554,25 @@ export class HeritiersActor extends Actor {
|
||||||
rollData.useTricherie = false
|
rollData.useTricherie = false
|
||||||
rollData.useSpecialite = false
|
rollData.useSpecialite = false
|
||||||
rollData.useHeritage = false
|
rollData.useHeritage = false
|
||||||
rollData.pvMalus = this.getPvMalus()
|
rollData.pouvoirPointsUsage = 1
|
||||||
|
rollData.rulesMalus.push(this.getPvMalus())
|
||||||
|
|
||||||
if (compId) {
|
if (compId) {
|
||||||
rollData.competence = duplicate(this.items.get(compId) || {})
|
rollData.competence = foundry.utils.duplicate(this.items.get(compId) || {})
|
||||||
this.prepareUtileSkill(rollData.competence)
|
this.prepareUtileSkill(rollData.competence)
|
||||||
rollData.actionImg = rollData.competence?.img
|
rollData.actionImg = rollData.competence?.img
|
||||||
}
|
}
|
||||||
if (compName) {
|
if (compName) {
|
||||||
rollData.competence = duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
|
rollData.competence = foundry.utils.duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
|
||||||
this.prepareUtileSkill(rollData.competence)
|
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
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -547,6 +599,25 @@ export class HeritiersActor extends Actor {
|
||||||
rollDialog.render(true)
|
rollDialog.render(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async rollRang(key, isInit = false) {
|
||||||
|
let rollData = this.getCommonRollData()
|
||||||
|
rollData.mode = "rang"
|
||||||
|
rollData.rang = this.system.rang[key]
|
||||||
|
rollData.rangKey = key
|
||||||
|
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||||
|
rollDialog.render(true)
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async rollRootCompetence(compKey) {
|
||||||
|
let rollData = this.getCommonRollData()
|
||||||
|
rollData.mode = "competence"
|
||||||
|
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)
|
||||||
|
@ -555,37 +626,169 @@ 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 rollAttaqueArme(armeId) {
|
async rollAttaqueArme(armeId) {
|
||||||
let arme = this.items.get(armeId)
|
let arme = this.items.get(armeId)
|
||||||
if (arme) {
|
if (arme) {
|
||||||
|
arme = foundry.utils.duplicate(arme)
|
||||||
|
arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||||
let competenceName = "Tir"
|
let competenceName = "Tir"
|
||||||
let key = "prec"
|
let key = "prec"
|
||||||
if (arme.system.categorie == "blanche" || arme.system.categorie == "improvise") {
|
if (arme.system.isMelee) {
|
||||||
competenceName = "Mêlée"
|
competenceName = "Mêlée"
|
||||||
key = "agi"
|
key = "agi"
|
||||||
}
|
}
|
||||||
let rollData = this.getCommonRollData(undefined, competenceName)
|
let rollData = this.getCommonRollData(undefined, competenceName)
|
||||||
rollData.carac = this.system.caracteristiques[key]
|
rollData.carac = this.system.caracteristiques[key]
|
||||||
rollData.caracKey = key
|
rollData.caracKey = key
|
||||||
rollData.arme = duplicate(arme)
|
rollData.arme = arme
|
||||||
rollData.mode = "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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async rollAttaqueBrutaleArme(armeId) {
|
||||||
|
let arme = this.items.get(armeId)
|
||||||
|
if (arme) {
|
||||||
|
let key = "for"
|
||||||
|
let competenceName = "Mêlée"
|
||||||
|
arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||||
|
let rollData = this.getCommonRollData(undefined, competenceName)
|
||||||
|
rollData.carac = this.system.caracteristiques[key]
|
||||||
|
rollData.caracKey = key
|
||||||
|
rollData.arme = foundry.utils.duplicate(arme)
|
||||||
|
rollData.mode = "attaquebrutale"
|
||||||
|
rollData.armes = this.getOtherMeleeWeapons(arme)
|
||||||
|
rollData.rulesMalus.push({ name: "Attaque brutale", value: -2 })
|
||||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||||
rollDialog.render(true)
|
rollDialog.render(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async rollAttaqueChargeArme(armeId) {
|
||||||
|
let arme = this.items.get(armeId)
|
||||||
|
if (arme) {
|
||||||
|
let key = "agi"
|
||||||
|
arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||||
|
let pireCompetence = this.getPireCompetence("Mêlée", "Mouvement")
|
||||||
|
let rollData = this.getCommonRollData(undefined, pireCompetence.name)
|
||||||
|
rollData.carac = this.system.caracteristiques[key]
|
||||||
|
rollData.caracKey = key
|
||||||
|
rollData.arme = foundry.utils.duplicate(arme)
|
||||||
|
rollData.armes = this.getOtherMeleeWeapons(arme)
|
||||||
|
rollData.mode = "attaquecharge"
|
||||||
|
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||||
|
rollDialog.render(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async rollAssomerArme(armeId) {
|
||||||
|
let arme = this.items.get(armeId)
|
||||||
|
if (arme) {
|
||||||
|
let competenceName = "Mêlée"
|
||||||
|
//arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||||
|
let rollData = this.getCommonRollData(undefined, competenceName)
|
||||||
|
rollData.carac = this.system.caracteristiques["agi"]
|
||||||
|
rollData.caracKey = "agi"
|
||||||
|
rollData.arme = foundry.utils.duplicate(arme)
|
||||||
|
rollData.mode = "assommer"
|
||||||
|
if (rollData.defenderTokenId) {
|
||||||
|
rollData.cacheDifficulte = true
|
||||||
|
}
|
||||||
|
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||||
|
rollDialog.render(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
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) {
|
async rollPouvoir(pouvoirId) {
|
||||||
let pouvoir = this.items.get(pouvoirId)
|
let pouvoir = this.items.get(pouvoirId)
|
||||||
if (pouvoir) {
|
if (pouvoir) {
|
||||||
|
if (pouvoir.system.pouvoirtype == "passif") {
|
||||||
|
this.pouvoirPassifDialog(pouvoir)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
let rollData = this.getCommonRollData(undefined, undefined)
|
let rollData = this.getCommonRollData(undefined, undefined)
|
||||||
if ( pouvoir.system.feeriemasque != "autre") {
|
if (pouvoir.system.feeriemasque != "autre") {
|
||||||
rollData.pouvoirBase = duplicate(this.system.rang[pouvoir.system.feeriemasque.toLowerCase()])
|
rollData.pouvoirBase = foundry.utils.duplicate(this.system.rang[pouvoir.system.feeriemasque.toLowerCase()])
|
||||||
rollData.pouvoirBase.label = "Féerie"
|
rollData.pouvoirBase.label = "Féerie"
|
||||||
rollData.carac = duplicate(this.system.caracteristiques[pouvoir.system.carac])
|
if (!pouvoir.system.carac) {
|
||||||
|
ui.notifications.warn("Le pouvoir actif " + pouvoir.name + " n'a pas de caractéristique associée")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
rollData.carac = foundry.utils.duplicate(this.system.caracteristiques[pouvoir.system.carac])
|
||||||
rollData.caracKey = pouvoir.system.carac
|
rollData.caracKey = pouvoir.system.carac
|
||||||
}
|
}
|
||||||
rollData.pouvoir = duplicate(pouvoir)
|
rollData.pouvoirMaxUsage = this.getPouvoirUsageMax(pouvoir)
|
||||||
|
rollData.pouvoir = foundry.utils.duplicate(pouvoir)
|
||||||
rollData.mode = "pouvoir"
|
rollData.mode = "pouvoir"
|
||||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||||
rollDialog.render(true)
|
rollDialog.render(true)
|
||||||
|
@ -593,45 +796,40 @@ export class HeritiersActor extends Actor {
|
||||||
|
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollArmeOffensif(armeId) {
|
incDecPointsUsage(pouvoirId, value) {
|
||||||
let arme = this.items.get(armeId)
|
let pouvoir = this.items.get(pouvoirId)
|
||||||
if (arme.type == "arme") {
|
let newValue = pouvoir.system.pointsusagecourant + value
|
||||||
arme = this.prepareArme(arme)
|
newValue = Math.max(newValue, 0)
|
||||||
}
|
newValue = Math.min(newValue, this.getPouvoirUsageMax(pouvoir))
|
||||||
let rollData = this.getCommonRollData(arme.system.attrKey, arme.system.competence._id)
|
this.updateEmbeddedDocuments('Item', [{ _id: pouvoirId, 'system.pointsusagecourant': newValue }])
|
||||||
rollData.arme = arme
|
|
||||||
HeritiersUtility.updateWithTarget(rollData)
|
|
||||||
console.log("ARME!", rollData)
|
|
||||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
|
||||||
rollDialog.render(true)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollArmeDegats(armeId, targetVigueur = undefined) {
|
getPouvoirUsage(pouvoirId) {
|
||||||
let arme = this.items.get(armeId)
|
let pouvoir = this.items.get(pouvoirId)
|
||||||
if (arme.type == "arme") {
|
return pouvoir.system.pointsusagecourant
|
||||||
arme = this.prepareArme(arme)
|
}
|
||||||
}
|
|
||||||
console.log("DEGATS", arme)
|
|
||||||
let roll = new Roll("1d10+" + arme.system.totalDegats).roll({ async: false })
|
|
||||||
await HeritiersUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"));
|
|
||||||
let nbEtatPerdus = 0
|
|
||||||
if (targetVigueur) {
|
|
||||||
nbEtatPerdus = Math.floor(roll.total / targetVigueur)
|
|
||||||
}
|
|
||||||
let rollData = {
|
|
||||||
arme: arme,
|
|
||||||
finalResult: roll.total,
|
|
||||||
alias: this.name,
|
|
||||||
actorImg: this.img,
|
|
||||||
actorId: this.id,
|
|
||||||
actionImg: arme.img,
|
|
||||||
targetVigueur: targetVigueur,
|
|
||||||
nbEtatPerdus: nbEtatPerdus
|
|
||||||
}
|
|
||||||
HeritiersUtility.createChatWithRollMode(rollData.alias, {
|
|
||||||
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-degats-result.html`, rollData)
|
|
||||||
})
|
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,12 +25,12 @@ export const HERITIERS_CONFIG = {
|
||||||
},
|
},
|
||||||
|
|
||||||
competenceProfil : {
|
competenceProfil : {
|
||||||
"aventurier": "Aventurier",
|
"aventurier": {kind: "physical", name: "Aventurier"},
|
||||||
"roublard": "Roublard",
|
"roublard": {kind: "physical",name: "Roublard"},
|
||||||
"combattant": "Combattant",
|
"combattant": {kind: "physical",name:"Combattant"},
|
||||||
"erudit": "Erudit",
|
"erudit": {kind: "mental",name:"Erudit"},
|
||||||
"savant": "Savant",
|
"savant": {kind: "mental",name:"Savant"},
|
||||||
"gentleman": "Gentleman"
|
"gentleman": {kind: "mental",name:"Gentleman"}
|
||||||
},
|
},
|
||||||
baseTestPouvoir: {
|
baseTestPouvoir: {
|
||||||
"feerie": "Féerie",
|
"feerie": "Féerie",
|
||||||
|
@ -50,6 +50,10 @@ export const HERITIERS_CONFIG = {
|
||||||
"passif": "Passif",
|
"passif": "Passif",
|
||||||
"metamorphose": "Métamorphose"
|
"metamorphose": "Métamorphose"
|
||||||
},
|
},
|
||||||
|
statutMasque: {
|
||||||
|
"masque": "Masqué",
|
||||||
|
"demasque":"Démasqué"
|
||||||
|
},
|
||||||
niveauPouvoir: {
|
niveauPouvoir: {
|
||||||
"normal": "Normal",
|
"normal": "Normal",
|
||||||
"profond": "Profond",
|
"profond": "Profond",
|
||||||
|
@ -60,23 +64,42 @@ export const HERITIERS_CONFIG = {
|
||||||
"demasque": "Démasqué"
|
"demasque": "Démasqué"
|
||||||
},
|
},
|
||||||
seuilsDifficulte: {
|
seuilsDifficulte: {
|
||||||
"0": "Aucun/Non applicable",
|
"-1": "Aucun/Non applicable",
|
||||||
"5": "Enfantine",
|
"5": "Enfantine",
|
||||||
"6": "Triviale",
|
"6": "Triviale",
|
||||||
|
"7": "Moins Triviale",
|
||||||
"8": "Aisée",
|
"8": "Aisée",
|
||||||
|
"7": "Moins Aisée",
|
||||||
"10": "Normale",
|
"10": "Normale",
|
||||||
|
"11": "Moins Normale",
|
||||||
"12": "Compliquée",
|
"12": "Compliquée",
|
||||||
|
"13": "Plus Compliquée",
|
||||||
"14": "Difficile",
|
"14": "Difficile",
|
||||||
|
"15": "Plus Difficile",
|
||||||
"16": "Très Difficile",
|
"16": "Très Difficile",
|
||||||
|
"17": "Très Très Difficile",
|
||||||
"18": "Critique",
|
"18": "Critique",
|
||||||
|
"19": "Plus Critique",
|
||||||
"20": "Insurmontable",
|
"20": "Insurmontable",
|
||||||
|
"20": "Très Insurmontable",
|
||||||
"22": "Surhumaine",
|
"22": "Surhumaine",
|
||||||
|
"23": "Très Surhumaine",
|
||||||
"24": "Epique",
|
"24": "Epique",
|
||||||
|
"25": "Plus Epique",
|
||||||
"26": "Légendaire",
|
"26": "Légendaire",
|
||||||
|
"26": "Très Légendaire",
|
||||||
"28": "Mythique",
|
"28": "Mythique",
|
||||||
|
"29": "Plus Mythique",
|
||||||
"30": "Divine"
|
"30": "Divine"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
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",
|
||||||
|
@ -122,7 +145,66 @@ 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"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -9,7 +9,7 @@ export class HeritiersItemSheet extends ItemSheet {
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
|
|
||||||
return mergeObject(super.defaultOptions, {
|
return foundry.utils.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 = duplicate(this.object)
|
const objectData = foundry.utils.duplicate(this.object)
|
||||||
let formData = {
|
let formData = {
|
||||||
title: this.title,
|
title: this.title,
|
||||||
id: this.id,
|
id: this.id,
|
||||||
|
@ -61,10 +61,20 @@ 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");
|
||||||
|
@ -86,7 +96,7 @@ export class HeritiersItemSheet extends ItemSheet {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
postItem() {
|
postItem() {
|
||||||
let chatData = duplicate(HeritiersUtility.data(this.item));
|
let chatData = foundry.utils.duplicate(HeritiersUtility.data(this.item));
|
||||||
if (this.actor) {
|
if (this.actor) {
|
||||||
chatData.actor = { id: this.actor.id };
|
chatData.actor = { id: this.actor.id };
|
||||||
}
|
}
|
||||||
|
@ -128,52 +138,52 @@ export class HeritiersItemSheet extends ItemSheet {
|
||||||
})
|
})
|
||||||
|
|
||||||
html.find('#add-specialite').click(ev => {
|
html.find('#add-specialite').click(ev => {
|
||||||
let spec = duplicate(this.object.system.specialites)
|
let spec = foundry.utils.duplicate(this.object.system.specialites)
|
||||||
spec.push( { name: "Nouvelle Spécialité", id: randomID(16), used: false })
|
spec.push( { name: "Nouvelle Spécialité", id: foundry.utils.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 = duplicate(this.object.system.specialites)
|
let spec = foundry.utils.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 = duplicate(this.object.system.specialites)
|
let spec = foundry.utils.duplicate(this.object.system.specialites)
|
||||||
spec[index].name = ev.currentTarget.value
|
spec[index].name = ev.currentTarget.value
|
||||||
spec[index].id = spec[index].id || randomID(16)
|
spec[index].id = spec[index].id || foundry.utils.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 = duplicate(this.object.system.specialites)
|
let spec = foundry.utils.duplicate(this.object.system.specialites)
|
||||||
spec[index].description = ev.currentTarget.value
|
spec[index].description = ev.currentTarget.value
|
||||||
spec[index].id = spec[index].id || randomID(16)
|
spec[index].id = spec[index].id || foundry.utils.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 = duplicate(this.object.system.automations)
|
let autom = foundry.utils.duplicate(this.object.system.automations)
|
||||||
autom.push( { eventtype: "on-drop", name: "Automatisation 1", competence: "", minLevel: 0, id: randomID(16) })
|
autom.push( { eventtype: "on-drop", name: "Automatisation 1", competence: "", minLevel: 0, id: foundry.utils.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 = duplicate(this.object.system.automations)
|
let autom = foundry.utils.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 = duplicate(this.object.system.automations)
|
let auto = foundry.utils.duplicate(this.object.system.automations)
|
||||||
auto[index][field] = ev.currentTarget.value
|
auto[index][field] = ev.currentTarget.value
|
||||||
auto[index].id = auto[index].id || randomID(16)
|
auto[index].id = auto[index].id || foundry.utils.randomID(16)
|
||||||
this.object.update( { 'system.automations': auto })
|
this.object.update( { 'system.automations': auto })
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -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 { HeritiersCreatureSheet } from "./heritiers-creature-sheet.js";
|
import { HeritiersActorPNJSheet } from "./heritiers-actor-pnj-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,6 +46,8 @@ 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
|
||||||
|
@ -55,7 +57,7 @@ Hooks.once("init", async function () {
|
||||||
// Register sheet application classes
|
// Register sheet application classes
|
||||||
Actors.unregisterSheet("core", ActorSheet);
|
Actors.unregisterSheet("core", ActorSheet);
|
||||||
Actors.registerSheet("fvtt-les-heritiers", HeritiersActorSheet, { types: ["personnage"], makeDefault: true })
|
Actors.registerSheet("fvtt-les-heritiers", HeritiersActorSheet, { types: ["personnage"], makeDefault: true })
|
||||||
Actors.registerSheet("fvtt-les-heritiers", HeritiersCreatureSheet, { types: ["creature"], makeDefault: true })
|
Actors.registerSheet("fvtt-les-heritiers", HeritiersActorPNJSheet, { types: ["pnj"], makeDefault: true })
|
||||||
|
|
||||||
Items.unregisterSheet("core", ItemSheet);
|
Items.unregisterSheet("core", ItemSheet);
|
||||||
Items.registerSheet("fvtt-les-heritiers", HeritiersItemSheet, { makeDefault: true })
|
Items.registerSheet("fvtt-les-heritiers", HeritiersItemSheet, { makeDefault: true })
|
||||||
|
@ -78,31 +80,17 @@ function welcomeMessage() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// Register world usage statistics
|
async function importDefaultScene() {
|
||||||
function registerUsageCount(registerKey) {
|
let exists = game.scenes.find(j => j.name == "Accueil");
|
||||||
if (game.user.isGM) {
|
if (!exists) {
|
||||||
game.settings.register(registerKey, "world-key", {
|
const scenes = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.scenes")
|
||||||
name: "Unique world key",
|
let newDocuments = scenes.filter(i => i.name == "Accueil");
|
||||||
scope: "world",
|
await game.scenes.documentClass.create(newDocuments);
|
||||||
config: false,
|
game.scenes.find(i => i.name == "Accueil").activate();
|
||||||
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 */
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -118,15 +106,16 @@ 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";
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -136,7 +125,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.mournblade.commands.processChatCommand(commands, content, msg)) {
|
if (game.system.lesheritiers.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: 320, height: 'fit-content', 'z-index': 99999 };
|
let options = { classes: ["HeritiersDialog"], width: 420, 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,35 +13,62 @@ 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 -> 1d10
|
// Overwrite in case of carac only -> 1d8
|
||||||
if (rollData.mode == "carac") {
|
if (rollData.mode == "carac") {
|
||||||
conf.buttons = {
|
conf.buttons = {
|
||||||
rolld8: {
|
rolld8: {
|
||||||
|
@ -64,7 +91,16 @@ export class HeritiersRollDialog extends Dialog {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
roll(dice) {
|
roll(dice) {
|
||||||
this.rollData.mainDice = dice
|
if (dice == "heritage") {
|
||||||
|
this.rollData.useHeritage = true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (dice == "tricherie") {
|
||||||
|
this.rollData.useTricherie = true
|
||||||
|
} else {
|
||||||
|
this.rollData.mainDice = dice
|
||||||
|
}
|
||||||
|
}
|
||||||
HeritiersUtility.rollHeritiers(this.rollData)
|
HeritiersUtility.rollHeritiers(this.rollData)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,14 +123,24 @@ export class HeritiersRollDialog extends Dialog {
|
||||||
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('#useTricherie').change((event) => {
|
html.find('#bonus-attaque-plusieurs').change((event) => {
|
||||||
this.rollData.useTricherie = event.currentTarget.checked
|
this.rollData.bonusAttaquePlusieurs = Number(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#useSpecialite').change((event) => {
|
html.find('#useSpecialite').change((event) => {
|
||||||
this.rollData.useSpecialite = event.currentTarget.checked
|
this.rollData.useSpecialite = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#useHeritage').change((event) => {
|
html.find('#pouvoirPointsUsage').change((event) => {
|
||||||
this.rollData.useHeritage = event.currentTarget.checked
|
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,6 +2,45 @@
|
||||||
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 {
|
||||||
|
|
||||||
|
@ -42,32 +81,16 @@ export class HeritiersUtility {
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static sortByName(table) {
|
static sortByName(table) {
|
||||||
return table.sort(function (a, b) {
|
return table.sort(function (a, b) {
|
||||||
let fa = a.name.toLowerCase(),
|
return a.name.localeCompare(b.name);
|
||||||
fb = b.name.toLowerCase();
|
|
||||||
if (fa < fb) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (fa > fb) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static sortArrayObjectsByName(myArray) {
|
static sortArrayObjectsByName(myArray) {
|
||||||
myArray.sort((a, b) => {
|
myArray.sort((a, b) => {
|
||||||
let fa = a.name.toLowerCase();
|
return a.name.localeCompare(b.name);
|
||||||
let fb = b.name.toLowerCase();
|
|
||||||
if (fa < fb) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (fa > fb) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,6 +104,14 @@ 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
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -109,10 +140,21 @@ 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 = duplicate(actor.getCompetence(rollData.competence._id))
|
rollData.competence = foundry.utils.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)
|
||||||
|
@ -130,6 +172,7 @@ export class HeritiersUtility {
|
||||||
'systems/fvtt-les-heritiers/templates/partial-item-header.html',
|
'systems/fvtt-les-heritiers/templates/partial-item-header.html',
|
||||||
'systems/fvtt-les-heritiers/templates/partial-item-description.html',
|
'systems/fvtt-les-heritiers/templates/partial-item-description.html',
|
||||||
'systems/fvtt-les-heritiers/templates/partial-item-nav.html',
|
'systems/fvtt-les-heritiers/templates/partial-item-nav.html',
|
||||||
|
'systems/fvtt-les-heritiers/templates/partial-utile-skills.html',
|
||||||
'systems/fvtt-les-heritiers/templates/partial-list-niveau.html'
|
'systems/fvtt-les-heritiers/templates/partial-list-niveau.html'
|
||||||
]
|
]
|
||||||
return loadTemplates(templatePaths);
|
return loadTemplates(templatePaths);
|
||||||
|
@ -209,7 +252,7 @@ export class HeritiersUtility {
|
||||||
|
|
||||||
let id = rollData.rollId;
|
let id = rollData.rollId;
|
||||||
let oldRollData = this.rollDataStore[id] || {};
|
let oldRollData = this.rollDataStore[id] || {};
|
||||||
let newRollData = mergeObject(oldRollData, rollData);
|
let newRollData = foundry.utils.mergeObject(oldRollData, rollData);
|
||||||
this.rollDataStore[id] = newRollData;
|
this.rollDataStore[id] = newRollData;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -227,7 +270,6 @@ 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);
|
||||||
}
|
}
|
||||||
|
@ -284,126 +326,266 @@ export class HeritiersUtility {
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static computeMonnaieDetails(valueSC) {
|
static computeMonnaieDetails(valueSC) {
|
||||||
let po = Math.floor(valueSC / 400)
|
let po = Math.floor(valueSC / 400)
|
||||||
let pa = Math.floor((valueSC - (po*400)) / 20)
|
let pa = Math.floor((valueSC - (po * 400)) / 20)
|
||||||
let sc = valueSC - (po*400) - (pa*20)
|
let sc = valueSC - (po * 400) - (pa * 20)
|
||||||
return {
|
return {
|
||||||
po: po, pa: pa, sc: sc, valueSC: valueSC
|
po: po, pa: pa, sc: sc, valueSC: valueSC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static incDecHeritage() {
|
static incDecHeritage() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static computeResult(actor, rollData) {
|
static computeResult(actor, rollData) {
|
||||||
rollData.diceResult = -1
|
let isTricherieHeritage = rollData.useHeritage || rollData.useTricherie
|
||||||
let resTab = []
|
|
||||||
for ( let res of rollData.roll.terms[0].results) {
|
|
||||||
rollData.diceResult = Math.max(res.result, rollData.diceResult)
|
|
||||||
resTab.push(res.result)
|
|
||||||
}
|
|
||||||
let isFailure = false
|
|
||||||
if (rollData.mainDice.includes("d10")) {
|
|
||||||
if ( rollData.diceResult == 1) {
|
|
||||||
rollData.finalResult -= 3
|
|
||||||
isFailure = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (rollData.mainDice.includes("d12")) {
|
|
||||||
if ( rollData.diceResult == 1 || rollData.diceResult == 2) {
|
|
||||||
rollData.finalResult -= 5
|
|
||||||
isFailure = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Heritage/Tricherie management
|
|
||||||
rollData.marge = 0
|
rollData.marge = 0
|
||||||
if (!isFailure && (rollData.useHeritage || rollData.useTricherie)) {
|
|
||||||
|
if (isTricherieHeritage) {
|
||||||
|
let resTab = [rollData.roll.terms[0].results[0].result, rollData.roll.terms[0].results[1].result, rollData.roll.terms[0].results[2].result]
|
||||||
|
rollData.diceResult = resTab[0] + "," + resTab[1] + "," + resTab[2]
|
||||||
|
let 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()
|
||||||
}
|
}
|
||||||
}
|
|
||||||
//rollData.finalResult = Math.max(rollData.finalResult, 0)
|
} else {
|
||||||
//console.log("Result : ", rollData)
|
rollData.finalResult = rollData.roll.total
|
||||||
if (rollData.marge == 0 && rollData.sdValue > 0 ) {
|
let rollValue = rollData.forcedValue || rollData.roll.terms[0].results[0].result
|
||||||
rollData.marge = rollData.finalResult - rollData.sdValue
|
rollData.diceResult = rollValue
|
||||||
rollData.isSuccess = (rollData.finalResult >= rollData.sdValue)
|
rollData.diceValue = rollValue
|
||||||
rollData.isCriticalSuccess = ((rollData.finalResult - rollData.sdValue) >= 7)
|
if (rollData.mainDice.includes("d10")) {
|
||||||
rollData.isCriticalFailure = ((rollData.finalResult - rollData.sdValue) <= -7)
|
if (rollValue == 1) {
|
||||||
|
rollData.finalResult -= 3 + rollValue // substract 3 and the 1 value that has been added
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (rollData.mainDice.includes("d12")) {
|
||||||
|
if (rollValue == 1 || rollValue == 2) {
|
||||||
|
rollData.finalResult -= 5 + rollValue // Remove also the dice result has it has been added already
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( !rollData.forcedValue) {
|
||||||
|
rollData.adjacentFaces = foundry.utils.duplicate(__facesAdjacentes[rollData.mainDice][rollData.diceValue])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
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)
|
||||||
//rollData.actionImg = "systems/fvtt-les-heritiers/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp"
|
|
||||||
rollData.carac = duplicate(actor.system.caracteristiques[rollData.caracKey])
|
|
||||||
|
|
||||||
rollData.nbDice = (rollData.useTricherie || rollData.useHeritage) ? 3 : 1
|
if ( rollData.mode == "pouvoir" && actor.getPouvoirUsage(rollData.pouvoir._id) < rollData.pouvoirPointsUsage) {
|
||||||
rollData.diceFormula = rollData.nbDice + rollData.mainDice + "kh1"
|
ui.notifications.warn("Pas assez de points d'usage pour ce pouvoir.")
|
||||||
//console.log("BEFORE COMP", rollData)
|
return
|
||||||
if (rollData.competence) {
|
|
||||||
let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
|
|
||||||
let specBonus = (rollData.useSpecialite) ? 1 : 0
|
|
||||||
rollData.diceFormula += `+${rollData.carac.value}+${rollData.competence.system.niveau}+${specBonus}+${rollData.bonusMalusContext}+${compmod}`
|
|
||||||
} else if (rollData.pouvoirBase) {
|
|
||||||
rollData.diceFormula += `+${rollData.pouvoirBase.value}+${rollData.bonusMalusContext}`
|
|
||||||
} else {
|
|
||||||
rollData.diceFormula += `+${rollData.carac.value}+${rollData.bonusMalusContext}`
|
|
||||||
}
|
}
|
||||||
rollData.diceFormula += `+${rollData.pvMalus}`
|
|
||||||
|
//rollData.actionImg = "systems/fvtt-les-heritiers/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp"
|
||||||
|
rollData.carac = foundry.utils.duplicate(actor.system.caracteristiques[rollData.caracKey])
|
||||||
|
|
||||||
let myRoll = new Roll(rollData.diceFormula).roll({ async: false })
|
if (rollData.forcedValue) {
|
||||||
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
rollData.diceFormula = rollData.forcedValue
|
||||||
rollData.roll = myRoll
|
} else {
|
||||||
console.log(">>>> ", myRoll)
|
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) {
|
||||||
|
let compmod = 0 // Bonus de compétence à 0 dans Les Heritiers
|
||||||
|
let specBonus = (rollData.useSpecialite) ? 1 : 0
|
||||||
|
rollData.diceFormula += `+${rollData.carac.value}+${rangValue}+${rollData.competence.system.niveau}+${specBonus}+${rollData.bonusMalusContext}+${compmod}`
|
||||||
|
} else if (rollData.pouvoirBase) {
|
||||||
|
rollData.diceFormula += `+${rollData.carac.value}+${rollData.pouvoirBase.value}+${rangValue}+${rollData.bonusMalusContext}`
|
||||||
|
} else {
|
||||||
|
rollData.diceFormula += `+${rollData.carac.value}+${rangValue}+${rollData.bonusMalusContext}`
|
||||||
|
}
|
||||||
|
let ruleMalus = 0
|
||||||
|
for (let malus of rollData.rulesMalus) {
|
||||||
|
ruleMalus += malus.value
|
||||||
|
}
|
||||||
|
rollData.diceFormula += `+${ruleMalus}`
|
||||||
|
|
||||||
|
// Gestion bonus attaque à plusieurs
|
||||||
|
let bonusAttaque = rollData.bonusAttaquePlusieurs
|
||||||
|
if (rollData.attaqueDos) {
|
||||||
|
bonusAttaque = 2
|
||||||
|
if (rollData.bonusAttaquePlusieurs) {
|
||||||
|
bonusAttaque = 3 // Valeur max, cf règle page 197
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rollData.diceFormula += `+${bonusAttaque}`
|
||||||
|
|
||||||
|
// Gestion attaque avec 2 armes
|
||||||
|
if (rollData.attaqueDeuxArmes != 0) {
|
||||||
|
rollData.diceFormula += `+${rollData.attaqueDeuxArmes}`
|
||||||
|
}
|
||||||
|
// Gestion des attaques ciblées
|
||||||
|
if (rollData.attaqueCible != "none") {
|
||||||
|
if (rollData.attaqueCible == "membre") {
|
||||||
|
rollData.diceFormula += `-2`
|
||||||
|
}
|
||||||
|
if (rollData.attaqueCible == "main") {
|
||||||
|
rollData.diceFormula += `-3`
|
||||||
|
}
|
||||||
|
if (rollData.attaqueCible == "tete") {
|
||||||
|
rollData.diceFormula += `-6`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !rollData.noRoll) {
|
||||||
|
let myRoll = await new Roll(rollData.diceFormula).roll()
|
||||||
|
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||||
|
rollData.roll = foundry.utils.duplicate(myRoll)
|
||||||
|
console.log(">>>> ", myRoll)
|
||||||
|
this.computeResult(actor, rollData)
|
||||||
|
this.computeMarge(rollData, rollData.sdValue) // Calcul de la marge si seuil présent
|
||||||
|
}
|
||||||
|
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compute damages, cf p 187
|
// Gestion pouvoir et points d'usage
|
||||||
if (rollData.arme && rollData.isSuccess) {
|
if (rollData.mode == "pouvoir" || rollData.mode == "pouvoirpassif") {
|
||||||
rollData.degatsArme = rollData.arme.system.degats + rollData.marge
|
actor.incDecPointsUsage(rollData.pouvoir._id, -rollData.pouvoirPointsUsage)
|
||||||
if (rollData.arme.system.categorie == "lourde" ) {
|
|
||||||
rollData.degatsArme += actor.system.caracteristiques.for.value
|
|
||||||
}
|
|
||||||
if (rollData.arme.system.categorie == "blanche" || rollData.arme.system.categorie == "improvise" ) {
|
|
||||||
rollData.degatsArme += Math.max(0, actor.system.caracteristiques.for.value - 2)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.createChatWithRollMode(rollData.alias, {
|
this.createChatWithRollMode(rollData.alias, {
|
||||||
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-generic-result.html`, rollData)
|
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-generic-result.html`, rollData)
|
||||||
}, rollData)
|
}, rollData)
|
||||||
|
|
||||||
|
// 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 = new Roll(rollData.bonusFormula).roll({ async: false })
|
let bonusRoll = await new Roll(rollData.bonusFormula).roll()
|
||||||
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
|
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
|
||||||
rollData.bonusRoll = bonusRoll
|
rollData.bonusRoll = foundry.utils.duplicate(bonusRoll)
|
||||||
|
|
||||||
rollData.finalResult += rollData.bonusRoll.total
|
rollData.finalResult += rollData.bonusRoll.total
|
||||||
|
|
||||||
|
@ -420,6 +602,10 @@ 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) {
|
||||||
|
@ -437,7 +623,7 @@ export class HeritiersUtility {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static blindMessageToGM(chatOptions) {
|
static blindMessageToGM(chatOptions) {
|
||||||
let chatGM = duplicate(chatOptions);
|
let chatGM = foundry.utils.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);
|
||||||
|
@ -501,11 +687,17 @@ export class HeritiersUtility {
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getBasicRollData() {
|
static getBasicRollData() {
|
||||||
let rollData = {
|
let rollData = {
|
||||||
rollId: randomID(16),
|
rollId: foundry.utils.randomID(16),
|
||||||
rollMode: game.settings.get("core", "rollMode"),
|
rollMode: game.settings.get("core", "rollMode"),
|
||||||
sdList: game.system.lesheritiers.config.seuilsDifficulte,
|
sdList: game.system.lesheritiers.config.seuilsDifficulte,
|
||||||
sdValue: 0,
|
sdValue: -1,
|
||||||
bonusMalusContext: 0
|
bonusAttaquePlusieurs: 0,
|
||||||
|
attaqueDeuxArmes: 0,
|
||||||
|
attaqueDos: false,
|
||||||
|
bonusMalusContext: 0,
|
||||||
|
attaqueCible: "none",
|
||||||
|
config: game.system.lesheritiers.config,
|
||||||
|
rulesMalus: []
|
||||||
}
|
}
|
||||||
return rollData
|
return rollData
|
||||||
}
|
}
|
||||||
|
@ -516,18 +708,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.armeDefense = defender.getBestDefenseValue()
|
rollData.defenderName = defender.name
|
||||||
rollData.targetVigueur = defender.getVigueur()
|
rollData.defenderParade = defender.getCurrentParade()
|
||||||
if (rollData.armeDefense) {
|
rollData.defenderEsquive = defender.getCurrentEsquive()
|
||||||
rollData.difficulte = rollData.armeDefense.system.totalDefensif
|
rollData.defenderResistancePhysique = defender.getCurrentResistancePhysique()
|
||||||
} else {
|
|
||||||
ui.notifications.warn("Aucune arme de défense équipée, difficulté manuelle à positionner.")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static createChatWithRollMode(name, chatOptions, rollData = undefined) {
|
static createChatWithRollMode(name, chatOptions, rollData = undefined, rollMode = undefined) {
|
||||||
|
if (rollMode == undefined) {
|
||||||
|
rollMode = game.settings.get("core", "rollMode")
|
||||||
|
}
|
||||||
this.createChatMessage(name, game.settings.get("core", "rollMode"), chatOptions, rollData)
|
this.createChatMessage(name, game.settings.get("core", "rollMode"), chatOptions, rollData)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
BIN
packs/archetypes-fees/000106.ldb
Normal file
BIN
packs/archetypes-fees/000106.ldb
Normal file
Binary file not shown.
0
packs/archetypes-fees/000109.log
Normal file
0
packs/archetypes-fees/000109.log
Normal file
1
packs/archetypes-fees/CURRENT
Normal file
1
packs/archetypes-fees/CURRENT
Normal file
|
@ -0,0 +1 @@
|
||||||
|
MANIFEST-000107
|
0
packs/archetypes-fees/LOCK
Normal file
0
packs/archetypes-fees/LOCK
Normal file
8
packs/archetypes-fees/LOG
Normal file
8
packs/archetypes-fees/LOG
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
2024/05/23-14:51:24.000188 7f7a316006c0 Recovering log #104
|
||||||
|
2024/05/23-14:51:24.010463 7f7a316006c0 Delete type=3 #102
|
||||||
|
2024/05/23-14:51:24.010514 7f7a316006c0 Delete type=0 #104
|
||||||
|
2024/05/23-15:00:04.398824 7f7a2b8006c0 Level-0 table #110: started
|
||||||
|
2024/05/23-15:00:04.398861 7f7a2b8006c0 Level-0 table #110: 0 bytes OK
|
||||||
|
2024/05/23-15:00:04.405139 7f7a2b8006c0 Delete type=0 #108
|
||||||
|
2024/05/23-15:00:04.405289 7f7a2b8006c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-15:00:04.405345 7f7a2b8006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
15
packs/archetypes-fees/LOG.old
Normal file
15
packs/archetypes-fees/LOG.old
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
2024/05/23-10:57:45.623302 7f80456006c0 Recovering log #100
|
||||||
|
2024/05/23-10:57:45.634017 7f80456006c0 Delete type=3 #98
|
||||||
|
2024/05/23-10:57:45.634148 7f80456006c0 Delete type=0 #100
|
||||||
|
2024/05/23-11:25:01.407869 7f803fe006c0 Level-0 table #105: started
|
||||||
|
2024/05/23-11:25:01.412121 7f803fe006c0 Level-0 table #105: 76980 bytes OK
|
||||||
|
2024/05/23-11:25:01.418196 7f803fe006c0 Delete type=0 #103
|
||||||
|
2024/05/23-11:25:01.442441 7f803fe006c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-11:25:01.466948 7f803fe006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at '!items!y1yOenfAJTsb3r6e' @ 62 : 1
|
||||||
|
2024/05/23-11:25:01.466958 7f803fe006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/05/23-11:25:01.471640 7f803fe006c0 Generated table #106@1: 31 keys, 76980 bytes
|
||||||
|
2024/05/23-11:25:01.471673 7f803fe006c0 Compacted 1@1 + 1@2 files => 76980 bytes
|
||||||
|
2024/05/23-11:25:01.477983 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/05/23-11:25:01.478100 7f803fe006c0 Delete type=2 #5
|
||||||
|
2024/05/23-11:25:01.478228 7f803fe006c0 Delete type=2 #105
|
||||||
|
2024/05/23-11:25:01.488781 7f803fe006c0 Manual compaction at level-1 from '!items!y1yOenfAJTsb3r6e' @ 62 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
BIN
packs/archetypes-fees/MANIFEST-000107
Normal file
BIN
packs/archetypes-fees/MANIFEST-000107
Normal file
Binary file not shown.
BIN
packs/armes-et-protection/000106.ldb
Normal file
BIN
packs/armes-et-protection/000106.ldb
Normal file
Binary file not shown.
0
packs/armes-et-protection/000109.log
Normal file
0
packs/armes-et-protection/000109.log
Normal file
1
packs/armes-et-protection/CURRENT
Normal file
1
packs/armes-et-protection/CURRENT
Normal file
|
@ -0,0 +1 @@
|
||||||
|
MANIFEST-000107
|
0
packs/armes-et-protection/LOCK
Normal file
0
packs/armes-et-protection/LOCK
Normal file
8
packs/armes-et-protection/LOG
Normal file
8
packs/armes-et-protection/LOG
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
2024/05/23-14:51:24.026186 7f7a316006c0 Recovering log #104
|
||||||
|
2024/05/23-14:51:24.036947 7f7a316006c0 Delete type=3 #102
|
||||||
|
2024/05/23-14:51:24.037049 7f7a316006c0 Delete type=0 #104
|
||||||
|
2024/05/23-15:00:04.391521 7f7a2b8006c0 Level-0 table #110: started
|
||||||
|
2024/05/23-15:00:04.391574 7f7a2b8006c0 Level-0 table #110: 0 bytes OK
|
||||||
|
2024/05/23-15:00:04.398604 7f7a2b8006c0 Delete type=0 #108
|
||||||
|
2024/05/23-15:00:04.405267 7f7a2b8006c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-15:00:04.405337 7f7a2b8006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
15
packs/armes-et-protection/LOG.old
Normal file
15
packs/armes-et-protection/LOG.old
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
2024/05/23-10:57:45.655135 7f8046a006c0 Recovering log #100
|
||||||
|
2024/05/23-10:57:45.665774 7f8046a006c0 Delete type=3 #98
|
||||||
|
2024/05/23-10:57:45.665849 7f8046a006c0 Delete type=0 #100
|
||||||
|
2024/05/23-11:25:01.418338 7f803fe006c0 Level-0 table #105: started
|
||||||
|
2024/05/23-11:25:01.422571 7f803fe006c0 Level-0 table #105: 17369 bytes OK
|
||||||
|
2024/05/23-11:25:01.428914 7f803fe006c0 Delete type=0 #103
|
||||||
|
2024/05/23-11:25:01.442459 7f803fe006c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-11:25:01.478313 7f803fe006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at '!items!zbsVCsWxRzkzzG1N' @ 144 : 1
|
||||||
|
2024/05/23-11:25:01.478324 7f803fe006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/05/23-11:25:01.482030 7f803fe006c0 Generated table #106@1: 72 keys, 17369 bytes
|
||||||
|
2024/05/23-11:25:01.482057 7f803fe006c0 Compacted 1@1 + 1@2 files => 17369 bytes
|
||||||
|
2024/05/23-11:25:01.488371 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/05/23-11:25:01.488544 7f803fe006c0 Delete type=2 #5
|
||||||
|
2024/05/23-11:25:01.488680 7f803fe006c0 Delete type=2 #105
|
||||||
|
2024/05/23-11:25:01.488790 7f803fe006c0 Manual compaction at level-1 from '!items!zbsVCsWxRzkzzG1N' @ 144 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
BIN
packs/armes-et-protection/MANIFEST-000107
Normal file
BIN
packs/armes-et-protection/MANIFEST-000107
Normal file
Binary file not shown.
BIN
packs/atouts-feeriques/000106.ldb
Normal file
BIN
packs/atouts-feeriques/000106.ldb
Normal file
Binary file not shown.
0
packs/atouts-feeriques/000109.log
Normal file
0
packs/atouts-feeriques/000109.log
Normal file
1
packs/atouts-feeriques/CURRENT
Normal file
1
packs/atouts-feeriques/CURRENT
Normal file
|
@ -0,0 +1 @@
|
||||||
|
MANIFEST-000107
|
0
packs/atouts-feeriques/LOCK
Normal file
0
packs/atouts-feeriques/LOCK
Normal file
8
packs/atouts-feeriques/LOG
Normal file
8
packs/atouts-feeriques/LOG
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
2024/05/23-14:51:23.987816 7f7a30c006c0 Recovering log #104
|
||||||
|
2024/05/23-14:51:23.997550 7f7a30c006c0 Delete type=3 #102
|
||||||
|
2024/05/23-14:51:23.997629 7f7a30c006c0 Delete type=0 #104
|
||||||
|
2024/05/23-15:00:04.371340 7f7a2b8006c0 Level-0 table #110: started
|
||||||
|
2024/05/23-15:00:04.371366 7f7a2b8006c0 Level-0 table #110: 0 bytes OK
|
||||||
|
2024/05/23-15:00:04.377577 7f7a2b8006c0 Delete type=0 #108
|
||||||
|
2024/05/23-15:00:04.377847 7f7a2b8006c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-15:00:04.377924 7f7a2b8006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
15
packs/atouts-feeriques/LOG.old
Normal file
15
packs/atouts-feeriques/LOG.old
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
2024/05/23-10:57:45.608985 7f80460006c0 Recovering log #100
|
||||||
|
2024/05/23-10:57:45.618959 7f80460006c0 Delete type=3 #98
|
||||||
|
2024/05/23-10:57:45.619067 7f80460006c0 Delete type=0 #100
|
||||||
|
2024/05/23-11:25:01.397161 7f803fe006c0 Level-0 table #105: started
|
||||||
|
2024/05/23-11:25:01.401554 7f803fe006c0 Level-0 table #105: 63133 bytes OK
|
||||||
|
2024/05/23-11:25:01.407613 7f803fe006c0 Delete type=0 #103
|
||||||
|
2024/05/23-11:25:01.442406 7f803fe006c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-11:25:01.442493 7f803fe006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at '!items!zvtBlG6KCIn0oCVk' @ 306 : 1
|
||||||
|
2024/05/23-11:25:01.442500 7f803fe006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/05/23-11:25:01.447773 7f803fe006c0 Generated table #106@1: 153 keys, 63133 bytes
|
||||||
|
2024/05/23-11:25:01.447818 7f803fe006c0 Compacted 1@1 + 1@2 files => 63133 bytes
|
||||||
|
2024/05/23-11:25:01.453866 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/05/23-11:25:01.454036 7f803fe006c0 Delete type=2 #5
|
||||||
|
2024/05/23-11:25:01.454195 7f803fe006c0 Delete type=2 #105
|
||||||
|
2024/05/23-11:25:01.488757 7f803fe006c0 Manual compaction at level-1 from '!items!zvtBlG6KCIn0oCVk' @ 306 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
BIN
packs/atouts-feeriques/MANIFEST-000107
Normal file
BIN
packs/atouts-feeriques/MANIFEST-000107
Normal file
Binary file not shown.
BIN
packs/avantages/000106.ldb
Normal file
BIN
packs/avantages/000106.ldb
Normal file
Binary file not shown.
0
packs/avantages/000109.log
Normal file
0
packs/avantages/000109.log
Normal file
1
packs/avantages/CURRENT
Normal file
1
packs/avantages/CURRENT
Normal file
|
@ -0,0 +1 @@
|
||||||
|
MANIFEST-000107
|
0
packs/avantages/LOCK
Normal file
0
packs/avantages/LOCK
Normal file
8
packs/avantages/LOG
Normal file
8
packs/avantages/LOG
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
2024/05/23-14:51:23.948792 7f7a316006c0 Recovering log #104
|
||||||
|
2024/05/23-14:51:23.958442 7f7a316006c0 Delete type=3 #102
|
||||||
|
2024/05/23-14:51:23.958537 7f7a316006c0 Delete type=0 #104
|
||||||
|
2024/05/23-15:00:04.351486 7f7a2b8006c0 Level-0 table #110: started
|
||||||
|
2024/05/23-15:00:04.351511 7f7a2b8006c0 Level-0 table #110: 0 bytes OK
|
||||||
|
2024/05/23-15:00:04.357671 7f7a2b8006c0 Delete type=0 #108
|
||||||
|
2024/05/23-15:00:04.377771 7f7a2b8006c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-15:00:04.377867 7f7a2b8006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
15
packs/avantages/LOG.old
Normal file
15
packs/avantages/LOG.old
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
2024/05/23-10:57:45.566585 7f80456006c0 Recovering log #100
|
||||||
|
2024/05/23-10:57:45.576456 7f80456006c0 Delete type=3 #98
|
||||||
|
2024/05/23-10:57:45.576513 7f80456006c0 Delete type=0 #100
|
||||||
|
2024/05/23-11:25:01.323826 7f803fe006c0 Level-0 table #105: started
|
||||||
|
2024/05/23-11:25:01.327636 7f803fe006c0 Level-0 table #105: 27634 bytes OK
|
||||||
|
2024/05/23-11:25:01.333591 7f803fe006c0 Delete type=0 #103
|
||||||
|
2024/05/23-11:25:01.354630 7f803fe006c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-11:25:01.364975 7f803fe006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at '!items!zfpjROW9LDAlXUkN' @ 126 : 1
|
||||||
|
2024/05/23-11:25:01.364987 7f803fe006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/05/23-11:25:01.368745 7f803fe006c0 Generated table #106@1: 63 keys, 27634 bytes
|
||||||
|
2024/05/23-11:25:01.368762 7f803fe006c0 Compacted 1@1 + 1@2 files => 27634 bytes
|
||||||
|
2024/05/23-11:25:01.375071 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/05/23-11:25:01.375332 7f803fe006c0 Delete type=2 #5
|
||||||
|
2024/05/23-11:25:01.375618 7f803fe006c0 Delete type=2 #105
|
||||||
|
2024/05/23-11:25:01.397027 7f803fe006c0 Manual compaction at level-1 from '!items!zfpjROW9LDAlXUkN' @ 126 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
BIN
packs/avantages/MANIFEST-000107
Normal file
BIN
packs/avantages/MANIFEST-000107
Normal file
Binary file not shown.
BIN
packs/capacites/000106.ldb
Normal file
BIN
packs/capacites/000106.ldb
Normal file
Binary file not shown.
0
packs/capacites/000109.log
Normal file
0
packs/capacites/000109.log
Normal file
1
packs/capacites/CURRENT
Normal file
1
packs/capacites/CURRENT
Normal file
|
@ -0,0 +1 @@
|
||||||
|
MANIFEST-000107
|
0
packs/capacites/LOCK
Normal file
0
packs/capacites/LOCK
Normal file
8
packs/capacites/LOG
Normal file
8
packs/capacites/LOG
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
2024/05/23-14:51:23.974743 7f7a316006c0 Recovering log #104
|
||||||
|
2024/05/23-14:51:23.985682 7f7a316006c0 Delete type=3 #102
|
||||||
|
2024/05/23-14:51:23.985779 7f7a316006c0 Delete type=0 #104
|
||||||
|
2024/05/23-15:00:04.365258 7f7a2b8006c0 Level-0 table #110: started
|
||||||
|
2024/05/23-15:00:04.365295 7f7a2b8006c0 Level-0 table #110: 0 bytes OK
|
||||||
|
2024/05/23-15:00:04.371198 7f7a2b8006c0 Delete type=0 #108
|
||||||
|
2024/05/23-15:00:04.377826 7f7a2b8006c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-15:00:04.377906 7f7a2b8006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
15
packs/capacites/LOG.old
Normal file
15
packs/capacites/LOG.old
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
2024/05/23-10:57:45.594438 7f8046a006c0 Recovering log #100
|
||||||
|
2024/05/23-10:57:45.605133 7f8046a006c0 Delete type=3 #98
|
||||||
|
2024/05/23-10:57:45.605268 7f8046a006c0 Delete type=0 #100
|
||||||
|
2024/05/23-11:25:01.333752 7f803fe006c0 Level-0 table #105: started
|
||||||
|
2024/05/23-11:25:01.337048 7f803fe006c0 Level-0 table #105: 24250 bytes OK
|
||||||
|
2024/05/23-11:25:01.343059 7f803fe006c0 Delete type=0 #103
|
||||||
|
2024/05/23-11:25:01.354655 7f803fe006c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-11:25:01.375782 7f803fe006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at '!items!yWDg2KlXEz33TSmZ' @ 72 : 1
|
||||||
|
2024/05/23-11:25:01.375804 7f803fe006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/05/23-11:25:01.379818 7f803fe006c0 Generated table #106@1: 36 keys, 24250 bytes
|
||||||
|
2024/05/23-11:25:01.379847 7f803fe006c0 Compacted 1@1 + 1@2 files => 24250 bytes
|
||||||
|
2024/05/23-11:25:01.386783 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/05/23-11:25:01.386889 7f803fe006c0 Delete type=2 #5
|
||||||
|
2024/05/23-11:25:01.387092 7f803fe006c0 Delete type=2 #105
|
||||||
|
2024/05/23-11:25:01.397039 7f803fe006c0 Manual compaction at level-1 from '!items!yWDg2KlXEz33TSmZ' @ 72 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
BIN
packs/capacites/MANIFEST-000107
Normal file
BIN
packs/capacites/MANIFEST-000107
Normal file
Binary file not shown.
BIN
packs/competences/000106.ldb
Normal file
BIN
packs/competences/000106.ldb
Normal file
Binary file not shown.
0
packs/competences/000109.log
Normal file
0
packs/competences/000109.log
Normal file
1
packs/competences/CURRENT
Normal file
1
packs/competences/CURRENT
Normal file
|
@ -0,0 +1 @@
|
||||||
|
MANIFEST-000107
|
0
packs/competences/LOCK
Normal file
0
packs/competences/LOCK
Normal file
8
packs/competences/LOG
Normal file
8
packs/competences/LOG
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
2024/05/23-14:51:23.935654 7f7a30c006c0 Recovering log #104
|
||||||
|
2024/05/23-14:51:23.946200 7f7a30c006c0 Delete type=3 #102
|
||||||
|
2024/05/23-14:51:23.946253 7f7a30c006c0 Delete type=0 #104
|
||||||
|
2024/05/23-15:00:04.344781 7f7a2b8006c0 Level-0 table #110: started
|
||||||
|
2024/05/23-15:00:04.344815 7f7a2b8006c0 Level-0 table #110: 0 bytes OK
|
||||||
|
2024/05/23-15:00:04.351256 7f7a2b8006c0 Delete type=0 #108
|
||||||
|
2024/05/23-15:00:04.351383 7f7a2b8006c0 Manual compaction at level-0 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-15:00:04.351414 7f7a2b8006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
15
packs/competences/LOG.old
Normal file
15
packs/competences/LOG.old
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
2024/05/23-10:57:45.551260 7f80460006c0 Recovering log #100
|
||||||
|
2024/05/23-10:57:45.562116 7f80460006c0 Delete type=3 #98
|
||||||
|
2024/05/23-10:57:45.562204 7f80460006c0 Delete type=0 #100
|
||||||
|
2024/05/23-11:25:01.313504 7f803fe006c0 Level-0 table #105: started
|
||||||
|
2024/05/23-11:25:01.317069 7f803fe006c0 Level-0 table #105: 27947 bytes OK
|
||||||
|
2024/05/23-11:25:01.323555 7f803fe006c0 Delete type=0 #103
|
||||||
|
2024/05/23-11:25:01.354597 7f803fe006c0 Manual compaction at level-0 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-11:25:01.354715 7f803fe006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at '!items!zEl2NQsnCpELVWzh' @ 136 : 1
|
||||||
|
2024/05/23-11:25:01.354732 7f803fe006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/05/23-11:25:01.358690 7f803fe006c0 Generated table #106@1: 68 keys, 27947 bytes
|
||||||
|
2024/05/23-11:25:01.358722 7f803fe006c0 Compacted 1@1 + 1@2 files => 27947 bytes
|
||||||
|
2024/05/23-11:25:01.364610 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/05/23-11:25:01.364754 7f803fe006c0 Delete type=2 #5
|
||||||
|
2024/05/23-11:25:01.364898 7f803fe006c0 Delete type=2 #105
|
||||||
|
2024/05/23-11:25:01.397013 7f803fe006c0 Manual compaction at level-1 from '!items!zEl2NQsnCpELVWzh' @ 136 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
BIN
packs/competences/MANIFEST-000107
Normal file
BIN
packs/competences/MANIFEST-000107
Normal file
Binary file not shown.
BIN
packs/desavantages/000106.ldb
Normal file
BIN
packs/desavantages/000106.ldb
Normal file
Binary file not shown.
0
packs/desavantages/000109.log
Normal file
0
packs/desavantages/000109.log
Normal file
1
packs/desavantages/CURRENT
Normal file
1
packs/desavantages/CURRENT
Normal file
|
@ -0,0 +1 @@
|
||||||
|
MANIFEST-000107
|
0
packs/desavantages/LOCK
Normal file
0
packs/desavantages/LOCK
Normal file
8
packs/desavantages/LOG
Normal file
8
packs/desavantages/LOG
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
2024/05/23-14:51:23.961299 7f7a30c006c0 Recovering log #104
|
||||||
|
2024/05/23-14:51:23.971920 7f7a30c006c0 Delete type=3 #102
|
||||||
|
2024/05/23-14:51:23.972033 7f7a30c006c0 Delete type=0 #104
|
||||||
|
2024/05/23-15:00:04.357792 7f7a2b8006c0 Level-0 table #110: started
|
||||||
|
2024/05/23-15:00:04.357813 7f7a2b8006c0 Level-0 table #110: 0 bytes OK
|
||||||
|
2024/05/23-15:00:04.365124 7f7a2b8006c0 Delete type=0 #108
|
||||||
|
2024/05/23-15:00:04.377799 7f7a2b8006c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-15:00:04.377887 7f7a2b8006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
15
packs/desavantages/LOG.old
Normal file
15
packs/desavantages/LOG.old
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
2024/05/23-10:57:45.580069 7f80474006c0 Recovering log #100
|
||||||
|
2024/05/23-10:57:45.590125 7f80474006c0 Delete type=3 #98
|
||||||
|
2024/05/23-10:57:45.590216 7f80474006c0 Delete type=0 #100
|
||||||
|
2024/05/23-11:25:01.343215 7f803fe006c0 Level-0 table #105: started
|
||||||
|
2024/05/23-11:25:01.347909 7f803fe006c0 Level-0 table #105: 32297 bytes OK
|
||||||
|
2024/05/23-11:25:01.354293 7f803fe006c0 Delete type=0 #103
|
||||||
|
2024/05/23-11:25:01.354677 7f803fe006c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-11:25:01.387156 7f803fe006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at '!items!xzRJ6JP1HqoqxLdj' @ 130 : 1
|
||||||
|
2024/05/23-11:25:01.387165 7f803fe006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/05/23-11:25:01.390635 7f803fe006c0 Generated table #106@1: 65 keys, 32297 bytes
|
||||||
|
2024/05/23-11:25:01.390672 7f803fe006c0 Compacted 1@1 + 1@2 files => 32297 bytes
|
||||||
|
2024/05/23-11:25:01.396695 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/05/23-11:25:01.396816 7f803fe006c0 Delete type=2 #5
|
||||||
|
2024/05/23-11:25:01.396942 7f803fe006c0 Delete type=2 #105
|
||||||
|
2024/05/23-11:25:01.397065 7f803fe006c0 Manual compaction at level-1 from '!items!xzRJ6JP1HqoqxLdj' @ 130 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
BIN
packs/desavantages/MANIFEST-000107
Normal file
BIN
packs/desavantages/MANIFEST-000107
Normal file
Binary file not shown.
|
@ -10,7 +10,7 @@
|
||||||
{"name":"Élémentaire majeur (Légendaire)","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"metamorphose","masquetype":"demasque","niveau":"legendaire","activation":"2 points d’usage au lieu d’un, ainsi qu’1 point temporaire de Constitution.","istest":false,"feeriemasque":"feerie","zoneffet":"","testautre":"Attaque avec des crocs","carac":"pres","duree":"une scène","cibles":"","effet":"transformation en élémentaire de son\naffinité ; absorbe Féérie points de dégâts sauf contre des attaques efficaces (élément contraire ou argent). \nAttaques : effectuées avec Mêlée + AGI ; dégâts élémentaires = Féérie + MR (pas de bonus de Force).\n","portee":"","resistance":"aucune","resistanceautre":"Esquive / test d’opposition de Mêlée ou Ressort + Force pour se dégager.","isvirulence":false,"virulence":"","description":"<p>Le djinn se transforme en élémentaire majeur de très grande taille (environ 2,5 mètres de haut et d’envergure), avec d’importants pouvoirs de contrôle de son élément de prédilection : tornade de sable ou d’eau, contrôle du feu, tempête, etc. Ce contrôle élémentaire est de forme relativement libre selon la vraisemblance et ce qu’autorise le Docte et sa puissance est comparable au Pouvoir profond du phénix Contrôle du feu (voir p. 264). Il utilise ses longs bras (1,5 m) pour porter des attaques élémentaires avec des effets critiques liés : le feu enflamme les vêtements, l’eau et le sable étourdissent, l’air ajoute des dégâts de projection ou de chute, etc.</p>\n<p>Les attaques physiques portées contre lui sont réduites d’autant de points de dégâts que son rang de Féérie, sauf si elles font intervenir de l’argent. Toutefois, projeter sur lui une grande quantité (1 m3 environ) d’un élément auquel il est vulnérable (l’eau pour les djinns du feu, la terre ou le sable pour les djinns de l’eau, le vent pour les djinns de sable, le feu pour les djinns de l’air) pourra contraindre un djinn légendaire à abandonner sa forme d’Élémentaire majeur.</p>","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678214487456,"modifiedTime":1678303349575,"lastModifiedBy":"xGnwWyEbO2k89UsP"},"_id":"4v8Z2ThDSwwWb0DU","folder":null,"sort":0,"ownership":{"default":0,"xGnwWyEbO2k89UsP":3}}
|
{"name":"Élémentaire majeur (Légendaire)","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"metamorphose","masquetype":"demasque","niveau":"legendaire","activation":"2 points d’usage au lieu d’un, ainsi qu’1 point temporaire de Constitution.","istest":false,"feeriemasque":"feerie","zoneffet":"","testautre":"Attaque avec des crocs","carac":"pres","duree":"une scène","cibles":"","effet":"transformation en élémentaire de son\naffinité ; absorbe Féérie points de dégâts sauf contre des attaques efficaces (élément contraire ou argent). \nAttaques : effectuées avec Mêlée + AGI ; dégâts élémentaires = Féérie + MR (pas de bonus de Force).\n","portee":"","resistance":"aucune","resistanceautre":"Esquive / test d’opposition de Mêlée ou Ressort + Force pour se dégager.","isvirulence":false,"virulence":"","description":"<p>Le djinn se transforme en élémentaire majeur de très grande taille (environ 2,5 mètres de haut et d’envergure), avec d’importants pouvoirs de contrôle de son élément de prédilection : tornade de sable ou d’eau, contrôle du feu, tempête, etc. Ce contrôle élémentaire est de forme relativement libre selon la vraisemblance et ce qu’autorise le Docte et sa puissance est comparable au Pouvoir profond du phénix Contrôle du feu (voir p. 264). Il utilise ses longs bras (1,5 m) pour porter des attaques élémentaires avec des effets critiques liés : le feu enflamme les vêtements, l’eau et le sable étourdissent, l’air ajoute des dégâts de projection ou de chute, etc.</p>\n<p>Les attaques physiques portées contre lui sont réduites d’autant de points de dégâts que son rang de Féérie, sauf si elles font intervenir de l’argent. Toutefois, projeter sur lui une grande quantité (1 m3 environ) d’un élément auquel il est vulnérable (l’eau pour les djinns du feu, la terre ou le sable pour les djinns de l’eau, le vent pour les djinns de sable, le feu pour les djinns de l’air) pourra contraindre un djinn légendaire à abandonner sa forme d’Élémentaire majeur.</p>","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678214487456,"modifiedTime":1678303349575,"lastModifiedBy":"xGnwWyEbO2k89UsP"},"_id":"4v8Z2ThDSwwWb0DU","folder":null,"sort":0,"ownership":{"default":0,"xGnwWyEbO2k89UsP":3}}
|
||||||
{"name":"Psychotopie","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"actif","masquetype":"masque","niveau":"normal","activation":"Féérie + Esprit et une transe de 5 minutes au moins, contre un SD variable selon la taille et les événements se déroulant dans le lieu (une chambre isolée depuis des années : SD10 ; un immeuble rempli d'habitants dans lequel il y a fréquemment du passage : SD 20).","istest":true,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"esp","duree":"","cibles":"un seul lieu","effet":"apprend des informations marquantes sur un lieu","portee":"un lieu (pas plus grand qu’un bâtiment)","resistance":"aucune","resistanceautre":"","isvirulence":false,"virulence":"","description":"<p><strong>Type de Pouvoir : </strong>actif.</p>\n<p><strong>Activation : </strong>Féérie + Esprit et une transe de 5 minutes au moins, contre un SD variable selon la taille et les événements se déroulant dans le lieu (une chambre isolée depuis des années : SD10 ; un immeuble rempli d'habitants dans lequel il y a fréquemment du passage : SD 20).</p>\n<p><strong>Cibles :</strong> un seul lieu.</p>\n<p><strong>Effet :</strong> apprend des informations marquantes sur un lieu.</p>\n<p><strong>Zone d’effet : </strong>un lieu (pas plus grand qu’un bâtiment).</p>\n<p>La créature est capable, après avoir établi un contact mental avec un lieu par une transe prolongée, de récupérer des informations sur ce qui s’y est passé. En fonction de sa MR, elle aura accès à différents détails : paroles prononcées récemment ou qui ont marqué l’atmosphère, traits physiques généraux de protagonistes présents (odeur, poids, etc.). Les événements marquants (meurtre, incendie, etc.) imprègnent davantage un lieu et faciliteront le SD du test à la discrétion du Docte mais peuvent rester imperceptibles dans la masse d’informations si le lieu est vaste et fréquenté.</p>","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678280900282,"modifiedTime":1678314472642,"lastModifiedBy":"3jSVOAZZNxArxD7h"},"_id":"672N9fk2mJahvJIL","folder":null,"sort":0,"ownership":{"default":0,"3jSVOAZZNxArxD7h":3}}
|
{"name":"Psychotopie","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"actif","masquetype":"masque","niveau":"normal","activation":"Féérie + Esprit et une transe de 5 minutes au moins, contre un SD variable selon la taille et les événements se déroulant dans le lieu (une chambre isolée depuis des années : SD10 ; un immeuble rempli d'habitants dans lequel il y a fréquemment du passage : SD 20).","istest":true,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"esp","duree":"","cibles":"un seul lieu","effet":"apprend des informations marquantes sur un lieu","portee":"un lieu (pas plus grand qu’un bâtiment)","resistance":"aucune","resistanceautre":"","isvirulence":false,"virulence":"","description":"<p><strong>Type de Pouvoir : </strong>actif.</p>\n<p><strong>Activation : </strong>Féérie + Esprit et une transe de 5 minutes au moins, contre un SD variable selon la taille et les événements se déroulant dans le lieu (une chambre isolée depuis des années : SD10 ; un immeuble rempli d'habitants dans lequel il y a fréquemment du passage : SD 20).</p>\n<p><strong>Cibles :</strong> un seul lieu.</p>\n<p><strong>Effet :</strong> apprend des informations marquantes sur un lieu.</p>\n<p><strong>Zone d’effet : </strong>un lieu (pas plus grand qu’un bâtiment).</p>\n<p>La créature est capable, après avoir établi un contact mental avec un lieu par une transe prolongée, de récupérer des informations sur ce qui s’y est passé. En fonction de sa MR, elle aura accès à différents détails : paroles prononcées récemment ou qui ont marqué l’atmosphère, traits physiques généraux de protagonistes présents (odeur, poids, etc.). Les événements marquants (meurtre, incendie, etc.) imprègnent davantage un lieu et faciliteront le SD du test à la discrétion du Docte mais peuvent rester imperceptibles dans la masse d’informations si le lieu est vaste et fréquenté.</p>","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678280900282,"modifiedTime":1678314472642,"lastModifiedBy":"3jSVOAZZNxArxD7h"},"_id":"672N9fk2mJahvJIL","folder":null,"sort":0,"ownership":{"default":0,"3jSVOAZZNxArxD7h":3}}
|
||||||
{"name":"Doppelgänger universel","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"metamorphose","masquetype":"demasque","niveau":"legendaire","activation":"test de Masque + Féérie contre un SD de 10 + Prestance de la personne imitée modifiée par la précision de la source servant à l’imitation (connaissance personnelle profonde = bonus de + 3, connaissance personnelle superficielle = + 1, photographie = - 1, illustration fidèle = - 2).","istest":true,"feeriemasque":"Masque","zoneffet":"","testautre":"","carac":"agi","duree":" une scène.","cibles":"","effet":"prendre l’apparence de n’importe qui.","portee":"","resistance":"autre","resistanceautre":"percer à jour le protys légendaire nécessite un test de Sensibilité (Psychologie) + Perception en opposition au test de Féérie + Masque du protys.","isvirulence":false,"virulence":"","description":"<p><strong>Type de Pouvoir : </strong>démasqué ; actif puis métamorphose pour adopter l’identité imitée.</p>\n<p><strong>Activation : </strong>test de Masque + Féérie contre un SD de 10 + Prestance de la personne imitée modifiée par la précision de la source servant à l’imitation (connaissance personnelle profonde = bonus de + 3, connaissance personnelle superficielle = + 1, photographie = - 1, illustration fidèle = - 2).</p>\n<p><strong>Durée : </strong>une scène.</p>\n<p><strong>Effet : </strong>prendre l’apparence de n’importe qui.</p>\n<p><strong>Résistance : </strong>percer à jour le protys légendaire nécessite un test de Sensibilité (Psychologie) + Perception en opposition au test de Féérie + Masque du protys.</p>\n<p>Le protys légendaire est capable, pendant une scène, de prendre l’apparence (traits du visage, corpulence, etc.) de n’importe quel individu dont il aurait vu le visage en réalité ou en photographie, voire sur une illustration suffisamment fidèle. Il peut même imiter une fée avec ses capacités naturelles (ailes, crocs, pelage, etc.) au point de pouvoir s’en servir normalement (il pourra ainsi voler, utiliser une queue préhensile, etc.). Il n’aura en revanche pas accès aux Pouvoirs de la fée imitée.</p>","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.21","coreVersion":"10.291","createdTime":1678354656026,"modifiedTime":1678356879899,"lastModifiedBy":"3jSVOAZZNxArxD7h"},"_id":"67ECitVegs2SFn2g","folder":null,"sort":0,"ownership":{"default":0,"3jSVOAZZNxArxD7h":3}}
|
{"name":"Doppelgänger universel","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"metamorphose","masquetype":"demasque","niveau":"legendaire","activation":"test de Masque + Féérie contre un SD de 10 + Prestance de la personne imitée modifiée par la précision de la source servant à l’imitation (connaissance personnelle profonde = bonus de + 3, connaissance personnelle superficielle = + 1, photographie = - 1, illustration fidèle = - 2).","istest":true,"feeriemasque":"Masque","zoneffet":"","testautre":"","carac":"agi","duree":" une scène.","cibles":"","effet":"prendre l’apparence de n’importe qui.","portee":"","resistance":"autre","resistanceautre":"percer à jour le protys légendaire nécessite un test de Sensibilité (Psychologie) + Perception en opposition au test de Féérie + Masque du protys.","isvirulence":false,"virulence":"","description":"<p><strong>Type de Pouvoir : </strong>démasqué ; actif puis métamorphose pour adopter l’identité imitée.</p>\n<p><strong>Activation : </strong>test de Masque + Féérie contre un SD de 10 + Prestance de la personne imitée modifiée par la précision de la source servant à l’imitation (connaissance personnelle profonde = bonus de + 3, connaissance personnelle superficielle = + 1, photographie = - 1, illustration fidèle = - 2).</p>\n<p><strong>Durée : </strong>une scène.</p>\n<p><strong>Effet : </strong>prendre l’apparence de n’importe qui.</p>\n<p><strong>Résistance : </strong>percer à jour le protys légendaire nécessite un test de Sensibilité (Psychologie) + Perception en opposition au test de Féérie + Masque du protys.</p>\n<p>Le protys légendaire est capable, pendant une scène, de prendre l’apparence (traits du visage, corpulence, etc.) de n’importe quel individu dont il aurait vu le visage en réalité ou en photographie, voire sur une illustration suffisamment fidèle. Il peut même imiter une fée avec ses capacités naturelles (ailes, crocs, pelage, etc.) au point de pouvoir s’en servir normalement (il pourra ainsi voler, utiliser une queue préhensile, etc.). Il n’aura en revanche pas accès aux Pouvoirs de la fée imitée.</p>","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.21","coreVersion":"10.291","createdTime":1678354656026,"modifiedTime":1678356879899,"lastModifiedBy":"3jSVOAZZNxArxD7h"},"_id":"67ECitVegs2SFn2g","folder":null,"sort":0,"ownership":{"default":0,"3jSVOAZZNxArxD7h":3}}
|
||||||
{"name":"Souffle enflammé","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"actif","masquetype":"masque","niveau":"normal","activation":" test de Féérie + Agilité ou Précision.","istest":false,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"pre","duree":"","cibles":"une seule.","effet":"souffle de feu de dégâts = 2 + MR","portee":"Féérie mètres.","resistance":"autre","resistanceautre":"Esquive","isvirulence":false,"virulence":"","description":"<p><strong>Type de Pouvoir : </strong>actif.</p>\n<p><strong>Activation : </strong>test de Féérie + Agilité ou Précision.</p>\n<p><strong>Cibles : </strong>une seule.</p>\n<p><strong>Effet : </strong>souffle de feu de dégâts = 2 + MR.</p>\n<p><strong>Portée : </strong>Féérie mètres.</p>\n<p><strong>Résistance : </strong>Esquive.</p>\n<p>La créature souffle un jet de feu capables d’enflammer les matériaux combustibles (papier, tissus, bois) et faire des dégâts sur une cible. Cette dernière peut être durablement enflammée si les dégâts subis sont de 8 ou plus (en cumulant les attaques). La cible subira alors 1 point de dégât par tour jusqu’à ce que les flammes soient éteintes par la cible ou un allié. En as de réussite critique du Souffle enflammé, la cible peut perdre, en plus de points de Vie, un point de Prestance permanent à moins d’être soignée immédiatement.</p>","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678293330850,"modifiedTime":1678314472644,"lastModifiedBy":"3jSVOAZZNxArxD7h"},"_id":"68wj1CJt4oipIedV","folder":null,"sort":0,"ownership":{"default":0,"3jSVOAZZNxArxD7h":3}}
|
{"name":"Souffle enflammé","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"actif","masquetype":"masque","niveau":"normal","activation":" test de Féérie + Agilité ou Précision.","istest":true,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"agi","duree":"","cibles":"une seule.","effet":"souffle de feu de dégâts = 2 + MR","portee":"Féérie mètres.","resistance":"autre","resistanceautre":"Esquive","isvirulence":false,"virulence":"","description":"<p><strong>Type de Pouvoir : </strong>actif.</p>\n<p><strong>Activation : </strong>test de Féérie + Agilité ou Précision.</p>\n<p><strong>Cibles : </strong>une seule.</p>\n<p><strong>Effet : </strong>souffle de feu de dégâts = 2 + MR.</p>\n<p><strong>Portée : </strong>Féérie mètres.</p>\n<p><strong>Résistance : </strong>Esquive.</p>\n<p>La créature souffle un jet de feu capables d’enflammer les matériaux combustibles (papier, tissus, bois) et faire des dégâts sur une cible. Cette dernière peut être durablement enflammée si les dégâts subis sont de 8 ou plus (en cumulant les attaques). La cible subira alors 1 point de dégât par tour jusqu’à ce que les flammes soient éteintes par la cible ou un allié. En as de réussite critique du Souffle enflammé, la cible peut perdre, en plus de points de Vie, un point de Prestance permanent à moins d’être soignée immédiatement.</p>","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.1.3","coreVersion":"10.291","createdTime":1678293330850,"modifiedTime":1682875304779,"lastModifiedBy":"xGnwWyEbO2k89UsP"},"_id":"68wj1CJt4oipIedV","folder":null,"sort":0,"ownership":{"default":0,"3jSVOAZZNxArxD7h":3}}
|
||||||
{"name":"Chute indolore","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"passif","masquetype":"masque","niveau":"normal","activation":"","istest":false,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"pres","duree":"","cibles":"","effet":"la hauteur d’une chute est réduite de Féérie x 4 m pour le calcul de son SD.","portee":"","resistance":"aucune","resistanceautre":"Celle de la structure ou de l’objet (voir p. 204).","isvirulence":false,"virulence":"","description":"<p>La créature est capable d’affronter les pires chutes sans se faire mal. Lorsque ce Pouvoir est actif, on soustrait Féérie x 4 m à la hauteur de la chute pour le calcul de son SD.</p>\n<p><strong>Exemple</strong> : <em>si une créature a 4 en Féérie et chute de 20 m, c’est comme si elle ne chutait que de 4 m (elle ignore 4 x 4 = 16 m). Le SD de son test de Ressort + Agilité pour limiter les dégâts de la chute sera égal à 8 au lieu de 22 (voir le tableau des chutes, p. 190).</em></p>"},"effects":[],"flags":{"core":{"sourceId":"Item.745Qz4iEGB7RnBPk"}},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678214487456,"modifiedTime":1678303349644,"lastModifiedBy":"xGnwWyEbO2k89UsP"},"_id":"6v3s1I0blnPJHipG","folder":null,"sort":0,"ownership":{"default":0,"xGnwWyEbO2k89UsP":3}}
|
{"name":"Chute indolore","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"passif","masquetype":"masque","niveau":"normal","activation":"","istest":false,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"pres","duree":"","cibles":"","effet":"la hauteur d’une chute est réduite de Féérie x 4 m pour le calcul de son SD.","portee":"","resistance":"aucune","resistanceautre":"Celle de la structure ou de l’objet (voir p. 204).","isvirulence":false,"virulence":"","description":"<p>La créature est capable d’affronter les pires chutes sans se faire mal. Lorsque ce Pouvoir est actif, on soustrait Féérie x 4 m à la hauteur de la chute pour le calcul de son SD.</p>\n<p><strong>Exemple</strong> : <em>si une créature a 4 en Féérie et chute de 20 m, c’est comme si elle ne chutait que de 4 m (elle ignore 4 x 4 = 16 m). Le SD de son test de Ressort + Agilité pour limiter les dégâts de la chute sera égal à 8 au lieu de 22 (voir le tableau des chutes, p. 190).</em></p>"},"effects":[],"flags":{"core":{"sourceId":"Item.745Qz4iEGB7RnBPk"}},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678214487456,"modifiedTime":1678303349644,"lastModifiedBy":"xGnwWyEbO2k89UsP"},"_id":"6v3s1I0blnPJHipG","folder":null,"sort":0,"ownership":{"default":0,"xGnwWyEbO2k89UsP":3}}
|
||||||
{"name":"Charme","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"actif","masquetype":"masque","niveau":"normal","activation":"test de Féérie + Prestance.","istest":true,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"pres","duree":"Féérie + MR jours.","cibles":" une cible.","effet":"la cible tombe amoureuse.","portee":"conversation.","resistance":"psychiquepassive","resistanceautre":"Celle de la structure ou de l’objet (voir p. 204).","isvirulence":false,"virulence":"","description":"<p>La créature est capable, au cours d’une conversation, de faire tomber sa cible follement amoureuse d’elle si elle ne Résiste pas. La cible, une fois éprise de la créature, aura du mal à lui refuser quelque chose mais ne fera rien qui puisse directement nuire à ses jours et ira rarement contre son code moral.</p>\n<p>Pour la pousser à une telle extrémité, la créature devra obtenir une réussite critique ou réussir un test de Rhétorique ou Séduction de SD 15 minimum (au jugement du Docte) bénéficiant d’un bonus égal à la MR du Pouvoir.</p>"},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678214487456,"modifiedTime":1678303349644,"lastModifiedBy":"xGnwWyEbO2k89UsP"},"_id":"745Qz4iEGB7RnBPk","folder":null,"sort":0,"ownership":{"default":0,"xGnwWyEbO2k89UsP":3}}
|
{"name":"Charme","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"actif","masquetype":"masque","niveau":"normal","activation":"test de Féérie + Prestance.","istest":true,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"pres","duree":"Féérie + MR jours.","cibles":" une cible.","effet":"la cible tombe amoureuse.","portee":"conversation.","resistance":"psychiquepassive","resistanceautre":"Celle de la structure ou de l’objet (voir p. 204).","isvirulence":false,"virulence":"","description":"<p>La créature est capable, au cours d’une conversation, de faire tomber sa cible follement amoureuse d’elle si elle ne Résiste pas. La cible, une fois éprise de la créature, aura du mal à lui refuser quelque chose mais ne fera rien qui puisse directement nuire à ses jours et ira rarement contre son code moral.</p>\n<p>Pour la pousser à une telle extrémité, la créature devra obtenir une réussite critique ou réussir un test de Rhétorique ou Séduction de SD 15 minimum (au jugement du Docte) bénéficiant d’un bonus égal à la MR du Pouvoir.</p>"},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678214487456,"modifiedTime":1678303349644,"lastModifiedBy":"xGnwWyEbO2k89UsP"},"_id":"745Qz4iEGB7RnBPk","folder":null,"sort":0,"ownership":{"default":0,"xGnwWyEbO2k89UsP":3}}
|
||||||
{"name":"Sujet qui fâche","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"actif","masquetype":"masque","niveau":"normal","activation":"test de Féérie + Esprit.","istest":true,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"esp","duree":"","cibles":" une cible","effet":"fait deviner ce qui fâche quelqu’un ; fait perdre automatiquement un point de Sang-froid quand ce sujet est abordé et pousse à la colère.","portee":" à vue","resistance":"autre","resistanceautre":"psychique pour ne pas être percé à jour puis Fortitude + Sang-froid pour garder le contrôle contre un SD difficile (13 ou plus) fixé par le Docte.","isvirulence":false,"virulence":"","description":"<p><strong>Type de Pouvoir :</strong> actif.</p>\n<p><strong>Activation : </strong>test de Féérie + Esprit.</p>\n<p><strong>Cibles : </strong>une cible.</p>\n<p><strong>Effet :</strong> fait deviner ce qui fâche quelqu’un ; fait perdre automatiquement un point de Sang-froid quand ce sujet est abordé et pousse à la colère.</p>\n<p><strong>Portée :</strong> à vue.</p>\n<p><strong>Résistance : </strong>psychique pour ne pas être percé à jour puis Fortitude + Sang-froid pour garder le contrôle contre un SD difficile (13 ou plus) fixé par le Docte.</p>\n<p>Lorsqu’elle active ce Pouvoir, la créature peut, en observant son interlocuteur (il peut avoir un bonus d’après des éléments qu’il connaît), trouver instinctivement le sujet qui va le fâcher et, selon son caractère, le mettre en colère ou le faire fuir en rougissant. Ce peut être un complexe, une histoire louche, une phobie… Toutefois, elle n’est pas obligée d’en faire usage : le Docte doit juste lui communiquer le sujet susceptible de froisser la personne en question.<br>Si la victime Résiste, la créature n’est pas sûre du « sujet qui fâche ». En cas de succès du Pouvoir, si la créature se sert du Sujet qui fâche, la cible perd automatiquement un point de Sang-froid (effet non cumulable) et doit réussir à se maîtriser pour ne pas montrer sa colère ou sa gêne. Toutefois, la victime ne peut que maîtriser ses réactions apparentes (et bouillir intérieurement).</p>","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678313273572,"modifiedTime":1678314472645,"lastModifiedBy":"3jSVOAZZNxArxD7h"},"_id":"7BsyUzwv31oxldYQ","folder":null,"sort":0,"ownership":{"default":0,"3jSVOAZZNxArxD7h":3}}
|
{"name":"Sujet qui fâche","type":"pouvoir","img":"systems/fvtt-les-heritiers/assets/icons/power.webp","system":{"pouvoirtype":"actif","masquetype":"masque","niveau":"normal","activation":"test de Féérie + Esprit.","istest":true,"feeriemasque":"feerie","zoneffet":"","testautre":"","carac":"esp","duree":"","cibles":" une cible","effet":"fait deviner ce qui fâche quelqu’un ; fait perdre automatiquement un point de Sang-froid quand ce sujet est abordé et pousse à la colère.","portee":" à vue","resistance":"autre","resistanceautre":"psychique pour ne pas être percé à jour puis Fortitude + Sang-froid pour garder le contrôle contre un SD difficile (13 ou plus) fixé par le Docte.","isvirulence":false,"virulence":"","description":"<p><strong>Type de Pouvoir :</strong> actif.</p>\n<p><strong>Activation : </strong>test de Féérie + Esprit.</p>\n<p><strong>Cibles : </strong>une cible.</p>\n<p><strong>Effet :</strong> fait deviner ce qui fâche quelqu’un ; fait perdre automatiquement un point de Sang-froid quand ce sujet est abordé et pousse à la colère.</p>\n<p><strong>Portée :</strong> à vue.</p>\n<p><strong>Résistance : </strong>psychique pour ne pas être percé à jour puis Fortitude + Sang-froid pour garder le contrôle contre un SD difficile (13 ou plus) fixé par le Docte.</p>\n<p>Lorsqu’elle active ce Pouvoir, la créature peut, en observant son interlocuteur (il peut avoir un bonus d’après des éléments qu’il connaît), trouver instinctivement le sujet qui va le fâcher et, selon son caractère, le mettre en colère ou le faire fuir en rougissant. Ce peut être un complexe, une histoire louche, une phobie… Toutefois, elle n’est pas obligée d’en faire usage : le Docte doit juste lui communiquer le sujet susceptible de froisser la personne en question.<br>Si la victime Résiste, la créature n’est pas sûre du « sujet qui fâche ». En cas de succès du Pouvoir, si la créature se sert du Sujet qui fâche, la cible perd automatiquement un point de Sang-froid (effet non cumulable) et doit réussir à se maîtriser pour ne pas montrer sa colère ou sa gêne. Toutefois, la victime ne peut que maîtriser ses réactions apparentes (et bouillir intérieurement).</p>","zoneeffet":""},"effects":[],"flags":{},"_stats":{"systemId":"fvtt-les-heritiers","systemVersion":"10.0.18","coreVersion":"10.291","createdTime":1678313273572,"modifiedTime":1678314472645,"lastModifiedBy":"3jSVOAZZNxArxD7h"},"_id":"7BsyUzwv31oxldYQ","folder":null,"sort":0,"ownership":{"default":0,"3jSVOAZZNxArxD7h":3}}
|
||||||
|
|
BIN
packs/pouvoirs/000106.ldb
Normal file
BIN
packs/pouvoirs/000106.ldb
Normal file
Binary file not shown.
0
packs/pouvoirs/000109.log
Normal file
0
packs/pouvoirs/000109.log
Normal file
1
packs/pouvoirs/CURRENT
Normal file
1
packs/pouvoirs/CURRENT
Normal file
|
@ -0,0 +1 @@
|
||||||
|
MANIFEST-000107
|
0
packs/pouvoirs/LOCK
Normal file
0
packs/pouvoirs/LOCK
Normal file
8
packs/pouvoirs/LOG
Normal file
8
packs/pouvoirs/LOG
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
2024/05/23-14:51:24.013125 7f7a30c006c0 Recovering log #104
|
||||||
|
2024/05/23-14:51:24.022843 7f7a30c006c0 Delete type=3 #102
|
||||||
|
2024/05/23-14:51:24.022897 7f7a30c006c0 Delete type=0 #104
|
||||||
|
2024/05/23-15:00:04.385412 7f7a2b8006c0 Level-0 table #110: started
|
||||||
|
2024/05/23-15:00:04.385430 7f7a2b8006c0 Level-0 table #110: 0 bytes OK
|
||||||
|
2024/05/23-15:00:04.391306 7f7a2b8006c0 Delete type=0 #108
|
||||||
|
2024/05/23-15:00:04.405247 7f7a2b8006c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-15:00:04.405313 7f7a2b8006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
15
packs/pouvoirs/LOG.old
Normal file
15
packs/pouvoirs/LOG.old
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
2024/05/23-10:57:45.639116 7f80474006c0 Recovering log #100
|
||||||
|
2024/05/23-10:57:45.650216 7f80474006c0 Delete type=3 #98
|
||||||
|
2024/05/23-10:57:45.650332 7f80474006c0 Delete type=0 #100
|
||||||
|
2024/05/23-11:25:01.429060 7f803fe006c0 Level-0 table #105: started
|
||||||
|
2024/05/23-11:25:01.434691 7f803fe006c0 Level-0 table #105: 278813 bytes OK
|
||||||
|
2024/05/23-11:25:01.442092 7f803fe006c0 Delete type=0 #103
|
||||||
|
2024/05/23-11:25:01.442475 7f803fe006c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-11:25:01.454285 7f803fe006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at '!items!zON0h5SjFyANjPnA' @ 270 : 1
|
||||||
|
2024/05/23-11:25:01.454301 7f803fe006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/05/23-11:25:01.460432 7f803fe006c0 Generated table #106@1: 135 keys, 278813 bytes
|
||||||
|
2024/05/23-11:25:01.460474 7f803fe006c0 Compacted 1@1 + 1@2 files => 278813 bytes
|
||||||
|
2024/05/23-11:25:01.466560 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/05/23-11:25:01.466676 7f803fe006c0 Delete type=2 #5
|
||||||
|
2024/05/23-11:25:01.466841 7f803fe006c0 Delete type=2 #105
|
||||||
|
2024/05/23-11:25:01.488770 7f803fe006c0 Manual compaction at level-1 from '!items!zON0h5SjFyANjPnA' @ 270 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
BIN
packs/pouvoirs/MANIFEST-000107
Normal file
BIN
packs/pouvoirs/MANIFEST-000107
Normal file
Binary file not shown.
0
packs/profils/000108.log
Normal file
0
packs/profils/000108.log
Normal file
1
packs/profils/CURRENT
Normal file
1
packs/profils/CURRENT
Normal file
|
@ -0,0 +1 @@
|
||||||
|
MANIFEST-000106
|
0
packs/profils/LOCK
Normal file
0
packs/profils/LOCK
Normal file
7
packs/profils/LOG
Normal file
7
packs/profils/LOG
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
2024/05/23-14:51:24.039438 7f7a30c006c0 Recovering log #104
|
||||||
|
2024/05/23-14:51:24.050533 7f7a30c006c0 Delete type=3 #102
|
||||||
|
2024/05/23-14:51:24.050611 7f7a30c006c0 Delete type=0 #104
|
||||||
|
2024/05/23-15:00:04.378166 7f7a2b8006c0 Level-0 table #109: started
|
||||||
|
2024/05/23-15:00:04.378221 7f7a2b8006c0 Level-0 table #109: 0 bytes OK
|
||||||
|
2024/05/23-15:00:04.385336 7f7a2b8006c0 Delete type=0 #107
|
||||||
|
2024/05/23-15:00:04.405233 7f7a2b8006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
7
packs/profils/LOG.old
Normal file
7
packs/profils/LOG.old
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
2024/05/23-10:57:45.671074 7f80460006c0 Recovering log #100
|
||||||
|
2024/05/23-10:57:45.681323 7f80460006c0 Delete type=3 #98
|
||||||
|
2024/05/23-10:57:45.681382 7f80460006c0 Delete type=0 #100
|
||||||
|
2024/05/23-11:25:01.496104 7f803fe006c0 Level-0 table #105: started
|
||||||
|
2024/05/23-11:25:01.496136 7f803fe006c0 Level-0 table #105: 0 bytes OK
|
||||||
|
2024/05/23-11:25:01.502167 7f803fe006c0 Delete type=0 #103
|
||||||
|
2024/05/23-11:25:01.524678 7f803fe006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
BIN
packs/profils/MANIFEST-000106
Normal file
BIN
packs/profils/MANIFEST-000106
Normal file
Binary file not shown.
BIN
packs/scenes/000074.ldb
Normal file
BIN
packs/scenes/000074.ldb
Normal file
Binary file not shown.
0
packs/scenes/000077.log
Normal file
0
packs/scenes/000077.log
Normal file
1
packs/scenes/CURRENT
Normal file
1
packs/scenes/CURRENT
Normal file
|
@ -0,0 +1 @@
|
||||||
|
MANIFEST-000075
|
0
packs/scenes/LOCK
Normal file
0
packs/scenes/LOCK
Normal file
8
packs/scenes/LOG
Normal file
8
packs/scenes/LOG
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
2024/05/23-14:51:24.052512 7f7a316006c0 Recovering log #72
|
||||||
|
2024/05/23-14:51:24.102351 7f7a316006c0 Delete type=3 #70
|
||||||
|
2024/05/23-14:51:24.102451 7f7a316006c0 Delete type=0 #72
|
||||||
|
2024/05/23-15:00:04.412618 7f7a2b8006c0 Level-0 table #78: started
|
||||||
|
2024/05/23-15:00:04.412676 7f7a2b8006c0 Level-0 table #78: 0 bytes OK
|
||||||
|
2024/05/23-15:00:04.419314 7f7a2b8006c0 Delete type=0 #76
|
||||||
|
2024/05/23-15:00:04.419478 7f7a2b8006c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-15:00:04.419505 7f7a2b8006c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
15
packs/scenes/LOG.old
Normal file
15
packs/scenes/LOG.old
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
2024/05/23-10:57:45.683789 7f80456006c0 Recovering log #68
|
||||||
|
2024/05/23-10:57:45.693418 7f80456006c0 Delete type=3 #66
|
||||||
|
2024/05/23-10:57:45.693474 7f80456006c0 Delete type=0 #68
|
||||||
|
2024/05/23-11:25:01.514263 7f803fe006c0 Level-0 table #73: started
|
||||||
|
2024/05/23-11:25:01.517780 7f803fe006c0 Level-0 table #73: 3022 bytes OK
|
||||||
|
2024/05/23-11:25:01.524517 7f803fe006c0 Delete type=0 #71
|
||||||
|
2024/05/23-11:25:01.524699 7f803fe006c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||||
|
2024/05/23-11:25:01.524729 7f803fe006c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at '!scenes!ypDutqjqZcr7lx6I' @ 8 : 1
|
||||||
|
2024/05/23-11:25:01.524738 7f803fe006c0 Compacting 1@1 + 1@2 files
|
||||||
|
2024/05/23-11:25:01.528936 7f803fe006c0 Generated table #74@1: 4 keys, 3022 bytes
|
||||||
|
2024/05/23-11:25:01.528972 7f803fe006c0 Compacted 1@1 + 1@2 files => 3022 bytes
|
||||||
|
2024/05/23-11:25:01.535109 7f803fe006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2024/05/23-11:25:01.535211 7f803fe006c0 Delete type=2 #5
|
||||||
|
2024/05/23-11:25:01.535345 7f803fe006c0 Delete type=2 #73
|
||||||
|
2024/05/23-11:25:01.558900 7f803fe006c0 Manual compaction at level-1 from '!scenes!ypDutqjqZcr7lx6I' @ 8 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
BIN
packs/scenes/MANIFEST-000075
Normal file
BIN
packs/scenes/MANIFEST-000075
Normal file
Binary file not shown.
|
@ -78,9 +78,7 @@
|
||||||
.window-app input, .fvtt-les-heritiers .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
|
.window-app input, .fvtt-les-heritiers .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
}
|
}
|
||||||
.fvtt-les-heritiers .sheet-header select option {
|
|
||||||
background-color: rgb(68, 25, 25);
|
|
||||||
}
|
|
||||||
.fvtt-les-heritiers .sheet-header input, .fvtt-les-heritiers .sheet-header select {
|
.fvtt-les-heritiers .sheet-header input, .fvtt-les-heritiers .sheet-header select {
|
||||||
color: rgb(41, 38, 38);
|
color: rgb(41, 38, 38);
|
||||||
}
|
}
|
||||||
|
@ -88,6 +86,13 @@
|
||||||
background: rgba(0,0,0,0.75);
|
background: rgba(0,0,0,0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.page-heading {
|
||||||
|
color: #151c1f;
|
||||||
|
}
|
||||||
|
.heading-link {
|
||||||
|
color: #151c1f;
|
||||||
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content {
|
.window-app.sheet .window-content {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
@ -438,7 +443,7 @@ table {border: 1px solid #7a7971;}
|
||||||
background-repeat: repeat;
|
background-repeat: repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header input[type="number"], .window-app.sheet .window-content .sheet-header input[type="password"], .window-app.sheet .window-content .sheet-header input[type="date"], .window-app.sheet .window-content .sheet-header input[type="time"] {
|
.window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header select, .window-app.sheet .window-content .sheet-header input[type="number"], .window-app.sheet .window-content .sheet-header input[type="password"], .window-app.sheet .window-content .sheet-header input[type="date"], .window-app.sheet .window-content .sheet-header input[type="time"] {
|
||||||
/*color: rgba(36, 37, 37, 0.75);*/
|
/*color: rgba(36, 37, 37, 0.75);*/
|
||||||
/*background: rgba(255, 255, 255, 0.05);*/
|
/*background: rgba(255, 255, 255, 0.05);*/
|
||||||
/*border: 2px saddlebrown;*/
|
/*border: 2px saddlebrown;*/
|
||||||
|
@ -568,6 +573,7 @@ ul, li {
|
||||||
|
|
||||||
.specialisation-label {
|
.specialisation-label {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|
||||||
.carac-label,
|
.carac-label,
|
||||||
|
@ -653,6 +659,9 @@ ul, li {
|
||||||
padding-left: 0.25rem;
|
padding-left: 0.25rem;
|
||||||
margin-right: 0.25rem;
|
margin-right: 0.25rem;
|
||||||
}
|
}
|
||||||
|
.specialisarion-margin {
|
||||||
|
margin-left: 1.5rem;
|
||||||
|
}
|
||||||
.short-label {
|
.short-label {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
}
|
}
|
||||||
|
@ -1015,8 +1024,6 @@ 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;
|
||||||
|
@ -1024,23 +1031,6 @@ 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 */
|
||||||
|
|
||||||
|
@ -1209,7 +1199,17 @@ 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,11 +1233,25 @@ ul, li {
|
||||||
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;
|
||||||
|
|
145
system.json
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": "10.0.23",
|
"version": "12.0.1",
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "Uberwald/LeRatierBretonnien",
|
"name": "Uberwald/LeRatierBretonnien",
|
||||||
|
@ -15,11 +15,13 @@
|
||||||
"esmodules": [
|
"esmodules": [
|
||||||
"modules/heritiers-main.js"
|
"modules/heritiers-main.js"
|
||||||
],
|
],
|
||||||
"gridDistance": 5,
|
"grid": {
|
||||||
"gridUnits": "m",
|
"distance": 5,
|
||||||
|
"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-10.0.23.zip",
|
"download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-12.0.1.zip",
|
||||||
"languages": [
|
"languages": [
|
||||||
{
|
{
|
||||||
"lang": "fr",
|
"lang": "fr",
|
||||||
|
@ -28,87 +30,163 @@
|
||||||
"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.db",
|
"path": "packs/competences",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"private": false,
|
"flags": {},
|
||||||
"flags": {}
|
"ownership": {
|
||||||
|
"PLAYER": "OBSERVER",
|
||||||
|
"ASSISTANT": "OWNER"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Avantages",
|
"label": "Avantages",
|
||||||
"name": "avantages",
|
"name": "avantages",
|
||||||
"path": "packs/avantages.db",
|
"path": "packs/avantages",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"private": false,
|
"flags": {},
|
||||||
"flags": {}
|
"ownership": {
|
||||||
|
"PLAYER": "OBSERVER",
|
||||||
|
"ASSISTANT": "OWNER"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Désavantages",
|
"label": "Désavantages",
|
||||||
"name": "desavantages",
|
"name": "desavantages",
|
||||||
"path": "packs/desavantages.db",
|
"path": "packs/desavantages",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"private": false,
|
"flags": {},
|
||||||
"flags": {}
|
"ownership": {
|
||||||
|
"PLAYER": "OBSERVER",
|
||||||
|
"ASSISTANT": "OWNER"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Capacités Naturelles",
|
"label": "Capacités Naturelles",
|
||||||
"name": "capacites",
|
"name": "capacites",
|
||||||
"path": "packs/capacites.db",
|
"path": "packs/capacites",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"private": false,
|
"flags": {},
|
||||||
"flags": {}
|
"ownership": {
|
||||||
|
"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.db",
|
"path": "packs/atouts-feeriques",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"private": false,
|
"flags": {},
|
||||||
"flags": {}
|
"ownership": {
|
||||||
|
"PLAYER": "OBSERVER",
|
||||||
|
"ASSISTANT": "OWNER"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Fées",
|
"label": "Fées",
|
||||||
"name": "archetypes-fees",
|
"name": "archetypes-fees",
|
||||||
"path": "packs/archetypes-fees.db",
|
"path": "packs/archetypes-fees",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"private": false,
|
"flags": {},
|
||||||
"flags": {}
|
"ownership": {
|
||||||
|
"PLAYER": "OBSERVER",
|
||||||
|
"ASSISTANT": "OWNER"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Pouvoirs",
|
"label": "Pouvoirs",
|
||||||
"name": "pouvoirs",
|
"name": "pouvoirs",
|
||||||
"path": "packs/pouvoirs.db",
|
"path": "packs/pouvoirs",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"private": false,
|
"flags": {},
|
||||||
"flags": {}
|
"ownership": {
|
||||||
|
"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.db",
|
"path": "packs/armes-et-protection",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"private": false,
|
"flags": {},
|
||||||
"flags": {}
|
"ownership": {
|
||||||
|
"PLAYER": "OBSERVER",
|
||||||
|
"ASSISTANT": "OWNER"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Profils",
|
"label": "Profils",
|
||||||
"name": "profils",
|
"name": "profils",
|
||||||
"path": "packs/profils.db",
|
"path": "packs/profils",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"private": false,
|
"flags": {},
|
||||||
"flags": {}
|
"ownership": {
|
||||||
|
"PLAYER": "OBSERVER",
|
||||||
|
"ASSISTANT": "OWNER"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Scene",
|
||||||
|
"label": "Scènes",
|
||||||
|
"name": "scenes",
|
||||||
|
"path": "packs/scenes",
|
||||||
|
"system": "fvtt-les-heritiers",
|
||||||
|
"flags": {},
|
||||||
|
"ownership": {
|
||||||
|
"PLAYER": "OBSERVER",
|
||||||
|
"ASSISTANT": "OWNER"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"primaryTokenAttribute": "sante.vigueur",
|
"primaryTokenAttribute": "sante.vigueur",
|
||||||
|
@ -121,8 +199,7 @@
|
||||||
"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": "10",
|
"minimum": "11",
|
||||||
"verified": "10",
|
"verified": "12"
|
||||||
"maximum": "10"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,7 +2,7 @@
|
||||||
"Actor": {
|
"Actor": {
|
||||||
"types": [
|
"types": [
|
||||||
"personnage",
|
"personnage",
|
||||||
"creature"
|
"pnj"
|
||||||
],
|
],
|
||||||
"templates": {
|
"templates": {
|
||||||
"biodata": {
|
"biodata": {
|
||||||
|
@ -36,6 +36,7 @@
|
||||||
"habitat": "",
|
"habitat": "",
|
||||||
"notes": "",
|
"notes": "",
|
||||||
"statut": "",
|
"statut": "",
|
||||||
|
"playernotes":"",
|
||||||
"gmnotes": ""
|
"gmnotes": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -115,20 +116,25 @@
|
||||||
"max": 1
|
"max": 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"statutmasque": "masque",
|
||||||
"rang": {
|
"rang": {
|
||||||
"tricherie": {
|
"tricherie": {
|
||||||
|
"label": "Tricherie",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 0
|
"max": 0
|
||||||
},
|
},
|
||||||
"feerie": {
|
"feerie": {
|
||||||
|
"label": "Féerie",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 0
|
"max": 0
|
||||||
},
|
},
|
||||||
"masque": {
|
"masque": {
|
||||||
|
"label": "Masque",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 0
|
"max": 0
|
||||||
},
|
},
|
||||||
"heritage": {
|
"heritage": {
|
||||||
|
"label": "Héritage",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 0,
|
"max": 0,
|
||||||
"scenarios": 0
|
"scenarios": 0
|
||||||
|
@ -136,36 +142,43 @@
|
||||||
},
|
},
|
||||||
"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
|
||||||
}
|
}
|
||||||
|
@ -180,6 +193,8 @@
|
||||||
"demasquee": 0
|
"demasquee": 0
|
||||||
},
|
},
|
||||||
"parade": {
|
"parade": {
|
||||||
|
"masquee": 0,
|
||||||
|
"demasquee": 0,
|
||||||
"value": 0
|
"value": 0
|
||||||
},
|
},
|
||||||
"resistancephysique": {
|
"resistancephysique": {
|
||||||
|
@ -219,6 +234,12 @@
|
||||||
"biodata",
|
"biodata",
|
||||||
"core"
|
"core"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"pnj": {
|
||||||
|
"templates": [
|
||||||
|
"biodata",
|
||||||
|
"core"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Item": {
|
"Item": {
|
||||||
|
@ -234,19 +255,19 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"types": [
|
"types": [
|
||||||
"fee",
|
|
||||||
"avantage",
|
|
||||||
"desavantage",
|
|
||||||
"capacitenaturelle",
|
|
||||||
"pouvoir",
|
|
||||||
"atoutfeerique",
|
|
||||||
"competence",
|
|
||||||
"arme",
|
|
||||||
"protection",
|
|
||||||
"equipement",
|
|
||||||
"accessoire",
|
"accessoire",
|
||||||
|
"arme",
|
||||||
|
"atoutfeerique",
|
||||||
|
"avantage",
|
||||||
|
"capacitenaturelle",
|
||||||
|
"competence",
|
||||||
"contact",
|
"contact",
|
||||||
"profil"
|
"desavantage",
|
||||||
|
"equipement",
|
||||||
|
"fee",
|
||||||
|
"pouvoir",
|
||||||
|
"profil",
|
||||||
|
"protection"
|
||||||
],
|
],
|
||||||
"profil": {
|
"profil": {
|
||||||
"profiltype": "majeur",
|
"profiltype": "majeur",
|
||||||
|
@ -302,6 +323,7 @@
|
||||||
"portee": "",
|
"portee": "",
|
||||||
"resistance": "",
|
"resistance": "",
|
||||||
"resistanceautre":"",
|
"resistanceautre":"",
|
||||||
|
"pointsusagecourant": -1,
|
||||||
"isvirulence": false,
|
"isvirulence": false,
|
||||||
"virulence":"",
|
"virulence":"",
|
||||||
"description": ""
|
"description": ""
|
||||||
|
|
485
templates/actor-pnj-sheet.html
Normal file
485
templates/actor-pnj-sheet.html
Normal file
|
@ -0,0 +1,485 @@
|
||||||
|
<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,7 +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"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
<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"
|
||||||
|
@ -30,7 +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"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
<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"
|
||||||
|
@ -41,14 +41,20 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<label class="item-field-label-short">PV</label>
|
<label class="item-field-label-short">PV</label>
|
||||||
<input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}" data-dtype="Number" />
|
||||||
<input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" disabled data-dtype="Number" />
|
||||||
|
<input type="text" class="item-field-label-short" name="system.pv.mod" value="{{system.pv.mod}}" data-dtype="Number" />
|
||||||
<label class="item-field-label-short">Malus</label>
|
<label class="item-field-label-short">Malus</label>
|
||||||
<input type="text" class="item-field-label-short" value="{{pvMalus}}" data-dtype="Number" disabled />
|
<input type="text" class="item-field-label-short" value="{{pvMalus.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>
|
<span> </span>
|
||||||
<label class="item-field-label-short">Tricherie</label>
|
<label class="item-field-label-short">Tricherie</label>
|
||||||
<input type="text" class="item-field-label-short" name="system.rang.tricherie.value" value="{{system.rang.tricherie.value}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.rang.tricherie.value" value="{{system.rang.tricherie.value}}" data-dtype="Number" />
|
||||||
|
@ -78,42 +84,21 @@
|
||||||
|
|
||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
|
|
||||||
{{#each utileSkills as |skillList keyProfil|}}
|
<div class="grid-2col">
|
||||||
<div class="sheet-box color-bg-archetype">
|
|
||||||
<ul class="item-list alternate-list">
|
|
||||||
<li class="item flexrow">
|
|
||||||
<span class="item-field-label-long">
|
|
||||||
<h3><label class="items-title-text">{{upperFirst keyProfil}}</label></h3>
|
|
||||||
</span>
|
|
||||||
<span class="item-field-label-short">
|
|
||||||
<label class="short-label">Niveau</label>
|
|
||||||
</span>
|
|
||||||
<div class="item-filler"> </div>
|
|
||||||
</li>
|
|
||||||
{{#each skillList as |skill key|}}
|
|
||||||
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
|
|
||||||
<span class="item-field-label-long roll-style"><a class="roll-competence item-field-label-short"
|
|
||||||
data-attr-key="tochoose">{{skill.name}}</a></span>
|
|
||||||
<select class="item-field-label-short edit-item-data" type="text"
|
|
||||||
data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
|
|
||||||
{{#select skill.system.niveau}}
|
|
||||||
{{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<input type="checkbox" class="item-field-label-short edit-item-data" data-item-field="predilection" {{checked skill.system.predilection}}/>
|
<div>
|
||||||
|
{{#each utileSkillsPhysical as |skillDef keyProfil|}}
|
||||||
<span class="item-field-label-long2">{{skill.specList}}</span>
|
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil config=config}}
|
||||||
|
|
||||||
<div class="item-controls item-controls-fixed">
|
|
||||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
{{#each utileSkillsMental as |skillDef keyProfil|}}
|
||||||
|
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil 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">
|
||||||
|
@ -125,22 +110,24 @@
|
||||||
<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 roll-style"><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" type="text"
|
<select class="item-field-label-short edit-item-data" type="text"
|
||||||
data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
|
data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
|
||||||
{{#select skill.system.niveau}}
|
{{selectOptions @root.config.listNiveau selected=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="Edit Item"><i class="fas fa-edit"></i></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="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
@ -164,37 +151,30 @@
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.masquee" value="{{system.combat.esquive.masquee}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.combat.esquive.masquee" value="{{system.combat.esquive.masquee}}" data-dtype="Number" />
|
||||||
<label class="item-field-label-medium">Démasquée</label>
|
<label class="item-field-label-medium">Démasquée</label>
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee" value="{{system.combat.esquive.demasquee}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee" value="{{system.combat.esquive.demasquee}}" data-dtype="Number" />
|
||||||
|
<label class="item-field-label-short"> </label>
|
||||||
<label class="item-field-label-medium"><strong>Parade</strong></label>
|
<label class="item-field-label-medium"><strong>Parade</strong></label>
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.parade.value" value="{{system.combat.parade.value}}" data-dtype="Number" />
|
<label class="item-field-label-medium">Masquée</label>
|
||||||
|
<input type="text" class="item-field-label-short" name="system.combat.parade.masquee" value="{{system.combat.parade.masquee}}" data-dtype="Number" />
|
||||||
|
<label class="item-field-label-medium">Démasquée</label>
|
||||||
|
<input type="text" class="item-field-label-short" name="system.combat.parade.demasquee" value="{{system.combat.parade.demasquee}}" data-dtype="Number" />
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow list-item items-title-bg">
|
<li class="item flexrow list-item items-title-bg">
|
||||||
<label class="item-field-label-long">Rés. physique</label>
|
<label class="item-field-label-long">Rés. physique</label>
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.resistancephysique.value" value="{{system.combat.resistancephysique.value}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.combat.resistancephysique.value" value="{{system.combat.resistancephysique.value}}" data-dtype="Number" />
|
||||||
|
<label class="item-field-label-short"> </label>
|
||||||
<label class="item-field-label-long">Rés. psychique</label>
|
<label class="item-field-label-long">Rés. psychique</label>
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.resistancepsychique.value" value="{{system.combat.resistancepsychique.value}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.combat.resistancepsychique.value" value="{{system.combat.resistancepsychique.value}}" data-dtype="Number" />
|
||||||
|
<label class="item-field-label-short"> </label>
|
||||||
<label class="item-field-label-medium">Protection : </label>
|
<label class="item-field-label-medium">Protection : </label>
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.protection.value" value="{{system.combat.protection.value}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.combat.protection.value" value="{{system.combat.protection.value}}" data-dtype="Number" />
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow list-item items-title-bg">
|
<li class="item flexrow list-item items-title-bg">
|
||||||
<label class="item-field-label-long">Effets secondaires</label>
|
<label class="item-field-label-long">Effets secondaires</label>
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.effetssecondaires" value="{{system.combat.effetssecondaires}}" data-dtype="String" />
|
<input type="text" class="item-field-label-short" name="system.combat.effetssecondaires" value="{{system.combat.effetssecondaires}}" data-dtype="String" />
|
||||||
|
<label class="item-field-label-short"> </label>
|
||||||
<label class="item-field-label-long">Dissimulation : </label>
|
<label class="item-field-label-long">Dissimulation : </label>
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.dissimulation.value" value="{{system.combat.dissimulation.value}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.combat.dissimulation.value" value="{{system.combat.dissimulation.value}}" data-dtype="Number" />
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow list-item items-title-bg">
|
|
||||||
<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>
|
</ul>
|
||||||
|
|
||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
|
@ -206,10 +186,10 @@
|
||||||
<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">Attaque</label>
|
<label class="short-label">Dégats</label>
|
||||||
</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>
|
||||||
<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,20 +202,33 @@
|
||||||
<img class="item-name-img" src="{{arme.img}}" />
|
<img class="item-name-img" src="{{arme.img}}" />
|
||||||
<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">
|
|
||||||
<button class="roll-attaque-arme button-sheet-roll">Attaquer</button>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span class="item-field-label-short">
|
<span class="item-field-label-short">
|
||||||
{{arme.system.degats}}
|
{{arme.system.degats}}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
|
<span class="item-field-label-short">
|
||||||
|
<button class="roll-attaque-arme button-sheet-roll">Attaque</button>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<span class="item-field-label-short">
|
||||||
|
<button class="roll-assomer-arme button-sheet-roll">Assomer</button>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
{{#if arme.system.isMelee}}
|
||||||
|
<span class="item-field-label-short">
|
||||||
|
<button class="roll-attaque-charge-arme button-sheet-roll">Charger</button>
|
||||||
|
</span>
|
||||||
|
<span class="item-field-label-short">
|
||||||
|
<button class="roll-attaque-brutale-arme button-sheet-roll button-sheet-roll-long1">Attaque brutale</button>
|
||||||
|
</span>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed">
|
||||||
<a class="item-control item-equip" title="Worn">{{#if arme.system.equipped}}<i
|
<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>
|
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-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
@ -253,7 +246,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="arme" title="Ajouter une arme"><i
|
<a class="item-control item-add" data-type="protection" title="Ajouter une protection"><i
|
||||||
class="fas fa-plus"></i></a>
|
class="fas fa-plus"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
@ -266,8 +259,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="Edit Item"><i class="fas fa-edit"></i></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="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
@ -286,8 +279,8 @@
|
||||||
<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="Edit Item"><i class="fas fa-edit"></i></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="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</div>
|
</div>
|
||||||
|
@ -295,13 +288,15 @@
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<ul>
|
<ul>
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="item-field-label-medium">Féerie</label>
|
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="feerie">Féerie</a></label>
|
||||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.value" value="{{system.rang.feerie.value}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.rang.feerie.value" value="{{system.rang.feerie.value}}" data-dtype="Number" />
|
||||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.max" value="{{system.rang.feerie.max}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.rang.feerie.max" value="{{system.rang.feerie.max}}" data-dtype="Number" />
|
||||||
<span class="item-field-label-long"></span>
|
<span class="item-field-label-medium"></span>
|
||||||
<label class="item-field-label-medium">Masque</label>
|
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="masque">Masque</a></label>
|
||||||
<input type="text" class="item-field-label-short" name="system.rang.masque.value" value="{{system.rang.masque.value}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.rang.masque.value" value="{{system.rang.masque.value}}" data-dtype="Number" />
|
||||||
<input type="text" class="item-field-label-short" name="system.rang.masque.max" value="{{system.rang.masque.max}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.rang.masque.max" value="{{system.rang.masque.max}}" data-dtype="Number" />
|
||||||
|
<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>
|
||||||
|
@ -316,6 +311,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-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|}}
|
||||||
|
@ -324,8 +321,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="Edit Item"><i class="fas fa-edit"></i></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="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
@ -340,6 +337,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-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|}}
|
||||||
|
@ -348,8 +347,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="Edit Item"><i class="fas fa-edit"></i></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="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
@ -364,6 +363,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-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|}}
|
||||||
|
@ -372,8 +373,8 @@
|
||||||
<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="Edit Item"><i class="fas fa-edit"></i></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="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
@ -395,26 +396,28 @@
|
||||||
<span class="item-field-label-medium">
|
<span class="item-field-label-medium">
|
||||||
<label class="short-label">Niveau</label>
|
<label class="short-label">Niveau</label>
|
||||||
</span>
|
</span>
|
||||||
|
<span class="item-field-label-medium">
|
||||||
|
<label class="short-label">Usage</label>
|
||||||
|
</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="pouvoir" title="Ajouter un pouvoir"><i
|
||||||
|
class="fas fa-plus"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{#each pouvoirs as |pouvoir key|}}
|
{{#each pouvoirs as |pouvoir key|}}
|
||||||
<li class="item flexrow " data-item-id="{{pouvoir._id}}" data-item-type="pouvoir">
|
<li class="item flexrow " data-item-id="{{pouvoir._id}}" data-item-type="pouvoir">
|
||||||
<img class="item-name-img" src="{{pouvoir.img}}" />
|
<img class="item-name-img" src="{{pouvoir.img}}" />
|
||||||
{{#if pouvoir.system.istest}}
|
|
||||||
<span class="item-field-label-long2 roll-style"><a class="roll-pouvoir">{{pouvoir.name}}</a></span>
|
<span class="item-field-label-long2 roll-style"><a class="roll-pouvoir">{{pouvoir.name}}</a></span>
|
||||||
{{else}}
|
|
||||||
<span class="item-field-label-long2">{{pouvoir.name}}</span>
|
|
||||||
{{/if}}
|
|
||||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.masquetype}}</span>
|
<span class="item-field-label-medium">{{upperFirst pouvoir.system.masquetype}}</span>
|
||||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.pouvoirtype}}</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">{{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-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<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-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
@ -430,6 +433,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-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|}}
|
||||||
|
@ -438,8 +443,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="Edit Item"><i class="fas fa-edit"></i></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="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
@ -461,9 +466,8 @@
|
||||||
<h3><label class="items-title-text">Equipements</label></h3>
|
<h3><label class="items-title-text">Equipements</label></h3>
|
||||||
</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="equipement" title="Créer un équipement"><i class="fas fa-plus"></i></a>
|
<a class="item-control item-add" data-type="equipement" title="Créer un équipement"><i class="fas fa-plus"></i></a>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{#each equipements as |equip key|}}
|
{{#each equipements as |equip key|}}
|
||||||
|
@ -472,8 +476,8 @@
|
||||||
<span class="item-field-label-long2">{{equip.name}}</span>
|
<span class="item-field-label-long2">{{equip.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="Edit Item"><i class="fas fa-edit"></i></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="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
@ -483,7 +487,20 @@
|
||||||
|
|
||||||
{{!-- Contact Tab --}}
|
{{!-- Contact Tab --}}
|
||||||
<div class="tab contact" data-group="primary" data-tab="contact">
|
<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|}}
|
{{#each contacts as |contactList idx|}}
|
||||||
<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">
|
||||||
|
@ -492,7 +509,8 @@
|
||||||
<h3><label class="items-title-text">{{contactList.label}}</label></h3>
|
<h3><label class="items-title-text">{{contactList.label}}</label></h3>
|
||||||
</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="contact" title="Créer un contact"><i class="fas fa-plus"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{#each contactList.list as |contact key|}}
|
{{#each contactList.list as |contact key|}}
|
||||||
|
@ -501,8 +519,8 @@
|
||||||
<span class="item-field-label-long2">{{contact.name}}</span>
|
<span class="item-field-label-long2">{{contact.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="Edit Item"><i class="fas fa-edit"></i></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="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
@ -535,8 +553,8 @@
|
||||||
<span class="item-field-label-medium">{{upperFirst profil.system.profiltype}}</span>
|
<span class="item-field-label-medium">{{upperFirst profil.system.profiltype}}</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="Edit Item"><i class="fas fa-edit"></i></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="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
@ -609,6 +627,10 @@
|
||||||
<input type="text" class="" name="system.experience.typetaille" value="{{system.experience.typetaille}}"
|
<input type="text" class="" name="system.experience.typetaille" value="{{system.experience.typetaille}}"
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
|
<li class="flexrow item">
|
||||||
|
<label class="generic-label">Points d'héritage</label>
|
||||||
|
<input type="text" class="" name="system.rang.heritage.value" value="{{system.rang.heritage.value}}" data-dtype="String" />
|
||||||
|
</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -625,8 +647,18 @@
|
||||||
<input type="text" class="" name="system.biodata.poidsdemasquee" value="{{system.biodata.poidsdemasquee}}"
|
<input type="text" class="" name="system.biodata.poidsdemasquee" value="{{system.biodata.poidsdemasquee}}"
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
|
<li class="item flexrow">
|
||||||
|
<label class="generic-label">XP</label>
|
||||||
|
<input type="text" class="" name="system.experience.value" value="{{system.experience.value}}"
|
||||||
|
data-dtype="String" />
|
||||||
|
</li>
|
||||||
|
<li class="item flexrow">
|
||||||
|
<label class="generic-label">XP pour tricher</label>
|
||||||
|
<input type="text" class="" name="system.experience.pourtricher" value="{{system.experience.pourtricher}}"
|
||||||
|
data-dtype="String" />
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -637,18 +669,28 @@
|
||||||
<div class="medium-editor item-text-long-line">
|
<div class="medium-editor item-text-long-line">
|
||||||
{{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
|
{{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<span>
|
||||||
|
<h3>Notes diverses</h3>
|
||||||
|
</span>
|
||||||
|
<div class="medium-editor item-text-long-line">
|
||||||
|
{{editor playernotes target="system.biodata.playernotes" button=true owner=owner editable=editable}}
|
||||||
|
</div>
|
||||||
|
|
||||||
<span>
|
<span>
|
||||||
<h3>Rêves étranges</h3>
|
<h3>Rêves étranges</h3>
|
||||||
</span>
|
</span>
|
||||||
<div class="medium-editor item-text-long-line">
|
<div class="medium-editor item-text-long-line">
|
||||||
{{editor revesetranges target="system.biodata.revesetranges" button=true owner=owner editable=editable}}
|
{{editor revesetranges target="system.biodata.revesetranges" button=true owner=owner editable=editable}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<span>
|
<span>
|
||||||
<h3>Secrets découverts</h3>
|
<h3>Secrets découverts</h3>
|
||||||
</span>
|
</span>
|
||||||
<div class="medium-editor item-text-long-line">
|
<div class="medium-editor item-text-long-line">
|
||||||
{{editor secretsdecouverts target="system.biodata.secretsdecouverts" button=true owner=owner editable=editable}}
|
{{editor secretsdecouverts target="system.biodata.secretsdecouverts" button=true owner=owner editable=editable}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<span>
|
<span>
|
||||||
<h3>Questions en suspens</h3>
|
<h3>Questions en suspens</h3>
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -18,11 +18,13 @@
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Arme : {{arme.name}} (+{{arme.system.totalDegats}})</li>
|
<li>Assomer {{defenderName}} en état de : {{etatAssommer}}</li>
|
||||||
<li>Dégats : {{finalResult}}</li>
|
|
||||||
{{#if targetVigueur}}
|
{{#if isSuccess}}
|
||||||
<li>Vigueur de la cible : {{targetVigueur}}</li>
|
<li>Marge : {{marge}}</li>
|
||||||
<li>Etats Combativité supplémentaires perdus (manuel): {{nbEtatPerdus}} </li>
|
<li>{{defenderName}} est assomé pour {{dureeAssommer}} minutes !</li>
|
||||||
|
{{else}}
|
||||||
|
<li>{{defenderName}} n'a pas été assomé et est conscient la tentative !</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
42
templates/chat-cc-result.html
Normal file
42
templates/chat-cc-result.html
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<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>
|
|
@ -20,6 +20,10 @@
|
||||||
<ul>
|
<ul>
|
||||||
<li class="heritiers-roll">Caractéristique : {{carac.label}} ({{carac.value}})</li>
|
<li class="heritiers-roll">Caractéristique : {{carac.label}} ({{carac.value}})</li>
|
||||||
|
|
||||||
|
{{#if rang}}
|
||||||
|
<li>{{rang.label}} : {{rang.value}}</li>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{#if competence}}
|
{{#if competence}}
|
||||||
<li>Compétence : {{competence.name}} ({{competence.system.niveau}})</li>
|
<li>Compétence : {{competence.name}} ({{competence.system.niveau}})</li>
|
||||||
{{#if useSpecialite}}
|
{{#if useSpecialite}}
|
||||||
|
@ -29,38 +33,59 @@
|
||||||
|
|
||||||
{{#if arme}}
|
{{#if arme}}
|
||||||
<li>Attaque avec : {{arme.name}}</li>
|
<li>Attaque avec : {{arme.name}}</li>
|
||||||
|
{{#if (eq mode "assommer")}}
|
||||||
|
<li>Attaque pour assommer</li>
|
||||||
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if pouvoir}}
|
{{#if pouvoir}}
|
||||||
<li>Pouvoir : {{pouvoir.name}}</li>
|
<li>Pouvoir : {{pouvoir.name}}</li>
|
||||||
<li>Effet : {{pouvoir.system.effet}}</li>
|
<li>Effet : {{pouvoir.system.effet}}</li>
|
||||||
|
<li>Points d'usage consommés : {{pouvoirPointsUsage}}</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<li>Formule : {{diceFormula}}</li>
|
{{#if forcedValue}}
|
||||||
<li>Résultat du dé : {{diceResult}} </li>
|
<li>Vous dépense 2 points de Tricherie et utilisé une face adjacente du dé !</li>
|
||||||
<li>Total : {{finalResult}} (Marge : {{marge}})</li>
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if noRoll}}
|
||||||
{{#if sdValue}}
|
|
||||||
{{#if isSuccess}}
|
|
||||||
<li class="chat-success">Succés...
|
|
||||||
{{#if arme}}
|
|
||||||
<li>Dégats : {{degatsArme}}</li>
|
|
||||||
{{/if}}
|
|
||||||
</li>
|
|
||||||
{{else}}
|
{{else}}
|
||||||
<li class="chat-failure">Echec...</li>
|
<li>Formule : {{diceFormula}}</li>
|
||||||
{{/if}}
|
<li>Résultat du dé : {{diceResult}} </li>
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if isCriticalSuccess}}
|
{{#if adjacentFaces}}
|
||||||
<li class="chat-success">Réussite Critique !!!</li>
|
<li>Faces Adjacentes :
|
||||||
{{#if arme}}
|
{{#each adjacentFaces as |value key|}}
|
||||||
<li>Vous pouvez augmenter les dégats de +2 ou bien bénéficier d'une Aubaine.</li>
|
<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 (gt sdValue "-1")}}
|
||||||
|
{{#if isSuccess}}
|
||||||
|
<li class="chat-success">Succès...
|
||||||
|
</li>
|
||||||
|
{{else}}
|
||||||
|
<li class="chat-failure">Echec...</li>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if isBrelan}}
|
||||||
|
<li class="chat-success">Brelan sur 3 dés !</li>
|
||||||
|
{{/if}}
|
||||||
|
{{#if isSuite}}
|
||||||
|
<li class="chat-success">Suite sur 3 dés !</li>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if isCriticalSuccess}}
|
||||||
|
<li class="chat-success">Réussite Critique !!!</li>
|
||||||
|
{{/if}}
|
||||||
|
{{#if isCriticalFailure}}
|
||||||
|
<li class="chat-failure">Echec Critique !!!</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
|
||||||
{{#if isCriticalFailure}}
|
|
||||||
<li class="chat-failure">Echec Critique !!!</li>
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -1,356 +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">
|
|
||||||
|
|
||||||
<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>
|
|
|
@ -16,11 +16,7 @@
|
||||||
<label class="item-field-label-long">Catégorie : </label>
|
<label class="item-field-label-long">Catégorie : </label>
|
||||||
<select class="item-field-label-long" type="text" name="system.categorie"
|
<select class="item-field-label-long" type="text" name="system.categorie"
|
||||||
value="{{system.categorie}}" data-dtype="string">
|
value="{{system.categorie}}" data-dtype="string">
|
||||||
{{#select system.categorie}}
|
{{selectOptions config.categorieArme selected=system.categorie}}
|
||||||
{{#each config.categorieArme as |categ key|}}
|
|
||||||
<option value="{{key}}">{{categ}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -28,11 +24,7 @@
|
||||||
<label class="item-field-label-long">Type : </label>
|
<label class="item-field-label-long">Type : </label>
|
||||||
<select class="item-field-label-long" type="text" name="system.armetype"
|
<select class="item-field-label-long" type="text" name="system.armetype"
|
||||||
value="{{system.armetype}}" data-dtype="string">
|
value="{{system.armetype}}" data-dtype="string">
|
||||||
{{#select system.armetype}}
|
{{selectOptions config.typeArme selected=system.armetype}}
|
||||||
{{#each config.typeArme as |type key|}}
|
|
||||||
<option value="{{key}}">{{type}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -74,22 +66,14 @@
|
||||||
<label class="generic-label item-field-label-long">Légalité : </label>
|
<label class="generic-label item-field-label-long">Légalité : </label>
|
||||||
<select class="item-field-label-long" type="text" name="system.legalite"
|
<select class="item-field-label-long" type="text" name="system.legalite"
|
||||||
value="{{system.legalite}}" data-dtype="string">
|
value="{{system.legalite}}" data-dtype="string">
|
||||||
{{#select system.legalite}}
|
{{selectOptions config.armeLegalite selected=system.legalite}}
|
||||||
{{#each config.armeLegalite as |legal key|}}
|
|
||||||
<option value="{{key}}">{{legal}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="generic-label item-field-label-long">Dissimulation : </label>
|
<label class="generic-label item-field-label-long">Dissimulation : </label>
|
||||||
<select class="item-field-label-long" type="text" name="system.dissimulation"
|
<select class="item-field-label-long" type="text" name="system.dissimulation"
|
||||||
value="{{system.dissimulation}}" data-dtype="string">
|
value="{{system.dissimulation}}" data-dtype="string">
|
||||||
{{#select system.dissimulation}}
|
{{selectOptions config.armeDissimulation selected=system.dissimulation}}
|
||||||
{{#each config.armeDissimulation as |diss key|}}
|
|
||||||
<option value="{{key}}">{{diss}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
|
|
|
@ -16,11 +16,7 @@
|
||||||
<label class="generic-label item-field-label-long2">Type </label>
|
<label class="generic-label item-field-label-long2">Type </label>
|
||||||
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
||||||
name="system.pouvoirtype" value="{{system.pouvoirtype}}" data-dtype="string">
|
name="system.pouvoirtype" value="{{system.pouvoirtype}}" data-dtype="string">
|
||||||
{{#select system.pouvoirtype}}
|
{{selectOptions config.typePouvoir selected=system.pouvoirtype}}
|
||||||
{{#each config.typePouvoir as |categ cKey|}}
|
|
||||||
<option value="{{cKey}}">{{categ}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -52,11 +48,7 @@
|
||||||
<label class="generic-label item-field-label-long2">Résistance</label>
|
<label class="generic-label item-field-label-long2">Résistance</label>
|
||||||
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
||||||
name="system.resistance" value="{{system.resistance}}" data-dtype="string">
|
name="system.resistance" value="{{system.resistance}}" data-dtype="string">
|
||||||
{{#select system.resistance}}
|
{{selectOptions config.resistancePouvoir selected=system.resistance}}
|
||||||
{{#each config.resistancePouvoir as |categ cKey|}}
|
|
||||||
<option value="{{cKey}}">{{categ}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
@ -16,11 +16,7 @@
|
||||||
<label class="generic-label item-field-label-long2">Catégorie </label>
|
<label class="generic-label item-field-label-long2">Catégorie </label>
|
||||||
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
||||||
name="system.categorie" value="{{system.categorie}}" data-dtype="string">
|
name="system.categorie" value="{{system.categorie}}" data-dtype="string">
|
||||||
{{#select system.categorie}}
|
{{selectOptions config.competenceCategorie selected=system.categorie}}
|
||||||
{{#each config.competenceCategorie as |categ cKey|}}
|
|
||||||
<option value="{{cKey}}">{{categ}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -28,11 +24,7 @@
|
||||||
<label class="generic-label item-field-label-long2">Profil </label>
|
<label class="generic-label item-field-label-long2">Profil </label>
|
||||||
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
||||||
name="system.profil" value="{{system.profil}}" data-dtype="string">
|
name="system.profil" value="{{system.profil}}" data-dtype="string">
|
||||||
{{#select system.profil}}
|
{{selectOptions config.competenceProfil selected=system.profil labelAttr="name"}}
|
||||||
{{#each config.competenceProfil as |profil pKey|}}
|
|
||||||
<option value="{{pKey}}">{{profil}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
@ -15,23 +15,14 @@
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="generic-label item-field-label-long">Type : </label>
|
<label class="generic-label item-field-label-long">Type : </label>
|
||||||
<select class="item-field-label-long" type="text" name="system.contacttype" value="{{system.contacttype}}" data-dtype="String">
|
<select class="item-field-label-long" type="text" name="system.contacttype" value="{{system.contacttype}}" data-dtype="String">
|
||||||
{{#select system.contacttype}}
|
{{selectOptions config.typeContact selected=system.contacttype}}
|
||||||
<option value="contact">Contact</option>
|
|
||||||
<option value="allie">Allié</option>
|
|
||||||
<option value="ennemi">Ennemis</option>
|
|
||||||
<option value="interet">Personne d'interêt</option>
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="generic-label item-field-label-long">Niveau : </label>
|
<label class="generic-label item-field-label-long">Niveau : </label>
|
||||||
<select class="item-field-label-long" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number">
|
<select class="item-field-label-long" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number">
|
||||||
{{#select system.niveau}}
|
{{selectOptions config.niveauContact selected=system.niveau}}
|
||||||
<option value="1">1</option>
|
|
||||||
<option value="2">2</option>
|
|
||||||
<option value="3">3</option>
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
@ -17,11 +17,7 @@
|
||||||
<label class="item-field-label-long">Type de féé</label>
|
<label class="item-field-label-long">Type de féé</label>
|
||||||
<select class="item-field-label-long" type="text" name="system.feetype"
|
<select class="item-field-label-long" type="text" name="system.feetype"
|
||||||
value="{{system.feetype}}" data-dtype="string">
|
value="{{system.feetype}}" data-dtype="string">
|
||||||
{{#select system.feetype}}
|
{{selectOptions config.typeFee selected=system.feetype}}
|
||||||
{{#each config.typeFee as |type key|}}
|
|
||||||
<option value="{{key}}">{{type}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
@ -16,11 +16,8 @@
|
||||||
<label class="generic-label item-field-label-long2">Masqué/Démasque </label>
|
<label class="generic-label item-field-label-long2">Masqué/Démasque </label>
|
||||||
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
||||||
name="system.masquetype" value="{{system.masquetype}}" data-dtype="string">
|
name="system.masquetype" value="{{system.masquetype}}" data-dtype="string">
|
||||||
{{#select system.masquetype}}
|
{{selectOptions config.masquePouvoir selected=system.masquetype}}
|
||||||
{{#each config.masquePouvoir as |categ cKey|}}
|
|
||||||
<option value="{{cKey}}">{{categ}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -28,11 +25,8 @@
|
||||||
<label class="generic-label item-field-label-long2">Type </label>
|
<label class="generic-label item-field-label-long2">Type </label>
|
||||||
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
||||||
name="system.pouvoirtype" value="{{system.pouvoirtype}}" data-dtype="string">
|
name="system.pouvoirtype" value="{{system.pouvoirtype}}" data-dtype="string">
|
||||||
{{#select system.pouvoirtype}}
|
{{selectOptions config.typePouvoir selected=system.pouvoirtype}}
|
||||||
{{#each config.typePouvoir as |categ cKey|}}
|
|
||||||
<option value="{{cKey}}">{{categ}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -40,11 +34,8 @@
|
||||||
<label class="generic-label item-field-label-long2">Niveau </label>
|
<label class="generic-label item-field-label-long2">Niveau </label>
|
||||||
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
||||||
name="system.niveau" value="{{system.niveau}}" data-dtype="string">
|
name="system.niveau" value="{{system.niveau}}" data-dtype="string">
|
||||||
{{#select system.niveau}}
|
{{selectOptions config.niveauPouvoir selected=system.niveau}}
|
||||||
{{#each config.niveauPouvoir as |categ cKey|}}
|
|
||||||
<option value="{{cKey}}">{{categ}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -65,11 +56,7 @@
|
||||||
<label class="generic-label item-field-label-long2">Base </label>
|
<label class="generic-label item-field-label-long2">Base </label>
|
||||||
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
||||||
name="system.feeriemasque" value="{{system.feeriemasque}}" data-dtype="string">
|
name="system.feeriemasque" value="{{system.feeriemasque}}" data-dtype="string">
|
||||||
{{#select system.feeriemasque}}
|
{{selectOptions config.baseTestPouvoir selected=system.feeriemasque}}
|
||||||
{{#each config.baseTestPouvoir as |categ cKey|}}
|
|
||||||
<option value="{{cKey}}">{{categ}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -83,17 +70,28 @@
|
||||||
<label class="generic-label item-field-label-long2">+ Carac </label>
|
<label class="generic-label item-field-label-long2">+ Carac </label>
|
||||||
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
||||||
name="system.carac" value="{{system.carac}}" data-dtype="string">
|
name="system.carac" value="{{system.carac}}" data-dtype="string">
|
||||||
{{#select system.carac}}
|
{{selectOptions config.caracList selected=system.carac}}
|
||||||
{{#each config.caracList as |categ cKey|}}
|
|
||||||
<option value="{{cKey}}">{{categ}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
<li class="flexrow item">
|
||||||
|
<label class="generic-label item-field-label-long2">Points d'usage max/jour </label>
|
||||||
|
{{#if (eq usageMax -1)}}
|
||||||
|
<label class="generic-label item-field-label-short">Inconnu</label>
|
||||||
|
{{else}}
|
||||||
|
<label class="generic-label item-field-label-short">{{usageMax}}</label>
|
||||||
|
{{/if}}
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="flexrow item">
|
||||||
|
<label class="generic-label item-field-label-long2">Points d'usage restants </label>
|
||||||
|
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||||
|
name="system.pointsusagecourant" value="{{system.pointsusagecourant}}" data-dtype="Number" />
|
||||||
|
</li>
|
||||||
|
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="generic-label item-field-label-long2">Cibles </label>
|
<label class="generic-label item-field-label-long2">Cibles </label>
|
||||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-long3"
|
<input type="text" class="padd-right status-small-label color-class-common item-field-label-long3"
|
||||||
|
@ -121,11 +119,7 @@
|
||||||
<label class="generic-label item-field-label-long2">Résistance</label>
|
<label class="generic-label item-field-label-long2">Résistance</label>
|
||||||
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
<select class="status-small-label color-class-common item-field-label-long" type="text"
|
||||||
name="system.resistance" value="{{system.resistance}}" data-dtype="string">
|
name="system.resistance" value="{{system.resistance}}" data-dtype="string">
|
||||||
{{#select system.resistance}}
|
{{selectOptions config.resistancePouvoir selected=system.resistance}}
|
||||||
{{#each config.resistancePouvoir as |categ cKey|}}
|
|
||||||
<option value="{{cKey}}">{{categ}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
@ -15,10 +15,7 @@
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="generic-label item-field-label-long">Type : </label>
|
<label class="generic-label item-field-label-long">Type : </label>
|
||||||
<select class="item-field-label-long" type="text" name="system.profiltype" value="{{system.profiltype}}" data-dtype="String">
|
<select class="item-field-label-long" type="text" name="system.profiltype" value="{{system.profiltype}}" data-dtype="String">
|
||||||
{{#select system.profiltype}}
|
{{selectOptions config.typeProfil selected=system.profiltype}}
|
||||||
<option value="mineur">Mineur</option>
|
|
||||||
<option value="majeur">Majeur</option>
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -16,11 +16,7 @@
|
||||||
<label class="item-field-label-long">Type : </label>
|
<label class="item-field-label-long">Type : </label>
|
||||||
<select class="item-field-label-long" type="text" name="system.protectiontype"
|
<select class="item-field-label-long" type="text" name="system.protectiontype"
|
||||||
value="{{system.protectiontype}}" data-dtype="string">
|
value="{{system.protectiontype}}" data-dtype="string">
|
||||||
{{#select system.protectiontype}}
|
{{selectOptions config.typeProtection selected=system.protectiontype}}
|
||||||
{{#each config.typeProtection as |prot key|}}
|
|
||||||
<option value="{{key}}">{{prot}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -42,11 +38,7 @@
|
||||||
<label class="generic-label item-field-label-long">Dissimulation : </label>
|
<label class="generic-label item-field-label-long">Dissimulation : </label>
|
||||||
<select class="item-field-label-long" type="text" name="system.dissimulation"
|
<select class="item-field-label-long" type="text" name="system.dissimulation"
|
||||||
value="{{system.dissimulation}}" data-dtype="string">
|
value="{{system.dissimulation}}" data-dtype="string">
|
||||||
{{#select system.dissimulation}}
|
{{selectOptions config.armeDissimulation selected=system.dissimulation}}
|
||||||
{{#each config.armeDissimulation as |diss key|}}
|
|
||||||
<option value="{{key}}">{{diss}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user