diff --git a/modules/app/tedeum-commands.js b/modules/app/tedeum-commands.js index 9ca1c27..b630c88 100644 --- a/modules/app/tedeum-commands.js +++ b/modules/app/tedeum-commands.js @@ -3,7 +3,7 @@ import { TeDeumUtility } from "../common/tedeum-utility.js"; /* -------------------------------------------- */ -export class EcrymeCommands { +export class TeDeumCommands { static init() { if (!game.system.tedeum.commands) { diff --git a/modules/common/tedeum-config.js b/modules/common/tedeum-config.js index a39d769..eff3a82 100644 --- a/modules/common/tedeum-config.js +++ b/modules/common/tedeum-config.js @@ -1,29 +1,40 @@ export const SYSTEM_ID = "fvtt-te-deum"; +export const __BONUS_DEGATS = [{}, { label: "1d4", value: -2 }, { label: "1d6", value: -1 }, { label: "1d8", value: 0 }, +{ label: "1d10", value: 1 }, { label: "1d12", value: 2 }, { label: "1d20", value: 3 }] +export const __MAX_ARMURES_LOURDES = [{}, { value: 1 }, { value: 3 }, { value: 5 }, +{ value: 7 }, { value: 9 }, { value: 11 }] +export const __EFFORT = [{}, { value: 1 }, { value: 2 }, { value: 3 }, + { value: 4 }, { value: 5 }, { value: 6 }] +export const __ACTIONS_PAR_TOUR = [{}, { value: 1 }, { value: 2 }, { value: 2 }, + { value: 3 }, { value: 3 }, { value: 4 }] +export const __COUT_XP = [{}, { value: 10 }, { value: 10 }, { value: 10 }, + { value: 10 }, { value: 30 }, { value: 50 }] + export const LOCALISATION = { - "pieddroit":{ label: "Pied Droit", value: 1, id :"pieddroit", nbArmure: 1 }, - "jambedroite": { label: "Jambe Droite", value: 1, id :"jambedroite", nbArmure: 1 }, - "jambegauche": { label: "Jambe Gauche", value: 1, id :"jambegauche", nbArmure: 1 }, - "piedgauche":{ label: "Pied Gauche", value: 1, id :"piedgauche", nbArmure: 1 }, - "piedgauche":{ label: "Pied Gauche", value: 1, id :"piedgauche", nbArmure: 1 }, - "maindroite":{ label: "Main Droite", value: 1, id :"maindroite", nbArmure: 1 }, - "maingauche":{ label: "Main Gauche", value: 1, id :"maingauche", nbArmure: 1 }, - "brasdroit":{ label: "Bras Droit", value: 1, id :"brasdroit", nbArmure: 2 }, - "brasgauche":{ label: "Bras Gauche", value: 1, id :"brasgauche", nbArmure: 2 }, - "corps":{ label: "Corps", value: 1, id :"corps", nbArmure: 2 }, - "tete":{ label: "Tête", value: 1, id :"tete", nbArmure: 2 }, + "pieddroit": { label: "Pied Droit", value: 1, id: "pieddroit", nbArmure: 1 }, + "jambedroite": { label: "Jambe Droite", value: 1, id: "jambedroite", nbArmure: 1 }, + "jambegauche": { label: "Jambe Gauche", value: 1, id: "jambegauche", nbArmure: 1 }, + "piedgauche": { label: "Pied Gauche", value: 1, id: "piedgauche", nbArmure: 1 }, + "piedgauche": { label: "Pied Gauche", value: 1, id: "piedgauche", nbArmure: 1 }, + "maindroite": { label: "Main Droite", value: 1, id: "maindroite", nbArmure: 1 }, + "maingauche": { label: "Main Gauche", value: 1, id: "maingauche", nbArmure: 1 }, + "brasdroit": { label: "Bras Droit", value: 1, id: "brasdroit", nbArmure: 2 }, + "brasgauche": { label: "Bras Gauche", value: 1, id: "brasgauche", nbArmure: 2 }, + "corps": { label: "Corps", value: 1, id: "corps", nbArmure: 2 }, + "tete": { label: "Tête", value: 1, id: "tete", nbArmure: 2 }, } export const 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" }, + "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" }, } export const TEDEUM_CONFIG = { - descriptionValeur: { + descriptionValeur: { 1: { qualite: "Mauvais", dice: "d4", negativeDice: "d20", savoir: "Sot", sensibilite: "Obtus", entregent: "Rustaud", puissance: "Menu", complexion: "Anémique", adresse: "Empesé" }, 2: { qualite: "Médiocre", dice: "d6", negativeDice: "d12", savoir: "Limité", sensibilite: "Etriqué", entregent: "Frustre", puissance: "Délicat", complexion: "Languide", adresse: "Gauche" }, 3: { qualite: "Correct", dice: "d8", negativeDice: "d10", savoir: "Mêlé", sensibilite: "Ouvert", entregent: "Badin", puissance: "Membru", complexion: "Dispos", adresse: "Ingambe" }, @@ -42,9 +53,18 @@ export const TEDEUM_CONFIG = { sensibilite: { id: "sensibilite", value: 1, label: "Sensibilité" }, entregent: { id: "entregent", value: 1, label: "Entregent" }, complexion: { id: "complexion", value: 1, label: "Complexion" }, - puissance: { id:"puissance", value: 1, label: "Puissance" }, + puissance: { id: "puissance", value: 1, label: "Puissance" }, adresse: { id: "adresse", value: 1, label: "Adresse" }, }, + providence: [ + {labelM: "Brebis égarée", labelF: "Brebis égarée",value: 0, diceValue: "0"}, + {labelM: "Pauvre pêcheur", labelF: "Pauvre pêcheresse",value: 1, diceValue: "d4"}, + {labelM: "Fils prodigue", labelF: "Fille prodigue",value: 2, diceValue: "d6"}, + {labelM: "Bon samaritain", labelF: "Bon samaritain",value: 3, diceValue: "d8"}, + {labelM: "Animé par la grâce", labelF: "Animée par la grâce",value: 4, diceValue: "d10"}, + {labelM: "Oint du Seigneur", labelF: "Ointe du Seigneur",value: 5, diceValue: "d12"}, + {labelM: "Dans la main de Dieu", labelF: "Dans la main de Dieu",value: 6, diceValue: "d20"}, + ], localisation: { 1: LOCALISATION.pieddroit, 2: LOCALISATION.piedgauche, @@ -67,13 +87,22 @@ export const TEDEUM_CONFIG = { 19: LOCALISATION.tete, 20: LOCALISATION.tete }, - difficulte: { - routine: {label: "Routine", value: 3}, - facile: {label: "Facile", value: 5}, - pardefaut: {label: "Par Défaut", value: 7}, - malaise: {label: "Malaisé", value: 9}, - difficile: {label: "difficile", value:11}, - perilleux: {label: "Perilleux", value:13}, - desespere: {label: "Désespéré", value:15} + armeTypes: { + "melee": { label: "Mêlée", value: "melee" }, + "tir": { label: "Tir", value: "tir" } + }, + difficulte: { + routine: { label: "Routine", value: 3 }, + facile: { label: "Facile", value: 5 }, + pardefaut: { label: "Par Défaut", value: 7 }, + malaise: { label: "Malaisé", value: 9 }, + difficile: { label: "difficile", value: 11 }, + perilleux: { label: "Perilleux", value: 13 }, + desespere: { label: "Désespéré", value: 15 } + }, + monnaie: { + denier: { label: "Deniers", value: 1 }, + sol: { label: "Sols", value: 10 }, + livre: { label: "Livres", value: 100 } } } \ No newline at end of file diff --git a/modules/common/tedeum-utility.js b/modules/common/tedeum-utility.js index daddcaa..e2b0933 100644 --- a/modules/common/tedeum-utility.js +++ b/modules/common/tedeum-utility.js @@ -6,7 +6,7 @@ export class TeDeumUtility { /* -------------------------------------------- */ static async init() { Hooks.on('renderChatLog', (log, html, data) => TeDeumUtility.chatListeners(html)); - Hooks.on("getChatLogEntryContext", (html, options) => TeDeumUtility.chatMenuManager(html, options)); + //Hooks.on("getChatLogEntryContext", (html, options) => TeDeumUtility.chatMenuManager(html, options)); } /* -------------------------------------------- */ @@ -116,7 +116,8 @@ export class TeDeumUtility { /* -------------------------------------------- */ static async preloadHandlebarsTemplates() { - + + console.log("PRELOAD >>>>>") const templatePaths = [ 'systems/fvtt-te-deum/templates/actors/editor-notes-gm.hbs', 'systems/fvtt-te-deum/templates/items/partial-item-nav.hbs', diff --git a/modules/data/tedeum-schema-arme.js b/modules/data/tedeum-schema-arme.js index f3c98e9..1414053 100644 --- a/modules/data/tedeum-schema-arme.js +++ b/modules/data/tedeum-schema-arme.js @@ -1,11 +1,13 @@ -export default class TeDeumArmeSchema extends foundry.abstract.TypeDataModel { +export class TeDeumArmeSchema extends foundry.abstract.TypeDataModel { static defineSchema() { const fields = foundry.data.fields; const requiredInteger = { required: true, nullable: false, integer: true }; const schema = {}; + schema.typeArme = new fields.StringField({required: true, choices: ["melee", "tir"], initial: "melee"}); + schema.specificites = new fields.SchemaField( - Object.values((ARME_SPECIFICITE)).reduce((obj, spec) => { + Object.values((game.system.tedeum.ARME_SPECIFICITE)).reduce((obj, spec) => { obj[spec.id] = new fields.SchemaField({ hasSpec: new fields.BooleanField({initial: false}), }); diff --git a/modules/data/tedeum-schema-armure.js b/modules/data/tedeum-schema-armure.js index cadce26..80e8ae0 100644 --- a/modules/data/tedeum-schema-armure.js +++ b/modules/data/tedeum-schema-armure.js @@ -1,4 +1,4 @@ -export default class TeDeumArmureSchema extends foundry.abstract.TypeDataModel { +export class TeDeumArmureSchema extends foundry.abstract.TypeDataModel { static defineSchema() { const fields = foundry.data.fields; const requiredInteger = { required: true, nullable: false, integer: true }; @@ -6,7 +6,7 @@ export default class TeDeumArmureSchema extends foundry.abstract.TypeDataModel { schema.localisation = new fields.SchemaField( Object.values(LOCALISATION).reduce((obj, loc) => { - obj[loc.id] =new fields.SchemaField({ + obj[loc.id] = new fields.SchemaField({ protege: new fields.BooleanField({initial: false}), }); return obj; diff --git a/modules/data/tedeum-schema-competence.js b/modules/data/tedeum-schema-competence.js index cac40c9..75c0a61 100644 --- a/modules/data/tedeum-schema-competence.js +++ b/modules/data/tedeum-schema-competence.js @@ -1,4 +1,4 @@ -export default class TeDeumCompetenceSchema extends foundry.abstract.TypeDataModel { +export class TeDeumCompetenceSchema extends foundry.abstract.TypeDataModel { static defineSchema() { const fields = foundry.data.fields; const requiredInteger = { required: true, nullable: false, integer: true }; diff --git a/modules/data/tedeum-schema-debouche.js b/modules/data/tedeum-schema-debouche.js new file mode 100644 index 0000000..f19e601 --- /dev/null +++ b/modules/data/tedeum-schema-debouche.js @@ -0,0 +1,12 @@ +export class TeDeumDeboucheSchema extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields; + const requiredInteger = { required: true, nullable: false, integer: true }; + const schema = {}; + + schema.cagnotteMultiplier = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }); + schema.description = new fields.HTMLField({ required: true, blank: true }); + + return schema; + } +} diff --git a/modules/data/tedeum-schema-education.js b/modules/data/tedeum-schema-education.js new file mode 100644 index 0000000..3c7702f --- /dev/null +++ b/modules/data/tedeum-schema-education.js @@ -0,0 +1,11 @@ +export class TeDeumEducationSchema extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields; + const requiredInteger = { required: true, nullable: false, integer: true }; + const schema = {}; + + schema.description = new fields.HTMLField({ required: true, blank: true }); + + return schema; + } +} diff --git a/modules/data/tedeum-schema-equipement.js b/modules/data/tedeum-schema-equipement.js index a653459..4a8352c 100644 --- a/modules/data/tedeum-schema-equipement.js +++ b/modules/data/tedeum-schema-equipement.js @@ -1,4 +1,4 @@ -export default class TeDeumArmureSchema extends foundry.abstract.TypeDataModel { +export class TeDeumEquipementSchema extends foundry.abstract.TypeDataModel { static defineSchema() { const fields = foundry.data.fields; const requiredInteger = { required: true, nullable: false, integer: true }; diff --git a/modules/data/tedeum-schema-origine.js b/modules/data/tedeum-schema-origine.js new file mode 100644 index 0000000..a94dc53 --- /dev/null +++ b/modules/data/tedeum-schema-origine.js @@ -0,0 +1,15 @@ +export class TeDeumOrigineSchema extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields; + const requiredInteger = { required: true, nullable: false, integer: true }; + const schema = {}; + + schema.bonus1 = new fields.StringField({ required: true, blank: false, initial: "entregent" }); + schema.bonus2 = new fields.StringField({ required: true, blank: false, initial: "entregent" }); + schema.cagnotte = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }); + schema.monnaie = new fields.StringField({ required: true, blank: false, initial: "denier" }); + schema.description = new fields.HTMLField({ required: true, blank: true }); + + return schema; + } +} diff --git a/modules/data/tedeum-schema-pj.js b/modules/data/tedeum-schema-pj.js index e2c059f..0cc4aa2 100644 --- a/modules/data/tedeum-schema-pj.js +++ b/modules/data/tedeum-schema-pj.js @@ -1,4 +1,4 @@ -export default class TeDeumPJSchema extends foundry.abstract.TypeDataModel { +export class TeDeumPJSchema extends foundry.abstract.TypeDataModel { static defineSchema() { const fields = foundry.data.fields; const requiredInteger = { required: true, nullable: false, integer: true }; @@ -14,6 +14,13 @@ export default class TeDeumPJSchema extends foundry.abstract.TypeDataModel { }, {}) ); + schema.providence = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), + }); + schema.bienveillance = new fields.SchemaField({ + value: new fields.NumberField({ ...requiredInteger, initial: 10, min: 0 }), + }); + schema.localisation = new fields.SchemaField( Object.values(LOCALISATION).reduce((obj, loc) => { obj[loc.id] =new fields.SchemaField({ @@ -33,7 +40,7 @@ export default 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.genre = new fields.StringField({ required: false, blank: true, initial: undefined }); + schema.genre = new fields.StringField({required: true, choices: ["Homme", "Femme"], initial: "Femme"}); schema.age = new fields.StringField({ required: false, blank: true, initial: undefined }); schema.origine = new fields.StringField({ required: false, blank: true, initial: undefined }); schema.charges = new fields.StringField({ required: false, blank: true, initial: undefined }); diff --git a/modules/items/tedeum-item-sheet.js b/modules/items/tedeum-item-sheet.js index b4908f1..5bb1425 100644 --- a/modules/items/tedeum-item-sheet.js +++ b/modules/items/tedeum-item-sheet.js @@ -32,19 +32,6 @@ export class TeDeumItemSheet extends ItemSheet { return buttons } - /* -------------------------------------------- */ - /** @override */ - setPosition(options = {}) { - const position = super.setPosition(options); - const sheetBody = this.element.find(".sheet-body"); - const bodyHeight = position.height - 192; - sheetBody.css("height", bodyHeight); - if (this.item.type.includes('weapon')) { - position.width = 640; - } - return position; - } - /* -------------------------------------------- */ async getData() { diff --git a/modules/tedeum-main.js b/modules/tedeum-main.js index c96b688..eb376af 100644 --- a/modules/tedeum-main.js +++ b/modules/tedeum-main.js @@ -9,19 +9,26 @@ /* -------------------------------------------- */ // Import Modules import { TeDeumActor } from "./actors/tedeum-actor.js"; -import { TeDeumItemSheet } from "./items/tedeum-item-sheet.js"; import { TeDeumActorPJSheet } from "./actors/tedeum-actor-sheet.js"; -import { TeDeumPJSchema } from "./common/tedeum-schema-pj.js"; -import { TeDeumArmeSchema } from "./common/tedeum-schema-arme.js"; -import { TeDeumArmureSchema } from "./common/tedeum-schema-armure.js"; -import { TeDeumCompetenceSchema } from "./common/tedeum-schema-competence.js"; -import { TeDeumEquipementSchema } from "./common/tedeum-schema-equipement.js"; -import { TeDeumUtility } from "./common/tedeum-utility.js"; -import { TeDeumCombat } from "./app/tedeum-combat.js"; -import { TeDeumItem } from "./items/tedeum-item.js"; -import { TeDeumHotbar } from "./app/tedeum-hotbar.js" -import { TEDEUM_CONFIG } from "./common/tedeum-config.js" +import { TeDeumPJSchema } from "./data/tedeum-schema-pj.js"; +import { TeDeumArmeSchema } from "./data/tedeum-schema-arme.js"; +import { TeDeumArmureSchema } from "./data/tedeum-schema-armure.js"; +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 { TeDeumDeboucheSchema } from "./data/tedeum-schema-debouche.js"; + +import { TeDeumItem } from "./items/tedeum-item.js"; +import { TeDeumItemSheet } from "./items/tedeum-item-sheet.js"; + +import { TeDeumHotbar } from "./app/tedeum-hotbar.js" +import { TeDeumCombat } from "./app/tedeum-combat.js"; + +import { TeDeumUtility } from "./common/tedeum-utility.js"; +import { TEDEUM_CONFIG, LOCALISATION, ARME_SPECIFICITE} from "./common/tedeum-config.js"; +import { ClassCounter} from "https://www.uberwald.me/fvtt_appcount/count-class-ready.js"; /* -------------------------------------------- */ /* Foundry VTT Initialization */ /* -------------------------------------------- */ @@ -33,26 +40,26 @@ Hooks.once("init", async function () { game.system.tedeum = { config: TEDEUM_CONFIG, + LOCALISATION: LOCALISATION, + ARME_SPECIFICITE: ARME_SPECIFICITE, TeDeumHotbar } + console.log(`Initializing TeDeum RPG 2`); - /* -------------------------------------------- */ // preload handlebars templates TeDeumUtility.preloadHandlebarsTemplates(); - /* -------------------------------------------- */ // Set an initiative formula for the system CONFIG.Combat.initiative = { formula: "1d6", decimals: 1 }; - /* -------------------------------------------- */ - game.socket.on("system.fvtt-tedeum", data => { + game.socket.on("system.fvtt-te-deum", data => { TeDeumUtility.onSocketMesssage(data) }); - CONFIG.Combat.documentClass = TeDeumCombat + //CONFIG.Combat.documentClass = TeDeumCombat CONFIG.Actor.documentClass = TeDeumActor; CONFIG.Item.documentClass = TeDeumItem CONFIG.Actor.dataModels = { @@ -64,16 +71,21 @@ Hooks.once("init", async function () { competence: TeDeumCompetenceSchema, equipement: TeDeumEquipementSchema, armure: TeDeumArmureSchema, + origine: TeDeumOrigineSchema, + education: TeDeumEducationSchema, + debouche: TeDeumDeboucheSchema, }; + + console.log("TeDeum RPG | Ready"); Actors.unregisterSheet("core", ActorSheet); - Actors.registerSheet(SYSTEM_ID, TeDeumActorPJSheet, { types: ["pj"], makeDefault: true }); - Actors.registerSheet(SYSTEM_ID, TeDeumActorPJSheet, { types: ["pnj"], makeDefault: true }); + Actors.registerSheet("fvtt-te-deum", TeDeumActorPJSheet, { types: ["pj"], makeDefault: true }); + Actors.registerSheet("fvtt-te-deum", TeDeumActorPJSheet, { types: ["pnj"], makeDefault: true }); Items.unregisterSheet("core", ItemSheet); - Items.registerSheet(SYSTEM_ID, TeDeumItemSheet, { makeDefault: true }); + Items.registerSheet("fvtt-te-deum", TeDeumItemSheet, { types: ["arme"], makeDefault: true }); - TeDeumUtility.init() + TeDeumUtility.init() }); /* -------------------------------------------- */ @@ -83,33 +95,7 @@ function welcomeMessage() { user: game.user.id, whisper: [game.user.id], content: `