forked from public/foundryvtt-reve-de-dragon
		
	Compare commits
	
		
			8 Commits
		
	
	
		
			80435b6bca
			...
			9b37533bdf
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 9b37533bdf | |||
| 50d923061b | |||
| e89a8ba232 | |||
| b8f236fa97 | |||
| 74b184aa32 | |||
| 9c17f85fa8 | |||
| 599fdc752d | |||
| fa890491e5 | 
| @@ -50,12 +50,12 @@ export class ExportScriptarium { | ||||
|   } | ||||
|  | ||||
|   exportActors(actors, targetName) { | ||||
|     const eol = '\n' | ||||
|     const eol = '\n\r' | ||||
|     const header = Misc.join(this.getHeaderLine(), ';') | ||||
|     const actorLines = actors.map(actor => Misc.join(this.getActorLine(actor), ';')) | ||||
|     const data = Misc.join([header, ...actorLines], eol) | ||||
|     const filename = `scriptatium-${targetName?.slugify()}.csv`; | ||||
|     saveDataToFile(data, "text/csv", `${filename}`); | ||||
|     const filename = `scriptarium-${targetName?.slugify()}.csv`; | ||||
|     saveDataToFile(data, "text/csv;charset=windows-1252", `${filename}`); | ||||
|   } | ||||
|  | ||||
|   getHeaderLine() { | ||||
| @@ -65,7 +65,6 @@ export class ExportScriptarium { | ||||
|   getActorLine(actor) { | ||||
|     const context = Mapping.prepareContext(actor) | ||||
|     return this.mapping.map(it => it.getter(actor, context)) | ||||
|       //.map(it => JSON.stringify(it)) | ||||
|       .map(it => this.$escapeQuotes(it)) | ||||
|       .map(it => it.replaceAll("\n", " ").replaceAll("\r", "")) | ||||
|   } | ||||
|   | ||||
| @@ -53,6 +53,7 @@ const TABLEAU_SORTS = [...Array(NB_SORTS).keys()] | ||||
| const MAPPING_BASE = [ | ||||
|   { column: "ID", getter: (actor, context) => actor.id }, | ||||
|   { column: "name", getter: (actor, context) => actor.name }, | ||||
|   { column: "metier", getter: (actor, context) => actor.system.metier }, | ||||
|   //    { column: "biographie", getter: (actor, context) => actor.system.biographie }, | ||||
|   { column: "taille", getter: (actor, context) => actor.system.carac.taille.value }, | ||||
|   { column: "apparence", getter: (actor, context) => actor.system.carac.apparence.value }, | ||||
| @@ -80,7 +81,8 @@ const MAPPING_BASE = [ | ||||
|   { column: "armure", getter: (actor, context) => Mapping.getArmure(actor, context) }, | ||||
|   { column: "protection", getter: (actor, context) => Mapping.getProtectionArmure(actor, context) }, | ||||
|   { column: "malus-armure", getter: (actor, context) => Mapping.getMalusArmure(actor, context) }, | ||||
|   { column: "esquive", getter: (actor, context) => Mapping.getEsquiveNiveau(context) }, | ||||
|   { column: "esquive", getter: (actor, context) => Mapping.getEsquive(context) }, | ||||
|   { column: "esquive-armure", getter: (actor, context) => Mapping.getEsquiveArmure(context) }, | ||||
|   { column: "competences", getter: (actor, context) => Mapping.getCompetences(actor, CATEGORIES_COMPETENCES) }, | ||||
|   { column: "draconic", getter: (actor, context) => Mapping.getCompetences(actor, CATEGORIES_DRACONIC) }, | ||||
| ] | ||||
| @@ -181,7 +183,7 @@ export class Mapping { | ||||
|       const esquive = esquives[0] | ||||
|       return { | ||||
|         name: esquive.name, | ||||
|         niveau: Misc.toSignedString(esquive.system.niveau) | ||||
|         niveau: esquive.system.niveau | ||||
|       } | ||||
|     } | ||||
|     return undefined | ||||
| @@ -242,10 +244,16 @@ export class Mapping { | ||||
|     return context?.armure?.malus ?? 0 | ||||
|   } | ||||
|  | ||||
|   static getEsquiveNiveau(context) { | ||||
|   static getEsquive(context) { | ||||
|     if (context.esquive) { | ||||
|       return Misc.toSignedString(context.esquive.niveau) | ||||
|     } | ||||
|     return '' | ||||
|   } | ||||
|   static getEsquiveArmure(context) { | ||||
|     if (context.esquive) { | ||||
|       const niveau = context.esquive.niveau + context.armure.malus | ||||
|       return niveau > 0 ? ('+' + niveau) : ('' + niveau) | ||||
|       return Misc.toSignedString(niveau) | ||||
|     } | ||||
|     return '' | ||||
|   } | ||||
|   | ||||
| @@ -24,7 +24,7 @@ export class DialogCreateSigneDraconique extends Dialog { | ||||
|   } | ||||
|  | ||||
|   constructor(dialogData, html) { | ||||
|     let options = { classes: ["DialogCreateSigneDraconiqueActorsActors"], width: 500, height: 650, 'z-index': 99999 }; | ||||
|     let options = { classes: ["DialogCreateSigneDraconiqueActors"], width: 500, height: 650, 'z-index': 99999 }; | ||||
|     let conf = { | ||||
|       title: "Créer un signe", | ||||
|       content: html, | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| import { Grammar } from "./grammar.js"; | ||||
| import { RdDItem } from "./item.js"; | ||||
| import { Misc } from "./misc.js"; | ||||
|  | ||||
| const competenceTroncs = [["Esquive", "Dague", "Corps à corps"], | ||||
| @@ -23,12 +24,12 @@ const limitesArchetypes = [ | ||||
| ]; | ||||
|  | ||||
| /* -------------------------------------------- */ | ||||
| const categoriesCompetences = { | ||||
| export const CATEGORIES_COMPETENCES = { | ||||
|   "generale": { base: -4, label: "Générales" }, | ||||
|   "particuliere": { base: -8, label: "Particulières" }, | ||||
|   "specialisee": { base: -11, label: "Spécialisées" }, | ||||
|   "connaissance": { base: -11, label: "Connaissances" }, | ||||
|   "draconic": { base: -11, label: "Draconics" }, | ||||
|   "draconic": { base: -11, label: "Draconic" }, | ||||
|   "melee": { base: -6, label: "Mêlée" }, | ||||
|   "tir": { base: -8, label: "Tir" }, | ||||
|   "lancer": { base: -8, label: "Lancer" } | ||||
| @@ -48,16 +49,14 @@ function _buildCumulXP() { | ||||
| const competence_xp_cumul = _buildCumulXP(); | ||||
|  | ||||
| export class RdDItemCompetence extends Item { | ||||
|   /* -------------------------------------------- */ | ||||
|   static getCategories() { | ||||
|     return categoriesCompetences; | ||||
|   } | ||||
|   /* -------------------------------------------- */ | ||||
|   static getLabelCategorie(category) { | ||||
|     return categoriesCompetences[category].label; | ||||
|     return CATEGORIES_COMPETENCES[category].label; | ||||
|   } | ||||
|   /* -------------------------------------------- */ | ||||
|   static getNiveauBase(category, categories = categoriesCompetences) { | ||||
|   /* -------------------------------------------- */ | ||||
|   static getNiveauBase(category, itemType) { | ||||
|     let categories = RdDItem.getCategories(itemType) | ||||
|     return categories[category]?.base ?? 0; | ||||
|   } | ||||
|  | ||||
| @@ -191,7 +190,7 @@ export class RdDItemCompetence extends Item { | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static isNiveauBase(item) { | ||||
|     return Number(item.system.niveau) == RdDItemCompetence.getNiveauBase(item.system.categorie, item.getCategories()); | ||||
|     return Number(item.system.niveau) == RdDItemCompetence.getNiveauBase(item.system.categorie, item.type); | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
| import { ITEM_TYPES } from "./item.js"; | ||||
| import { RdDCombatManager } from "./rdd-combat.js"; | ||||
|  | ||||
| const categories = { | ||||
| export const CATEGORIES_COMPETENCES_CREATURES = { | ||||
|   "generale": { base: 0, label: "Générale" }, | ||||
|   "naturelle": { base: 0, label: "Arme naturelle" }, | ||||
|   "melee": { base: 0, label: "Mêlée" }, | ||||
| @@ -15,10 +15,6 @@ const categories = { | ||||
| /* -------------------------------------------- */ | ||||
| export class RdDItemCompetenceCreature extends Item { | ||||
|  | ||||
|   static getCategories() { | ||||
|     return categories; | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static setRollDataCreature(rollData) { | ||||
|     rollData.carac = { "carac_creature": { label: rollData.competence.name, value: rollData.competence.system.carac_value } } | ||||
|   | ||||
| @@ -12,7 +12,7 @@ import { SystemCompendiums } from "./settings/system-compendiums.js"; | ||||
| import { Misc } from "./misc.js"; | ||||
| import { RdDTimestamp } from "./time/rdd-timestamp.js"; | ||||
| import { RdDItemCompetenceCreature } from "./item-competencecreature.js"; | ||||
| import { ITEM_TYPES } from "./item.js"; | ||||
| import { ITEM_TYPES, RdDItem } from "./item.js"; | ||||
|  | ||||
| /** | ||||
|  * Extend the basic ItemSheet for RdD specific items | ||||
| @@ -107,7 +107,7 @@ export class RdDItemSheet extends ItemSheet { | ||||
|     } | ||||
|  | ||||
|     const competences = await SystemCompendiums.getCompetences('personnage'); | ||||
|     formData.categories = this.item.getCategories() | ||||
|     formData.categories = RdDItem.getCategories(this.item.type) | ||||
|     if (this.item.type == 'tache' || this.item.type == 'livre' || this.item.type == 'meditation' || this.item.type == 'oeuvre') { | ||||
|       formData.caracList = foundry.utils.duplicate(game.model.Actor.personnage.carac) | ||||
|       formData.caracList["reve-actuel"] = foundry.utils.duplicate(game.model.Actor.personnage.reve.reve) | ||||
| @@ -258,7 +258,7 @@ export class RdDItemSheet extends ItemSheet { | ||||
|  | ||||
|     if (this.item.isCompetence()) { | ||||
|       const categorie = event.currentTarget.value; | ||||
|       const level = RdDItemCompetence.getNiveauBase(categorie, this.item.getCategories()); | ||||
|       const level = RdDItemCompetence.getNiveauBase(categorie, this.item.type); | ||||
|       this.item.system.base = level; | ||||
|       this.html.find('[name="system.base"]').val(level); | ||||
|     } | ||||
|   | ||||
| @@ -6,8 +6,8 @@ import { RdDTimestamp } from "./time/rdd-timestamp.js"; | ||||
| import { RdDUtility } from "./rdd-utility.js"; | ||||
| import { SystemCompendiums } from "./settings/system-compendiums.js"; | ||||
| import { RdDRaretes } from "./item/raretes.js"; | ||||
| import { RdDItemCompetence } from "./item-competence.js"; | ||||
| import { RdDItemCompetenceCreature } from "./item-competencecreature.js"; | ||||
| import { CATEGORIES_COMPETENCES } from "./item-competence.js"; | ||||
| import { CATEGORIES_COMPETENCES_CREATURES } from "./item-competencecreature.js"; | ||||
|  | ||||
| export const ACTOR_TYPES = { | ||||
|   personnage: 'personnage', | ||||
| @@ -172,9 +172,11 @@ export class RdDItem extends Item { | ||||
|   static getItemTypesInventaire(mode = 'materiel') { | ||||
|     return typesInventaire[mode ?? 'materiel'] | ||||
|   } | ||||
|  | ||||
|   static getItemTypesDraconiques() { | ||||
|     return typesObjetsDraconiques; | ||||
|   } | ||||
|  | ||||
|   static getItemTypesEnvironnement() { | ||||
|     return typesEnvironnement; | ||||
|   } | ||||
| @@ -183,6 +185,16 @@ export class RdDItem extends Item { | ||||
|     return typesObjetsOeuvres | ||||
|   } | ||||
|  | ||||
|   static getCategories(itemType) { | ||||
|     switch (itemType) { | ||||
|       case ITEM_TYPES.competence: | ||||
|         return CATEGORIES_COMPETENCES | ||||
|       case ITEM_TYPES.competencecreature: | ||||
|         return CATEGORIES_COMPETENCES_CREATURES | ||||
|     } | ||||
|     return {} | ||||
|   } | ||||
|  | ||||
|   constructor(docData, context = {}) { | ||||
|     if (!context.rdd?.ready) { | ||||
|       foundry.utils.mergeObject(context, { rdd: { ready: true } }); | ||||
| @@ -262,13 +274,6 @@ export class RdDItem extends Item { | ||||
|   isPresentDansMilieux(milieux) { | ||||
|     return this.getEnvironnements(milieux).length > 0 | ||||
|   } | ||||
|   getCategories() { | ||||
|     switch (this.type) { | ||||
|       case ITEM_TYPES.competence: return RdDItemCompetence.getCategories() | ||||
|       case ITEM_TYPES.competencecreature: return RdDItemCompetenceCreature.getCategories() | ||||
|     } | ||||
|     return {} | ||||
|   } | ||||
|  | ||||
|   getEnvironnements(milieux = undefined) { | ||||
|     const environnements = this.isInventaire() ? this.system.environnement : undefined; | ||||
|   | ||||
| @@ -534,6 +534,7 @@ | ||||
|   }, | ||||
|   "primaryTokenAttribute": "sante.vie", | ||||
|   "secondaryTokenAttribute": "sante.endurance", | ||||
|   "background": "systems/foundryvtt-reve-de-dragon/styles/img/reve-de-dragon-cover.webp", | ||||
|   "media": [ | ||||
|     { | ||||
|       "type": "icon", | ||||
|   | ||||
| @@ -15,6 +15,7 @@ | ||||
|         } | ||||
|       }, | ||||
|       "background": { | ||||
|         "metier": "", | ||||
|         "biographie": "Histoire personnelle...", | ||||
|         "notes": "Notes", | ||||
|         "notesmj": "Notes du MJ", | ||||
|   | ||||
| @@ -172,6 +172,10 @@ | ||||
|               <label for="system.poids">Poids :</label> | ||||
|               <input class="flex-grow" type="text" name="system.poids" value="{{system.poids}}" data-dtype="String"/> | ||||
|             </li> | ||||
|             <li class="item flexrow list-item"> | ||||
|               <label for="system.metier">Métier :</label> | ||||
|               <input class="flex-grow" type="text" name="system.metier" value="{{system.metier}}" data-dtype="String"/> | ||||
|             </li> | ||||
|           </ul> | ||||
|           <ul class="item-list alterne-list"> | ||||
|             <li class="item flexrow list-item"> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user