Compare commits
28 Commits
fvtt-les-h
...
fvtt-les-h
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 |
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
|
||||
|
||||
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 !
|
||||
|
||||
@@ -10,7 +10,7 @@ Books are mandatory to play and are available at : http://www.titam-france.fr
|
||||
|
||||
## FR
|
||||
|
||||
Système non-officiel pour le JDR 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 !
|
||||
|
||||
@@ -18,7 +18,7 @@ Les livres du jeu sont nécessaires pour jouer, et sont disponibles ici : http:/
|
||||
|
||||
# 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
|
||||
|
||||
@@ -26,4 +26,4 @@ LeRatierBretonnien
|
||||
|
||||
# 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": {
|
||||
"TypePersonnage": "Personnage",
|
||||
"TypeCellule": "Cellule",
|
||||
"TypeCreature": "Créature"
|
||||
},
|
||||
|
||||
"ITEM": {
|
||||
"TypeArtefact": "Artefact",
|
||||
"TypeArme": "Arme",
|
||||
"TypeTalent": "Talent",
|
||||
"TypeHistorique": "Historique",
|
||||
"TypeProfil": "Profil",
|
||||
"TypeCompetence": "Compétence",
|
||||
"TypeProtection": "Protection",
|
||||
"TypeMonnaie": "Monnaie",
|
||||
"TypeEquipement": "Equipement",
|
||||
"TypeRessource": "Ressource",
|
||||
"TypeContact": "Contact"
|
||||
|
||||
},
|
||||
|
||||
"HAWKMOON": {
|
||||
"ui": {
|
||||
"editContact": "Modifier le contact",
|
||||
"deleteContact": "Supprimer le contact",
|
||||
"editTrait": "Modifier le trait",
|
||||
"deleteTrait": "Supprimer le trait"
|
||||
"TYPES": {
|
||||
"Actor": {
|
||||
"personnage": "Personnage",
|
||||
"PNJ": "PNJ"
|
||||
}
|
||||
},
|
||||
"Item": {
|
||||
"accessoire": "Accessoire",
|
||||
"arme": "Arme",
|
||||
"atoutfeerique": "Atout féerique",
|
||||
"avantage": "Avantage",
|
||||
"capacitenaturelle": "Capacité naturelle",
|
||||
"competence": "Compétence",
|
||||
"contact": "Contact",
|
||||
"desavantage": "Désavantage",
|
||||
"equipement": "Equipement",
|
||||
"fee": "Fée",
|
||||
"pouvoir": "Pouvoir",
|
||||
"profil": "Profil",
|
||||
"protection": "Protection"
|
||||
}
|
||||
}
|
||||
26
modules/heritiers-actor-pnj-sheet.js
Normal file
26
modules/heritiers-actor-pnj-sheet.js
Normal file
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* Extend the basic ActorSheet with some very simple modifications
|
||||
* @extends {ActorSheet}
|
||||
*/
|
||||
|
||||
import { HeritiersActorSheet } from "./heritiers-actor-sheet.js";
|
||||
import { HeritiersUtility } from "./heritiers-utility.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class HeritiersActorPNJSheet extends HeritiersActorSheet {
|
||||
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
|
||||
return mergeObject(super.defaultOptions, {
|
||||
classes: ["fvtt-les-heritiers", "sheet", "actor"],
|
||||
template: "systems/fvtt-les-heritiers/templates/actor-pnj-sheet.html",
|
||||
width: 780,
|
||||
height: 840,
|
||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
||||
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
||||
editScore: false
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
@@ -14,8 +14,8 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
classes: ["fvtt-les-heritiers", "sheet", "actor"],
|
||||
template: "systems/fvtt-les-heritiers/templates/actor-sheet.html",
|
||||
width: 640,
|
||||
height: 720,
|
||||
width: 780,
|
||||
height: 840,
|
||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
||||
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
||||
editScore: false
|
||||
@@ -38,7 +38,8 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
|
||||
limited: this.object.limited,
|
||||
skills: this.actor.getSkills(),
|
||||
utileSkills :this.actor.organizeUtileSkills(),
|
||||
utileSkillsMental :this.actor.organizeUtileSkills("mental"),
|
||||
utileSkillsPhysical :this.actor.organizeUtileSkills("physical"),
|
||||
futileSkills :this.actor.organizeFutileSkills(),
|
||||
contacts: this.actor.organizeContacts(),
|
||||
armes: duplicate(this.actor.getWeapons()),
|
||||
@@ -54,16 +55,20 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||
desavantages: duplicate(this.actor.getDesavantages()),
|
||||
profils: duplicate(this.actor.getProfils()),
|
||||
pvMalus: this.actor.getPvMalus(),
|
||||
heritage: game.settings.get("fvtt-les-heritiers", "heritiers-heritage"),
|
||||
initiative: this.actor.getFlag("world", "last-initiative") || -1,
|
||||
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
|
||||
revesetranges: await TextEditor.enrichHTML(this.object.system.biodata.revesetranges, {async: true}),
|
||||
secretsdecouverts: await TextEditor.enrichHTML(this.object.system.biodata.secretsdecouverts, {async: true}),
|
||||
questions: await TextEditor.enrichHTML(this.object.system.biodata.questions, {async: true}),
|
||||
habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
|
||||
playernotes: await TextEditor.enrichHTML(this.object.system.biodata.playernotes, {async: true}),
|
||||
options: this.options,
|
||||
owner: this.document.isOwner,
|
||||
editScore: this.options.editScore,
|
||||
isGM: game.user.isGM
|
||||
config: game.system.lesheritiers.config,
|
||||
isGM: game.user.isGM,
|
||||
isPNJ: (this.actor.type == "pnj")
|
||||
}
|
||||
this.formData = formData;
|
||||
|
||||
@@ -136,6 +141,14 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||
const key = $(event.currentTarget).data("key")
|
||||
this.actor.rollCarac(key, false)
|
||||
})
|
||||
html.find('.roll-rang').click((event) => {
|
||||
const key = $(event.currentTarget).data("rang-key")
|
||||
this.actor.rollRang(key, false)
|
||||
})
|
||||
html.find('.roll-root-competence').click((event) => {
|
||||
const compKey = $(event.currentTarget).data("attr-key")
|
||||
this.actor.rollRootCompetence(compKey)
|
||||
})
|
||||
html.find('.roll-competence').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let compId = li.data("item-id")
|
||||
@@ -146,6 +159,22 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||
let armeId = li.data("item-id")
|
||||
this.actor.rollAttaqueArme(armeId)
|
||||
})
|
||||
html.find('.roll-attaque-brutale-arme').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let armeId = li.data("item-id")
|
||||
this.actor.rollAttaqueBrutaleArme(armeId)
|
||||
})
|
||||
html.find('.roll-attaque-charge-arme').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let armeId = li.data("item-id")
|
||||
this.actor.rollAttaqueChargeArme(armeId)
|
||||
})
|
||||
html.find('.roll-assomer-arme').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let armeId = li.data("item-id")
|
||||
this.actor.rollAssomerArme(armeId)
|
||||
})
|
||||
|
||||
html.find('.roll-pouvoir').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let pouvoirId = li.data("item-id")
|
||||
|
||||
@@ -46,11 +46,7 @@ export class HeritiersActor extends Actor {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (data.type == 'creature') {
|
||||
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.skills-creatures")
|
||||
data.items = skills.map(i => i.toObject())
|
||||
data.items.push({ name: "Arme naturelle 1", type: 'arme', img: "systems/fvtt-les-heritiers/assets/icons/melee.webp", system: { typearme: "contact", bonusmaniementoff: 0, seuildefense: 0, degats: "0" } })
|
||||
data.items.push({ name: "Arme naturelle 2", type: 'arme', img: "systems/fvtt-les-heritiers/assets/icons/melee.webp", system: { typearme: "contact", bonusmaniementoff: 0, seuildefense: 0, degats: "0" } })
|
||||
if (data.type == 'pnj') {
|
||||
}
|
||||
|
||||
return super.create(data, options);
|
||||
@@ -59,25 +55,7 @@ export class HeritiersActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
prepareArme(arme) {
|
||||
arme = duplicate(arme)
|
||||
let combat = this.getCombatValues()
|
||||
if (arme.system.typearme == "contact" || arme.system.typearme == "contactjet") {
|
||||
let bonusDefense = 0
|
||||
arme.system.competence = duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
|
||||
arme.system.attrKey = "pui"
|
||||
arme.system.totalDegats = arme.system.degats + "+" + combat.bonusDegatsTotal
|
||||
arme.system.totalOffensif = this.system.attributs.pui.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff
|
||||
arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.seuildefense + bonusDefense
|
||||
arme.system.isdefense = true
|
||||
}
|
||||
if (arme.system.typearme == "jet" || arme.system.typearme == "tir") {
|
||||
arme.system.competence = duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "armes à distance"))
|
||||
arme.system.attrKey = "adr"
|
||||
arme.system.totalOffensif = this.system.attributs.adr.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff
|
||||
arme.system.totalDegats = arme.system.degats
|
||||
if (arme.system.isdefense) {
|
||||
arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.seuildefense
|
||||
}
|
||||
}
|
||||
arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||
return arme
|
||||
}
|
||||
|
||||
@@ -92,6 +70,16 @@ export class HeritiersActor extends Actor {
|
||||
return armes
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getOtherMeleeWeapons(excludeArme) {
|
||||
let armes = []
|
||||
for (let arme of this.items) {
|
||||
if (HeritiersUtility.isArmeMelee(arme) && arme.id != excludeArme._id) {
|
||||
armes.push(this.prepareArme(arme))
|
||||
}
|
||||
}
|
||||
return armes
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getMonnaies() {
|
||||
return this.items.filter(it => it.type == "monnaie")
|
||||
}
|
||||
@@ -108,43 +96,46 @@ export class HeritiersActor extends Actor {
|
||||
}
|
||||
|
||||
/* ----------------------- --------------------- */
|
||||
getItemSorted(types) {
|
||||
let items = this.items.filter(item => types.includes(item.type)) || []
|
||||
HeritiersUtility.sortArrayObjectsByName(items)
|
||||
return items
|
||||
}
|
||||
getEquipments() {
|
||||
return this.items.filter(item => item.type == "equipement" || item.type == "accessoire")
|
||||
return this.getItemSorted(["equipement", "accessoire"])
|
||||
}
|
||||
getAvantages() {
|
||||
return this.items.filter(item => item.type == "avantage")
|
||||
return this.getItemSorted(["avantage"])
|
||||
}
|
||||
getDesavantages() {
|
||||
return this.items.filter(item => item.type == "desavantage")
|
||||
return this.getItemSorted(["desavantage"])
|
||||
}
|
||||
getMonnaies() {
|
||||
return this.items.filter(item => item.type == "monnaie")
|
||||
return this.getItemSorted(["monnaie"])
|
||||
}
|
||||
getArmors() {
|
||||
return this.items.filter(item => item.type == "protection")
|
||||
return this.getItemSorted(["protection"])
|
||||
}
|
||||
getTalents() {
|
||||
return this.items.filter(item => item.type == "talent")
|
||||
return this.getItemSorted(["talent"])
|
||||
}
|
||||
getContacts() {
|
||||
return this.items.filter(item => item.type == "contact")
|
||||
return this.getItemSorted(["contact"])
|
||||
}
|
||||
getAtouts() {
|
||||
return this.items.filter(item => item.type == "atoutfeerique")
|
||||
return this.getItemSorted(["atoutfeerique"])
|
||||
}
|
||||
getCapacites() {
|
||||
return this.items.filter(item => item.type == "capacitenaturelle")
|
||||
return this.getItemSorted(["capacitenaturelle"])
|
||||
}
|
||||
getFee() {
|
||||
return this.items.find(item => item.type == "fee")
|
||||
}
|
||||
getProfils() {
|
||||
return this.items.filter(item => item.type == "profil")
|
||||
return this.getItemSorted(["profil"])
|
||||
}
|
||||
getPouvoirs() {
|
||||
let pouvoirs = this.items.filter(item => item.type == "pouvoir") || []
|
||||
HeritiersUtility.sortArrayObjectsByName(pouvoirs)
|
||||
return pouvoirs
|
||||
return this.getItemSorted(["pouvoir"])
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getSkills() {
|
||||
@@ -161,7 +152,7 @@ export class HeritiersActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
prepareUtileSkill(item) {
|
||||
let specList = []
|
||||
if (item.system.categorie == "utile") {
|
||||
if (item?.system?.categorie == "utile") {
|
||||
for (let spec of item.system.specialites) {
|
||||
specList.push(spec.name)
|
||||
}
|
||||
@@ -171,23 +162,25 @@ export class HeritiersActor extends Actor {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
organizeUtileSkills() {
|
||||
organizeUtileSkills(kind = "mental") {
|
||||
let comp = {}
|
||||
for (let key in game.system.lesheritiers.config.competenceProfil) {
|
||||
comp[key] = []
|
||||
if (game.system.lesheritiers.config.competenceProfil[key].kind == kind)
|
||||
comp[key] = { skills: [], niveau: this.system.competences[key].niveau }
|
||||
}
|
||||
for (let item of this.items) {
|
||||
if (item.type == "competence") {
|
||||
if (item.system.categorie == "utile") {
|
||||
if (item.system.categorie == "utile" && comp[item.system.profil]) {
|
||||
this.prepareUtileSkill(item)
|
||||
comp[item.system.profil].push(item)
|
||||
comp[item.system.profil].skills.push(item)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (let key in comp) {
|
||||
HeritiersUtility.sortArrayObjectsByName(comp[key])
|
||||
HeritiersUtility.sortArrayObjectsByName(comp[key].skills)
|
||||
}
|
||||
return comp
|
||||
return Object.fromEntries(Object.entries(comp).sort())
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
organizeContacts() {
|
||||
@@ -199,6 +192,9 @@ export class HeritiersActor extends Actor {
|
||||
contactList[item.system.contacttype] = c
|
||||
}
|
||||
}
|
||||
for (let key in contactList) {
|
||||
HeritiersUtility.sortArrayObjectsByName(contactList[key].list)
|
||||
}
|
||||
return contactList
|
||||
}
|
||||
|
||||
@@ -282,7 +278,7 @@ export class HeritiersActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async equipItem(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 }
|
||||
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
||||
}
|
||||
@@ -293,7 +289,7 @@ export class HeritiersActor extends Actor {
|
||||
let item = this.items.find(item => item.id == itemId)
|
||||
if (item) {
|
||||
console.log("Item ", item, itemField, dataType, value)
|
||||
if (dataType) {
|
||||
if (dataType) {
|
||||
if (dataType.toLowerCase() == "number") {
|
||||
value = Number(value)
|
||||
} else {
|
||||
@@ -308,15 +304,15 @@ export class HeritiersActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
getPvMalus() {
|
||||
if (this.system.pv.value > 0) {
|
||||
if (this.system.pv.value < this.system.pv.max / 2) {
|
||||
return -1
|
||||
}
|
||||
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 }
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -343,7 +339,7 @@ export class HeritiersActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async equipGear(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 };
|
||||
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
||||
}
|
||||
@@ -476,7 +472,23 @@ export class HeritiersActor extends Actor {
|
||||
}
|
||||
return talents
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getCurrentParade() {
|
||||
if (this.system.statutmasque == "masque") {
|
||||
return this.system.combat.parade.masquee
|
||||
}
|
||||
return this.system.combat.parade.demasquee
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getCurrentEsquive() {
|
||||
if (this.system.statutmasque == "masque") {
|
||||
return this.system.combat.esquive.masquee
|
||||
}
|
||||
return this.system.combat.esquive.demasquee
|
||||
}
|
||||
getCurrentResistancePhysique() {
|
||||
return this.system.combat.resistancephysique.value
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getTricherie() {
|
||||
return this.system.rang.tricherie.value
|
||||
@@ -489,11 +501,28 @@ export class HeritiersActor extends Actor {
|
||||
incDecTricherie(value) {
|
||||
let tricherie = this.system.rang.tricherie
|
||||
tricherie.value += value
|
||||
if (tricherie.value < 0 || tricherie.value > tricherie.max) {
|
||||
ui.notifications.warn("Pas assez de points de Tricherie !")
|
||||
return false
|
||||
}
|
||||
tricherie.value = Math.max(tricherie.value, 0)
|
||||
tricherie.value = Math.min(tricherie.value, tricherie.max)
|
||||
this.update({ 'system.rang.tricherie': tricherie })
|
||||
return true
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getPireCompetence(compName1, compName2) {
|
||||
let comp1 = this.items.find(it => it.name == compName1)
|
||||
let comp2 = this.items.find(it => it.name == compName2)
|
||||
if (comp1 && comp2) {
|
||||
if (comp1.system.niveau > comp2.system.niveau) {
|
||||
return comp1
|
||||
} else {
|
||||
return comp2
|
||||
}
|
||||
}
|
||||
return undefined
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getCommonRollData(compId = undefined, compName = undefined) {
|
||||
let rollData = HeritiersUtility.getBasicRollData()
|
||||
@@ -509,7 +538,7 @@ export class HeritiersActor extends Actor {
|
||||
rollData.useTricherie = false
|
||||
rollData.useSpecialite = false
|
||||
rollData.useHeritage = false
|
||||
rollData.pvMalus = this.getPvMalus()
|
||||
rollData.rulesMalus.push(this.getPvMalus())
|
||||
|
||||
if (compId) {
|
||||
rollData.competence = duplicate(this.items.get(compId) || {})
|
||||
@@ -518,9 +547,15 @@ export class HeritiersActor extends Actor {
|
||||
}
|
||||
if (compName) {
|
||||
rollData.competence = duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
|
||||
this.prepareUtileSkill(rollData.competence)
|
||||
rollData.actionImg = rollData.competence?.img
|
||||
if (rollData.competence?.name) {
|
||||
this.prepareUtileSkill(rollData.competence)
|
||||
rollData.actionImg = rollData.competence?.img
|
||||
} else {
|
||||
rollData.competence = undefined
|
||||
}
|
||||
}
|
||||
HeritiersUtility.updateWithTarget(rollData)
|
||||
|
||||
return rollData
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
@@ -547,6 +582,25 @@ export class HeritiersActor extends Actor {
|
||||
rollDialog.render(true)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollRang(key, isInit = false) {
|
||||
let rollData = this.getCommonRollData()
|
||||
rollData.mode = "rang"
|
||||
rollData.rang = this.system.rang[key]
|
||||
rollData.rangKey = key
|
||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
async rollRootCompetence(compKey) {
|
||||
let rollData = this.getCommonRollData()
|
||||
rollData.mode = "competence"
|
||||
rollData.competence = { name: this.system.competences[compKey].label, system: { niveau: this.system.competences[compKey].niveau } }
|
||||
console.log("RollDatra", rollData)
|
||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollCompetence(compId) {
|
||||
let rollData = this.getCommonRollData(compId)
|
||||
@@ -555,31 +609,95 @@ export class HeritiersActor extends Actor {
|
||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollAttaqueArme(armeId) {
|
||||
let arme = this.items.get(armeId)
|
||||
if (arme) {
|
||||
arme = duplicate(arme)
|
||||
arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||
let competenceName = "Tir"
|
||||
let key = "prec"
|
||||
if (arme.system.categorie == "blanche" || arme.system.categorie == "improvise") {
|
||||
if (arme.system.isMelee) {
|
||||
competenceName = "Mêlée"
|
||||
key = "agi"
|
||||
}
|
||||
let rollData = this.getCommonRollData(undefined, competenceName)
|
||||
rollData.carac = this.system.caracteristiques[key]
|
||||
rollData.caracKey = key
|
||||
rollData.arme = duplicate(arme)
|
||||
rollData.arme = arme
|
||||
rollData.mode = "arme"
|
||||
rollData.armes = this.getOtherMeleeWeapons(arme)
|
||||
if (rollData.defenderTokenId && arme.system.isMelee) {
|
||||
rollData.cacheDifficulte = true
|
||||
}
|
||||
console.log(">>>> ARME", rollData)
|
||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
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 = duplicate(arme)
|
||||
rollData.mode = "attaquebrutale"
|
||||
rollData.armes = this.getOtherMeleeWeapons(arme)
|
||||
rollData.rulesMalus.push({ name: "Attaque brutale", value: -2 })
|
||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
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 = 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 = duplicate(arme)
|
||||
rollData.mode = "assommer"
|
||||
if (rollData.defenderTokenId) {
|
||||
rollData.cacheDifficulte = true
|
||||
}
|
||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollPouvoir(pouvoirId) {
|
||||
let pouvoir = this.items.get(pouvoirId)
|
||||
if (pouvoir) {
|
||||
let rollData = this.getCommonRollData(undefined, undefined)
|
||||
if ( pouvoir.system.feeriemasque != "autre") {
|
||||
if (pouvoir.system.feeriemasque != "autre") {
|
||||
rollData.pouvoirBase = duplicate(this.system.rang[pouvoir.system.feeriemasque.toLowerCase()])
|
||||
rollData.pouvoirBase.label = "Féerie"
|
||||
rollData.carac = duplicate(this.system.caracteristiques[pouvoir.system.carac])
|
||||
@@ -592,46 +710,4 @@ export class HeritiersActor extends Actor {
|
||||
}
|
||||
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
async rollArmeOffensif(armeId) {
|
||||
let arme = this.items.get(armeId)
|
||||
if (arme.type == "arme") {
|
||||
arme = this.prepareArme(arme)
|
||||
}
|
||||
let rollData = this.getCommonRollData(arme.system.attrKey, arme.system.competence._id)
|
||||
rollData.arme = arme
|
||||
HeritiersUtility.updateWithTarget(rollData)
|
||||
console.log("ARME!", rollData)
|
||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollArmeDegats(armeId, targetVigueur = undefined) {
|
||||
let arme = this.items.get(armeId)
|
||||
if (arme.type == "arme") {
|
||||
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)
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,12 +25,12 @@ export const HERITIERS_CONFIG = {
|
||||
},
|
||||
|
||||
competenceProfil : {
|
||||
"aventurier": "Aventurier",
|
||||
"roublard": "Roublard",
|
||||
"combattant": "Combattant",
|
||||
"erudit": "Erudit",
|
||||
"savant": "Savant",
|
||||
"gentleman": "Gentleman"
|
||||
"aventurier": {kind: "physical", name: "Aventurier"},
|
||||
"roublard": {kind: "physical",name: "Roublard"},
|
||||
"combattant": {kind: "physical",name:"Combattant"},
|
||||
"erudit": {kind: "mental",name:"Erudit"},
|
||||
"savant": {kind: "mental",name:"Savant"},
|
||||
"gentleman": {kind: "mental",name:"Gentleman"}
|
||||
},
|
||||
baseTestPouvoir: {
|
||||
"feerie": "Féerie",
|
||||
@@ -50,6 +50,10 @@ export const HERITIERS_CONFIG = {
|
||||
"passif": "Passif",
|
||||
"metamorphose": "Métamorphose"
|
||||
},
|
||||
statutMasque: {
|
||||
"masque": "Masqué",
|
||||
"demasque":"Démasqué"
|
||||
},
|
||||
niveauPouvoir: {
|
||||
"normal": "Normal",
|
||||
"profond": "Profond",
|
||||
@@ -60,23 +64,42 @@ export const HERITIERS_CONFIG = {
|
||||
"demasque": "Démasqué"
|
||||
},
|
||||
seuilsDifficulte: {
|
||||
"0": "Aucun/Non applicable",
|
||||
"-1": "Aucun/Non applicable",
|
||||
"5": "Enfantine",
|
||||
"6": "Triviale",
|
||||
"7": "Moins Triviale",
|
||||
"8": "Aisée",
|
||||
"7": "Moins Aisée",
|
||||
"10": "Normale",
|
||||
"11": "Moins Normale",
|
||||
"12": "Compliquée",
|
||||
"13": "Plus Compliquée",
|
||||
"14": "Difficile",
|
||||
"15": "Plus Difficile",
|
||||
"16": "Très Difficile",
|
||||
"17": "Très Très Difficile",
|
||||
"18": "Critique",
|
||||
"19": "Plus Critique",
|
||||
"20": "Insurmontable",
|
||||
"20": "Très Insurmontable",
|
||||
"22": "Surhumaine",
|
||||
"23": "Très Surhumaine",
|
||||
"24": "Epique",
|
||||
"25": "Plus Epique",
|
||||
"26": "Légendaire",
|
||||
"26": "Très Légendaire",
|
||||
"28": "Mythique",
|
||||
"29": "Plus Mythique",
|
||||
"30": "Divine"
|
||||
},
|
||||
|
||||
attaqueCible: {
|
||||
"none": "Aucune",
|
||||
"membre": "Membre",
|
||||
"main": "Main",
|
||||
"tete": "Tête/Coeur"
|
||||
},
|
||||
|
||||
categorieArme : {
|
||||
"trait": "Arme de trait",
|
||||
"poing": "Arme de poing",
|
||||
|
||||
@@ -62,6 +62,7 @@ export class HeritiersItemSheet extends ItemSheet {
|
||||
options: this.options,
|
||||
owner: this.document.isOwner,
|
||||
config: game.system.lesheritiers.config,
|
||||
isArmeMelee: HeritiersUtility.isArmeMelee(this.object),
|
||||
description: await TextEditor.enrichHTML(this.object.system.description, {async: true}),
|
||||
mr: (this.object.type == 'specialisation'),
|
||||
isGM: game.user.isGM
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
import { HeritiersActor } from "./heritiers-actor.js";
|
||||
import { HeritiersItemSheet } from "./heritiers-item-sheet.js";
|
||||
import { HeritiersActorSheet } from "./heritiers-actor-sheet.js";
|
||||
import { HeritiersActorPNJSheet } from "./heritiers-actor-pnj-sheet.js";
|
||||
import { HeritiersCreatureSheet } from "./heritiers-creature-sheet.js";
|
||||
import { HeritiersUtility } from "./heritiers-utility.js";
|
||||
import { HeritiersCombat } from "./heritiers-combat.js";
|
||||
@@ -55,7 +56,7 @@ Hooks.once("init", async function () {
|
||||
// Register sheet application classes
|
||||
Actors.unregisterSheet("core", ActorSheet);
|
||||
Actors.registerSheet("fvtt-les-heritiers", HeritiersActorSheet, { types: ["personnage"], makeDefault: true })
|
||||
Actors.registerSheet("fvtt-les-heritiers", HeritiersCreatureSheet, { types: ["creature"], makeDefault: true })
|
||||
Actors.registerSheet("fvtt-les-heritiers", HeritiersActorPNJSheet, { types: ["pnj"], makeDefault: true })
|
||||
|
||||
Items.unregisterSheet("core", ItemSheet);
|
||||
Items.registerSheet("fvtt-les-heritiers", HeritiersItemSheet, { makeDefault: true })
|
||||
@@ -78,31 +79,17 @@ function welcomeMessage() {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
// Register world usage statistics
|
||||
function registerUsageCount(registerKey) {
|
||||
if (game.user.isGM) {
|
||||
game.settings.register(registerKey, "world-key", {
|
||||
name: "Unique world key",
|
||||
scope: "world",
|
||||
config: false,
|
||||
default: "",
|
||||
type: String
|
||||
});
|
||||
|
||||
let worldKey = game.settings.get(registerKey, "world-key")
|
||||
if (worldKey == undefined || worldKey == "") {
|
||||
worldKey = randomID(32)
|
||||
game.settings.set(registerKey, "world-key", worldKey)
|
||||
}
|
||||
// Simple API counter
|
||||
let regURL = `https://www.uberwald.me/fvtt_appcount/count.php?name="${registerKey}"&worldKey="${worldKey}"&version="${game.release.generation}.${game.release.build}"&system="${game.system.id}"&systemversion="${game.system.version}"`
|
||||
//$.ajaxSetup({
|
||||
//headers: { 'Access-Control-Allow-Origin': '*' }
|
||||
//})
|
||||
$.ajax(regURL)
|
||||
async function importDefaultScene() {
|
||||
let exists = game.scenes.find(j => j.name == "Accueil");
|
||||
if (!exists) {
|
||||
const scenes = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.scenes")
|
||||
let newDocuments = scenes.filter(i => i.name == "Accueil");
|
||||
await game.scenes.documentClass.create(newDocuments);
|
||||
game.scenes.find(i => i.name == "Accueil").activate();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/* Foundry VTT Initialization */
|
||||
/* -------------------------------------------- */
|
||||
@@ -118,15 +105,16 @@ Hooks.once("ready", function () {
|
||||
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 +124,7 @@ Hooks.on("chatMessage", (html, content, msg) => {
|
||||
if (content[0] == '/') {
|
||||
let regExp = /(\S+)/g;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ export class HeritiersRollDialog extends Dialog {
|
||||
/* -------------------------------------------- */
|
||||
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);
|
||||
|
||||
return new HeritiersRollDialog(actor, rollData, html, options);
|
||||
@@ -13,35 +13,56 @@ export class HeritiersRollDialog extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
constructor(actor, rollData, html, options, close = undefined) {
|
||||
let buttons = {
|
||||
rolld8: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Lancer 1d8",
|
||||
callback: () => { this.roll("d8") }
|
||||
}
|
||||
}
|
||||
let enableD10D12 = true
|
||||
if (rollData.competence?.system.niveau == 0) {
|
||||
enableD10D12 = false
|
||||
}
|
||||
if (enableD10D12) {
|
||||
buttons.rolld10 = {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Lancer 1d10",
|
||||
callback: () => { this.roll("d10") }
|
||||
}
|
||||
buttons.rolld12 = {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Lancer 1d12",
|
||||
callback: () => { this.roll("d12") }
|
||||
}
|
||||
}
|
||||
|
||||
if (rollData.tricherie) {
|
||||
buttons["rollTricherie"] = {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Lancer avec 1 Point de Tricherie",
|
||||
callback: () => { this.roll("tricherie") }
|
||||
}
|
||||
}
|
||||
if (rollData.heritage) {
|
||||
buttons["rollHeritage"] = {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Lancer avec 1 Point d'Héritage",
|
||||
callback: () => { this.roll("heritage") }
|
||||
}
|
||||
}
|
||||
buttons["Cancel"] = {
|
||||
icon: '<i class="fas fa-times"></i>',
|
||||
label: "Annuler",
|
||||
callback: () => { this.close() }
|
||||
}
|
||||
let conf = {
|
||||
title: "Test de Capacité",
|
||||
content: html,
|
||||
buttons:
|
||||
{
|
||||
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() }
|
||||
}
|
||||
},
|
||||
buttons: buttons,
|
||||
close: close
|
||||
}
|
||||
// Overwrite in case of carac only -> 1d10
|
||||
// Overwrite in case of carac only -> 1d8
|
||||
if (rollData.mode == "carac") {
|
||||
conf.buttons = {
|
||||
rolld8: {
|
||||
@@ -64,7 +85,16 @@ export class HeritiersRollDialog extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
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)
|
||||
}
|
||||
|
||||
@@ -87,14 +117,21 @@ export class HeritiersRollDialog extends Dialog {
|
||||
html.find('#bonus-malus-context').change((event) => {
|
||||
this.rollData.bonusMalusContext = Number(event.currentTarget.value)
|
||||
})
|
||||
html.find('#useTricherie').change((event) => {
|
||||
this.rollData.useTricherie = event.currentTarget.checked
|
||||
html.find('#bonus-attaque-plusieurs').change((event) => {
|
||||
this.rollData.bonusAttaquePlusieurs = Number(event.currentTarget.value)
|
||||
})
|
||||
html.find('#useSpecialite').change((event) => {
|
||||
this.rollData.useSpecialite = event.currentTarget.checked
|
||||
})
|
||||
html.find('#useHeritage').change((event) => {
|
||||
this.rollData.useHeritage = event.currentTarget.checked
|
||||
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 { 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 {
|
||||
|
||||
@@ -42,32 +81,16 @@ export class HeritiersUtility {
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static sortByName(table) {
|
||||
static sortByName(table) {
|
||||
return table.sort(function (a, b) {
|
||||
let fa = a.name.toLowerCase(),
|
||||
fb = b.name.toLowerCase();
|
||||
if (fa < fb) {
|
||||
return -1;
|
||||
}
|
||||
if (fa > fb) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
return a.name.localeCompare(b.name);
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static sortArrayObjectsByName(myArray) {
|
||||
myArray.sort((a, b) => {
|
||||
let fa = a.name.toLowerCase();
|
||||
let fb = b.name.toLowerCase();
|
||||
if (fa < fb) {
|
||||
return -1;
|
||||
}
|
||||
if (fa > fb) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
return a.name.localeCompare(b.name);
|
||||
})
|
||||
}
|
||||
|
||||
@@ -81,6 +104,14 @@ export class HeritiersUtility {
|
||||
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences")
|
||||
this.skills = skills.map(i => i.toObject())
|
||||
|
||||
game.settings.register("fvtt-les-heritiers", "heritiers-heritage", {
|
||||
name: "Points d'héritage",
|
||||
hint: "Points d'héritage du groupe",
|
||||
scope: "world",
|
||||
config: true,
|
||||
default: 0,
|
||||
type: Number
|
||||
})
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -112,7 +143,18 @@ export class HeritiersUtility {
|
||||
rollData.competence = duplicate(actor.getCompetence(rollData.competence._id))
|
||||
HeritiersUtility.rollHeritiers(rollData)
|
||||
})
|
||||
|
||||
|
||||
html.on("click", '.roll-tricherie-2', async event => {
|
||||
let messageId = HeritiersUtility.findChatMessageId(event.currentTarget)
|
||||
let message = game.messages.get(messageId)
|
||||
let rollData = message.getFlag("world", "heritiers-roll")
|
||||
let actor = this.getActorFromRollData(rollData)
|
||||
if ( await actor.incDecTricherie(-2) ) {
|
||||
rollData.forcedValue = Number($(event.currentTarget).data("dice-value"))
|
||||
HeritiersUtility.rollHeritiers(rollData)
|
||||
}
|
||||
})
|
||||
|
||||
html.on("click", '.roll-chat-degat', async event => {
|
||||
let messageId = HeritiersUtility.findChatMessageId(event.currentTarget)
|
||||
let message = game.messages.get(messageId)
|
||||
@@ -130,6 +172,7 @@ export class HeritiersUtility {
|
||||
'systems/fvtt-les-heritiers/templates/partial-item-header.html',
|
||||
'systems/fvtt-les-heritiers/templates/partial-item-description.html',
|
||||
'systems/fvtt-les-heritiers/templates/partial-item-nav.html',
|
||||
'systems/fvtt-les-heritiers/templates/partial-utile-skills.html',
|
||||
'systems/fvtt-les-heritiers/templates/partial-list-niveau.html'
|
||||
]
|
||||
return loadTemplates(templatePaths);
|
||||
@@ -227,7 +270,6 @@ export class HeritiersUtility {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static onSocketMesssage(msg) {
|
||||
//console.log("SOCKET MESSAGE", msg.name, game.user.character.id, msg.data.defenderId);
|
||||
if (msg.name == "msg_update_defense_state") {
|
||||
this.updateDefenseState(msg.data.defenderId, msg.data.rollId);
|
||||
}
|
||||
@@ -284,117 +326,242 @@ export class HeritiersUtility {
|
||||
/* -------------------------------------------- */
|
||||
static computeMonnaieDetails(valueSC) {
|
||||
let po = Math.floor(valueSC / 400)
|
||||
let pa = Math.floor((valueSC - (po*400)) / 20)
|
||||
let sc = valueSC - (po*400) - (pa*20)
|
||||
let pa = Math.floor((valueSC - (po * 400)) / 20)
|
||||
let sc = valueSC - (po * 400) - (pa * 20)
|
||||
return {
|
||||
po: po, pa: pa, sc: sc, valueSC: valueSC
|
||||
po: po, pa: pa, sc: sc, valueSC: valueSC
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static incDecHeritage() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static computeResult(actor, rollData) {
|
||||
rollData.diceResult = -1
|
||||
let resTab = []
|
||||
for ( let res of rollData.roll.terms[0].results) {
|
||||
rollData.diceResult = Math.max(res.result, rollData.diceResult)
|
||||
resTab.push(res.result)
|
||||
}
|
||||
let isFailure = false
|
||||
if (rollData.mainDice.includes("d10")) {
|
||||
if ( rollData.diceResult == 1) {
|
||||
rollData.finalResult -= 3
|
||||
isFailure = true
|
||||
}
|
||||
}
|
||||
if (rollData.mainDice.includes("d12")) {
|
||||
if ( rollData.diceResult == 1 || rollData.diceResult == 2) {
|
||||
rollData.finalResult -= 5
|
||||
isFailure = true
|
||||
}
|
||||
}
|
||||
// Heritage/Tricherie management
|
||||
let isTricherieHeritage = rollData.useHeritage || rollData.useTricherie
|
||||
|
||||
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()
|
||||
if ( (resTab[0] == resTab[1]) && (resTab[1] == resTab[2])) {
|
||||
if ((resTab[0] == resTab[1]) && (resTab[1] == resTab[2])) {
|
||||
rollData.marge = 7
|
||||
rollData.isSuccess = true
|
||||
rollData.isCriticalSuccess = true
|
||||
rollData.isCriticalSuccess = true
|
||||
rollData.isBrelan = true
|
||||
}
|
||||
if ((resTab[0]+1 == resTab[1]) && (resTab[1]+1 == resTab[2]) ) {
|
||||
if ((resTab[0] + 1 == resTab[1]) && (resTab[1] + 1 == resTab[2])) {
|
||||
rollData.marge = 7
|
||||
rollData.isSuccess = true
|
||||
rollData.isCriticalSuccess = true
|
||||
}
|
||||
if ( rollData.useTricherie) {
|
||||
rollData.isCriticalSuccess = true
|
||||
rollData.isSuite = true
|
||||
}
|
||||
if (rollData.useTricherie) {
|
||||
actor.incDecTricherie(-1)
|
||||
}
|
||||
if ( rollData.useHeritage) {
|
||||
if (rollData.useHeritage) {
|
||||
this.incDecHeritage()
|
||||
}
|
||||
}
|
||||
//rollData.finalResult = Math.max(rollData.finalResult, 0)
|
||||
//console.log("Result : ", rollData)
|
||||
if (rollData.marge == 0 && rollData.sdValue > 0 ) {
|
||||
rollData.marge = rollData.finalResult - rollData.sdValue
|
||||
rollData.isSuccess = (rollData.finalResult >= rollData.sdValue)
|
||||
rollData.isCriticalSuccess = ((rollData.finalResult - rollData.sdValue) >= 7)
|
||||
rollData.isCriticalFailure = ((rollData.finalResult - rollData.sdValue) <= -7)
|
||||
|
||||
} else {
|
||||
rollData.finalResult = rollData.roll.total
|
||||
let rollValue = rollData.forcedValue || rollData.roll.terms[0].results[0].result
|
||||
rollData.diceResult = rollValue
|
||||
rollData.diceValue = rollValue
|
||||
if (rollData.mainDice.includes("d10")) {
|
||||
if (rollValue == 1) {
|
||||
rollData.finalResult -= 3 + rollValue // substract 3 and the 1 value that has been added
|
||||
}
|
||||
}
|
||||
if (rollData.mainDice.includes("d12")) {
|
||||
if (rollValue == 1 || rollValue == 2) {
|
||||
rollData.finalResult -= 5 + rollValue // Remove also the dice result has it has been added already
|
||||
}
|
||||
}
|
||||
if ( !rollData.forcedValue) {
|
||||
rollData.adjacentFaces = 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)
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async displayUneDefense(rollData, actor, nomDefense, valeurDefense) {
|
||||
rollData.defenderMode = nomDefense
|
||||
rollData.defenderValue = valeurDefense
|
||||
rollData.marge = 0
|
||||
this.computeMarge(rollData, valeurDefense)
|
||||
if (rollData.isSuccess) {
|
||||
this.computeArmeDegats(rollData, actor)
|
||||
}
|
||||
this.createChatWithRollMode(rollData.alias, {
|
||||
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-cc-result.html`, rollData)
|
||||
}, rollData, "selfroll")
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
static async displayAsssomer(rollData, actor, nomAttaque, etatAssomer, valeurDefense) {
|
||||
rollData.defenderMode = nomAttaque
|
||||
rollData.etatAssommer = etatAssomer
|
||||
rollData.defenderValue = valeurDefense
|
||||
rollData.marge = 0
|
||||
this.computeMarge(rollData, valeurDefense)
|
||||
rollData.dureeAssommer = (rollData.marge) ? rollData.marge * 2 : 1
|
||||
this.createChatWithRollMode(rollData.alias, {
|
||||
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-assommer-result.html`, rollData)
|
||||
}, rollData, "selfroll")
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
static async rollHeritiers(rollData) {
|
||||
|
||||
let actor = this.getActorFromRollData(rollData)
|
||||
|
||||
//rollData.actionImg = "systems/fvtt-les-heritiers/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp"
|
||||
rollData.carac = duplicate(actor.system.caracteristiques[rollData.caracKey])
|
||||
|
||||
rollData.nbDice = (rollData.useTricherie || rollData.useHeritage) ? 3 : 1
|
||||
rollData.diceFormula = rollData.nbDice + rollData.mainDice + "kh1"
|
||||
//console.log("BEFORE COMP", rollData)
|
||||
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}`
|
||||
if (rollData.forcedValue) {
|
||||
rollData.diceFormula = rollData.forcedValue
|
||||
} else {
|
||||
rollData.diceFormula += `+${rollData.carac.value}+${rollData.bonusMalusContext}`
|
||||
if (rollData.useTricherie || rollData.useHeritage) {
|
||||
rollData.diceFormula = "{1d8, 1d10, 1d12}"
|
||||
} else {
|
||||
rollData.diceFormula = "1" + rollData.mainDice + "kh1"
|
||||
}
|
||||
}
|
||||
rollData.diceFormula += `+${rollData.pvMalus}`
|
||||
|
||||
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`
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
let myRoll = new Roll(rollData.diceFormula).roll({ async: false })
|
||||
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||
rollData.roll = myRoll
|
||||
rollData.roll = duplicate(myRoll)
|
||||
console.log(">>>> ", myRoll)
|
||||
|
||||
rollData.finalResult = myRoll.total
|
||||
this.computeResult(actor, rollData)
|
||||
this.computeMarge(rollData, rollData.sdValue) // Calcul de la marge si seuil présent
|
||||
|
||||
if (rollData.mode == "init") {
|
||||
actor.setFlag("world", "last-initiative", rollData.finalResult)
|
||||
}
|
||||
|
||||
// Compute damages, cf p 187
|
||||
if (rollData.arme && rollData.isSuccess) {
|
||||
rollData.degatsArme = rollData.arme.system.degats + rollData.marge
|
||||
if (rollData.arme.system.categorie == "lourde" ) {
|
||||
rollData.degatsArme += actor.system.caracteristiques.for.value
|
||||
}
|
||||
if (rollData.arme.system.categorie == "blanche" || rollData.arme.system.categorie == "improvise" ) {
|
||||
rollData.degatsArme += Math.max(0, actor.system.caracteristiques.for.value - 2)
|
||||
}
|
||||
}
|
||||
|
||||
this.createChatWithRollMode(rollData.alias, {
|
||||
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-generic-result.html`, rollData)
|
||||
}, rollData)
|
||||
|
||||
// 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)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -403,7 +570,7 @@ export class HeritiersUtility {
|
||||
|
||||
let bonusRoll = new Roll(rollData.bonusFormula).roll({ async: false })
|
||||
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
|
||||
rollData.bonusRoll = bonusRoll
|
||||
rollData.bonusRoll = duplicate(bonusRoll)
|
||||
|
||||
rollData.finalResult += rollData.bonusRoll.total
|
||||
|
||||
@@ -420,6 +587,10 @@ export class HeritiersUtility {
|
||||
return game.users.filter(filter).map(user => user._id);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static isArmeMelee(arme) {
|
||||
return (arme.type == "arme" && (arme.system.categorie == "lourde" || arme.system.categorie == "blanche" || arme.system.categorie == "improvise")) ? true : false
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
static getWhisperRecipients(rollMode, name) {
|
||||
switch (rollMode) {
|
||||
@@ -504,8 +675,14 @@ export class HeritiersUtility {
|
||||
rollId: randomID(16),
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
sdList: game.system.lesheritiers.config.seuilsDifficulte,
|
||||
sdValue: 0,
|
||||
bonusMalusContext: 0
|
||||
sdValue: -1,
|
||||
bonusAttaquePlusieurs: 0,
|
||||
attaqueDeuxArmes: 0,
|
||||
attaqueDos: false,
|
||||
bonusMalusContext: 0,
|
||||
attaqueCible: "none",
|
||||
config: game.system.lesheritiers.config,
|
||||
rulesMalus: []
|
||||
}
|
||||
return rollData
|
||||
}
|
||||
@@ -516,18 +693,18 @@ export class HeritiersUtility {
|
||||
if (target) {
|
||||
rollData.defenderTokenId = target.id
|
||||
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
|
||||
rollData.armeDefense = defender.getBestDefenseValue()
|
||||
rollData.targetVigueur = defender.getVigueur()
|
||||
if (rollData.armeDefense) {
|
||||
rollData.difficulte = rollData.armeDefense.system.totalDefensif
|
||||
} else {
|
||||
ui.notifications.warn("Aucune arme de défense équipée, difficulté manuelle à positionner.")
|
||||
}
|
||||
rollData.defenderName = defender.name
|
||||
rollData.defenderParade = defender.getCurrentParade()
|
||||
rollData.defenderEsquive = defender.getCurrentEsquive()
|
||||
rollData.defenderResistancePhysique = defender.getCurrentResistancePhysique()
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
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)
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
BIN
packs/archetypes-fees/000005.ldb
Normal file
BIN
packs/archetypes-fees/000005.ldb
Normal file
Binary file not shown.
0
packs/archetypes-fees/000040.log
Normal file
0
packs/archetypes-fees/000040.log
Normal file
1
packs/archetypes-fees/CURRENT
Normal file
1
packs/archetypes-fees/CURRENT
Normal file
@@ -0,0 +1 @@
|
||||
MANIFEST-000038
|
||||
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/03/06-18:44:25.568521 7f0ad34006c0 Recovering log #36
|
||||
2024/03/06-18:44:25.578793 7f0ad34006c0 Delete type=3 #34
|
||||
2024/03/06-18:44:25.578840 7f0ad34006c0 Delete type=0 #36
|
||||
2024/03/06-18:46:24.175017 7f0ad20006c0 Level-0 table #41: started
|
||||
2024/03/06-18:46:24.175038 7f0ad20006c0 Level-0 table #41: 0 bytes OK
|
||||
2024/03/06-18:46:24.182284 7f0ad20006c0 Delete type=0 #39
|
||||
2024/03/06-18:46:24.188691 7f0ad20006c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:46:24.195894 7f0ad20006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
8
packs/archetypes-fees/LOG.old
Normal file
8
packs/archetypes-fees/LOG.old
Normal file
@@ -0,0 +1,8 @@
|
||||
2024/03/06-18:38:24.774853 7f0ad34006c0 Recovering log #32
|
||||
2024/03/06-18:38:24.785470 7f0ad34006c0 Delete type=3 #30
|
||||
2024/03/06-18:38:24.785662 7f0ad34006c0 Delete type=0 #32
|
||||
2024/03/06-18:42:43.343014 7f0ad20006c0 Level-0 table #37: started
|
||||
2024/03/06-18:42:43.343041 7f0ad20006c0 Level-0 table #37: 0 bytes OK
|
||||
2024/03/06-18:42:43.348988 7f0ad20006c0 Delete type=0 #35
|
||||
2024/03/06-18:42:43.349144 7f0ad20006c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:42:43.349169 7f0ad20006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/archetypes-fees/MANIFEST-000038
Normal file
BIN
packs/archetypes-fees/MANIFEST-000038
Normal file
Binary file not shown.
BIN
packs/armes-et-protection/000005.ldb
Normal file
BIN
packs/armes-et-protection/000005.ldb
Normal file
Binary file not shown.
0
packs/armes-et-protection/000040.log
Normal file
0
packs/armes-et-protection/000040.log
Normal file
1
packs/armes-et-protection/CURRENT
Normal file
1
packs/armes-et-protection/CURRENT
Normal file
@@ -0,0 +1 @@
|
||||
MANIFEST-000038
|
||||
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/03/06-18:44:25.594975 7f0ad34006c0 Recovering log #36
|
||||
2024/03/06-18:44:25.604899 7f0ad34006c0 Delete type=3 #34
|
||||
2024/03/06-18:44:25.605412 7f0ad34006c0 Delete type=0 #36
|
||||
2024/03/06-18:46:24.188713 7f0ad20006c0 Level-0 table #41: started
|
||||
2024/03/06-18:46:24.188737 7f0ad20006c0 Level-0 table #41: 0 bytes OK
|
||||
2024/03/06-18:46:24.195790 7f0ad20006c0 Delete type=0 #39
|
||||
2024/03/06-18:46:24.202331 7f0ad20006c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:46:24.209583 7f0ad20006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
8
packs/armes-et-protection/LOG.old
Normal file
8
packs/armes-et-protection/LOG.old
Normal file
@@ -0,0 +1,8 @@
|
||||
2024/03/06-18:38:24.800967 7f0ad34006c0 Recovering log #32
|
||||
2024/03/06-18:38:24.811663 7f0ad34006c0 Delete type=3 #30
|
||||
2024/03/06-18:38:24.811726 7f0ad34006c0 Delete type=0 #32
|
||||
2024/03/06-18:42:43.329313 7f0ad20006c0 Level-0 table #37: started
|
||||
2024/03/06-18:42:43.329342 7f0ad20006c0 Level-0 table #37: 0 bytes OK
|
||||
2024/03/06-18:42:43.335373 7f0ad20006c0 Delete type=0 #35
|
||||
2024/03/06-18:42:43.349122 7f0ad20006c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:42:43.349153 7f0ad20006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/armes-et-protection/MANIFEST-000038
Normal file
BIN
packs/armes-et-protection/MANIFEST-000038
Normal file
Binary file not shown.
BIN
packs/atouts-feeriques/000005.ldb
Normal file
BIN
packs/atouts-feeriques/000005.ldb
Normal file
Binary file not shown.
0
packs/atouts-feeriques/000040.log
Normal file
0
packs/atouts-feeriques/000040.log
Normal file
1
packs/atouts-feeriques/CURRENT
Normal file
1
packs/atouts-feeriques/CURRENT
Normal file
@@ -0,0 +1 @@
|
||||
MANIFEST-000038
|
||||
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/03/06-18:44:25.556505 7f0ad94006c0 Recovering log #36
|
||||
2024/03/06-18:44:25.565851 7f0ad94006c0 Delete type=3 #34
|
||||
2024/03/06-18:44:25.565906 7f0ad94006c0 Delete type=0 #36
|
||||
2024/03/06-18:46:24.168720 7f0ad20006c0 Level-0 table #41: started
|
||||
2024/03/06-18:46:24.168740 7f0ad20006c0 Level-0 table #41: 0 bytes OK
|
||||
2024/03/06-18:46:24.174891 7f0ad20006c0 Delete type=0 #39
|
||||
2024/03/06-18:46:24.182563 7f0ad20006c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:46:24.188703 7f0ad20006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
8
packs/atouts-feeriques/LOG.old
Normal file
8
packs/atouts-feeriques/LOG.old
Normal file
@@ -0,0 +1,8 @@
|
||||
2024/03/06-18:38:24.762318 7f0ad3e006c0 Recovering log #32
|
||||
2024/03/06-18:38:24.771804 7f0ad3e006c0 Delete type=3 #30
|
||||
2024/03/06-18:38:24.772061 7f0ad3e006c0 Delete type=0 #32
|
||||
2024/03/06-18:42:43.316209 7f0ad20006c0 Level-0 table #37: started
|
||||
2024/03/06-18:42:43.316229 7f0ad20006c0 Level-0 table #37: 0 bytes OK
|
||||
2024/03/06-18:42:43.322596 7f0ad20006c0 Delete type=0 #35
|
||||
2024/03/06-18:42:43.322731 7f0ad20006c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:42:43.322763 7f0ad20006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/atouts-feeriques/MANIFEST-000038
Normal file
BIN
packs/atouts-feeriques/MANIFEST-000038
Normal file
Binary file not shown.
BIN
packs/avantages/000005.ldb
Normal file
BIN
packs/avantages/000005.ldb
Normal file
Binary file not shown.
0
packs/avantages/000040.log
Normal file
0
packs/avantages/000040.log
Normal file
1
packs/avantages/CURRENT
Normal file
1
packs/avantages/CURRENT
Normal file
@@ -0,0 +1 @@
|
||||
MANIFEST-000038
|
||||
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/03/06-18:44:25.520679 7f0ad34006c0 Recovering log #36
|
||||
2024/03/06-18:44:25.530573 7f0ad34006c0 Delete type=3 #34
|
||||
2024/03/06-18:44:25.530645 7f0ad34006c0 Delete type=0 #36
|
||||
2024/03/06-18:46:24.149265 7f0ad20006c0 Level-0 table #41: started
|
||||
2024/03/06-18:46:24.149287 7f0ad20006c0 Level-0 table #41: 0 bytes OK
|
||||
2024/03/06-18:46:24.155653 7f0ad20006c0 Delete type=0 #39
|
||||
2024/03/06-18:46:24.161941 7f0ad20006c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:46:24.168702 7f0ad20006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
8
packs/avantages/LOG.old
Normal file
8
packs/avantages/LOG.old
Normal file
@@ -0,0 +1,8 @@
|
||||
2024/03/06-18:38:24.726349 7f0ad34006c0 Recovering log #32
|
||||
2024/03/06-18:38:24.736299 7f0ad34006c0 Delete type=3 #30
|
||||
2024/03/06-18:38:24.736397 7f0ad34006c0 Delete type=0 #32
|
||||
2024/03/06-18:42:43.296768 7f0ad20006c0 Level-0 table #37: started
|
||||
2024/03/06-18:42:43.296798 7f0ad20006c0 Level-0 table #37: 0 bytes OK
|
||||
2024/03/06-18:42:43.302818 7f0ad20006c0 Delete type=0 #35
|
||||
2024/03/06-18:42:43.316198 7f0ad20006c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:42:43.322723 7f0ad20006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/avantages/MANIFEST-000038
Normal file
BIN
packs/avantages/MANIFEST-000038
Normal file
Binary file not shown.
BIN
packs/capacites/000005.ldb
Normal file
BIN
packs/capacites/000005.ldb
Normal file
Binary file not shown.
0
packs/capacites/000040.log
Normal file
0
packs/capacites/000040.log
Normal file
1
packs/capacites/CURRENT
Normal file
1
packs/capacites/CURRENT
Normal file
@@ -0,0 +1 @@
|
||||
MANIFEST-000038
|
||||
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/03/06-18:44:25.544510 7f0ad34006c0 Recovering log #36
|
||||
2024/03/06-18:44:25.554577 7f0ad34006c0 Delete type=3 #34
|
||||
2024/03/06-18:44:25.554623 7f0ad34006c0 Delete type=0 #36
|
||||
2024/03/06-18:46:24.161959 7f0ad20006c0 Level-0 table #41: started
|
||||
2024/03/06-18:46:24.161984 7f0ad20006c0 Level-0 table #41: 0 bytes OK
|
||||
2024/03/06-18:46:24.168612 7f0ad20006c0 Delete type=0 #39
|
||||
2024/03/06-18:46:24.174998 7f0ad20006c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:46:24.182577 7f0ad20006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
8
packs/capacites/LOG.old
Normal file
8
packs/capacites/LOG.old
Normal file
@@ -0,0 +1,8 @@
|
||||
2024/03/06-18:38:24.750612 7f0ad34006c0 Recovering log #32
|
||||
2024/03/06-18:38:24.760735 7f0ad34006c0 Delete type=3 #30
|
||||
2024/03/06-18:38:24.760785 7f0ad34006c0 Delete type=0 #32
|
||||
2024/03/06-18:42:43.302940 7f0ad20006c0 Level-0 table #37: started
|
||||
2024/03/06-18:42:43.302963 7f0ad20006c0 Level-0 table #37: 0 bytes OK
|
||||
2024/03/06-18:42:43.309925 7f0ad20006c0 Delete type=0 #35
|
||||
2024/03/06-18:42:43.322702 7f0ad20006c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:42:43.322749 7f0ad20006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/capacites/MANIFEST-000038
Normal file
BIN
packs/capacites/MANIFEST-000038
Normal file
Binary file not shown.
BIN
packs/competences/000005.ldb
Normal file
BIN
packs/competences/000005.ldb
Normal file
Binary file not shown.
0
packs/competences/000040.log
Normal file
0
packs/competences/000040.log
Normal file
1
packs/competences/CURRENT
Normal file
1
packs/competences/CURRENT
Normal file
@@ -0,0 +1 @@
|
||||
MANIFEST-000038
|
||||
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/03/06-18:44:25.508577 7f0ad94006c0 Recovering log #36
|
||||
2024/03/06-18:44:25.518629 7f0ad94006c0 Delete type=3 #34
|
||||
2024/03/06-18:44:25.518679 7f0ad94006c0 Delete type=0 #36
|
||||
2024/03/06-18:46:24.142406 7f0ad20006c0 Level-0 table #41: started
|
||||
2024/03/06-18:46:24.142437 7f0ad20006c0 Level-0 table #41: 0 bytes OK
|
||||
2024/03/06-18:46:24.149137 7f0ad20006c0 Delete type=0 #39
|
||||
2024/03/06-18:46:24.155816 7f0ad20006c0 Manual compaction at level-0 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:46:24.161951 7f0ad20006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
8
packs/competences/LOG.old
Normal file
8
packs/competences/LOG.old
Normal file
@@ -0,0 +1,8 @@
|
||||
2024/03/06-18:38:24.713502 7f0ad3e006c0 Recovering log #32
|
||||
2024/03/06-18:38:24.724430 7f0ad3e006c0 Delete type=3 #30
|
||||
2024/03/06-18:38:24.724484 7f0ad3e006c0 Delete type=0 #32
|
||||
2024/03/06-18:42:43.280171 7f0ad20006c0 Level-0 table #37: started
|
||||
2024/03/06-18:42:43.280236 7f0ad20006c0 Level-0 table #37: 0 bytes OK
|
||||
2024/03/06-18:42:43.286427 7f0ad20006c0 Delete type=0 #35
|
||||
2024/03/06-18:42:43.286549 7f0ad20006c0 Manual compaction at level-0 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:42:43.296750 7f0ad20006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/competences/MANIFEST-000038
Normal file
BIN
packs/competences/MANIFEST-000038
Normal file
Binary file not shown.
BIN
packs/desavantages/000005.ldb
Normal file
BIN
packs/desavantages/000005.ldb
Normal file
Binary file not shown.
0
packs/desavantages/000040.log
Normal file
0
packs/desavantages/000040.log
Normal file
1
packs/desavantages/CURRENT
Normal file
1
packs/desavantages/CURRENT
Normal file
@@ -0,0 +1 @@
|
||||
MANIFEST-000038
|
||||
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/03/06-18:44:25.532864 7f0ad94006c0 Recovering log #36
|
||||
2024/03/06-18:44:25.542781 7f0ad94006c0 Delete type=3 #34
|
||||
2024/03/06-18:44:25.542832 7f0ad94006c0 Delete type=0 #36
|
||||
2024/03/06-18:46:24.155844 7f0ad20006c0 Level-0 table #41: started
|
||||
2024/03/06-18:46:24.155874 7f0ad20006c0 Level-0 table #41: 0 bytes OK
|
||||
2024/03/06-18:46:24.161851 7f0ad20006c0 Delete type=0 #39
|
||||
2024/03/06-18:46:24.168712 7f0ad20006c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:46:24.175009 7f0ad20006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
8
packs/desavantages/LOG.old
Normal file
8
packs/desavantages/LOG.old
Normal file
@@ -0,0 +1,8 @@
|
||||
2024/03/06-18:38:24.738330 7f0ad3e006c0 Recovering log #32
|
||||
2024/03/06-18:38:24.748511 7f0ad3e006c0 Delete type=3 #30
|
||||
2024/03/06-18:38:24.748603 7f0ad3e006c0 Delete type=0 #32
|
||||
2024/03/06-18:42:43.310037 7f0ad20006c0 Level-0 table #37: started
|
||||
2024/03/06-18:42:43.310060 7f0ad20006c0 Level-0 table #37: 0 bytes OK
|
||||
2024/03/06-18:42:43.316084 7f0ad20006c0 Delete type=0 #35
|
||||
2024/03/06-18:42:43.322714 7f0ad20006c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:42:43.322757 7f0ad20006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/desavantages/MANIFEST-000038
Normal file
BIN
packs/desavantages/MANIFEST-000038
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":"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":"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":"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}}
|
||||
|
||||
BIN
packs/pouvoirs/000005.ldb
Normal file
BIN
packs/pouvoirs/000005.ldb
Normal file
Binary file not shown.
0
packs/pouvoirs/000040.log
Normal file
0
packs/pouvoirs/000040.log
Normal file
1
packs/pouvoirs/CURRENT
Normal file
1
packs/pouvoirs/CURRENT
Normal file
@@ -0,0 +1 @@
|
||||
MANIFEST-000038
|
||||
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/03/06-18:44:25.581915 7f0ad94006c0 Recovering log #36
|
||||
2024/03/06-18:44:25.592375 7f0ad94006c0 Delete type=3 #34
|
||||
2024/03/06-18:44:25.592428 7f0ad94006c0 Delete type=0 #36
|
||||
2024/03/06-18:46:24.182586 7f0ad20006c0 Level-0 table #41: started
|
||||
2024/03/06-18:46:24.182611 7f0ad20006c0 Level-0 table #41: 0 bytes OK
|
||||
2024/03/06-18:46:24.188586 7f0ad20006c0 Delete type=0 #39
|
||||
2024/03/06-18:46:24.195882 7f0ad20006c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:46:24.202340 7f0ad20006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
8
packs/pouvoirs/LOG.old
Normal file
8
packs/pouvoirs/LOG.old
Normal file
@@ -0,0 +1,8 @@
|
||||
2024/03/06-18:38:24.787435 7f0ad3e006c0 Recovering log #32
|
||||
2024/03/06-18:38:24.797940 7f0ad3e006c0 Delete type=3 #30
|
||||
2024/03/06-18:38:24.798012 7f0ad3e006c0 Delete type=0 #32
|
||||
2024/03/06-18:42:43.335473 7f0ad20006c0 Level-0 table #37: started
|
||||
2024/03/06-18:42:43.335496 7f0ad20006c0 Level-0 table #37: 0 bytes OK
|
||||
2024/03/06-18:42:43.342907 7f0ad20006c0 Delete type=0 #35
|
||||
2024/03/06-18:42:43.349133 7f0ad20006c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:42:43.349161 7f0ad20006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/pouvoirs/MANIFEST-000038
Normal file
BIN
packs/pouvoirs/MANIFEST-000038
Normal file
Binary file not shown.
0
packs/profils/000040.log
Normal file
0
packs/profils/000040.log
Normal file
1
packs/profils/CURRENT
Normal file
1
packs/profils/CURRENT
Normal file
@@ -0,0 +1 @@
|
||||
MANIFEST-000038
|
||||
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/03/06-18:44:25.607498 7f0ad94006c0 Recovering log #36
|
||||
2024/03/06-18:44:25.619089 7f0ad94006c0 Delete type=3 #34
|
||||
2024/03/06-18:44:25.619169 7f0ad94006c0 Delete type=0 #36
|
||||
2024/03/06-18:46:24.195903 7f0ad20006c0 Level-0 table #41: started
|
||||
2024/03/06-18:46:24.195928 7f0ad20006c0 Level-0 table #41: 0 bytes OK
|
||||
2024/03/06-18:46:24.202215 7f0ad20006c0 Delete type=0 #39
|
||||
2024/03/06-18:46:24.209558 7f0ad20006c0 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/03/06-18:38:24.814232 7f0ad3e006c0 Recovering log #32
|
||||
2024/03/06-18:38:24.824843 7f0ad3e006c0 Delete type=3 #30
|
||||
2024/03/06-18:38:24.824931 7f0ad3e006c0 Delete type=0 #32
|
||||
2024/03/06-18:42:43.322942 7f0ad20006c0 Level-0 table #37: started
|
||||
2024/03/06-18:42:43.322968 7f0ad20006c0 Level-0 table #37: 0 bytes OK
|
||||
2024/03/06-18:42:43.329218 7f0ad20006c0 Delete type=0 #35
|
||||
2024/03/06-18:42:43.349108 7f0ad20006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/profils/MANIFEST-000038
Normal file
BIN
packs/profils/MANIFEST-000038
Normal file
Binary file not shown.
BIN
packs/scenes/000005.ldb
Normal file
BIN
packs/scenes/000005.ldb
Normal file
Binary file not shown.
0
packs/scenes/000008.log
Normal file
0
packs/scenes/000008.log
Normal file
1
packs/scenes/CURRENT
Normal file
1
packs/scenes/CURRENT
Normal file
@@ -0,0 +1 @@
|
||||
MANIFEST-000006
|
||||
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/03/06-18:44:25.621882 7f0ad34006c0 Recovering log #4
|
||||
2024/03/06-18:44:25.632172 7f0ad34006c0 Delete type=3 #2
|
||||
2024/03/06-18:44:25.632258 7f0ad34006c0 Delete type=0 #4
|
||||
2024/03/06-18:46:24.202350 7f0ad20006c0 Level-0 table #9: started
|
||||
2024/03/06-18:46:24.202372 7f0ad20006c0 Level-0 table #9: 0 bytes OK
|
||||
2024/03/06-18:46:24.209447 7f0ad20006c0 Delete type=0 #7
|
||||
2024/03/06-18:46:24.216156 7f0ad20006c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2024/03/06-18:46:24.216180 7f0ad20006c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
5
packs/scenes/LOG.old
Normal file
5
packs/scenes/LOG.old
Normal file
@@ -0,0 +1,5 @@
|
||||
2024/03/06-18:38:24.841322 7f0ad8a006c0 Delete type=3 #1
|
||||
2024/03/06-18:42:43.349231 7f0ad20006c0 Level-0 table #5: started
|
||||
2024/03/06-18:42:43.352595 7f0ad20006c0 Level-0 table #5: 1578 bytes OK
|
||||
2024/03/06-18:42:43.359762 7f0ad20006c0 Delete type=0 #3
|
||||
2024/03/06-18:42:43.366135 7f0ad20006c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/scenes/MANIFEST-000006
Normal file
BIN
packs/scenes/MANIFEST-000006
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 {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
.fvtt-les-heritiers .sheet-header select option {
|
||||
background-color: rgb(68, 25, 25);
|
||||
}
|
||||
|
||||
.fvtt-les-heritiers .sheet-header input, .fvtt-les-heritiers .sheet-header select {
|
||||
color: rgb(41, 38, 38);
|
||||
}
|
||||
@@ -88,6 +86,13 @@
|
||||
background: rgba(0,0,0,0.75);
|
||||
}
|
||||
|
||||
.page-heading {
|
||||
color: #151c1f;
|
||||
}
|
||||
.heading-link {
|
||||
color: #151c1f;
|
||||
}
|
||||
|
||||
.window-app.sheet .window-content {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
@@ -438,7 +443,7 @@ table {border: 1px solid #7a7971;}
|
||||
background-repeat: repeat;
|
||||
}
|
||||
|
||||
.window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header 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);*/
|
||||
/*background: rgba(255, 255, 255, 0.05);*/
|
||||
/*border: 2px saddlebrown;*/
|
||||
@@ -568,6 +573,7 @@ ul, li {
|
||||
|
||||
.specialisation-label {
|
||||
font-size: 0.8rem;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.carac-label,
|
||||
@@ -653,6 +659,9 @@ ul, li {
|
||||
padding-left: 0.25rem;
|
||||
margin-right: 0.25rem;
|
||||
}
|
||||
.specialisarion-margin {
|
||||
margin-left: 1.5rem;
|
||||
}
|
||||
.short-label {
|
||||
flex-grow: 1;
|
||||
}
|
||||
@@ -1015,8 +1024,6 @@ ul, li {
|
||||
}
|
||||
|
||||
#sidebar #sidebar-tabs i{
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
display: inline-block;
|
||||
background-position:center;
|
||||
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 */
|
||||
|
||||
@@ -1209,7 +1199,17 @@ ul, li {
|
||||
top:1px;
|
||||
}
|
||||
|
||||
h4.entry-name.document-name {
|
||||
color: #f3eeee;
|
||||
}
|
||||
.compendium h4.entry-name.document-name {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.fxmaster {
|
||||
background: #443e37E0;
|
||||
background-color: #443e37E0;
|
||||
}
|
||||
.button-sheet-roll {
|
||||
box-shadow: inset 0px 1px 0px 0px #a6827e;
|
||||
background: linear-gradient(to bottom, #41545a 5%, #2e5561 100%);
|
||||
@@ -1233,11 +1233,25 @@ ul, li {
|
||||
background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
|
||||
background-color: rgb(56, 33, 33);
|
||||
}
|
||||
.roll-tricherie-2 {
|
||||
margin: 2px 2px 2px 2px;
|
||||
box-shadow: inset 0px 1px 0px 0px #a6827e;
|
||||
background: linear-gradient(to bottom, #41545a 5%, #2e5561 100%);
|
||||
background-color: #7d5d3b00;
|
||||
border-radius: 4px;
|
||||
border: 1px ridge #846109;
|
||||
padding: 1px 1px 0px 1px;
|
||||
text-decoration: none;
|
||||
text-shadow: 0px 1px 0px #4d3534;
|
||||
}
|
||||
.button-sheet-roll:active {
|
||||
position:relative;
|
||||
top:1px;
|
||||
}
|
||||
|
||||
.button-sheet-roll-long1 {
|
||||
max-width: 6.1rem;
|
||||
min-width: 6.1rem;
|
||||
}
|
||||
.defense-sheet {
|
||||
border-radius: 4px;
|
||||
text-align: center;
|
||||
|
||||
137
system.json
137
system.json
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "fvtt-les-heritiers",
|
||||
"description": "Les Héritiers pour FoundryVTT",
|
||||
"version": "10.0.24",
|
||||
"version": "11.0.7",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Uberwald/LeRatierBretonnien",
|
||||
@@ -19,7 +19,7 @@
|
||||
"gridUnits": "m",
|
||||
"license": "LICENSE.txt",
|
||||
"manifest": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/raw/branch/master/system.json",
|
||||
"download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-10.0.24.zip",
|
||||
"download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-11.0.7.zip",
|
||||
"languages": [
|
||||
{
|
||||
"lang": "fr",
|
||||
@@ -28,87 +28,163 @@
|
||||
"flags": {}
|
||||
}
|
||||
],
|
||||
"packFolders": [
|
||||
{
|
||||
"name": "Les Héritiers",
|
||||
"sorting": "m",
|
||||
"color": "#00435c",
|
||||
"folders": [
|
||||
{
|
||||
"name": "Création de Personnage",
|
||||
"sorting": "a",
|
||||
"color": "#00435c",
|
||||
"packs": [
|
||||
"competences",
|
||||
"atouts-feeriques",
|
||||
"avantages",
|
||||
"capacites",
|
||||
"competences",
|
||||
"desavantages",
|
||||
"pouvoirs",
|
||||
"profils",
|
||||
"archetypes-fees"
|
||||
],
|
||||
"folders": []
|
||||
},
|
||||
{
|
||||
"name": "Equipement",
|
||||
"sorting": "a",
|
||||
"color": "#00435c",
|
||||
"packs": [
|
||||
"armes-et-protection"
|
||||
],
|
||||
"folders": []
|
||||
}
|
||||
],
|
||||
"packs":
|
||||
["scenes"]
|
||||
}
|
||||
],
|
||||
"packs": [
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Compétences",
|
||||
"name": "competences",
|
||||
"path": "packs/competences.db",
|
||||
"path": "packs/competences",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"private": false,
|
||||
"flags": {}
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Avantages",
|
||||
"name": "avantages",
|
||||
"path": "packs/avantages.db",
|
||||
"path": "packs/avantages",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"private": false,
|
||||
"flags": {}
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Désavantages",
|
||||
"name": "desavantages",
|
||||
"path": "packs/desavantages.db",
|
||||
"path": "packs/desavantages",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"private": false,
|
||||
"flags": {}
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Capacités Naturelles",
|
||||
"name": "capacites",
|
||||
"path": "packs/capacites.db",
|
||||
"path": "packs/capacites",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"private": false,
|
||||
"flags": {}
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Atouts Féériques",
|
||||
"name": "atouts-feeriques",
|
||||
"path": "packs/atouts-feeriques.db",
|
||||
"path": "packs/atouts-feeriques",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"private": false,
|
||||
"flags": {}
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Fées",
|
||||
"name": "archetypes-fees",
|
||||
"path": "packs/archetypes-fees.db",
|
||||
"path": "packs/archetypes-fees",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"private": false,
|
||||
"flags": {}
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Pouvoirs",
|
||||
"name": "pouvoirs",
|
||||
"path": "packs/pouvoirs.db",
|
||||
"path": "packs/pouvoirs",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"private": false,
|
||||
"flags": {}
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Armes et Protections",
|
||||
"name": "armes-et-protection",
|
||||
"path": "packs/armes-et-protection.db",
|
||||
"path": "packs/armes-et-protection",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"private": false,
|
||||
"flags": {}
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Profils",
|
||||
"name": "profils",
|
||||
"path": "packs/profils.db",
|
||||
"path": "packs/profils",
|
||||
"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",
|
||||
@@ -122,7 +198,6 @@
|
||||
"background": "systems/fvtt-les-heritiers/assets/ui/wallpaper_foundry2.webp",
|
||||
"compatibility": {
|
||||
"minimum": "10",
|
||||
"verified": "10",
|
||||
"maximum": "10"
|
||||
"verified": "11"
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"Actor": {
|
||||
"types": [
|
||||
"personnage",
|
||||
"creature"
|
||||
"pnj"
|
||||
],
|
||||
"templates": {
|
||||
"biodata": {
|
||||
@@ -36,6 +36,7 @@
|
||||
"habitat": "",
|
||||
"notes": "",
|
||||
"statut": "",
|
||||
"playernotes":"",
|
||||
"gmnotes": ""
|
||||
}
|
||||
},
|
||||
@@ -115,20 +116,25 @@
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
"statutmasque": "masque",
|
||||
"rang": {
|
||||
"tricherie": {
|
||||
"label": "Tricherie",
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"feerie": {
|
||||
"label": "Féerie",
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"masque": {
|
||||
"label": "Masque",
|
||||
"value": 0,
|
||||
"max": 0
|
||||
},
|
||||
"heritage": {
|
||||
"label": "Héritage",
|
||||
"value": 0,
|
||||
"max": 0,
|
||||
"scenarios": 0
|
||||
@@ -141,31 +147,37 @@
|
||||
"competences": {
|
||||
"aventurier": {
|
||||
"label": "Aventurier",
|
||||
"niveau": 0,
|
||||
"rang": 0,
|
||||
"pp": 0
|
||||
},
|
||||
"combattant": {
|
||||
"label": "Aventurier",
|
||||
"niveau": 0,
|
||||
"rang": 0,
|
||||
"pp": 0
|
||||
},
|
||||
"erudit": {
|
||||
"label": "Erudit",
|
||||
"niveau": 0,
|
||||
"rang": 0,
|
||||
"pp": 0
|
||||
},
|
||||
"gentleman": {
|
||||
"label": "Gentleman",
|
||||
"niveau": 0,
|
||||
"rang": 0,
|
||||
"pp": 0
|
||||
},
|
||||
"roublard": {
|
||||
"label": "Roublard",
|
||||
"niveau": 0,
|
||||
"rang": 0,
|
||||
"pp": 0
|
||||
},
|
||||
"savant": {
|
||||
"label": "Savant",
|
||||
"niveau": 0,
|
||||
"rang": 0,
|
||||
"pp": 0
|
||||
}
|
||||
@@ -180,6 +192,8 @@
|
||||
"demasquee": 0
|
||||
},
|
||||
"parade": {
|
||||
"masquee": 0,
|
||||
"demasquee": 0,
|
||||
"value": 0
|
||||
},
|
||||
"resistancephysique": {
|
||||
@@ -219,6 +233,12 @@
|
||||
"biodata",
|
||||
"core"
|
||||
]
|
||||
},
|
||||
"pnj": {
|
||||
"templates": [
|
||||
"biodata",
|
||||
"core"
|
||||
]
|
||||
}
|
||||
},
|
||||
"Item": {
|
||||
@@ -234,19 +254,19 @@
|
||||
}
|
||||
},
|
||||
"types": [
|
||||
"fee",
|
||||
"avantage",
|
||||
"desavantage",
|
||||
"capacitenaturelle",
|
||||
"pouvoir",
|
||||
"atoutfeerique",
|
||||
"competence",
|
||||
"arme",
|
||||
"protection",
|
||||
"equipement",
|
||||
"accessoire",
|
||||
"arme",
|
||||
"atoutfeerique",
|
||||
"avantage",
|
||||
"capacitenaturelle",
|
||||
"competence",
|
||||
"contact",
|
||||
"profil"
|
||||
"desavantage",
|
||||
"equipement",
|
||||
"fee",
|
||||
"pouvoir",
|
||||
"profil",
|
||||
"protection"
|
||||
],
|
||||
"profil": {
|
||||
"profiltype": "majeur",
|
||||
|
||||
480
templates/actor-pnj-sheet.html
Normal file
480
templates/actor-pnj-sheet.html
Normal file
@@ -0,0 +1,480 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
|
||||
{{!-- Sheet Header --}}
|
||||
<header class="sheet-header">
|
||||
<div class="header-fields background-sheet-header">
|
||||
<div class="flexrow">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
|
||||
<div class="flexcol">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
||||
<div class="flexrow">
|
||||
|
||||
<div class="flexrow">
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each system.caracteristiques as |carac key|}}
|
||||
{{#if (eq kind "physical")}}
|
||||
<li class="item flexrow ">
|
||||
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-dtype="Number" />
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.rang" value="{{carac.rang}}" data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each system.caracteristiques as |carac key|}}
|
||||
{{#if (eq kind "mental")}}
|
||||
<li class="item flexrow ">
|
||||
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-dtype="Number" />
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.rang" value="{{carac.rang}}" data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<label class="item-field-label-short">PV</label>
|
||||
<input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" data-dtype="Number" />
|
||||
<label class="item-field-label-short">Malus</label>
|
||||
<input type="text" class="item-field-label-short" value="{{pvMalus.value}}" data-dtype="Number" disabled />
|
||||
<span> </span>
|
||||
|
||||
<select class="item-field-label-medium" type="text" name="system.statutmasque" value="{{system.statutmasque}}" data-dtype="string">
|
||||
{{#select system.statutmasque}}
|
||||
{{#each config.statutMasque as |categ cKey|}}
|
||||
<option value="{{cKey}}">{{categ}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
|
||||
<span> </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">
|
||||
{{#select skill.system.niveau}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
|
||||
{{/select}}
|
||||
</select>
|
||||
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Equipement Tab --}}
|
||||
<div class="tab combat" data-group="primary" data-tab="combat">
|
||||
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<button class="chat-card-button roll-initiative">Initiative (actuelle : {{initiative}} )</button>
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-medium"><strong>Esquive</strong></label>
|
||||
<label class="item-field-label-medium">Masquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.masquee" value="{{system.combat.esquive.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee" value="{{system.combat.esquive.demasquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium"><strong>Parade</strong></label>
|
||||
<label class="item-field-label-medium">Masquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.parade.masquee" value="{{system.combat.parade.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.parade.demasquee" value="{{system.combat.parade.demasquee}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long">Rés. physique</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.resistancephysique.value" value="{{system.combat.resistancephysique.value}}" data-dtype="Number" />
|
||||
<label class="item-field-label-long">Rés. psychique</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.resistancepsychique.value" value="{{system.combat.resistancepsychique.value}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Protection : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.protection.value" value="{{system.combat.protection.value}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long">Effets secondaires</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.effetssecondaires" value="{{system.combat.effetssecondaires}}" data-dtype="String" />
|
||||
<label class="item-field-label-long">Dissimulation : </label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.dissimulation.value" value="{{system.combat.dissimulation.value}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long"><strong>Corps à Corps</strong></label>
|
||||
<label class="item-field-label-medium">Masqué</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.corpsacorps.masquee" value="{{system.combat.corpsacorps.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasqué</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.corpsacorps.demasquee" value="{{system.combat.corpsacorps.demasquee}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long"><strong>A distance</strong></label>
|
||||
<label class="item-field-label-medium">Masqué</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.tir.masquee" value="{{system.combat.tir.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasqué</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.tir.demasquee" value="{{system.combat.tir.demasquee}}" data-dtype="Number" />
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header">
|
||||
<h3><label class="items-title-text">Armes</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Attaque</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Dégats</label>
|
||||
</span>
|
||||
<div class="item-filler"> </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="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>
|
||||
|
||||
|
||||
{{!-- 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="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="feerie">Féerie</a></label>
|
||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.value" value="{{system.rang.feerie.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.max" value="{{system.rang.feerie.max}}" data-dtype="Number" />
|
||||
<span class="item-field-label-long"></span>
|
||||
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="masque">Masque</a></label>
|
||||
<input type="text" class="item-field-label-short" name="system.rang.masque.value" value="{{system.rang.masque.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.rang.masque.max" value="{{system.rang.masque.max}}" data-dtype="Number" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header">
|
||||
<h3><label class="items-title-text">Avantages</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
</div>
|
||||
</li>
|
||||
{{#each avantages as |avantage key|}}
|
||||
<li class="item flexrow " data-item-id="{{avantage._id}}" data-item-type="avantage">
|
||||
<img class="item-name-img" src="{{avantage.img}}" />
|
||||
<span class="item-field-label-long2">{{avantage.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header">
|
||||
<h3><label class="items-title-text">Désavantages</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
</div>
|
||||
</li>
|
||||
{{#each desavantages as |desavantage key|}}
|
||||
<li class="item flexrow " data-item-id="{{desavantage._id}}" data-item-type="desavantage">
|
||||
<img class="item-name-img" src="{{desavantage.img}}" />
|
||||
<span class="item-field-label-long2">{{desavantage.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header">
|
||||
<h3><label class="items-title-text">Atouts Féériques</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
</div>
|
||||
</li>
|
||||
{{#each atouts as |atout key|}}
|
||||
<li class="item flexrow " data-item-id="{{atout._id}}" data-item-type="atout">
|
||||
<img class="item-name-img" src="{{atout.img}}" />
|
||||
<span class="item-field-label-long2">{{atout.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long2-img">
|
||||
<h3><label class="items-title-text">Pouvoirs</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Masque</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Type</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
</div>
|
||||
</li>
|
||||
{{#each pouvoirs as |pouvoir key|}}
|
||||
<li class="item flexrow " data-item-id="{{pouvoir._id}}" data-item-type="pouvoir">
|
||||
<img class="item-name-img" src="{{pouvoir.img}}" />
|
||||
{{#if pouvoir.system.istest}}
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-pouvoir">{{pouvoir.name}}</a></span>
|
||||
{{else}}
|
||||
<span class="item-field-label-long2">{{pouvoir.name}}</span>
|
||||
{{/if}}
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.masquetype}}</span>
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.pouvoirtype}}</span>
|
||||
<span class="item-field-label-medium">{{upperFirst pouvoir.system.niveau}}</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header">
|
||||
<h3><label class="items-title-text">Capacités Naturelles</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
</div>
|
||||
</li>
|
||||
{{#each capacites as |capa key|}}
|
||||
<li class="item flexrow " data-item-id="{{capa._id}}" data-item-type="capacite">
|
||||
<img class="item-name-img" src="{{capa.img}}" />
|
||||
<span class="item-field-label-long2">{{capa.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header">
|
||||
<h3><label class="items-title-text">Equipements</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </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="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="tab notes" data-group="primary" data-tab="notes">
|
||||
<span>
|
||||
<h3>Historique</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</form>
|
||||
@@ -14,7 +14,7 @@
|
||||
{{#each system.caracteristiques as |carac key|}}
|
||||
{{#if (eq kind "physical")}}
|
||||
<li class="item flexrow ">
|
||||
<h4 class="item-name-label competence-name"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
||||
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-dtype="Number" />
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
@@ -30,7 +30,7 @@
|
||||
{{#each system.caracteristiques as |carac key|}}
|
||||
{{#if (eq kind "mental")}}
|
||||
<li class="item flexrow ">
|
||||
<h4 class="item-name-label competence-name"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
||||
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-dtype="Number" />
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
@@ -41,14 +41,23 @@
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<label class="item-field-label-short">PV</label>
|
||||
<input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" data-dtype="Number" />
|
||||
<label class="item-field-label-short">Malus</label>
|
||||
<input type="text" class="item-field-label-short" value="{{pvMalus}}" data-dtype="Number" disabled />
|
||||
<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">
|
||||
{{#select system.statutmasque}}
|
||||
{{#each config.statutMasque as |categ cKey|}}
|
||||
<option value="{{cKey}}">{{categ}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</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" />
|
||||
@@ -78,42 +87,21 @@
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
{{#each utileSkills as |skillList keyProfil|}}
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<span class="item-field-label-long">
|
||||
<h3><label class="items-title-text">{{upperFirst keyProfil}}</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<div class="item-filler"> </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>
|
||||
<div class="grid-2col">
|
||||
|
||||
<input type="checkbox" class="item-field-label-short edit-item-data" data-item-field="predilection" {{checked skill.system.predilection}}/>
|
||||
|
||||
<span class="item-field-label-long2">{{skill.specList}}</span>
|
||||
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
<div>
|
||||
{{#each utileSkillsPhysical as |skillDef keyProfil|}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{{#each utileSkillsMental as |skillDef keyProfil|}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{{/each}}
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
@@ -134,7 +122,7 @@
|
||||
<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}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
|
||||
{{/select}}
|
||||
</select>
|
||||
|
||||
@@ -164,37 +152,30 @@
|
||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.masquee" value="{{system.combat.esquive.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee" value="{{system.combat.esquive.demasquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-short"> </label>
|
||||
<label class="item-field-label-medium"><strong>Parade</strong></label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.parade.value" value="{{system.combat.parade.value}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Masquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.parade.masquee" value="{{system.combat.parade.masquee}}" data-dtype="Number" />
|
||||
<label class="item-field-label-medium">Démasquée</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.parade.demasquee" value="{{system.combat.parade.demasquee}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long">Rés. physique</label>
|
||||
<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>
|
||||
<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>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.protection.value" value="{{system.combat.protection.value}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<label class="item-field-label-long">Effets secondaires</label>
|
||||
<input type="text" class="item-field-label-short" name="system.combat.effetssecondaires" value="{{system.combat.effetssecondaires}}" data-dtype="String" />
|
||||
<label class="item-field-label-short"> </label>
|
||||
<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">
|
||||
@@ -206,10 +187,10 @@
|
||||
<h3><label class="items-title-text">Armes</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Attaque</label>
|
||||
<label class="short-label">Dégats</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Dégats</label>
|
||||
<label class="short-label">Attaque</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
@@ -223,13 +204,26 @@
|
||||
<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>
|
||||
{{arme.system.degats}}
|
||||
</span>
|
||||
|
||||
<span class="item-field-label-short">
|
||||
{{arme.system.degats}}
|
||||
<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-controls item-controls-fixed">
|
||||
<a class="item-control item-equip" title="Worn">{{#if arme.system.equipped}}<i
|
||||
@@ -295,11 +289,11 @@
|
||||
<div class="flexrow">
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium">Féerie</label>
|
||||
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="feerie">Féerie</a></label>
|
||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.value" value="{{system.rang.feerie.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.max" value="{{system.rang.feerie.max}}" data-dtype="Number" />
|
||||
<span class="item-field-label-long"></span>
|
||||
<label class="item-field-label-medium">Masque</label>
|
||||
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="masque">Masque</a></label>
|
||||
<input type="text" class="item-field-label-short" name="system.rang.masque.value" value="{{system.rang.masque.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.rang.masque.max" value="{{system.rang.masque.max}}" data-dtype="Number" />
|
||||
</li>
|
||||
@@ -482,7 +476,20 @@
|
||||
|
||||
{{!-- Contact Tab --}}
|
||||
<div class="tab contact" data-group="primary" data-tab="contact">
|
||||
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header item-field-label-long3">
|
||||
<h3><label class="items-title-text">Contacts, Allies et Ennemis</label></h3>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="contact" title="Créer un contact"><i class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
{{#each contacts as |contactList idx|}}
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
@@ -609,6 +616,10 @@
|
||||
<input type="text" class="" name="system.experience.typetaille" value="{{system.experience.typetaille}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label">Points d'héritage</label>
|
||||
<input type="text" class="" name="system.rang.heritage.value" value="{{system.rang.heritage.value}}" data-dtype="String" />
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
@@ -625,8 +636,18 @@
|
||||
<input type="text" class="" name="system.biodata.poidsdemasquee" value="{{system.biodata.poidsdemasquee}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">XP</label>
|
||||
<input type="text" class="" name="system.experience.value" value="{{system.experience.value}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">XP pour tricher</label>
|
||||
<input type="text" class="" name="system.experience.pourtricher" value="{{system.experience.pourtricher}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -637,18 +658,28 @@
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
<span>
|
||||
<h3>Notes diverses</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor playernotes target="system.biodata.playernotes" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
<span>
|
||||
<h3>Rêves étranges</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor revesetranges target="system.biodata.revesetranges" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
<span>
|
||||
<h3>Secrets découverts</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor secretsdecouverts target="system.biodata.secretsdecouverts" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
<span>
|
||||
<h3>Questions en suspens</h3>
|
||||
</span>
|
||||
|
||||
@@ -18,11 +18,13 @@
|
||||
|
||||
<div>
|
||||
<ul>
|
||||
<li>Arme : {{arme.name}} (+{{arme.system.totalDegats}})</li>
|
||||
<li>Dégats : {{finalResult}}</li>
|
||||
{{#if targetVigueur}}
|
||||
<li>Vigueur de la cible : {{targetVigueur}}</li>
|
||||
<li>Etats Combativité supplémentaires perdus (manuel): {{nbEtatPerdus}} </li>
|
||||
<li>Assomer {{defenderName}} en état de : {{etatAssommer}}</li>
|
||||
|
||||
{{#if isSuccess}}
|
||||
<li>Marge : {{marge}}</li>
|
||||
<li>{{defenderName}} est assomé pour {{dureeAssommer}} minutes !</li>
|
||||
{{else}}
|
||||
<li>{{defenderName}} n'a pas été assomé et est conscient la tentative !</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
</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>
|
||||
<li class="heritiers-roll">Caractéristique : {{carac.label}} ({{carac.value}})</li>
|
||||
|
||||
{{#if rang}}
|
||||
<li>{{rang.label}} : {{rang.value}}</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if competence}}
|
||||
<li>Compétence : {{competence.name}} ({{competence.system.niveau}})</li>
|
||||
{{#if useSpecialite}}
|
||||
@@ -29,6 +33,9 @@
|
||||
|
||||
{{#if arme}}
|
||||
<li>Attaque avec : {{arme.name}}</li>
|
||||
{{#if (eq mode "assommer")}}
|
||||
<li>Attaque pour assommer</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if pouvoir}}
|
||||
@@ -36,28 +43,42 @@
|
||||
<li>Effet : {{pouvoir.system.effet}}</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if forcedValue}}
|
||||
<li>Vous dépense 2 points de Tricherie et utilisé une face adjacente du dé !</li>
|
||||
{{/if}}
|
||||
|
||||
<li>Formule : {{diceFormula}}</li>
|
||||
<li>Résultat du dé : {{diceResult}} </li>
|
||||
<li>Total : {{finalResult}} (Marge : {{marge}})</li>
|
||||
<li>Résultat du dé : {{diceResult}} </li>
|
||||
|
||||
{{#if adjacentFaces}}
|
||||
<li>Faces Adjacentes :
|
||||
{{#each adjacentFaces as |value key|}}
|
||||
<a class="roll-tricherie-2" data-dice-value="{{value}}">{{value}}</a>
|
||||
{{/each}}
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if sdValue}}
|
||||
<li>Total : {{finalResult}} {{#if (gt sdValue "-1")}}(Marge : {{marge}}){{/if}}</li>
|
||||
|
||||
|
||||
{{#if (gt sdValue "-1")}}
|
||||
{{#if isSuccess}}
|
||||
<li class="chat-success">Succés...
|
||||
{{#if arme}}
|
||||
<li>Dégats : {{degatsArme}}</li>
|
||||
{{/if}}
|
||||
<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 arme}}
|
||||
<li>Vous pouvez augmenter les dégats de +2 ou bien bénéficier d'une Aubaine.</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{#if isCriticalFailure}}
|
||||
<li class="chat-failure">Echec Critique !!!</li>
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
name="system.profil" value="{{system.profil}}" data-dtype="string">
|
||||
{{#select system.profil}}
|
||||
{{#each config.competenceProfil as |profil pKey|}}
|
||||
<option value="{{pKey}}">{{profil}}</option>
|
||||
<option value="{{pKey}}">{{profil.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
|
||||
48
templates/partial-utile-skills.html
Normal file
48
templates/partial-utile-skills.html
Normal file
@@ -0,0 +1,48 @@
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
{{#if isPNJ}}
|
||||
<span class="item-field-label-long roll-style">
|
||||
<a class="roll-root-competence item-field-label-short" data-attr-key="{{keyProfil}}">
|
||||
<h3><label class="items-title-text">{{upperFirst keyProfil}}</label></h3>
|
||||
</a>
|
||||
</span>
|
||||
{{else}}
|
||||
<span class="item-field-label-long">
|
||||
<h3><label class="items-title-text">{{upperFirst keyProfil}}</label></h3>
|
||||
</span>
|
||||
{{/if}}
|
||||
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
{{#if isPNJ}}
|
||||
<span class="item-field-label-short">
|
||||
<input type="text" data-dtype="Number" class="item-field-label-short" name="system.competences.{{keyProfil}}.niveau" value="{{skillDef.niveau}}">
|
||||
</span>
|
||||
{{/if}}
|
||||
<div class="item-filler"> </div>
|
||||
</li>
|
||||
{{#each skillDef.skills as |skill key|}}
|
||||
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
|
||||
<span class="item-field-label-long roll-style"><a class="roll-competence item-field-label-short"
|
||||
data-attr-key="tochoose">{{skill.name}}</a></span>
|
||||
<select class="item-field-label-short edit-item-data" type="text"
|
||||
data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
|
||||
{{#select skill.system.niveau}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
|
||||
{{/select}}
|
||||
</select>
|
||||
<input type="checkbox" class="item-field-label-short edit-item-data" data-item-field="predilection" {{checked skill.system.predilection}}/>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#if (count skill.specList)}}
|
||||
<span class="specialisarion-margin specialisation-label item-field-label-long2">{{skill.specList}}</span>
|
||||
{{/if}}
|
||||
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
@@ -8,6 +8,13 @@
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
{{#if (eq mode "rang")}}
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">{{rang.label}}</span>
|
||||
<span class="roll-dialog-label">{{rang.value}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq mode "carac")}}
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">Caracteristique</span>
|
||||
@@ -59,23 +66,67 @@
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#each rulesMalus as |malus key|}}
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">Malus de Santé</span>
|
||||
<span class="small-label roll-dialog-label">{{pvMalus}}</span>
|
||||
<span class="roll-dialog-label">{{malus.name}}</span>
|
||||
<span class="small-label roll-dialog-label">{{malus.value}}</span>
|
||||
</div>
|
||||
{{/each}}
|
||||
|
||||
{{#if tricherie}}
|
||||
{{#if (and arme arme.system.isMelee)}}
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">Utiliser 1 point de Tricherie ({{tricherie}}) ?</span>
|
||||
<input type="checkbox" class="item-field-label-short" id="useTricherie" {{checked useTricherie}}/>
|
||||
<span class="roll-dialog-label">Attaque à plusieurs </span>
|
||||
<select class="roll-dialog-label" id="bonus-attaque-plusieurs" type="text" value="{{bonusAttaquePlusieurs}}"
|
||||
data-dtype="Number">
|
||||
{{#select bonusAttaquePlusieurs}}
|
||||
<option value="0">0</option>
|
||||
<option value="1">+1</option>
|
||||
<option value="2">+2</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">Attaque dans le dos ?</span>
|
||||
<input type="checkbox" class="item-field-label-short" id="attaqueDos" {{checked attaqueDos}}/>
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">Attaque à deux armes </span>
|
||||
<select class="roll-dialog-label" id="bonus-attaque-deux-armes" type="text" value="{{attaqueDeuxArmes}}"
|
||||
data-dtype="Number">
|
||||
{{#select attaqueDeuxArmes}}
|
||||
<option value="0">Aucun</option>
|
||||
<option value="-4">Deux armes à 1 main</option>
|
||||
<option value="-2">Deux armes naturelles"</option>
|
||||
<option value="-2">Avec spécialisation "Mauvaise Main"</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">Seconde arme</span>
|
||||
<select class="roll-dialog-label" id="bonus-attaque-seconde-arme" type="text" value="{{secondeArme}}"
|
||||
data-dtype="String">
|
||||
{{#select secondeArme}}
|
||||
{{#each armes as |arme idx|}}
|
||||
<option value="{{arme.id}}">{{arme.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if arme}}
|
||||
<li class="flexrow item">
|
||||
<label class="roll-dialog-label">Ataque ciblée : </label>
|
||||
<select class="roll-dialog-label" type="text" id="attaque-cible" value="{{attaqueCible}}" data-dtype="String">
|
||||
{{#select attaqueCible}}
|
||||
{{#each config.attaqueCible as |categ key|}}
|
||||
<option value="{{key}}">{{categ}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</li>
|
||||
|
||||
|
||||
{{#if heritage}}
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">Utiliser 1 point d'Heritage ? ({{heritage}})</span>
|
||||
<input type="checkbox" class="item-field-label-short" id="useHeritage" {{checked useHeritage}}/>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="flexrow">
|
||||
@@ -100,6 +151,11 @@
|
||||
</select>
|
||||
</div>
|
||||
|
||||
{{#if cacheDifficulte}}
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">Difficulté Cachée/Inconnue</span>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="flexrow">
|
||||
<span class="roll-dialog-label">Difficulté</span>
|
||||
<select class="status-small-label color-class-common" id ="sdValue" type="text" name="sdValue" value="sdValue" data-dtype="string" >
|
||||
@@ -110,6 +166,7 @@
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user