Files

BoL DataModels

Ce dossier contient les DataModels pour le système Barbarians of Lemuria (BoL).

Structure

Actors DataModels

  • character.mjs : Personnages joueurs

    • Attributs (Vigor, Agility, Mind, Appeal)
    • Aptitudes (Initiative, Mêlée, Distance, Défense)
    • Ressources (HP, Hero Points, Faith, Power, Alchemy, Astrology)
    • XP et création
    • Bougette (argent)
  • encounter.mjs : PNJ et créatures

    • Mêmes attributs que character
    • Champs spécifiques : chartype (tough/villain), isundead, size, environment
  • horde.mjs : Hordes de créatures

    • Mêmes attributs de base
    • Champs spécifiques : hordesize, hordebasehp, hasdamagerule, damagerule
  • vehicle.mjs : Véhicules (navires, chars, etc.)

    • Attributs véhicules : hull, crew, resources
    • Champs spécifiques : vehicletype, row, spur, status

Items DataModels

  • item.mjs : Équipements et objets

    • Propriétés (weapon, armor, magical, etc.)
    • Équipement (quantity, weight, price, worn)
    • Category et subtype
  • feature.mjs : Capacités, traits, sorts

    • Rank (niveau/rang)
    • Description
    • Category et subtype

Architecture

Tous les DataModels héritent de foundry.abstract.TypeDataModel et définissent leur schéma via defineSchema().

Exemple de structure :

export default class BoLCharacterDataModel extends foundry.abstract.TypeDataModel {
  static defineSchema() {
    const fields = foundry.data.fields;
    const requiredInteger = { required: true, nullable: false, integer: true };
    
    return {
      // Définition des champs
    };
  }
  
  static LOCALIZATION_PREFIXES = ["BOL.Character"];
  
  // Méthodes personnalisées (à ajouter)
}

Types de champs utilisés

  • StringField : Chaînes de caractères
  • NumberField : Nombres (avec option integer: true pour entiers)
  • BooleanField : Booléens
  • HTMLField : HTML enrichi (descriptions, biographies)
  • ArrayField : Tableaux
  • SchemaField : Objets imbriqués

Export

Le fichier _module.mjs exporte tous les DataModels :

export { default as BoLCharacter } from "./character.mjs"
export { default as BoLEncounter } from "./encounter.mjs"
export { default as BoLHorde } from "./horde.mjs"
export { default as BoLVehicle } from "./vehicle.mjs"
export { default as BoLItem } from "./item.mjs"
export { default as BoLFeature } from "./feature.mjs"

Configuration dans bol.js

Les DataModels sont enregistrés dans CONFIG :

CONFIG.Actor.dataModels = {
  character: models.BoLCharacter,
  encounter: models.BoLEncounter,
  horde: models.BoLHorde,
  vehicle: models.BoLVehicle
}

CONFIG.Item.dataModels = {
  item: models.BoLItem,
  feature: models.BoLFeature
}

Compatibilité

Les DataModels sont compatibles avec le template.json existant. La migration est transparente pour les données existantes.

Prochaines étapes

  1. Ajouter prepareDerivedData() pour les calculs automatiques
  2. Migrer la logique métier depuis actor.js
  3. Ajouter des validations personnalisées
  4. Documenter avec JSDoc