Ajout items et fiches

This commit is contained in:
2024-06-04 21:05:54 +02:00
parent 6b47cd3f40
commit 949baa8359
59 changed files with 4585 additions and 2180 deletions

View File

@ -42,6 +42,7 @@ export class TeDeumActorPJSheet extends ActorSheet {
providence: this.actor.prepareProvidence(),
arbreCompetences: this.actor.prepareArbreCompetences(),
equipements: this.actor.getEquipements(),
graces: this.actor.getGraces(),
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
notes: await TextEditor.enrichHTML(this.object.system.notes, { async: true }),
options: this.options,

View File

@ -83,6 +83,11 @@ export class TeDeumActor extends Actor {
return comp;
}
/* -------------------------------------------- */
getGraces() {
let comp = duplicate(this.items.filter(item => item.type == 'grace') || [])
TeDeumUtility.sortArrayObjectsByName(comp)
return comp;
}
getArmes() {
let comp = duplicate(this.items.filter(item => item.type == 'arme') || [])
TeDeumUtility.sortArrayObjectsByName(comp)

View File

@ -27,14 +27,30 @@ export const TEDEUM_CONFIG = {
},
ARME_SPECIFICITE: {
"encombrante": { label: "Encombrante", id: "encombrante" },
"maintiendistance": { label: "Maintien à distance", id: "maintiendistance" },
"treslongue": { label: "Très longue", id: "treslongue" },
"coupassomant": { label: "Coup assomant", id: "coupassomant" },
"peutlancer": { label: "Peut être lancée", id: "peutlancer" },
"encombrante": { label: "Encombrante", id: "encombrante", melee: true, tir: true},
"maintiendistance": { label: "Maintien à distance", id: "maintiendistance", melee: true, tir: false },
"coupassomant": { label: "Coup assomant", id: "coupassomant", melee: true, tir: false},
"peutlancer": { label: "Peut être lancée", id: "peutlancer", melee: true, tir: false},
"pasboutportant": { label: "Inutilisable à bout portant", id: "pasboutportant", melee: false, tir: true},
"rechargearquebusade": { label: "Retrancher l'Arquebusade au temps de recharge", id: "rechargearquebusade", melee: false, tir: true },
"mitraille": { label: "Mitraille", id: "mitraille", melee: false, tir: true },
"degatscharge": { label: "Dégâts accrus à la charge", id: "degatscharge", melee: true, tir: false },
"crochecavalier": { label: "Croche-cavalier", id: "crochecavalier", melee: true, tir: false },
"coupfaucheur": { label: "Coup du faucheur", id: "coupfaucheur", melee: true, tir: false },
"briselances": { label: "Brise-lances", id: "briselances", melee: true, tir: false },
"pasbrisemaingaucheespagnole": { label: "Ne peut être brisé pas une main gauche espagnole", id: "pasbrisemaingaucheespagnole", melee: true, tir: false },
"peutbriser": { label: "Peut briser", id: "peutbriser", melee: true, tir: false },
},
descriptionValeur: {
ARME_PORTEES: {
"brulepourpoint": { label: "Brûle-pourpoint", difficulty: "facile", id: "brulepourpoint"},
"courte": { label: "Courte", difficulty: "pardefaut", id: "courte"},
"moyenne": { label: "Moyenne", difficulty: "difficile", id: "moyenne"},
"longue": { label: "Longue", difficulty: "perilleux", id: "longue"},
"extreme": { label: "Extrême", difficulty: "desespere", id: "extreme"},
},
descriptionValeurOdd: {
1: { valeur: 1, qualite: "Mauvais", dice: "d4", negativeDice: "d20", savoir: "Sot", sensibilite: "Obtus", entregent: "Rustaud", puissance: "Menu", complexion: "Anémique", adresse: "Empesé" },
2: { valeur: 2, qualite: "Médiocre", dice: "d6", negativeDice: "d12", savoir: "Limité", sensibilite: "Etriqué", entregent: "Frustre", puissance: "Délicat", complexion: "Languide", adresse: "Gauche" },
3: { valeur: 3, qualite: "Correct", dice: "d8", negativeDice: "d10", savoir: "Mêlé", sensibilite: "Ouvert", entregent: "Badin", puissance: "Membru", complexion: "Dispos", adresse: "Ingambe" },
@ -48,6 +64,14 @@ export const TEDEUM_CONFIG = {
11: { valeur: 11, qualite: "Excellent", dice: "d12", negativeDice: "d6", savoir: "Docte", sensibilite: "Subtil", entregent: "Galant", puissance: "Musculeux", complexion: "Sanguin", adresse: "Preste" },
12: { valeur: 12, qualite: "Admirable", dice: "d20", negativeDice: "d4", savoir: "Humaniste", sensibilite: "Spirituel", entregent: "Sémillant", puissance: "Hercule", complexion: "Aguerri", adresse: "Alerte" },
},
descriptionValeur: {
1: { valeur: 1, qualite: "Mauvais", dice: "d4", negativeDice: "d20", savoir: "Sot", sensibilite: "Obtus", entregent: "Rustaud", puissance: "Menu", complexion: "Anémique", adresse: "Empesé" },
2: { valeur: 2, qualite: "Médiocre", dice: "d6", negativeDice: "d12", savoir: "Limité", sensibilite: "Etriqué", entregent: "Frustre", puissance: "Délicat", complexion: "Languide", adresse: "Gauche" },
3: { valeur: 3, qualite: "Correct", dice: "d8", negativeDice: "d10", savoir: "Mêlé", sensibilite: "Ouvert", entregent: "Badin", puissance: "Membru", complexion: "Dispos", adresse: "Ingambe" },
4: { valeur: 4, qualite: "Bon", dice: "d10", negativeDice: "d8", savoir: "Lettré", sensibilite: "Fin", entregent: "Disert", puissance: "Vigoureux", complexion: "Gaillard", adresse: "Leste" },
5: { valeur: 5, qualite: "Excellent", dice: "d12", negativeDice: "d6", savoir: "Docte", sensibilite: "Subtil", entregent: "Galant", puissance: "Musculeux", complexion: "Sanguin", adresse: "Preste" },
6: { valeur: 6, qualite: "Admirable", dice: "d20", negativeDice: "d4", savoir: "Humaniste", sensibilite: "Spirituel", entregent: "Sémillant", puissance: "Hercule", complexion: "Aguerri", adresse: "Alerte" },
},
diceValeur: [ "d4", "d6", "d8", "d10", "d12", "d20" ],
degatsArmure : {
sansarmure : { label: "Sans armure"},
@ -79,6 +103,21 @@ export const TEDEUM_CONFIG = {
melee: { label: "Mêlée", value: "melee" },
tir: { label: "Tir", value: "tir" }
},
armeAllonges: {
courte: { label: "Courte", value: "courte" },
moyenne: { label: "Moyenne", value: "moyenne" },
longue: { label: "Longue", value: "longue" },
treslongue: { label: "Très longue", value: "treslongue"}
},
armeCompetences: {
bagarre: { label: "Bagarre", value: "bagarre" },
maingauche: { label: "Main gauche", value: "maingauche" },
escrime: { label: "Escrime", value: "escrime" },
hast: { label: "Armes d'Hast", value: "hast" },
lancer: { label: "Lancer", value: "lancer" },
archerie: { label: "Archerie", value: "archerie" },
arquebusade: { label: "Arquebusade", value: "arquebusade" }
},
difficulte: {
routine: { label: "Routine", value: 3 },
facile: { label: "Facile", value: 5 },

View File

@ -50,9 +50,17 @@ export class TeDeumUtility {
//console.log("getConfigLabel", configName, key)
return game.system.tedeum.config[configName][key].label
})
Handlebars.registerHelper('isSpecArmeType', function (key, armeType) {
return game.system.tedeum.config.ARME_SPECIFICITE[key][armeType]
})
Handlebars.registerHelper('getConfigLabelWithGender', function (configName, key, genderKey) {
return game.system.tedeum.config[configName][key]["label"+genderKey]
})
Handlebars.registerHelper('getCaracDescription', function (key, value) {
return game.system.tedeum.config.descriptionValeur[Number(value)][key]
})
Handlebars.registerHelper('isGM', function () {
return game.user.isGM
})
@ -333,7 +341,7 @@ export class TeDeumUtility {
}
if (rollData.diceSum == 1) {
let critiqueRoll = await new Roll(rollData.carac.negativeDice).roll()
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
await this.showDiceSoNice(critiqueRoll, game.settings.get("core", "rollMode"))
rollData.critiqueRoll = foundry.utils.duplicate(critiqueRoll)
if (critiqueRoll.total > rollData.competence.score) {
rollData.isEchecCritique = true

View File

@ -6,6 +6,7 @@ export class TeDeumArmeSchema extends foundry.abstract.TypeDataModel {
const schema = {};
schema.typeArme = new fields.StringField({required: true, choices: ["melee", "tir"], initial: "melee"});
schema.allonge = new fields.StringField({required: true, choices: ["courte", "moyenne", "longue", "treslongue"], initial: "courte"});
schema.specificites = new fields.SchemaField(
Object.values((game.system.tedeum.config.ARME_SPECIFICITE)).reduce((obj, spec) => {
@ -15,17 +16,35 @@ export class TeDeumArmeSchema extends foundry.abstract.TypeDataModel {
return obj;
}, {})
);
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;
}, {})
);
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 }),
});
schema.tempsRecharge = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 });
schema.valeurEchecCritique = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 });
schema.initiativeBonus = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 });
schema.degats = new fields.StringField({ required: false, blank: true, initial: undefined });
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 });
schema.prix = new fields.NumberField({ ...requiredDouble, initial: 0, min: 0 });
schema.monnaie = new fields.StringField({ required: true, blank: false, initial: "denier" });

View File

@ -0,0 +1,14 @@
export class TeDeumGraceSchema extends foundry.abstract.TypeDataModel {
static defineSchema() {
const fields = foundry.data.fields;
const requiredInteger = { required: true, nullable: false, integer: true };
const schema = {};
schema.prerequis = new fields.StringField({ required: true, blank: true, initial: "" });
schema.effet = new fields.StringField({ required: true, blank: true, initial: "" });
schema.description = new fields.HTMLField({ required: true, blank: true });
return schema;
}
}

View File

@ -40,7 +40,7 @@ export class TeDeumPJSchema extends foundry.abstract.TypeDataModel {
schema.description = new fields.HTMLField({required: true, blank: true});
schema.connaissances = new fields.HTMLField({required: true, blank: true});
schema.vetements = new fields.HTMLField({required: true, blank: true});
schema.descriptiongraces = new fields.HTMLField({required: true, blank: true});
//schema.descriptiongraces = new fields.HTMLField({required: true, blank: true});
schema.genre = new fields.StringField({required: true, choices: ["Homme", "Femme"], initial: "Femme"});
schema.age = new fields.StringField({ required: false, blank: true, initial: undefined });
schema.statutocial = new fields.StringField({ required: false, blank: true, initial: undefined });

View File

@ -1,11 +1,12 @@
import { TeDeumUtility } from "../common/tedeum-utility.js";
export const defaultItemImg = {
arme: "systems/fvtt-te-deum/images/icons/icon_arme.webp",
armure: "systems/fvtt-te-deum/images/icons/icon_armure.webp",
equipement: "systems/fvtt-te-deum/images/icons/icon_equipement.webp",
competence: "systems/fvtt-te-deum/images/icons/icon_competence.webp",
education: "systems/fvtt-te-deum/images/icons/icon_education.webp",
arme: "systems/fvtt-te-deum/images/icons/arme_melee.webp",
armure: "systems/fvtt-te-deum/images/icons/armure.webp",
equipement: "systems/fvtt-te-deum/images/icons/equipement.webp",
competence: "systems/fvtt-te-deum/images/icons/competence.webp",
education: "systems/fvtt-te-deum/images/icons/education.webp",
grace: "systems/fvtt-te-deum/images/icons/grace.webp",
}
/**

View File

@ -18,6 +18,7 @@ import { TeDeumCompetenceSchema } from "./data/tedeum-schema-competence.js";
import { TeDeumEquipementSchema } from "./data/tedeum-schema-equipement.js";
import { TeDeumOrigineSchema } from "./data/tedeum-schema-origine.js";
import { TeDeumEducationSchema } from "./data/tedeum-schema-education.js";
import { TeDeumGraceSchema } from "./data/tedeum-schema-grace.js";
import { TeDeumItem } from "./items/tedeum-item.js";
import { TeDeumItemSheet } from "./items/tedeum-item-sheet.js";
@ -69,7 +70,8 @@ Hooks.once("init", async function () {
equipement: TeDeumEquipementSchema,
armure: TeDeumArmureSchema,
origine: TeDeumOrigineSchema,
education: TeDeumEducationSchema
education: TeDeumEducationSchema,
grace: TeDeumGraceSchema
};
console.log("TeDeum RPG | Ready");