Compare commits
	
		
			10 Commits
		
	
	
		
			foundryvtt
			...
			9b37533bdf
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 9b37533bdf | |||
| 50d923061b | |||
| e89a8ba232 | |||
| b8f236fa97 | |||
| 74b184aa32 | |||
| 9c17f85fa8 | |||
| 599fdc752d | |||
| fa890491e5 | |||
| 80435b6bca | |||
| 1a476bd5bc | 
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
@@ -64,7 +64,7 @@ import { RdDItemArmure } from "./item/armure.js"
 | 
			
		||||
import { AutoAdjustDarkness as AutoAdjustDarkness } from "./time/auto-adjust-darkness.js"
 | 
			
		||||
import { RdDCreature } from "./actor/creature.js"
 | 
			
		||||
import { RdDTMRDialog } from "./rdd-tmr-dialog.js"
 | 
			
		||||
import { RdDActorExportSheet } from "./actor/actor-export-sheet.js"
 | 
			
		||||
//import { RdDActorExportSheet } from "./actor/actor-export-sheet.js"
 | 
			
		||||
import { OptionsAvancees } from "./settings/options-avancees.js"
 | 
			
		||||
import { ExportScriptarium } from "./actor/export-scriptarium/export-scriptarium.js"
 | 
			
		||||
 | 
			
		||||
@@ -158,7 +158,7 @@ export class SystemReveDeDragon {
 | 
			
		||||
    // Register sheet application classes
 | 
			
		||||
    Actors.unregisterSheet("core", ActorSheet)
 | 
			
		||||
    Actors.registerSheet(SYSTEM_RDD, RdDCommerceSheet, { types: ["commerce"], makeDefault: true })
 | 
			
		||||
    Actors.registerSheet(SYSTEM_RDD, RdDActorExportSheet, { types: ["personnage"], makeDefault: false })
 | 
			
		||||
    //Actors.registerSheet(SYSTEM_RDD, RdDActorExportSheet, { types: ["personnage"], makeDefault: false })
 | 
			
		||||
    Actors.registerSheet(SYSTEM_RDD, RdDActorSheet, { types: ["personnage"], makeDefault: true })
 | 
			
		||||
    Actors.registerSheet(SYSTEM_RDD, RdDCreatureSheet, { types: ["creature"], makeDefault: true })
 | 
			
		||||
    Actors.registerSheet(SYSTEM_RDD, RdDActorVehiculeSheet, { types: ["vehicule"], makeDefault: true })
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
{
 | 
			
		||||
  "id": "foundryvtt-reve-de-dragon",
 | 
			
		||||
  "title": "Rêve de Dragon",
 | 
			
		||||
  "version": "12.0.9",
 | 
			
		||||
  "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-12.0.9.zip",
 | 
			
		||||
  "version": "12.0.10",
 | 
			
		||||
  "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-12.0.10.zip",
 | 
			
		||||
  "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v11/system.json",
 | 
			
		||||
  "changelog": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/branch/v11/changelog.md",
 | 
			
		||||
  "compatibility": {
 | 
			
		||||
@@ -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