2024-02-19 22:02:44 +01:00
|
|
|
export class TeDeumArmeSchema extends foundry.abstract.TypeDataModel {
|
2023-12-11 22:24:19 +01:00
|
|
|
static defineSchema() {
|
|
|
|
const fields = foundry.data.fields;
|
|
|
|
const requiredInteger = { required: true, nullable: false, integer: true };
|
2024-02-29 22:35:12 +01:00
|
|
|
const requiredDouble = { required: true, nullable: false, integer: false };
|
2023-12-11 22:24:19 +01:00
|
|
|
const schema = {};
|
|
|
|
|
2024-02-19 22:02:44 +01:00
|
|
|
schema.typeArme = new fields.StringField({required: true, choices: ["melee", "tir"], initial: "melee"});
|
2024-06-04 21:05:54 +02:00
|
|
|
schema.allonge = new fields.StringField({required: true, choices: ["courte", "moyenne", "longue", "treslongue"], initial: "courte"});
|
2024-02-19 22:02:44 +01:00
|
|
|
|
2023-12-11 22:24:19 +01:00
|
|
|
schema.specificites = new fields.SchemaField(
|
2024-02-29 22:35:12 +01:00
|
|
|
Object.values((game.system.tedeum.config.ARME_SPECIFICITE)).reduce((obj, spec) => {
|
2023-12-11 22:24:19 +01:00
|
|
|
obj[spec.id] = new fields.SchemaField({
|
|
|
|
hasSpec: new fields.BooleanField({initial: false}),
|
|
|
|
});
|
|
|
|
return obj;
|
|
|
|
}, {})
|
|
|
|
);
|
2024-06-04 21:05:54 +02:00
|
|
|
|
|
|
|
schema.portees = new fields.SchemaField(
|
|
|
|
Object.values((game.system.tedeum.config.ARME_PORTEES)).reduce((obj, spec) => {
|
|
|
|
obj[spec.id] = new fields.SchemaField({
|
|
|
|
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
|
|
|
});
|
|
|
|
return obj;
|
|
|
|
}, {})
|
|
|
|
);
|
|
|
|
|
2023-12-11 22:24:19 +01:00
|
|
|
schema.degatsArmure = new fields.SchemaField( {
|
|
|
|
sansarmure : new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
|
|
|
cuir : new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
|
|
|
plates : new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
|
|
|
mailles : new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
|
|
|
});
|
2024-06-04 21:05:54 +02:00
|
|
|
|
|
|
|
schema.tempsRecharge = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 });
|
|
|
|
schema.valeurEchecCritique = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 });
|
2023-12-11 22:24:19 +01:00
|
|
|
|
|
|
|
schema.initiativeBonus = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 });
|
|
|
|
|
|
|
|
schema.degats = new fields.StringField({ required: false, blank: true, initial: undefined });
|
2024-06-04 21:05:54 +02:00
|
|
|
let comp = []
|
|
|
|
for (let key of Object.keys(game.system.tedeum.config.armeCompetences)) {
|
|
|
|
comp.push(key);
|
|
|
|
}
|
|
|
|
schema.competence = new fields.StringField({ required: true, choices:comp, initial: "bagarre" });
|
|
|
|
schema.competence2 = new fields.StringField({ required: false, choices:comp, initial: "", blank: true });
|
2024-02-29 22:35:12 +01:00
|
|
|
|
|
|
|
schema.prix = new fields.NumberField({ ...requiredDouble, initial: 0, min: 0 });
|
|
|
|
schema.monnaie = new fields.StringField({ required: true, blank: false, initial: "denier" });
|
|
|
|
|
2023-12-11 22:24:19 +01:00
|
|
|
schema.description = new fields.HTMLField({ required: true, blank: true });
|
|
|
|
|
|
|
|
return schema;
|
|
|
|
}
|
|
|
|
}
|