Ajout feuille encart
Feuille de PNJ au format des encarts Scriptarium. Aucune possibilité de jets de dés pour l'instant.
This commit is contained in:
parent
f116003d6f
commit
e91eea532d
@ -1,6 +1,7 @@
|
|||||||
# 12.0
|
# 12.0
|
||||||
## 12.0.12 - L'étalage d'Astrobazzarh
|
## 12.0.12 - L'étalage d'Astrobazzarh
|
||||||
- On peut de nouveau vendre des items sans propriétaire, depuis les compendiums ou depuis l'onglet des Objets
|
- Fix: On peut de nouveau vendre des items sans propriétaire, depuis les compendiums ou depuis l'onglet des Objets
|
||||||
|
- Début de Feuille PNJ au format des encarts Scriptarium
|
||||||
|
|
||||||
## 12.0.11 - Le scriptorium d'Astrobazzarh
|
## 12.0.11 - Le scriptorium d'Astrobazzarh
|
||||||
- ajout d'un bouton pour générer les éléments de description d'un personnage
|
- ajout d'un bouton pour générer les éléments de description d'un personnage
|
||||||
|
49
module/actor/export-scriptarium/actor-export-sheet.js
Normal file
49
module/actor/export-scriptarium/actor-export-sheet.js
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
import { RdDActorSheet } from "../../actor-sheet.js"
|
||||||
|
import { SYSTEM_RDD } from "../../constants.js";
|
||||||
|
import { Misc } from "../../misc.js";
|
||||||
|
import { ExportScriptarium } from "./export-scriptarium.js";
|
||||||
|
import { Mapping } from "./mapping.js";
|
||||||
|
|
||||||
|
export class RdDActorExportSheet extends RdDActorSheet {
|
||||||
|
static async init() {
|
||||||
|
await loadTemplates([
|
||||||
|
"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs",
|
||||||
|
"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs",
|
||||||
|
"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-derivee.hbs",
|
||||||
|
"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/esquive.hbs",
|
||||||
|
"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/protection.hbs",
|
||||||
|
"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs",
|
||||||
|
])
|
||||||
|
Actors.registerSheet(SYSTEM_RDD, RdDActorExportSheet, { types: ["personnage"], makeDefault: false, label: "Feuille d'encart" })
|
||||||
|
}
|
||||||
|
static get defaultOptions() {
|
||||||
|
return foundry.utils.mergeObject(RdDActorSheet.defaultOptions, {
|
||||||
|
template: "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/actor-export-sheet.hbs",
|
||||||
|
width: 550,
|
||||||
|
showCompNiveauBase: false,
|
||||||
|
vueArchetype: false,
|
||||||
|
}, { inplace: false })
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(actor, options) {
|
||||||
|
super(actor, options)
|
||||||
|
}
|
||||||
|
|
||||||
|
async getData() {
|
||||||
|
const formData = await super.getData()
|
||||||
|
const values = Mapping.getAsObject(this.actor);
|
||||||
|
// Add any structured, precomputed list of data
|
||||||
|
formData.export = values
|
||||||
|
return formData
|
||||||
|
}
|
||||||
|
|
||||||
|
activateListeners(html) {
|
||||||
|
super.activateListeners(html);
|
||||||
|
this.html.find('.button-export').click(async event => {
|
||||||
|
|
||||||
|
ExportScriptarium.INSTANCE.exportActors([this.actor],
|
||||||
|
`${this.actor.uuid}-${this.actor.name}`
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
@ -12,14 +12,13 @@ export class ExportScriptarium {
|
|||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.mapping = Mapping.getMapping()
|
|
||||||
Hooks.on("getActorDirectoryFolderContext", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) })
|
Hooks.on("getActorDirectoryFolderContext", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) })
|
||||||
Hooks.on("getActorDirectoryEntryContext", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) })
|
Hooks.on("getActorDirectoryEntryContext", (actorDirectory, menus) => { ExportScriptarium.INSTANCE.onActorDirectoryMenu(actorDirectory, menus) })
|
||||||
}
|
}
|
||||||
|
|
||||||
onActorDirectoryMenu(actorDirectory, menus) {
|
onActorDirectoryMenu(actorDirectory, menus) {
|
||||||
menus.push({
|
menus.push({
|
||||||
name: 'Export Personnages',
|
name: 'Export Personnages <i class="fa-regular fa-file-csv"></i>',
|
||||||
icon: IMG_SCRIPTARIUM,
|
icon: IMG_SCRIPTARIUM,
|
||||||
condition: (target) => game.user.isGM &&
|
condition: (target) => game.user.isGM &&
|
||||||
OptionsAvancees.isUsing(EXPORT_CSV_SCRIPTARIUM) &&
|
OptionsAvancees.isUsing(EXPORT_CSV_SCRIPTARIUM) &&
|
||||||
@ -59,12 +58,12 @@ export class ExportScriptarium {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getHeaderLine() {
|
getHeaderLine() {
|
||||||
return this.mapping.map(it => it.column)
|
return Mapping.getColumns()
|
||||||
}
|
}
|
||||||
|
|
||||||
getActorLine(actor) {
|
getActorLine(actor) {
|
||||||
const context = Mapping.prepareContext(actor)
|
const values = Mapping.getValues(actor)
|
||||||
return this.mapping.map(it => it.getter(actor, context))
|
return values
|
||||||
.map(it => this.$escapeQuotes(it))
|
.map(it => this.$escapeQuotes(it))
|
||||||
.map(it => it.replaceAll("\n", " ").replaceAll("\r", ""))
|
.map(it => it.replaceAll("\n", " ").replaceAll("\r", ""))
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import { ITEM_TYPES } from "../../item.js"
|
|||||||
import { Misc } from "../../misc.js"
|
import { Misc } from "../../misc.js"
|
||||||
import { RdDTimestamp } from "../../time/rdd-timestamp.js"
|
import { RdDTimestamp } from "../../time/rdd-timestamp.js"
|
||||||
import { RdDBonus } from "../../rdd-bonus.js"
|
import { RdDBonus } from "../../rdd-bonus.js"
|
||||||
|
import { TMRType } from "../../tmr-utility.js"
|
||||||
|
|
||||||
|
|
||||||
const CATEGORIES_COMPETENCES = [
|
const CATEGORIES_COMPETENCES = [
|
||||||
@ -37,11 +38,11 @@ const NIVEAU_BASE = {
|
|||||||
|
|
||||||
class ColumnMappingFactory {
|
class ColumnMappingFactory {
|
||||||
static createMappingArme(part, i) {
|
static createMappingArme(part, i) {
|
||||||
return { column: `arme-${part}-${i}`, getter: (actor, context) => Mapping.getArme(actor, context, part, i) }
|
return { column: `arme_${part}_${i}`, getter: (actor, context) => Mapping.getArme(actor, context, part, i) }
|
||||||
}
|
}
|
||||||
|
|
||||||
static createMappingSort(part, i) {
|
static createMappingSort(part, i) {
|
||||||
return { column: `sort-${part}-${i}`, getter: (actor, context) => Mapping.getSort(actor, context, part, i) }
|
return { column: `sort_${part}_${i}`, getter: (actor, context) => Mapping.getSort(actor, context, part, i) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,40 +52,40 @@ const TABLEAU_ARMES = [...Array(NB_ARMES).keys()]
|
|||||||
const TABLEAU_SORTS = [...Array(NB_SORTS).keys()]
|
const TABLEAU_SORTS = [...Array(NB_SORTS).keys()]
|
||||||
|
|
||||||
const MAPPING_BASE = [
|
const MAPPING_BASE = [
|
||||||
{ column: "ID", getter: (actor, context) => actor.id },
|
{ column: "ID", colName: 'ID', getter: (actor, context) => actor.id },
|
||||||
{ column: "name", getter: (actor, context) => actor.name },
|
{ column: "name", getter: (actor, context) => actor.name },
|
||||||
{ column: "metier", getter: (actor, context) => actor.system.metier },
|
{ column: "metier", colName: 'Métier', getter: (actor, context) => actor.system.metier },
|
||||||
// { column: "biographie", getter: (actor, context) => actor.system.biographie },
|
{ column: "biographie", colName: 'Biographie', getter: (actor, context) => actor.system.biographie },
|
||||||
{ column: "taille", getter: (actor, context) => actor.system.carac.taille.value },
|
{ column: "taille", getter: (actor, context) => actor.system.carac.taille.value },
|
||||||
{ column: "apparence", getter: (actor, context) => actor.system.carac.apparence.value },
|
{ column: "apparence", getter: (actor, context) => actor.system.carac.apparence.value },
|
||||||
{ column: "constitution", getter: (actor, context) => actor.system.carac.constitution.value },
|
{ column: "constitution", getter: (actor, context) => actor.system.carac.constitution.value },
|
||||||
{ column: "force", getter: (actor, context) => actor.system.carac.force.value },
|
{ column: "force", getter: (actor, context) => actor.system.carac.force.value },
|
||||||
{ column: "agilite", getter: (actor, context) => actor.system.carac.agilite.value },
|
{ column: "agilite", colName: 'Agilité', getter: (actor, context) => actor.system.carac.agilite.value },
|
||||||
{ column: "dexterite", getter: (actor, context) => actor.system.carac.dexterite.value },
|
{ column: "dexterite", colName: 'Dextérité', getter: (actor, context) => actor.system.carac.dexterite.value },
|
||||||
{ column: "vue", getter: (actor, context) => actor.system.carac.vue.value },
|
{ column: "vue", getter: (actor, context) => actor.system.carac.vue.value },
|
||||||
{ column: "ouie", getter: (actor, context) => actor.system.carac.ouie.value },
|
{ column: "ouie", colName: 'Ouïe', getter: (actor, context) => actor.system.carac.ouie.value },
|
||||||
{ column: "odoratgout", getter: (actor, context) => actor.system.carac.odoratgout.value },
|
{ column: "odoratgout", colName: 'Odo-goût', getter: (actor, context) => actor.system.carac.odoratgout.value },
|
||||||
{ column: "volonte", getter: (actor, context) => actor.system.carac.volonte.value },
|
{ column: "volonte", colName: 'Volonté', getter: (actor, context) => actor.system.carac.volonte.value },
|
||||||
{ column: "intellect", getter: (actor, context) => actor.system.carac.intellect.value },
|
{ column: "intellect", getter: (actor, context) => actor.system.carac.intellect.value },
|
||||||
{ column: "empathie", getter: (actor, context) => actor.system.carac.empathie.value },
|
{ column: "empathie", getter: (actor, context) => actor.system.carac.empathie.value },
|
||||||
{ column: "reve", getter: (actor, context) => actor.system.carac.reve.value },
|
{ column: "reve", colName: 'Rêve', getter: (actor, context) => actor.system.carac.reve.value },
|
||||||
{ column: "chance", getter: (actor, context) => actor.system.carac.chance.value },
|
{ column: "chance", getter: (actor, context) => actor.system.carac.chance.value },
|
||||||
{ column: "melee", getter: (actor, context) => actor.system.carac.melee.value },
|
{ column: "melee", colName: 'Mêlée', getter: (actor, context) => actor.system.carac.melee.value },
|
||||||
{ column: "tir", getter: (actor, context) => actor.system.carac.tir.value },
|
{ column: "tir", getter: (actor, context) => actor.system.carac.tir.value },
|
||||||
{ column: "lancer", getter: (actor, context) => actor.system.carac.lancer.value },
|
{ column: "lancer", getter: (actor, context) => actor.system.carac.lancer.value },
|
||||||
{ column: "derobee", getter: (actor, context) => actor.system.carac.derobee.value },
|
{ column: "derobee", colName: 'Dérobée', getter: (actor, context) => actor.system.carac.derobee.value },
|
||||||
{ column: "vie", getter: (actor, context) => actor.system.sante.vie.max },
|
{ column: "vie", getter: (actor, context) => actor.system.sante.vie.max },
|
||||||
{ column: "plusdom", getter: (actor, context) => actor.system.attributs.plusdom.value },
|
{ column: "plusdom", colName: '+dom', getter: (actor, context) => actor.system.attributs.plusdom.value },
|
||||||
{ column: "protectionnaturelle", getter: (actor, context) => actor.system.attributs.protection.value },
|
{ column: "protectionnaturelle", colName: 'Protection naturelle', getter: (actor, context) => actor.system.attributs.protection.value > 0 ? actor.system.attributs.protection.value : '' },
|
||||||
{ column: "endurance", getter: (actor, context) => actor.system.sante.endurance.max },
|
{ column: "endurance", getter: (actor, context) => actor.system.sante.endurance.max },
|
||||||
{ column: "description", getter: (actor, context) => Mapping.getDescription(actor) },
|
{ column: "description", getter: (actor, context) => Mapping.getDescription(actor) },
|
||||||
{ column: "armure", getter: (actor, context) => Mapping.getArmure(actor, context) },
|
{ column: "armure", getter: (actor, context) => Mapping.getArmure(actor, context) },
|
||||||
{ column: "protection", getter: (actor, context) => Mapping.getProtectionArmure(actor, context) },
|
{ column: "protection", getter: (actor, context) => Mapping.getProtectionArmure(actor, context) },
|
||||||
{ column: "malus-armure", getter: (actor, context) => Mapping.getMalusArmure(actor, context) },
|
{ column: "malus_armure", getter: (actor, context) => Mapping.getMalusArmure(actor, context) },
|
||||||
{ column: "esquive", getter: (actor, context) => Mapping.getEsquive(context) },
|
{ column: "esquive", getter: (actor, context) => Mapping.getEsquive(context) },
|
||||||
{ column: "esquive-armure", getter: (actor, context) => Mapping.getEsquiveArmure(context) },
|
{ column: "esquive_armure", getter: (actor, context) => Mapping.getEsquiveArmure(context) },
|
||||||
{ column: "competences", getter: (actor, context) => Mapping.getCompetences(actor, CATEGORIES_COMPETENCES) },
|
{ column: "competences", getter: (actor, context) => Mapping.getCompetences(actor, CATEGORIES_COMPETENCES) },
|
||||||
{ column: "draconic", getter: (actor, context) => Mapping.getCompetences(actor, CATEGORIES_DRACONIC) },
|
{ column: "draconic", getter: (actor, context) => Mapping.getCompetences(actor, CATEGORIES_DRACONIC) },
|
||||||
]
|
]
|
||||||
|
|
||||||
const MAPPING_ARMES = TABLEAU_ARMES.map(i => ColumnMappingFactory.createMappingArme('name', i))
|
const MAPPING_ARMES = TABLEAU_ARMES.map(i => ColumnMappingFactory.createMappingArme('name', i))
|
||||||
@ -104,6 +105,27 @@ export class Mapping {
|
|||||||
return MAPPING
|
return MAPPING
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getColumns() {
|
||||||
|
return MAPPING.map(it => it.column)
|
||||||
|
}
|
||||||
|
|
||||||
|
static getValues(actor) {
|
||||||
|
const context = Mapping.prepareContext(actor)
|
||||||
|
return MAPPING.map(it => it.getter(actor, context))
|
||||||
|
}
|
||||||
|
static getAsObject(actor) {
|
||||||
|
const context = Mapping.prepareContext(actor)
|
||||||
|
return Object.fromEntries(MAPPING.map(it => [it.column, {
|
||||||
|
colName: it.colName ?? it.column,
|
||||||
|
value: it.getter(actor, context)
|
||||||
|
}]))
|
||||||
|
}
|
||||||
|
|
||||||
|
static getValues(actor) {
|
||||||
|
const context = Mapping.prepareContext(actor)
|
||||||
|
return MAPPING.map(it => it.getter(actor, context))
|
||||||
|
}
|
||||||
|
|
||||||
static prepareContext(actor) {
|
static prepareContext(actor) {
|
||||||
return {
|
return {
|
||||||
armes: Mapping.prepareArmes(actor),
|
armes: Mapping.prepareArmes(actor),
|
||||||
@ -190,12 +212,16 @@ export class Mapping {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static prepareSorts(actor) {
|
static prepareSorts(actor) {
|
||||||
return actor.itemTypes[ITEM_TYPES.sort].map(it => Mapping.prepareSort(it))
|
const codeVoies = Mapping.getCompetencesCategorie(actor, CATEGORIES_DRACONIC)
|
||||||
|
.map(it => RdDItemSort.getVoieCode(it))
|
||||||
|
|
||||||
|
return actor.itemTypes[ITEM_TYPES.sort].map(it => Mapping.prepareSort(it, codeVoies))
|
||||||
|
.sort(Misc.ascending(it => `${it.voie} : ${it.description}`))
|
||||||
}
|
}
|
||||||
|
|
||||||
static prepareSort(sort) {
|
static prepareSort(sort, voies) {
|
||||||
return {
|
return {
|
||||||
voie: RdDItemSort.getCodeDraconic(sort),
|
voie: RdDItemSort.getCodeDraconic(sort, voies),
|
||||||
description: Mapping.descriptionSort(sort),
|
description: Mapping.descriptionSort(sort),
|
||||||
bonus: Mapping.bonusCase(sort)
|
bonus: Mapping.bonusCase(sort)
|
||||||
}
|
}
|
||||||
@ -203,8 +229,18 @@ export class Mapping {
|
|||||||
|
|
||||||
static descriptionSort(sort) {
|
static descriptionSort(sort) {
|
||||||
const ptSeuil = Array(sort.system.coutseuil).map(it => '*')
|
const ptSeuil = Array(sort.system.coutseuil).map(it => '*')
|
||||||
const caseTMR = sort.system.caseTMRspeciale.length > 0 ? sort.system.caseTMRspeciale : sort.system.caseTMR
|
const caseTMR = sort.system.caseTMRspeciale.length > 0 ? Mapping.toVar(sort.system.caseTMRspeciale) : Misc.upperFirst(TMRType[sort.system.caseTMR].name)
|
||||||
return `${sort.name}${ptSeuil} (${caseTMR}) R${sort.system.difficulte} r${sort.system.ptreve}`
|
const ptreve = Mapping.addSpaceToNonNumeric(sort.system.ptreve)
|
||||||
|
const diff = Mapping.addSpaceToNonNumeric(sort.system.difficulte)
|
||||||
|
return `${sort.name}${ptSeuil} (${caseTMR}) R${diff} r${ptreve}`
|
||||||
|
}
|
||||||
|
|
||||||
|
static addSpaceToNonNumeric(value) {
|
||||||
|
return Number.isNumeric(value) ? value : ' ' + Mapping.toVar(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
static toVar(value) {
|
||||||
|
return value.replace('variable', 'var')
|
||||||
}
|
}
|
||||||
|
|
||||||
static bonusCase(sort) {
|
static bonusCase(sort) {
|
||||||
@ -237,7 +273,14 @@ export class Mapping {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static getProtectionArmure(actor, context) {
|
static getProtectionArmure(actor, context) {
|
||||||
return Number(context?.armure?.protection ?? 0) + Number(actor.system.attributs.protection.value)
|
const protection = Number(actor.system.attributs.protection.value)
|
||||||
|
if (context?.armure?.protection == undefined) {
|
||||||
|
return protection
|
||||||
|
}
|
||||||
|
if (Number.isNumeric(context?.armure?.protection)) {
|
||||||
|
return Number(context?.armure?.protection ?? 0) + protection
|
||||||
|
}
|
||||||
|
return context?.armure.protection + (protection > 0 ? `+${protection}` : '')
|
||||||
}
|
}
|
||||||
|
|
||||||
static getMalusArmure(actor, context) {
|
static getMalusArmure(actor, context) {
|
||||||
|
@ -5,12 +5,12 @@ import { Misc } from "./misc.js";
|
|||||||
import { TMRUtility } from "./tmr-utility.js";
|
import { TMRUtility } from "./tmr-utility.js";
|
||||||
|
|
||||||
const VOIES_DRACONIC = [
|
const VOIES_DRACONIC = [
|
||||||
{ code: 'O', label: "Voie d'Oniros", short: 'Oniros' },
|
{ code: 'O', label: "Voie d'Oniros", short: 'Oniros', ordre: 'a' },
|
||||||
{ code: 'H', label: "Voie d'Hypnos", short: 'Hypnos' },
|
{ code: 'H', label: "Voie d'Hypnos", short: 'Hypnos', ordre: 'b' },
|
||||||
{ code: 'N', label: "Voie de Narcos", short: 'Narcos' },
|
{ code: 'N', label: "Voie de Narcos", short: 'Narcos', ordre: 'c' },
|
||||||
{ code: 'T', label: "Voie de Thanatos", short: 'Thanatos' },
|
{ code: 'T', label: "Voie de Thanatos", short: 'Thanatos', ordre: 'd' },
|
||||||
{ code: 'O/H/N/T', label: "Oniros/Hypnos/Narcos/Thanatos", short: 'Oniros/Hypnos/Narcos/Thanatos' },
|
{ code: 'O/H/N/T', label: "Oniros/Hypnos/Narcos/Thanatos", short: 'Oniros/Hypnos/Narcos/Thanatos', ordre: 'e' },
|
||||||
{ code: 'O/H/N', label: "Oniros/Hypnos/Narcos" }
|
{ code: 'O/H/N', label: "Oniros/Hypnos/Narcos", short: "Oniros/Hypnos/Narcos", ordre: 'f' }
|
||||||
]
|
]
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -27,17 +27,33 @@ export class RdDItemSort extends Item {
|
|||||||
return [RdDItemCompetence.getVoieDraconic(draconicList, sort.system.draconic)];
|
return [RdDItemCompetence.getVoieDraconic(draconicList, sort.system.draconic)];
|
||||||
}
|
}
|
||||||
|
|
||||||
static getCodeDraconic(sort) {
|
static getOrdreCode(code) {
|
||||||
|
return (VOIES_DRACONIC.find(it => it.code == code)?.ordre ?? '?')
|
||||||
|
}
|
||||||
|
|
||||||
|
static getVoieCode(voie) {
|
||||||
|
return VOIES_DRACONIC.find(it => voie.name.includes(it.short))?.code ?? '?'
|
||||||
|
}
|
||||||
|
|
||||||
|
static getCodeDraconic(sort, voies = ['O', 'H', 'N', 'T']) {
|
||||||
switch (Grammar.toLowerCaseNoAccent(sort.name)) {
|
switch (Grammar.toLowerCaseNoAccent(sort.name)) {
|
||||||
case "lecture d'aura":
|
case "lecture d'aura":
|
||||||
case "detection d'aura":
|
case "detection d'aura":
|
||||||
return 'O/H/N/T'
|
return RdDItemSort.$voiesConnues('O/H/N/T', voies)
|
||||||
case "annulation de magie":
|
case "annulation de magie":
|
||||||
return 'O/H/N'
|
return RdDItemSort.$voiesConnues('O/H/N', voies)
|
||||||
}
|
}
|
||||||
const voie = VOIES_DRACONIC.find(it => it.label.includes(sort.system.draconic))
|
const voie = VOIES_DRACONIC.find(it => it.label.includes(sort.system.draconic))
|
||||||
return voie?.code ?? sort.system.draconic
|
return voie?.code ?? sort.system.draconic
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static $voiesConnues(voiesSort, voies) {
|
||||||
|
const codes = voies.filter(it => voiesSort.includes(it))
|
||||||
|
.sort(Misc.ascending(it => RdDItemSort.getOrdreCode(it)))
|
||||||
|
return Misc.join(codes ?? [''], '/');
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static isDifficulteVariable(sort) {
|
static isDifficulteVariable(sort) {
|
||||||
return sort && (sort.system.difficulte.toLowerCase() == "variable");
|
return sort && (sort.system.difficulte.toLowerCase() == "variable");
|
||||||
@ -67,7 +83,7 @@ export class RdDItemSort extends Item {
|
|||||||
static buildBonusCaseList(bonuscase, newCase) {
|
static buildBonusCaseList(bonuscase, newCase) {
|
||||||
const list = RdDItemSort.bonuscaseStringToList(bonuscase)
|
const list = RdDItemSort.bonuscaseStringToList(bonuscase)
|
||||||
if (newCase) {
|
if (newCase) {
|
||||||
list.push({ case: "Nouvelle", bonus: 0 })
|
list.push({ case: "Nouvelle", bonus: 0 })
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,7 @@ import { RdDTMRDialog } from "./rdd-tmr-dialog.js"
|
|||||||
import { OptionsAvancees } from "./settings/options-avancees.js"
|
import { OptionsAvancees } from "./settings/options-avancees.js"
|
||||||
import { ExportScriptarium } from "./actor/export-scriptarium/export-scriptarium.js"
|
import { ExportScriptarium } from "./actor/export-scriptarium/export-scriptarium.js"
|
||||||
import { AppPersonnageAleatoire } from "./actor/random/app-personnage-aleatoire.js"
|
import { AppPersonnageAleatoire } from "./actor/random/app-personnage-aleatoire.js"
|
||||||
|
import { RdDActorExportSheet } from "./actor/export-scriptarium/actor-export-sheet.js"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RdD system
|
* RdD system
|
||||||
@ -160,12 +161,12 @@ export class SystemReveDeDragon {
|
|||||||
// Register sheet application classes
|
// Register sheet application classes
|
||||||
Actors.unregisterSheet("core", ActorSheet)
|
Actors.unregisterSheet("core", ActorSheet)
|
||||||
Actors.registerSheet(SYSTEM_RDD, RdDCommerceSheet, { types: ["commerce"], makeDefault: true })
|
Actors.registerSheet(SYSTEM_RDD, RdDCommerceSheet, { types: ["commerce"], makeDefault: true })
|
||||||
//Actors.registerSheet(SYSTEM_RDD, RdDActorExportSheet, { types: ["personnage"], makeDefault: false })
|
|
||||||
Actors.registerSheet(SYSTEM_RDD, RdDActorSheet, { types: ["personnage"], makeDefault: true })
|
Actors.registerSheet(SYSTEM_RDD, RdDActorSheet, { types: ["personnage"], makeDefault: true })
|
||||||
Actors.registerSheet(SYSTEM_RDD, RdDCreatureSheet, { types: ["creature"], makeDefault: true })
|
Actors.registerSheet(SYSTEM_RDD, RdDCreatureSheet, { types: ["creature"], makeDefault: true })
|
||||||
Actors.registerSheet(SYSTEM_RDD, RdDActorVehiculeSheet, { types: ["vehicule"], makeDefault: true })
|
Actors.registerSheet(SYSTEM_RDD, RdDActorVehiculeSheet, { types: ["vehicule"], makeDefault: true })
|
||||||
Actors.registerSheet(SYSTEM_RDD, RdDActorEntiteSheet, { types: ["entite"], makeDefault: true })
|
Actors.registerSheet(SYSTEM_RDD, RdDActorEntiteSheet, { types: ["entite"], makeDefault: true })
|
||||||
Items.unregisterSheet("core", ItemSheet)
|
Items.unregisterSheet("core", ItemSheet)
|
||||||
|
await RdDActorExportSheet.init()
|
||||||
|
|
||||||
RdDItemSheet.register(RdDSigneDraconiqueItemSheet)
|
RdDItemSheet.register(RdDSigneDraconiqueItemSheet)
|
||||||
RdDItemSheet.register(RdDRencontreItemSheet)
|
RdDItemSheet.register(RdDRencontreItemSheet)
|
||||||
|
@ -326,7 +326,7 @@ table {border: 1px solid #7a7971;}
|
|||||||
display: grid;
|
display: grid;
|
||||||
grid-column: span 2 / span 2;
|
grid-column: span 2 / span 2;
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
gap: 10px;
|
gap: 30px;
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
@ -411,6 +411,11 @@ table {border: 1px solid #7a7971;}
|
|||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.flex-group-top {
|
||||||
|
vertical-align: top;
|
||||||
|
align-self: start;
|
||||||
|
}
|
||||||
|
|
||||||
.flex-group-right {
|
.flex-group-right {
|
||||||
-webkit-box-pack: end;
|
-webkit-box-pack: end;
|
||||||
-ms-flex-pack: end;
|
-ms-flex-pack: end;
|
||||||
|
103
templates/actor/export-scriptarium/actor-export-sheet.hbs
Normal file
103
templates/actor/export-scriptarium/actor-export-sheet.hbs
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
<form class="{{cssClass}}" autocomplete="off" >
|
||||||
|
<section class="sheet-header">
|
||||||
|
<div class="flexrow">
|
||||||
|
<h1 class="flex-grow charname">{{name}}</h1>
|
||||||
|
<span class="flex-group-right flex-shrink chat-card-button-area"><a class="button-export chat-card-button">Export </a></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="sheet-body" style=:"margin-bottom: 3rem;">
|
||||||
|
<div>
|
||||||
|
<strong>{{export.name.value}}</strong>{{#if export.description.value}}, {{export.description.value}}{{/if}}
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="grid-2col">
|
||||||
|
<div class="flexcol flex-group-top">
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" export.taille}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" export.apparence}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" export.constitution}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" export.force}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" export.agilite}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" export.dexterite}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" export.vue}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" export.ouie}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" export.odoratgout}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" export.volonte}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" export.empathie}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" export.intellect}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" export.reve}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" export.chance}}
|
||||||
|
</div>
|
||||||
|
<div class="flexcol flex-group-top">
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-derivee.hbs" export.melee}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-derivee.hbs" export.tir}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-derivee.hbs" export.lancer}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-derivee.hbs" export.derobee}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-derivee.hbs" export.vie}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-derivee.hbs" export.endurance}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-derivee.hbs" export.plusdom}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/protection.hbs" export}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div>
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs" name=' ' niveau='Niv' init='Init' dommages='+dom'}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs" name=export.arme_name_0.value niveau=export.arme_niveau_0.value init=export.arme_init_0.value dommages=export.arme_dommages_0.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs" name=export.arme_name_1.value niveau=export.arme_niveau_1.value init=export.arme_init_1.value dommages=export.arme_dommages_1.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs" name=export.arme_name_2.value niveau=export.arme_niveau_2.value init=export.arme_init_2.value dommages=export.arme_dommages_2.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs" name=export.arme_name_3.value niveau=export.arme_niveau_3.value init=export.arme_init_3.value dommages=export.arme_dommages_3.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs" name=export.arme_name_4.value niveau=export.arme_niveau_4.value init=export.arme_init_4.value dommages=export.arme_dommages_4.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs" name=export.arme_name_5.value niveau=export.arme_niveau_5.value init=export.arme_init_5.value dommages=export.arme_dommages_5.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs" name=export.arme_name_6.value niveau=export.arme_niveau_6.value init=export.arme_init_6.value dommages=export.arme_dommages_6.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs" name=export.arme_name_7.value niveau=export.arme_niveau_7.value init=export.arme_init_7.value dommages=export.arme_dommages_7.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs" name=export.arme_name_8.value niveau=export.arme_niveau_8.value init=export.arme_init_8.value dommages=export.arme_dommages_8.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs" name=export.arme_name_9.value niveau=export.arme_niveau_9.value init=export.arme_init_9.value dommages=export.arme_dommages_9.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/esquive.hbs" name='Esquive' niveau=export.esquive.value}}
|
||||||
|
{{#if (gt export.malue_armure.value 0)}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/esquive.hbs" name='Esquive (avec armure)' niveau=export.esquive_armure.value}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div>
|
||||||
|
{{export.competences.value}}
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div>
|
||||||
|
{{export.draconic.value}}
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div>
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_0.value description=export.sort_description_0.value bonus=export.sort_bonus_0.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_1.value description=export.sort_description_1.value bonus=export.sort_bonus_1.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_2.value description=export.sort_description_2.value bonus=export.sort_bonus_2.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_3.value description=export.sort_description_3.value bonus=export.sort_bonus_3.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_4.value description=export.sort_description_4.value bonus=export.sort_bonus_4.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_5.value description=export.sort_description_5.value bonus=export.sort_bonus_5.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_6.value description=export.sort_description_6.value bonus=export.sort_bonus_6.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_7.value description=export.sort_description_7.value bonus=export.sort_bonus_7.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_8.value description=export.sort_description_8.value bonus=export.sort_bonus_8.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_9.value description=export.sort_description_9.value bonus=export.sort_bonus_9.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_10.value description=export.sort_description_10.value bonus=export.sort_bonus_10.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_11.value description=export.sort_description_11.value bonus=export.sort_bonus_11.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_12.value description=export.sort_description_12.value bonus=export.sort_bonus_12.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_13.value description=export.sort_description_13.value bonus=export.sort_bonus_13.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_14.value description=export.sort_description_14.value bonus=export.sort_bonus_14.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_15.value description=export.sort_description_15.value bonus=export.sort_bonus_15.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_16.value description=export.sort_description_16.value bonus=export.sort_bonus_16.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_17.value description=export.sort_description_17.value bonus=export.sort_bonus_17.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_18.value description=export.sort_description_18.value bonus=export.sort_bonus_18.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_19.value description=export.sort_description_19.value bonus=export.sort_bonus_19.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_20.value description=export.sort_description_20.value bonus=export.sort_bonus_20.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_21.value description=export.sort_description_21.value bonus=export.sort_bonus_21.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_22.value description=export.sort_description_22.value bonus=export.sort_bonus_22.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_23.value description=export.sort_description_23.value bonus=export.sort_bonus_23.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_24.value description=export.sort_description_24.value bonus=export.sort_bonus_24.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_25.value description=export.sort_description_25.value bonus=export.sort_bonus_25.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_26.value description=export.sort_description_26.value bonus=export.sort_bonus_26.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_27.value description=export.sort_description_27.value bonus=export.sort_bonus_27.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_28.value description=export.sort_description_28.value bonus=export.sort_bonus_28.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs" voie=export.sort_voie_29.value description=export.sort_description_29.value bonus=export.sort_bonus_29.value}}
|
||||||
|
<div> </div>
|
||||||
|
<div> </div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</form>
|
15
templates/actor/export-scriptarium/arme.hbs
Normal file
15
templates/actor/export-scriptarium/arme.hbs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{{#if name}}
|
||||||
|
<div class="flexrow">
|
||||||
|
<div>{{upperFirst name}}</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div>{{niveau}}</div>
|
||||||
|
{{#if init}}
|
||||||
|
<div>{{init}}</div>
|
||||||
|
<div>{{dommages}}</div>
|
||||||
|
{{else}}
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
1
templates/actor/export-scriptarium/carac-derivee.hbs
Normal file
1
templates/actor/export-scriptarium/carac-derivee.hbs
Normal file
@ -0,0 +1 @@
|
|||||||
|
<div class="flexrow"><div>{{upperFirst colName}}</div><div class="flex-group-right">{{value}}</div></div>
|
1
templates/actor/export-scriptarium/carac.hbs
Normal file
1
templates/actor/export-scriptarium/carac.hbs
Normal file
@ -0,0 +1 @@
|
|||||||
|
<div class="flexrow"><div>{{upper colName}}</div><div class="flex-group-right">{{value}}</div></div>
|
10
templates/actor/export-scriptarium/esquive.hbs
Normal file
10
templates/actor/export-scriptarium/esquive.hbs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{{#if name}}
|
||||||
|
<div class="flexrow">
|
||||||
|
<div>{{upperFirst name}}</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div>{{niveau}}</div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
7
templates/actor/export-scriptarium/protection.hbs
Normal file
7
templates/actor/export-scriptarium/protection.hbs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{{#if protectionnaturelle.value}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-derivee.hbs" protectionnaturelle}}
|
||||||
|
{{/if}}
|
||||||
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-derivee.hbs" protection}}
|
||||||
|
{{#if armure.value}}
|
||||||
|
<div class="flexrow flex-group-right"><i>{{armure.value}}</i></div>
|
||||||
|
{{/if}}
|
11
templates/actor/export-scriptarium/sort.hbs
Normal file
11
templates/actor/export-scriptarium/sort.hbs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{{#if voie}}
|
||||||
|
<div class="flexrow">
|
||||||
|
<div style="flex-grow: 0.4;">{{voie}}</div>
|
||||||
|
<div class="flex-grow-2">{{upperFirst description}}</div>
|
||||||
|
{{#if bonus}}
|
||||||
|
<div>{{bonus}}</div>
|
||||||
|
{{else}}
|
||||||
|
<div></div>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
Loading…
Reference in New Issue
Block a user