import { baseItemSchema } from "./_shared.mjs" /** * DataModel pour les items de type "vehicle" (véhicules et montures). * Caractéristiques : Rareté, Fiabilité, Distance, Vitesse (croisière/pointe), * Entretien (compétences) et Réserve d'Effort (montures). * @augments {foundry.abstract.TypeDataModel} */ export default class VermineVehicleData extends foundry.abstract.TypeDataModel { /** @override */ static LOCALIZATION_PREFIXES = ["VERMINE.item.vehicle"] /** @override */ static defineSchema() { const fields = foundry.data.fields const reqInt = { required: true, nullable: false, integer: true } return { ...baseItemSchema(), // Fiabilité étendue (1-10) pour les véhicules reliability: new fields.NumberField({ ...reqInt, initial: 5, min: 1, max: 10 }), // Type : "vehicle" (véhicule) ou "mount" (monture) kind: new fields.StringField({ required: true, nullable: false, initial: "vehicle" }), // Distance : km parcourus avec un "plein" distance: new fields.NumberField({ ...reqInt, initial: 0, min: 0 }), // Vitesse : croisière / pointe (durée de la pointe) speed: new fields.SchemaField({ cruise: new fields.NumberField({ ...reqInt, initial: 0, min: 0 }), top: new fields.NumberField({ ...reqInt, initial: 0, min: 0 }), topDuration: new fields.StringField({ required: true, nullable: false, initial: "10 min" }) }), // Entretien : compétences nécessaires (clés de CONFIG.VERMINE.skills) maintenance: new fields.ArrayField(new fields.StringField({ required: true, nullable: false, initial: "" })), // Réserve d'Effort (montures) effortReserve: new fields.SchemaField({ value: new fields.NumberField({ ...reqInt, initial: 0, min: 0 }), min: new fields.NumberField({ ...reqInt, initial: 0, min: 0 }), max: new fields.NumberField({ ...reqInt, initial: 0, min: 0 }) }), // Mobilité (héritée) mobility: new fields.NumberField({ ...reqInt, initial: 3, min: 0 }) } } }