Initial release for FoundryVTT

This commit is contained in:
2026-04-13 15:53:13 +02:00
parent f61cbf0b78
commit 1ff1425777
193 changed files with 11270 additions and 0 deletions

16
modules/models/arme.mjs Normal file
View File

@@ -0,0 +1,16 @@
import BaseItemDataModel from "./base-item.mjs";
export default class ArmeDataModel extends BaseItemDataModel {
static defineSchema() {
const fields = foundry.data.fields;
return {
...super.defineSchema(),
categorie: new fields.StringField({ initial: "melee" }),
caracteristique: new fields.StringField({ initial: "force" }),
degats: new fields.StringField({ initial: "1d6" }),
portee: new fields.StringField({ initial: "" }),
mains: new fields.NumberField({ initial: 1, integer: true }),
equipee: new fields.BooleanField({ initial: false })
};
}
}

14
modules/models/armure.mjs Normal file
View File

@@ -0,0 +1,14 @@
import BaseItemDataModel from "./base-item.mjs";
export default class ArmureDataModel extends BaseItemDataModel {
static defineSchema() {
const fields = foundry.data.fields;
return {
...super.defineSchema(),
delta: new fields.NumberField({ initial: 8, integer: true }),
resultatProtection: new fields.NumberField({ initial: 0, integer: true }),
equipee: new fields.BooleanField({ initial: false }),
encombrement: new fields.StringField({ initial: "" })
};
}
}

View File

@@ -0,0 +1,9 @@
export default class BaseItemDataModel extends foundry.abstract.TypeDataModel {
static defineSchema() {
const fields = foundry.data.fields;
return {
description: new fields.HTMLField({ initial: "" }),
notes: new fields.HTMLField({ initial: "" })
};
}
}

View File

@@ -0,0 +1,12 @@
import BaseItemDataModel from "./base-item.mjs";
export default class CapaciteDataModel extends BaseItemDataModel {
static defineSchema() {
const fields = foundry.data.fields;
return {
...super.defineSchema(),
cout: new fields.StringField({ initial: "" }),
effet: new fields.StringField({ initial: "" })
};
}
}

View File

@@ -0,0 +1,13 @@
import BaseItemDataModel from "./base-item.mjs";
export default class ConsommableDataModel extends BaseItemDataModel {
static defineSchema() {
const fields = foundry.data.fields;
return {
...super.defineSchema(),
quantite: new fields.NumberField({ initial: 1, integer: true }),
delta: new fields.NumberField({ initial: 6, integer: true }),
effet: new fields.StringField({ initial: "" })
};
}
}

View File

@@ -0,0 +1,66 @@
import { DONJON_ET_CIE } from "../donjon-et-cie-config.mjs";
export default class EmployeDataModel extends foundry.abstract.TypeDataModel {
static defineSchema() {
const fields = foundry.data.fields;
const makeCharacteristic = (label, short) => new fields.SchemaField({
label: new fields.StringField({ initial: label }),
short: new fields.StringField({ initial: short }),
value: new fields.NumberField({ initial: 10, integer: true })
});
const favorFields = Object.fromEntries(Object.keys(DONJON_ET_CIE.favorDepartments).map((key) => [
key,
new fields.SchemaField({
delta: new fields.NumberField({ initial: 0, integer: true })
})
]));
return {
concept: new fields.StringField({ initial: "" }),
anciennete: new fields.SchemaField({
rang: new fields.NumberField({ initial: 1, integer: true }),
libelle: new fields.StringField({ initial: "Nouvel employe" })
}),
caracteristiques: new fields.SchemaField({
force: makeCharacteristic("FORce", "FOR"),
dexterite: makeCharacteristic("DEXterite", "DEX"),
constitution: makeCharacteristic("CONstitution", "CON"),
intelligence: makeCharacteristic("INTelligence", "INT"),
sagesse: makeCharacteristic("SAGesse", "SAG"),
charisme: makeCharacteristic("CHArisme", "CHA")
}),
sante: new fields.SchemaField({
dv: new fields.StringField({ initial: "1d6" }),
pv: new fields.SchemaField({
value: new fields.NumberField({ initial: 6, integer: true }),
max: new fields.NumberField({ initial: 6, integer: true })
})
}),
combat: new fields.SchemaField({
initiativeBonus: new fields.NumberField({ initial: 0, integer: true }),
degatsBonus: new fields.NumberField({ initial: 0, integer: true }),
attaquesCorpsACorps: new fields.NumberField({ initial: 1, integer: true }),
attaquesDistance: new fields.NumberField({ initial: 1, integer: true })
}),
magie: new fields.SchemaField({
focus: new fields.SchemaField({
delta: new fields.NumberField({ initial: 0, integer: true }),
resultat: new fields.NumberField({ initial: 0, integer: true }),
sceneId: new fields.StringField({ initial: "" })
}),
chaos: new fields.SchemaField({
delta: new fields.NumberField({ initial: 12, integer: true })
})
}),
profil: new fields.SchemaField({
objectifPersonnel: new fields.HTMLField({ initial: "" }),
suspicion: new fields.NumberField({ initial: 0, integer: true }),
avertissements: new fields.NumberField({ initial: 0, integer: true }),
missionsReussies: new fields.NumberField({ initial: 0, integer: true })
}),
faveurs: new fields.SchemaField(favorFields),
notes: new fields.HTMLField({ initial: "" }),
gmnotes: new fields.HTMLField({ initial: "" })
};
}
}

View File

@@ -0,0 +1,13 @@
import BaseItemDataModel from "./base-item.mjs";
export default class EquipementDataModel extends BaseItemDataModel {
static defineSchema() {
const fields = foundry.data.fields;
return {
...super.defineSchema(),
quantite: new fields.NumberField({ initial: 1, integer: true }),
equipee: new fields.BooleanField({ initial: false }),
emplacement: new fields.StringField({ initial: "" })
};
}
}

11
modules/models/index.mjs Normal file
View File

@@ -0,0 +1,11 @@
export { default as BaseItemDataModel } from "./base-item.mjs";
export { default as TraitDataModel } from "./trait.mjs";
export { default as LangueDataModel } from "./langue.mjs";
export { default as CapaciteDataModel } from "./capacite.mjs";
export { default as SortilegeDataModel } from "./sortilege.mjs";
export { default as ArmeDataModel } from "./arme.mjs";
export { default as ArmureDataModel } from "./armure.mjs";
export { default as EquipementDataModel } from "./equipement.mjs";
export { default as ConsommableDataModel } from "./consommable.mjs";
export { default as EmployeDataModel } from "./employe.mjs";
export { default as PnjDataModel } from "./pnj.mjs";

11
modules/models/langue.mjs Normal file
View File

@@ -0,0 +1,11 @@
import BaseItemDataModel from "./base-item.mjs";
export default class LangueDataModel extends BaseItemDataModel {
static defineSchema() {
const fields = foundry.data.fields;
return {
...super.defineSchema(),
niveau: new fields.StringField({ initial: "courant" })
};
}
}

36
modules/models/pnj.mjs Normal file
View File

@@ -0,0 +1,36 @@
export default class PnjDataModel extends foundry.abstract.TypeDataModel {
static defineSchema() {
const fields = foundry.data.fields;
return {
espece: new fields.StringField({ initial: "" }),
categorie: new fields.StringField({ initial: "Resident" }),
role: new fields.StringField({ initial: "" }),
resume: new fields.StringField({ initial: "" }),
sante: new fields.SchemaField({
dv: new fields.StringField({ initial: "1d8" }),
pv: new fields.SchemaField({
value: new fields.NumberField({ initial: 6, integer: true }),
max: new fields.NumberField({ initial: 6, integer: true })
})
}),
defense: new fields.SchemaField({
armure: new fields.SchemaField({
delta: new fields.NumberField({ initial: 0, integer: true }),
resultatProtection: new fields.NumberField({ initial: 0, integer: true })
}),
courage: new fields.SchemaField({
delta: new fields.NumberField({ initial: 0, integer: true })
})
}),
attaque: new fields.SchemaField({
nom: new fields.StringField({ initial: "Attaque" }),
degats: new fields.StringField({ initial: "1d6" }),
notes: new fields.StringField({ initial: "" })
}),
pouvoirsSpeciaux: new fields.HTMLField({ initial: "" }),
description: new fields.HTMLField({ initial: "" }),
notes: new fields.HTMLField({ initial: "" })
};
}
}

View File

@@ -0,0 +1,17 @@
import BaseItemDataModel from "./base-item.mjs";
export default class SortilegeDataModel extends BaseItemDataModel {
static defineSchema() {
const fields = foundry.data.fields;
return {
...super.defineSchema(),
caracteristique: new fields.StringField({ initial: "intelligence" }),
difficulte: new fields.NumberField({ initial: 0, integer: true }),
coutPv: new fields.NumberField({ initial: 0, integer: true }),
portee: new fields.StringField({ initial: "" }),
duree: new fields.StringField({ initial: "" }),
effet: new fields.StringField({ initial: "" }),
degats: new fields.StringField({ initial: "" })
};
}
}

11
modules/models/trait.mjs Normal file
View File

@@ -0,0 +1,11 @@
import BaseItemDataModel from "./base-item.mjs";
export default class TraitDataModel extends BaseItemDataModel {
static defineSchema() {
const fields = foundry.data.fields;
return {
...super.defineSchema(),
etiquette: new fields.StringField({ initial: "" })
};
}
}