diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..5ca80fa --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +packs/** filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore index 6f508c9..b829a13 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,6 @@ styles/*.css # Node Modules node_modules/ +.github/ +.history/ diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1d7e080 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "cSpell.words": [ + "CTHULHUETERNAL" + ] +} \ No newline at end of file diff --git a/css/fvtt-cthulhu-eternal.css b/css/fvtt-cthulhu-eternal.css index 480ba49..199c097 100644 --- a/css/fvtt-cthulhu-eternal.css +++ b/css/fvtt-cthulhu-eternal.css @@ -677,6 +677,12 @@ i.fvtt-cthulhu-eternal { grid-template-columns: repeat(3, 1fr); gap: 4px; } +.fvtt-cthulhu-eternal .empty-state { + color: var(--color-text-light-6); + font-style: italic; + padding: 0.5rem 0.25rem; + grid-column: 1 / -1; +} .fvtt-cthulhu-eternal .tab.protagonist-skills .main-div .skills .skill { display: flex; align-items: center; @@ -918,6 +924,20 @@ i.fvtt-cthulhu-eternal { min-width: 1.8rem; max-width: 1.8rem; } +.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .armors .armor .equipped-toggle { + font-size: 1rem; + min-width: 1.4rem; + max-width: 1.4rem; + cursor: pointer; + color: #888; + text-align: center; +} +.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .armors .armor .equipped-toggle.active { + color: #4caf50; +} +.fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .armors .armor .equipped-toggle:hover { + color: #2196f3; +} .fvtt-cthulhu-eternal .tab.protagonist-equipment .main-div .armors .armor .protection { min-width: 5rem; max-width: 5rem; diff --git a/lang/en.json b/lang/en.json index 5c6dcd0..0f84a18 100644 --- a/lang/en.json +++ b/lang/en.json @@ -734,6 +734,8 @@ "newMentalDisorder": "New Mental Disorder", "newWeapon": "New Weapon", "newArmor": "New Armor", + "equipped": "Equipped (click to unequip)", + "unequipped": "Not equipped (click to equip)", "newInjury": "New Injury", "newGear": "New Gear", "newArcane": "New Arcane", @@ -751,6 +753,12 @@ "unconscious": "Unconscious", "dying": "Dying", "unconsciousWarning": "The Protagonist is unconscious. He cannot act until he has at least 3 HP.", + "stunnedWarning": "The Protagonist is stunned. He cannot act until he succeeds at a CON × 5 test.", + "deadWarning": "The Protagonist is dying. He will die if not treated within {con} minutes.", + "noSkills": "No skills. Add skills to this character.", + "noWeapons": "No weapons. Add weapons in edit mode.", + "noArmors": "No armor. Add armor in edit mode.", + "noGears": "No gear. Add gear in edit mode.", "luck": "Luck", "Other": "Other", "Skills": "Skills", diff --git a/lang/fr.json b/lang/fr.json index b3e3f6e..2e7941b 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -726,6 +726,8 @@ "newMentalDisorder": "Nouveau Trouble mental", "newWeapon": "Nouvelle Arme", "newArmor": "Nouvelle Armure", + "equipped": "Équipée (cliquer pour déséquiper)", + "unequipped": "Non équipée (cliquer pour équiper)", "newInjury": "Nouvelle Blessure", "newGear": "Nouvel Equipement", "newArcane": "Nouvel Arcane", @@ -745,6 +747,10 @@ "stunnedWarning": "Votre protagoniste est étourdi. Il ne peut pas agir tant qu'il n'a pas réussi un test de CON x 5.", "deadWarning": "Votre protagoniste est mourrant. Il mourra s'il n'est pas soigné dans les {con} minutes", "unconsciousWarning": "Votre protagoniste est inconscient. Il ne peut pas agir tant qu'il n'a pas atteint 3 PV.", + "noSkills": "Aucune compétence. Ajoutez des compétences à ce personnage.", + "noWeapons": "Aucune arme. Ajoutez des armes en mode édition.", + "noArmors": "Aucune armure. Ajoutez une armure en mode édition.", + "noGears": "Aucun équipement. Ajoutez de l'équipement en mode édition.", "luck": "Chance", "Other": "Autre", "Skills": "Compétences", diff --git a/module/applications/hud/action-handler.js b/module/applications/hud/action-handler.js index 1a21be3..68b5d0e 100644 --- a/module/applications/hud/action-handler.js +++ b/module/applications/hud/action-handler.js @@ -1,6 +1,4 @@ // System Module Imports -import { Utils } from './utils.js' -import { SYSTEM } from "../../config/system.mjs" import CthulhuEternalUtils from '../../utils.mjs' export let ActionHandler = null @@ -17,8 +15,7 @@ Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => { * @param {array} groupIds */ async buildSystemActions(groupIds) { - // Set actor and token variables - this.actors = (!this.actor) ? this._getActors() : [this.actor] + // this.actor and this.actors are provided by the base class (TAH Core v2+) this.actorType = this.actor?.type // Set items variable @@ -28,9 +25,11 @@ Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => { this.items = items } - if (this.actorType !== 'vehicle') { - this.#buildCharacterActions() - } else if (!this.actor) { + if (this.actor) { + if (this.actorType !== 'vehicle') { + this.#buildCharacterActions() + } + } else { this.#buildMultipleTokenActions() } } @@ -201,7 +200,7 @@ Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => { // Build alpha sorted skill list let skills = this.actor.items.filter(i => i.type === 'skill') skills = skills.sort((a, b) => a.name.localeCompare(b.name)) - console.log('Building skills actions for skills:', skills) + for (const skill of skills) { //console.log('Processing skill item:', skill) if (skill.system.skillTotal > 0) { @@ -224,8 +223,8 @@ Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => { async buildEquipment() { let era = game.settings.get("fvtt-cthulhu-eternal", "settings-era") - // const rituals = [] - for (const item of this.actor.items) { + const weapons = this.actor.items.filter(i => i.type === 'weapon') + for (const item of weapons) { // Push the weapon name as a new group const groupData = { id: `weapons_${item._id}`, @@ -233,16 +232,14 @@ Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => { type: 'system' } this.addGroup(groupData, { id: 'weapons', type: 'system' }, true) - if (item.type === 'weapon') { let skill = CthulhuEternalUtils.getWeaponSkill(this.actor, item, era) item.skillTotal = skill ? skill.system.skillTotal : 0 - let weapons = [] + let weaponActions = [] const tooltip = { content: String(item.skillTotal), direction: 'LEFT' } - console.log('Weapon skill total for', item.name, 'is', item.skillTotal, item._id) - weapons.push({ + weaponActions.push({ name: `${item.name} (${item.skillTotal})`, id: `weapon_${item._id}`, info1: this.#showValue() ? { text: tooltip.content } : null, @@ -260,7 +257,7 @@ Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => { direction: 'LEFT' } if (item.system.damage !== '') { - weapons.push({ + weaponActions.push({ name: `${coreModule.api.Utils.i18n('CTHULHUETERNAL.Label.Damage')} (${damage})`, id: `damage_${item._id}`, info1: this.#showValue() ? { text: damageTooltip.content } : null, @@ -268,23 +265,10 @@ Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => { tooltip: damageTooltip }) } - console.log('Adding weapon actions for', item.name, weapons) - await this.addActions(weapons, { + await this.addActions(weaponActions, { id: `weapons_${item._id}`, type: 'system' }) - }/* else if (item.type === 'ritual') { - rituals.push({ - name: item.name, - id: item._id, - encodedValue: ['rituals', item.name].join(this.delimiter) - }) - } */ - - /* await this.addActions(rituals, { - id: 'rituals', - type: 'system' - }) */ } } diff --git a/module/applications/hud/constants.js b/module/applications/hud/constants.js index 7ef87b4..a964049 100644 --- a/module/applications/hud/constants.js +++ b/module/applications/hud/constants.js @@ -15,7 +15,7 @@ export const CORE_MODULE = { /** * Core module version required by the system module */ -export const REQUIRED_CORE_MODULE_VERSION = '2.0' +export const REQUIRED_CORE_MODULE_VERSION = '2' /** * Action types diff --git a/module/applications/hud/roll-handler.js b/module/applications/hud/roll-handler.js index aeb4725..79ecae9 100644 --- a/module/applications/hud/roll-handler.js +++ b/module/applications/hud/roll-handler.js @@ -1,6 +1,3 @@ - -import { SYSTEM } from "../../config/system.mjs" - export let RollHandler = null Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => { @@ -66,7 +63,6 @@ Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => { * @param {string} actionId The actionId */ async #handleAction(event, actor, token, actionTypeId, actionId) { - console.log('Handling action', actionId, 'of type', actionTypeId, 'for actor', actor.name) switch (actionTypeId) { case 'characteristics': await this.#handleCharacteristicsAction(event, actor, actionId) @@ -100,19 +96,17 @@ Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => { * @param {string} actionId The action id */ async #handleCharacteristicsAction(event, actor, actionId) { - let rollType if (actionId === 'wp' || actionId === 'hp') return if (actionId.includes('_add') || actionId.includes('_subtract')) { const attr = actionId.split('_')[0] const action = actionId.split('_')[1] - console.log('Updating', attr, 'with action', action) const update = {} update.system = {} update.system[attr] = {} - update.system[attr].value = action === 'add' ? this.actor.system[attr].value + 1 : this.actor.system[attr].value - 1 - if (update.system[attr].value > this.actor.system[attr].max || update.system[attr].value < this.actor.system[attr].min) return - return await this.actor.update(update) + update.system[attr].value = action === 'add' ? actor.system[attr].value + 1 : actor.system[attr].value - 1 + if (update.system[attr].value > actor.system[attr].max || update.system[attr].value < actor.system[attr].min) return + return await actor.update(update) } if (actionId === 'san') { let item = foundry.utils.duplicate(actor.system.san) @@ -155,7 +149,8 @@ Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => { * @param {string} actionId The action id */ async #handleWeaponsAction(event, actor, actionId) { - let weapon = actor.items.find(i => i.type === 'weapon' && i.id === actionId) + const weapon = actor.items.find(i => i.type === 'weapon' && i.id === actionId) + if (!weapon) return ui.notifications.warn(`Weapon not found for action id '${actionId}'`) weapon.damageFormula = weapon.system.damage weapon.damageBonus = actor.system.damageBonus await actor.system.roll('weapon', weapon) @@ -169,7 +164,8 @@ Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => { * @param {string} actionId The action id */ async #handleDamageAction(event, actor, actionId) { - let weapon = actor.items.find(i => i.type === 'weapon' && i.id === actionId) + const weapon = actor.items.find(i => i.type === 'weapon' && i.id === actionId) + if (!weapon) return ui.notifications.warn(`Weapon not found for action id '${actionId}'`) weapon.damageFormula = weapon.system.damage weapon.damageBonus = actor.system.damageBonus await actor.system.roll('damage', weapon) @@ -183,13 +179,13 @@ Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => { * @param {string} actionId The action id */ async #handleLethalityAction(event, actor, actionId) { - const item = await this.actor.items.get(actionId) + const item = actor.items.get(actionId) if (item.system.damage !== '' && event.ctrlKey) { const isLethal = !item.system.isLethal await item.update({ 'system.isLethal': isLethal }) } else { const options = { - actor: this.actor, + actor, rollType: 'lethality', key: item.system.lethality, item diff --git a/module/applications/hud/system-manager.js b/module/applications/hud/system-manager.js index 17dd900..6ac6ef5 100644 --- a/module/applications/hud/system-manager.js +++ b/module/applications/hud/system-manager.js @@ -1,7 +1,6 @@ // System Module Imports import { ActionHandler } from './action-handler.js' import { RollHandler as Core } from './roll-handler.js' -import { MODULE } from './constants.js' import { DEFAULTS } from './defaults.js' import * as systemSettings from './settings.js' @@ -79,14 +78,8 @@ Hooks.once('tokenActionHudCoreApiReady', async (coreModule) => { * @returns {object} The TAH system styles */ registerStyles() { - return { - template: { - class: 'tah-style-template-style', // The class to add to first DIV element - file: 'tah-template-style', // The file without the css extension - moduleId: MODULE.ID, // The module ID - name: 'Template Style' // The name to display in the Token Action HUD Core 'Style' module setting - } - } + // No system-specific styles; use the core styles only + return {} } } }) diff --git a/module/applications/sheets/base-actor-sheet.mjs b/module/applications/sheets/base-actor-sheet.mjs index de40040..c6ba255 100644 --- a/module/applications/sheets/base-actor-sheet.mjs +++ b/module/applications/sheets/base-actor-sheet.mjs @@ -140,7 +140,6 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin _onDragOver(event) {} async _onDropItem(item) { - console.log("Dropped item", item) let itemData = item.toObject() await this.document.createEmbeddedDocuments("Item", [itemData], { renderSheet: false }) } @@ -160,15 +159,12 @@ export default class CthulhuEternalActorSheet extends HandlebarsApplicationMixin } static #onUpdateCheckboxArray(event, target) { - console.log("Update checkbox array", event, target) let arrayName = target.dataset.name let arrayIdx = Number(target.dataset.index) let dataPath = `system.san.${arrayName}` let tab = foundry.utils.duplicate(this.document.system.san[arrayName]) tab[arrayIdx] = target.checked this.actor.update( { [dataPath]: tab } ) - // Dump - console.log("Array name", arrayName, arrayIdx, target.checked, dataPath) } /** diff --git a/module/applications/sheets/protagonist-sheet.mjs b/module/applications/sheets/protagonist-sheet.mjs index a3b4363..eb548cc 100644 --- a/module/applications/sheets/protagonist-sheet.mjs +++ b/module/applications/sheets/protagonist-sheet.mjs @@ -13,6 +13,7 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS }, actions: { setBP: CthulhuEternalProtagonistSheet.#onSetBP, + toggleEquipped: CthulhuEternalProtagonistSheet.#onToggleEquipped, createGear: CthulhuEternalProtagonistSheet.#onCreateGear, createArmor: CthulhuEternalProtagonistSheet.#onCreateArmor, createWeapon: CthulhuEternalProtagonistSheet.#onCreateWeapon, @@ -155,6 +156,12 @@ export default class CthulhuEternalProtagonistSheet extends CthulhuEternalActorS this.document.system.setBP() } + static #onToggleEquipped(event, target) { + const itemId = target.dataset.itemId + const item = this.document.items.get(itemId) + if (item) item.update({ "system.equipped": !item.system.equipped }) + } + static #onCreateGear(event, target) { this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("CTHULHUETERNAL.Label.newGear"), type: "gear" }]) } diff --git a/module/applications/sheets/skill-sheet.mjs b/module/applications/sheets/skill-sheet.mjs index 56ed88a..6a4df6c 100644 --- a/module/applications/sheets/skill-sheet.mjs +++ b/module/applications/sheets/skill-sheet.mjs @@ -32,7 +32,6 @@ export default class CthulhuEternalSkillSheet extends CthulhuEternalItemSheet { } static async #onRollProgress(event, target) { - console.log("Rolling progress for skill", this, event, target) if (this.actor) { const roll = await new Roll("1d4").evaluate() if (roll) { diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index 44914e1..a71a567 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -42,6 +42,12 @@ export default class CthulhuEternalActor extends Actor { type: CONST.CHAT_MESSAGE_STYLES.OTHER }) } + if (this.type === "protagonist" && changed?.system?.hp !== undefined) { + const hp = this.system.hp + this.toggleStatusEffect("dead", { active: !!hp.dead }) + this.toggleStatusEffect("unconscious", { active: !!hp.unconscious && !hp.dead }) + this.toggleStatusEffect("stun", { active: !!hp.stunned && !hp.dead && !hp.unconscious }) + } return super._onUpdate(changed, options, userId) } @@ -69,7 +75,6 @@ export default class CthulhuEternalActor extends Actor { if (this.system.hp.value !== hp) { this.update({ "system.hp.value": hp }) } - console.log("Applying wounds", { woundData, totalArmor, effectiveWounds }) // Chat message for GM only if (game.user.isGM) { let armorText = totalArmor > 0 ? game.i18n.format("CTHULHUETERNAL.Chat.armorAbsorbed", { armor: totalArmor }) : game.i18n.localize("CTHULHUETERNAL.Chat.noArmor") diff --git a/module/documents/roll.mjs b/module/documents/roll.mjs index e4fce04..34ab54c 100644 --- a/module/documents/roll.mjs +++ b/module/documents/roll.mjs @@ -290,12 +290,10 @@ export default class CthulhuEternalRoll extends Roll { let era = game.settings.get("fvtt-cthulhu-eternal", "settings-era") if (era !== options.rollItem.system.settings) { ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.WrongEra")) - console.log("WP Wrong Era", era, options.rollItem.system.weaponType) return } if (!SYSTEM.WEAPON_SKILL_MAPPING[era]?.[options.rollItem.system.weaponType]) { ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.NoWeaponType")) - console.log("WP Not found", era, options.rollItem.system.weaponType) return } /*if (!target) { @@ -442,8 +440,6 @@ export default class CthulhuEternalRoll extends Roll { rollData.rollMode = rollContext.visibility // Update target score - console.log("Rolldata", rollData) - if (options.rollType === "resource") { rollData.targetScore = options.initialScore * Number(rollContext.multiplier) } else { diff --git a/module/models/armor.mjs b/module/models/armor.mjs index f310c63..d47d28c 100644 --- a/module/models/armor.mjs +++ b/module/models/armor.mjs @@ -12,6 +12,7 @@ export default class CthulhuEternalArmor extends foundry.abstract.TypeDataModel schema.protection = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }) schema.resourceLevel = new fields.NumberField({ required: true, initial: 0, min: 0 }) + schema.equipped = new fields.BooleanField({ required: true, initial: false }) return schema } diff --git a/module/models/protagonist.mjs b/module/models/protagonist.mjs index 3a2ef0a..df76af8 100644 --- a/module/models/protagonist.mjs +++ b/module/models/protagonist.mjs @@ -277,7 +277,6 @@ export default class CthulhuEternalProtagonist extends foundry.abstract.TypeData template = "systems/fvtt-cthulhu-eternal/templates/chat-san-loss-none.hbs" } - console.log("CthulhuEternalProtagonist.applySANConsequences", rollData, updates, template) let content = await foundry.applications.handlebars.renderTemplate(template, msgData) let msg = await ChatMessage.create({ content: content, diff --git a/module/models/weapon.mjs b/module/models/weapon.mjs index ab55b36..befa4d8 100644 --- a/module/models/weapon.mjs +++ b/module/models/weapon.mjs @@ -54,7 +54,6 @@ export default class CthulhuEternalWeapon extends foundry.abstract.TypeDataModel } isRanged() { - console.log("isRanged", this.weaponType, this) return this.weaponType.match("ranged") } diff --git a/module/utils.mjs b/module/utils.mjs index ece313f..b84a8b4 100644 --- a/module/utils.mjs +++ b/module/utils.mjs @@ -118,9 +118,6 @@ export default class CthulhuEternalUtils { return Object.keys(obj).length; }) - Handlebars.registerHelper('isEnabled', function (configKey) { - return game.settings.get("bol", configKey); - }) Handlebars.registerHelper('split', function (str, separator, keep) { return str.split(separator)[keep]; }) @@ -164,7 +161,6 @@ export default class CthulhuEternalUtils { return eval(expr); }) Handlebars.registerHelper('isOwnerOrGM', function (actor) { - console.log("Testing actor", actor.isOwner, game.userId) return actor.isOwner || game.isGM; }) Handlebars.registerHelper('upperFirst', function (text) { @@ -382,8 +378,6 @@ export default class CthulhuEternalUtils { loser = { actor: actor1, rollData: roll1.rollData, messageId: roll1.messageId } } - console.log("Opposed roll result", winner, loser) - // Check if winner was attacking with a weapon that can apply damage let canApplyDamage = winner && winner.rollData?.weapon && winner.rollData.weapon.system @@ -476,7 +470,6 @@ export default class CthulhuEternalUtils { return } - console.log("Damage roll data", rollData) rollData.weapon.resultType = rollData.resultType // Keep the result type from the roll message rollData.weapon.selectiveFireChoice = rollData.selectiveFireChoice // Keep the selected fire choice from the roll message rollData.weapon.damageFormula = formula || rollData.weapon.system.damage @@ -555,7 +548,6 @@ export default class CthulhuEternalUtils { // Build options table for the select operator between minValue and maxValue dialogContext.nudgeOptions = Array.from({ length: dialogContext.maxValue - dialogContext.minValue + 1 }, (_, i) => dialogContext.minValue + i) - console.log(dialogContext) const content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-cthulhu-eternal/templates/nudge-dialog.hbs", dialogContext) @@ -650,7 +642,6 @@ export default class CthulhuEternalUtils { ui.notifications.error(game.i18n.localize("CTHULHUETERNAL.Notifications.noActorFound")) return } - console.log("Applying wounds", woundData) // Remove the chat message this.removeChatMessageId(message.id) diff --git a/packs-system/rituals/000283.log b/packs-system/rituals/000291.log similarity index 100% rename from packs-system/rituals/000283.log rename to packs-system/rituals/000291.log diff --git a/packs-system/rituals/MANIFEST-000281 b/packs-system/rituals/MANIFEST-000281 deleted file mode 100644 index 67085a5..0000000 Binary files a/packs-system/rituals/MANIFEST-000281 and /dev/null differ diff --git a/packs-system/skills/000452.log b/packs-system/skills/000460.log similarity index 100% rename from packs-system/skills/000452.log rename to packs-system/skills/000460.log diff --git a/packs-system/skills/MANIFEST-000450 b/packs-system/skills/MANIFEST-000450 deleted file mode 100644 index 24dfdfd..0000000 Binary files a/packs-system/skills/MANIFEST-000450 and /dev/null differ diff --git a/packs-system/weapons/000098.log b/packs-system/weapons/000106.log similarity index 100% rename from packs-system/weapons/000098.log rename to packs-system/weapons/000106.log diff --git a/packs-system/weapons/MANIFEST-000096 b/packs-system/weapons/MANIFEST-000096 deleted file mode 100644 index 87bf891..0000000 Binary files a/packs-system/weapons/MANIFEST-000096 and /dev/null differ diff --git a/templates/armor.hbs b/templates/armor.hbs index b467018..98c7313 100644 --- a/templates/armor.hbs +++ b/templates/armor.hbs @@ -8,6 +8,7 @@ {{formField systemFields.settings value=system.settings localize=true}} {{formField systemFields.protection value=system.protection}} {{formField systemFields.resourceLevel value=system.resourceLevel}} + {{formField systemFields.equipped value=system.equipped}} diff --git a/templates/motivation.hbs b/templates/motivation.hbs index 7a1f968..7c2790e 100644 --- a/templates/motivation.hbs +++ b/templates/motivation.hbs @@ -6,7 +6,7 @@
{{localize "CTHULHUETERNAL.Label.description"}} - {{formInput systemFields.description enriched=enrichedDescriptionw value=system.description name="system.description" toggled=true}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
\ No newline at end of file diff --git a/templates/protagonist-equipment.hbs b/templates/protagonist-equipment.hbs index fb87e7b..c1df249 100644 --- a/templates/protagonist-equipment.hbs +++ b/templates/protagonist-equipment.hbs @@ -9,7 +9,7 @@ {{#each weapons as |item|}} {{!log 'weapon' this}}
- +
@@ -81,6 +81,8 @@ data-item-uuid="{{item.uuid}}">
+ {{else}} +
{{localize "CTHULHUETERNAL.Label.noWeapons"}}
{{/each}} @@ -99,6 +101,13 @@ {{item.name}} {{localize "CTHULHUETERNAL.Label.armor"}} : {{item.system.protection}} + + +
@@ -106,6 +115,8 @@ data-item-uuid="{{item.uuid}}">
+ {{else}} +
{{localize "CTHULHUETERNAL.Label.noArmors"}}
{{/each}} @@ -130,6 +141,8 @@ data-item-uuid="{{item.uuid}}"> + {{else}} +
{{localize "CTHULHUETERNAL.Label.noGears"}}
{{/each}} diff --git a/templates/protagonist-skills.hbs b/templates/protagonist-skills.hbs index 2e1a1cc..3bcf6a4 100644 --- a/templates/protagonist-skills.hbs +++ b/templates/protagonist-skills.hbs @@ -17,6 +17,8 @@ + {{else}} +
{{localize "CTHULHUETERNAL.Label.noSkills"}}
{{/each}}