From 4e6abebd702efab353f76645804c43f27b21fd9b Mon Sep 17 00:00:00 2001 From: LeRatierBretonnien Date: Tue, 10 Dec 2024 17:43:51 +0100 Subject: [PATCH] Upgrade armors --- lang/en.json | 43 +++++++++++++++++++++++++++++++++++++ module/config/character.mjs | 19 ++++++++++++++-- module/config/system.mjs | 1 + module/models/armor.mjs | 4 +++- module/models/character.mjs | 34 ++++++++++++++++++++++++++++- module/models/shield.mjs | 1 + module/models/weapon.mjs | 3 ++- system.json | 2 +- templates/armor.hbs | 3 +++ templates/shield.hbs | 2 ++ templates/weapon.hbs | 2 ++ 11 files changed, 108 insertions(+), 6 deletions(-) diff --git a/lang/en.json b/lang/en.json index 895df96..3de42d3 100644 --- a/lang/en.json +++ b/lang/en.json @@ -83,6 +83,37 @@ }, "app": { "label": "Appearance" + } + }, + "saves": { + "will": { + "label": "Will" + }, + "dodge": { + "label": "Dodge" + }, + "toughness": { + "label": "Toughness" + }, + "contagion": { + "label": "Contagion" + }, + "poison": { + "label": "Poison" + }, + "pain": { + "label": "Pain" + } + }, + "challenges": { + "str": { + "label": "Strength" + }, + "agility": { + "label": "Agility" + }, + "dying": { + "label": "Dying" } } }, @@ -176,6 +207,9 @@ "mace": "Mace" }, "FIELDS": { + "equipped": { + "label": "Equipped" + }, "weaponType": { "label": "Type" }, @@ -259,6 +293,12 @@ "heavy": "Heavy" }, "FIELDS": { + "equipped": { + "label": "Equipped?" + }, + "isHelmet": { + "label": "Is Helmet?" + }, "armorType": { "label": "Category" }, @@ -287,6 +327,9 @@ }, "Shield": { "FIELDS": { + "equipped": { + "label": "Equipped" + }, "defense": { "label": "Defense" }, diff --git a/module/config/character.mjs b/module/config/character.mjs index dfb3b4b..708c98c 100644 --- a/module/config/character.mjs +++ b/module/config/character.mjs @@ -33,7 +33,7 @@ export const CHARACTERISTICS = Object.freeze({ }, }) -export const SAVES = Object.freeze({ +export const CHALLENGES = Object.freeze({ str: { id: "str", label: "LETHALFANTASY.Character.str.label" @@ -45,7 +45,10 @@ export const SAVES = Object.freeze({ dying: { id: "dying", label: "LETHALFANTASY.Character.dying.label" - }, + } +}) + +export const SAVES = Object.freeze({ will: { id: "will", label: "LETHALFANTASY.Character.will.label" @@ -57,5 +60,17 @@ export const SAVES = Object.freeze({ toughness: { id: "toughness", label: "LETHALFANTASY.Character.toughness.label" + }, + contagion: { + id: "contagion", + label: "LETHALFANTASY.Character.contagion.label" + }, + poison: { + id: "poison", + label: "LETHALFANTASY.Character.poison.label" + }, + pain: { + id: "pain", + label: "LETHALFANTASY.Character.pain.label" } }) diff --git a/module/config/system.mjs b/module/config/system.mjs index 573dac8..6b38f2e 100644 --- a/module/config/system.mjs +++ b/module/config/system.mjs @@ -71,6 +71,7 @@ export const SYSTEM = { CHARACTERISTICS_TABLES: CHARACTERISTICS.TABLES, CHARACTERISTICS_MAJOR: CHARACTERISTICS.MAJOR, SAVES: CHARACTER.SAVES, + CHALLENGES: CHARACTER.CHALLENGES, SKILL_CATEGORY: SKILL.CATEGORY, ARMOR_TYPE: ARMOR.TYPE, EQUIPMENT_CATEGORY: EQUIPMENT.CATEGORY, diff --git a/module/models/armor.mjs b/module/models/armor.mjs index 3d1839d..f69b74b 100644 --- a/module/models/armor.mjs +++ b/module/models/armor.mjs @@ -8,11 +8,13 @@ export default class LethalFantasyArmor extends foundry.abstract.TypeDataModel { schema.description = new fields.HTMLField({ required: true, textSearch: true }) schema.armorType = new fields.StringField({ required: true, initial: "light", choices: SYSTEM.ARMOR_TYPE }) schema.defense = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: -50 }) - schema.maximumMovement = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) + schema.maximumMovement = new fields.StringField({ ...requiredInteger, required: true, initial: "" }) schema.hp = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + schema.isHelmet = new fields.BooleanField({ required: true, initial: false }) schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) diff --git a/module/models/character.mjs b/module/models/character.mjs index dfc9b71..c6bdb80 100644 --- a/module/models/character.mjs +++ b/module/models/character.mjs @@ -29,7 +29,7 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod }, {}), ) - // Carac + // Save const saveField = (label) => { const schema = { value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) @@ -42,6 +42,21 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod return obj }, {}), ) + + // Challenges + const challengeField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.challenges = new fields.SchemaField( + Object.values(SYSTEM.CHALLENGES).reduce((obj, save) => { + obj[save.id] = challengeField(save.label) + return obj + }, {}), + ) + schema.hp = new fields.SchemaField({ value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), @@ -80,8 +95,25 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod schema.developmentPoints = new fields.SchemaField({ total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), remaining: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + }) + schema.spellMiraclePoints = new fields.SchemaField({ + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + used: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) }) + const moneyField = (label) => { + const schema = { + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + } + return new fields.SchemaField(schema, { label }) + } + schema.moneys = new fields.SchemaField( + Object.values(SYSTEM.MONEY).reduce((obj, save) => { + obj[save.id] = moneyField(save.label) + return obj + }, {}), + ) + return schema } diff --git a/module/models/shield.mjs b/module/models/shield.mjs index e0a0cee..8ed321e 100644 --- a/module/models/shield.mjs +++ b/module/models/shield.mjs @@ -31,6 +31,7 @@ export default class LethalFantasyShield extends foundry.abstract.TypeDataModel schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 }) schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) return schema } diff --git a/module/models/weapon.mjs b/module/models/weapon.mjs index 6c4be1b..0d62c31 100644 --- a/module/models/weapon.mjs +++ b/module/models/weapon.mjs @@ -43,7 +43,8 @@ export default class LethalFantasySkill extends foundry.abstract.TypeDataModel { schema.encLoad = new fields.NumberField({ required: true, initial: 0, min: 0 }) schema.cost = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) schema.money = new fields.StringField({ required: true, initial: "tinbit", choices: SYSTEM.MONEY }) - + schema.equipped = new fields.BooleanField({ required: true, initial: false }) + return schema } diff --git a/system.json b/system.json index 2e55e9b..b55ae92 100644 --- a/system.json +++ b/system.json @@ -6,7 +6,7 @@ "download": "#{DOWNLOAD}#", "url": "#{URL}#", "license": "LICENSE", - "version": "12.0.2", + "version": "12.0.3", "authors": [ { "name": "Uberwald", diff --git a/templates/armor.hbs b/templates/armor.hbs index a4f5be5..ae4daf9 100644 --- a/templates/armor.hbs +++ b/templates/armor.hbs @@ -11,6 +11,9 @@ {{formField systemFields.damageReduction value=system.damageReduction}} {{formField systemFields.encLoad value=system.encLoad}} + {{formField systemFields.isHelmet value=system.isHelmet}} + {{formField systemFields.equipped value=system.equipped}} + {{formField systemFields.cost value=system.cost}} {{formField systemFields.money value=system.money localize=true}} diff --git a/templates/shield.hbs b/templates/shield.hbs index eb9f066..728c12b 100644 --- a/templates/shield.hbs +++ b/templates/shield.hbs @@ -36,6 +36,8 @@ {{formField systemFields.autodestruction.fields.slashing value=system.autodestruction.slashing}} {{formField systemFields.autodestruction.fields.piercing value=system.autodestruction.piercing}} + + {{formField systemFields.equipped value=system.equipped}} {{formField systemFields.encLoad value=system.encLoad}} diff --git a/templates/weapon.hbs b/templates/weapon.hbs index 00347be..ee3738d 100644 --- a/templates/weapon.hbs +++ b/templates/weapon.hbs @@ -55,6 +55,8 @@ {{/if}} + {{formField systemFields.equipped value=system.equipped}} + {{formField systemFields.encLoad value=system.encLoad}} {{formField systemFields.cost value=system.cost}}