From 59c2dab5a115a84d8bbf4b0cccba6adf3d58ea32 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Wed, 25 Sep 2024 02:26:25 +0100 Subject: [PATCH 001/182] New translations en.yaml (Portuguese, Brazilian) --- i18n/pt_BR.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/pt_BR.yaml b/i18n/pt_BR.yaml index fc394d93..e4353bdd 100644 --- a/i18n/pt_BR.yaml +++ b/i18n/pt_BR.yaml @@ -657,7 +657,7 @@ SHADOWDARK.sheet.class.player: Ficha de Jogador Shadowdark SHADOWDARK.sheet.general.item_create.tooltip: Criar Item {type} SHADOWDARK.sheet.general.item_delete.title: Deletar Item SHADOWDARK.sheet.general.item_edit.title: Editar Item -SHADOWDARK.sheet.general.roll_hp: Rolar HP +SHADOWDARK.sheet.general.roll_hp: Rolar PV SHADOWDARK.sheet.item.tab.description: Descrição SHADOWDARK.sheet.item.tab.details: Detalhes SHADOWDARK.sheet.item.tab.effects: Efeitos From 6a642a6bd44ec130b6b62e9a4397cbe4886e17d0 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Fri, 4 Oct 2024 10:30:58 +0100 Subject: [PATCH 002/182] update comments --- scss/mixins/_grid.scss | 9 +++++++++ system/src/sheets/ItemSheetSD.mjs | 1 + system/src/utils/UtilitySD.mjs | 4 ++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/scss/mixins/_grid.scss b/scss/mixins/_grid.scss index 00bfe1c1..aed32e10 100644 --- a/scss/mixins/_grid.scss +++ b/scss/mixins/_grid.scss @@ -25,5 +25,14 @@ $columns: 6; } } +@mixin grid-colstart { + @for $i from 1 through $columns { + .grid-colstart-#{$i} { + grid-column-start: #{$i}; + } + } +} + @include grid-colspan; +@include grid-colstart; @include grid-x-columns; diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index b44ed513..4a804468 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -99,6 +99,7 @@ export default class ItemSheetSD extends ItemSheet { await shadowdark.compendiums.languages(), this.item.system.languages.fixed ?? [] ); + const [selectedLanguages, availableSelectLanguages] = await shadowdark.utils.getDedupedSelectedItems( await shadowdark.compendiums.languages(), diff --git a/system/src/utils/UtilitySD.mjs b/system/src/utils/UtilitySD.mjs index dc871a31..bacbe5a2 100644 --- a/system/src/utils/UtilitySD.mjs +++ b/system/src/utils/UtilitySD.mjs @@ -62,8 +62,8 @@ export default class UtilitySD { /** * Creates de-duplicated lists of Selected and Unselected Items. * - * @param {allItems} Array A list of all available skills - * @param {items} Array A list of currently selected skills + * @param {allItems} Array A list of all available items + * @param {items} Array A list of currently selected items * * @returns {Promise} Promise which represents an array containing both the * selected and unselected skill arrays From 2b703bd95c6c3b13ded4cee4e98ec60ee009a03a Mon Sep 17 00:00:00 2001 From: Prototype Date: Sun, 6 Oct 2024 17:24:27 -0700 Subject: [PATCH 003/182] Replaced module-art.mjs with built in art mapping function --- system/shadowdark.mjs | 6 +- system/src/documents/ActorSD.mjs | 27 ------ system/src/settings.mjs | 25 +----- system/src/utils/UtilitySD.mjs | 15 ++++ system/src/utils/module-art.mjs | 150 ------------------------------- 5 files changed, 17 insertions(+), 206 deletions(-) delete mode 100644 system/src/utils/module-art.mjs diff --git a/system/shadowdark.mjs b/system/shadowdark.mjs index 4b95e28c..1723f33d 100644 --- a/system/shadowdark.mjs +++ b/system/shadowdark.mjs @@ -14,8 +14,6 @@ import * as dice from "./src/dice/_module.mjs"; import * as documents from "./src/documents/_module.mjs"; import * as sheets from "./src/sheets/_module.mjs"; -import { ModuleArt } from "./src/utils/module-art.mjs"; - import { HooksSD, HooksImmediate, @@ -77,7 +75,7 @@ Hooks.once("init", () => { registerSystemSettings(); loadTemplates(); - game.shadowdark.moduleArt = new ModuleArt(); + UtilitySD.loadLegacyArtMappings(); // Register sheet application classes Actors.unregisterSheet("core", ActorSheet); @@ -141,8 +139,6 @@ Hooks.on("ready", async () => { Hooks.once("setup", () => { shadowdark.log("Setup Hook"); - game.shadowdark.moduleArt.registerModuleArt(); - // Localize all the strings in the game config in advance // for (const obj in game.shadowdark.config) { diff --git a/system/src/documents/ActorSD.mjs b/system/src/documents/ActorSD.mjs index 9efb4fc4..73e22d8d 100644 --- a/system/src/documents/ActorSD.mjs +++ b/system/src/documents/ActorSD.mjs @@ -30,33 +30,6 @@ export default class ActorSD extends Actor { } } - - /** @inheritdoc */ - _initializeSource(source, options={}) { - source = super._initializeSource(source, options); - - if (!source._id || !options.pack || game.shadowdark.moduleArt.suppressArt) { - return source; - } - - const uuid = `Compendium.${options.pack}.${source._id}`; - - const art = game.shadowdark.moduleArt.map.get(uuid); - - if (art?.actor || art?.token) { - if (art.actor) source.img = art.actor; - - if (typeof art.token === "string") { - source.prototypeToken.texture.src = art.token; - } - else if (art.token) { - foundry.utils.mergeObject(source.prototypeToken, art.token); - } - } - return source; - } - - async _learnSpell(item) { const characterClass = await this.getClass(); diff --git a/system/src/settings.mjs b/system/src/settings.mjs index 10052aca..0da7ad60 100644 --- a/system/src/settings.mjs +++ b/system/src/settings.mjs @@ -1,4 +1,3 @@ -import { ModuleArtConfig } from "./utils/module-art.mjs"; import SourceFilterSettings from "./apps/SourceFilterSettings.mjs"; /** @@ -7,31 +6,9 @@ import SourceFilterSettings from "./apps/SourceFilterSettings.mjs"; export default function registerSystemSettings() { // ----------------- - // DYNAMIC ARTWORK + // Content Sources // ----------------- // - game.settings.registerMenu("shadowdark", "moduleArtConfiguration", { - name: "SHADOWDARK.settings.module_art.name", - label: "SHADOWDARK.settings.module_art.label", - hint: "SHADOWDARK.settings.module_art.hint", - icon: "fa-solid fa-palette", - type: ModuleArtConfig, - restricted: true, - }); - - game.settings.register("shadowdark", "moduleArtConfiguration", { - name: "Module Art Configuration", - scope: "world", - config: false, - type: Object, - default: { - shadowdark: { - portraits: true, - tokens: true, - }, - }, - }); - game.settings.registerMenu("shadowdark", "sources", { name: "SHADOWDARK.settings.source_filter.name", hint: "SHADOWDARK.settings.source_filter.hint", diff --git a/system/src/utils/UtilitySD.mjs b/system/src/utils/UtilitySD.mjs index bacbe5a2..805f8c7f 100644 --- a/system/src/utils/UtilitySD.mjs +++ b/system/src/utils/UtilitySD.mjs @@ -307,4 +307,19 @@ export default class UtilitySD { const src = sounds[0]; game.audio.play(src, {volume: 1}); } + + static async loadLegacyArtMappings() { + // search modules for legacy art mappings and convert to new format + for (const module of game.modules) { + if (!module.active) continue; + const flags = module.flags?.[module.id]; + if (flags?.["shadowdark-art"]) { + module.flags.compendiumArtMappings = { + shadowdark: { + mapping: flags["shadowdark-art"], + }, + }; + } + } + } } diff --git a/system/src/utils/module-art.mjs b/system/src/utils/module-art.mjs deleted file mode 100644 index 4471853f..00000000 --- a/system/src/utils/module-art.mjs +++ /dev/null @@ -1,150 +0,0 @@ -export class ModuleArt { - constructor() { - /** - * The stored map of actor UUIDs to their art information. - * @type {Map} - */ - Object.defineProperty(this, "map", {value: new Map(), writable: false}); - } - - /* -------------------------------------------- */ - - /** - * Set to true to temporarily prevent actors from loading module art. - * @type {boolean} - */ - suppressArt = false; - - static getModuleArtPath(module) { - const flags = module.flags?.[module.id]; - const artPath = flags?.["shadowdark-art"]; - if (!artPath || !module.active) return null; - return artPath; - } - - /** - * Register any art mapping information included in active modules. - * @returns {Promise} - */ - async registerModuleArt() { - this.map.clear(); - - for (const module of game.modules) { - const artPath = this.constructor.getModuleArtPath(module); - - if (!artPath) continue; - - try { - const mapping = await foundry.utils.fetchJsonWithTimeout(artPath); - await this.parseArtMapping(module.id, mapping); - } - catch(e) { - console.error(e); - } - } - } - - async parseArtMapping(moduleId, mapping) { - let settings = game.settings.get( - "shadowdark", "moduleArtConfiguration" - )?.[moduleId]; - - settings ??= {portraits: true, tokens: true}; - - for (let [packName, actors] of Object.entries(mapping)) { - packName = packName === "shadowdark.monster" - ? "shadowdark.monsters" - : packName; - - const pack = game.packs.get(packName); - - if (!pack) continue; - - for (let [actorId, info] of Object.entries(actors)) { - const entry = pack.index.get(actorId); - - if (!entry || !(settings.portraits || settings.tokens)) continue; - - if (settings.portraits) { - entry.img = info.actor; - } - else { - delete info.actor; - } - - if (!settings.tokens) delete info.token; - - const uuid = `Compendium.${packName}.${actorId}`; - - info = foundry.utils.mergeObject( - this.map.get(uuid) ?? {}, info, {inplace: false} - ); - - this.map.set(`Compendium.${packName}.${actorId}`, info); - } - } - } -} - -export class ModuleArtConfig extends FormApplication { - - /** @inheritdoc */ - constructor(object={}, options={}) { - object = foundry.utils.mergeObject( - game.settings.get("shadowdark", "moduleArtConfiguration"), - object, - {inplace: false} - ); - super(object, options); - } - - /* -------------------------------------------- */ - - /** @inheritdoc */ - static get defaultOptions() { - return foundry.utils.mergeObject(super.defaultOptions, { - title: game.i18n.localize("SHADOWDARK.settings.module_art.label"), - id: "module-art-config", - template: "systems/shadowdark/templates/apps/module-art-config.hbs", - popOut: true, - width: 600, - height: "auto", - }); - } - - /* -------------------------------------------- */ - - /** @inheritdoc */ - getData(options={}) { - const context = super.getData(options); - - context.config = []; - - for (const module of game.modules) { - if (!ModuleArt.getModuleArtPath(module)) continue; - const settings = this.object[module.id] ?? {portraits: true, tokens: true}; - context.config.push({label: module.title, id: module.id, ...settings}); - } - - context.config.sort((a, b) => a.label.localeCompare(b.label, game.i18n.lang)); - - context.config.unshift({ - label: game.system.title, - id: game.system.id, - ...this.object.shadowdark, - }); - - return context; - } - - /* -------------------------------------------- */ - - /** @inheritdoc */ - async _updateObject(event, formData) { - await game.settings.set( - "shadowdark", "moduleArtConfiguration", - foundry.utils.expandObject(formData) - ); - return SettingsConfig.reloadConfirm({world: true}); - } -} From 1b4b97451b53f7cb8493d14902c96f50b09f8830 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 12 Oct 2024 01:31:48 +0100 Subject: [PATCH 004/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 772 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 772 insertions(+) create mode 100644 i18n/ru.yaml diff --git a/i18n/ru.yaml b/i18n/ru.yaml new file mode 100644 index 00000000..31a51034 --- /dev/null +++ b/i18n/ru.yaml @@ -0,0 +1,772 @@ +SHADOWDARK.ability_cha: Cha +SHADOWDARK.ability_charisma: Charisma +SHADOWDARK.ability_con: Con +SHADOWDARK.ability_constitution: Constitution +SHADOWDARK.ability_dex: Dex +SHADOWDARK.ability_dexterity: Dexterity +SHADOWDARK.ability_int: Int +SHADOWDARK.ability_intelligence: Intelligence +SHADOWDARK.ability_str: Str +SHADOWDARK.ability_strength: Strength +SHADOWDARK.ability_wis: Wis +SHADOWDARK.ability_wisdom: Wisdom +SHADOWDARK.alignment.chaotic: Chaotic +SHADOWDARK.alignment.lawful: Lawful +SHADOWDARK.alignment.neutral: Neutral +SHADOWDARK.ancestry.choice_count: Choice Count +SHADOWDARK.ancestry.choice: Choice +SHADOWDARK.ancestry.fixed: Fixed +SHADOWDARK.ancestry.languages.label: Ancestry Languages +SHADOWDARK.ancestry.languages.prompt: Select Language... +SHADOWDARK.ancestry.nametable.label: Random Name Table +SHADOWDARK.ancestry.nametable.placeholder: Drag Roll Table Here +SHADOWDARK.ancestry.nametable.random_weight: Randomization Weight +SHADOWDARK.ancestry.nametable.tooltip.weight: Affects the chance of rolling when using the Character Generator. Higher values increase chance. Default value is 1. +SHADOWDARK.ancestry.talents.label: Ancestry Talents +SHADOWDARK.ancestry.talents.prompt: Select Talent... +SHADOWDARK.app.active_effects.title: Active Effects +SHADOWDARK.app.gem_bag.sell_all: Sell All Gems +SHADOWDARK.app.gem_bag.title: Gem Bag +SHADOWDARK.app.gem_bag.tooltip.sell_gem: Sell Gem +SHADOWDARK.app.gem_bag.total_value: Total Value +SHADOWDARK.app.item_properties.armor.title: Armor Properties +SHADOWDARK.app.item_properties.languages.title: Languages +SHADOWDARK.app.item_properties.magic_item.effects.title: Magic Item Effects +SHADOWDARK.app.item_properties.save: Save +SHADOWDARK.app.item_properties.talent.effects.title: Talent Effect Types +SHADOWDARK.app.item_properties.title: Properties +SHADOWDARK.app.item_properties.weapon.title: Weapon Properties +SHADOWDARK.app.light_tracker.minute_short: min +SHADOWDARK.app.light_tracker.minutes_short: mins +SHADOWDARK.app.light_tracker.title: Light Tracker +SHADOWDARK.app.light-tracker.douse-light: Douse Light +SHADOWDARK.app.light-tracker.hide-inactive: Hide Actors Without Lights +SHADOWDARK.app.light-tracker.show-all-actors: Show All Actors +SHADOWDARK.app.light-tracker.turn-out-the-lights: Turn Out the Lights +SHADOWDARK.app.loading.body: Searching Distant Lands... +SHADOWDARK.app.loading.title: Loading +SHADOWDARK.app.npc_attack_ranges.title: Attack Ranges +SHADOWDARK.apps.character-generator.create_character: Create Character +SHADOWDARK.apps.character-generator.error.create: Failed to create player character {error} +SHADOWDARK.apps.character-generator.error.name: Character name cannot be blank +SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: Unable to roll a random name without a selected Ancestry +SHADOWDARK.apps.character-generator.gear: Gear +SHADOWDARK.apps.character-generator.gold: Gold +SHADOWDARK.apps.character-generator.name: Character Name +SHADOWDARK.apps.character-generator.success: Character created +SHADOWDARK.apps.character-generator.title: Character Generator +SHADOWDARK.apps.character-generator.tooltip: Fully Random Character +SHADOWDARK.apps.character-generator.type: Type +SHADOWDARK.apps.character-generator.update_character: Update Character +SHADOWDARK.apps.effect_panel.dialog.delete_effect.content: Do you want to delete the {effectName} effect? +SHADOWDARK.apps.effect_panel.dialog.delete_effect.title: Delete Effect? +SHADOWDARK.apps.effect_panel.duration_label.expired: Expired +SHADOWDARK.apps.effect_panel.duration_label.one_day: 1 Day Remaining +SHADOWDARK.apps.effect_panel.duration_label.one_hour: 1 Hour Remaining +SHADOWDARK.apps.effect_panel.duration_label.one_minute: 1 Minute Remaining +SHADOWDARK.apps.effect_panel.duration_label.one_round: 1 Round Remaining +SHADOWDARK.apps.effect_panel.duration_label.one_second: 1 Second Remaining +SHADOWDARK.apps.effect_panel.duration_label.one_week: 1 Week Remaining +SHADOWDARK.apps.effect_panel.duration_label.one_year: 1 Year Remaining +SHADOWDARK.apps.effect_panel.duration_label.unlimited: Unlimited Duration +SHADOWDARK.apps.effect_panel.duration_label.x_days: "{days} Days Remaining" +SHADOWDARK.apps.effect_panel.duration_label.x_hours: "{hours} Hours Remaining" +SHADOWDARK.apps.effect_panel.duration_label.x_minutes: "{minutes} Minutes Remaining" +SHADOWDARK.apps.effect_panel.duration_label.x_rounds: "{rounds} Rounds Remaining" +SHADOWDARK.apps.effect_panel.duration_label.x_seconds: "{seconds} Seconds Remaining" +SHADOWDARK.apps.effect_panel.duration_label.x_weeks: "{weeks} Weeks Remaining" +SHADOWDARK.apps.effect_panel.duration_label.x_years: "{years} Years Remaining" +SHADOWDARK.apps.effect_panel.right_click_to_remove: "[Right click] Remove effect" +SHADOWDARK.apps.item-importer.import_button: Import Item +SHADOWDARK.apps.item-importer.instruction1: 1. Copy item text from source material. +SHADOWDARK.apps.item-importer.instruction2a: 2. Paste text into this box following the item format shown in the core rules. +SHADOWDARK.apps.item-importer.instruction2b: Item Name +SHADOWDARK.apps.item-importer.instruction2c: Flavor text +SHADOWDARK.apps.item-importer.instruction2d: Features +SHADOWDARK.apps.item-importer.instruction3: 3. Click Import Item. +SHADOWDARK.apps.item-importer.title: Import Item +SHADOWDARK.apps.level-up.dragdrop: Drag and Drop Here +SHADOWDARK.apps.level-up.hit_points: Hit Points +SHADOWDARK.apps.level-up.level_up: Level Up! +SHADOWDARK.apps.level-up.leveling_to: Leveling up to level +SHADOWDARK.apps.level-up.missing_selections: Missing Selections +SHADOWDARK.apps.level-up.notalent: No talents gained at this level +SHADOWDARK.apps.level-up.prompt: Not all required selections have been made. Continue with level up anyways? +SHADOWDARK.apps.level-up.roll_talent: Roll Talent +SHADOWDARK.apps.level-up.title: Leveling Up +SHADOWDARK.apps.monster-importer.import_button: Import Monster +SHADOWDARK.apps.monster-importer.instruction1: 1. Copy monster text from source material. +SHADOWDARK.apps.monster-importer.instruction2a: 2. Paste text into the text box following the monster format shown in the core rules. Add a blank line between each ability. +SHADOWDARK.apps.monster-importer.instruction2b: Monster Name +SHADOWDARK.apps.monster-importer.instruction2c: Flavor text +SHADOWDARK.apps.monster-importer.instruction2d: Main stat block +SHADOWDARK.apps.monster-importer.instruction2e: Feature +SHADOWDARK.apps.monster-importer.instruction3: 3. Click Import Monster. +SHADOWDARK.apps.monster-importer.title: Import Monster +SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found +SHADOWDARK.apps.shadowdarkling-importer.import_button: Import +SHADOWDARK.apps.shadowdarkling-importer.import_button2: Partially Import +SHADOWDARK.apps.shadowdarkling-importer.instruction1: 1. Visit Shadowdarklings.net. +SHADOWDARK.apps.shadowdarkling-importer.instruction2: 2. Create Character > Export > copy JSON to clipboard. +SHADOWDARK.apps.shadowdarkling-importer.instruction3: Paste Character JSON Here +SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer +SHADOWDARK.apps.shadowdarkling-importer.title: Import Shadowdarkling +SHADOWDARK.apps.spell-book.known: Known +SHADOWDARK.apps.spell-book.title: Class Spell List +SHADOWDARK.apps.spell-importer.import_button: Import Spell +SHADOWDARK.apps.spell-importer.instruction1: 1. Copy spell text from source material. +SHADOWDARK.apps.spell-importer.instruction2a: 2. Paste text into this box following the spell format shown in the core rules. +SHADOWDARK.apps.spell-importer.instruction2b: Spell Name +SHADOWDARK.apps.spell-importer.instruction2c: Tier and class +SHADOWDARK.apps.spell-importer.instruction2d: Duration +SHADOWDARK.apps.spell-importer.instruction2e: Range +SHADOWDARK.apps.spell-importer.instruction2f: Description +SHADOWDARK.apps.spell-importer.instruction3: 3. Click Import Spell. +SHADOWDARK.apps.spell-importer.title: Import Spell +SHADOWDARK.apps.solodark.button1: Unlikely or Impossible +SHADOWDARK.apps.solodark.button2: Even Chance +SHADOWDARK.apps.solodark.button3: Likely or Certain +SHADOWDARK.apps.solodark.oracle: The Oracle +SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" +SHADOWDARK.apps.solodark.question1: What is the question? +SHADOWDARK.apps.solodark.question2: How likely is a "yes" result? +SHADOWDARK.apps.solodark.roll_prompt: Roll Prompt +SHADOWDARK.apps.solodark.title: SoloDark +SHADOWDARK.armor.properties.disadvantage_stealth: Disadvantage/Stealth +SHADOWDARK.armor.properties.disadvantage_swimming: Disadvantage/Swim +SHADOWDARK.armor.properties.no_swimming: No Swim +SHADOWDARK.armor.properties.one_handed: Occupies One Hand +SHADOWDARK.armor.properties.shield: Shield +SHADOWDARK.boon.type.label: Boon Type +SHADOWDARK.boons.blessing: Blessing +SHADOWDARK.boons.oath: Oath +SHADOWDARK.boons.secret: Secret +SHADOWDARK.chat_card.button.attack: Roll Attack +SHADOWDARK.chat_card.button.cast_spell: Cast Spell +SHADOWDARK.chat_card.button.learn_spell: Learn Spell +SHADOWDARK.chat_card.button.use_potion: Use Potion +SHADOWDARK.chat_card.button.use_scroll: Use Scroll +SHADOWDARK.chat_card.button.use_wand: Use Wand +SHADOWDARK.chat_card.context.apply_damage_secondary: Apply Secondary Damage +SHADOWDARK.chat_card.context.apply_damage: Apply Damage +SHADOWDARK.chat_card.context.apply_healing_secondary: Apply Secondary Healing +SHADOWDARK.chat_card.context.apply_healing: Apply Healing +SHADOWDARK.chat.clockwise_initiative: Since {name} rolled highest, they will go first, and all other combatants will follow in a fixed order. +SHADOWDARK.chat.hp_roll.apply_to_max: Add to Max HP +SHADOWDARK.chat.item_roll.double_numerical: Double any one numerical value! +SHADOWDARK.chat.item_roll.mishap: Roll on the appropriate Mishap table! +SHADOWDARK.chat.item_roll.title: Attack roll with {name} +SHADOWDARK.chat.item_roll.wand_mishap: The wand breaks and permanently ceases to work +SHADOWDARK.chat.light_source.expired: "{name}'s {lightSource} expired" +SHADOWDARK.chat.light_source.remaining: minutes remaining +SHADOWDARK.chat.light_source.seconds_remaining: Less than 1 Minute Remaining +SHADOWDARK.chat.light_source.source.all: All light sources went out +SHADOWDARK.chat.light_source.source.dropped: was dropped +SHADOWDARK.chat.light_source.source.picked_up: was picked up +SHADOWDARK.chat.light_source.source.toggle.off: was doused +SHADOWDARK.chat.light_source.source.toggle.on: was lit +SHADOWDARK.chat.light_source.went_out: "{name}'s {lightSource} went out" +SHADOWDARK.chat.potion_used: "{name} used a Potion" +SHADOWDARK.chat.spell_learn.failure: "{name} failed to learn anything from the scroll" +SHADOWDARK.chat.spell_learn.success: "{name} successfully learnt the {spellName} spell" +SHADOWDARK.chat.spell_learn.title: Learning Spell +SHADOWDARK.chat.spell_roll.title: "{name}, DC {spellDC}" +SHADOWDARK.chat.use_ability.failure: "{name} failed to used the {ability} ability" +SHADOWDARK.chat.use_ability.success: "{name} successfully used the {ability} ability" +SHADOWDARK.chat.use_ability.title: "Using Ability" +SHADOWDARK.chat.welcome_message.issues: Report Issues +SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker +SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." +SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library +SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG +SHADOWDARK.chat.welcome_message.arcane_library_text: Visit the Arcane Library website for official Shadowdark PDFs, books and merch. +SHADOWDARK.chat.welcome_message.title: Shadowdark RPG for Foundry +SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are some resources to get you started. +SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial +SHADOWDARK.chatcard.default: Roll +SHADOWDARK.class-ability.ability.check: Ability Check +SHADOWDARK.class-ability.ability.label: Ability +SHADOWDARK.class-ability.available.label: Available +SHADOWDARK.class-ability.dc.label: DC +SHADOWDARK.class-ability.group.label: Ability Group +SHADOWDARK.class-ability.limited-uses.label: Limited Uses? +SHADOWDARK.class-ability.lose_on_failure.label: Lose on Failure? +SHADOWDARK.class-ability.lost.label: Lost +SHADOWDARK.class-ability.maximum.label: Maximum +SHADOWDARK.class-ability.options: Options +SHADOWDARK.class.armor.all.label: All Armor +SHADOWDARK.class.armor.label: Armor +SHADOWDARK.class.armor.prompt: Select Armor... +SHADOWDARK.class.choice_count: Choice Count +SHADOWDARK.class.choice: Choice +SHADOWDARK.class.fighter: Fighter +SHADOWDARK.class.fixed: Fixed +SHADOWDARK.class.hit_points.label: HP Die Roll +SHADOWDARK.class.language_choices.count.label: Choice Count +SHADOWDARK.class.language_choices.label: Language Choices +SHADOWDARK.class.language_choices.prompt: Select Language... +SHADOWDARK.class.languages.label: Class Languages +SHADOWDARK.class.priest: Priest +SHADOWDARK.class.ranger: Ranger +SHADOWDARK.class.spellcasting_ability.label: Spellcasting Ability +SHADOWDARK.class.spellcasting_class.label: Spell Class +SHADOWDARK.class.spellcasting.base_difficulty.label: Spellcasting Base DC +SHADOWDARK.class.talent_choices.count.label: Choice Count +SHADOWDARK.class.talent_choices.label: Talent Choices +SHADOWDARK.class.talent_choices.prompt: Select Talent... +SHADOWDARK.class.talents_table.label: Class Talents Table +SHADOWDARK.class.talents.label: Talents +SHADOWDARK.class.talents.prompt: Select Talent... +SHADOWDARK.class.thief: Thief +SHADOWDARK.class.titles.levels.from.label: From +SHADOWDARK.class.titles.levels.label: Levels +SHADOWDARK.class.titles.levels.to.label: To +SHADOWDARK.class.weapons.all_melee.label: All Melee Weapons +SHADOWDARK.class.weapons.all_ranged.label: All Ranged Weapons +SHADOWDARK.class.weapons.all.label: All Weapons +SHADOWDARK.class.weapons.label: Weapons +SHADOWDARK.class.weapons.prompt: Select Weapon... +SHADOWDARK.class.wizard: Wizard +SHADOWDARK.coins.cp: CP +SHADOWDARK.coins.gp: GP +SHADOWDARK.coins.sp: SP +SHADOWDARK.damage.one_handed: "One-Handed Damage:" +SHADOWDARK.damage.two_handed: "Two-Handed Damage:" +SHADOWDARK.dialog.ability_check.cha: Charisma Check +SHADOWDARK.dialog.ability_check.con: Constitution Check +SHADOWDARK.dialog.ability_check.dex: Dexterity Check +SHADOWDARK.dialog.ability_check.int: Intelligence Check +SHADOWDARK.dialog.ability_check.str: Strength Check +SHADOWDARK.dialog.ability_check.title: Ability Check +SHADOWDARK.dialog.ability_check.wis: Wisdom Check +SHADOWDARK.dialog.create_custom_item: Create Custom Item +SHADOWDARK.dialog.create_treasure: Create Treasure +SHADOWDARK.dialog.create: Create +SHADOWDARK.dialog.edit_hp.title: Edit HP +SHADOWDARK.dialog.edit_stats.title: Edit Stats +SHADOWDARK.dialog.effect.choice.armor: Choose Armor Type +SHADOWDARK.dialog.effect.choice.attribute: Choose Attribute +SHADOWDARK.dialog.effect.choice.damage_die: Choose Damage Die +SHADOWDARK.dialog.effect.choice.lightsource: Choose Light Source +SHADOWDARK.dialog.effect.choice.property: Choose Property +SHADOWDARK.dialog.effect.choice.spell: Choose Spell +SHADOWDARK.dialog.effect.choice.weapon_property: Choose Weapon Property +SHADOWDARK.dialog.effect.choice.weapon: Choose Weapon Type +SHADOWDARK.dialog.effect.choices.title: Effect Parameters +SHADOWDARK.dialog.general.are_you_sure: Are you sure? +SHADOWDARK.dialog.general.cancel: Cancel +SHADOWDARK.dialog.general.no: "No" +SHADOWDARK.dialog.general.select: Select +SHADOWDARK.dialog.general.yes: "Yes" +SHADOWDARK.dialog.gm: Gamemaster +SHADOWDARK.dialog.hp_roll.per_level: Roll HP for level {level} +SHADOWDARK.dialog.hp_roll.previous_hp: "HP before rolling: {hp}" +SHADOWDARK.dialog.hp_roll.roll_level_1: Rolled {hp} hp for level 1 (incl. con mod) +SHADOWDARK.dialog.hp_roll.roll_per_level: Rolled {hp} hp for level {level} +SHADOWDARK.dialog.hp_roll.sum_total: For a new max HP of {total} hp +SHADOWDARK.dialog.hp_roll.summary: HP Rolling Summary +SHADOWDARK.dialog.hp_roll.title: HP Roll +SHADOWDARK.dialog.item_roll.ability_bonus: Ability Bonus +SHADOWDARK.dialog.item_roll.item_bonus: Item Bonus +SHADOWDARK.dialog.item_roll.talent_bonus: Talent Bonus +SHADOWDARK.dialog.item_roll.title: Roll Attack with +SHADOWDARK.dialog.item_selector.default_title: Choose Items +SHADOWDARK.dialog.item_selector.error.max_choices_exceeded: You can only select a maximum of {maxChoices} of this Item type. +SHADOWDARK.dialog.item_selector.error.no_items_found: Unable to find items of the correct type in the available compendiums. +SHADOWDARK.dialog.item_selector.select_item.prompt: Select Item... +SHADOWDARK.dialog.item.confirm_delete: Confirm Deletion +SHADOWDARK.dialog.item.confirm_sale: Confirm Sale +SHADOWDARK.dialog.item.create_from_spell: Create Item from {spellName} +SHADOWDARK.dialog.item.delete: Delete +SHADOWDARK.dialog.item.sell_all: Sell All +SHADOWDARK.dialog.item.sell: Sell +SHADOWDARK.dialog.item.use: Use +SHADOWDARK.dialog.light_source.pick_up.title: Select actor to give lightsource +SHADOWDARK.dialog.roll_mode_label: Rolling mode +SHADOWDARK.dialog.roll: Roll +SHADOWDARK.dialog.scroll.learn_spell_class_warning: "WARNING: This spell is not of the same class as the character, are you sure you wish to try and learn it?" +SHADOWDARK.dialog.scroll.wrong_class_confirm: Confirm Learn Spell +SHADOWDARK.dialog.select_ancestry.prompt: Select Ancestry... +SHADOWDARK.dialog.select_ancestry.title: Choose Ancestry +SHADOWDARK.dialog.select_armor_property.prompt: Select Armor Property... +SHADOWDARK.dialog.select_armor_property.title: Choose Armor Properties +SHADOWDARK.dialog.select_background.prompt: Select Background... +SHADOWDARK.dialog.select_background.title: Choose Background +SHADOWDARK.dialog.select_class.prompt: Select Class... +SHADOWDARK.dialog.select_class.title: Choose Class +SHADOWDARK.dialog.select_deity.prompt: Select Deity... +SHADOWDARK.dialog.select_deity.title: Choose Deity +SHADOWDARK.dialog.select_languages.prompt: Select Language... +SHADOWDARK.dialog.select_languages.title: Choose Languages +SHADOWDARK.dialog.select_weapon_property.prompt: Select Weapon Property... +SHADOWDARK.dialog.select_weapon_property.title: Choose Weapon Properties +SHADOWDARK.dialog.spell_roll.title: Cast Spell with +SHADOWDARK.dialog.submit: Submit +SHADOWDARK.dialog.tooltip.talent_advantage: A talent is giving you advantage to this roll +SHADOWDARK.dialog.type_here: Type Here +SHADOWDARK.dragdrop: Drag and Drop Here +SHADOWDARK.effect_duration.hours: Hours +SHADOWDARK.effect_duration.minutes: Minutes +SHADOWDARK.effect_duration.seconds: Seconds +SHADOWDARK.effect_duration.turns: Turns +SHADOWDARK.effect_duration.unlimited: Unlimited +SHADOWDARK.effect.custom: Custom Effects +SHADOWDARK.effect.footer.add_custom: Add Custom Effect +SHADOWDARK.effect.header.changes: Changes +SHADOWDARK.effect.header.delete: Delete +SHADOWDARK.effect.header.edit: Edit +SHADOWDARK.effect.header.name: Name +SHADOWDARK.effect.header.options: Options +SHADOWDARK.effect.header.toggle_active: Toggle Active +SHADOWDARK.effect.header.transfer: Transfer +SHADOWDARK.effect.item: Item Effects +SHADOWDARK.effect.new: New Effect +SHADOWDARK.effect.spell: Spell Effects +SHADOWDARK.effect.talent: Talent Effects +SHADOWDARK.effect.temporary: Temporary Effects +SHADOWDARK.effect.tooltip.transfer.do_not: Does not transfer +SHADOWDARK.effect.tooltip.transfer.do: Does transfer +SHADOWDARK.effect.tooltip.transfer.header: Transfer effect to actor when item is added +SHADOWDARK.effect.unavailable: Disabled Effects +SHADOWDARK.error.class_ability.no-uses-remaining: No uses remaining +SHADOWDARK.error.general.gm_required: You must have the Game Master role to do that. +SHADOWDARK.error.general.no_character_class: No character class has been selected +SHADOWDARK.error.source.source_missing: Source missing or unknown... +SHADOWDARK.error.spells.no_spellcasting_ability_set: No character spellcasting ability has been configured +SHADOWDARK.form.section_header.equipment.label: Equipment +SHADOWDARK.form.section_header.languages.label: Languages +SHADOWDARK.form.section_header.names.label: Names +SHADOWDARK.form.section_header.spellcasting.label: Spellcasting +SHADOWDARK.form.section_header.talents.label: Talents +SHADOWDARK.hotbar.abilityLost: Ability currently lost +SHADOWDARK.hotbar.moreThanOneItemWithName: More than one item found with that name +SHADOWDARK.hotbar.noActorSelected: You must select an actor to use this macro +SHADOWDARK.hotbar.noItemWithName: No such item found on character +SHADOWDARK.hotbar.spellLost: Spell currently lost +SHADOWDARK.inventory.carried_gear: Carried Gear +SHADOWDARK.inventory.coins: Coins +SHADOWDARK.inventory.equipped_gear: Equipped Gear +SHADOWDARK.inventory.gear: Gear +SHADOWDARK.inventory.gems: Gems +SHADOWDARK.inventory.item.light_remaining: "{timeRemaining} Minutes Remaining" +SHADOWDARK.inventory.item.light_seconds_remaining: Less than 1 Minute Remaining +SHADOWDARK.inventory.item.light_used: (used) +SHADOWDARK.inventory.label.quantity: Qty +SHADOWDARK.inventory.label.slots: Slots +SHADOWDARK.inventory.section.armor: Armor +SHADOWDARK.inventory.section.basic: Basic Equipment +SHADOWDARK.inventory.section.potions: Potions +SHADOWDARK.inventory.section.scrolls: Scrolls +SHADOWDARK.inventory.section.treasure: Treasure +SHADOWDARK.inventory.section.wands: Wands +SHADOWDARK.inventory.section.weapon: Weapons +SHADOWDARK.inventory.slots_max: Max +SHADOWDARK.inventory.slots_used: Used +SHADOWDARK.inventory.slots: Slots +SHADOWDARK.inventory.stashed_gear: Stashed Gear +SHADOWDARK.inventory.tooltip.gem_bag: Open Gem Bag +SHADOWDARK.inventory.tooltip.item_decrement: Decrease Quantity +SHADOWDARK.inventory.tooltip.item_increment: Increase Quantity +SHADOWDARK.inventory.tooltip.sell_treasure: Sell Treasure +SHADOWDARK.inventory.tooltip.toggle_equipped: Toggle Equipped +SHADOWDARK.inventory.tooltip.toggle_light_source: Toggle Light Source +SHADOWDARK.inventory.tooltip.toggle_stashed: Toggle Stashed +SHADOWDARK.inventory.total_coins: Total Coins +SHADOWDARK.inventory.total_gems: Total Gems +SHADOWDARK.item_type.armor: Armor +SHADOWDARK.item_type.basic: Basic +SHADOWDARK.item_type.gem: Gem +SHADOWDARK.item_type.potion: Potion +SHADOWDARK.item_type.spell: Spell +SHADOWDARK.item_type.talent: Talent +SHADOWDARK.item_type.weapon: Weapon +SHADOWDARK.item.armor_ac_modifier: Modifier +SHADOWDARK.item.armor_ac: AC +SHADOWDARK.item.armor_bonus_attribute: Bonus Attribute +SHADOWDARK.item.armor_class: Armor Class +SHADOWDARK.item.armor.base_armor.chainmail: Chainmail +SHADOWDARK.item.armor.base_armor.leather_armor: Leather Armor +SHADOWDARK.item.armor.base_armor.plate_mail: Plate Mail +SHADOWDARK.item.armor.base_armor.shield: Shield +SHADOWDARK.item.armor.base_armor.title: Base Armor +SHADOWDARK.item.cost: Cost +SHADOWDARK.item.description: Description +SHADOWDARK.item.effect.category.condition: Condition +SHADOWDARK.item.effect.category.effect: Effect +SHADOWDARK.item.effect.category.title: Effect Category +SHADOWDARK.item.effect.lightSource.lantern: Lantern +SHADOWDARK.item.effect.lightSource.lightSpellDouble: Light (Double Range) +SHADOWDARK.item.effect.lightSource.lightSpellNear: Light +SHADOWDARK.item.effect.lightSource.lightSuppression: Light Suppression +SHADOWDARK.item.effect.lightSource.purpleGlow: Purple Glow +SHADOWDARK.item.effect.lightSource.torch: Torch +SHADOWDARK.item.effect.pre-defined.title: Pre-defined effects +SHADOWDARK.item.effect.predefined_effect.abilityImprovement: Ability Score Improvement +SHADOWDARK.item.effect.predefined_effect.abilityImprovementCha: Ability Score Improvement (Cha) +SHADOWDARK.item.effect.predefined_effect.abilityImprovementCon: Ability Score Improvement (Con) +SHADOWDARK.item.effect.predefined_effect.abilityImprovementDex: Ability Score Improvement (Dex) +SHADOWDARK.item.effect.predefined_effect.abilityImprovementInt: Ability Score Improvement (Int) +SHADOWDARK.item.effect.predefined_effect.abilityImprovementStr: Ability Score Improvement (Str) +SHADOWDARK.item.effect.predefined_effect.abilityImprovementWis: Ability Score Improvement (Wis) +SHADOWDARK.item.effect.predefined_effect.acBonus: AC Bonus +SHADOWDARK.item.effect.predefined_effect.acBonusFromAttribute: AC Bonus from Attribute +SHADOWDARK.item.effect.predefined_effect.additionalGearSlots: Additional Gear Slots +SHADOWDARK.item.effect.predefined_effect.armorMastery: Armor Mastery +SHADOWDARK.item.effect.predefined_effect.backstabDie: Additional Backstab Die +SHADOWDARK.item.effect.predefined_effect.criticalFailureThreshold: Critical Failure Threshold +SHADOWDARK.item.effect.predefined_effect.criticalSuccessThreshold: Critical Success Threshold +SHADOWDARK.item.effect.predefined_effect.critMultiplier: Critical Multiplier +SHADOWDARK.item.effect.predefined_effect.damageMultiplier: Damage Multiplier +SHADOWDARK.item.effect.predefined_effect.hpAdvantage: HP Roll Advantage +SHADOWDARK.item.effect.predefined_effect.initAdvantage: Initiative Advantage +SHADOWDARK.item.effect.predefined_effect.lightSource: Light Source +SHADOWDARK.item.effect.predefined_effect.meleeAttackBonus: Melee Attack Roll Bonus +SHADOWDARK.item.effect.predefined_effect.meleeDamageBonus: Melee Damage Bonus +SHADOWDARK.item.effect.predefined_effect.permanentAbilityCha: Permanent Ability (Cha) +SHADOWDARK.item.effect.predefined_effect.permanentAbilityCon: Permanent Ability (Con) +SHADOWDARK.item.effect.predefined_effect.permanentAbilityDex: Permanent Ability (Dex) +SHADOWDARK.item.effect.predefined_effect.permanentAbilityInt: Permanent Ability (Int) +SHADOWDARK.item.effect.predefined_effect.permanentAbilityStr: Permanent Ability (Str) +SHADOWDARK.item.effect.predefined_effect.permanentAbilityWis: Permanent Ability (Wis) +SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: Ranged Attack Roll Bonus +SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: Ranged Damage Bonus +SHADOWDARK.item.effect.predefined_effect.spellAdvantage: Spellcasting Advantage on Spell +SHADOWDARK.item.effect.predefined_effect.spellCastingBonus: Spellcasting Check Bonus +SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: Unarmored AC Bonus +SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: Weapon Attack Roll Bonus +SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: Weapon Attack Damage Bonus +SHADOWDARK.item.effect.predefined_effect.weaponDamageDieD12: Weapon Damage Die D12 +SHADOWDARK.item.effect.predefined_effect.weaponDamageDieImprovementByProperty: Weapon Damage Die Improvement by Property +SHADOWDARK.item.effect.predefined_effect.weaponDamageExtraDieByProperty: Extra Damage Die by Property +SHADOWDARK.item.effect.predefined_effect.weaponDamageExtraDieImprovementByProperty: Extra Damage Die Improvement by Property +SHADOWDARK.item.effect.predefined_effect.weaponDamageMultiplier: Weapon Damage Multiplier +SHADOWDARK.item.effect.predefined_effect.weaponMastery: Weapon Mastery +SHADOWDARK.item.effect.show-on-panel: Show on panel +SHADOWDARK.item.effect.show-token-icon: Show token icon +SHADOWDARK.item.effect.source.title: Item Source +SHADOWDARK.item.effect.warning.add_effect_without_value: Can't add effects without selecting a value when asked. +SHADOWDARK.item.effect.warning.add_round_item_outside_combat: Can't add effects with Rounds type duration outside of combat. +SHADOWDARK.item.equipped: Equipped +SHADOWDARK.item.inventory_free_carry: Free Carry +SHADOWDARK.item.inventory_per_slot: Max per Slot +SHADOWDARK.item.inventory_quantity: Quantity +SHADOWDARK.item.inventory_slots: Slots per Item +SHADOWDARK.item.level: Level +SHADOWDARK.item.light.is_source: Light Source +SHADOWDARK.item.light.longevity: Longevity (Mins) +SHADOWDARK.item.light.remaining: Remaining (Mins) +SHADOWDARK.item.light.template: Light Template +SHADOWDARK.item.magic_item.is_magic: Magic Item +SHADOWDARK.item.magic_item.title: Magic Item Effect(s) +SHADOWDARK.item.magic_item.type.attackBonus: Attack Bonus +SHADOWDARK.item.magic_item.type.criticalFailureThreshold: Higher Critical Failure Threshold +SHADOWDARK.item.magic_item.type.criticalSuccessThreshold: Lower Critical Success Threshold +SHADOWDARK.item.magic_item.type.critMultiplier: Critical Multiplier +SHADOWDARK.item.magic_item.type.custom: Custom Effect +SHADOWDARK.item.magic_item.type.damageBonus: Damage Bonus +SHADOWDARK.item.magic_item.type.permanentAbility: Permanent Ability Change +SHADOWDARK.item.name_from_spell.Potion: Potion of {spellName} +SHADOWDARK.item.name_from_spell.Scroll: Scroll of {spellName} +SHADOWDARK.item.name_from_spell.Wand: Wand of {spellName} +SHADOWDARK.item.name: Item Name +SHADOWDARK.item.npc_attack_bonus: Attack Bonus +SHADOWDARK.item.npc_attack_count: Num. Attacks +SHADOWDARK.item.npc_attack_damage_formula: Damage Formula +SHADOWDARK.item.npc_attack_special: Attack Features +SHADOWDARK.item.npc_attack_type: Type +SHADOWDARK.item.npc_attack.num_damage_dice: Num. Damage Dice +SHADOWDARK.item.potion.label: Potion +SHADOWDARK.item.properties: Properties +SHADOWDARK.item.scroll.label: Scroll +SHADOWDARK.item.source_tag: Source Tag +SHADOWDARK.item.source: Source +SHADOWDARK.item.spell_caster_classes: Caster Classes +SHADOWDARK.item.spell_class: Spell Class +SHADOWDARK.item.spell_duration: Duration +SHADOWDARK.item.spell_name: Spell Name +SHADOWDARK.item.spell_range: Range +SHADOWDARK.item.spell_tier: Tier +SHADOWDARK.item.spell.label: Spell +SHADOWDARK.item.stashed.label: Stashed +SHADOWDARK.item.talent_class: Talent Class +SHADOWDARK.item.treasure_name: Treasure Name +SHADOWDARK.item.treasure_value: Treasure Value +SHADOWDARK.item.treasure: Treasure +SHADOWDARK.item.type: Item Type +SHADOWDARK.item.wand.label: Wand +SHADOWDARK.item.weapon_damage.oneHanded_short: 1H +SHADOWDARK.item.weapon_damage.oneHanded: 1H Damage +SHADOWDARK.item.weapon_damage.twoHanded_short: 2H +SHADOWDARK.item.weapon_damage.twoHanded: 2H Damage +SHADOWDARK.item.weapon_range: Range +SHADOWDARK.item.weapon_type: Type +SHADOWDARK.item.weapon.base_weapon.bastard_sword: Bastard Sword +SHADOWDARK.item.weapon.base_weapon.club: Club +SHADOWDARK.item.weapon.base_weapon.crossbow: Crossbow +SHADOWDARK.item.weapon.base_weapon.dagger: Dagger +SHADOWDARK.item.weapon.base_weapon.greataxe: Greataxe +SHADOWDARK.item.weapon.base_weapon.greatsword: Greatsword +SHADOWDARK.item.weapon.base_weapon.javelin: Javelin +SHADOWDARK.item.weapon.base_weapon.longbow: Longbow +SHADOWDARK.item.weapon.base_weapon.longsword: Longsword +SHADOWDARK.item.weapon.base_weapon.mace: Mace +SHADOWDARK.item.weapon.base_weapon.shortbow: Shortbow +SHADOWDARK.item.weapon.base_weapon.shortsword: Shortsword +SHADOWDARK.item.weapon.base_weapon.spear: Spear +SHADOWDARK.item.weapon.base_weapon.staff: Staff +SHADOWDARK.item.weapon.base_weapon.title: Base Weapon +SHADOWDARK.item.weapon.base_weapon.wand: Wand +SHADOWDARK.item.weapon.base_weapon.warhammer: Warhammer +SHADOWDARK.language_choices.common.label: Additional Common +SHADOWDARK.language_choices.rare.label: Additional Rare +SHADOWDARK.language.celestial: Celestial +SHADOWDARK.language.common: Common +SHADOWDARK.language.diabolic: Diabolic +SHADOWDARK.language.draconic: Draconic +SHADOWDARK.language.dwarvish: Dwarvish +SHADOWDARK.language.elvish: Elvish +SHADOWDARK.language.giant: Giant +SHADOWDARK.language.goblin: Goblin +SHADOWDARK.language.merran: Merran +SHADOWDARK.language.orcish: Orcish +SHADOWDARK.language.primordial: Primordial +SHADOWDARK.language.rarity.common: Common +SHADOWDARK.language.rarity.label: Rarity +SHADOWDARK.language.rarity.rare: Rare +SHADOWDARK.language.reptilian: Reptilian +SHADOWDARK.language.sylvan: Sylvan +SHADOWDARK.language.thanian: Thanian +SHADOWDARK.language.who_speaks_it: Who Speaks It +SHADOWDARK.light_source.lantern: Lantern +SHADOWDARK.light_source.light_spell.double_near: Light Spell (Double Near) +SHADOWDARK.light_source.light_spell.near: Light Spell (Near) +SHADOWDARK.light_source.torch: Torch +SHADOWDARK.light-source.dropped: Dropped {name} +SHADOWDARK.light-source.pick-up-lightsource.tooltip: Pick up Lightsource +SHADOWDARK.light-tracker.active: Active +SHADOWDARK.light-tracker.paused: Paused +SHADOWDARK.light-tracker.status.label: Status +SHADOWDARK.light-tracker.title: Light Tracker +SHADOWDARK.light-tracker.user_warning: One or more users have not selected a character +SHADOWDARK.macro.error.caught_error: "The '{macro}' macro failed with the following error: {error}" +SHADOWDARK.macro.error.gm_role_required: The '{macro}' macro requires you to have the 'Game Master' user role +SHADOWDARK.macro.success: The '{macro}' macro completed successfully +SHADOWDARK.macro.warn.create_item_requires_ownership: You can only create macro buttons for owned Items +SHADOWDARK.migration.begin_migration: Performing data upgrades for Shadowdark RPG +SHADOWDARK.migration.begin_schema: Applying updates for Shadowdark RPG schema v{version} +SHADOWDARK.migration.completed_migration: Completed data updgrades for Shadowdark RPG +SHADOWDARK.migration.completed_schema: Completed applying updates for Shadowdark RPG schema v{version} +SHADOWDARK.module_art_config.portraits: Portraits +SHADOWDARK.module_art_config.tokens: Tokens +SHADOWDARK.notify.combat.clockwise_initiative_only_gm: When Clockwise Initiative is enabled, only the GM can roll initiative. +SHADOWDARK.npc_attack.type.physical: Physical +SHADOWDARK.npc_attack.type.special: Special +SHADOWDARK.npc_move.close: Close +SHADOWDARK.npc_move.double_near: Double Near +SHADOWDARK.npc_move.far: Far +SHADOWDARK.npc_move.near: Near +SHADOWDARK.npc_move.none: None +SHADOWDARK.npc_move.special: Special +SHADOWDARK.npc_move.triple_near: Triple Near +SHADOWDARK.property.type.option.armor: Armor +SHADOWDARK.property.type.option.weapon: Weapon +SHADOWDARK.property.type.title: Property Type +SHADOWDARK.range.close_short: C +SHADOWDARK.range.close: Close +SHADOWDARK.range.far_short: F +SHADOWDARK.range.far: Far +SHADOWDARK.range.near_short: "N" +SHADOWDARK.range.near: Near +SHADOWDARK.range.nearLine_short: NL +SHADOWDARK.range.nearLine: Near Line +SHADOWDARK.range.samePlane_short: SP +SHADOWDARK.range.samePlane: On the same plane +SHADOWDARK.range.self_short: S +SHADOWDARK.range.self: Self +SHADOWDARK.range.touch_short: T +SHADOWDARK.range.touch: Touch +SHADOWDARK.range.unlimited_short: U +SHADOWDARK.range.unlimited: Unlimited +SHADOWDARK.roll.advantage_title: "{title} with Advantage" +SHADOWDARK.roll.advantage: Advantage +SHADOWDARK.roll.critical.failure: Critical Failure! ({value}) +SHADOWDARK.roll.critical.success: Critical Success! ({value}) +SHADOWDARK.roll.D20: Roll D20 +SHADOWDARK.roll.damage: "Damage Roll:" +SHADOWDARK.roll.disadvantage_title: "{title} with Disadvantage" +SHADOWDARK.roll.disadvantage: Disadvantage +SHADOWDARK.roll.failure: Failure! ({value}) +SHADOWDARK.roll.normal: Normal +SHADOWDARK.roll.spell_casting_check: Spellcasting Check +SHADOWDARK.roll.success: Success! ({value}) +SHADOWDARK.settings.debugEnabled.hint: Enable or Disable additional debug logging +SHADOWDARK.settings.debugEnabled.name: Enable/Disable Debug +SHADOWDARK.settings.effect_panel.show_passive.hint: If checked, the Effect Panel will also show active effects from talents and items +SHADOWDARK.settings.effect_panel.show_passive.name: Show All Active Effects +SHADOWDARK.settings.migrateSystemCompendiums.hint: Perform data migration on the built in Shadowdark RPG system compendiums (don't modify this unless you know what you are doing) +SHADOWDARK.settings.migrateSystemCompendiums.name: Migrate System Compendiums +SHADOWDARK.settings.module_art.hint: Configure which module-provided art should be used +SHADOWDARK.settings.module_art.label: Configure Art +SHADOWDARK.settings.module_art.name: Module-provided Art +SHADOWDARK.settings.module_art.save: Save Changes +SHADOWDARK.settings.roll_npc_hp.hint: Automatically roll NPC Hit Points when they are added to a scene +SHADOWDARK.settings.roll_npc_hp.name: Auto Roll NPC Hit Points +SHADOWDARK.settings.schemaVersion.hint: Records the current schema version for the Shadowdark RPG system data. (don't modify this unless you know what you are doing) +SHADOWDARK.settings.schemaVersion.name: Schema Version +SHADOWDARK.settings.source_filter.all_used: All sources are currently allowed +SHADOWDARK.settings.source_filter.button_label: Configure Source Filters +SHADOWDARK.settings.source_filter.hint: If populated, only book sources included in this list will be available for selection in relevant places. Items with no book source set will always be available. +SHADOWDARK.settings.source_filter.name: Source Filter +SHADOWDARK.settings.source_filter.prompt: Select Source... +SHADOWDARK.settings.source_filter.save_button: Save Configuration +SHADOWDARK.settings.source_filter.these_used: Only the following sources will be allowed +SHADOWDARK.settings.source_filter.title: Book Source Filters +SHADOWDARK.settings.systemVersion.hint: Records the current Shadowdark RPG system version number. (don't modify this unless you know what you are doing) +SHADOWDARK.settings.systemVersion.name: System Version +SHADOWDARK.settings.track_light_sources.hint: If checked the system will track and update the time remaining on any active light sources. +SHADOWDARK.settings.track_light_sources.inactive_user.hint: If checked light sources belonging to inactive (not logged in) users will still be tracked +SHADOWDARK.settings.track_light_sources.inactive_user.name: Track Inactive User Light Sources +SHADOWDARK.settings.track_light_sources.interval.hint: How frequently tracked light sources will be updated, in seconds. +SHADOWDARK.settings.track_light_sources.interval.name: Light Tracking Interval +SHADOWDARK.settings.track_light_sources.name: Track Light Sources +SHADOWDARK.settings.track_light_sources.open_on_start.hint: If checked the Light Tracking interface will open on startup (GM only). +SHADOWDARK.settings.track_light_sources.open_on_start.name: Open Light Tracking UI on Startup +SHADOWDARK.settings.track_light_sources.pause_with_game.hint: If checked the Realtime Light Tracking will pause whenever Foundry is paused. +SHADOWDARK.settings.track_light_sources.pause_with_game.name: Pause Light Tracking +SHADOWDARK.settings.track_light_sources.realtime_tracking.hint: If checked the Light Tracking will follow real time. Disable if an external time/calendar module is used. +SHADOWDARK.settings.track_light_sources.realtime_tracking.name: Realtime Light Tracking +SHADOWDARK.settings.use_clockwise_initiative.hint: If checked the combatant with the highest iniative roll will go first, and all other combatants will follow in a fixed order. All NPCs will be grouped together in the initiative order. +SHADOWDARK.settings.use_clockwise_initiative.name: Use Clockwise Initiative +SHADOWDARK.settings.use_pulp_mode.hint: Shows Luck tokens as a numeric value rather than a checkbox +SHADOWDARK.settings.use_pulp_mode.name: Enable Pulp Mode +SHADOWDARK.sheet.abilities.label: Abilities +SHADOWDARK.sheet.abilities.modifiers: Modifiers +SHADOWDARK.sheet.abilities.stats: Stats +SHADOWDARK.sheet.abilities.ungrouped.label: Miscellaneous +SHADOWDARK.sheet.abilities.uses.decrement.tooltip: Decrease Available Uses +SHADOWDARK.sheet.abilities.uses.increment.tooltip: Increase Available Uses +SHADOWDARK.sheet.actor.ac: AC +SHADOWDARK.sheet.actor.alignment: Alignment +SHADOWDARK.sheet.actor.hp_max: Max +SHADOWDARK.sheet.actor.hp: HP +SHADOWDARK.sheet.actor.level: Level +SHADOWDARK.sheet.actor.placeholder.name: New Actor Name +SHADOWDARK.sheet.class.item: Shadowdark Item Sheet +SHADOWDARK.sheet.class.npc: Shadowdark NPC Sheet +SHADOWDARK.sheet.class.player: Shadowdark Player Sheet +SHADOWDARK.sheet.general.item_create.tooltip: Create {type} Item +SHADOWDARK.sheet.general.item_delete.title: Delete Item +SHADOWDARK.sheet.general.item_edit.title: Edit Item +SHADOWDARK.sheet.general.roll_hp: Roll HP +SHADOWDARK.sheet.item.tab.description: Description +SHADOWDARK.sheet.item.tab.details: Details +SHADOWDARK.sheet.item.tab.effects: Effects +SHADOWDARK.sheet.item.tab.light: Light +SHADOWDARK.sheet.item.tab.magic: Magic +SHADOWDARK.sheet.item.tab.source: Source +SHADOWDARK.sheet.item.tab.spellsknown: Spells Known +SHADOWDARK.sheet.item.tab.titles: Titles +SHADOWDARK.sheet.npc.attacks_label: Attacks +SHADOWDARK.sheet.npc.dark_adapted: Dark-Adapted +SHADOWDARK.sheet.npc.description_label: Description +SHADOWDARK.sheet.npc.features_label: Features +SHADOWDARK.sheet.npc.movement_short: Move +SHADOWDARK.sheet.npc.movement: Movement +SHADOWDARK.sheet.npc.specials_label: Special Attacks +SHADOWDARK.sheet.npc.tab.abilities: Abilities +SHADOWDARK.sheet.npc.tab.description: Description +SHADOWDARK.sheet.npc.tab.spells: Spells +SHADOWDARK.sheet.player.active_effect_override: This value is being modified by an Active Effect and cannot be edited. Disable the effect to edit it. +SHADOWDARK.sheet.player.ancestry.label: Ancestry +SHADOWDARK.sheet.player.ancestry.tooltip: Your character's cultural and ancestral heritage +SHADOWDARK.sheet.player.available_spells: Available Spells +SHADOWDARK.sheet.player.background.label: Background +SHADOWDARK.sheet.player.background.tooltip: Your history and past experience. You are adept at tasks related to your background. +SHADOWDARK.sheet.player.boon.label: Boon +SHADOWDARK.sheet.player.boons.blessings.label: Blessings +SHADOWDARK.sheet.player.boons.label: Boons +SHADOWDARK.sheet.player.boons.name: Boon Name +SHADOWDARK.sheet.player.boons.oaths.label: Oaths +SHADOWDARK.sheet.player.boons.secrets.label: Secrets +SHADOWDARK.sheet.player.class_spells: Class Spells +SHADOWDARK.sheet.player.class.label: Class +SHADOWDARK.sheet.player.class.tooltip: Your character's job +SHADOWDARK.sheet.player.deity.label: Deity +SHADOWDARK.sheet.player.deity.tooltip: Your character’s cosmic link to the opposing forces of Law and Chaos, or balanced Neutrality. +SHADOWDARK.sheet.player.languages: Languages +SHADOWDARK.sheet.player.luck: Luck +SHADOWDARK.sheet.player.melee_attacks: Melee Attacks +SHADOWDARK.sheet.player.name.label: Name +SHADOWDARK.sheet.player.ranged_attacks: Ranged Attacks +SHADOWDARK.sheet.player.spells_from_items: Spells From Items +SHADOWDARK.sheet.player.spells_tier: Tier +SHADOWDARK.sheet.player.spells: Spells +SHADOWDARK.sheet.player.tab.abilities: Abilities +SHADOWDARK.sheet.player.tab.details: Details +SHADOWDARK.sheet.player.tab.inventory: Inventory +SHADOWDARK.sheet.player.tab.notes: Notes +SHADOWDARK.sheet.player.tab.spells: Spells +SHADOWDARK.sheet.player.tab.talents: Talents +SHADOWDARK.sheet.player.talents_level: Level +SHADOWDARK.sheet.player.talents_name: Name +SHADOWDARK.sheet.player.talents: Talents +SHADOWDARK.sheet.player.title: Title +SHADOWDARK.sheet.player.toggle_ability_lost: Toggle Ability Lost +SHADOWDARK.sheet.player.toggle_edit_hp: Toggle Edit HP +SHADOWDARK.sheet.player.toggle_edit_stats: Toggle Edit Stats +SHADOWDARK.sheet.player.toggle_spell_lost: Toggle Spell Lost +SHADOWDARK.sheet.player.tooltip.cast_spell: Cast Spell +SHADOWDARK.sheet.player.tooltip.learn_spell: Learn Spell +SHADOWDARK.sheet.player.tooltip.use_class_ability: Use Class Ability +SHADOWDARK.sheet.player.tooltip.use_potion: Use Potion +SHADOWDARK.sheet.player.tooltip.use_scroll: Use Scroll +SHADOWDARK.sheet.player.tooltip.use_wand: Use Wand +SHADOWDARK.sheet.player.xp: XP +SHADOWDARK.source.bard-and-ranger: "Shadowdark RPG: Bard and Ranger" +SHADOWDARK.source.core-rules: "Shadowdark RPG: Core Rules" +SHADOWDARK.source.cursed-scroll-1: Cursed Scroll Vol.1, Diablerie! +SHADOWDARK.source.cursed-scroll-2: Cursed Scroll Vol.2, Red Sands +SHADOWDARK.source.cursed-scroll-3: Cursed Scroll Vol.3, Midnight Sun +SHADOWDARK.source.quickstart: "Shadowdark RPG: Quickstart Set" +SHADOWDARK.spell_caster.priest: Priest +SHADOWDARK.spell_caster.wizard: Wizard +SHADOWDARK.spell_duration.days: Days +SHADOWDARK.spell_duration.focus: Focus +SHADOWDARK.spell_duration.instant: Instant +SHADOWDARK.spell_duration.permanent: Permanent +SHADOWDARK.spell_duration.real_time: Real Time +SHADOWDARK.spell_duration.rounds: Rounds +SHADOWDARK.spell_duration.turns: Turns +SHADOWDARK.spell_range.close: Close +SHADOWDARK.spell_range.far: Far +SHADOWDARK.spell_range.near: Near +SHADOWDARK.spell.classes.label: Caster Classes +SHADOWDARK.spell.classes.prompt: Select Class... +SHADOWDARK.talent.backstab: Backstab +SHADOWDARK.talent.class.ancestry: Ancestry +SHADOWDARK.talent.class.class: Class +SHADOWDARK.talent.class.level: Level +SHADOWDARK.talent.type.ability_improvement: Ability Improvement +SHADOWDARK.talent.type.advantage.hp: HP Roll Advantage +SHADOWDARK.talent.type.advantage.initiative: Initiative Advantage +SHADOWDARK.talent.type.advantage.spell: Spellcasting Advantage +SHADOWDARK.talent.type.advantage.title: Advantage Bonus +SHADOWDARK.talent.type.armor_bonus: Armor AC Bonus +SHADOWDARK.talent.type.armor_mastery: Armor Mastery +SHADOWDARK.talent.type.backstab_die: Extra Backstab Die +SHADOWDARK.talent.type.custom: Custom Talent +SHADOWDARK.talent.type.melee_attack_bonus: Melee Attack Roll Bonus +SHADOWDARK.talent.type.melee_damage_bonus: Melee Damage Roll Bonus +SHADOWDARK.talent.type.ranged_attack_bonus: Ranged Attack Roll Bonus +SHADOWDARK.talent.type.ranged_damage_bonus: Ranged Damage Roll Bonus +SHADOWDARK.talent.type.spell_bonus: Spellcasting Bonus +SHADOWDARK.talent.type.title: Talent Type(s) +SHADOWDARK.talent.type.weapon_mastery: Weapon Mastery +SHADOWDARK.tours.lightsource.notification.not_enabled: You need to enable the Lightsource Tracker in settings to be able to run the Tour +SHADOWDARK.weapon.properties.finesse: Finesse +SHADOWDARK.weapon.properties.loading: Loading +SHADOWDARK.weapon.properties.thrown: Thrown +SHADOWDARK.weapon.properties.two_handed: Two-Handed +SHADOWDARK.weapon.properties.versatile: Versatile +SHADOWDARK.weapon.type.melee: Melee +SHADOWDARK.weapon.type.ranged: Ranged From 3315f874523e16fb4239d9eeddc16b5d0d75d76c Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 12 Oct 2024 02:38:03 +0100 Subject: [PATCH 005/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 138 +++++++++++++++++++++++++-------------------------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index 31a51034..7f6b2244 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -1,20 +1,20 @@ -SHADOWDARK.ability_cha: Cha -SHADOWDARK.ability_charisma: Charisma -SHADOWDARK.ability_con: Con -SHADOWDARK.ability_constitution: Constitution -SHADOWDARK.ability_dex: Dex -SHADOWDARK.ability_dexterity: Dexterity -SHADOWDARK.ability_int: Int -SHADOWDARK.ability_intelligence: Intelligence -SHADOWDARK.ability_str: Str -SHADOWDARK.ability_strength: Strength -SHADOWDARK.ability_wis: Wis -SHADOWDARK.ability_wisdom: Wisdom -SHADOWDARK.alignment.chaotic: Chaotic -SHADOWDARK.alignment.lawful: Lawful -SHADOWDARK.alignment.neutral: Neutral +SHADOWDARK.ability_cha: Хар +SHADOWDARK.ability_charisma: Харизма +SHADOWDARK.ability_con: Тел +SHADOWDARK.ability_constitution: Телосложение +SHADOWDARK.ability_dex: Лов +SHADOWDARK.ability_dexterity: Ловкость +SHADOWDARK.ability_int: Инт +SHADOWDARK.ability_intelligence: Интеллект +SHADOWDARK.ability_str: Сил +SHADOWDARK.ability_strength: Сила +SHADOWDARK.ability_wis: Муд +SHADOWDARK.ability_wisdom: Мудрость +SHADOWDARK.alignment.chaotic: Хаотичный +SHADOWDARK.alignment.lawful: Законопослушный +SHADOWDARK.alignment.neutral: Нейтральный SHADOWDARK.ancestry.choice_count: Choice Count -SHADOWDARK.ancestry.choice: Choice +SHADOWDARK.ancestry.choice: Выбор SHADOWDARK.ancestry.fixed: Fixed SHADOWDARK.ancestry.languages.label: Ancestry Languages SHADOWDARK.ancestry.languages.prompt: Select Language... @@ -25,14 +25,14 @@ SHADOWDARK.ancestry.nametable.tooltip.weight: Affects the chance of rolling when SHADOWDARK.ancestry.talents.label: Ancestry Talents SHADOWDARK.ancestry.talents.prompt: Select Talent... SHADOWDARK.app.active_effects.title: Active Effects -SHADOWDARK.app.gem_bag.sell_all: Sell All Gems +SHADOWDARK.app.gem_bag.sell_all: Продать все Самоцветы SHADOWDARK.app.gem_bag.title: Gem Bag -SHADOWDARK.app.gem_bag.tooltip.sell_gem: Sell Gem +SHADOWDARK.app.gem_bag.tooltip.sell_gem: Продать Самоцвет SHADOWDARK.app.gem_bag.total_value: Total Value SHADOWDARK.app.item_properties.armor.title: Armor Properties -SHADOWDARK.app.item_properties.languages.title: Languages +SHADOWDARK.app.item_properties.languages.title: Языки SHADOWDARK.app.item_properties.magic_item.effects.title: Magic Item Effects -SHADOWDARK.app.item_properties.save: Save +SHADOWDARK.app.item_properties.save: Сохранить SHADOWDARK.app.item_properties.talent.effects.title: Talent Effect Types SHADOWDARK.app.item_properties.title: Properties SHADOWDARK.app.item_properties.weapon.title: Weapon Properties @@ -50,34 +50,34 @@ SHADOWDARK.apps.character-generator.create_character: Create Character SHADOWDARK.apps.character-generator.error.create: Failed to create player character {error} SHADOWDARK.apps.character-generator.error.name: Character name cannot be blank SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: Unable to roll a random name without a selected Ancestry -SHADOWDARK.apps.character-generator.gear: Gear -SHADOWDARK.apps.character-generator.gold: Gold -SHADOWDARK.apps.character-generator.name: Character Name -SHADOWDARK.apps.character-generator.success: Character created -SHADOWDARK.apps.character-generator.title: Character Generator -SHADOWDARK.apps.character-generator.tooltip: Fully Random Character -SHADOWDARK.apps.character-generator.type: Type -SHADOWDARK.apps.character-generator.update_character: Update Character -SHADOWDARK.apps.effect_panel.dialog.delete_effect.content: Do you want to delete the {effectName} effect? -SHADOWDARK.apps.effect_panel.dialog.delete_effect.title: Delete Effect? -SHADOWDARK.apps.effect_panel.duration_label.expired: Expired -SHADOWDARK.apps.effect_panel.duration_label.one_day: 1 Day Remaining -SHADOWDARK.apps.effect_panel.duration_label.one_hour: 1 Hour Remaining -SHADOWDARK.apps.effect_panel.duration_label.one_minute: 1 Minute Remaining +SHADOWDARK.apps.character-generator.gear: Снаряжение +SHADOWDARK.apps.character-generator.gold: Золото +SHADOWDARK.apps.character-generator.name: Имя персонажа +SHADOWDARK.apps.character-generator.success: Персонаж создан +SHADOWDARK.apps.character-generator.title: Генератор персонажа +SHADOWDARK.apps.character-generator.tooltip: Полностью случайный персонаж +SHADOWDARK.apps.character-generator.type: Тип +SHADOWDARK.apps.character-generator.update_character: Обновить персонажа +SHADOWDARK.apps.effect_panel.dialog.delete_effect.content: Вы хотите удалить эффект {effectName}? +SHADOWDARK.apps.effect_panel.dialog.delete_effect.title: Удалить эффект? +SHADOWDARK.apps.effect_panel.duration_label.expired: Истёк +SHADOWDARK.apps.effect_panel.duration_label.one_day: Остался 1 день +SHADOWDARK.apps.effect_panel.duration_label.one_hour: Осталось 1 час +SHADOWDARK.apps.effect_panel.duration_label.one_minute: Осталось 1 минута SHADOWDARK.apps.effect_panel.duration_label.one_round: 1 Round Remaining -SHADOWDARK.apps.effect_panel.duration_label.one_second: 1 Second Remaining -SHADOWDARK.apps.effect_panel.duration_label.one_week: 1 Week Remaining -SHADOWDARK.apps.effect_panel.duration_label.one_year: 1 Year Remaining -SHADOWDARK.apps.effect_panel.duration_label.unlimited: Unlimited Duration -SHADOWDARK.apps.effect_panel.duration_label.x_days: "{days} Days Remaining" -SHADOWDARK.apps.effect_panel.duration_label.x_hours: "{hours} Hours Remaining" -SHADOWDARK.apps.effect_panel.duration_label.x_minutes: "{minutes} Minutes Remaining" -SHADOWDARK.apps.effect_panel.duration_label.x_rounds: "{rounds} Rounds Remaining" -SHADOWDARK.apps.effect_panel.duration_label.x_seconds: "{seconds} Seconds Remaining" -SHADOWDARK.apps.effect_panel.duration_label.x_weeks: "{weeks} Weeks Remaining" -SHADOWDARK.apps.effect_panel.duration_label.x_years: "{years} Years Remaining" -SHADOWDARK.apps.effect_panel.right_click_to_remove: "[Right click] Remove effect" -SHADOWDARK.apps.item-importer.import_button: Import Item +SHADOWDARK.apps.effect_panel.duration_label.one_second: Осталось 1 секунда +SHADOWDARK.apps.effect_panel.duration_label.one_week: Осталась 1 неделя +SHADOWDARK.apps.effect_panel.duration_label.one_year: Остался 1 год +SHADOWDARK.apps.effect_panel.duration_label.unlimited: Неограниченная длительность +SHADOWDARK.apps.effect_panel.duration_label.x_days: "{days} дней осталось" +SHADOWDARK.apps.effect_panel.duration_label.x_hours: "{hours} часов осталось" +SHADOWDARK.apps.effect_panel.duration_label.x_minutes: "{minutes} минут осталось " +SHADOWDARK.apps.effect_panel.duration_label.x_rounds: "Осталось раундов {rounds}" +SHADOWDARK.apps.effect_panel.duration_label.x_seconds: "{seconds} секунд осталось" +SHADOWDARK.apps.effect_panel.duration_label.x_weeks: " {weeks} недель осталось" +SHADOWDARK.apps.effect_panel.duration_label.x_years: "{years} лет осталось" +SHADOWDARK.apps.effect_panel.right_click_to_remove: "[Правый клик] Удалить эффект" +SHADOWDARK.apps.item-importer.import_button: Импорт элемента SHADOWDARK.apps.item-importer.instruction1: 1. Copy item text from source material. SHADOWDARK.apps.item-importer.instruction2a: 2. Paste text into this box following the item format shown in the core rules. SHADOWDARK.apps.item-importer.instruction2b: Item Name @@ -141,39 +141,39 @@ SHADOWDARK.boon.type.label: Boon Type SHADOWDARK.boons.blessing: Blessing SHADOWDARK.boons.oath: Oath SHADOWDARK.boons.secret: Secret -SHADOWDARK.chat_card.button.attack: Roll Attack -SHADOWDARK.chat_card.button.cast_spell: Cast Spell -SHADOWDARK.chat_card.button.learn_spell: Learn Spell -SHADOWDARK.chat_card.button.use_potion: Use Potion -SHADOWDARK.chat_card.button.use_scroll: Use Scroll +SHADOWDARK.chat_card.button.attack: Атака Ролла +SHADOWDARK.chat_card.button.cast_spell: Сотворить заклинание +SHADOWDARK.chat_card.button.learn_spell: Выучить заклинание +SHADOWDARK.chat_card.button.use_potion: Использовать зелье +SHADOWDARK.chat_card.button.use_scroll: Использовать свиток SHADOWDARK.chat_card.button.use_wand: Use Wand SHADOWDARK.chat_card.context.apply_damage_secondary: Apply Secondary Damage -SHADOWDARK.chat_card.context.apply_damage: Apply Damage -SHADOWDARK.chat_card.context.apply_healing_secondary: Apply Secondary Healing -SHADOWDARK.chat_card.context.apply_healing: Apply Healing +SHADOWDARK.chat_card.context.apply_damage: Применить урон +SHADOWDARK.chat_card.context.apply_healing_secondary: Применить вторичное лечение +SHADOWDARK.chat_card.context.apply_healing: Применить лечение SHADOWDARK.chat.clockwise_initiative: Since {name} rolled highest, they will go first, and all other combatants will follow in a fixed order. -SHADOWDARK.chat.hp_roll.apply_to_max: Add to Max HP +SHADOWDARK.chat.hp_roll.apply_to_max: Добавить к Макс. HP SHADOWDARK.chat.item_roll.double_numerical: Double any one numerical value! SHADOWDARK.chat.item_roll.mishap: Roll on the appropriate Mishap table! SHADOWDARK.chat.item_roll.title: Attack roll with {name} SHADOWDARK.chat.item_roll.wand_mishap: The wand breaks and permanently ceases to work SHADOWDARK.chat.light_source.expired: "{name}'s {lightSource} expired" -SHADOWDARK.chat.light_source.remaining: minutes remaining -SHADOWDARK.chat.light_source.seconds_remaining: Less than 1 Minute Remaining -SHADOWDARK.chat.light_source.source.all: All light sources went out -SHADOWDARK.chat.light_source.source.dropped: was dropped -SHADOWDARK.chat.light_source.source.picked_up: was picked up -SHADOWDARK.chat.light_source.source.toggle.off: was doused -SHADOWDARK.chat.light_source.source.toggle.on: was lit +SHADOWDARK.chat.light_source.remaining: осталось минут +SHADOWDARK.chat.light_source.seconds_remaining: Осталось менее 1 минуты +SHADOWDARK.chat.light_source.source.all: Все источники света закончились +SHADOWDARK.chat.light_source.source.dropped: был выброшен +SHADOWDARK.chat.light_source.source.picked_up: был подобран +SHADOWDARK.chat.light_source.source.toggle.off: был потушен +SHADOWDARK.chat.light_source.source.toggle.on: зажжён SHADOWDARK.chat.light_source.went_out: "{name}'s {lightSource} went out" -SHADOWDARK.chat.potion_used: "{name} used a Potion" -SHADOWDARK.chat.spell_learn.failure: "{name} failed to learn anything from the scroll" -SHADOWDARK.chat.spell_learn.success: "{name} successfully learnt the {spellName} spell" -SHADOWDARK.chat.spell_learn.title: Learning Spell +SHADOWDARK.chat.potion_used: "{name} использовал зелье" +SHADOWDARK.chat.spell_learn.failure: "{name} ничего не удалось выучить из свитка" +SHADOWDARK.chat.spell_learn.success: "{name} успешно изучил заклинание {spellName}" +SHADOWDARK.chat.spell_learn.title: Изучение заклинания SHADOWDARK.chat.spell_roll.title: "{name}, DC {spellDC}" SHADOWDARK.chat.use_ability.failure: "{name} failed to used the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} successfully used the {ability} ability" -SHADOWDARK.chat.use_ability.title: "Using Ability" +SHADOWDARK.chat.use_ability.title: "Использование способности" SHADOWDARK.chat.welcome_message.issues: Report Issues SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." @@ -185,7 +185,7 @@ SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial SHADOWDARK.chatcard.default: Roll SHADOWDARK.class-ability.ability.check: Ability Check -SHADOWDARK.class-ability.ability.label: Ability +SHADOWDARK.class-ability.ability.label: SHADOWDARK.class-ability.available.label: Available SHADOWDARK.class-ability.dc.label: DC SHADOWDARK.class-ability.group.label: Ability Group From cec54ba7c9d47a23132684b0861607afcd428cb5 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 12 Oct 2024 04:01:31 +0100 Subject: [PATCH 006/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 182 +++++++++++++++++++++++++-------------------------- 1 file changed, 91 insertions(+), 91 deletions(-) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index 7f6b2244..091a01dd 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -36,19 +36,19 @@ SHADOWDARK.app.item_properties.save: Сохранить SHADOWDARK.app.item_properties.talent.effects.title: Talent Effect Types SHADOWDARK.app.item_properties.title: Properties SHADOWDARK.app.item_properties.weapon.title: Weapon Properties -SHADOWDARK.app.light_tracker.minute_short: min -SHADOWDARK.app.light_tracker.minutes_short: mins +SHADOWDARK.app.light_tracker.minute_short: мин +SHADOWDARK.app.light_tracker.minutes_short: минуты SHADOWDARK.app.light_tracker.title: Light Tracker SHADOWDARK.app.light-tracker.douse-light: Douse Light SHADOWDARK.app.light-tracker.hide-inactive: Hide Actors Without Lights SHADOWDARK.app.light-tracker.show-all-actors: Show All Actors SHADOWDARK.app.light-tracker.turn-out-the-lights: Turn Out the Lights SHADOWDARK.app.loading.body: Searching Distant Lands... -SHADOWDARK.app.loading.title: Loading +SHADOWDARK.app.loading.title: Загрузка SHADOWDARK.app.npc_attack_ranges.title: Attack Ranges -SHADOWDARK.apps.character-generator.create_character: Create Character -SHADOWDARK.apps.character-generator.error.create: Failed to create player character {error} -SHADOWDARK.apps.character-generator.error.name: Character name cannot be blank +SHADOWDARK.apps.character-generator.create_character: Создать персонажа +SHADOWDARK.apps.character-generator.error.create: Не удалось создать персонажа {error} +SHADOWDARK.apps.character-generator.error.name: Имя персонажа не может быть пустым SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: Unable to roll a random name without a selected Ancestry SHADOWDARK.apps.character-generator.gear: Снаряжение SHADOWDARK.apps.character-generator.gold: Золото @@ -80,74 +80,74 @@ SHADOWDARK.apps.effect_panel.right_click_to_remove: "[Правый клик] У SHADOWDARK.apps.item-importer.import_button: Импорт элемента SHADOWDARK.apps.item-importer.instruction1: 1. Copy item text from source material. SHADOWDARK.apps.item-importer.instruction2a: 2. Paste text into this box following the item format shown in the core rules. -SHADOWDARK.apps.item-importer.instruction2b: Item Name -SHADOWDARK.apps.item-importer.instruction2c: Flavor text +SHADOWDARK.apps.item-importer.instruction2b: Имя предмета +SHADOWDARK.apps.item-importer.instruction2c: Подпись SHADOWDARK.apps.item-importer.instruction2d: Features SHADOWDARK.apps.item-importer.instruction3: 3. Click Import Item. -SHADOWDARK.apps.item-importer.title: Import Item -SHADOWDARK.apps.level-up.dragdrop: Drag and Drop Here -SHADOWDARK.apps.level-up.hit_points: Hit Points -SHADOWDARK.apps.level-up.level_up: Level Up! -SHADOWDARK.apps.level-up.leveling_to: Leveling up to level +SHADOWDARK.apps.item-importer.title: Импорт элемента +SHADOWDARK.apps.level-up.dragdrop: Перетащите сюда +SHADOWDARK.apps.level-up.hit_points: Пункты здоровья +SHADOWDARK.apps.level-up.level_up: Повышение уровня! +SHADOWDARK.apps.level-up.leveling_to: Повышение до уровня SHADOWDARK.apps.level-up.missing_selections: Missing Selections SHADOWDARK.apps.level-up.notalent: No talents gained at this level SHADOWDARK.apps.level-up.prompt: Not all required selections have been made. Continue with level up anyways? SHADOWDARK.apps.level-up.roll_talent: Roll Talent -SHADOWDARK.apps.level-up.title: Leveling Up +SHADOWDARK.apps.level-up.title: Повышение уровня SHADOWDARK.apps.monster-importer.import_button: Import Monster SHADOWDARK.apps.monster-importer.instruction1: 1. Copy monster text from source material. SHADOWDARK.apps.monster-importer.instruction2a: 2. Paste text into the text box following the monster format shown in the core rules. Add a blank line between each ability. -SHADOWDARK.apps.monster-importer.instruction2b: Monster Name +SHADOWDARK.apps.monster-importer.instruction2b: Название монстра SHADOWDARK.apps.monster-importer.instruction2c: Flavor text SHADOWDARK.apps.monster-importer.instruction2d: Main stat block SHADOWDARK.apps.monster-importer.instruction2e: Feature SHADOWDARK.apps.monster-importer.instruction3: 3. Click Import Monster. SHADOWDARK.apps.monster-importer.title: Import Monster SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found -SHADOWDARK.apps.shadowdarkling-importer.import_button: Import +SHADOWDARK.apps.shadowdarkling-importer.import_button: Импорт SHADOWDARK.apps.shadowdarkling-importer.import_button2: Partially Import SHADOWDARK.apps.shadowdarkling-importer.instruction1: 1. Visit Shadowdarklings.net. SHADOWDARK.apps.shadowdarkling-importer.instruction2: 2. Create Character > Export > copy JSON to clipboard. SHADOWDARK.apps.shadowdarkling-importer.instruction3: Paste Character JSON Here SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.title: Import Shadowdarkling -SHADOWDARK.apps.spell-book.known: Known +SHADOWDARK.apps.spell-book.known: Известные SHADOWDARK.apps.spell-book.title: Class Spell List -SHADOWDARK.apps.spell-importer.import_button: Import Spell +SHADOWDARK.apps.spell-importer.import_button: Импорт заклинания SHADOWDARK.apps.spell-importer.instruction1: 1. Copy spell text from source material. SHADOWDARK.apps.spell-importer.instruction2a: 2. Paste text into this box following the spell format shown in the core rules. -SHADOWDARK.apps.spell-importer.instruction2b: Spell Name +SHADOWDARK.apps.spell-importer.instruction2b: Название заклинания SHADOWDARK.apps.spell-importer.instruction2c: Tier and class -SHADOWDARK.apps.spell-importer.instruction2d: Duration -SHADOWDARK.apps.spell-importer.instruction2e: Range -SHADOWDARK.apps.spell-importer.instruction2f: Description +SHADOWDARK.apps.spell-importer.instruction2d: Продолжительность +SHADOWDARK.apps.spell-importer.instruction2e: Дальность +SHADOWDARK.apps.spell-importer.instruction2f: Описание SHADOWDARK.apps.spell-importer.instruction3: 3. Click Import Spell. -SHADOWDARK.apps.spell-importer.title: Import Spell -SHADOWDARK.apps.solodark.button1: Unlikely or Impossible +SHADOWDARK.apps.spell-importer.title: Импорт заклинания +SHADOWDARK.apps.solodark.button1: Маловероятно или невозможно SHADOWDARK.apps.solodark.button2: Even Chance SHADOWDARK.apps.solodark.button3: Likely or Certain SHADOWDARK.apps.solodark.oracle: The Oracle SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" -SHADOWDARK.apps.solodark.question1: What is the question? -SHADOWDARK.apps.solodark.question2: How likely is a "yes" result? +SHADOWDARK.apps.solodark.question1: Какой вопрос? +SHADOWDARK.apps.solodark.question2: Насколько вероятно, что результат "да"? SHADOWDARK.apps.solodark.roll_prompt: Roll Prompt SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.armor.properties.disadvantage_stealth: Disadvantage/Stealth SHADOWDARK.armor.properties.disadvantage_swimming: Disadvantage/Swim SHADOWDARK.armor.properties.no_swimming: No Swim SHADOWDARK.armor.properties.one_handed: Occupies One Hand -SHADOWDARK.armor.properties.shield: Shield +SHADOWDARK.armor.properties.shield: Щит SHADOWDARK.boon.type.label: Boon Type -SHADOWDARK.boons.blessing: Blessing -SHADOWDARK.boons.oath: Oath -SHADOWDARK.boons.secret: Secret +SHADOWDARK.boons.blessing: Благословение +SHADOWDARK.boons.oath: Клятва +SHADOWDARK.boons.secret: Секрет SHADOWDARK.chat_card.button.attack: Атака Ролла SHADOWDARK.chat_card.button.cast_spell: Сотворить заклинание SHADOWDARK.chat_card.button.learn_spell: Выучить заклинание SHADOWDARK.chat_card.button.use_potion: Использовать зелье SHADOWDARK.chat_card.button.use_scroll: Использовать свиток SHADOWDARK.chat_card.button.use_wand: Use Wand -SHADOWDARK.chat_card.context.apply_damage_secondary: Apply Secondary Damage +SHADOWDARK.chat_card.context.apply_damage_secondary: Применить дополнительный урон SHADOWDARK.chat_card.context.apply_damage: Применить урон SHADOWDARK.chat_card.context.apply_healing_secondary: Применить вторичное лечение SHADOWDARK.chat_card.context.apply_healing: Применить лечение @@ -184,30 +184,30 @@ SHADOWDARK.chat.welcome_message.title: Shadowdark RPG for Foundry SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are some resources to get you started. SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial SHADOWDARK.chatcard.default: Roll -SHADOWDARK.class-ability.ability.check: Ability Check +SHADOWDARK.class-ability.ability.check: Проверка способности SHADOWDARK.class-ability.ability.label: -SHADOWDARK.class-ability.available.label: Available +SHADOWDARK.class-ability.available.label: Доступно SHADOWDARK.class-ability.dc.label: DC -SHADOWDARK.class-ability.group.label: Ability Group +SHADOWDARK.class-ability.group.label: Группа умений SHADOWDARK.class-ability.limited-uses.label: Limited Uses? SHADOWDARK.class-ability.lose_on_failure.label: Lose on Failure? SHADOWDARK.class-ability.lost.label: Lost -SHADOWDARK.class-ability.maximum.label: Maximum -SHADOWDARK.class-ability.options: Options -SHADOWDARK.class.armor.all.label: All Armor -SHADOWDARK.class.armor.label: Armor -SHADOWDARK.class.armor.prompt: Select Armor... +SHADOWDARK.class-ability.maximum.label: Максимум +SHADOWDARK.class-ability.options: Настройки +SHADOWDARK.class.armor.all.label: Вся броня +SHADOWDARK.class.armor.label: Броня +SHADOWDARK.class.armor.prompt: Выберите броню... SHADOWDARK.class.choice_count: Choice Count -SHADOWDARK.class.choice: Choice -SHADOWDARK.class.fighter: Fighter +SHADOWDARK.class.choice: Выбор +SHADOWDARK.class.fighter: Боец SHADOWDARK.class.fixed: Fixed SHADOWDARK.class.hit_points.label: HP Die Roll SHADOWDARK.class.language_choices.count.label: Choice Count SHADOWDARK.class.language_choices.label: Language Choices SHADOWDARK.class.language_choices.prompt: Select Language... SHADOWDARK.class.languages.label: Class Languages -SHADOWDARK.class.priest: Priest -SHADOWDARK.class.ranger: Ranger +SHADOWDARK.class.priest: Жрец +SHADOWDARK.class.ranger: Рейнджер SHADOWDARK.class.spellcasting_ability.label: Spellcasting Ability SHADOWDARK.class.spellcasting_class.label: Spell Class SHADOWDARK.class.spellcasting.base_difficulty.label: Spellcasting Base DC @@ -215,18 +215,18 @@ SHADOWDARK.class.talent_choices.count.label: Choice Count SHADOWDARK.class.talent_choices.label: Talent Choices SHADOWDARK.class.talent_choices.prompt: Select Talent... SHADOWDARK.class.talents_table.label: Class Talents Table -SHADOWDARK.class.talents.label: Talents -SHADOWDARK.class.talents.prompt: Select Talent... -SHADOWDARK.class.thief: Thief +SHADOWDARK.class.talents.label: Таланты +SHADOWDARK.class.talents.prompt: Выберите талант... +SHADOWDARK.class.thief: Вор SHADOWDARK.class.titles.levels.from.label: From -SHADOWDARK.class.titles.levels.label: Levels -SHADOWDARK.class.titles.levels.to.label: To -SHADOWDARK.class.weapons.all_melee.label: All Melee Weapons -SHADOWDARK.class.weapons.all_ranged.label: All Ranged Weapons -SHADOWDARK.class.weapons.all.label: All Weapons -SHADOWDARK.class.weapons.label: Weapons -SHADOWDARK.class.weapons.prompt: Select Weapon... -SHADOWDARK.class.wizard: Wizard +SHADOWDARK.class.titles.levels.label: Уровни +SHADOWDARK.class.titles.levels.to.label: Кому +SHADOWDARK.class.weapons.all_melee.label: Все виды оружия ближнего боя +SHADOWDARK.class.weapons.all_ranged.label: Все виды оружия дальнего боя +SHADOWDARK.class.weapons.all.label: Всё оружие +SHADOWDARK.class.weapons.label: Оружие +SHADOWDARK.class.weapons.prompt: Выберите оружие... +SHADOWDARK.class.wizard: Волшебник SHADOWDARK.coins.cp: CP SHADOWDARK.coins.gp: GP SHADOWDARK.coins.sp: SP @@ -241,23 +241,23 @@ SHADOWDARK.dialog.ability_check.title: Ability Check SHADOWDARK.dialog.ability_check.wis: Wisdom Check SHADOWDARK.dialog.create_custom_item: Create Custom Item SHADOWDARK.dialog.create_treasure: Create Treasure -SHADOWDARK.dialog.create: Create -SHADOWDARK.dialog.edit_hp.title: Edit HP +SHADOWDARK.dialog.create: Создать +SHADOWDARK.dialog.edit_hp.title: Изменить HP SHADOWDARK.dialog.edit_stats.title: Edit Stats -SHADOWDARK.dialog.effect.choice.armor: Choose Armor Type -SHADOWDARK.dialog.effect.choice.attribute: Choose Attribute +SHADOWDARK.dialog.effect.choice.armor: Выберите тип брони +SHADOWDARK.dialog.effect.choice.attribute: Выберите атрибут SHADOWDARK.dialog.effect.choice.damage_die: Choose Damage Die SHADOWDARK.dialog.effect.choice.lightsource: Choose Light Source -SHADOWDARK.dialog.effect.choice.property: Choose Property -SHADOWDARK.dialog.effect.choice.spell: Choose Spell +SHADOWDARK.dialog.effect.choice.property: Выберите свойство +SHADOWDARK.dialog.effect.choice.spell: Выбрать заклинание SHADOWDARK.dialog.effect.choice.weapon_property: Choose Weapon Property -SHADOWDARK.dialog.effect.choice.weapon: Choose Weapon Type +SHADOWDARK.dialog.effect.choice.weapon: Выберите тип оружия SHADOWDARK.dialog.effect.choices.title: Effect Parameters -SHADOWDARK.dialog.general.are_you_sure: Are you sure? -SHADOWDARK.dialog.general.cancel: Cancel -SHADOWDARK.dialog.general.no: "No" -SHADOWDARK.dialog.general.select: Select -SHADOWDARK.dialog.general.yes: "Yes" +SHADOWDARK.dialog.general.are_you_sure: Вы уверены? +SHADOWDARK.dialog.general.cancel: Отменить +SHADOWDARK.dialog.general.no: "Нет" +SHADOWDARK.dialog.general.select: Выбрать +SHADOWDARK.dialog.general.yes: "Да" SHADOWDARK.dialog.gm: Gamemaster SHADOWDARK.dialog.hp_roll.per_level: Roll HP for level {level} SHADOWDARK.dialog.hp_roll.previous_hp: "HP before rolling: {hp}" @@ -266,26 +266,26 @@ SHADOWDARK.dialog.hp_roll.roll_per_level: Rolled {hp} hp for level {level} SHADOWDARK.dialog.hp_roll.sum_total: For a new max HP of {total} hp SHADOWDARK.dialog.hp_roll.summary: HP Rolling Summary SHADOWDARK.dialog.hp_roll.title: HP Roll -SHADOWDARK.dialog.item_roll.ability_bonus: Ability Bonus +SHADOWDARK.dialog.item_roll.ability_bonus: Бонус умения SHADOWDARK.dialog.item_roll.item_bonus: Item Bonus -SHADOWDARK.dialog.item_roll.talent_bonus: Talent Bonus +SHADOWDARK.dialog.item_roll.talent_bonus: Бонус таланта SHADOWDARK.dialog.item_roll.title: Roll Attack with SHADOWDARK.dialog.item_selector.default_title: Choose Items SHADOWDARK.dialog.item_selector.error.max_choices_exceeded: You can only select a maximum of {maxChoices} of this Item type. SHADOWDARK.dialog.item_selector.error.no_items_found: Unable to find items of the correct type in the available compendiums. -SHADOWDARK.dialog.item_selector.select_item.prompt: Select Item... -SHADOWDARK.dialog.item.confirm_delete: Confirm Deletion -SHADOWDARK.dialog.item.confirm_sale: Confirm Sale -SHADOWDARK.dialog.item.create_from_spell: Create Item from {spellName} -SHADOWDARK.dialog.item.delete: Delete -SHADOWDARK.dialog.item.sell_all: Sell All -SHADOWDARK.dialog.item.sell: Sell -SHADOWDARK.dialog.item.use: Use +SHADOWDARK.dialog.item_selector.select_item.prompt: Выберите предмет... +SHADOWDARK.dialog.item.confirm_delete: Подтвердить удаление +SHADOWDARK.dialog.item.confirm_sale: Подтвердить продажу +SHADOWDARK.dialog.item.create_from_spell: Создать предмет из {spellName} +SHADOWDARK.dialog.item.delete: Удалить +SHADOWDARK.dialog.item.sell_all: Продать все +SHADOWDARK.dialog.item.sell: Продать +SHADOWDARK.dialog.item.use: Использовать SHADOWDARK.dialog.light_source.pick_up.title: Select actor to give lightsource SHADOWDARK.dialog.roll_mode_label: Rolling mode SHADOWDARK.dialog.roll: Roll SHADOWDARK.dialog.scroll.learn_spell_class_warning: "WARNING: This spell is not of the same class as the character, are you sure you wish to try and learn it?" -SHADOWDARK.dialog.scroll.wrong_class_confirm: Confirm Learn Spell +SHADOWDARK.dialog.scroll.wrong_class_confirm: Подтвердить обучение заклинанию SHADOWDARK.dialog.select_ancestry.prompt: Select Ancestry... SHADOWDARK.dialog.select_ancestry.title: Choose Ancestry SHADOWDARK.dialog.select_armor_property.prompt: Select Armor Property... @@ -301,22 +301,22 @@ SHADOWDARK.dialog.select_languages.title: Choose Languages SHADOWDARK.dialog.select_weapon_property.prompt: Select Weapon Property... SHADOWDARK.dialog.select_weapon_property.title: Choose Weapon Properties SHADOWDARK.dialog.spell_roll.title: Cast Spell with -SHADOWDARK.dialog.submit: Submit +SHADOWDARK.dialog.submit: Продолжить SHADOWDARK.dialog.tooltip.talent_advantage: A talent is giving you advantage to this roll SHADOWDARK.dialog.type_here: Type Here -SHADOWDARK.dragdrop: Drag and Drop Here -SHADOWDARK.effect_duration.hours: Hours -SHADOWDARK.effect_duration.minutes: Minutes -SHADOWDARK.effect_duration.seconds: Seconds -SHADOWDARK.effect_duration.turns: Turns -SHADOWDARK.effect_duration.unlimited: Unlimited -SHADOWDARK.effect.custom: Custom Effects -SHADOWDARK.effect.footer.add_custom: Add Custom Effect -SHADOWDARK.effect.header.changes: Changes -SHADOWDARK.effect.header.delete: Delete -SHADOWDARK.effect.header.edit: Edit -SHADOWDARK.effect.header.name: Name -SHADOWDARK.effect.header.options: Options +SHADOWDARK.dragdrop: Перетащите сюда +SHADOWDARK.effect_duration.hours: Часы +SHADOWDARK.effect_duration.minutes: Минуты +SHADOWDARK.effect_duration.seconds: Секунды +SHADOWDARK.effect_duration.turns: Ходы +SHADOWDARK.effect_duration.unlimited: Неограниченно +SHADOWDARK.effect.custom: Пользовательские эффекты +SHADOWDARK.effect.footer.add_custom: Добавить пользовательский эффект +SHADOWDARK.effect.header.changes: Изменения +SHADOWDARK.effect.header.delete: Удалить +SHADOWDARK.effect.header.edit: Редактировать +SHADOWDARK.effect.header.name: Название +SHADOWDARK.effect.header.options: Опции SHADOWDARK.effect.header.toggle_active: Toggle Active SHADOWDARK.effect.header.transfer: Transfer SHADOWDARK.effect.item: Item Effects From 833e9dcc248b59a29309a8a22cf33275d8b9f78b Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 12 Oct 2024 12:30:08 +0100 Subject: [PATCH 007/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index 091a01dd..b2a67202 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -22,28 +22,28 @@ SHADOWDARK.ancestry.nametable.label: Random Name Table SHADOWDARK.ancestry.nametable.placeholder: Drag Roll Table Here SHADOWDARK.ancestry.nametable.random_weight: Randomization Weight SHADOWDARK.ancestry.nametable.tooltip.weight: Affects the chance of rolling when using the Character Generator. Higher values increase chance. Default value is 1. -SHADOWDARK.ancestry.talents.label: Ancestry Talents -SHADOWDARK.ancestry.talents.prompt: Select Talent... -SHADOWDARK.app.active_effects.title: Active Effects +SHADOWDARK.ancestry.talents.label: Таланты Предков +SHADOWDARK.ancestry.talents.prompt: Выберите Талант... +SHADOWDARK.app.active_effects.title: Активные эффекты SHADOWDARK.app.gem_bag.sell_all: Продать все Самоцветы -SHADOWDARK.app.gem_bag.title: Gem Bag +SHADOWDARK.app.gem_bag.title: Мешок Самоцветов SHADOWDARK.app.gem_bag.tooltip.sell_gem: Продать Самоцвет -SHADOWDARK.app.gem_bag.total_value: Total Value +SHADOWDARK.app.gem_bag.total_value: Общая стоимость SHADOWDARK.app.item_properties.armor.title: Armor Properties SHADOWDARK.app.item_properties.languages.title: Языки SHADOWDARK.app.item_properties.magic_item.effects.title: Magic Item Effects SHADOWDARK.app.item_properties.save: Сохранить SHADOWDARK.app.item_properties.talent.effects.title: Talent Effect Types -SHADOWDARK.app.item_properties.title: Properties +SHADOWDARK.app.item_properties.title: Свойства SHADOWDARK.app.item_properties.weapon.title: Weapon Properties SHADOWDARK.app.light_tracker.minute_short: мин SHADOWDARK.app.light_tracker.minutes_short: минуты -SHADOWDARK.app.light_tracker.title: Light Tracker +SHADOWDARK.app.light_tracker.title: Трекер освещения SHADOWDARK.app.light-tracker.douse-light: Douse Light -SHADOWDARK.app.light-tracker.hide-inactive: Hide Actors Without Lights -SHADOWDARK.app.light-tracker.show-all-actors: Show All Actors -SHADOWDARK.app.light-tracker.turn-out-the-lights: Turn Out the Lights -SHADOWDARK.app.loading.body: Searching Distant Lands... +SHADOWDARK.app.light-tracker.hide-inactive: Скрыть актёров без света +SHADOWDARK.app.light-tracker.show-all-actors: Показать всех актёров +SHADOWDARK.app.light-tracker.turn-out-the-lights: Выключить свет +SHADOWDARK.app.loading.body: Поиск отдаленных земель... SHADOWDARK.app.loading.title: Загрузка SHADOWDARK.app.npc_attack_ranges.title: Attack Ranges SHADOWDARK.apps.character-generator.create_character: Создать персонажа @@ -267,7 +267,7 @@ SHADOWDARK.dialog.hp_roll.sum_total: For a new max HP of {total} hp SHADOWDARK.dialog.hp_roll.summary: HP Rolling Summary SHADOWDARK.dialog.hp_roll.title: HP Roll SHADOWDARK.dialog.item_roll.ability_bonus: Бонус умения -SHADOWDARK.dialog.item_roll.item_bonus: Item Bonus +SHADOWDARK.dialog.item_roll.item_bonus: Бонус предмета SHADOWDARK.dialog.item_roll.talent_bonus: Бонус таланта SHADOWDARK.dialog.item_roll.title: Roll Attack with SHADOWDARK.dialog.item_selector.default_title: Choose Items @@ -282,7 +282,7 @@ SHADOWDARK.dialog.item.sell_all: Продать все SHADOWDARK.dialog.item.sell: Продать SHADOWDARK.dialog.item.use: Использовать SHADOWDARK.dialog.light_source.pick_up.title: Select actor to give lightsource -SHADOWDARK.dialog.roll_mode_label: Rolling mode +SHADOWDARK.dialog.roll_mode_label: Тип броска SHADOWDARK.dialog.roll: Roll SHADOWDARK.dialog.scroll.learn_spell_class_warning: "WARNING: This spell is not of the same class as the character, are you sure you wish to try and learn it?" SHADOWDARK.dialog.scroll.wrong_class_confirm: Подтвердить обучение заклинанию From b5055609a0bf590489c59db6c81c7eb3885895d2 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 12 Oct 2024 13:39:27 +0100 Subject: [PATCH 008/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 54 ++++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index b2a67202..8f385e81 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -16,9 +16,9 @@ SHADOWDARK.alignment.neutral: Нейтральный SHADOWDARK.ancestry.choice_count: Choice Count SHADOWDARK.ancestry.choice: Выбор SHADOWDARK.ancestry.fixed: Fixed -SHADOWDARK.ancestry.languages.label: Ancestry Languages -SHADOWDARK.ancestry.languages.prompt: Select Language... -SHADOWDARK.ancestry.nametable.label: Random Name Table +SHADOWDARK.ancestry.languages.label: Языки предков +SHADOWDARK.ancestry.languages.prompt: Выберите язык... +SHADOWDARK.ancestry.nametable.label: Случайная таблица имён SHADOWDARK.ancestry.nametable.placeholder: Drag Roll Table Here SHADOWDARK.ancestry.nametable.random_weight: Randomization Weight SHADOWDARK.ancestry.nametable.tooltip.weight: Affects the chance of rolling when using the Character Generator. Higher values increase chance. Default value is 1. @@ -29,7 +29,7 @@ SHADOWDARK.app.gem_bag.sell_all: Продать все Самоцветы SHADOWDARK.app.gem_bag.title: Мешок Самоцветов SHADOWDARK.app.gem_bag.tooltip.sell_gem: Продать Самоцвет SHADOWDARK.app.gem_bag.total_value: Общая стоимость -SHADOWDARK.app.item_properties.armor.title: Armor Properties +SHADOWDARK.app.item_properties.armor.title: Свойства Брони SHADOWDARK.app.item_properties.languages.title: Языки SHADOWDARK.app.item_properties.magic_item.effects.title: Magic Item Effects SHADOWDARK.app.item_properties.save: Сохранить @@ -94,7 +94,7 @@ SHADOWDARK.apps.level-up.notalent: No talents gained at this level SHADOWDARK.apps.level-up.prompt: Not all required selections have been made. Continue with level up anyways? SHADOWDARK.apps.level-up.roll_talent: Roll Talent SHADOWDARK.apps.level-up.title: Повышение уровня -SHADOWDARK.apps.monster-importer.import_button: Import Monster +SHADOWDARK.apps.monster-importer.import_button: Импорт монстра SHADOWDARK.apps.monster-importer.instruction1: 1. Copy monster text from source material. SHADOWDARK.apps.monster-importer.instruction2a: 2. Paste text into the text box following the monster format shown in the core rules. Add a blank line between each ability. SHADOWDARK.apps.monster-importer.instruction2b: Название монстра @@ -103,16 +103,16 @@ SHADOWDARK.apps.monster-importer.instruction2d: Main stat block SHADOWDARK.apps.monster-importer.instruction2e: Feature SHADOWDARK.apps.monster-importer.instruction3: 3. Click Import Monster. SHADOWDARK.apps.monster-importer.title: Import Monster -SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found +SHADOWDARK.apps.shadowdarkling-importer.errors: Предметы не найдены SHADOWDARK.apps.shadowdarkling-importer.import_button: Импорт -SHADOWDARK.apps.shadowdarkling-importer.import_button2: Partially Import +SHADOWDARK.apps.shadowdarkling-importer.import_button2: Частичный импорт SHADOWDARK.apps.shadowdarkling-importer.instruction1: 1. Visit Shadowdarklings.net. SHADOWDARK.apps.shadowdarkling-importer.instruction2: 2. Create Character > Export > copy JSON to clipboard. -SHADOWDARK.apps.shadowdarkling-importer.instruction3: Paste Character JSON Here +SHADOWDARK.apps.shadowdarkling-importer.instruction3: Вставить JSON персонажа здесь SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.title: Import Shadowdarkling SHADOWDARK.apps.spell-book.known: Известные -SHADOWDARK.apps.spell-book.title: Class Spell List +SHADOWDARK.apps.spell-book.title: Список заклинаний класса SHADOWDARK.apps.spell-importer.import_button: Импорт заклинания SHADOWDARK.apps.spell-importer.instruction1: 1. Copy spell text from source material. SHADOWDARK.apps.spell-importer.instruction2a: 2. Paste text into this box following the spell format shown in the core rules. @@ -126,7 +126,7 @@ SHADOWDARK.apps.spell-importer.title: Импорт заклинания SHADOWDARK.apps.solodark.button1: Маловероятно или невозможно SHADOWDARK.apps.solodark.button2: Even Chance SHADOWDARK.apps.solodark.button3: Likely or Certain -SHADOWDARK.apps.solodark.oracle: The Oracle +SHADOWDARK.apps.solodark.oracle: Оракул SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" SHADOWDARK.apps.solodark.question1: Какой вопрос? SHADOWDARK.apps.solodark.question2: Насколько вероятно, что результат "да"? @@ -157,7 +157,7 @@ SHADOWDARK.chat.item_roll.double_numerical: Double any one numerical value! SHADOWDARK.chat.item_roll.mishap: Roll on the appropriate Mishap table! SHADOWDARK.chat.item_roll.title: Attack roll with {name} SHADOWDARK.chat.item_roll.wand_mishap: The wand breaks and permanently ceases to work -SHADOWDARK.chat.light_source.expired: "{name}'s {lightSource} expired" +SHADOWDARK.chat.light_source.expired: "{lightSource} персонажа {name} иссяк" SHADOWDARK.chat.light_source.remaining: осталось минут SHADOWDARK.chat.light_source.seconds_remaining: Осталось менее 1 минуты SHADOWDARK.chat.light_source.source.all: Все источники света закончились @@ -165,7 +165,7 @@ SHADOWDARK.chat.light_source.source.dropped: был выброшен SHADOWDARK.chat.light_source.source.picked_up: был подобран SHADOWDARK.chat.light_source.source.toggle.off: был потушен SHADOWDARK.chat.light_source.source.toggle.on: зажжён -SHADOWDARK.chat.light_source.went_out: "{name}'s {lightSource} went out" +SHADOWDARK.chat.light_source.went_out: "{lightSource} персонажа {name} потухло" SHADOWDARK.chat.potion_used: "{name} использовал зелье" SHADOWDARK.chat.spell_learn.failure: "{name} ничего не удалось выучить из свитка" SHADOWDARK.chat.spell_learn.success: "{name} успешно изучил заклинание {spellName}" @@ -174,8 +174,8 @@ SHADOWDARK.chat.spell_roll.title: "{name}, DC {spellDC}" SHADOWDARK.chat.use_ability.failure: "{name} failed to used the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} successfully used the {ability} ability" SHADOWDARK.chat.use_ability.title: "Использование способности" -SHADOWDARK.chat.welcome_message.issues: Report Issues -SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker +SHADOWDARK.chat.welcome_message.issues: Сообщить о проблеме +SHADOWDARK.chat.welcome_message.issues_button: Баг трекер SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG @@ -381,9 +381,9 @@ SHADOWDARK.item_type.spell: Spell SHADOWDARK.item_type.talent: Talent SHADOWDARK.item_type.weapon: Weapon SHADOWDARK.item.armor_ac_modifier: Modifier -SHADOWDARK.item.armor_ac: AC +SHADOWDARK.item.armor_ac: КБ SHADOWDARK.item.armor_bonus_attribute: Bonus Attribute -SHADOWDARK.item.armor_class: Armor Class +SHADOWDARK.item.armor_class: Класс Брони SHADOWDARK.item.armor.base_armor.chainmail: Chainmail SHADOWDARK.item.armor.base_armor.leather_armor: Leather Armor SHADOWDARK.item.armor.base_armor.plate_mail: Plate Mail @@ -408,8 +408,8 @@ SHADOWDARK.item.effect.predefined_effect.abilityImprovementDex: Ability Score Im SHADOWDARK.item.effect.predefined_effect.abilityImprovementInt: Ability Score Improvement (Int) SHADOWDARK.item.effect.predefined_effect.abilityImprovementStr: Ability Score Improvement (Str) SHADOWDARK.item.effect.predefined_effect.abilityImprovementWis: Ability Score Improvement (Wis) -SHADOWDARK.item.effect.predefined_effect.acBonus: AC Bonus -SHADOWDARK.item.effect.predefined_effect.acBonusFromAttribute: AC Bonus from Attribute +SHADOWDARK.item.effect.predefined_effect.acBonus: Бонус КБ +SHADOWDARK.item.effect.predefined_effect.acBonusFromAttribute: Бонус КБ от атрибута SHADOWDARK.item.effect.predefined_effect.additionalGearSlots: Additional Gear Slots SHADOWDARK.item.effect.predefined_effect.armorMastery: Armor Mastery SHADOWDARK.item.effect.predefined_effect.backstabDie: Additional Backstab Die @@ -432,7 +432,7 @@ SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: Ranged Attack Roll B SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: Ranged Damage Bonus SHADOWDARK.item.effect.predefined_effect.spellAdvantage: Spellcasting Advantage on Spell SHADOWDARK.item.effect.predefined_effect.spellCastingBonus: Spellcasting Check Bonus -SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: Unarmored AC Bonus +SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: Небронированный КБ бонус SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: Weapon Attack Roll Bonus SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: Weapon Attack Damage Bonus SHADOWDARK.item.effect.predefined_effect.weaponDamageDieD12: Weapon Damage Die D12 @@ -639,9 +639,9 @@ SHADOWDARK.settings.use_clockwise_initiative.hint: If checked the combatant with SHADOWDARK.settings.use_clockwise_initiative.name: Use Clockwise Initiative SHADOWDARK.settings.use_pulp_mode.hint: Shows Luck tokens as a numeric value rather than a checkbox SHADOWDARK.settings.use_pulp_mode.name: Enable Pulp Mode -SHADOWDARK.sheet.abilities.label: Abilities +SHADOWDARK.sheet.abilities.label: Умения SHADOWDARK.sheet.abilities.modifiers: Modifiers -SHADOWDARK.sheet.abilities.stats: Stats +SHADOWDARK.sheet.abilities.stats: Статы SHADOWDARK.sheet.abilities.ungrouped.label: Miscellaneous SHADOWDARK.sheet.abilities.uses.decrement.tooltip: Decrease Available Uses SHADOWDARK.sheet.abilities.uses.increment.tooltip: Increase Available Uses @@ -659,7 +659,7 @@ SHADOWDARK.sheet.general.item_delete.title: Delete Item SHADOWDARK.sheet.general.item_edit.title: Edit Item SHADOWDARK.sheet.general.roll_hp: Roll HP SHADOWDARK.sheet.item.tab.description: Description -SHADOWDARK.sheet.item.tab.details: Details +SHADOWDARK.sheet.item.tab.details: Подробности SHADOWDARK.sheet.item.tab.effects: Effects SHADOWDARK.sheet.item.tab.light: Light SHADOWDARK.sheet.item.tab.magic: Magic @@ -673,7 +673,7 @@ SHADOWDARK.sheet.npc.features_label: Features SHADOWDARK.sheet.npc.movement_short: Move SHADOWDARK.sheet.npc.movement: Movement SHADOWDARK.sheet.npc.specials_label: Special Attacks -SHADOWDARK.sheet.npc.tab.abilities: Abilities +SHADOWDARK.sheet.npc.tab.abilities: Умения SHADOWDARK.sheet.npc.tab.description: Description SHADOWDARK.sheet.npc.tab.spells: Spells SHADOWDARK.sheet.player.active_effect_override: This value is being modified by an Active Effect and cannot be edited. Disable the effect to edit it. @@ -694,15 +694,15 @@ SHADOWDARK.sheet.player.class.tooltip: Your character's job SHADOWDARK.sheet.player.deity.label: Deity SHADOWDARK.sheet.player.deity.tooltip: Your character’s cosmic link to the opposing forces of Law and Chaos, or balanced Neutrality. SHADOWDARK.sheet.player.languages: Languages -SHADOWDARK.sheet.player.luck: Luck +SHADOWDARK.sheet.player.luck: Удача SHADOWDARK.sheet.player.melee_attacks: Melee Attacks SHADOWDARK.sheet.player.name.label: Name SHADOWDARK.sheet.player.ranged_attacks: Ranged Attacks SHADOWDARK.sheet.player.spells_from_items: Spells From Items SHADOWDARK.sheet.player.spells_tier: Tier SHADOWDARK.sheet.player.spells: Spells -SHADOWDARK.sheet.player.tab.abilities: Abilities -SHADOWDARK.sheet.player.tab.details: Details +SHADOWDARK.sheet.player.tab.abilities: Умения +SHADOWDARK.sheet.player.tab.details: Подробности SHADOWDARK.sheet.player.tab.inventory: Inventory SHADOWDARK.sheet.player.tab.notes: Notes SHADOWDARK.sheet.player.tab.spells: Spells @@ -751,7 +751,7 @@ SHADOWDARK.talent.type.advantage.hp: HP Roll Advantage SHADOWDARK.talent.type.advantage.initiative: Initiative Advantage SHADOWDARK.talent.type.advantage.spell: Spellcasting Advantage SHADOWDARK.talent.type.advantage.title: Advantage Bonus -SHADOWDARK.talent.type.armor_bonus: Armor AC Bonus +SHADOWDARK.talent.type.armor_bonus: Броня КБ бонус SHADOWDARK.talent.type.armor_mastery: Armor Mastery SHADOWDARK.talent.type.backstab_die: Extra Backstab Die SHADOWDARK.talent.type.custom: Custom Talent From d6ec70a4c00519b3f81130131af36864a84ee22b Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 13 Oct 2024 19:49:50 +0100 Subject: [PATCH 009/182] update release notes --- RELEASE_NOTES.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 7161ad75..29dc22fe 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,3 +1,12 @@ +# vX.X.X + +## Chores +* [#911] Replaced compendium art mapping with default Foundry method. + + - Settings for compendium art mapping are now found in *Settings > Core > Compendium Art* + +--- + # v3.1.3 ## Enhancements From 0ea2537a48e7935d9c6640d890a8c89082227113 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 14 Oct 2024 14:05:51 +0100 Subject: [PATCH 010/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 300 +++++++++++++++++++++++++-------------------------- 1 file changed, 150 insertions(+), 150 deletions(-) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index 8f385e81..a3cf3400 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -183,7 +183,7 @@ SHADOWDARK.chat.welcome_message.arcane_library_text: Visit the Arcane Library we SHADOWDARK.chat.welcome_message.title: Shadowdark RPG for Foundry SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are some resources to get you started. SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial -SHADOWDARK.chatcard.default: Roll +SHADOWDARK.chatcard.default: Бросок SHADOWDARK.class-ability.ability.check: Проверка способности SHADOWDARK.class-ability.ability.label: SHADOWDARK.class-ability.available.label: Доступно @@ -234,11 +234,11 @@ SHADOWDARK.damage.one_handed: "One-Handed Damage:" SHADOWDARK.damage.two_handed: "Two-Handed Damage:" SHADOWDARK.dialog.ability_check.cha: Charisma Check SHADOWDARK.dialog.ability_check.con: Constitution Check -SHADOWDARK.dialog.ability_check.dex: Dexterity Check -SHADOWDARK.dialog.ability_check.int: Intelligence Check -SHADOWDARK.dialog.ability_check.str: Strength Check -SHADOWDARK.dialog.ability_check.title: Ability Check -SHADOWDARK.dialog.ability_check.wis: Wisdom Check +SHADOWDARK.dialog.ability_check.dex: Проверка ловкости +SHADOWDARK.dialog.ability_check.int: Проверка интеллекта +SHADOWDARK.dialog.ability_check.str: Проверка силы +SHADOWDARK.dialog.ability_check.title: Проверка способности +SHADOWDARK.dialog.ability_check.wis: Проверка мудрости SHADOWDARK.dialog.create_custom_item: Create Custom Item SHADOWDARK.dialog.create_treasure: Create Treasure SHADOWDARK.dialog.create: Создать @@ -292,12 +292,12 @@ SHADOWDARK.dialog.select_armor_property.prompt: Select Armor Property... SHADOWDARK.dialog.select_armor_property.title: Choose Armor Properties SHADOWDARK.dialog.select_background.prompt: Select Background... SHADOWDARK.dialog.select_background.title: Choose Background -SHADOWDARK.dialog.select_class.prompt: Select Class... -SHADOWDARK.dialog.select_class.title: Choose Class +SHADOWDARK.dialog.select_class.prompt: Выбрать класс... +SHADOWDARK.dialog.select_class.title: Выберите класс SHADOWDARK.dialog.select_deity.prompt: Select Deity... SHADOWDARK.dialog.select_deity.title: Choose Deity -SHADOWDARK.dialog.select_languages.prompt: Select Language... -SHADOWDARK.dialog.select_languages.title: Choose Languages +SHADOWDARK.dialog.select_languages.prompt: Выбрать язык... +SHADOWDARK.dialog.select_languages.title: Выберите язык SHADOWDARK.dialog.select_weapon_property.prompt: Select Weapon Property... SHADOWDARK.dialog.select_weapon_property.title: Choose Weapon Properties SHADOWDARK.dialog.spell_roll.title: Cast Spell with @@ -319,89 +319,89 @@ SHADOWDARK.effect.header.name: Название SHADOWDARK.effect.header.options: Опции SHADOWDARK.effect.header.toggle_active: Toggle Active SHADOWDARK.effect.header.transfer: Transfer -SHADOWDARK.effect.item: Item Effects -SHADOWDARK.effect.new: New Effect -SHADOWDARK.effect.spell: Spell Effects -SHADOWDARK.effect.talent: Talent Effects -SHADOWDARK.effect.temporary: Temporary Effects +SHADOWDARK.effect.item: Эффекты предметов +SHADOWDARK.effect.new: Новый эффект +SHADOWDARK.effect.spell: Эффект заклинания +SHADOWDARK.effect.talent: Эффект таланта +SHADOWDARK.effect.temporary: Временный эффект SHADOWDARK.effect.tooltip.transfer.do_not: Does not transfer SHADOWDARK.effect.tooltip.transfer.do: Does transfer SHADOWDARK.effect.tooltip.transfer.header: Transfer effect to actor when item is added SHADOWDARK.effect.unavailable: Disabled Effects -SHADOWDARK.error.class_ability.no-uses-remaining: No uses remaining -SHADOWDARK.error.general.gm_required: You must have the Game Master role to do that. -SHADOWDARK.error.general.no_character_class: No character class has been selected -SHADOWDARK.error.source.source_missing: Source missing or unknown... +SHADOWDARK.error.class_ability.no-uses-remaining: Не осталось использований +SHADOWDARK.error.general.gm_required: Чтобы сделать это, у вас должна быть роль мастера. +SHADOWDARK.error.general.no_character_class: Класс персонажа не выбран +SHADOWDARK.error.source.source_missing: Источник отсутствует или неизвестен... SHADOWDARK.error.spells.no_spellcasting_ability_set: No character spellcasting ability has been configured -SHADOWDARK.form.section_header.equipment.label: Equipment -SHADOWDARK.form.section_header.languages.label: Languages -SHADOWDARK.form.section_header.names.label: Names -SHADOWDARK.form.section_header.spellcasting.label: Spellcasting -SHADOWDARK.form.section_header.talents.label: Talents -SHADOWDARK.hotbar.abilityLost: Ability currently lost -SHADOWDARK.hotbar.moreThanOneItemWithName: More than one item found with that name -SHADOWDARK.hotbar.noActorSelected: You must select an actor to use this macro -SHADOWDARK.hotbar.noItemWithName: No such item found on character -SHADOWDARK.hotbar.spellLost: Spell currently lost +SHADOWDARK.form.section_header.equipment.label: Снаряжение +SHADOWDARK.form.section_header.languages.label: Языки +SHADOWDARK.form.section_header.names.label: Название +SHADOWDARK.form.section_header.spellcasting.label: Заклинания +SHADOWDARK.form.section_header.talents.label: Таланты +SHADOWDARK.hotbar.abilityLost: Способность в данный момент потеряна +SHADOWDARK.hotbar.moreThanOneItemWithName: Найдено более одного элемента с таким именем +SHADOWDARK.hotbar.noActorSelected: Вы должны выбрать персонажа для использования этого макроса +SHADOWDARK.hotbar.noItemWithName: На персонаже не найдено такого предмета +SHADOWDARK.hotbar.spellLost: Заклинание в данный момент потеряно SHADOWDARK.inventory.carried_gear: Carried Gear -SHADOWDARK.inventory.coins: Coins -SHADOWDARK.inventory.equipped_gear: Equipped Gear -SHADOWDARK.inventory.gear: Gear -SHADOWDARK.inventory.gems: Gems -SHADOWDARK.inventory.item.light_remaining: "{timeRemaining} Minutes Remaining" -SHADOWDARK.inventory.item.light_seconds_remaining: Less than 1 Minute Remaining -SHADOWDARK.inventory.item.light_used: (used) -SHADOWDARK.inventory.label.quantity: Qty -SHADOWDARK.inventory.label.slots: Slots -SHADOWDARK.inventory.section.armor: Armor -SHADOWDARK.inventory.section.basic: Basic Equipment -SHADOWDARK.inventory.section.potions: Potions -SHADOWDARK.inventory.section.scrolls: Scrolls -SHADOWDARK.inventory.section.treasure: Treasure -SHADOWDARK.inventory.section.wands: Wands -SHADOWDARK.inventory.section.weapon: Weapons -SHADOWDARK.inventory.slots_max: Max -SHADOWDARK.inventory.slots_used: Used -SHADOWDARK.inventory.slots: Slots +SHADOWDARK.inventory.coins: Монеты +SHADOWDARK.inventory.equipped_gear: Снаряженная экипировка +SHADOWDARK.inventory.gear: Снаряжение +SHADOWDARK.inventory.gems: Самоцветы +SHADOWDARK.inventory.item.light_remaining: "{timeRemaining} минут осталось " +SHADOWDARK.inventory.item.light_seconds_remaining: Осталось менее 1 минуты +SHADOWDARK.inventory.item.light_used: (использовано) +SHADOWDARK.inventory.label.quantity: Кол-во +SHADOWDARK.inventory.label.slots: Слоты +SHADOWDARK.inventory.section.armor: Броня +SHADOWDARK.inventory.section.basic: Базовое снаряжение +SHADOWDARK.inventory.section.potions: Зелья +SHADOWDARK.inventory.section.scrolls: Свитки +SHADOWDARK.inventory.section.treasure: Сокровище +SHADOWDARK.inventory.section.wands: Жезлы +SHADOWDARK.inventory.section.weapon: Оружие +SHADOWDARK.inventory.slots_max: Макс. +SHADOWDARK.inventory.slots_used: Использованный +SHADOWDARK.inventory.slots: Слоты SHADOWDARK.inventory.stashed_gear: Stashed Gear -SHADOWDARK.inventory.tooltip.gem_bag: Open Gem Bag -SHADOWDARK.inventory.tooltip.item_decrement: Decrease Quantity -SHADOWDARK.inventory.tooltip.item_increment: Increase Quantity -SHADOWDARK.inventory.tooltip.sell_treasure: Sell Treasure -SHADOWDARK.inventory.tooltip.toggle_equipped: Toggle Equipped -SHADOWDARK.inventory.tooltip.toggle_light_source: Toggle Light Source -SHADOWDARK.inventory.tooltip.toggle_stashed: Toggle Stashed -SHADOWDARK.inventory.total_coins: Total Coins -SHADOWDARK.inventory.total_gems: Total Gems -SHADOWDARK.item_type.armor: Armor -SHADOWDARK.item_type.basic: Basic -SHADOWDARK.item_type.gem: Gem -SHADOWDARK.item_type.potion: Potion -SHADOWDARK.item_type.spell: Spell -SHADOWDARK.item_type.talent: Talent -SHADOWDARK.item_type.weapon: Weapon -SHADOWDARK.item.armor_ac_modifier: Modifier +SHADOWDARK.inventory.tooltip.gem_bag: Открыть сумку с самоцветами +SHADOWDARK.inventory.tooltip.item_decrement: Уменьшить количество +SHADOWDARK.inventory.tooltip.item_increment: Увеличить количество +SHADOWDARK.inventory.tooltip.sell_treasure: Продать сокровище +SHADOWDARK.inventory.tooltip.toggle_equipped: Сменить экипировку +SHADOWDARK.inventory.tooltip.toggle_light_source: Переключить источник света +SHADOWDARK.inventory.tooltip.toggle_stashed: Переключить тайник +SHADOWDARK.inventory.total_coins: Всего монет +SHADOWDARK.inventory.total_gems: Всего самоцветов +SHADOWDARK.item_type.armor: Броня +SHADOWDARK.item_type.basic: Базовая +SHADOWDARK.item_type.gem: Самоцвет +SHADOWDARK.item_type.potion: Зелье +SHADOWDARK.item_type.spell: Заклинание +SHADOWDARK.item_type.talent: Талант +SHADOWDARK.item_type.weapon: Оружие +SHADOWDARK.item.armor_ac_modifier: Модификатор SHADOWDARK.item.armor_ac: КБ SHADOWDARK.item.armor_bonus_attribute: Bonus Attribute SHADOWDARK.item.armor_class: Класс Брони SHADOWDARK.item.armor.base_armor.chainmail: Chainmail -SHADOWDARK.item.armor.base_armor.leather_armor: Leather Armor -SHADOWDARK.item.armor.base_armor.plate_mail: Plate Mail -SHADOWDARK.item.armor.base_armor.shield: Shield -SHADOWDARK.item.armor.base_armor.title: Base Armor -SHADOWDARK.item.cost: Cost -SHADOWDARK.item.description: Description -SHADOWDARK.item.effect.category.condition: Condition -SHADOWDARK.item.effect.category.effect: Effect -SHADOWDARK.item.effect.category.title: Effect Category -SHADOWDARK.item.effect.lightSource.lantern: Lantern -SHADOWDARK.item.effect.lightSource.lightSpellDouble: Light (Double Range) -SHADOWDARK.item.effect.lightSource.lightSpellNear: Light +SHADOWDARK.item.armor.base_armor.leather_armor: Кожаная броня +SHADOWDARK.item.armor.base_armor.plate_mail: Латные доспехи +SHADOWDARK.item.armor.base_armor.shield: Щит +SHADOWDARK.item.armor.base_armor.title: Базовая броня +SHADOWDARK.item.cost: Цена +SHADOWDARK.item.description: Описание +SHADOWDARK.item.effect.category.condition: Условия +SHADOWDARK.item.effect.category.effect: Эффект +SHADOWDARK.item.effect.category.title: Категория эффекта +SHADOWDARK.item.effect.lightSource.lantern: Фонарь +SHADOWDARK.item.effect.lightSource.lightSpellDouble: Свет (двойной диапазон) +SHADOWDARK.item.effect.lightSource.lightSpellNear: Свет SHADOWDARK.item.effect.lightSource.lightSuppression: Light Suppression -SHADOWDARK.item.effect.lightSource.purpleGlow: Purple Glow -SHADOWDARK.item.effect.lightSource.torch: Torch -SHADOWDARK.item.effect.pre-defined.title: Pre-defined effects -SHADOWDARK.item.effect.predefined_effect.abilityImprovement: Ability Score Improvement +SHADOWDARK.item.effect.lightSource.purpleGlow: Фиолетовое свечение +SHADOWDARK.item.effect.lightSource.torch: Факел +SHADOWDARK.item.effect.pre-defined.title: Предустановленные эффекты +SHADOWDARK.item.effect.predefined_effect.abilityImprovement: Улучшение очков способности SHADOWDARK.item.effect.predefined_effect.abilityImprovementCha: Ability Score Improvement (Cha) SHADOWDARK.item.effect.predefined_effect.abilityImprovementCon: Ability Score Improvement (Con) SHADOWDARK.item.effect.predefined_effect.abilityImprovementDex: Ability Score Improvement (Dex) @@ -411,111 +411,111 @@ SHADOWDARK.item.effect.predefined_effect.abilityImprovementWis: Ability Score Im SHADOWDARK.item.effect.predefined_effect.acBonus: Бонус КБ SHADOWDARK.item.effect.predefined_effect.acBonusFromAttribute: Бонус КБ от атрибута SHADOWDARK.item.effect.predefined_effect.additionalGearSlots: Additional Gear Slots -SHADOWDARK.item.effect.predefined_effect.armorMastery: Armor Mastery +SHADOWDARK.item.effect.predefined_effect.armorMastery: Совершенное владение броней SHADOWDARK.item.effect.predefined_effect.backstabDie: Additional Backstab Die SHADOWDARK.item.effect.predefined_effect.criticalFailureThreshold: Critical Failure Threshold SHADOWDARK.item.effect.predefined_effect.criticalSuccessThreshold: Critical Success Threshold -SHADOWDARK.item.effect.predefined_effect.critMultiplier: Critical Multiplier -SHADOWDARK.item.effect.predefined_effect.damageMultiplier: Damage Multiplier +SHADOWDARK.item.effect.predefined_effect.critMultiplier: Множитель крита +SHADOWDARK.item.effect.predefined_effect.damageMultiplier: Множитель урона SHADOWDARK.item.effect.predefined_effect.hpAdvantage: HP Roll Advantage -SHADOWDARK.item.effect.predefined_effect.initAdvantage: Initiative Advantage -SHADOWDARK.item.effect.predefined_effect.lightSource: Light Source -SHADOWDARK.item.effect.predefined_effect.meleeAttackBonus: Melee Attack Roll Bonus -SHADOWDARK.item.effect.predefined_effect.meleeDamageBonus: Melee Damage Bonus +SHADOWDARK.item.effect.predefined_effect.initAdvantage: Преимущества инициативы +SHADOWDARK.item.effect.predefined_effect.lightSource: Источник света +SHADOWDARK.item.effect.predefined_effect.meleeAttackBonus: Бонус к атаке ближнего боя +SHADOWDARK.item.effect.predefined_effect.meleeDamageBonus: Бонус к урону ближнего боя SHADOWDARK.item.effect.predefined_effect.permanentAbilityCha: Permanent Ability (Cha) SHADOWDARK.item.effect.predefined_effect.permanentAbilityCon: Permanent Ability (Con) SHADOWDARK.item.effect.predefined_effect.permanentAbilityDex: Permanent Ability (Dex) SHADOWDARK.item.effect.predefined_effect.permanentAbilityInt: Permanent Ability (Int) SHADOWDARK.item.effect.predefined_effect.permanentAbilityStr: Permanent Ability (Str) SHADOWDARK.item.effect.predefined_effect.permanentAbilityWis: Permanent Ability (Wis) -SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: Ranged Attack Roll Bonus -SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: Ranged Damage Bonus +SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: Бонус к атаке дальнего боя +SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: Бонус к урону дальнего боя SHADOWDARK.item.effect.predefined_effect.spellAdvantage: Spellcasting Advantage on Spell SHADOWDARK.item.effect.predefined_effect.spellCastingBonus: Spellcasting Check Bonus SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: Небронированный КБ бонус -SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: Weapon Attack Roll Bonus -SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: Weapon Attack Damage Bonus +SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: Бонус к атаке оружия +SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: Бонус к урону атаки оружия SHADOWDARK.item.effect.predefined_effect.weaponDamageDieD12: Weapon Damage Die D12 SHADOWDARK.item.effect.predefined_effect.weaponDamageDieImprovementByProperty: Weapon Damage Die Improvement by Property SHADOWDARK.item.effect.predefined_effect.weaponDamageExtraDieByProperty: Extra Damage Die by Property SHADOWDARK.item.effect.predefined_effect.weaponDamageExtraDieImprovementByProperty: Extra Damage Die Improvement by Property SHADOWDARK.item.effect.predefined_effect.weaponDamageMultiplier: Weapon Damage Multiplier -SHADOWDARK.item.effect.predefined_effect.weaponMastery: Weapon Mastery -SHADOWDARK.item.effect.show-on-panel: Show on panel -SHADOWDARK.item.effect.show-token-icon: Show token icon +SHADOWDARK.item.effect.predefined_effect.weaponMastery: Совершенное владение оружием +SHADOWDARK.item.effect.show-on-panel: Отображать на панели +SHADOWDARK.item.effect.show-token-icon: Показать иконку токена SHADOWDARK.item.effect.source.title: Item Source SHADOWDARK.item.effect.warning.add_effect_without_value: Can't add effects without selecting a value when asked. SHADOWDARK.item.effect.warning.add_round_item_outside_combat: Can't add effects with Rounds type duration outside of combat. -SHADOWDARK.item.equipped: Equipped +SHADOWDARK.item.equipped: Экипировано SHADOWDARK.item.inventory_free_carry: Free Carry -SHADOWDARK.item.inventory_per_slot: Max per Slot -SHADOWDARK.item.inventory_quantity: Quantity +SHADOWDARK.item.inventory_per_slot: Макс. на слот +SHADOWDARK.item.inventory_quantity: Количество SHADOWDARK.item.inventory_slots: Slots per Item -SHADOWDARK.item.level: Level -SHADOWDARK.item.light.is_source: Light Source +SHADOWDARK.item.level: Уровень +SHADOWDARK.item.light.is_source: Источник света SHADOWDARK.item.light.longevity: Longevity (Mins) SHADOWDARK.item.light.remaining: Remaining (Mins) SHADOWDARK.item.light.template: Light Template -SHADOWDARK.item.magic_item.is_magic: Magic Item +SHADOWDARK.item.magic_item.is_magic: Магический предмет SHADOWDARK.item.magic_item.title: Magic Item Effect(s) -SHADOWDARK.item.magic_item.type.attackBonus: Attack Bonus +SHADOWDARK.item.magic_item.type.attackBonus: Бонус к атаке SHADOWDARK.item.magic_item.type.criticalFailureThreshold: Higher Critical Failure Threshold SHADOWDARK.item.magic_item.type.criticalSuccessThreshold: Lower Critical Success Threshold SHADOWDARK.item.magic_item.type.critMultiplier: Critical Multiplier -SHADOWDARK.item.magic_item.type.custom: Custom Effect -SHADOWDARK.item.magic_item.type.damageBonus: Damage Bonus -SHADOWDARK.item.magic_item.type.permanentAbility: Permanent Ability Change -SHADOWDARK.item.name_from_spell.Potion: Potion of {spellName} -SHADOWDARK.item.name_from_spell.Scroll: Scroll of {spellName} -SHADOWDARK.item.name_from_spell.Wand: Wand of {spellName} -SHADOWDARK.item.name: Item Name -SHADOWDARK.item.npc_attack_bonus: Attack Bonus +SHADOWDARK.item.magic_item.type.custom: Пользовательский эффект +SHADOWDARK.item.magic_item.type.damageBonus: Бонус урона +SHADOWDARK.item.magic_item.type.permanentAbility: Постоянное изменение способности +SHADOWDARK.item.name_from_spell.Potion: Зелье {spellName} +SHADOWDARK.item.name_from_spell.Scroll: Свиток {spellName} +SHADOWDARK.item.name_from_spell.Wand: Палочка {spellName} +SHADOWDARK.item.name: Имя предмета +SHADOWDARK.item.npc_attack_bonus: Бонус атаки SHADOWDARK.item.npc_attack_count: Num. Attacks -SHADOWDARK.item.npc_attack_damage_formula: Damage Formula +SHADOWDARK.item.npc_attack_damage_formula: Формула урона SHADOWDARK.item.npc_attack_special: Attack Features -SHADOWDARK.item.npc_attack_type: Type +SHADOWDARK.item.npc_attack_type: Тип SHADOWDARK.item.npc_attack.num_damage_dice: Num. Damage Dice -SHADOWDARK.item.potion.label: Potion -SHADOWDARK.item.properties: Properties -SHADOWDARK.item.scroll.label: Scroll +SHADOWDARK.item.potion.label: Зелье +SHADOWDARK.item.properties: Свойства +SHADOWDARK.item.scroll.label: Свиток SHADOWDARK.item.source_tag: Source Tag -SHADOWDARK.item.source: Source +SHADOWDARK.item.source: Источник SHADOWDARK.item.spell_caster_classes: Caster Classes -SHADOWDARK.item.spell_class: Spell Class -SHADOWDARK.item.spell_duration: Duration -SHADOWDARK.item.spell_name: Spell Name -SHADOWDARK.item.spell_range: Range -SHADOWDARK.item.spell_tier: Tier -SHADOWDARK.item.spell.label: Spell +SHADOWDARK.item.spell_class: Класс заклинания +SHADOWDARK.item.spell_duration: Продолжительность +SHADOWDARK.item.spell_name: Название заклинания +SHADOWDARK.item.spell_range: Дальность +SHADOWDARK.item.spell_tier: Уровень +SHADOWDARK.item.spell.label: Заклинание SHADOWDARK.item.stashed.label: Stashed SHADOWDARK.item.talent_class: Talent Class -SHADOWDARK.item.treasure_name: Treasure Name +SHADOWDARK.item.treasure_name: Название сокровища SHADOWDARK.item.treasure_value: Treasure Value -SHADOWDARK.item.treasure: Treasure +SHADOWDARK.item.treasure: Сокровище SHADOWDARK.item.type: Item Type -SHADOWDARK.item.wand.label: Wand +SHADOWDARK.item.wand.label: Палочка SHADOWDARK.item.weapon_damage.oneHanded_short: 1H SHADOWDARK.item.weapon_damage.oneHanded: 1H Damage SHADOWDARK.item.weapon_damage.twoHanded_short: 2H SHADOWDARK.item.weapon_damage.twoHanded: 2H Damage SHADOWDARK.item.weapon_range: Range -SHADOWDARK.item.weapon_type: Type +SHADOWDARK.item.weapon_type: Тип SHADOWDARK.item.weapon.base_weapon.bastard_sword: Bastard Sword -SHADOWDARK.item.weapon.base_weapon.club: Club -SHADOWDARK.item.weapon.base_weapon.crossbow: Crossbow -SHADOWDARK.item.weapon.base_weapon.dagger: Dagger -SHADOWDARK.item.weapon.base_weapon.greataxe: Greataxe -SHADOWDARK.item.weapon.base_weapon.greatsword: Greatsword +SHADOWDARK.item.weapon.base_weapon.club: Дубинка +SHADOWDARK.item.weapon.base_weapon.crossbow: Арбалет +SHADOWDARK.item.weapon.base_weapon.dagger: Кинжал +SHADOWDARK.item.weapon.base_weapon.greataxe: Двуручный топор +SHADOWDARK.item.weapon.base_weapon.greatsword: Двуручный меч SHADOWDARK.item.weapon.base_weapon.javelin: Javelin -SHADOWDARK.item.weapon.base_weapon.longbow: Longbow -SHADOWDARK.item.weapon.base_weapon.longsword: Longsword -SHADOWDARK.item.weapon.base_weapon.mace: Mace -SHADOWDARK.item.weapon.base_weapon.shortbow: Shortbow -SHADOWDARK.item.weapon.base_weapon.shortsword: Shortsword -SHADOWDARK.item.weapon.base_weapon.spear: Spear -SHADOWDARK.item.weapon.base_weapon.staff: Staff -SHADOWDARK.item.weapon.base_weapon.title: Base Weapon -SHADOWDARK.item.weapon.base_weapon.wand: Wand +SHADOWDARK.item.weapon.base_weapon.longbow: Длинный лук +SHADOWDARK.item.weapon.base_weapon.longsword: Длинный меч +SHADOWDARK.item.weapon.base_weapon.mace: Булава +SHADOWDARK.item.weapon.base_weapon.shortbow: Короткий лук +SHADOWDARK.item.weapon.base_weapon.shortsword: Короткий меч +SHADOWDARK.item.weapon.base_weapon.spear: Копьё +SHADOWDARK.item.weapon.base_weapon.staff: Посох +SHADOWDARK.item.weapon.base_weapon.title: Базовое оружие +SHADOWDARK.item.weapon.base_weapon.wand: Палочка SHADOWDARK.item.weapon.base_weapon.warhammer: Warhammer SHADOWDARK.language_choices.common.label: Additional Common SHADOWDARK.language_choices.rare.label: Additional Rare @@ -525,12 +525,12 @@ SHADOWDARK.language.diabolic: Diabolic SHADOWDARK.language.draconic: Draconic SHADOWDARK.language.dwarvish: Dwarvish SHADOWDARK.language.elvish: Elvish -SHADOWDARK.language.giant: Giant -SHADOWDARK.language.goblin: Goblin +SHADOWDARK.language.giant: Гигант +SHADOWDARK.language.goblin: Гоблин SHADOWDARK.language.merran: Merran SHADOWDARK.language.orcish: Orcish SHADOWDARK.language.primordial: Primordial -SHADOWDARK.language.rarity.common: Common +SHADOWDARK.language.rarity.common: Общее SHADOWDARK.language.rarity.label: Rarity SHADOWDARK.language.rarity.rare: Rare SHADOWDARK.language.reptilian: Reptilian @@ -540,15 +540,15 @@ SHADOWDARK.language.who_speaks_it: Who Speaks It SHADOWDARK.light_source.lantern: Lantern SHADOWDARK.light_source.light_spell.double_near: Light Spell (Double Near) SHADOWDARK.light_source.light_spell.near: Light Spell (Near) -SHADOWDARK.light_source.torch: Torch +SHADOWDARK.light_source.torch: Факел SHADOWDARK.light-source.dropped: Dropped {name} SHADOWDARK.light-source.pick-up-lightsource.tooltip: Pick up Lightsource -SHADOWDARK.light-tracker.active: Active -SHADOWDARK.light-tracker.paused: Paused -SHADOWDARK.light-tracker.status.label: Status -SHADOWDARK.light-tracker.title: Light Tracker -SHADOWDARK.light-tracker.user_warning: One or more users have not selected a character -SHADOWDARK.macro.error.caught_error: "The '{macro}' macro failed with the following error: {error}" +SHADOWDARK.light-tracker.active: Активен +SHADOWDARK.light-tracker.paused: Приостановлен +SHADOWDARK.light-tracker.status.label: Статус +SHADOWDARK.light-tracker.title: Трекер освещения +SHADOWDARK.light-tracker.user_warning: Один или несколько пользователей не выбрали персонажа +SHADOWDARK.macro.error.caught_error: "" SHADOWDARK.macro.error.gm_role_required: The '{macro}' macro requires you to have the 'Game Master' user role SHADOWDARK.macro.success: The '{macro}' macro completed successfully SHADOWDARK.macro.warn.create_item_requires_ownership: You can only create macro buttons for owned Items From e8d295ad99d47d3dfd8c1e81758f7661d5a340b7 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 14 Oct 2024 15:59:55 +0100 Subject: [PATCH 011/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 56 ++++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index a3cf3400..8bba5e0f 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -12,7 +12,7 @@ SHADOWDARK.ability_wis: Муд SHADOWDARK.ability_wisdom: Мудрость SHADOWDARK.alignment.chaotic: Хаотичный SHADOWDARK.alignment.lawful: Законопослушный -SHADOWDARK.alignment.neutral: Нейтральный +SHADOWDARK.alignment.neutral: SHADOWDARK.ancestry.choice_count: Choice Count SHADOWDARK.ancestry.choice: Выбор SHADOWDARK.ancestry.fixed: Fixed @@ -31,11 +31,11 @@ SHADOWDARK.app.gem_bag.tooltip.sell_gem: Продать Самоцвет SHADOWDARK.app.gem_bag.total_value: Общая стоимость SHADOWDARK.app.item_properties.armor.title: Свойства Брони SHADOWDARK.app.item_properties.languages.title: Языки -SHADOWDARK.app.item_properties.magic_item.effects.title: Magic Item Effects +SHADOWDARK.app.item_properties.magic_item.effects.title: Эффекты магического предмета SHADOWDARK.app.item_properties.save: Сохранить -SHADOWDARK.app.item_properties.talent.effects.title: Talent Effect Types +SHADOWDARK.app.item_properties.talent.effects.title: Эффект таланта SHADOWDARK.app.item_properties.title: Свойства -SHADOWDARK.app.item_properties.weapon.title: Weapon Properties +SHADOWDARK.app.item_properties.weapon.title: Свойства оружия SHADOWDARK.app.light_tracker.minute_short: мин SHADOWDARK.app.light_tracker.minutes_short: минуты SHADOWDARK.app.light_tracker.title: Трекер освещения @@ -189,9 +189,9 @@ SHADOWDARK.class-ability.ability.label: SHADOWDARK.class-ability.available.label: Доступно SHADOWDARK.class-ability.dc.label: DC SHADOWDARK.class-ability.group.label: Группа умений -SHADOWDARK.class-ability.limited-uses.label: Limited Uses? -SHADOWDARK.class-ability.lose_on_failure.label: Lose on Failure? -SHADOWDARK.class-ability.lost.label: Lost +SHADOWDARK.class-ability.limited-uses.label: Ограниченное использование? +SHADOWDARK.class-ability.lose_on_failure.label: Проиграли при ошибке? +SHADOWDARK.class-ability.lost.label: Утеряно SHADOWDARK.class-ability.maximum.label: Максимум SHADOWDARK.class-ability.options: Настройки SHADOWDARK.class.armor.all.label: Вся броня @@ -203,13 +203,13 @@ SHADOWDARK.class.fighter: Боец SHADOWDARK.class.fixed: Fixed SHADOWDARK.class.hit_points.label: HP Die Roll SHADOWDARK.class.language_choices.count.label: Choice Count -SHADOWDARK.class.language_choices.label: Language Choices -SHADOWDARK.class.language_choices.prompt: Select Language... -SHADOWDARK.class.languages.label: Class Languages +SHADOWDARK.class.language_choices.label: Выбор языка +SHADOWDARK.class.language_choices.prompt: Выбрать язык... +SHADOWDARK.class.languages.label: Языки класса SHADOWDARK.class.priest: Жрец SHADOWDARK.class.ranger: Рейнджер SHADOWDARK.class.spellcasting_ability.label: Spellcasting Ability -SHADOWDARK.class.spellcasting_class.label: Spell Class +SHADOWDARK.class.spellcasting_class.label: Класс заклинания SHADOWDARK.class.spellcasting.base_difficulty.label: Spellcasting Base DC SHADOWDARK.class.talent_choices.count.label: Choice Count SHADOWDARK.class.talent_choices.label: Talent Choices @@ -218,7 +218,7 @@ SHADOWDARK.class.talents_table.label: Class Talents Table SHADOWDARK.class.talents.label: Таланты SHADOWDARK.class.talents.prompt: Выберите талант... SHADOWDARK.class.thief: Вор -SHADOWDARK.class.titles.levels.from.label: From +SHADOWDARK.class.titles.levels.from.label: От SHADOWDARK.class.titles.levels.label: Уровни SHADOWDARK.class.titles.levels.to.label: Кому SHADOWDARK.class.weapons.all_melee.label: Все виды оружия ближнего боя @@ -243,7 +243,7 @@ SHADOWDARK.dialog.create_custom_item: Create Custom Item SHADOWDARK.dialog.create_treasure: Create Treasure SHADOWDARK.dialog.create: Создать SHADOWDARK.dialog.edit_hp.title: Изменить HP -SHADOWDARK.dialog.edit_stats.title: Edit Stats +SHADOWDARK.dialog.edit_stats.title: Изменить характеристики SHADOWDARK.dialog.effect.choice.armor: Выберите тип брони SHADOWDARK.dialog.effect.choice.attribute: Выберите атрибут SHADOWDARK.dialog.effect.choice.damage_die: Choose Damage Die @@ -269,8 +269,8 @@ SHADOWDARK.dialog.hp_roll.title: HP Roll SHADOWDARK.dialog.item_roll.ability_bonus: Бонус умения SHADOWDARK.dialog.item_roll.item_bonus: Бонус предмета SHADOWDARK.dialog.item_roll.talent_bonus: Бонус таланта -SHADOWDARK.dialog.item_roll.title: Roll Attack with -SHADOWDARK.dialog.item_selector.default_title: Choose Items +SHADOWDARK.dialog.item_roll.title: Бросок атаки с +SHADOWDARK.dialog.item_selector.default_title: Выбрать предменты SHADOWDARK.dialog.item_selector.error.max_choices_exceeded: You can only select a maximum of {maxChoices} of this Item type. SHADOWDARK.dialog.item_selector.error.no_items_found: Unable to find items of the correct type in the available compendiums. SHADOWDARK.dialog.item_selector.select_item.prompt: Выберите предмет... @@ -283,26 +283,26 @@ SHADOWDARK.dialog.item.sell: Продать SHADOWDARK.dialog.item.use: Использовать SHADOWDARK.dialog.light_source.pick_up.title: Select actor to give lightsource SHADOWDARK.dialog.roll_mode_label: Тип броска -SHADOWDARK.dialog.roll: Roll +SHADOWDARK.dialog.roll: Бросок SHADOWDARK.dialog.scroll.learn_spell_class_warning: "WARNING: This spell is not of the same class as the character, are you sure you wish to try and learn it?" SHADOWDARK.dialog.scroll.wrong_class_confirm: Подтвердить обучение заклинанию SHADOWDARK.dialog.select_ancestry.prompt: Select Ancestry... SHADOWDARK.dialog.select_ancestry.title: Choose Ancestry SHADOWDARK.dialog.select_armor_property.prompt: Select Armor Property... SHADOWDARK.dialog.select_armor_property.title: Choose Armor Properties -SHADOWDARK.dialog.select_background.prompt: Select Background... -SHADOWDARK.dialog.select_background.title: Choose Background +SHADOWDARK.dialog.select_background.prompt: Выбрать предысторию... +SHADOWDARK.dialog.select_background.title: Выберите предысторию SHADOWDARK.dialog.select_class.prompt: Выбрать класс... SHADOWDARK.dialog.select_class.title: Выберите класс -SHADOWDARK.dialog.select_deity.prompt: Select Deity... -SHADOWDARK.dialog.select_deity.title: Choose Deity +SHADOWDARK.dialog.select_deity.prompt: Выбрать божество... +SHADOWDARK.dialog.select_deity.title: Выберите божество SHADOWDARK.dialog.select_languages.prompt: Выбрать язык... SHADOWDARK.dialog.select_languages.title: Выберите язык -SHADOWDARK.dialog.select_weapon_property.prompt: Select Weapon Property... -SHADOWDARK.dialog.select_weapon_property.title: Choose Weapon Properties -SHADOWDARK.dialog.spell_roll.title: Cast Spell with +SHADOWDARK.dialog.select_weapon_property.prompt: Выбрать свойство оружия... +SHADOWDARK.dialog.select_weapon_property.title: Выберите свойства оружия +SHADOWDARK.dialog.spell_roll.title: Использовать заклинание с SHADOWDARK.dialog.submit: Продолжить -SHADOWDARK.dialog.tooltip.talent_advantage: A talent is giving you advantage to this roll +SHADOWDARK.dialog.tooltip.talent_advantage: Талант дает вам преимущество для этого броска SHADOWDARK.dialog.type_here: Type Here SHADOWDARK.dragdrop: Перетащите сюда SHADOWDARK.effect_duration.hours: Часы @@ -488,11 +488,11 @@ SHADOWDARK.item.spell_range: Дальность SHADOWDARK.item.spell_tier: Уровень SHADOWDARK.item.spell.label: Заклинание SHADOWDARK.item.stashed.label: Stashed -SHADOWDARK.item.talent_class: Talent Class +SHADOWDARK.item.talent_class: Класс таланта SHADOWDARK.item.treasure_name: Название сокровища -SHADOWDARK.item.treasure_value: Treasure Value +SHADOWDARK.item.treasure_value: Цена сокровища SHADOWDARK.item.treasure: Сокровище -SHADOWDARK.item.type: Item Type +SHADOWDARK.item.type: Тип предмета SHADOWDARK.item.wand.label: Палочка SHADOWDARK.item.weapon_damage.oneHanded_short: 1H SHADOWDARK.item.weapon_damage.oneHanded: 1H Damage @@ -519,7 +519,7 @@ SHADOWDARK.item.weapon.base_weapon.wand: Палочка SHADOWDARK.item.weapon.base_weapon.warhammer: Warhammer SHADOWDARK.language_choices.common.label: Additional Common SHADOWDARK.language_choices.rare.label: Additional Rare -SHADOWDARK.language.celestial: Celestial +SHADOWDARK.language.celestial: Божественный SHADOWDARK.language.common: Common SHADOWDARK.language.diabolic: Diabolic SHADOWDARK.language.draconic: Draconic From 12a7dd721a01088b83e9fb27166bd20f9e133a5c Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Fri, 18 Oct 2024 20:46:51 +0100 Subject: [PATCH 012/182] update item schema --- .../packs/gear.db/armor__np4FRJ73NRBEQKnS.json | 1 + .../gear.db/arrows__XXwA9ZWajYEDmcea.json | 1 + .../gear.db/backpack__oSnfz4qcWlUL6cDZ.json | 1 + .../gear.db/basic_gear__0ws7y8D3IktigkiB.json | 1 + .../bastard_sword__1T8oUkfkBtYTLNF3.json | 1 + .../gear.db/blowgun__FkcwP4cmpdM5pcOm.json | 1 + .../packs/gear.db/bolas__iMu2tHuqGfJ7XjsS.json | 1 + .../gear.db/bottle__bGrhQMkhE2qwjL4j.json | 1 + .../gear.db/caltrops__SzpjMuJrhF5nMJ7H.json | 1 + data/packs/gear.db/club__JM2XN855QYNhgtre.json | 1 + .../crawling_kit__fJHwwn6TEfbdr8CM.json | 1 + .../gear.db/crossbow__eeVEJexfirwWzOVu.json | 1 + .../crossbow_bolts__iv8fMPiRYfsN8ICy.json | 2 ++ .../gear.db/crowbar__GbO6CggW71qMkgrG.json | 1 + .../gear.db/dagger__C3mc5OlKPSJNMrng.json | 1 + .../packs/gear.db/flask__W2fFimb0y85wmOMb.json | 1 + .../flint_and_steel__ERprfuTIFRFEix9G.json | 1 + .../grappling_hook__fqsLWV46NWH0L53l.json | 1 + .../gear.db/greataxe__9Pnhl6SOsbf6qDmt.json | 1 + .../gear.db/greatsword__eqUuf9OGupuGPsBM.json | 1 + .../gear.db/handaxe__3DxwBvjceq0FxcsC.json | 1 + .../herbal_remedies__iHOSxtXRWKd2vx1U.json | 1 + .../gear.db/holy_symbol__uS2iSw8NLx8V0jb7.json | 1 + .../gear.db/iron_spikes__EPndk3DPOEOSvbga.json | 1 + .../gear.db/javelin__B3ZPeUtbChN8lrDm.json | 1 + .../gear.db/lantern__lCWOUkVp4N1geMRt.json | 1 + .../gear.db/light_spell__PkQXG3AaHNMVwGTc.json | 1 + ...spell__double_range___BBDG7QpHOFXG6sKe.json | 1 + ..._spell__double_time___rjNBToTJCYLLdVcT.json | 1 + .../gear.db/longbow__GzA5T0aewhouRsa3.json | 1 + .../gear.db/longsword__ZPUhNMmwXXrtbCXi.json | 1 + data/packs/gear.db/mace__jGZyVuFJnW7QcBFX.json | 1 + .../gear.db/mirror__GUqtnSXkcytZnNiO.json | 1 + .../gear.db/morningstar__BThyJ1NC6JcRXxeX.json | 1 + .../gear.db/oil__flask__80bCpXdZcj0Cz1fE.json | 1 + data/packs/gear.db/pike__4nmzFv43ua8nZDS7.json | 1 + data/packs/gear.db/pole__15X5GTX96y339EKY.json | 1 + .../gear.db/rations__GX6OmWQiE7MzTmjX.json | 1 + .../gear.db/razor_chain__LW3MgxeOaEPPaiY2.json | 1 + .../gear.db/rope__60___6ZRwVHFlh5QiyZWC.json | 1 + .../gear.db/scimitar__DKBDkJ3LcRv8scLv.json | 1 + .../gear.db/shortbow__UfHAWj5weH111Bea.json | 1 + .../gear.db/shortsword__KQTWQwznjK80gVEU.json | 1 + .../gear.db/shuriken__sDHZZx1xaCRPmhXY.json | 1 + .../packs/gear.db/sling__FWgFPQDKkBiTMYhd.json | 1 + .../packs/gear.db/spear__brIFMH0sOVmqX02N.json | 1 + .../packs/gear.db/staff__9eTpsuEuzL3Vaxge.json | 1 + .../packs/gear.db/stave__P4aAkDkgwR9zcATw.json | 1 + .../thieves__tools__mSDuPGnQZA8ArsVP.json | 1 + .../packs/gear.db/torch__z3xc7HGysC4ZCU8e.json | 1 + .../gear.db/warhammer__z98LNu4yOIe1B1eg.json | 1 + .../gear.db/weapons__LVzvIhYHieRT4O6q.json | 1 + data/packs/gear.db/whip__GgSheZNm2cOQYpZP.json | 1 + .../breakable__e5RpI0crHweCVt8B.json | 18 ++++++++++++++++++ .../returning__R9rw4pKdIHfJJoyJ.json | 18 ++++++++++++++++++ .../arrows__VpTCdbqTR9E598YZ.json | 2 ++ .../backpack__1vAVQJDhfaaVbhyp.json | 1 + .../backpack__GeGJd2KX1K5znhFO.json | 1 + .../backpack__QeITEulJNBuNFS7X.json | 1 + .../backpack__T077p9NE16dhlFTS.json | 1 + .../backpack__eHjjMhwUh3ARPpmL.json | 1 + .../backpack__jKlLzwcXrOndiaiw.json | 1 + .../backpack__nNrwojodUMPDNzcv.json | 1 + .../backpack__yGk32Oj2kUDw6hVj.json | 1 + .../bastard_sword__eZenY58xIvu8hp2e.json | 1 + .../caltrops__GtncgMsIBndkotOc.json | 1 + .../crossbow__e04loDnEXhVPS9uK.json | 2 ++ .../crossbow__kJbjoRI9rKem1LGC.json | 2 ++ .../crossbow__mtW8WkUwBnpqlZ4h.json | 2 ++ .../crossbow_bolts__9Vye8t1cVC0DsXwC.json | 2 ++ .../crossbow_bolts__c2NFgYJeOE8jrnKd.json | 2 ++ .../crossbow_bolts__xHdgeKNZwX1CZGQE.json | 2 ++ .../dagger__15j8vdCGXCjRSxFw.json | 1 + .../dagger__AwSIYqqvkOthL8y6.json | 1 + .../dagger__HsowE8JPDwcXugdG.json | 1 + .../dagger__LRXImQ7OWk4vOjrl.json | 1 + .../dagger__x3r2C2HW9zycqkJf.json | 1 + .../flint_and_steel__5wPOo8V5whIcnh53.json | 1 + .../flint_and_steel__F3qpt5jMsuQeCbGR.json | 1 + .../flint_and_steel__Thp4uasF5BQqWebW.json | 1 + .../flint_and_steel__VcucOtwS5c5RLK4Y.json | 1 + .../flint_and_steel__XuHeCgLGZN6TxQON.json | 1 + .../flint_and_steel__hTVvmfiM8ieOdh7G.json | 1 + .../flint_and_steel__sz1Gs3iY5MUWxYpi.json | 1 + .../flint_and_steel__zXEWYqUZdmA7DgkF.json | 1 + .../glass_bottle__NviSbJMXs6ybogWA.json | 1 + .../grappling_hook__CGJ4zxmqFilgRBIZ.json | 1 + .../grappling_hook__Cr7qzqzaDWhilQkk.json | 1 + .../grappling_hook__M4jvL3R1rk8IOdbm.json | 1 + .../grappling_hook__O27wAuWdSUBKghgb.json | 1 + .../grappling_hook__gQyQO1Hr0IYH5YRy.json | 1 + .../grappling_hook__n1MVBH6jyMdWE328.json | 1 + .../grappling_hook__oGqS5PguQp3WZZQy.json | 1 + .../grappling_hook__pYzxdDoL9B71fwXi.json | 1 + .../greataxe__TAct2bpnAxoqzTwy.json | 1 + .../holy_symbol__DCoYkIeAIqHhwPSf.json | 1 + .../holy_symbol__q4JHCDu0psd87ur1.json | 1 + .../iron_spikes__6f2SlF0mXnQ51TED.json | 1 + .../iron_spikes__CxsgtxPTvKncLCss.json | 1 + .../iron_spikes__YRADimUOmLtgLGrM.json | 1 + .../iron_spikes__aLySFO7PG7ShIhCL.json | 1 + .../iron_spikes__poJXwr7Ub9hjc7wL.json | 1 + .../iron_spikes__ptIYLALpv3fp7eU2.json | 1 + .../longbow__bKa5QTkhswSY7Aun.json | 2 ++ .../longsword__dnuYDVd7SgqrfKY9.json | 1 + .../mace__cHZjYo5oMf0HxWTy.json | 1 + .../mirror__8e9zdenZBp76oo5p.json | 1 + .../oil__flask__2Gzbipgoj6Z7tV0d.json | 1 + .../oil__flask__SNXENbquwIjutUJb.json | 1 + .../oil__flask__gG12BJNIBzy8yAlL.json | 1 + .../pole__BDHZe8ldaFBgWHyX.json | 1 + .../pole__BQhCxvXqYDTbtakk.json | 1 + .../pole__S3Rl0alx007H2ARI.json | 1 + .../rations__2Nlz8gpgw8GQBIQo.json | 1 + .../rations__HfM0MiY94jVNSgvc.json | 1 + .../rations__KweJlGZEOMRpfA6B.json | 1 + .../rations__RE57glfjQDWmUPvb.json | 1 + .../rations__VDwq1t7Rc307JOYN.json | 1 + .../rations__lkntck7at9tHx5Qh.json | 1 + .../rations__oUmSAHtdK7AORBd8.json | 1 + .../rations__p9QyPSnhyYOLRsCU.json | 1 + .../rope__60___8ZpTsEeOlSwVXych.json | 1 + .../rope__60___8rVULJROdeWjmT9T.json | 1 + .../rope__60___PjXR94ictUmCN2G4.json | 1 + .../rope__60___afq1X2Gkjm0jcH2f.json | 1 + .../rope__60___e2IRtPXtNiowfjLA.json | 1 + .../rope__60___lQI9KwjnfIND3nma.json | 1 + .../rope__60___sJM0Y7earrkzzpKo.json | 1 + .../rope__60___w5zb0vxH53Twdfe8.json | 1 + .../spear__Q656geesxoWkZ84o.json | 1 + .../spear__veYd8eMEg9lTCHrj.json | 1 + .../staff__5xUXFKSnVONHeZ4N.json | 1 + .../thieves__tools__7PV3EnXdLwsYnEKn.json | 1 + .../thieves__tools__iM40sRNKUdden6Ec.json | 1 + .../torch__Drkn5HCuzmZ4lXeQ.json | 1 + .../torch__JdRGcsO8jifzrNWO.json | 1 + .../torch__P6Oxhve94ZplRNWo.json | 1 + .../torch__n56KlB5bbj6MeA2N.json | 1 + .../torch__nIlTwpCCTFzsBYGR.json | 1 + .../torch__vBLkpFZRLX18CAKF.json | 1 + .../torch__w43og0dpp1JlvYzm.json | 1 + .../torch__yweKz9055Wr2X6KT.json | 1 + .../torch__zKAsEsIkGqHapmLH.json | 1 + 143 files changed, 186 insertions(+) create mode 100644 data/packs/properties.db/breakable__e5RpI0crHweCVt8B.json create mode 100644 data/packs/properties.db/returning__R9rw4pKdIHfJJoyJ.json diff --git a/data/packs/gear.db/armor__np4FRJ73NRBEQKnS.json b/data/packs/gear.db/armor__np4FRJ73NRBEQKnS.json index 68bb5c36..eec4d938 100644 --- a/data/packs/gear.db/armor__np4FRJ73NRBEQKnS.json +++ b/data/packs/gear.db/armor__np4FRJ73NRBEQKnS.json @@ -2,6 +2,7 @@ "_id": "np4FRJ73NRBEQKnS", "_key": "!folders!np4FRJ73NRBEQKnS", "color": "#22252b", + "description": "", "folder": null, "name": "Armor", "sorting": "a", diff --git a/data/packs/gear.db/arrows__XXwA9ZWajYEDmcea.json b/data/packs/gear.db/arrows__XXwA9ZWajYEDmcea.json index 975e41cf..bd70971d 100644 --- a/data/packs/gear.db/arrows__XXwA9ZWajYEDmcea.json +++ b/data/packs/gear.db/arrows__XXwA9ZWajYEDmcea.json @@ -16,6 +16,7 @@ }, "description": "

Ammunition for shortbows or longbows.

", "equipped": false, + "isAmmunition": true, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/backpack__oSnfz4qcWlUL6cDZ.json b/data/packs/gear.db/backpack__oSnfz4qcWlUL6cDZ.json index 42fd54fc..cdaf7abd 100644 --- a/data/packs/gear.db/backpack__oSnfz4qcWlUL6cDZ.json +++ b/data/packs/gear.db/backpack__oSnfz4qcWlUL6cDZ.json @@ -16,6 +16,7 @@ }, "description": "

Holds all the gear you can carry. Don't lose it.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/basic_gear__0ws7y8D3IktigkiB.json b/data/packs/gear.db/basic_gear__0ws7y8D3IktigkiB.json index 44bfe8f2..045bbbbb 100644 --- a/data/packs/gear.db/basic_gear__0ws7y8D3IktigkiB.json +++ b/data/packs/gear.db/basic_gear__0ws7y8D3IktigkiB.json @@ -2,6 +2,7 @@ "_id": "0ws7y8D3IktigkiB", "_key": "!folders!0ws7y8D3IktigkiB", "color": "#22252b", + "description": "", "folder": null, "name": "Basic Gear", "sorting": "a", diff --git a/data/packs/gear.db/bastard_sword__1T8oUkfkBtYTLNF3.json b/data/packs/gear.db/bastard_sword__1T8oUkfkBtYTLNF3.json index 545b2f65..fe700517 100644 --- a/data/packs/gear.db/bastard_sword__1T8oUkfkBtYTLNF3.json +++ b/data/packs/gear.db/bastard_sword__1T8oUkfkBtYTLNF3.json @@ -7,6 +7,7 @@ "img": "icons/weapons/swords/sword-hilt-steel-green.webp", "name": "Bastard Sword", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/blowgun__FkcwP4cmpdM5pcOm.json b/data/packs/gear.db/blowgun__FkcwP4cmpdM5pcOm.json index 01ee7bb3..38c8803a 100644 --- a/data/packs/gear.db/blowgun__FkcwP4cmpdM5pcOm.json +++ b/data/packs/gear.db/blowgun__FkcwP4cmpdM5pcOm.json @@ -7,6 +7,7 @@ "img": "icons/weapons/thrown/dart-feathered.webp", "name": "Blowgun", "system": { + "ammoClass": "", "baseWeapon": "", "bonuses": { "attackBonus": 0, diff --git a/data/packs/gear.db/bolas__iMu2tHuqGfJ7XjsS.json b/data/packs/gear.db/bolas__iMu2tHuqGfJ7XjsS.json index 23939aee..320d7d7c 100644 --- a/data/packs/gear.db/bolas__iMu2tHuqGfJ7XjsS.json +++ b/data/packs/gear.db/bolas__iMu2tHuqGfJ7XjsS.json @@ -7,6 +7,7 @@ "img": "icons/weapons/thrown/bolas-steel.webp", "name": "Bolas", "system": { + "ammoClass": "", "baseWeapon": "", "bonuses": { "attackBonus": 0, diff --git a/data/packs/gear.db/bottle__bGrhQMkhE2qwjL4j.json b/data/packs/gear.db/bottle__bGrhQMkhE2qwjL4j.json index 020fc74c..0864e119 100644 --- a/data/packs/gear.db/bottle__bGrhQMkhE2qwjL4j.json +++ b/data/packs/gear.db/bottle__bGrhQMkhE2qwjL4j.json @@ -16,6 +16,7 @@ }, "description": "

Glass containers that hold one draught of liquid.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/caltrops__SzpjMuJrhF5nMJ7H.json b/data/packs/gear.db/caltrops__SzpjMuJrhF5nMJ7H.json index 597797b9..e2630de3 100644 --- a/data/packs/gear.db/caltrops__SzpjMuJrhF5nMJ7H.json +++ b/data/packs/gear.db/caltrops__SzpjMuJrhF5nMJ7H.json @@ -16,6 +16,7 @@ }, "description": "

Tiny, triangle-shaped iron spikes. Living creatures who step on caltrops take 1 damage and can only move at half speed for 10 rounds.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/club__JM2XN855QYNhgtre.json b/data/packs/gear.db/club__JM2XN855QYNhgtre.json index 9967d0dd..3156731b 100644 --- a/data/packs/gear.db/club__JM2XN855QYNhgtre.json +++ b/data/packs/gear.db/club__JM2XN855QYNhgtre.json @@ -7,6 +7,7 @@ "img": "icons/weapons/clubs/club-banded-steel.webp", "name": "Club", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/crawling_kit__fJHwwn6TEfbdr8CM.json b/data/packs/gear.db/crawling_kit__fJHwwn6TEfbdr8CM.json index c9da2b27..9f634d07 100644 --- a/data/packs/gear.db/crawling_kit__fJHwwn6TEfbdr8CM.json +++ b/data/packs/gear.db/crawling_kit__fJHwwn6TEfbdr8CM.json @@ -16,6 +16,7 @@ }, "description": "

A crawling kit costs 7 gp. It uses 7 gear slots and contains the following items.

  • @UUID[Compendium.shadowdark.gear.oSnfz4qcWlUL6cDZ]{Backpack}

  • @UUID[Compendium.shadowdark.gear.ERprfuTIFRFEix9G]{Flint and Steel}

  • 2x @UUID[Compendium.shadowdark.gear.z3xc7HGysC4ZCU8e]{Torch}

  • @UUID[Compendium.shadowdark.gear.EPndk3DPOEOSvbga]{Iron Spikes}

  • @UUID[Compendium.shadowdark.gear.GX6OmWQiE7MzTmjX]{Rations}

  • @UUID[Compendium.shadowdark.gear.fqsLWV46NWH0L53l]{Grappling Hook}

  • @UUID[Compendium.shadowdark.gear.6ZRwVHFlh5QiyZWC]{Rope, 60'}

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/crossbow__eeVEJexfirwWzOVu.json b/data/packs/gear.db/crossbow__eeVEJexfirwWzOVu.json index a40d832e..b4ef1b6a 100644 --- a/data/packs/gear.db/crossbow__eeVEJexfirwWzOVu.json +++ b/data/packs/gear.db/crossbow__eeVEJexfirwWzOVu.json @@ -7,6 +7,7 @@ "img": "icons/weapons/crossbows/crossbow-purple.webp", "name": "Crossbow", "system": { + "ammoClass": "crossbow-bolts", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/crossbow_bolts__iv8fMPiRYfsN8ICy.json b/data/packs/gear.db/crossbow_bolts__iv8fMPiRYfsN8ICy.json index b5c44e13..83193b4f 100644 --- a/data/packs/gear.db/crossbow_bolts__iv8fMPiRYfsN8ICy.json +++ b/data/packs/gear.db/crossbow_bolts__iv8fMPiRYfsN8ICy.json @@ -16,6 +16,7 @@ }, "description": "

Ammunition for crossbows.

", "equipped": false, + "isAmmunition": true, "isPhysical": true, "light": { "active": false, @@ -26,6 +27,7 @@ "template": "torch" }, "magicItem": false, + "predefinedEffects": "", "quantity": 20, "scroll": false, "slots": { diff --git a/data/packs/gear.db/crowbar__GbO6CggW71qMkgrG.json b/data/packs/gear.db/crowbar__GbO6CggW71qMkgrG.json index 7cd84845..bab66b2a 100644 --- a/data/packs/gear.db/crowbar__GbO6CggW71qMkgrG.json +++ b/data/packs/gear.db/crowbar__GbO6CggW71qMkgrG.json @@ -16,6 +16,7 @@ }, "description": "

Grants advantage on checks to pry open stuck objects.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/dagger__C3mc5OlKPSJNMrng.json b/data/packs/gear.db/dagger__C3mc5OlKPSJNMrng.json index d792d65a..0bec8b0d 100644 --- a/data/packs/gear.db/dagger__C3mc5OlKPSJNMrng.json +++ b/data/packs/gear.db/dagger__C3mc5OlKPSJNMrng.json @@ -7,6 +7,7 @@ "img": "icons/weapons/daggers/dagger-jeweled-purple.webp", "name": "Dagger", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/flask__W2fFimb0y85wmOMb.json b/data/packs/gear.db/flask__W2fFimb0y85wmOMb.json index 77e88c75..3f588103 100644 --- a/data/packs/gear.db/flask__W2fFimb0y85wmOMb.json +++ b/data/packs/gear.db/flask__W2fFimb0y85wmOMb.json @@ -16,6 +16,7 @@ }, "description": "

Glass containers that hold one draught of liquid.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/flint_and_steel__ERprfuTIFRFEix9G.json b/data/packs/gear.db/flint_and_steel__ERprfuTIFRFEix9G.json index acd42c5e..0145f444 100644 --- a/data/packs/gear.db/flint_and_steel__ERprfuTIFRFEix9G.json +++ b/data/packs/gear.db/flint_and_steel__ERprfuTIFRFEix9G.json @@ -16,6 +16,7 @@ }, "description": "

A small fire starter. With it, routine attempts to light a fire always succeed.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/grappling_hook__fqsLWV46NWH0L53l.json b/data/packs/gear.db/grappling_hook__fqsLWV46NWH0L53l.json index acd58912..b9a5a368 100644 --- a/data/packs/gear.db/grappling_hook__fqsLWV46NWH0L53l.json +++ b/data/packs/gear.db/grappling_hook__fqsLWV46NWH0L53l.json @@ -16,6 +16,7 @@ }, "description": "

A rope anchor with three, curved tines.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/greataxe__9Pnhl6SOsbf6qDmt.json b/data/packs/gear.db/greataxe__9Pnhl6SOsbf6qDmt.json index 6751bb8f..f1f4abd1 100644 --- a/data/packs/gear.db/greataxe__9Pnhl6SOsbf6qDmt.json +++ b/data/packs/gear.db/greataxe__9Pnhl6SOsbf6qDmt.json @@ -7,6 +7,7 @@ "img": "icons/weapons/axes/axe-broad-engraved-chipped-blue.webp", "name": "Greataxe", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/greatsword__eqUuf9OGupuGPsBM.json b/data/packs/gear.db/greatsword__eqUuf9OGupuGPsBM.json index 237a9140..066fa0a0 100644 --- a/data/packs/gear.db/greatsword__eqUuf9OGupuGPsBM.json +++ b/data/packs/gear.db/greatsword__eqUuf9OGupuGPsBM.json @@ -7,6 +7,7 @@ "img": "icons/weapons/swords/greatsword-crossguard-flanged-purple.webp", "name": "Greatsword", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/handaxe__3DxwBvjceq0FxcsC.json b/data/packs/gear.db/handaxe__3DxwBvjceq0FxcsC.json index 94cace2d..e75b6d50 100644 --- a/data/packs/gear.db/handaxe__3DxwBvjceq0FxcsC.json +++ b/data/packs/gear.db/handaxe__3DxwBvjceq0FxcsC.json @@ -7,6 +7,7 @@ "img": "icons/weapons/axes/axe-broad-purple.webp", "name": "Handaxe", "system": { + "ammoClass": "", "baseWeapon": "", "bonuses": { "attackBonus": 0, diff --git a/data/packs/gear.db/herbal_remedies__iHOSxtXRWKd2vx1U.json b/data/packs/gear.db/herbal_remedies__iHOSxtXRWKd2vx1U.json index 381adb5b..8eafe91f 100644 --- a/data/packs/gear.db/herbal_remedies__iHOSxtXRWKd2vx1U.json +++ b/data/packs/gear.db/herbal_remedies__iHOSxtXRWKd2vx1U.json @@ -2,6 +2,7 @@ "_id": "iHOSxtXRWKd2vx1U", "_key": "!folders!iHOSxtXRWKd2vx1U", "color": "#22252b", + "description": "", "folder": null, "name": "Herbal Remedies", "sorting": "a", diff --git a/data/packs/gear.db/holy_symbol__uS2iSw8NLx8V0jb7.json b/data/packs/gear.db/holy_symbol__uS2iSw8NLx8V0jb7.json index 66315819..b8f53db7 100644 --- a/data/packs/gear.db/holy_symbol__uS2iSw8NLx8V0jb7.json +++ b/data/packs/gear.db/holy_symbol__uS2iSw8NLx8V0jb7.json @@ -16,6 +16,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/iron_spikes__EPndk3DPOEOSvbga.json b/data/packs/gear.db/iron_spikes__EPndk3DPOEOSvbga.json index 8f52ee19..ff7c5456 100644 --- a/data/packs/gear.db/iron_spikes__EPndk3DPOEOSvbga.json +++ b/data/packs/gear.db/iron_spikes__EPndk3DPOEOSvbga.json @@ -16,6 +16,7 @@ }, "description": "

Strong spikes. Each has a hole for threading

rope. Can be hammered in with weapons or other iron spikes.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/javelin__B3ZPeUtbChN8lrDm.json b/data/packs/gear.db/javelin__B3ZPeUtbChN8lrDm.json index cbe30761..857a917c 100644 --- a/data/packs/gear.db/javelin__B3ZPeUtbChN8lrDm.json +++ b/data/packs/gear.db/javelin__B3ZPeUtbChN8lrDm.json @@ -7,6 +7,7 @@ "img": "icons/weapons/polearms/javelin.webp", "name": "Javelin", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/lantern__lCWOUkVp4N1geMRt.json b/data/packs/gear.db/lantern__lCWOUkVp4N1geMRt.json index 7876f8da..b1b15add 100644 --- a/data/packs/gear.db/lantern__lCWOUkVp4N1geMRt.json +++ b/data/packs/gear.db/lantern__lCWOUkVp4N1geMRt.json @@ -16,6 +16,7 @@ }, "description": "

Casts light up to a double near distance (see Light, pg. 46). Requires oil. Has a shutter to hide the light.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/light_spell__PkQXG3AaHNMVwGTc.json b/data/packs/gear.db/light_spell__PkQXG3AaHNMVwGTc.json index cf667bba..0db3d461 100644 --- a/data/packs/gear.db/light_spell__PkQXG3AaHNMVwGTc.json +++ b/data/packs/gear.db/light_spell__PkQXG3AaHNMVwGTc.json @@ -16,6 +16,7 @@ }, "description": "

Dummy item that acts like a light source cast by the @UUID[Compendium.shadowdark.spells.N4v17mtxJlVBbgpn]{Light} spell.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/light_spell__double_range___BBDG7QpHOFXG6sKe.json b/data/packs/gear.db/light_spell__double_range___BBDG7QpHOFXG6sKe.json index 63f620b7..ffb738b1 100644 --- a/data/packs/gear.db/light_spell__double_range___BBDG7QpHOFXG6sKe.json +++ b/data/packs/gear.db/light_spell__double_range___BBDG7QpHOFXG6sKe.json @@ -16,6 +16,7 @@ }, "description": "

Dummy item that acts like a light source cast by the double range @UUID[Compendium.shadowdark.spells.N4v17mtxJlVBbgpn]{Light} spell.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/light_spell__double_time___rjNBToTJCYLLdVcT.json b/data/packs/gear.db/light_spell__double_time___rjNBToTJCYLLdVcT.json index b53fd9cd..3e49b6db 100644 --- a/data/packs/gear.db/light_spell__double_time___rjNBToTJCYLLdVcT.json +++ b/data/packs/gear.db/light_spell__double_time___rjNBToTJCYLLdVcT.json @@ -16,6 +16,7 @@ }, "description": "

Dummy item that acts like a light source cast by the @UUID[Compendium.shadowdark.spells.N4v17mtxJlVBbgpn]{Light} spell.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/longbow__GzA5T0aewhouRsa3.json b/data/packs/gear.db/longbow__GzA5T0aewhouRsa3.json index cf6a54b1..6f599c5f 100644 --- a/data/packs/gear.db/longbow__GzA5T0aewhouRsa3.json +++ b/data/packs/gear.db/longbow__GzA5T0aewhouRsa3.json @@ -7,6 +7,7 @@ "img": "icons/weapons/bows/longbow-leather-green.webp", "name": "Longbow", "system": { + "ammoClass": "arrows", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/longsword__ZPUhNMmwXXrtbCXi.json b/data/packs/gear.db/longsword__ZPUhNMmwXXrtbCXi.json index cc84f03f..a2f30efc 100644 --- a/data/packs/gear.db/longsword__ZPUhNMmwXXrtbCXi.json +++ b/data/packs/gear.db/longsword__ZPUhNMmwXXrtbCXi.json @@ -7,6 +7,7 @@ "img": "icons/weapons/swords/sword-guard.webp", "name": "Longsword", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/mace__jGZyVuFJnW7QcBFX.json b/data/packs/gear.db/mace__jGZyVuFJnW7QcBFX.json index f2cc7f82..79226e6b 100644 --- a/data/packs/gear.db/mace__jGZyVuFJnW7QcBFX.json +++ b/data/packs/gear.db/mace__jGZyVuFJnW7QcBFX.json @@ -7,6 +7,7 @@ "img": "icons/weapons/maces/mace-round-ornate-purple.webp", "name": "Mace", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/mirror__GUqtnSXkcytZnNiO.json b/data/packs/gear.db/mirror__GUqtnSXkcytZnNiO.json index fe1361dc..8f3b02a9 100644 --- a/data/packs/gear.db/mirror__GUqtnSXkcytZnNiO.json +++ b/data/packs/gear.db/mirror__GUqtnSXkcytZnNiO.json @@ -16,6 +16,7 @@ }, "description": "

A small, polished mirror.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/morningstar__BThyJ1NC6JcRXxeX.json b/data/packs/gear.db/morningstar__BThyJ1NC6JcRXxeX.json index 753cea92..6c970a1a 100644 --- a/data/packs/gear.db/morningstar__BThyJ1NC6JcRXxeX.json +++ b/data/packs/gear.db/morningstar__BThyJ1NC6JcRXxeX.json @@ -7,6 +7,7 @@ "img": "icons/weapons/clubs/club-barbed-skull.webp", "name": "Morningstar", "system": { + "ammoClass": "", "baseWeapon": "", "bonuses": { "attackBonus": 0, diff --git a/data/packs/gear.db/oil__flask__80bCpXdZcj0Cz1fE.json b/data/packs/gear.db/oil__flask__80bCpXdZcj0Cz1fE.json index 8248d6e6..7fa1e2af 100644 --- a/data/packs/gear.db/oil__flask__80bCpXdZcj0Cz1fE.json +++ b/data/packs/gear.db/oil__flask__80bCpXdZcj0Cz1fE.json @@ -16,6 +16,7 @@ }, "description": "

Fuels a lantern for one hour of real time. One flask covers a close area and burns for 4 rounds, dealing 1d4 damage each round.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/pike__4nmzFv43ua8nZDS7.json b/data/packs/gear.db/pike__4nmzFv43ua8nZDS7.json index cccd3efe..a36d181b 100644 --- a/data/packs/gear.db/pike__4nmzFv43ua8nZDS7.json +++ b/data/packs/gear.db/pike__4nmzFv43ua8nZDS7.json @@ -7,6 +7,7 @@ "img": "icons/weapons/polearms/pike-flared-brown.webp", "name": "Pike", "system": { + "ammoClass": "", "baseWeapon": "", "bonuses": { "attackBonus": 0, diff --git a/data/packs/gear.db/pole__15X5GTX96y339EKY.json b/data/packs/gear.db/pole__15X5GTX96y339EKY.json index 58ed160f..1a2f76cd 100644 --- a/data/packs/gear.db/pole__15X5GTX96y339EKY.json +++ b/data/packs/gear.db/pole__15X5GTX96y339EKY.json @@ -16,6 +16,7 @@ }, "description": "

Wooden, 10' long.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/rations__GX6OmWQiE7MzTmjX.json b/data/packs/gear.db/rations__GX6OmWQiE7MzTmjX.json index 126f68f2..c5aefb3e 100644 --- a/data/packs/gear.db/rations__GX6OmWQiE7MzTmjX.json +++ b/data/packs/gear.db/rations__GX6OmWQiE7MzTmjX.json @@ -16,6 +16,7 @@ }, "description": "

One day of food and water supply for one person.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/razor_chain__LW3MgxeOaEPPaiY2.json b/data/packs/gear.db/razor_chain__LW3MgxeOaEPPaiY2.json index 465ebf3b..c141477c 100644 --- a/data/packs/gear.db/razor_chain__LW3MgxeOaEPPaiY2.json +++ b/data/packs/gear.db/razor_chain__LW3MgxeOaEPPaiY2.json @@ -7,6 +7,7 @@ "img": "icons/tools/fasteners/chain-hook-grey.webp", "name": "Razor Chain", "system": { + "ammoClass": "", "baseWeapon": "", "bonuses": { "attackBonus": 0, diff --git a/data/packs/gear.db/rope__60___6ZRwVHFlh5QiyZWC.json b/data/packs/gear.db/rope__60___6ZRwVHFlh5QiyZWC.json index d99b25a1..0ebe954e 100644 --- a/data/packs/gear.db/rope__60___6ZRwVHFlh5QiyZWC.json +++ b/data/packs/gear.db/rope__60___6ZRwVHFlh5QiyZWC.json @@ -16,6 +16,7 @@ }, "description": "

Hemp, 60’ long.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/scimitar__DKBDkJ3LcRv8scLv.json b/data/packs/gear.db/scimitar__DKBDkJ3LcRv8scLv.json index fece6ead..9fcdd48e 100644 --- a/data/packs/gear.db/scimitar__DKBDkJ3LcRv8scLv.json +++ b/data/packs/gear.db/scimitar__DKBDkJ3LcRv8scLv.json @@ -7,6 +7,7 @@ "img": "icons/weapons/swords/scimitar-guard-gold.webp", "name": "Scimitar", "system": { + "ammoClass": "", "baseWeapon": "", "bonuses": { "attackBonus": 0, diff --git a/data/packs/gear.db/shortbow__UfHAWj5weH111Bea.json b/data/packs/gear.db/shortbow__UfHAWj5weH111Bea.json index 68322cd3..303b3028 100644 --- a/data/packs/gear.db/shortbow__UfHAWj5weH111Bea.json +++ b/data/packs/gear.db/shortbow__UfHAWj5weH111Bea.json @@ -7,6 +7,7 @@ "img": "icons/weapons/bows/shortbow-recurve-blue.webp", "name": "Shortbow", "system": { + "ammoClass": "arrows", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/shortsword__KQTWQwznjK80gVEU.json b/data/packs/gear.db/shortsword__KQTWQwznjK80gVEU.json index 1358fc49..4f13a54d 100644 --- a/data/packs/gear.db/shortsword__KQTWQwznjK80gVEU.json +++ b/data/packs/gear.db/shortsword__KQTWQwznjK80gVEU.json @@ -7,6 +7,7 @@ "img": "icons/weapons/swords/shortsword-guard-worn.webp", "name": "Shortsword", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/shuriken__sDHZZx1xaCRPmhXY.json b/data/packs/gear.db/shuriken__sDHZZx1xaCRPmhXY.json index 67bc8192..d1b8bc47 100644 --- a/data/packs/gear.db/shuriken__sDHZZx1xaCRPmhXY.json +++ b/data/packs/gear.db/shuriken__sDHZZx1xaCRPmhXY.json @@ -7,6 +7,7 @@ "img": "icons/weapons/thrown/shuriken-blue.webp", "name": "Shuriken", "system": { + "ammoClass": "", "baseWeapon": "", "bonuses": { "attackBonus": 0, diff --git a/data/packs/gear.db/sling__FWgFPQDKkBiTMYhd.json b/data/packs/gear.db/sling__FWgFPQDKkBiTMYhd.json index 37270cc9..7fa40a15 100644 --- a/data/packs/gear.db/sling__FWgFPQDKkBiTMYhd.json +++ b/data/packs/gear.db/sling__FWgFPQDKkBiTMYhd.json @@ -7,6 +7,7 @@ "img": "icons/weapons/slings/slingshot-wood.webp", "name": "Sling", "system": { + "ammoClass": "", "baseWeapon": "", "bonuses": { "attackBonus": 0, diff --git a/data/packs/gear.db/spear__brIFMH0sOVmqX02N.json b/data/packs/gear.db/spear__brIFMH0sOVmqX02N.json index aba63bd8..1f9cb5fb 100644 --- a/data/packs/gear.db/spear__brIFMH0sOVmqX02N.json +++ b/data/packs/gear.db/spear__brIFMH0sOVmqX02N.json @@ -7,6 +7,7 @@ "img": "icons/weapons/polearms/spear-hooked-double.webp", "name": "Spear", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/staff__9eTpsuEuzL3Vaxge.json b/data/packs/gear.db/staff__9eTpsuEuzL3Vaxge.json index 7265ecdc..d5ef736b 100644 --- a/data/packs/gear.db/staff__9eTpsuEuzL3Vaxge.json +++ b/data/packs/gear.db/staff__9eTpsuEuzL3Vaxge.json @@ -7,6 +7,7 @@ "img": "icons/weapons/staves/staff-ornate-purple.webp", "name": "Staff", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/stave__P4aAkDkgwR9zcATw.json b/data/packs/gear.db/stave__P4aAkDkgwR9zcATw.json index 08703576..c2edae97 100644 --- a/data/packs/gear.db/stave__P4aAkDkgwR9zcATw.json +++ b/data/packs/gear.db/stave__P4aAkDkgwR9zcATw.json @@ -7,6 +7,7 @@ "img": "icons/weapons/staves/staff-animal-bird.webp", "name": "Stave", "system": { + "ammoClass": "", "baseWeapon": "", "bonuses": { "attackBonus": 0, diff --git a/data/packs/gear.db/thieves__tools__mSDuPGnQZA8ArsVP.json b/data/packs/gear.db/thieves__tools__mSDuPGnQZA8ArsVP.json index d827ae8e..b86546f0 100644 --- a/data/packs/gear.db/thieves__tools__mSDuPGnQZA8ArsVP.json +++ b/data/packs/gear.db/thieves__tools__mSDuPGnQZA8ArsVP.json @@ -16,6 +16,7 @@ }, "description": "

ADV on checks to climb, sneak, hide, apply disguises, find and disable traps, and perform delicate tasks.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/torch__z3xc7HGysC4ZCU8e.json b/data/packs/gear.db/torch__z3xc7HGysC4ZCU8e.json index 48e82c5c..3dfb9e48 100644 --- a/data/packs/gear.db/torch__z3xc7HGysC4ZCU8e.json +++ b/data/packs/gear.db/torch__z3xc7HGysC4ZCU8e.json @@ -16,6 +16,7 @@ }, "description": "

Sheds light to a near distance (see Light Sources, pg. 46). Burns for one hour of real time.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/gear.db/warhammer__z98LNu4yOIe1B1eg.json b/data/packs/gear.db/warhammer__z98LNu4yOIe1B1eg.json index aea614f1..293f0a64 100644 --- a/data/packs/gear.db/warhammer__z98LNu4yOIe1B1eg.json +++ b/data/packs/gear.db/warhammer__z98LNu4yOIe1B1eg.json @@ -7,6 +7,7 @@ "img": "icons/weapons/hammers/hammer-war-rounding.webp", "name": "Warhammer", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/gear.db/weapons__LVzvIhYHieRT4O6q.json b/data/packs/gear.db/weapons__LVzvIhYHieRT4O6q.json index 24ae84ce..e78018b4 100644 --- a/data/packs/gear.db/weapons__LVzvIhYHieRT4O6q.json +++ b/data/packs/gear.db/weapons__LVzvIhYHieRT4O6q.json @@ -2,6 +2,7 @@ "_id": "LVzvIhYHieRT4O6q", "_key": "!folders!LVzvIhYHieRT4O6q", "color": "#22252b", + "description": "", "folder": null, "name": "Weapons", "sorting": "a", diff --git a/data/packs/gear.db/whip__GgSheZNm2cOQYpZP.json b/data/packs/gear.db/whip__GgSheZNm2cOQYpZP.json index 0b70e541..f161df5a 100644 --- a/data/packs/gear.db/whip__GgSheZNm2cOQYpZP.json +++ b/data/packs/gear.db/whip__GgSheZNm2cOQYpZP.json @@ -7,6 +7,7 @@ "img": "icons/weapons/misc/whip-red-yellow.webp", "name": "Whip", "system": { + "ammoClass": "", "baseWeapon": "", "bonuses": { "attackBonus": 0, diff --git a/data/packs/properties.db/breakable__e5RpI0crHweCVt8B.json b/data/packs/properties.db/breakable__e5RpI0crHweCVt8B.json new file mode 100644 index 00000000..4a0befeb --- /dev/null +++ b/data/packs/properties.db/breakable__e5RpI0crHweCVt8B.json @@ -0,0 +1,18 @@ +{ + "_id": "e5RpI0crHweCVt8B", + "_key": "!items!e5RpI0crHweCVt8B", + "effects": [ + ], + "folder": "vFaoMFPGDGlKn4gF", + "img": "icons/sundries/documents/document-torn-diagram-tan.webp", + "name": "Breakable", + "system": { + "description": "

This weapon breaks on a natural 1 attack roll.

", + "itemType": "weapon", + "predefinedEffects": "", + "source": { + "title": "cursed-scroll-4" + } + }, + "type": "Property" +} diff --git a/data/packs/properties.db/returning__R9rw4pKdIHfJJoyJ.json b/data/packs/properties.db/returning__R9rw4pKdIHfJJoyJ.json new file mode 100644 index 00000000..fe054e1b --- /dev/null +++ b/data/packs/properties.db/returning__R9rw4pKdIHfJJoyJ.json @@ -0,0 +1,18 @@ +{ + "_id": "R9rw4pKdIHfJJoyJ", + "_key": "!items!R9rw4pKdIHfJJoyJ", + "effects": [ + ], + "folder": "vFaoMFPGDGlKn4gF", + "img": "icons/sundries/documents/document-torn-diagram-tan.webp", + "name": "Returning", + "system": { + "description": "

On a missed ranged attack, this weapon returns to the thrower.

", + "itemType": "weapon", + "predefinedEffects": "", + "source": { + "title": "cursed-scroll-4" + } + }, + "type": "Property" +} diff --git a/data/packs/quickstart-pregens.db/arrows__VpTCdbqTR9E598YZ.json b/data/packs/quickstart-pregens.db/arrows__VpTCdbqTR9E598YZ.json index 928d2f09..4cbf898c 100644 --- a/data/packs/quickstart-pregens.db/arrows__VpTCdbqTR9E598YZ.json +++ b/data/packs/quickstart-pregens.db/arrows__VpTCdbqTR9E598YZ.json @@ -16,6 +16,7 @@ }, "description": "

Ammunition for shortbows or longbows.

", "equipped": false, + "isAmmunition": true, "isPhysical": true, "light": { "active": false, @@ -26,6 +27,7 @@ "template": "torch" }, "magicItem": false, + "predefinedEffects": "", "quantity": 20, "scroll": false, "slots": { diff --git a/data/packs/quickstart-pregens.db/backpack__1vAVQJDhfaaVbhyp.json b/data/packs/quickstart-pregens.db/backpack__1vAVQJDhfaaVbhyp.json index 2f776842..90be870e 100644 --- a/data/packs/quickstart-pregens.db/backpack__1vAVQJDhfaaVbhyp.json +++ b/data/packs/quickstart-pregens.db/backpack__1vAVQJDhfaaVbhyp.json @@ -16,6 +16,7 @@ }, "description": "

Holds all the gear you can carry. Don't lose it.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/backpack__GeGJd2KX1K5znhFO.json b/data/packs/quickstart-pregens.db/backpack__GeGJd2KX1K5znhFO.json index e007bfef..b40f946c 100644 --- a/data/packs/quickstart-pregens.db/backpack__GeGJd2KX1K5znhFO.json +++ b/data/packs/quickstart-pregens.db/backpack__GeGJd2KX1K5znhFO.json @@ -16,6 +16,7 @@ }, "description": "

Holds all the gear you can carry. Don't lose it.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/backpack__QeITEulJNBuNFS7X.json b/data/packs/quickstart-pregens.db/backpack__QeITEulJNBuNFS7X.json index 47d5885b..fcc91a9c 100644 --- a/data/packs/quickstart-pregens.db/backpack__QeITEulJNBuNFS7X.json +++ b/data/packs/quickstart-pregens.db/backpack__QeITEulJNBuNFS7X.json @@ -16,6 +16,7 @@ }, "description": "

Holds all the gear you can carry. Don't lose it.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/backpack__T077p9NE16dhlFTS.json b/data/packs/quickstart-pregens.db/backpack__T077p9NE16dhlFTS.json index e6a18bf9..ee907133 100644 --- a/data/packs/quickstart-pregens.db/backpack__T077p9NE16dhlFTS.json +++ b/data/packs/quickstart-pregens.db/backpack__T077p9NE16dhlFTS.json @@ -16,6 +16,7 @@ }, "description": "

Holds all the gear you can carry. Don't lose it.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/backpack__eHjjMhwUh3ARPpmL.json b/data/packs/quickstart-pregens.db/backpack__eHjjMhwUh3ARPpmL.json index 3c13ab4b..5cb7e2e6 100644 --- a/data/packs/quickstart-pregens.db/backpack__eHjjMhwUh3ARPpmL.json +++ b/data/packs/quickstart-pregens.db/backpack__eHjjMhwUh3ARPpmL.json @@ -16,6 +16,7 @@ }, "description": "

Holds all the gear you can carry. Don't lose it.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/backpack__jKlLzwcXrOndiaiw.json b/data/packs/quickstart-pregens.db/backpack__jKlLzwcXrOndiaiw.json index eecc2ff6..8c134eb0 100644 --- a/data/packs/quickstart-pregens.db/backpack__jKlLzwcXrOndiaiw.json +++ b/data/packs/quickstart-pregens.db/backpack__jKlLzwcXrOndiaiw.json @@ -16,6 +16,7 @@ }, "description": "

Holds all the gear you can carry. Don't lose it.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/backpack__nNrwojodUMPDNzcv.json b/data/packs/quickstart-pregens.db/backpack__nNrwojodUMPDNzcv.json index ea0e9d36..f0ebb202 100644 --- a/data/packs/quickstart-pregens.db/backpack__nNrwojodUMPDNzcv.json +++ b/data/packs/quickstart-pregens.db/backpack__nNrwojodUMPDNzcv.json @@ -16,6 +16,7 @@ }, "description": "

Holds all the gear you can carry. Don't lose it.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/backpack__yGk32Oj2kUDw6hVj.json b/data/packs/quickstart-pregens.db/backpack__yGk32Oj2kUDw6hVj.json index adb1d767..048db69a 100644 --- a/data/packs/quickstart-pregens.db/backpack__yGk32Oj2kUDw6hVj.json +++ b/data/packs/quickstart-pregens.db/backpack__yGk32Oj2kUDw6hVj.json @@ -16,6 +16,7 @@ }, "description": "

Holds all the gear you can carry. Don't lose it.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/bastard_sword__eZenY58xIvu8hp2e.json b/data/packs/quickstart-pregens.db/bastard_sword__eZenY58xIvu8hp2e.json index 33758c3d..f82f44fd 100644 --- a/data/packs/quickstart-pregens.db/bastard_sword__eZenY58xIvu8hp2e.json +++ b/data/packs/quickstart-pregens.db/bastard_sword__eZenY58xIvu8hp2e.json @@ -7,6 +7,7 @@ "img": "icons/weapons/swords/sword-hilt-steel-green.webp", "name": "Bastard Sword", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/quickstart-pregens.db/caltrops__GtncgMsIBndkotOc.json b/data/packs/quickstart-pregens.db/caltrops__GtncgMsIBndkotOc.json index 4561f272..af3a6cd8 100644 --- a/data/packs/quickstart-pregens.db/caltrops__GtncgMsIBndkotOc.json +++ b/data/packs/quickstart-pregens.db/caltrops__GtncgMsIBndkotOc.json @@ -16,6 +16,7 @@ }, "description": "

Tiny, triangle-shaped iron spikes. Living creatures who step on caltrops take 1 damage and can only move at half speed for 10 rounds.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/crossbow__e04loDnEXhVPS9uK.json b/data/packs/quickstart-pregens.db/crossbow__e04loDnEXhVPS9uK.json index d3acc51d..d0067e28 100644 --- a/data/packs/quickstart-pregens.db/crossbow__e04loDnEXhVPS9uK.json +++ b/data/packs/quickstart-pregens.db/crossbow__e04loDnEXhVPS9uK.json @@ -7,6 +7,7 @@ "img": "icons/weapons/crossbows/crossbow-purple.webp", "name": "Crossbow", "system": { + "ammoClass": "crossbow-bolts", "attackBonus": 0, "baseWeapon": "", "bonuses": { @@ -37,6 +38,7 @@ "equipped": true, "isPhysical": true, "magicItem": false, + "predefinedEffects": "", "properties": [ "Compendium.shadowdark.properties.Item.HyqHR9AhIDkm4La9", "Compendium.shadowdark.properties.Item.b6Gm2ULKj2qyy2xJ" diff --git a/data/packs/quickstart-pregens.db/crossbow__kJbjoRI9rKem1LGC.json b/data/packs/quickstart-pregens.db/crossbow__kJbjoRI9rKem1LGC.json index 2fe3ed4f..c31c2f30 100644 --- a/data/packs/quickstart-pregens.db/crossbow__kJbjoRI9rKem1LGC.json +++ b/data/packs/quickstart-pregens.db/crossbow__kJbjoRI9rKem1LGC.json @@ -7,6 +7,7 @@ "img": "icons/weapons/crossbows/crossbow-purple.webp", "name": "Crossbow", "system": { + "ammoClass": "crossbow-bolts", "attackBonus": 0, "baseWeapon": "", "bonuses": { @@ -37,6 +38,7 @@ "equipped": true, "isPhysical": true, "magicItem": false, + "predefinedEffects": "", "properties": [ "Compendium.shadowdark.properties.Item.HyqHR9AhIDkm4La9", "Compendium.shadowdark.properties.Item.b6Gm2ULKj2qyy2xJ" diff --git a/data/packs/quickstart-pregens.db/crossbow__mtW8WkUwBnpqlZ4h.json b/data/packs/quickstart-pregens.db/crossbow__mtW8WkUwBnpqlZ4h.json index 78c7e9cf..cd23dc6d 100644 --- a/data/packs/quickstart-pregens.db/crossbow__mtW8WkUwBnpqlZ4h.json +++ b/data/packs/quickstart-pregens.db/crossbow__mtW8WkUwBnpqlZ4h.json @@ -7,6 +7,7 @@ "img": "icons/weapons/crossbows/crossbow-purple.webp", "name": "Crossbow", "system": { + "ammoClass": "crossbow-bolts", "attackBonus": 0, "baseWeapon": "", "bonuses": { @@ -37,6 +38,7 @@ "equipped": true, "isPhysical": true, "magicItem": false, + "predefinedEffects": "", "properties": [ "Compendium.shadowdark.properties.Item.HyqHR9AhIDkm4La9", "Compendium.shadowdark.properties.Item.b6Gm2ULKj2qyy2xJ" diff --git a/data/packs/quickstart-pregens.db/crossbow_bolts__9Vye8t1cVC0DsXwC.json b/data/packs/quickstart-pregens.db/crossbow_bolts__9Vye8t1cVC0DsXwC.json index b26263a1..beea6535 100644 --- a/data/packs/quickstart-pregens.db/crossbow_bolts__9Vye8t1cVC0DsXwC.json +++ b/data/packs/quickstart-pregens.db/crossbow_bolts__9Vye8t1cVC0DsXwC.json @@ -16,6 +16,7 @@ }, "description": "

Ammunition for crossbows.

", "equipped": false, + "isAmmunition": true, "isPhysical": true, "light": { "active": false, @@ -26,6 +27,7 @@ "template": "torch" }, "magicItem": false, + "predefinedEffects": "", "quantity": 20, "scroll": false, "slots": { diff --git a/data/packs/quickstart-pregens.db/crossbow_bolts__c2NFgYJeOE8jrnKd.json b/data/packs/quickstart-pregens.db/crossbow_bolts__c2NFgYJeOE8jrnKd.json index 9bfdb43c..51cda543 100644 --- a/data/packs/quickstart-pregens.db/crossbow_bolts__c2NFgYJeOE8jrnKd.json +++ b/data/packs/quickstart-pregens.db/crossbow_bolts__c2NFgYJeOE8jrnKd.json @@ -16,6 +16,7 @@ }, "description": "

Ammunition for crossbows.

", "equipped": false, + "isAmmunition": true, "isPhysical": true, "light": { "active": false, @@ -26,6 +27,7 @@ "template": "torch" }, "magicItem": false, + "predefinedEffects": "", "quantity": 20, "scroll": false, "slots": { diff --git a/data/packs/quickstart-pregens.db/crossbow_bolts__xHdgeKNZwX1CZGQE.json b/data/packs/quickstart-pregens.db/crossbow_bolts__xHdgeKNZwX1CZGQE.json index fa12956d..ac5cbcca 100644 --- a/data/packs/quickstart-pregens.db/crossbow_bolts__xHdgeKNZwX1CZGQE.json +++ b/data/packs/quickstart-pregens.db/crossbow_bolts__xHdgeKNZwX1CZGQE.json @@ -16,6 +16,7 @@ }, "description": "

Ammunition for crossbows.

", "equipped": false, + "isAmmunition": true, "isPhysical": true, "light": { "active": false, @@ -26,6 +27,7 @@ "template": "torch" }, "magicItem": false, + "predefinedEffects": "", "quantity": 20, "scroll": false, "slots": { diff --git a/data/packs/quickstart-pregens.db/dagger__15j8vdCGXCjRSxFw.json b/data/packs/quickstart-pregens.db/dagger__15j8vdCGXCjRSxFw.json index ea25a133..0356b5c0 100644 --- a/data/packs/quickstart-pregens.db/dagger__15j8vdCGXCjRSxFw.json +++ b/data/packs/quickstart-pregens.db/dagger__15j8vdCGXCjRSxFw.json @@ -7,6 +7,7 @@ "img": "icons/weapons/daggers/dagger-jeweled-purple.webp", "name": "Dagger", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/quickstart-pregens.db/dagger__AwSIYqqvkOthL8y6.json b/data/packs/quickstart-pregens.db/dagger__AwSIYqqvkOthL8y6.json index 39662b9e..207b4ec8 100644 --- a/data/packs/quickstart-pregens.db/dagger__AwSIYqqvkOthL8y6.json +++ b/data/packs/quickstart-pregens.db/dagger__AwSIYqqvkOthL8y6.json @@ -7,6 +7,7 @@ "img": "icons/weapons/daggers/dagger-jeweled-purple.webp", "name": "Dagger", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/quickstart-pregens.db/dagger__HsowE8JPDwcXugdG.json b/data/packs/quickstart-pregens.db/dagger__HsowE8JPDwcXugdG.json index ffa97548..b1adceef 100644 --- a/data/packs/quickstart-pregens.db/dagger__HsowE8JPDwcXugdG.json +++ b/data/packs/quickstart-pregens.db/dagger__HsowE8JPDwcXugdG.json @@ -7,6 +7,7 @@ "img": "icons/weapons/daggers/dagger-jeweled-purple.webp", "name": "Dagger", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/quickstart-pregens.db/dagger__LRXImQ7OWk4vOjrl.json b/data/packs/quickstart-pregens.db/dagger__LRXImQ7OWk4vOjrl.json index 15a8ebe8..4d1e1c4d 100644 --- a/data/packs/quickstart-pregens.db/dagger__LRXImQ7OWk4vOjrl.json +++ b/data/packs/quickstart-pregens.db/dagger__LRXImQ7OWk4vOjrl.json @@ -7,6 +7,7 @@ "img": "icons/weapons/daggers/dagger-jeweled-purple.webp", "name": "Dagger", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/quickstart-pregens.db/dagger__x3r2C2HW9zycqkJf.json b/data/packs/quickstart-pregens.db/dagger__x3r2C2HW9zycqkJf.json index 6f2e445d..77c957cd 100644 --- a/data/packs/quickstart-pregens.db/dagger__x3r2C2HW9zycqkJf.json +++ b/data/packs/quickstart-pregens.db/dagger__x3r2C2HW9zycqkJf.json @@ -7,6 +7,7 @@ "img": "icons/weapons/daggers/dagger-jeweled-purple.webp", "name": "Dagger", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/quickstart-pregens.db/flint_and_steel__5wPOo8V5whIcnh53.json b/data/packs/quickstart-pregens.db/flint_and_steel__5wPOo8V5whIcnh53.json index 04502afd..bcef1199 100644 --- a/data/packs/quickstart-pregens.db/flint_and_steel__5wPOo8V5whIcnh53.json +++ b/data/packs/quickstart-pregens.db/flint_and_steel__5wPOo8V5whIcnh53.json @@ -16,6 +16,7 @@ }, "description": "

A small fire starter. With it, routine attempts to light a fire always succeed.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/flint_and_steel__F3qpt5jMsuQeCbGR.json b/data/packs/quickstart-pregens.db/flint_and_steel__F3qpt5jMsuQeCbGR.json index 673b5044..dd1a32c1 100644 --- a/data/packs/quickstart-pregens.db/flint_and_steel__F3qpt5jMsuQeCbGR.json +++ b/data/packs/quickstart-pregens.db/flint_and_steel__F3qpt5jMsuQeCbGR.json @@ -16,6 +16,7 @@ }, "description": "

A small fire starter. With it, routine attempts to light a fire always succeed.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/flint_and_steel__Thp4uasF5BQqWebW.json b/data/packs/quickstart-pregens.db/flint_and_steel__Thp4uasF5BQqWebW.json index 6c9ab475..5fae7cdf 100644 --- a/data/packs/quickstart-pregens.db/flint_and_steel__Thp4uasF5BQqWebW.json +++ b/data/packs/quickstart-pregens.db/flint_and_steel__Thp4uasF5BQqWebW.json @@ -16,6 +16,7 @@ }, "description": "

A small fire starter. With it, routine attempts to light a fire always succeed.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/flint_and_steel__VcucOtwS5c5RLK4Y.json b/data/packs/quickstart-pregens.db/flint_and_steel__VcucOtwS5c5RLK4Y.json index b9f98589..3849f34e 100644 --- a/data/packs/quickstart-pregens.db/flint_and_steel__VcucOtwS5c5RLK4Y.json +++ b/data/packs/quickstart-pregens.db/flint_and_steel__VcucOtwS5c5RLK4Y.json @@ -16,6 +16,7 @@ }, "description": "

A small fire starter. With it, routine attempts to light a fire always succeed.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/flint_and_steel__XuHeCgLGZN6TxQON.json b/data/packs/quickstart-pregens.db/flint_and_steel__XuHeCgLGZN6TxQON.json index b30bed34..d547ed89 100644 --- a/data/packs/quickstart-pregens.db/flint_and_steel__XuHeCgLGZN6TxQON.json +++ b/data/packs/quickstart-pregens.db/flint_and_steel__XuHeCgLGZN6TxQON.json @@ -16,6 +16,7 @@ }, "description": "

A small fire starter. With it, routine attempts to light a fire always succeed.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/flint_and_steel__hTVvmfiM8ieOdh7G.json b/data/packs/quickstart-pregens.db/flint_and_steel__hTVvmfiM8ieOdh7G.json index 156dacdb..32c1eb6a 100644 --- a/data/packs/quickstart-pregens.db/flint_and_steel__hTVvmfiM8ieOdh7G.json +++ b/data/packs/quickstart-pregens.db/flint_and_steel__hTVvmfiM8ieOdh7G.json @@ -16,6 +16,7 @@ }, "description": "

A small fire starter. With it, routine attempts to light a fire always succeed.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/flint_and_steel__sz1Gs3iY5MUWxYpi.json b/data/packs/quickstart-pregens.db/flint_and_steel__sz1Gs3iY5MUWxYpi.json index 0edfc74c..696f1dc4 100644 --- a/data/packs/quickstart-pregens.db/flint_and_steel__sz1Gs3iY5MUWxYpi.json +++ b/data/packs/quickstart-pregens.db/flint_and_steel__sz1Gs3iY5MUWxYpi.json @@ -16,6 +16,7 @@ }, "description": "

A small fire starter. With it, routine attempts to light a fire always succeed.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/flint_and_steel__zXEWYqUZdmA7DgkF.json b/data/packs/quickstart-pregens.db/flint_and_steel__zXEWYqUZdmA7DgkF.json index a655d19a..84072eee 100644 --- a/data/packs/quickstart-pregens.db/flint_and_steel__zXEWYqUZdmA7DgkF.json +++ b/data/packs/quickstart-pregens.db/flint_and_steel__zXEWYqUZdmA7DgkF.json @@ -16,6 +16,7 @@ }, "description": "

A small fire starter. With it, routine attempts to light a fire always succeed.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/glass_bottle__NviSbJMXs6ybogWA.json b/data/packs/quickstart-pregens.db/glass_bottle__NviSbJMXs6ybogWA.json index fad791f4..a579fcfd 100644 --- a/data/packs/quickstart-pregens.db/glass_bottle__NviSbJMXs6ybogWA.json +++ b/data/packs/quickstart-pregens.db/glass_bottle__NviSbJMXs6ybogWA.json @@ -16,6 +16,7 @@ }, "description": "

Glass containers that hold one draught of liquid.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/grappling_hook__CGJ4zxmqFilgRBIZ.json b/data/packs/quickstart-pregens.db/grappling_hook__CGJ4zxmqFilgRBIZ.json index 55a92663..b45a9d0c 100644 --- a/data/packs/quickstart-pregens.db/grappling_hook__CGJ4zxmqFilgRBIZ.json +++ b/data/packs/quickstart-pregens.db/grappling_hook__CGJ4zxmqFilgRBIZ.json @@ -16,6 +16,7 @@ }, "description": "

A rope anchor with three, curved tines.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/grappling_hook__Cr7qzqzaDWhilQkk.json b/data/packs/quickstart-pregens.db/grappling_hook__Cr7qzqzaDWhilQkk.json index aa357304..2c8ded57 100644 --- a/data/packs/quickstart-pregens.db/grappling_hook__Cr7qzqzaDWhilQkk.json +++ b/data/packs/quickstart-pregens.db/grappling_hook__Cr7qzqzaDWhilQkk.json @@ -16,6 +16,7 @@ }, "description": "

A rope anchor with three, curved tines.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/grappling_hook__M4jvL3R1rk8IOdbm.json b/data/packs/quickstart-pregens.db/grappling_hook__M4jvL3R1rk8IOdbm.json index daaf14f7..7db9d112 100644 --- a/data/packs/quickstart-pregens.db/grappling_hook__M4jvL3R1rk8IOdbm.json +++ b/data/packs/quickstart-pregens.db/grappling_hook__M4jvL3R1rk8IOdbm.json @@ -16,6 +16,7 @@ }, "description": "

A rope anchor with three, curved tines.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/grappling_hook__O27wAuWdSUBKghgb.json b/data/packs/quickstart-pregens.db/grappling_hook__O27wAuWdSUBKghgb.json index 17c93b89..bd01175c 100644 --- a/data/packs/quickstart-pregens.db/grappling_hook__O27wAuWdSUBKghgb.json +++ b/data/packs/quickstart-pregens.db/grappling_hook__O27wAuWdSUBKghgb.json @@ -16,6 +16,7 @@ }, "description": "

A rope anchor with three, curved tines.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/grappling_hook__gQyQO1Hr0IYH5YRy.json b/data/packs/quickstart-pregens.db/grappling_hook__gQyQO1Hr0IYH5YRy.json index aba9b06c..6ac0bcb6 100644 --- a/data/packs/quickstart-pregens.db/grappling_hook__gQyQO1Hr0IYH5YRy.json +++ b/data/packs/quickstart-pregens.db/grappling_hook__gQyQO1Hr0IYH5YRy.json @@ -16,6 +16,7 @@ }, "description": "

A rope anchor with three, curved tines.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/grappling_hook__n1MVBH6jyMdWE328.json b/data/packs/quickstart-pregens.db/grappling_hook__n1MVBH6jyMdWE328.json index dab49d0d..a51d3096 100644 --- a/data/packs/quickstart-pregens.db/grappling_hook__n1MVBH6jyMdWE328.json +++ b/data/packs/quickstart-pregens.db/grappling_hook__n1MVBH6jyMdWE328.json @@ -16,6 +16,7 @@ }, "description": "

A rope anchor with three, curved tines.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/grappling_hook__oGqS5PguQp3WZZQy.json b/data/packs/quickstart-pregens.db/grappling_hook__oGqS5PguQp3WZZQy.json index c9db47ab..456d3aac 100644 --- a/data/packs/quickstart-pregens.db/grappling_hook__oGqS5PguQp3WZZQy.json +++ b/data/packs/quickstart-pregens.db/grappling_hook__oGqS5PguQp3WZZQy.json @@ -16,6 +16,7 @@ }, "description": "

A rope anchor with three, curved tines.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/grappling_hook__pYzxdDoL9B71fwXi.json b/data/packs/quickstart-pregens.db/grappling_hook__pYzxdDoL9B71fwXi.json index e0ba9621..2d1b692e 100644 --- a/data/packs/quickstart-pregens.db/grappling_hook__pYzxdDoL9B71fwXi.json +++ b/data/packs/quickstart-pregens.db/grappling_hook__pYzxdDoL9B71fwXi.json @@ -16,6 +16,7 @@ }, "description": "

A rope anchor with three, curved tines.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/greataxe__TAct2bpnAxoqzTwy.json b/data/packs/quickstart-pregens.db/greataxe__TAct2bpnAxoqzTwy.json index 5aaaba82..d3b7cc9a 100644 --- a/data/packs/quickstart-pregens.db/greataxe__TAct2bpnAxoqzTwy.json +++ b/data/packs/quickstart-pregens.db/greataxe__TAct2bpnAxoqzTwy.json @@ -7,6 +7,7 @@ "img": "icons/weapons/axes/axe-broad-engraved-chipped-blue.webp", "name": "Greataxe", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/quickstart-pregens.db/holy_symbol__DCoYkIeAIqHhwPSf.json b/data/packs/quickstart-pregens.db/holy_symbol__DCoYkIeAIqHhwPSf.json index 33e3df70..38670f58 100644 --- a/data/packs/quickstart-pregens.db/holy_symbol__DCoYkIeAIqHhwPSf.json +++ b/data/packs/quickstart-pregens.db/holy_symbol__DCoYkIeAIqHhwPSf.json @@ -16,6 +16,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/holy_symbol__q4JHCDu0psd87ur1.json b/data/packs/quickstart-pregens.db/holy_symbol__q4JHCDu0psd87ur1.json index e1f19a6f..44e5631e 100644 --- a/data/packs/quickstart-pregens.db/holy_symbol__q4JHCDu0psd87ur1.json +++ b/data/packs/quickstart-pregens.db/holy_symbol__q4JHCDu0psd87ur1.json @@ -16,6 +16,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/iron_spikes__6f2SlF0mXnQ51TED.json b/data/packs/quickstart-pregens.db/iron_spikes__6f2SlF0mXnQ51TED.json index 50124c36..cb62f78d 100644 --- a/data/packs/quickstart-pregens.db/iron_spikes__6f2SlF0mXnQ51TED.json +++ b/data/packs/quickstart-pregens.db/iron_spikes__6f2SlF0mXnQ51TED.json @@ -16,6 +16,7 @@ }, "description": "

Strong spikes. Each has a hole for threading

rope. Can be hammered in with weapons or other iron spikes.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/iron_spikes__CxsgtxPTvKncLCss.json b/data/packs/quickstart-pregens.db/iron_spikes__CxsgtxPTvKncLCss.json index ef5a18c9..0084bba9 100644 --- a/data/packs/quickstart-pregens.db/iron_spikes__CxsgtxPTvKncLCss.json +++ b/data/packs/quickstart-pregens.db/iron_spikes__CxsgtxPTvKncLCss.json @@ -16,6 +16,7 @@ }, "description": "

Strong spikes. Each has a hole for threading

rope. Can be hammered in with weapons or other iron spikes.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/iron_spikes__YRADimUOmLtgLGrM.json b/data/packs/quickstart-pregens.db/iron_spikes__YRADimUOmLtgLGrM.json index 43146369..cdc3da03 100644 --- a/data/packs/quickstart-pregens.db/iron_spikes__YRADimUOmLtgLGrM.json +++ b/data/packs/quickstart-pregens.db/iron_spikes__YRADimUOmLtgLGrM.json @@ -16,6 +16,7 @@ }, "description": "

Strong spikes. Each has a hole for threading

rope. Can be hammered in with weapons or other iron spikes.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/iron_spikes__aLySFO7PG7ShIhCL.json b/data/packs/quickstart-pregens.db/iron_spikes__aLySFO7PG7ShIhCL.json index 74af8e87..c8ec9f7b 100644 --- a/data/packs/quickstart-pregens.db/iron_spikes__aLySFO7PG7ShIhCL.json +++ b/data/packs/quickstart-pregens.db/iron_spikes__aLySFO7PG7ShIhCL.json @@ -16,6 +16,7 @@ }, "description": "

Strong spikes. Each has a hole for threading

rope. Can be hammered in with weapons or other iron spikes.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/iron_spikes__poJXwr7Ub9hjc7wL.json b/data/packs/quickstart-pregens.db/iron_spikes__poJXwr7Ub9hjc7wL.json index aa4b8cee..9694c3b9 100644 --- a/data/packs/quickstart-pregens.db/iron_spikes__poJXwr7Ub9hjc7wL.json +++ b/data/packs/quickstart-pregens.db/iron_spikes__poJXwr7Ub9hjc7wL.json @@ -16,6 +16,7 @@ }, "description": "

Strong spikes. Each has a hole for threading

rope. Can be hammered in with weapons or other iron spikes.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/iron_spikes__ptIYLALpv3fp7eU2.json b/data/packs/quickstart-pregens.db/iron_spikes__ptIYLALpv3fp7eU2.json index f70c23d8..91ea896e 100644 --- a/data/packs/quickstart-pregens.db/iron_spikes__ptIYLALpv3fp7eU2.json +++ b/data/packs/quickstart-pregens.db/iron_spikes__ptIYLALpv3fp7eU2.json @@ -16,6 +16,7 @@ }, "description": "

Strong spikes. Each has a hole for threading

rope. Can be hammered in with weapons or other iron spikes.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/longbow__bKa5QTkhswSY7Aun.json b/data/packs/quickstart-pregens.db/longbow__bKa5QTkhswSY7Aun.json index 05d12fc9..1ccb8c45 100644 --- a/data/packs/quickstart-pregens.db/longbow__bKa5QTkhswSY7Aun.json +++ b/data/packs/quickstart-pregens.db/longbow__bKa5QTkhswSY7Aun.json @@ -7,6 +7,7 @@ "img": "icons/weapons/bows/longbow-leather-green.webp", "name": "Longbow", "system": { + "ammoClass": "arrows", "attackBonus": 0, "baseWeapon": "", "bonuses": { @@ -37,6 +38,7 @@ "equipped": true, "isPhysical": true, "magicItem": false, + "predefinedEffects": "", "properties": [ "Compendium.shadowdark.properties.Item.b6Gm2ULKj2qyy2xJ" ], diff --git a/data/packs/quickstart-pregens.db/longsword__dnuYDVd7SgqrfKY9.json b/data/packs/quickstart-pregens.db/longsword__dnuYDVd7SgqrfKY9.json index 2cd59059..ab51c16f 100644 --- a/data/packs/quickstart-pregens.db/longsword__dnuYDVd7SgqrfKY9.json +++ b/data/packs/quickstart-pregens.db/longsword__dnuYDVd7SgqrfKY9.json @@ -7,6 +7,7 @@ "img": "icons/weapons/swords/sword-guard.webp", "name": "Longsword", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/quickstart-pregens.db/mace__cHZjYo5oMf0HxWTy.json b/data/packs/quickstart-pregens.db/mace__cHZjYo5oMf0HxWTy.json index f556c176..99d92736 100644 --- a/data/packs/quickstart-pregens.db/mace__cHZjYo5oMf0HxWTy.json +++ b/data/packs/quickstart-pregens.db/mace__cHZjYo5oMf0HxWTy.json @@ -7,6 +7,7 @@ "img": "icons/weapons/maces/mace-round-ornate-purple.webp", "name": "Mace", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/quickstart-pregens.db/mirror__8e9zdenZBp76oo5p.json b/data/packs/quickstart-pregens.db/mirror__8e9zdenZBp76oo5p.json index edb19182..e5d1185e 100644 --- a/data/packs/quickstart-pregens.db/mirror__8e9zdenZBp76oo5p.json +++ b/data/packs/quickstart-pregens.db/mirror__8e9zdenZBp76oo5p.json @@ -16,6 +16,7 @@ }, "description": "

A small, polished mirror.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/oil__flask__2Gzbipgoj6Z7tV0d.json b/data/packs/quickstart-pregens.db/oil__flask__2Gzbipgoj6Z7tV0d.json index 457e99c2..8575072a 100644 --- a/data/packs/quickstart-pregens.db/oil__flask__2Gzbipgoj6Z7tV0d.json +++ b/data/packs/quickstart-pregens.db/oil__flask__2Gzbipgoj6Z7tV0d.json @@ -16,6 +16,7 @@ }, "description": "

Fuels a lantern for one hour of real time. One flask covers a close area and burns for 4 rounds, dealing 1d4 damage each round.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/oil__flask__SNXENbquwIjutUJb.json b/data/packs/quickstart-pregens.db/oil__flask__SNXENbquwIjutUJb.json index 701bcb7b..12d0aedc 100644 --- a/data/packs/quickstart-pregens.db/oil__flask__SNXENbquwIjutUJb.json +++ b/data/packs/quickstart-pregens.db/oil__flask__SNXENbquwIjutUJb.json @@ -16,6 +16,7 @@ }, "description": "

Fuels a lantern for one hour of real time. One flask covers a close area and burns for 4 rounds, dealing 1d4 damage each round.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/oil__flask__gG12BJNIBzy8yAlL.json b/data/packs/quickstart-pregens.db/oil__flask__gG12BJNIBzy8yAlL.json index 6b563a0a..f8aa1f6c 100644 --- a/data/packs/quickstart-pregens.db/oil__flask__gG12BJNIBzy8yAlL.json +++ b/data/packs/quickstart-pregens.db/oil__flask__gG12BJNIBzy8yAlL.json @@ -16,6 +16,7 @@ }, "description": "

Fuels a lantern for one hour of real time. One flask covers a close area and burns for 4 rounds, dealing 1d4 damage each round.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/pole__BDHZe8ldaFBgWHyX.json b/data/packs/quickstart-pregens.db/pole__BDHZe8ldaFBgWHyX.json index 6583b8a0..91b435ea 100644 --- a/data/packs/quickstart-pregens.db/pole__BDHZe8ldaFBgWHyX.json +++ b/data/packs/quickstart-pregens.db/pole__BDHZe8ldaFBgWHyX.json @@ -16,6 +16,7 @@ }, "description": "

Wooden, 10' long.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/pole__BQhCxvXqYDTbtakk.json b/data/packs/quickstart-pregens.db/pole__BQhCxvXqYDTbtakk.json index 1b977ef5..918a45f8 100644 --- a/data/packs/quickstart-pregens.db/pole__BQhCxvXqYDTbtakk.json +++ b/data/packs/quickstart-pregens.db/pole__BQhCxvXqYDTbtakk.json @@ -16,6 +16,7 @@ }, "description": "

Wooden, 10' long.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/pole__S3Rl0alx007H2ARI.json b/data/packs/quickstart-pregens.db/pole__S3Rl0alx007H2ARI.json index 65d37493..8d1b4495 100644 --- a/data/packs/quickstart-pregens.db/pole__S3Rl0alx007H2ARI.json +++ b/data/packs/quickstart-pregens.db/pole__S3Rl0alx007H2ARI.json @@ -16,6 +16,7 @@ }, "description": "

Wooden, 10' long.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rations__2Nlz8gpgw8GQBIQo.json b/data/packs/quickstart-pregens.db/rations__2Nlz8gpgw8GQBIQo.json index b5d4a77c..61a842c4 100644 --- a/data/packs/quickstart-pregens.db/rations__2Nlz8gpgw8GQBIQo.json +++ b/data/packs/quickstart-pregens.db/rations__2Nlz8gpgw8GQBIQo.json @@ -16,6 +16,7 @@ }, "description": "

One day of food and water supply for one person.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rations__HfM0MiY94jVNSgvc.json b/data/packs/quickstart-pregens.db/rations__HfM0MiY94jVNSgvc.json index 5ebb63cf..f7b1791d 100644 --- a/data/packs/quickstart-pregens.db/rations__HfM0MiY94jVNSgvc.json +++ b/data/packs/quickstart-pregens.db/rations__HfM0MiY94jVNSgvc.json @@ -16,6 +16,7 @@ }, "description": "

One day of food and water supply for one person.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rations__KweJlGZEOMRpfA6B.json b/data/packs/quickstart-pregens.db/rations__KweJlGZEOMRpfA6B.json index 96665f3b..b8fa1933 100644 --- a/data/packs/quickstart-pregens.db/rations__KweJlGZEOMRpfA6B.json +++ b/data/packs/quickstart-pregens.db/rations__KweJlGZEOMRpfA6B.json @@ -16,6 +16,7 @@ }, "description": "

One day of food and water supply for one person.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rations__RE57glfjQDWmUPvb.json b/data/packs/quickstart-pregens.db/rations__RE57glfjQDWmUPvb.json index 437f2e97..031c3edf 100644 --- a/data/packs/quickstart-pregens.db/rations__RE57glfjQDWmUPvb.json +++ b/data/packs/quickstart-pregens.db/rations__RE57glfjQDWmUPvb.json @@ -16,6 +16,7 @@ }, "description": "

One day of food and water supply for one person.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rations__VDwq1t7Rc307JOYN.json b/data/packs/quickstart-pregens.db/rations__VDwq1t7Rc307JOYN.json index 02a85da1..a4536ced 100644 --- a/data/packs/quickstart-pregens.db/rations__VDwq1t7Rc307JOYN.json +++ b/data/packs/quickstart-pregens.db/rations__VDwq1t7Rc307JOYN.json @@ -16,6 +16,7 @@ }, "description": "

One day of food and water supply for one person.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rations__lkntck7at9tHx5Qh.json b/data/packs/quickstart-pregens.db/rations__lkntck7at9tHx5Qh.json index a2ccdc54..c920c4d4 100644 --- a/data/packs/quickstart-pregens.db/rations__lkntck7at9tHx5Qh.json +++ b/data/packs/quickstart-pregens.db/rations__lkntck7at9tHx5Qh.json @@ -16,6 +16,7 @@ }, "description": "

One day of food and water supply for one person.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rations__oUmSAHtdK7AORBd8.json b/data/packs/quickstart-pregens.db/rations__oUmSAHtdK7AORBd8.json index c6c9c855..82252df0 100644 --- a/data/packs/quickstart-pregens.db/rations__oUmSAHtdK7AORBd8.json +++ b/data/packs/quickstart-pregens.db/rations__oUmSAHtdK7AORBd8.json @@ -16,6 +16,7 @@ }, "description": "

One day of food and water supply for one person.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rations__p9QyPSnhyYOLRsCU.json b/data/packs/quickstart-pregens.db/rations__p9QyPSnhyYOLRsCU.json index 35e1710c..7719eac0 100644 --- a/data/packs/quickstart-pregens.db/rations__p9QyPSnhyYOLRsCU.json +++ b/data/packs/quickstart-pregens.db/rations__p9QyPSnhyYOLRsCU.json @@ -16,6 +16,7 @@ }, "description": "

One day of food and water supply for one person.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rope__60___8ZpTsEeOlSwVXych.json b/data/packs/quickstart-pregens.db/rope__60___8ZpTsEeOlSwVXych.json index fe38d787..6889fc1c 100644 --- a/data/packs/quickstart-pregens.db/rope__60___8ZpTsEeOlSwVXych.json +++ b/data/packs/quickstart-pregens.db/rope__60___8ZpTsEeOlSwVXych.json @@ -16,6 +16,7 @@ }, "description": "

Hemp, 60’ long.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rope__60___8rVULJROdeWjmT9T.json b/data/packs/quickstart-pregens.db/rope__60___8rVULJROdeWjmT9T.json index c1528acd..c364d5ff 100644 --- a/data/packs/quickstart-pregens.db/rope__60___8rVULJROdeWjmT9T.json +++ b/data/packs/quickstart-pregens.db/rope__60___8rVULJROdeWjmT9T.json @@ -16,6 +16,7 @@ }, "description": "

Hemp, 60’ long.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rope__60___PjXR94ictUmCN2G4.json b/data/packs/quickstart-pregens.db/rope__60___PjXR94ictUmCN2G4.json index 3cd6ca83..e9acb335 100644 --- a/data/packs/quickstart-pregens.db/rope__60___PjXR94ictUmCN2G4.json +++ b/data/packs/quickstart-pregens.db/rope__60___PjXR94ictUmCN2G4.json @@ -16,6 +16,7 @@ }, "description": "

Hemp, 60’ long.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rope__60___afq1X2Gkjm0jcH2f.json b/data/packs/quickstart-pregens.db/rope__60___afq1X2Gkjm0jcH2f.json index 8a3b0dba..b7da35e9 100644 --- a/data/packs/quickstart-pregens.db/rope__60___afq1X2Gkjm0jcH2f.json +++ b/data/packs/quickstart-pregens.db/rope__60___afq1X2Gkjm0jcH2f.json @@ -16,6 +16,7 @@ }, "description": "

Hemp, 60’ long.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rope__60___e2IRtPXtNiowfjLA.json b/data/packs/quickstart-pregens.db/rope__60___e2IRtPXtNiowfjLA.json index ebcf2822..658ea9f2 100644 --- a/data/packs/quickstart-pregens.db/rope__60___e2IRtPXtNiowfjLA.json +++ b/data/packs/quickstart-pregens.db/rope__60___e2IRtPXtNiowfjLA.json @@ -16,6 +16,7 @@ }, "description": "

Hemp, 60’ long.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rope__60___lQI9KwjnfIND3nma.json b/data/packs/quickstart-pregens.db/rope__60___lQI9KwjnfIND3nma.json index 6d29a3ba..9d3b2282 100644 --- a/data/packs/quickstart-pregens.db/rope__60___lQI9KwjnfIND3nma.json +++ b/data/packs/quickstart-pregens.db/rope__60___lQI9KwjnfIND3nma.json @@ -16,6 +16,7 @@ }, "description": "

Hemp, 60’ long.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rope__60___sJM0Y7earrkzzpKo.json b/data/packs/quickstart-pregens.db/rope__60___sJM0Y7earrkzzpKo.json index 97aeb58d..288b885c 100644 --- a/data/packs/quickstart-pregens.db/rope__60___sJM0Y7earrkzzpKo.json +++ b/data/packs/quickstart-pregens.db/rope__60___sJM0Y7earrkzzpKo.json @@ -16,6 +16,7 @@ }, "description": "

Hemp, 60’ long.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/rope__60___w5zb0vxH53Twdfe8.json b/data/packs/quickstart-pregens.db/rope__60___w5zb0vxH53Twdfe8.json index 2cb780a3..4dbcdbb0 100644 --- a/data/packs/quickstart-pregens.db/rope__60___w5zb0vxH53Twdfe8.json +++ b/data/packs/quickstart-pregens.db/rope__60___w5zb0vxH53Twdfe8.json @@ -16,6 +16,7 @@ }, "description": "

Hemp, 60’ long.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/spear__Q656geesxoWkZ84o.json b/data/packs/quickstart-pregens.db/spear__Q656geesxoWkZ84o.json index dc70bc17..6b50d0d7 100644 --- a/data/packs/quickstart-pregens.db/spear__Q656geesxoWkZ84o.json +++ b/data/packs/quickstart-pregens.db/spear__Q656geesxoWkZ84o.json @@ -7,6 +7,7 @@ "img": "icons/weapons/polearms/spear-hooked-double.webp", "name": "Spear", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/quickstart-pregens.db/spear__veYd8eMEg9lTCHrj.json b/data/packs/quickstart-pregens.db/spear__veYd8eMEg9lTCHrj.json index 8ea0d0da..c41ef021 100644 --- a/data/packs/quickstart-pregens.db/spear__veYd8eMEg9lTCHrj.json +++ b/data/packs/quickstart-pregens.db/spear__veYd8eMEg9lTCHrj.json @@ -7,6 +7,7 @@ "img": "icons/weapons/polearms/spear-hooked-double.webp", "name": "Spear", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/quickstart-pregens.db/staff__5xUXFKSnVONHeZ4N.json b/data/packs/quickstart-pregens.db/staff__5xUXFKSnVONHeZ4N.json index bbb6e406..e93780f3 100644 --- a/data/packs/quickstart-pregens.db/staff__5xUXFKSnVONHeZ4N.json +++ b/data/packs/quickstart-pregens.db/staff__5xUXFKSnVONHeZ4N.json @@ -7,6 +7,7 @@ "img": "icons/weapons/staves/staff-ornate-purple.webp", "name": "Staff", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { diff --git a/data/packs/quickstart-pregens.db/thieves__tools__7PV3EnXdLwsYnEKn.json b/data/packs/quickstart-pregens.db/thieves__tools__7PV3EnXdLwsYnEKn.json index b142ea34..aa2e110e 100644 --- a/data/packs/quickstart-pregens.db/thieves__tools__7PV3EnXdLwsYnEKn.json +++ b/data/packs/quickstart-pregens.db/thieves__tools__7PV3EnXdLwsYnEKn.json @@ -16,6 +16,7 @@ }, "description": "

ADV on checks to climb, sneak, hide, apply disguises, find and disable traps, and perform delicate tasks.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/thieves__tools__iM40sRNKUdden6Ec.json b/data/packs/quickstart-pregens.db/thieves__tools__iM40sRNKUdden6Ec.json index 4dfe2bf1..d8ee01da 100644 --- a/data/packs/quickstart-pregens.db/thieves__tools__iM40sRNKUdden6Ec.json +++ b/data/packs/quickstart-pregens.db/thieves__tools__iM40sRNKUdden6Ec.json @@ -16,6 +16,7 @@ }, "description": "

ADV on checks to climb, sneak, hide, apply disguises, find and disable traps, and perform delicate tasks.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/torch__Drkn5HCuzmZ4lXeQ.json b/data/packs/quickstart-pregens.db/torch__Drkn5HCuzmZ4lXeQ.json index 801d7ab7..73c99c00 100644 --- a/data/packs/quickstart-pregens.db/torch__Drkn5HCuzmZ4lXeQ.json +++ b/data/packs/quickstart-pregens.db/torch__Drkn5HCuzmZ4lXeQ.json @@ -16,6 +16,7 @@ }, "description": "

Sheds light to a near distance (see Light Sources, pg. 46). Burns for one hour of real time.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/torch__JdRGcsO8jifzrNWO.json b/data/packs/quickstart-pregens.db/torch__JdRGcsO8jifzrNWO.json index 99f6dc59..d70b73a9 100644 --- a/data/packs/quickstart-pregens.db/torch__JdRGcsO8jifzrNWO.json +++ b/data/packs/quickstart-pregens.db/torch__JdRGcsO8jifzrNWO.json @@ -16,6 +16,7 @@ }, "description": "

Sheds light to a near distance (see Light Sources, pg. 46). Burns for one hour of real time.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/torch__P6Oxhve94ZplRNWo.json b/data/packs/quickstart-pregens.db/torch__P6Oxhve94ZplRNWo.json index 270c7367..d7f17e89 100644 --- a/data/packs/quickstart-pregens.db/torch__P6Oxhve94ZplRNWo.json +++ b/data/packs/quickstart-pregens.db/torch__P6Oxhve94ZplRNWo.json @@ -16,6 +16,7 @@ }, "description": "

Sheds light to a near distance (see Light Sources, pg. 46). Burns for one hour of real time.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/torch__n56KlB5bbj6MeA2N.json b/data/packs/quickstart-pregens.db/torch__n56KlB5bbj6MeA2N.json index 221b502b..476fd8c1 100644 --- a/data/packs/quickstart-pregens.db/torch__n56KlB5bbj6MeA2N.json +++ b/data/packs/quickstart-pregens.db/torch__n56KlB5bbj6MeA2N.json @@ -16,6 +16,7 @@ }, "description": "

Sheds light to a near distance (see Light Sources, pg. 46). Burns for one hour of real time.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/torch__nIlTwpCCTFzsBYGR.json b/data/packs/quickstart-pregens.db/torch__nIlTwpCCTFzsBYGR.json index 787daa0f..f4affd43 100644 --- a/data/packs/quickstart-pregens.db/torch__nIlTwpCCTFzsBYGR.json +++ b/data/packs/quickstart-pregens.db/torch__nIlTwpCCTFzsBYGR.json @@ -16,6 +16,7 @@ }, "description": "

Sheds light to a near distance (see Light Sources, pg. 46). Burns for one hour of real time.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/torch__vBLkpFZRLX18CAKF.json b/data/packs/quickstart-pregens.db/torch__vBLkpFZRLX18CAKF.json index bbb501f9..3ace60cc 100644 --- a/data/packs/quickstart-pregens.db/torch__vBLkpFZRLX18CAKF.json +++ b/data/packs/quickstart-pregens.db/torch__vBLkpFZRLX18CAKF.json @@ -16,6 +16,7 @@ }, "description": "

Sheds light to a near distance (see Light Sources, pg. 46). Burns for one hour of real time.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/torch__w43og0dpp1JlvYzm.json b/data/packs/quickstart-pregens.db/torch__w43og0dpp1JlvYzm.json index 902b7727..e490834a 100644 --- a/data/packs/quickstart-pregens.db/torch__w43og0dpp1JlvYzm.json +++ b/data/packs/quickstart-pregens.db/torch__w43og0dpp1JlvYzm.json @@ -16,6 +16,7 @@ }, "description": "

Sheds light to a near distance (see Light Sources, pg. 46). Burns for one hour of real time.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/torch__yweKz9055Wr2X6KT.json b/data/packs/quickstart-pregens.db/torch__yweKz9055Wr2X6KT.json index c3aa67d2..c5d35afc 100644 --- a/data/packs/quickstart-pregens.db/torch__yweKz9055Wr2X6KT.json +++ b/data/packs/quickstart-pregens.db/torch__yweKz9055Wr2X6KT.json @@ -16,6 +16,7 @@ }, "description": "

Sheds light to a near distance (see Light Sources, pg. 46). Burns for one hour of real time.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/quickstart-pregens.db/torch__zKAsEsIkGqHapmLH.json b/data/packs/quickstart-pregens.db/torch__zKAsEsIkGqHapmLH.json index 5f1641a8..b4f9af7b 100644 --- a/data/packs/quickstart-pregens.db/torch__zKAsEsIkGqHapmLH.json +++ b/data/packs/quickstart-pregens.db/torch__zKAsEsIkGqHapmLH.json @@ -16,6 +16,7 @@ }, "description": "

Sheds light to a near distance (see Light Sources, pg. 46). Burns for one hour of real time.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, From 4617863ec0f84e1b312b6129203b01599e80f27a Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Fri, 18 Oct 2024 20:47:16 +0100 Subject: [PATCH 013/182] new translation strings --- i18n/de.yaml | 30 +++++++++++++++--------------- i18n/en.yaml | 37 ++++++++++++++++++++++--------------- i18n/es.yaml | 30 +++++++++++++++--------------- i18n/fi.yaml | 30 +++++++++++++++--------------- i18n/fr.yaml | 30 +++++++++++++++--------------- i18n/ko.yaml | 30 +++++++++++++++--------------- i18n/pt_BR.yaml | 30 +++++++++++++++--------------- i18n/sv.yaml | 30 +++++++++++++++--------------- 8 files changed, 127 insertions(+), 120 deletions(-) diff --git a/i18n/de.yaml b/i18n/de.yaml index 4eecce9d..29dbc80a 100644 --- a/i18n/de.yaml +++ b/i18n/de.yaml @@ -104,13 +104,22 @@ SHADOWDARK.apps.monster-importer.instruction2e: Feature SHADOWDARK.apps.monster-importer.instruction3: 3. Click Import Monster. SHADOWDARK.apps.monster-importer.title: Monster-Import SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found +SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.import_button: Import SHADOWDARK.apps.shadowdarkling-importer.import_button2: Partially Import SHADOWDARK.apps.shadowdarkling-importer.instruction1: 1. Besuchen Sie Shadowdarklings.net. SHADOWDARK.apps.shadowdarkling-importer.instruction2: 2. Create Character > Export > copy JSON to clipboard. SHADOWDARK.apps.shadowdarkling-importer.instruction3: Paste Character JSON Here -SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.title: Shadowdarkling importieren +SHADOWDARK.apps.solodark.button1: Unlikely or Impossible +SHADOWDARK.apps.solodark.button2: Even Chance +SHADOWDARK.apps.solodark.button3: Likely or Certain +SHADOWDARK.apps.solodark.oracle: The Oracle +SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" +SHADOWDARK.apps.solodark.question1: What is the question? +SHADOWDARK.apps.solodark.question2: How likely is a "yes" result? +SHADOWDARK.apps.solodark.roll_prompt: Roll Prompt +SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.apps.spell-book.known: Known SHADOWDARK.apps.spell-book.title: Class Spell List SHADOWDARK.apps.spell-importer.import_button: Import Spell @@ -123,15 +132,6 @@ SHADOWDARK.apps.spell-importer.instruction2e: Range SHADOWDARK.apps.spell-importer.instruction2f: Description SHADOWDARK.apps.spell-importer.instruction3: 3. Click Import Spell. SHADOWDARK.apps.spell-importer.title: Import Spell -SHADOWDARK.apps.solodark.button1: Unlikely or Impossible -SHADOWDARK.apps.solodark.button2: Even Chance -SHADOWDARK.apps.solodark.button3: Likely or Certain -SHADOWDARK.apps.solodark.oracle: The Oracle -SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" -SHADOWDARK.apps.solodark.question1: What is the question? -SHADOWDARK.apps.solodark.question2: How likely is a "yes" result? -SHADOWDARK.apps.solodark.roll_prompt: Roll Prompt -SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.armor.properties.disadvantage_stealth: Nachteil/Heimlicheit SHADOWDARK.armor.properties.disadvantage_swimming: Nachteil/Schwimmen SHADOWDARK.armor.properties.no_swimming: Kein Schwimmen @@ -174,14 +174,14 @@ SHADOWDARK.chat.spell_roll.title: "Zaubere {name} auf Stufe {tier} mit Zauber-SK SHADOWDARK.chat.use_ability.failure: "{name} failed to used the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} successfully used the {ability} ability" SHADOWDARK.chat.use_ability.title: "Using Ability" -SHADOWDARK.chat.welcome_message.issues: Report Issues -SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker -SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." -SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG SHADOWDARK.chat.welcome_message.arcane_library_text: Visit the Arcane Library website for official Shadowdark PDFs, books and merch. -SHADOWDARK.chat.welcome_message.title: Shadowdark RPG für Foundry +SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library +SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker +SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." +SHADOWDARK.chat.welcome_message.issues: Report Issues SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are some resources to get you started. +SHADOWDARK.chat.welcome_message.title: Shadowdark RPG für Foundry SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial SHADOWDARK.chatcard.default: Wurf SHADOWDARK.class-ability.ability.check: Ability Check diff --git a/i18n/en.yaml b/i18n/en.yaml index 31a51034..2e0ce4ed 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -104,13 +104,22 @@ SHADOWDARK.apps.monster-importer.instruction2e: Feature SHADOWDARK.apps.monster-importer.instruction3: 3. Click Import Monster. SHADOWDARK.apps.monster-importer.title: Import Monster SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found +SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.import_button: Import SHADOWDARK.apps.shadowdarkling-importer.import_button2: Partially Import SHADOWDARK.apps.shadowdarkling-importer.instruction1: 1. Visit Shadowdarklings.net. SHADOWDARK.apps.shadowdarkling-importer.instruction2: 2. Create Character > Export > copy JSON to clipboard. SHADOWDARK.apps.shadowdarkling-importer.instruction3: Paste Character JSON Here -SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.title: Import Shadowdarkling +SHADOWDARK.apps.solodark.button1: Unlikely or Impossible +SHADOWDARK.apps.solodark.button2: Even Chance +SHADOWDARK.apps.solodark.button3: Likely or Certain +SHADOWDARK.apps.solodark.oracle: The Oracle +SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" +SHADOWDARK.apps.solodark.question1: What is the question? +SHADOWDARK.apps.solodark.question2: How likely is a "yes" result? +SHADOWDARK.apps.solodark.roll_prompt: Roll Prompt +SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.apps.spell-book.known: Known SHADOWDARK.apps.spell-book.title: Class Spell List SHADOWDARK.apps.spell-importer.import_button: Import Spell @@ -123,15 +132,6 @@ SHADOWDARK.apps.spell-importer.instruction2e: Range SHADOWDARK.apps.spell-importer.instruction2f: Description SHADOWDARK.apps.spell-importer.instruction3: 3. Click Import Spell. SHADOWDARK.apps.spell-importer.title: Import Spell -SHADOWDARK.apps.solodark.button1: Unlikely or Impossible -SHADOWDARK.apps.solodark.button2: Even Chance -SHADOWDARK.apps.solodark.button3: Likely or Certain -SHADOWDARK.apps.solodark.oracle: The Oracle -SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" -SHADOWDARK.apps.solodark.question1: What is the question? -SHADOWDARK.apps.solodark.question2: How likely is a "yes" result? -SHADOWDARK.apps.solodark.roll_prompt: Roll Prompt -SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.armor.properties.disadvantage_stealth: Disadvantage/Stealth SHADOWDARK.armor.properties.disadvantage_swimming: Disadvantage/Swim SHADOWDARK.armor.properties.no_swimming: No Swim @@ -174,14 +174,14 @@ SHADOWDARK.chat.spell_roll.title: "{name}, DC {spellDC}" SHADOWDARK.chat.use_ability.failure: "{name} failed to used the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} successfully used the {ability} ability" SHADOWDARK.chat.use_ability.title: "Using Ability" -SHADOWDARK.chat.welcome_message.issues: Report Issues -SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker -SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." -SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG SHADOWDARK.chat.welcome_message.arcane_library_text: Visit the Arcane Library website for official Shadowdark PDFs, books and merch. -SHADOWDARK.chat.welcome_message.title: Shadowdark RPG for Foundry +SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library +SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker +SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." +SHADOWDARK.chat.welcome_message.issues: Report Issues SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are some resources to get you started. +SHADOWDARK.chat.welcome_message.title: Shadowdark RPG for Foundry SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial SHADOWDARK.chatcard.default: Roll SHADOWDARK.class-ability.ability.check: Ability Check @@ -380,6 +380,7 @@ SHADOWDARK.item_type.potion: Potion SHADOWDARK.item_type.spell: Spell SHADOWDARK.item_type.talent: Talent SHADOWDARK.item_type.weapon: Weapon +SHADOWDARK.item.ammunition: Ammunition SHADOWDARK.item.armor_ac_modifier: Modifier SHADOWDARK.item.armor_ac: AC SHADOWDARK.item.armor_bonus_attribute: Bonus Attribute @@ -447,6 +448,7 @@ SHADOWDARK.item.effect.source.title: Item Source SHADOWDARK.item.effect.warning.add_effect_without_value: Can't add effects without selecting a value when asked. SHADOWDARK.item.effect.warning.add_round_item_outside_combat: Can't add effects with Rounds type duration outside of combat. SHADOWDARK.item.equipped: Equipped +SHADOWDARK.item.errors.no_available_ammunition: No ammunition available SHADOWDARK.item.inventory_free_carry: Free Carry SHADOWDARK.item.inventory_per_slot: Max per Slot SHADOWDARK.item.inventory_quantity: Quantity @@ -599,6 +601,8 @@ SHADOWDARK.roll.failure: Failure! ({value}) SHADOWDARK.roll.normal: Normal SHADOWDARK.roll.spell_casting_check: Spellcasting Check SHADOWDARK.roll.success: Success! ({value}) +SHADOWDARK.settings.consume_ammunition.hint: Automatically adjust ammunition for weapons that use it when an attack roll is made +SHADOWDARK.settings.consume_ammunition.name: Auto-Consume Ammunition SHADOWDARK.settings.debugEnabled.hint: Enable or Disable additional debug logging SHADOWDARK.settings.debugEnabled.name: Enable/Disable Debug SHADOWDARK.settings.effect_panel.show_passive.hint: If checked, the Effect Panel will also show active effects from talents and items @@ -727,6 +731,9 @@ SHADOWDARK.source.core-rules: "Shadowdark RPG: Core Rules" SHADOWDARK.source.cursed-scroll-1: Cursed Scroll Vol.1, Diablerie! SHADOWDARK.source.cursed-scroll-2: Cursed Scroll Vol.2, Red Sands SHADOWDARK.source.cursed-scroll-3: Cursed Scroll Vol.3, Midnight Sun +SHADOWDARK.source.cursed-scroll-4: Cursed Scroll Vol.4, River of Night +SHADOWDARK.source.cursed-scroll-5: Cursed Scroll Vol.5, Dwellers in the Deep +SHADOWDARK.source.cursed-scroll-6: Cursed Scroll Vol.6, City of Masks SHADOWDARK.source.quickstart: "Shadowdark RPG: Quickstart Set" SHADOWDARK.spell_caster.priest: Priest SHADOWDARK.spell_caster.wizard: Wizard diff --git a/i18n/es.yaml b/i18n/es.yaml index 40e9b97d..99fa3ae7 100644 --- a/i18n/es.yaml +++ b/i18n/es.yaml @@ -104,13 +104,22 @@ SHADOWDARK.apps.monster-importer.instruction2e: Característica SHADOWDARK.apps.monster-importer.instruction3: 3. Clic en importar monstruo. SHADOWDARK.apps.monster-importer.title: Importar monstruo SHADOWDARK.apps.shadowdarkling-importer.errors: Elementos no encontrados +SHADOWDARK.apps.shadowdarkling-importer.header: Importador de Shadowdarkling SHADOWDARK.apps.shadowdarkling-importer.import_button: Importar SHADOWDARK.apps.shadowdarkling-importer.import_button2: Importar parcialmente SHADOWDARK.apps.shadowdarkling-importer.instruction1: 1. Visita Shadowdarklings.net. SHADOWDARK.apps.shadowdarkling-importer.instruction2: 2. Crear personaje > Exportar > copiar JSON a portapapeles. SHADOWDARK.apps.shadowdarkling-importer.instruction3: Pegar personaje JSON aquí -SHADOWDARK.apps.shadowdarkling-importer.header: Importador de Shadowdarkling SHADOWDARK.apps.shadowdarkling-importer.title: Importar Shadowdarkling +SHADOWDARK.apps.solodark.button1: Improbable o imposible +SHADOWDARK.apps.solodark.button2: Probabilidad pareja +SHADOWDARK.apps.solodark.button3: Probable o cierto +SHADOWDARK.apps.solodark.oracle: El Oráculo +SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" +SHADOWDARK.apps.solodark.question1: '¿Cuál es la pregunta?' +SHADOWDARK.apps.solodark.question2: '¿Cómo de probable es un resultado "sí"?' +SHADOWDARK.apps.solodark.roll_prompt: Lanzar referencia +SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.apps.spell-book.known: Conocido SHADOWDARK.apps.spell-book.title: Lista de hechizos de clase SHADOWDARK.apps.spell-importer.import_button: Importar hechizo @@ -123,15 +132,6 @@ SHADOWDARK.apps.spell-importer.instruction2e: Alcance SHADOWDARK.apps.spell-importer.instruction2f: Descripción SHADOWDARK.apps.spell-importer.instruction3: Clic en importar hechizo. SHADOWDARK.apps.spell-importer.title: Importar hechizo -SHADOWDARK.apps.solodark.button1: Improbable o imposible -SHADOWDARK.apps.solodark.button2: Probabilidad pareja -SHADOWDARK.apps.solodark.button3: Probable o cierto -SHADOWDARK.apps.solodark.oracle: El Oráculo -SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" -SHADOWDARK.apps.solodark.question1: '¿Cuál es la pregunta?' -SHADOWDARK.apps.solodark.question2: '¿Cómo de probable es un resultado "sí"?' -SHADOWDARK.apps.solodark.roll_prompt: Lanzar referencia -SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.armor.properties.disadvantage_stealth: Desventaja/Sigilo SHADOWDARK.armor.properties.disadvantage_swimming: Desventaja/Nadar SHADOWDARK.armor.properties.no_swimming: Sin nadar @@ -174,14 +174,14 @@ SHADOWDARK.chat.spell_roll.title: "{name}, CD {spellDC}" SHADOWDARK.chat.use_ability.failure: "{name} failed to used the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} successfully used the {ability} ability" SHADOWDARK.chat.use_ability.title: "Usando habilidad" -SHADOWDARK.chat.welcome_message.issues: Report Issues -SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker -SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." -SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG SHADOWDARK.chat.welcome_message.arcane_library_text: Visit the Arcane Library website for official Shadowdark PDFs, books and merch. -SHADOWDARK.chat.welcome_message.title: Shadowdark RPG para Foundry +SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library +SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker +SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." +SHADOWDARK.chat.welcome_message.issues: Report Issues SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are some resources to get you started. +SHADOWDARK.chat.welcome_message.title: Shadowdark RPG para Foundry SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial SHADOWDARK.chatcard.default: Tirada SHADOWDARK.class-ability.ability.check: Ability Check diff --git a/i18n/fi.yaml b/i18n/fi.yaml index d084ef2c..137b754e 100644 --- a/i18n/fi.yaml +++ b/i18n/fi.yaml @@ -104,13 +104,22 @@ SHADOWDARK.apps.monster-importer.instruction2e: Ominaisuus SHADOWDARK.apps.monster-importer.instruction3: 3. Paina "Tuo hirviö"-nappia. SHADOWDARK.apps.monster-importer.title: Tuo hirviö SHADOWDARK.apps.shadowdarkling-importer.errors: Kohteita ei löytynyt +SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling tuontityökalu SHADOWDARK.apps.shadowdarkling-importer.import_button: Tuo SHADOWDARK.apps.shadowdarkling-importer.import_button2: Tuo osittain SHADOWDARK.apps.shadowdarkling-importer.instruction1: 1. Navigoi shadowdarklings.net sivustolle. SHADOWDARK.apps.shadowdarkling-importer.instruction2: 2. Luo hahmo > Vie > kopioi JSON leikepöydälle. SHADOWDARK.apps.shadowdarkling-importer.instruction3: Liitä hahmon JSON tähän -SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling tuontityökalu SHADOWDARK.apps.shadowdarkling-importer.title: Tuo Shadowdarkling +SHADOWDARK.apps.solodark.button1: Epätodennäköistä tai mahdotonta +SHADOWDARK.apps.solodark.button2: Tasapuolinen mahdollisuus +SHADOWDARK.apps.solodark.button3: Todennäköistä tai varmaa +SHADOWDARK.apps.solodark.oracle: Oraakkeli +SHADOWDARK.apps.solodark.phrasing: 'Kysy kysymyksesi myöntävällä lausahduksella. Sen sijaan, että kysyisitte: "Eikö tässä huoneessa ole örkkejä?" kysy "Onko tässä huoneessa örkkejä?"' +SHADOWDARK.apps.solodark.question1: Mikä on kysymyksesi? +SHADOWDARK.apps.solodark.question2: Kuinka todennäköistä on saada "kyllä" vastaus? +SHADOWDARK.apps.solodark.roll_prompt: Heittokehote +SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.apps.spell-book.known: Opittu SHADOWDARK.apps.spell-book.title: Hahmoluokan loitsulista SHADOWDARK.apps.spell-importer.import_button: Tuo loitsu @@ -123,15 +132,6 @@ SHADOWDARK.apps.spell-importer.instruction2e: Kantama SHADOWDARK.apps.spell-importer.instruction2f: Kuvaus SHADOWDARK.apps.spell-importer.instruction3: 3. Paina "Tuo loitsu"-nappia. SHADOWDARK.apps.spell-importer.title: Tuo loitsu -SHADOWDARK.apps.solodark.button1: Epätodennäköistä tai mahdotonta -SHADOWDARK.apps.solodark.button2: Tasapuolinen mahdollisuus -SHADOWDARK.apps.solodark.button3: Todennäköistä tai varmaa -SHADOWDARK.apps.solodark.oracle: Oraakkeli -SHADOWDARK.apps.solodark.phrasing: 'Kysy kysymyksesi myöntävällä lausahduksella. Sen sijaan, että kysyisitte: "Eikö tässä huoneessa ole örkkejä?" kysy "Onko tässä huoneessa örkkejä?"' -SHADOWDARK.apps.solodark.question1: Mikä on kysymyksesi? -SHADOWDARK.apps.solodark.question2: Kuinka todennäköistä on saada "kyllä" vastaus? -SHADOWDARK.apps.solodark.roll_prompt: Heittokehote -SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.armor.properties.disadvantage_stealth: Haitta/Hiipiminen SHADOWDARK.armor.properties.disadvantage_swimming: Haitta/Uiminen SHADOWDARK.armor.properties.no_swimming: Ei voi uida @@ -174,14 +174,14 @@ SHADOWDARK.chat.spell_roll.title: "Loihditaan {name} tasolla {tier} jolloin vaik SHADOWDARK.chat.use_ability.failure: "{name} epäonnistui käyttämään {ability} kykyä" SHADOWDARK.chat.use_ability.success: "{name} onnistui {ability} kyvyssään" SHADOWDARK.chat.use_ability.title: "Kyvyn käyttö" -SHADOWDARK.chat.welcome_message.issues: Raportoi ongelmasta -SHADOWDARK.chat.welcome_message.issues_button: Virheiden seurantajärjestelmä -SHADOWDARK.chat.welcome_message.issues_text: "Tutustu virheiden seurantajärjestelmäämme, jos löydät ongelmia järjestelmässä tai sinulla on ideoita uusille ominaisuuksille." -SHADOWDARK.chat.welcome_message.arcane_library: 'Tue Shadowdarkin kehittäjää: The Arcane Library' SHADOWDARK.chat.welcome_message.arcane_library_button: Selaa Shadowdark RPG tuotteita SHADOWDARK.chat.welcome_message.arcane_library_text: Vieraile Arcane Libraryn sivuilla selataksesi virallisia Shadowdark RPG tuotteita, kuten kirjoja, pdf-tiedostoja ja muita oheistuotteita. -SHADOWDARK.chat.welcome_message.title: Shadowdark RPG foundrylle +SHADOWDARK.chat.welcome_message.arcane_library: 'Tue Shadowdarkin kehittäjää: The Arcane Library' +SHADOWDARK.chat.welcome_message.issues_button: Virheiden seurantajärjestelmä +SHADOWDARK.chat.welcome_message.issues_text: "Tutustu virheiden seurantajärjestelmäämme, jos löydät ongelmia järjestelmässä tai sinulla on ideoita uusille ominaisuuksille." +SHADOWDARK.chat.welcome_message.issues: Raportoi ongelmasta SHADOWDARK.chat.welcome_message.title_text: Tervetuloa Shadowdark roolipeliin. Tässä on muutamia resursseja aloittelijoille. +SHADOWDARK.chat.welcome_message.title: Shadowdark RPG foundrylle SHADOWDARK.chat.welcome_message.watch: Katso opastusvideo SHADOWDARK.chatcard.default: Heitä noppaa SHADOWDARK.class-ability.ability.check: Kyvykkyysheitto diff --git a/i18n/fr.yaml b/i18n/fr.yaml index fbfb671a..3d6bcab4 100644 --- a/i18n/fr.yaml +++ b/i18n/fr.yaml @@ -104,13 +104,22 @@ SHADOWDARK.apps.monster-importer.instruction2e: Caractéristique SHADOWDARK.apps.monster-importer.instruction3: 3. Cliquez sur "Importer Monstre". SHADOWDARK.apps.monster-importer.title: Importer un monstre SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found +SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.import_button: Import SHADOWDARK.apps.shadowdarkling-importer.import_button2: Partially Import SHADOWDARK.apps.shadowdarkling-importer.instruction1: 1. Allez sur Shadowdarklings.net. SHADOWDARK.apps.shadowdarkling-importer.instruction2: 2. Create Character > Export > copy JSON to clipboard. SHADOWDARK.apps.shadowdarkling-importer.instruction3: Paste Character JSON Here -SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.title: Importer Shadowdarkling +SHADOWDARK.apps.solodark.button1: Unlikely or Impossible +SHADOWDARK.apps.solodark.button2: Even Chance +SHADOWDARK.apps.solodark.button3: Likely or Certain +SHADOWDARK.apps.solodark.oracle: The Oracle +SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" +SHADOWDARK.apps.solodark.question1: What is the question? +SHADOWDARK.apps.solodark.question2: How likely is a "yes" result? +SHADOWDARK.apps.solodark.roll_prompt: Roll Prompt +SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.apps.spell-book.known: Known SHADOWDARK.apps.spell-book.title: Class Spell List SHADOWDARK.apps.spell-importer.import_button: Import Spell @@ -123,15 +132,6 @@ SHADOWDARK.apps.spell-importer.instruction2e: Range SHADOWDARK.apps.spell-importer.instruction2f: Description SHADOWDARK.apps.spell-importer.instruction3: 3. Click Import Spell. SHADOWDARK.apps.spell-importer.title: Import Spell -SHADOWDARK.apps.solodark.button1: Unlikely or Impossible -SHADOWDARK.apps.solodark.button2: Even Chance -SHADOWDARK.apps.solodark.button3: Likely or Certain -SHADOWDARK.apps.solodark.oracle: The Oracle -SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" -SHADOWDARK.apps.solodark.question1: What is the question? -SHADOWDARK.apps.solodark.question2: How likely is a "yes" result? -SHADOWDARK.apps.solodark.roll_prompt: Roll Prompt -SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.armor.properties.disadvantage_stealth: Désavantage/Discrétion SHADOWDARK.armor.properties.disadvantage_swimming: Désavantage/Natation SHADOWDARK.armor.properties.no_swimming: Natation Impossible @@ -174,14 +174,14 @@ SHADOWDARK.chat.spell_roll.title: "Lancement de {name} au rang {tier} avec DD de SHADOWDARK.chat.use_ability.failure: "{name} a échoué à utiliser la capacité {ability}" SHADOWDARK.chat.use_ability.success: "{name} a utilisé la capacité {ability} avec succès" SHADOWDARK.chat.use_ability.title: "Utiliser une capacité" -SHADOWDARK.chat.welcome_message.issues: Report Issues -SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker -SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." -SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG SHADOWDARK.chat.welcome_message.arcane_library_text: Visit the Arcane Library website for official Shadowdark PDFs, books and merch. -SHADOWDARK.chat.welcome_message.title: Shadowdark RPG pour Foundry +SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library +SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker +SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." +SHADOWDARK.chat.welcome_message.issues: Report Issues SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are some resources to get you started. +SHADOWDARK.chat.welcome_message.title: Shadowdark RPG pour Foundry SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial SHADOWDARK.chatcard.default: Lancer SHADOWDARK.class-ability.ability.check: Ability Check diff --git a/i18n/ko.yaml b/i18n/ko.yaml index e1cb060e..03eb59cf 100644 --- a/i18n/ko.yaml +++ b/i18n/ko.yaml @@ -104,13 +104,22 @@ SHADOWDARK.apps.monster-importer.instruction2e: 재주 SHADOWDARK.apps.monster-importer.instruction3: 3. '몬스터 불러오기'를 누릅니다. SHADOWDARK.apps.monster-importer.title: 몬스터 불러오기 SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found +SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.import_button: Import SHADOWDARK.apps.shadowdarkling-importer.import_button2: Partially Import SHADOWDARK.apps.shadowdarkling-importer.instruction1: 1. shadowdarklings.net에 방문하세요. SHADOWDARK.apps.shadowdarkling-importer.instruction2: 2. Create Character > Export > copy JSON to clipboard. SHADOWDARK.apps.shadowdarkling-importer.instruction3: Paste Character JSON Here -SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.title: Shadowdarkling에서 가져오기 +SHADOWDARK.apps.solodark.button1: Unlikely or Impossible +SHADOWDARK.apps.solodark.button2: Even Chance +SHADOWDARK.apps.solodark.button3: Likely or Certain +SHADOWDARK.apps.solodark.oracle: The Oracle +SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" +SHADOWDARK.apps.solodark.question1: What is the question? +SHADOWDARK.apps.solodark.question2: How likely is a "yes" result? +SHADOWDARK.apps.solodark.roll_prompt: Roll Prompt +SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.apps.spell-book.known: Known SHADOWDARK.apps.spell-book.title: Class Spell List SHADOWDARK.apps.spell-importer.import_button: Import Spell @@ -123,15 +132,6 @@ SHADOWDARK.apps.spell-importer.instruction2e: Range SHADOWDARK.apps.spell-importer.instruction2f: Description SHADOWDARK.apps.spell-importer.instruction3: 3. Click Import Spell. SHADOWDARK.apps.spell-importer.title: Import Spell -SHADOWDARK.apps.solodark.button1: Unlikely or Impossible -SHADOWDARK.apps.solodark.button2: Even Chance -SHADOWDARK.apps.solodark.button3: Likely or Certain -SHADOWDARK.apps.solodark.oracle: The Oracle -SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" -SHADOWDARK.apps.solodark.question1: What is the question? -SHADOWDARK.apps.solodark.question2: How likely is a "yes" result? -SHADOWDARK.apps.solodark.roll_prompt: Roll Prompt -SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.armor.properties.disadvantage_stealth: 불리함/은신 SHADOWDARK.armor.properties.disadvantage_swimming: 불리함/수영 SHADOWDARK.armor.properties.no_swimming: 수영 못함 @@ -174,14 +174,14 @@ SHADOWDARK.chat.spell_roll.title: "{name}, DC {spellDC}" SHADOWDARK.chat.use_ability.failure: "{name} failed to used the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} successfully used the {ability} ability" SHADOWDARK.chat.use_ability.title: "Using Ability" -SHADOWDARK.chat.welcome_message.issues: Report Issues -SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker -SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." -SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG SHADOWDARK.chat.welcome_message.arcane_library_text: Visit the Arcane Library website for official Shadowdark PDFs, books and merch. -SHADOWDARK.chat.welcome_message.title: 섀도다크 RPG 파운드리 시스템 +SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library +SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker +SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." +SHADOWDARK.chat.welcome_message.issues: Report Issues SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are some resources to get you started. +SHADOWDARK.chat.welcome_message.title: 섀도다크 RPG 파운드리 시스템 SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial SHADOWDARK.chatcard.default: 굴림 SHADOWDARK.class-ability.ability.check: Ability Check diff --git a/i18n/pt_BR.yaml b/i18n/pt_BR.yaml index fc394d93..5e77d33d 100644 --- a/i18n/pt_BR.yaml +++ b/i18n/pt_BR.yaml @@ -104,13 +104,22 @@ SHADOWDARK.apps.monster-importer.instruction2e: Característica SHADOWDARK.apps.monster-importer.instruction3: 3. Clique em Importar Monstro. SHADOWDARK.apps.monster-importer.title: Importar Monstro SHADOWDARK.apps.shadowdarkling-importer.errors: Itens Não Encontrado +SHADOWDARK.apps.shadowdarkling-importer.header: Importador do Shadowdarkling SHADOWDARK.apps.shadowdarkling-importer.import_button: Importar SHADOWDARK.apps.shadowdarkling-importer.import_button2: Importar Parcialmente SHADOWDARK.apps.shadowdarkling-importer.instruction1: 1. Visite Shadowdarklings.net. SHADOWDARK.apps.shadowdarkling-importer.instruction2: 2. Criar Personagem > Exportar > copiar JSON para área de transferência. SHADOWDARK.apps.shadowdarkling-importer.instruction3: Colar JSON do Personagem Aqui -SHADOWDARK.apps.shadowdarkling-importer.header: Importador do Shadowdarkling SHADOWDARK.apps.shadowdarkling-importer.title: Importar Shadowdarkling +SHADOWDARK.apps.solodark.button1: Improvável ou Impossível +SHADOWDARK.apps.solodark.button2: Chance Equilibrada +SHADOWDARK.apps.solodark.button3: Provavelmente ou Certamente +SHADOWDARK.apps.solodark.oracle: O Oráculo +SHADOWDARK.apps.solodark.phrasing: 'Faça sua pergunta com uma frase afirmativa. Em vez de perguntar, "Não há orcs nesta sala?" pergunte: "Há orcs nesta sala?"' +SHADOWDARK.apps.solodark.question1: Qual é a pergunta? +SHADOWDARK.apps.solodark.question2: Qual é a chance do resultado "sim"? +SHADOWDARK.apps.solodark.roll_prompt: Rolar Sugestão +SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.apps.spell-book.known: Aprendido SHADOWDARK.apps.spell-book.title: Lista de Magias da Classe SHADOWDARK.apps.spell-importer.import_button: Importar Magia @@ -123,15 +132,6 @@ SHADOWDARK.apps.spell-importer.instruction2e: Alcance SHADOWDARK.apps.spell-importer.instruction2f: Descrição SHADOWDARK.apps.spell-importer.instruction3: 3. Clique em Importar Magia. SHADOWDARK.apps.spell-importer.title: Importar Magia -SHADOWDARK.apps.solodark.button1: Improvável ou Impossível -SHADOWDARK.apps.solodark.button2: Chance Equilibrada -SHADOWDARK.apps.solodark.button3: Provavelmente ou Certamente -SHADOWDARK.apps.solodark.oracle: O Oráculo -SHADOWDARK.apps.solodark.phrasing: 'Faça sua pergunta com uma frase afirmativa. Em vez de perguntar, "Não há orcs nesta sala?" pergunte: "Há orcs nesta sala?"' -SHADOWDARK.apps.solodark.question1: Qual é a pergunta? -SHADOWDARK.apps.solodark.question2: Qual é a chance do resultado "sim"? -SHADOWDARK.apps.solodark.roll_prompt: Rolar Sugestão -SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.armor.properties.disadvantage_stealth: Desvantagem/Furtividade SHADOWDARK.armor.properties.disadvantage_swimming: Desvantagem/Natação SHADOWDARK.armor.properties.no_swimming: Natação Impossível @@ -174,14 +174,14 @@ SHADOWDARK.chat.spell_roll.title: "{name}, CD {spellDC}" SHADOWDARK.chat.use_ability.failure: "{name} falhou em usar a habilidade {ability}" SHADOWDARK.chat.use_ability.success: "{name} usou a habilidade {ability} com sucesso" SHADOWDARK.chat.use_ability.title: "Usando Habilidade" -SHADOWDARK.chat.welcome_message.issues: Reportar Problemas -SHADOWDARK.chat.welcome_message.issues_button: Monitor de Problemas -SHADOWDARK.chat.welcome_message.issues_text: "Se você encontrar quaisquer problemas ou tiver ideias para novas funcionalidades para o sistema, confira nosso rastreador de problemas." -SHADOWDARK.chat.welcome_message.arcane_library: Apoie The Arcane Library SHADOWDARK.chat.welcome_message.arcane_library_button: Compre o RPG Shadowdark SHADOWDARK.chat.welcome_message.arcane_library_text: Visite o site da The Arcane Library para PDFs, livros e produtos oficiais do Shadowdark. -SHADOWDARK.chat.welcome_message.title: RPG Shadowdark para o Foundry +SHADOWDARK.chat.welcome_message.arcane_library: Apoie The Arcane Library +SHADOWDARK.chat.welcome_message.issues_button: Monitor de Problemas +SHADOWDARK.chat.welcome_message.issues_text: "Se você encontrar quaisquer problemas ou tiver ideias para novas funcionalidades para o sistema, confira nosso rastreador de problemas." +SHADOWDARK.chat.welcome_message.issues: Reportar Problemas SHADOWDARK.chat.welcome_message.title_text: Bem vindo ao RPG Shadowdark. Aqui estão alguns recursos para você começar. +SHADOWDARK.chat.welcome_message.title: RPG Shadowdark para o Foundry SHADOWDARK.chat.welcome_message.watch: Assista ao Tutorial em Vídeo SHADOWDARK.chatcard.default: Rolar SHADOWDARK.class-ability.ability.check: Teste de Atributo diff --git a/i18n/sv.yaml b/i18n/sv.yaml index 0a5c0c79..fa97c35e 100644 --- a/i18n/sv.yaml +++ b/i18n/sv.yaml @@ -104,13 +104,22 @@ SHADOWDARK.apps.monster-importer.instruction2e: Egenskap SHADOWDARK.apps.monster-importer.instruction3: 3. Klicka på Importera Monster. SHADOWDARK.apps.monster-importer.title: Importera monster SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found +SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.import_button: Import SHADOWDARK.apps.shadowdarkling-importer.import_button2: Partially Import SHADOWDARK.apps.shadowdarkling-importer.instruction1: 1. Besök Shadowdarklings.net. SHADOWDARK.apps.shadowdarkling-importer.instruction2: 2. Create Character > Export > copy JSON to clipboard. SHADOWDARK.apps.shadowdarkling-importer.instruction3: Paste Character JSON Here -SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.title: Importera Shadowdarkling +SHADOWDARK.apps.solodark.button1: Unlikely or Impossible +SHADOWDARK.apps.solodark.button2: Even Chance +SHADOWDARK.apps.solodark.button3: Likely or Certain +SHADOWDARK.apps.solodark.oracle: The Oracle +SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" +SHADOWDARK.apps.solodark.question1: What is the question? +SHADOWDARK.apps.solodark.question2: How likely is a "yes" result? +SHADOWDARK.apps.solodark.roll_prompt: Roll Prompt +SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.apps.spell-book.known: Known SHADOWDARK.apps.spell-book.title: Class Spell List SHADOWDARK.apps.spell-importer.import_button: Importera besvärjelse @@ -123,15 +132,6 @@ SHADOWDARK.apps.spell-importer.instruction2e: Räckvidd SHADOWDARK.apps.spell-importer.instruction2f: Beskrivning SHADOWDARK.apps.spell-importer.instruction3: 3. Klicka på importera. SHADOWDARK.apps.spell-importer.title: Importera besvärjelse -SHADOWDARK.apps.solodark.button1: Unlikely or Impossible -SHADOWDARK.apps.solodark.button2: Even Chance -SHADOWDARK.apps.solodark.button3: Likely or Certain -SHADOWDARK.apps.solodark.oracle: The Oracle -SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" -SHADOWDARK.apps.solodark.question1: What is the question? -SHADOWDARK.apps.solodark.question2: How likely is a "yes" result? -SHADOWDARK.apps.solodark.roll_prompt: Roll Prompt -SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.armor.properties.disadvantage_stealth: Nackdel/Smyga SHADOWDARK.armor.properties.disadvantage_swimming: Nackdel/Simma SHADOWDARK.armor.properties.no_swimming: Ingen Simma @@ -174,14 +174,14 @@ SHADOWDARK.chat.spell_roll.title: "Kastar {name} som grad {tier} med svårighets SHADOWDARK.chat.use_ability.failure: "{name} misslyckades med att använda {ability} förmågan" SHADOWDARK.chat.use_ability.success: "{name} lyckades med {ability} förmågan" SHADOWDARK.chat.use_ability.title: "Använder förmåga" -SHADOWDARK.chat.welcome_message.issues: Report Issues -SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker -SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." -SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG SHADOWDARK.chat.welcome_message.arcane_library_text: Visit the Arcane Library website for official Shadowdark PDFs, books and merch. -SHADOWDARK.chat.welcome_message.title: Shadowdark RPG för Foundry +SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library +SHADOWDARK.chat.welcome_message.issues_button: Issue Tracker +SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." +SHADOWDARK.chat.welcome_message.issues: Report Issues SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are some resources to get you started. +SHADOWDARK.chat.welcome_message.title: Shadowdark RPG för Foundry SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial SHADOWDARK.chatcard.default: Rulla SHADOWDARK.class-ability.ability.check: Ability Check From 8aa7e53cbff0e4420c607dd49d5ef750442d56b3 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Fri, 18 Oct 2024 20:48:26 +0100 Subject: [PATCH 014/182] consume ammo if required --- system/src/config.mjs | 7 +++-- system/src/dice/RollSD.mjs | 6 ++++ system/src/documents/ActorSD.mjs | 31 ++++++++++++++++++- system/src/documents/CompendiumsSD.mjs | 9 ++++++ system/src/documents/ItemSD.mjs | 20 ++++++++++++ system/src/settings.mjs | 13 ++++++++ system/src/sheets/ItemSheetSD.mjs | 4 +++ system/template.json | 2 ++ .../templates/items/partials/properties.hbs | 7 +++++ system/templates/items/partials/weapon.hbs | 10 ++++++ 10 files changed, 106 insertions(+), 3 deletions(-) diff --git a/system/src/config.mjs b/system/src/config.mjs index b13faf2d..20831342 100644 --- a/system/src/config.mjs +++ b/system/src/config.mjs @@ -139,12 +139,15 @@ SHADOWDARK.RANGES_SHORT = { }; SHADOWDARK.OFFICIAL_SOURCES = { + "bard-and-ranger": "SHADOWDARK.source.bard-and-ranger", + "core-rules": "SHADOWDARK.source.core-rules", "cursed-scroll-1": "SHADOWDARK.source.cursed-scroll-1", "cursed-scroll-2": "SHADOWDARK.source.cursed-scroll-2", "cursed-scroll-3": "SHADOWDARK.source.cursed-scroll-3", + "cursed-scroll-4": "SHADOWDARK.source.cursed-scroll-4", + "cursed-scroll-5": "SHADOWDARK.source.cursed-scroll-5", + "cursed-scroll-6": "SHADOWDARK.source.cursed-scroll-6", "quickstart": "SHADOWDARK.source.quickstart", - "bard-and-ranger": "SHADOWDARK.source.bard-and-ranger", - "core-rules": "SHADOWDARK.source.core-rules", }; SHADOWDARK.SPELL_DURATIONS = { diff --git a/system/src/dice/RollSD.mjs b/system/src/dice/RollSD.mjs index a0437947..27ad9fc7 100644 --- a/system/src/dice/RollSD.mjs +++ b/system/src/dice/RollSD.mjs @@ -122,6 +122,12 @@ export default class RollSD extends Roll { && result && !result?.rolls?.main?.success ) data.item.update({"system.lost": true}); + + // Reduce ammo if required + if (data.usesAmmunition && data.ammunitionItem) { + data.ammunitionItem.reduceAmmunition(1); + } + return result; } diff --git a/system/src/documents/ActorSD.mjs b/system/src/documents/ActorSD.mjs index 73e22d8d..b682ed9d 100644 --- a/system/src/documents/ActorSD.mjs +++ b/system/src/documents/ActorSD.mjs @@ -256,6 +256,19 @@ export default class ActorSD extends Actor { } + ammunitionItems(key) { + return this.items.filter(i => { + if (key) { + return i.system.isAmmunition + && i.system.quantity > 0 + && i.name.slugify() === key; + } + else { + return i.system.isAmmunition && i.system.quantity > 0; + } + }); + } + /** * Applies the given number to the Actor or Token's HP value. * The multiplier is a convenience feature to apply healing @@ -1030,10 +1043,19 @@ export default class ActorSD extends Actor { async rollAttack(itemId, options={}) { const item = this.items.get(itemId); + const ammunition = item.availableAmmunition(); + + let ammunitionItem = undefined; + if (ammunition && Array.isArray(ammunition) && ammunition.length > 0) { + ammunitionItem = ammunition[0]; + } + const data = { + actor: this, + ammunitionItem, item: item, rollType: (item.isWeapon()) ? item.system.baseWeapon.slugify() : item.name.slugify(), - actor: this, + usesAmmunition: item.usesAmmunition, }; const bonuses = this.system.bonuses; @@ -1125,6 +1147,13 @@ export default class ActorSD extends Actor { if (data.weaponMasteryBonus) data.damageParts.push("@weaponMasteryBonus"); } + if (data.usesAmmunition && !data.ammunitionItem) { + return ui.notifications.warn( + game.i18n.localize("SHADOWDARK.item.errors.no_available_ammunition"), + { permanent: false } + ); + } + return item.rollItem(parts, data, options); } diff --git a/system/src/documents/CompendiumsSD.mjs b/system/src/documents/CompendiumsSD.mjs index 750a0040..e0ff20d7 100644 --- a/system/src/documents/CompendiumsSD.mjs +++ b/system/src/documents/CompendiumsSD.mjs @@ -54,6 +54,15 @@ export default class CompendiumsSD { return this._collectionFromArray(docs); } + static async ammunition(filterSources=true) { + const documents = + await CompendiumsSD._documents("Item", "Basic", filterSources); + + return this._collectionFromArray( + documents.filter(document => document.system.isAmmunition) + ); + } + static async ancestries(filterSources=true) { return CompendiumsSD._documents("Item", "Ancestry", filterSources); } diff --git a/system/src/documents/ItemSD.mjs b/system/src/documents/ItemSD.mjs index 322e301d..3a5b1cb7 100644 --- a/system/src/documents/ItemSD.mjs +++ b/system/src/documents/ItemSD.mjs @@ -10,6 +10,15 @@ export default class ItemSD extends Item { ].includes(this.type); } + get usesAmmunition() { + return (game.settings.get("shadowdark", "autoConsumeAmmunition") + && this.isOwned + && this.actor.type === "Player" + && this.type === "Weapon" + && this.system.ammoClass !== "" + ); + } + /* Set the start time and initiative roll of newly created effect */ /** @override */ async _preCreate(data, options, user) { @@ -42,6 +51,12 @@ export default class ItemSD extends Item { } } + availableAmmunition() { + if (this.usesAmmunition) { + return this.actor.ammunitionItems(this.system.ammoClass); + } + } + async getChatData(htmlOptions={}) { const description = await this.getEnrichedDescription(); @@ -188,6 +203,11 @@ export default class ItemSD extends Item { } } + async reduceAmmunition(amount) { + const newAmount = Math.max(0, this.system.quantity - amount); + this.update({"system.quantity": newAmount}); + } + setLightRemaining(remainingSeconds) { this.update({"system.light.remainingSecs": remainingSeconds}); } diff --git a/system/src/settings.mjs b/system/src/settings.mjs index 0da7ad60..f3c7b38c 100644 --- a/system/src/settings.mjs +++ b/system/src/settings.mjs @@ -133,6 +133,19 @@ export default function registerSystemSettings() { type: Boolean, }); + // ------------------ + // AMMO CONSUMPTION + // ------------------ + // + game.settings.register("shadowdark", "autoConsumeAmmunition", { + hint: "SHADOWDARK.settings.consume_ammunition.hint", + name: "SHADOWDARK.settings.consume_ammunition.name", + scope: "world", + config: true, + default: true, + type: Boolean, + }); + // ---------------------- // INITIATIVE SETTINGS // ---------------------- diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 4a804468..8da01fa4 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -394,6 +394,10 @@ export default class ItemSheetSD extends ItemSheet { delete context.baseArmor[mySlug]; } if (item.type === "Weapon") { + context.ammunition = await shadowdark.utils.getSlugifiedItemList( + await shadowdark.compendiums.ammunition() + ); + context.baseWeapons = await shadowdark.utils.getSlugifiedItemList( await shadowdark.compendiums.baseWeapons() ); diff --git a/system/template.json b/system/template.json index d7535945..87221877 100644 --- a/system/template.json +++ b/system/template.json @@ -254,6 +254,7 @@ "lightSource", "physical" ], + "isAmmunition": false, "scroll": false, "treasure": false }, @@ -430,6 +431,7 @@ "common", "physical" ], + "ammoClass": "", "baseWeapon": "", "bonuses": { "attackBonus": 0, diff --git a/system/templates/items/partials/properties.hbs b/system/templates/items/partials/properties.hbs index c6be5c67..b00b551d 100644 --- a/system/templates/items/partials/properties.hbs +++ b/system/templates/items/partials/properties.hbs @@ -15,6 +15,13 @@ {{/if}} {{#ifEq item.type "Basic"}} +

{{localize 'SHADOWDARK.item.ammunition'}}

+ +

{{localize 'SHADOWDARK.item.light.is_source'}}

+

{{localize 'SHADOWDARK.item.ammunition'}}

+ +

{{localize 'SHADOWDARK.item.weapon_damage.oneHanded'}}

- - - + {{selectOptions + boonTypes + selected=default + localize=false + }} +

{{localize 'SHADOWDARK.item.level'}}

+ diff --git a/system/templates/items/partials/active-effects.hbs b/system/templates/items/_partials/active-effects.hbs similarity index 100% rename from system/templates/items/partials/active-effects.hbs rename to system/templates/items/_partials/active-effects.hbs diff --git a/system/templates/items/partials/ancestry.hbs b/system/templates/items/_partials/ancestry.hbs similarity index 96% rename from system/templates/items/partials/ancestry.hbs rename to system/templates/items/_partials/ancestry.hbs index 64440e30..6fdfc945 100644 --- a/system/templates/items/partials/ancestry.hbs +++ b/system/templates/items/_partials/ancestry.hbs @@ -5,7 +5,7 @@ header-class="light" }} {{> - items/partials/choice-selector + items/_partials/choice-selector config=fixedLanguagesConfig editable=editable }} @@ -16,7 +16,7 @@ header-class="light" }} {{> - items/partials/choice-selector + items/_partials/choice-selector config=languageChoicesConfig editable=editable }} @@ -63,7 +63,7 @@ }} {{> - items/partials/choice-selector + items/_partials/choice-selector config=talentsConfig editable=editable }} diff --git a/system/templates/items/partials/armor.hbs b/system/templates/items/_partials/armor.hbs similarity index 100% rename from system/templates/items/partials/armor.hbs rename to system/templates/items/_partials/armor.hbs diff --git a/system/templates/items/partials/boon.hbs b/system/templates/items/_partials/boon.hbs similarity index 63% rename from system/templates/items/partials/boon.hbs rename to system/templates/items/_partials/boon.hbs index 7143a5b4..d34c51d9 100644 --- a/system/templates/items/partials/boon.hbs +++ b/system/templates/items/_partials/boon.hbs @@ -7,5 +7,12 @@ localize=false }} + +

{{localize 'SHADOWDARK.item.level'}}

+ {{numberInput + item.system.level + name="system.level" + placeholder="0" + }} diff --git a/system/templates/items/partials/choice-selector.hbs b/system/templates/items/_partials/choice-selector.hbs similarity index 100% rename from system/templates/items/partials/choice-selector.hbs rename to system/templates/items/_partials/choice-selector.hbs diff --git a/system/templates/items/partials/class-ability.hbs b/system/templates/items/_partials/class-ability.hbs similarity index 100% rename from system/templates/items/partials/class-ability.hbs rename to system/templates/items/_partials/class-ability.hbs diff --git a/system/templates/items/partials/class.hbs b/system/templates/items/_partials/class.hbs similarity index 95% rename from system/templates/items/partials/class.hbs rename to system/templates/items/_partials/class.hbs index 9226e5c9..b0e63504 100644 --- a/system/templates/items/partials/class.hbs +++ b/system/templates/items/_partials/class.hbs @@ -83,7 +83,7 @@ {{localize "SHADOWDARK.class.weapons.all.label"}} {{else}} {{> - items/partials/choice-selector + items/_partials/choice-selector config=weaponsConfig editable=editable }} @@ -99,7 +99,7 @@ {{localize "SHADOWDARK.class.armor.all.label"}} {{else}} {{> - items/partials/choice-selector + items/_partials/choice-selector config=armorConfig editable=editable }} @@ -135,7 +135,7 @@ header-class="light" }} {{> - items/partials/choice-selector + items/_partials/choice-selector config=fixedLanguagesConfig editable=editable }} @@ -147,7 +147,7 @@ header-class="light" }} {{> - items/partials/choice-selector + items/_partials/choice-selector config=languageChoicesConfig editable=editable }} @@ -191,7 +191,7 @@ header-class="light" }} {{> - items/partials/choice-selector + items/_partials/choice-selector config=talentsConfig editable=editable }} @@ -202,7 +202,7 @@ header-class="light" }} {{> - items/partials/choice-selector + items/_partials/choice-selector config=talentChoicesConfig editable=editable }} diff --git a/system/templates/items/partials/cost.hbs b/system/templates/items/_partials/cost.hbs similarity index 100% rename from system/templates/items/partials/cost.hbs rename to system/templates/items/_partials/cost.hbs diff --git a/system/templates/items/partials/deity.hbs b/system/templates/items/_partials/deity.hbs similarity index 100% rename from system/templates/items/partials/deity.hbs rename to system/templates/items/_partials/deity.hbs diff --git a/system/templates/items/partials/duration.hbs b/system/templates/items/_partials/duration.hbs similarity index 100% rename from system/templates/items/partials/duration.hbs rename to system/templates/items/_partials/duration.hbs diff --git a/system/templates/items/partials/effect.hbs b/system/templates/items/_partials/effect.hbs similarity index 94% rename from system/templates/items/partials/effect.hbs rename to system/templates/items/_partials/effect.hbs index 37ed159b..dc75cd14 100644 --- a/system/templates/items/partials/effect.hbs +++ b/system/templates/items/_partials/effect.hbs @@ -17,7 +17,7 @@ header-label=(localize "SHADOWDARK.item.spell_duration") header-class="light" }} - {{> items/partials/duration + {{> items/_partials/duration base="system.duration" duration=system.duration type="effect" diff --git a/system/templates/items/_partials/header.hbs b/system/templates/items/_partials/header.hbs new file mode 100644 index 00000000..b0cbbc68 --- /dev/null +++ b/system/templates/items/_partials/header.hbs @@ -0,0 +1,18 @@ +
+ +
+ +
+
diff --git a/system/templates/items/partials/item-category.hbs b/system/templates/items/_partials/item-category.hbs similarity index 100% rename from system/templates/items/partials/item-category.hbs rename to system/templates/items/_partials/item-category.hbs diff --git a/system/templates/items/partials/language.hbs b/system/templates/items/_partials/language.hbs similarity index 100% rename from system/templates/items/partials/language.hbs rename to system/templates/items/_partials/language.hbs diff --git a/system/templates/items/partials/light-source.hbs b/system/templates/items/_partials/light-source.hbs similarity index 100% rename from system/templates/items/partials/light-source.hbs rename to system/templates/items/_partials/light-source.hbs diff --git a/system/templates/items/partials/npc-attack.hbs b/system/templates/items/_partials/npc-attack.hbs similarity index 100% rename from system/templates/items/partials/npc-attack.hbs rename to system/templates/items/_partials/npc-attack.hbs diff --git a/system/templates/items/partials/npc-special-attack.hbs b/system/templates/items/_partials/npc-special-attack.hbs similarity index 100% rename from system/templates/items/partials/npc-special-attack.hbs rename to system/templates/items/_partials/npc-special-attack.hbs diff --git a/system/templates/items/partials/npc-spell.hbs b/system/templates/items/_partials/npc-spell.hbs similarity index 94% rename from system/templates/items/partials/npc-spell.hbs rename to system/templates/items/_partials/npc-spell.hbs index 2a1e4897..fb21b624 100644 --- a/system/templates/items/partials/npc-spell.hbs +++ b/system/templates/items/_partials/npc-spell.hbs @@ -8,7 +8,7 @@ }}

{{localize 'SHADOWDARK.item.spell_duration'}}

- {{> items/partials/duration + {{> items/_partials/duration base="system.duration" duration=system.duration type="spell" diff --git a/system/templates/items/partials/properties.hbs b/system/templates/items/_partials/properties.hbs similarity index 100% rename from system/templates/items/partials/properties.hbs rename to system/templates/items/_partials/properties.hbs diff --git a/system/templates/items/partials/property.hbs b/system/templates/items/_partials/property.hbs similarity index 100% rename from system/templates/items/partials/property.hbs rename to system/templates/items/_partials/property.hbs diff --git a/system/templates/items/partials/slots.hbs b/system/templates/items/_partials/slots.hbs similarity index 100% rename from system/templates/items/partials/slots.hbs rename to system/templates/items/_partials/slots.hbs diff --git a/system/templates/items/partials/spell.hbs b/system/templates/items/_partials/spell.hbs similarity index 95% rename from system/templates/items/partials/spell.hbs rename to system/templates/items/_partials/spell.hbs index a5555652..5ebb6ac1 100644 --- a/system/templates/items/partials/spell.hbs +++ b/system/templates/items/_partials/spell.hbs @@ -36,7 +36,7 @@

{{localize "SHADOWDARK.item.spell_duration"}}

- {{> items/partials/duration + {{> items/_partials/duration base="system.duration" duration=system.duration type="spell" @@ -50,7 +50,7 @@ header-class="light" }} {{> - items/partials/choice-selector + items/_partials/choice-selector config=spellcasterClassesConfig editable=editable }} diff --git a/system/templates/items/partials/talent.hbs b/system/templates/items/_partials/talent.hbs similarity index 100% rename from system/templates/items/partials/talent.hbs rename to system/templates/items/_partials/talent.hbs diff --git a/system/templates/items/partials/weapon.hbs b/system/templates/items/_partials/weapon.hbs similarity index 100% rename from system/templates/items/partials/weapon.hbs rename to system/templates/items/_partials/weapon.hbs diff --git a/system/templates/items/item.hbs b/system/templates/items/item.hbs index 9b7c9abd..337498cd 100644 --- a/system/templates/items/item.hbs +++ b/system/templates/items/item.hbs @@ -1,22 +1,5 @@
-
- -
- -
-
+ {{> items/_partials/header }}
- {{> items/tabs/description }} {{> items/tabs/details }} - {{> items/tabs/effects }} - {{> items/tabs/light }} {{> items/tabs/titles }} + {{> items/_partials/effects-tab }} + {{> items/tabs/light }} {{> items/tabs/spellsknown }} - {{> items/tabs/source }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }}
diff --git a/system/templates/items/tabs/description.hbs b/system/templates/items/tabs/description.hbs deleted file mode 100644 index dcf25845..00000000 --- a/system/templates/items/tabs/description.hbs +++ /dev/null @@ -1,13 +0,0 @@ -
- -
{{localize 'SHADOWDARK.item.description'}}
- {{editor - descriptionHTML - target="system.description" - button=true - editable=editable - engine="prosemirror" - collaborate=false - }} - -
diff --git a/system/templates/items/tabs/source.hbs b/system/templates/items/tabs/source.hbs deleted file mode 100644 index f6054935..00000000 --- a/system/templates/items/tabs/source.hbs +++ /dev/null @@ -1,27 +0,0 @@ -
-
-

{{localize "SHADOWDARK.item.source_tag"}}

-
- - {{#if sourceLoaded}} - - {{else}} -

- - {{localize 'SHADOWDARK.error.source.source_missing'}} - -

- {{/if}} - -
-
-
From 1255c806114b9b602750a44d4cbf9db024048fc0 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 20 Oct 2024 23:02:06 +0100 Subject: [PATCH 038/182] update item pack schema --- .../asterion__X5FwZjvgzeSXvNDQ.json | 1 + .../bag_of_holding__vHwzxeO0sX9GlRbj.json | 1 + .../bloodlust__Mb7OBENXa5XnClS9.json | 1 + ..._cube_of_perfection__ZypO4jCOurSK2aOB.json | 1 + ...of_perfection__cha___0Ws5acsixawAITFi.json | 1 + ...of_perfection__con___7pECwim9a2CVzFLy.json | 1 + ...of_perfection__dex___lUuyDaiDHJbDg82j.json | 1 + ...of_perfection__int___K7PJLC0GUhtQ7aX2.json | 1 + ...of_perfection__str___ZhykyK0shgnyC4Fh.json | 1 + ...of_perfection__wis___wrtcUfAY6yXwSqLY.json | 1 + .../cloak_of_elvenkind__z4eAFex0bk8qiQWl.json | 1 + .../immovable_rod__RQyOkC3sGAe5gsn2.json | 1 + .../jewel_of_barbalt__w3UsdCcYKnwcAgbH.json | 1 + .../kytherian_cog__0c0G5Dnzq9Il8zZY.json | 1 + .../pearl_of_power__t4RYKztP70zmAbGD.json | 1 + ...tion_of_extirpation__oS1VcB7hqcsjkUZv.json | 1 + .../potion_of_healing__jucTGEjsqJ1znHdf.json | 1 + ...ion_of_invisibility__KAx02m6uAzOSBGXX.json | 1 + ...carab_of_protection__RPe1Y9rnhOq7Dl6p.json | 1 + ...ll_of_burning_hands__N27A6nb0epkHZ3lR.json | 1 + ...roll_of_hold_portal__mXkpNk8z0eZU8kKj.json | 1 + ...tsword_of_the_thief__98cxnRdtTLv0Onka.json | 1 + .../staff_of_healing__jEeDexWHYy7wKsfa.json | 1 + ...ord_of_the_ancients__ZamB6OED5J1EeU81.json | 1 + .../true_name__gNah418e2ykhDWDE.json | 1 + .../vigilant__iEbHLvRPWNXo32qm.json | 1 + ...and_of_blind_deafen__yyUwr6H9imWcJ9YS.json | 1 + ...he_scarlet_minotaur__0qbqDCsioL4HWVvW.json | 19 +++++++++++++++++++ 28 files changed, 46 insertions(+) diff --git a/data/packs/magic-items.db/asterion__X5FwZjvgzeSXvNDQ.json b/data/packs/magic-items.db/asterion__X5FwZjvgzeSXvNDQ.json index 451d6619..433e7356 100644 --- a/data/packs/magic-items.db/asterion__X5FwZjvgzeSXvNDQ.json +++ b/data/packs/magic-items.db/asterion__X5FwZjvgzeSXvNDQ.json @@ -9,6 +9,7 @@ "img": "icons/weapons/swords/greatsword-guard-split-eyes.webp", "name": "Asterion", "system": { + "ammoClass": "", "attackBonus": "1", "baseWeapon": "greatsword", "bonuses": { diff --git a/data/packs/magic-items.db/bag_of_holding__vHwzxeO0sX9GlRbj.json b/data/packs/magic-items.db/bag_of_holding__vHwzxeO0sX9GlRbj.json index 0d1f91ca..8108e87c 100644 --- a/data/packs/magic-items.db/bag_of_holding__vHwzxeO0sX9GlRbj.json +++ b/data/packs/magic-items.db/bag_of_holding__vHwzxeO0sX9GlRbj.json @@ -17,6 +17,7 @@ }, "description": "

A worn, leather pouch with tight drawstrings.

Benefit. This bag has an interdimensional space inside that can hold up to 10 gear slots.

Curse. Placing this item inside another Bag of Holding or a Portable Hole destroys both items and all held inside them.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/bloodlust__Mb7OBENXa5XnClS9.json b/data/packs/magic-items.db/bloodlust__Mb7OBENXa5XnClS9.json index 8a4863db..36f6fe25 100644 --- a/data/packs/magic-items.db/bloodlust__Mb7OBENXa5XnClS9.json +++ b/data/packs/magic-items.db/bloodlust__Mb7OBENXa5XnClS9.json @@ -10,6 +10,7 @@ "img": "icons/weapons/axes/axe-battle-eyes-red.webp", "name": "Bloodlust", "system": { + "ammoClass": "", "attackBonus": "1", "baseWeapon": "greataxe", "bonuses": { diff --git a/data/packs/magic-items.db/brak_s_cube_of_perfection__ZypO4jCOurSK2aOB.json b/data/packs/magic-items.db/brak_s_cube_of_perfection__ZypO4jCOurSK2aOB.json index 4c2c8b56..cedf2698 100644 --- a/data/packs/magic-items.db/brak_s_cube_of_perfection__ZypO4jCOurSK2aOB.json +++ b/data/packs/magic-items.db/brak_s_cube_of_perfection__ZypO4jCOurSK2aOB.json @@ -38,6 +38,7 @@ }, "description": "

A tiny cube with paintings of goblins on each face, each one depicting transcendence in a physical or mental trait.

Benefit. Roll the cube by rolling a [[/r d6]]. Your corresponding stat permanently increases to 18 (+4).

  1. @UUID[Compendium.world.magic-items.ZhykyK0shgnyC4Fh]{Strength}

  2. @UUID[Compendium.world.magic-items.lUuyDaiDHJbDg82j]{Dexterity}

  3. @UUID[Compendium.world.magic-items.7pECwim9a2CVzFLy]{Constitution}

  4. @UUID[Compendium.world.magic-items.K7PJLC0GUhtQ7aX2]{Intelligence}

  5. @UUID[Compendium.world.magic-items.wrtcUfAY6yXwSqLY]{Wisdom}

  6. @UUID[Compendium.world.magic-items.0Ws5acsixawAITFi]{Charisma}

After being rolled, Brak's Cube of Perfection teleports to a random location in the multiverse.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/brak_s_cube_of_perfection__cha___0Ws5acsixawAITFi.json b/data/packs/magic-items.db/brak_s_cube_of_perfection__cha___0Ws5acsixawAITFi.json index f44f0d2a..1601b0b5 100644 --- a/data/packs/magic-items.db/brak_s_cube_of_perfection__cha___0Ws5acsixawAITFi.json +++ b/data/packs/magic-items.db/brak_s_cube_of_perfection__cha___0Ws5acsixawAITFi.json @@ -37,6 +37,7 @@ }, "description": "

A tiny cube with paintings of goblins on each face, each one depicting transcendence in a physical or mental trait.

Benefit. Roll the cube by rolling a [[/r d6]]. Your corresponding stat permanently increases to 18 (+4). 1. Strength. 2. Dexterity. 3. Constitution. 4. Intelligence. 5. Wisdom. 6. Charisma.

After being rolled, Brak's Cube of Perfection teleports to a random location in the multiverse.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/brak_s_cube_of_perfection__con___7pECwim9a2CVzFLy.json b/data/packs/magic-items.db/brak_s_cube_of_perfection__con___7pECwim9a2CVzFLy.json index 6051d10c..95794e07 100644 --- a/data/packs/magic-items.db/brak_s_cube_of_perfection__con___7pECwim9a2CVzFLy.json +++ b/data/packs/magic-items.db/brak_s_cube_of_perfection__con___7pECwim9a2CVzFLy.json @@ -29,6 +29,7 @@ }, "description": "

A tiny cube with paintings of goblins on each face, each one depicting transcendence in a physical or mental trait.

Benefit. Roll the cube by rolling a [[/r d6]]. Your corresponding stat permanently increases to 18 (+4). 1. Strength. 2. Dexterity. 3. Constitution. 4. Intelligence. 5. Wisdom. 6. Charisma.

After being rolled, Brak's Cube of Perfection teleports to a random location in the multiverse.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/brak_s_cube_of_perfection__dex___lUuyDaiDHJbDg82j.json b/data/packs/magic-items.db/brak_s_cube_of_perfection__dex___lUuyDaiDHJbDg82j.json index 4c28cae7..6a405193 100644 --- a/data/packs/magic-items.db/brak_s_cube_of_perfection__dex___lUuyDaiDHJbDg82j.json +++ b/data/packs/magic-items.db/brak_s_cube_of_perfection__dex___lUuyDaiDHJbDg82j.json @@ -26,6 +26,7 @@ }, "description": "

A tiny cube with paintings of goblins on each face, each one depicting transcendence in a physical or mental trait.

Benefit. Roll the cube by rolling a [[/r d6]]. Your corresponding stat permanently increases to 18 (+4). 1. Strength. 2. Dexterity. 3. Constitution. 4. Intelligence. 5. Wisdom. 6. Charisma.

After being rolled, Brak's Cube of Perfection teleports to a random location in the multiverse.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/brak_s_cube_of_perfection__int___K7PJLC0GUhtQ7aX2.json b/data/packs/magic-items.db/brak_s_cube_of_perfection__int___K7PJLC0GUhtQ7aX2.json index fcc04875..10da46e5 100644 --- a/data/packs/magic-items.db/brak_s_cube_of_perfection__int___K7PJLC0GUhtQ7aX2.json +++ b/data/packs/magic-items.db/brak_s_cube_of_perfection__int___K7PJLC0GUhtQ7aX2.json @@ -32,6 +32,7 @@ }, "description": "

A tiny cube with paintings of goblins on each face, each one depicting transcendence in a physical or mental trait.

Benefit. Roll the cube by rolling a [[/r d6]]. Your corresponding stat permanently increases to 18 (+4). 1. Strength. 2. Dexterity. 3. Constitution. 4. Intelligence. 5. Wisdom. 6. Charisma.

After being rolled, Brak's Cube of Perfection teleports to a random location in the multiverse.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/brak_s_cube_of_perfection__str___ZhykyK0shgnyC4Fh.json b/data/packs/magic-items.db/brak_s_cube_of_perfection__str___ZhykyK0shgnyC4Fh.json index 3cd5e1f7..3d8767c2 100644 --- a/data/packs/magic-items.db/brak_s_cube_of_perfection__str___ZhykyK0shgnyC4Fh.json +++ b/data/packs/magic-items.db/brak_s_cube_of_perfection__str___ZhykyK0shgnyC4Fh.json @@ -23,6 +23,7 @@ }, "description": "

A tiny cube with paintings of goblins on each face, each one depicting transcendence in a physical or mental trait.

Benefit. Roll the cube by rolling a [[/r d6]]. Your corresponding stat permanently increases to 18 (+4). 1. Strength. 2. Dexterity. 3. Constitution. 4. Intelligence. 5. Wisdom. 6. Charisma.

After being rolled, Brak's Cube of Perfection teleports to a random location in the multiverse.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/brak_s_cube_of_perfection__wis___wrtcUfAY6yXwSqLY.json b/data/packs/magic-items.db/brak_s_cube_of_perfection__wis___wrtcUfAY6yXwSqLY.json index 985d26ff..8e7c7a96 100644 --- a/data/packs/magic-items.db/brak_s_cube_of_perfection__wis___wrtcUfAY6yXwSqLY.json +++ b/data/packs/magic-items.db/brak_s_cube_of_perfection__wis___wrtcUfAY6yXwSqLY.json @@ -35,6 +35,7 @@ }, "description": "

A tiny cube with paintings of goblins on each face, each one depicting transcendence in a physical or mental trait.

Benefit. Roll the cube by rolling a [[/r d6]]. Your corresponding stat permanently increases to 18 (+4). 1. Strength. 2. Dexterity. 3. Constitution. 4. Intelligence. 5. Wisdom. 6. Charisma.

After being rolled, Brak's Cube of Perfection teleports to a random location in the multiverse.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/cloak_of_elvenkind__z4eAFex0bk8qiQWl.json b/data/packs/magic-items.db/cloak_of_elvenkind__z4eAFex0bk8qiQWl.json index 1aeb15cc..4e80c1b3 100644 --- a/data/packs/magic-items.db/cloak_of_elvenkind__z4eAFex0bk8qiQWl.json +++ b/data/packs/magic-items.db/cloak_of_elvenkind__z4eAFex0bk8qiQWl.json @@ -16,6 +16,7 @@ }, "description": "

A hooded, billowing cloak that shifts colors to match its surroundings.

Benefit. Your checks to hide are always easy (DC 9). Once per day, you can become invisible for 5 rounds. The invisibility ends if you attack or cast a spell.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/immovable_rod__RQyOkC3sGAe5gsn2.json b/data/packs/magic-items.db/immovable_rod__RQyOkC3sGAe5gsn2.json index 433d5b22..6d09eba2 100644 --- a/data/packs/magic-items.db/immovable_rod__RQyOkC3sGAe5gsn2.json +++ b/data/packs/magic-items.db/immovable_rod__RQyOkC3sGAe5gsn2.json @@ -16,6 +16,7 @@ }, "description": "

A short, bejeweled iron rod with a button on one end.

Benefit. When you click the button, the rod becomes fixed in space. Clicking the button again ends the effect.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/jewel_of_barbalt__w3UsdCcYKnwcAgbH.json b/data/packs/magic-items.db/jewel_of_barbalt__w3UsdCcYKnwcAgbH.json index d32dc8a7..de481f9b 100644 --- a/data/packs/magic-items.db/jewel_of_barbalt__w3UsdCcYKnwcAgbH.json +++ b/data/packs/magic-items.db/jewel_of_barbalt__w3UsdCcYKnwcAgbH.json @@ -24,6 +24,7 @@ }, "description": "

A glistening, coconut-sized ruby held in golden claws.

Benefit. You roll a critical success on an 18-20.

Curse. You roll a critical failure on a 1-3.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/kytherian_cog__0c0G5Dnzq9Il8zZY.json b/data/packs/magic-items.db/kytherian_cog__0c0G5Dnzq9Il8zZY.json index 9bf60d71..7779ab27 100644 --- a/data/packs/magic-items.db/kytherian_cog__0c0G5Dnzq9Il8zZY.json +++ b/data/packs/magic-items.db/kytherian_cog__0c0G5Dnzq9Il8zZY.json @@ -16,6 +16,7 @@ }, "description": "

A coin-sized, toothed wheel buffed to a silvery shine.

Benefit. You start every session with a luck token.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/pearl_of_power__t4RYKztP70zmAbGD.json b/data/packs/magic-items.db/pearl_of_power__t4RYKztP70zmAbGD.json index 27e3d71e..a8b96881 100644 --- a/data/packs/magic-items.db/pearl_of_power__t4RYKztP70zmAbGD.json +++ b/data/packs/magic-items.db/pearl_of_power__t4RYKztP70zmAbGD.json @@ -16,6 +16,7 @@ }, "description": "

A fat, opalescent pearl glowing with an inner radiance.

Benefit. Once per day, you may regain the ability to cast a spell you have lost. This cannot restore a spell lost due to a critical spellcasting failure.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/potion_of_extirpation__oS1VcB7hqcsjkUZv.json b/data/packs/magic-items.db/potion_of_extirpation__oS1VcB7hqcsjkUZv.json index 00199732..c1d5afa1 100644 --- a/data/packs/magic-items.db/potion_of_extirpation__oS1VcB7hqcsjkUZv.json +++ b/data/packs/magic-items.db/potion_of_extirpation__oS1VcB7hqcsjkUZv.json @@ -16,6 +16,7 @@ }, "description": "

An acrid, tarry substance in an iron flask with a lead stopper.

Benefit. You can pour the potion on one object or creature filling up to a close area. The target is utterly removed from reality and cannot be returned by anything short of a wish spell.

Personality. Chaotic. Protests loudly while being used and never agrees that the target is the right choice for extirpation.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/potion_of_healing__jucTGEjsqJ1znHdf.json b/data/packs/magic-items.db/potion_of_healing__jucTGEjsqJ1znHdf.json index eb518080..10ee7546 100644 --- a/data/packs/magic-items.db/potion_of_healing__jucTGEjsqJ1znHdf.json +++ b/data/packs/magic-items.db/potion_of_healing__jucTGEjsqJ1znHdf.json @@ -16,6 +16,7 @@ }, "description": "

A glass bottle with a fizzy, lemon-vanilla liquid inside.

Benefit. The imbiber of this potion regains hit points based on its level.

LV 1-3: [[/r 1d6]] hit points.

LV 4-6: [[/r 2d8]] hit points.

LV 7-9: [[/r 3d10]] hit points.

LV 10+: [[/r 4d12]] hit points.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/potion_of_invisibility__KAx02m6uAzOSBGXX.json b/data/packs/magic-items.db/potion_of_invisibility__KAx02m6uAzOSBGXX.json index b5c4848d..a5217353 100644 --- a/data/packs/magic-items.db/potion_of_invisibility__KAx02m6uAzOSBGXX.json +++ b/data/packs/magic-items.db/potion_of_invisibility__KAx02m6uAzOSBGXX.json @@ -16,6 +16,7 @@ }, "description": "

This glass vial appears to be empty, but a liquid audibly splashes around inside it.

Benefit. When you drink this potion, you become invisible for 10 rounds or until you attack or cast a spell.

@UUID[Compendium.shadowdark.spell-effects.SMXbMbXcj5hLvTjY]{Spell Effect: Invisibility}

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/scarab_of_protection__RPe1Y9rnhOq7Dl6p.json b/data/packs/magic-items.db/scarab_of_protection__RPe1Y9rnhOq7Dl6p.json index 941029ec..f3b42668 100644 --- a/data/packs/magic-items.db/scarab_of_protection__RPe1Y9rnhOq7Dl6p.json +++ b/data/packs/magic-items.db/scarab_of_protection__RPe1Y9rnhOq7Dl6p.json @@ -16,6 +16,7 @@ }, "description": "

A brooch made from a horned scarab beetle dipped in gold.

Benefit. If you die, make a DC 18 Constitution check. If you succeed, you are unconscious instead of dead.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/scroll_of_burning_hands__N27A6nb0epkHZ3lR.json b/data/packs/magic-items.db/scroll_of_burning_hands__N27A6nb0epkHZ3lR.json index 05e78f6b..ddca6a53 100644 --- a/data/packs/magic-items.db/scroll_of_burning_hands__N27A6nb0epkHZ3lR.json +++ b/data/packs/magic-items.db/scroll_of_burning_hands__N27A6nb0epkHZ3lR.json @@ -16,6 +16,7 @@ }, "description": "

@UUID[Compendium.shadowdark.spells.ItN82uLU3PhJFLNm]{Burning Hands}

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/scroll_of_hold_portal__mXkpNk8z0eZU8kKj.json b/data/packs/magic-items.db/scroll_of_hold_portal__mXkpNk8z0eZU8kKj.json index 32f5e60b..3e6d278d 100644 --- a/data/packs/magic-items.db/scroll_of_hold_portal__mXkpNk8z0eZU8kKj.json +++ b/data/packs/magic-items.db/scroll_of_hold_portal__mXkpNk8z0eZU8kKj.json @@ -16,6 +16,7 @@ }, "description": "

@UUID[Compendium.shadowdark.spells.q600IZtPTAgkz6vB]{Hold Portal}

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/shoftsword_of_the_thief__98cxnRdtTLv0Onka.json b/data/packs/magic-items.db/shoftsword_of_the_thief__98cxnRdtTLv0Onka.json index d240360b..18558c52 100644 --- a/data/packs/magic-items.db/shoftsword_of_the_thief__98cxnRdtTLv0Onka.json +++ b/data/packs/magic-items.db/shoftsword_of_the_thief__98cxnRdtTLv0Onka.json @@ -9,6 +9,7 @@ "img": "icons/weapons/swords/sword-guard-worn-purple.webp", "name": "Shoftsword of the Thief", "system": { + "ammoClass": "", "attackBonus": "1", "baseWeapon": "shortsword", "bonuses": { diff --git a/data/packs/magic-items.db/staff_of_healing__jEeDexWHYy7wKsfa.json b/data/packs/magic-items.db/staff_of_healing__jEeDexWHYy7wKsfa.json index 0e650af5..761452ac 100644 --- a/data/packs/magic-items.db/staff_of_healing__jEeDexWHYy7wKsfa.json +++ b/data/packs/magic-items.db/staff_of_healing__jEeDexWHYy7wKsfa.json @@ -9,6 +9,7 @@ "img": "icons/weapons/staves/staff-engraved-red.webp", "name": "Staff of Healing", "system": { + "ammoClass": "", "attackBonus": "1", "baseWeapon": "staff", "bonuses": { diff --git a/data/packs/magic-items.db/sword_of_the_ancients__ZamB6OED5J1EeU81.json b/data/packs/magic-items.db/sword_of_the_ancients__ZamB6OED5J1EeU81.json index 96defef6..e67aff02 100644 --- a/data/packs/magic-items.db/sword_of_the_ancients__ZamB6OED5J1EeU81.json +++ b/data/packs/magic-items.db/sword_of_the_ancients__ZamB6OED5J1EeU81.json @@ -9,6 +9,7 @@ "img": "icons/weapons/swords/sword-guard-worn-brown.webp", "name": "Sword of the Ancients", "system": { + "ammoClass": "", "attackBonus": "2", "baseWeapon": "longsword", "bonuses": { diff --git a/data/packs/magic-items.db/true_name__gNah418e2ykhDWDE.json b/data/packs/magic-items.db/true_name__gNah418e2ykhDWDE.json index 630c3772..a339d2a3 100644 --- a/data/packs/magic-items.db/true_name__gNah418e2ykhDWDE.json +++ b/data/packs/magic-items.db/true_name__gNah418e2ykhDWDE.json @@ -16,6 +16,7 @@ }, "description": "

The secret, unique name borne by a creature and documented in The Covenant. Few creatures know their own True Names.

Benefit. You have advantage on attack rolls and spellcasting checks targeting a creature whose True Name you utter.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, diff --git a/data/packs/magic-items.db/vigilant__iEbHLvRPWNXo32qm.json b/data/packs/magic-items.db/vigilant__iEbHLvRPWNXo32qm.json index cd96a3b0..2f0794ed 100644 --- a/data/packs/magic-items.db/vigilant__iEbHLvRPWNXo32qm.json +++ b/data/packs/magic-items.db/vigilant__iEbHLvRPWNXo32qm.json @@ -9,6 +9,7 @@ "img": "icons/weapons/polearms/pike-flared-brown.webp", "name": "Vigilant", "system": { + "ammoClass": "", "attackBonus": "1", "baseWeapon": "spear", "bonuses": { diff --git a/data/packs/magic-items.db/wand_of_blind_deafen__yyUwr6H9imWcJ9YS.json b/data/packs/magic-items.db/wand_of_blind_deafen__yyUwr6H9imWcJ9YS.json index 169cbcc6..d7a164b7 100644 --- a/data/packs/magic-items.db/wand_of_blind_deafen__yyUwr6H9imWcJ9YS.json +++ b/data/packs/magic-items.db/wand_of_blind_deafen__yyUwr6H9imWcJ9YS.json @@ -7,6 +7,7 @@ "img": "icons/weapons/wands/wand-gem-purple.webp", "name": "Wand of Blind/Deafen", "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "wand", "bonuses": { diff --git a/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json b/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json index 88c7448b..36dfc633 100644 --- a/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json +++ b/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json @@ -10028,6 +10028,7 @@ }, "sort": 100000, "system": { + "ammoClass": "", "attackBonus": "1", "baseWeapon": "greataxe", "bonuses": { @@ -10119,6 +10120,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -10242,6 +10244,7 @@ }, "description": "

@UUID[Compendium.shadowdark.spells.q600IZtPTAgkz6vB]{Hold Portal}

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -10308,6 +10311,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -10374,6 +10378,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -10440,6 +10445,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -10565,6 +10571,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -10824,6 +10831,7 @@ }, "sort": 100000, "system": { + "ammoClass": "", "attackBonus": "1", "baseWeapon": "", "bonuses": { @@ -11031,6 +11039,7 @@ }, "description": "

A brooch made from a horned scarab beetle dipped in gold.

Benefit. If you die, make a DC 18 Constitution check. If you succeed, you are unconscious instead of dead.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -11098,6 +11107,7 @@ }, "description": "

An ivory egg shot with grey veins inside.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -11221,6 +11231,7 @@ }, "description": "

Silver locket with a painting of a smiling, red-haired woman

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -11290,6 +11301,7 @@ }, "description": "

Contained in a bronze tube adorned with jade dragons.

@UUID[Compendium.shadowdark.spells.ItN82uLU3PhJFLNm]{Burning Hands}

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -11350,6 +11362,7 @@ }, "sort": 200000, "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { @@ -11508,6 +11521,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -11655,6 +11669,7 @@ }, "sort": 100000, "system": { + "ammoClass": "", "attackBonus": "1", "baseWeapon": "", "bonuses": { @@ -11745,6 +11760,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -11869,6 +11885,7 @@ }, "sort": 200000, "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { @@ -11958,6 +11975,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -12024,6 +12042,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, From fb8ff19e365edc9d285e4fa088686e3195e0ea09 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 20 Oct 2024 23:02:27 +0100 Subject: [PATCH 039/182] missing i18n string --- i18n/en.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/i18n/en.yaml b/i18n/en.yaml index 028ec572..c8ce9d73 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -212,6 +212,7 @@ SHADOWDARK.class.ranger: Ranger SHADOWDARK.class.spellcasting_ability.label: Spellcasting Ability SHADOWDARK.class.spellcasting_class.label: Spell Class SHADOWDARK.class.spellcasting.base_difficulty.label: Spellcasting Base DC +SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier SHADOWDARK.class.talent_choices.count.label: Choice Count SHADOWDARK.class.talent_choices.label: Talent Choices SHADOWDARK.class.talent_choices.prompt: Select Talent... @@ -787,7 +788,7 @@ TYPES.Item.Armor: Armor TYPES.Item.Background: Background TYPES.Item.Basic: Basic TYPES.Item.Boon: Boon -TYPES.Item.Class Ability: Class +TYPES.Item.Class Ability: Class Ability TYPES.Item.Class: Class TYPES.Item.Deity: Deity TYPES.Item.Effect: Effect From 3e84b7811d0659aa167e9d8ce71b191902d5c230 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 20 Oct 2024 23:03:56 +0100 Subject: [PATCH 040/182] closes #919 --- RELEASE_NOTES.md | 1 + .../src/migrations/updates/Update_241020_1.mjs | 18 ++++++++++++++++++ system/src/migrations/updates/_module.mjs | 1 + system/template.json | 2 +- 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 system/src/migrations/updates/Update_241020_1.mjs diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 32341449..a5eb79ab 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -8,6 +8,7 @@ * [#896] Add additional padding to blockquote style so text doesn't blend into decorations * [#906] There's always an extra space between special attack name and effect * [#918] Actor and Item type names missing from i18n data +* [#919] Class item template has incorrect default spellcasting class value ## Chores * [#911] Replaced compendium art mapping with default Foundry method. diff --git a/system/src/migrations/updates/Update_241020_1.mjs b/system/src/migrations/updates/Update_241020_1.mjs new file mode 100644 index 00000000..337b746a --- /dev/null +++ b/system/src/migrations/updates/Update_241020_1.mjs @@ -0,0 +1,18 @@ +import { UpdateBaseSD } from "../UpdateBaseSD.mjs"; + +export default class Update_241020_1 extends UpdateBaseSD { + + static version = 241020.1; + + async updateItem(itemData, actorData) { + if (itemData.type !== "Class") return; + + if (itemData.system?.spellcasting?.class !== "NONE") return; + + const updateData = { + "system.spellcasting.class": "__not_spellcaster__", + }; + + return updateData; + } +} diff --git a/system/src/migrations/updates/_module.mjs b/system/src/migrations/updates/_module.mjs index c9d8ae4e..ed492f5f 100644 --- a/system/src/migrations/updates/_module.mjs +++ b/system/src/migrations/updates/_module.mjs @@ -22,3 +22,4 @@ export {default as Update_231112_1} from "./Update_231112_1.mjs"; export {default as Update_231125_1} from "./Update_231125_1.mjs"; export {default as Update_231216_1} from "./Update_231216_1.mjs"; export {default as Update_240910_1} from "./Update_240910_1.mjs"; +export {default as Update_241020_1} from "./Update_241020_1.mjs"; diff --git a/system/template.json b/system/template.json index a291ffe6..f19b0ccd 100644 --- a/system/template.json +++ b/system/template.json @@ -281,7 +281,7 @@ "spellcasting": { "ability": "", "baseDifficulty": 10, - "class": "NONE" + "class": "__not_spellcaster__" }, "talents": [], "talentChoices": [], From a886a30a1678f6868c3ebf202ef4f03e677101b8 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 20 Oct 2024 23:04:30 +0100 Subject: [PATCH 041/182] migrate class item sheet --- system/src/sheets/ItemSheetSD.mjs | 29 +-- system/src/templates.mjs | 11 +- system/templates/items/_partials/class.hbs | 228 ------------------ system/templates/items/class.hbs | 35 +++ .../items/class/_partials/details.hbs | 73 ++++++ .../items/class/_partials/equipment.hbs | 53 ++++ .../items/class/_partials/languages.hbs | 54 +++++ .../items/class/_partials/talents.hbs | 44 ++++ system/templates/items/class/details-tab.hbs | 8 + .../spells-known-tab.hbs} | 31 +-- .../{tabs/titles.hbs => class/titles-tab.hbs} | 0 system/templates/items/item.hbs | 7 - system/templates/items/tabs/details.hbs | 8 - 13 files changed, 302 insertions(+), 279 deletions(-) delete mode 100644 system/templates/items/_partials/class.hbs create mode 100644 system/templates/items/class.hbs create mode 100644 system/templates/items/class/_partials/details.hbs create mode 100644 system/templates/items/class/_partials/equipment.hbs create mode 100644 system/templates/items/class/_partials/languages.hbs create mode 100644 system/templates/items/class/_partials/talents.hbs create mode 100644 system/templates/items/class/details-tab.hbs rename system/templates/items/{tabs/spellsknown.hbs => class/spells-known-tab.hbs} (60%) rename system/templates/items/{tabs/titles.hbs => class/titles-tab.hbs} (100%) diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 169c458f..6e73a8c2 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -28,14 +28,14 @@ export default class ItemSheetSD extends ItemSheet { /** @inheritdoc */ get template() { - if ( - [ - "Ancestry", - "Armor", - "Background", - "Basic", - "Boon", - ].includes(this.item.type)) { + if ([ + "Ancestry", + "Armor", + "Background", + "Basic", + "Boon", + "Class", + ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } else { @@ -324,21 +324,14 @@ export default class ItemSheetSD extends ItemSheet { ? true : false; + let spellsKnown = false; if ((item.type === "Class") && (item.system.spellcasting.class !== "__not_spellcaster__")) { - this.spellsKnown = true; - } - else { - this.spellsKnown = false; + spellsKnown = true; } const showTab = { details: [ - "Ancestry", - "Armor", - "Basic", - "Boon", "Class Ability", - "Class", "Deity", "Effect", "Gem", @@ -363,7 +356,7 @@ export default class ItemSheetSD extends ItemSheet { light: item.system.light?.isSource ?? false, description: true, titles: item.type === "Class", - spellsknown: this.spellsKnown, + spellsKnown, }; foundry.utils.mergeObject(context, { diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 49e3e4ec..209a787a 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -30,7 +30,6 @@ export default function() { "systems/shadowdark/templates/items/_partials/active-effects.hbs", "systems/shadowdark/templates/items/_partials/choice-selector.hbs", "systems/shadowdark/templates/items/_partials/class-ability.hbs", - "systems/shadowdark/templates/items/_partials/class.hbs", "systems/shadowdark/templates/items/_partials/cost.hbs", "systems/shadowdark/templates/items/_partials/deity.hbs", "systems/shadowdark/templates/items/_partials/description-tab.hbs", @@ -60,11 +59,15 @@ export default function() { "systems/shadowdark/templates/items/armor/details-tab.hbs", "systems/shadowdark/templates/items/basic/details-tab.hbs", "systems/shadowdark/templates/items/boon/details-tab.hbs", + "systems/shadowdark/templates/items/class/_partials/details.hbs", + "systems/shadowdark/templates/items/class/_partials/equipment.hbs", + "systems/shadowdark/templates/items/class/_partials/languages.hbs", + "systems/shadowdark/templates/items/class/_partials/talents.hbs", + "systems/shadowdark/templates/items/class/details-tab.hbs", + "systems/shadowdark/templates/items/class/spells-known-tab.hbs", + "systems/shadowdark/templates/items/class/titles-tab.hbs", "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", - "systems/shadowdark/templates/items/tabs/source.hbs", - "systems/shadowdark/templates/items/tabs/spellsknown.hbs", - "systems/shadowdark/templates/items/tabs/titles.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", "systems/shadowdark/templates/partials/details/default.hbs", "systems/shadowdark/templates/partials/details/spell.hbs", diff --git a/system/templates/items/_partials/class.hbs b/system/templates/items/_partials/class.hbs deleted file mode 100644 index b0e63504..00000000 --- a/system/templates/items/_partials/class.hbs +++ /dev/null @@ -1,228 +0,0 @@ - -
-

{{localize 'SHADOWDARK.class.hit_points.label'}}

- -
- -
-

{{localize "SHADOWDARK.class.spellcasting_class.label"}}

- -
- - -
-

{{localize "SHADOWDARK.class.spellcasting_ability.label"}}

- -
- -
-

{{localize "SHADOWDARK.class.talents_table.label"}}

- -
- -
- -
-

{{localize 'SHADOWDARK.class.spellcasting.base_difficulty.label'}}

- {{numberInput - item.system.spellcasting.baseDifficulty - name="system.spellcasting.baseDifficulty" - placeholder="10" - }} -
- -
- -
{{localize 'SHADOWDARK.form.section_header.equipment.label'}}
- -{{#> ui/sd-box - header-label=(localize "SHADOWDARK.class.weapons.label") - header-class="light" -}} - {{#if (checked system.allWeapons)}} - {{localize "SHADOWDARK.class.weapons.all.label"}} - {{else}} - {{> - items/_partials/choice-selector - config=weaponsConfig - editable=editable - }} - {{/if}} - -{{/ui/sd-box}} - -{{#> ui/sd-box - header-label=(localize "SHADOWDARK.class.armor.label") - header-class="light" -}} - {{#if (checked system.allArmor)}} - {{localize "SHADOWDARK.class.armor.all.label"}} - {{else}} - {{> - items/_partials/choice-selector - config=armorConfig - editable=editable - }} - {{/if}} -{{/ui/sd-box}} - -{{#> ui/sd-box - header-label=(localize "SHADOWDARK.class-ability.options") - header-class="light" - content-class="item-grid" -}} - -

{{localize "SHADOWDARK.class.weapons.all.label"}}

- - -

{{localize "SHADOWDARK.class.weapons.all_melee.label"}}

- - -

{{localize "SHADOWDARK.class.weapons.all_ranged.label"}}

- - -

{{localize "SHADOWDARK.class.armor.all.label"}}

- - -{{/ui/sd-box}} - -
- -
{{localize 'SHADOWDARK.form.section_header.languages.label'}}
- -{{#> ui/sd-box - header-label=(localize "SHADOWDARK.class.fixed") - header-class="light" -}} - {{> - items/_partials/choice-selector - config=fixedLanguagesConfig - editable=editable - }} -{{/ui/sd-box}} - - -{{#> ui/sd-box - header-label=(localize "SHADOWDARK.class.choice") - header-class="light" -}} - {{> - items/_partials/choice-selector - config=languageChoicesConfig - editable=editable - }} -{{/ui/sd-box}} - -{{#> ui/sd-box - header-label=(localize "SHADOWDARK.class-ability.options") - header-class="light" - content-class="item-grid" -}} - -

{{localize 'SHADOWDARK.class.language_choices.count.label'}}

- {{numberInput - item.system.languages.select - name="system.languages.select" - placeholder="0" - }} - -

{{localize 'SHADOWDARK.language_choices.common.label'}}

- {{numberInput - item.system.languages.common - name="system.languages.common" - placeholder="0" - }} - -

{{localize 'SHADOWDARK.language_choices.rare.label'}}

- {{numberInput - item.system.languages.rare - name="system.languages.rare" - placeholder="0" - }} - -{{/ui/sd-box}} - -
- -
{{localize 'SHADOWDARK.form.section_header.talents.label'}}
- -{{#> ui/sd-box - header-label=(localize "SHADOWDARK.class.fixed") - header-class="light" -}} - {{> - items/_partials/choice-selector - config=talentsConfig - editable=editable - }} -{{/ui/sd-box}} - -{{#> ui/sd-box - header-label=(localize "SHADOWDARK.class.choice") - header-class="light" -}} - {{> - items/_partials/choice-selector - config=talentChoicesConfig - editable=editable - }} -{{/ui/sd-box}} - -{{#> ui/sd-box - header-label=(localize "SHADOWDARK.class-ability.options") - header-class="light" - content-class="item-grid" -}} -

{{localize 'SHADOWDARK.class.talent_choices.count.label'}}

- 1 - -{{/ui/sd-box}} - -
diff --git a/system/templates/items/class.hbs b/system/templates/items/class.hbs new file mode 100644 index 00000000..53d368ab --- /dev/null +++ b/system/templates/items/class.hbs @@ -0,0 +1,35 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/class/details-tab }} + {{> items/class/titles-tab }} + {{> items/class/spells-known-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
diff --git a/system/templates/items/class/_partials/details.hbs b/system/templates/items/class/_partials/details.hbs new file mode 100644 index 00000000..9f9b6eb7 --- /dev/null +++ b/system/templates/items/class/_partials/details.hbs @@ -0,0 +1,73 @@ +
+

{{localize 'SHADOWDARK.class.hit_points.label'}}

+ +
+ +
+

{{localize "SHADOWDARK.class.spellcasting_class.label"}}

+ +
+ + +
+

{{localize "SHADOWDARK.class.spellcasting_ability.label"}}

+ +
+ +
+

{{localize "SHADOWDARK.class.talents_table.label"}}

+ +
+ +
+ +
+

{{localize 'SHADOWDARK.class.spellcasting.base_difficulty.label'}}

+ {{numberInput + item.system.spellcasting.baseDifficulty + name="system.spellcasting.baseDifficulty" + placeholder="10" + }} +
+ +
diff --git a/system/templates/items/class/_partials/equipment.hbs b/system/templates/items/class/_partials/equipment.hbs new file mode 100644 index 00000000..97b064bc --- /dev/null +++ b/system/templates/items/class/_partials/equipment.hbs @@ -0,0 +1,53 @@ +
+ {{localize "SHADOWDARK.form.section_header.equipment.label"}} +
+ +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.class.weapons.label") + header-class="light" +}} + {{#if (checked system.allWeapons)}} + {{localize "SHADOWDARK.class.weapons.all.label"}} + {{else}} + {{> items/_partials/choice-selector + config=weaponsConfig + editable=editable + }} + {{/if}} +{{/ui/sd-box}} + + +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.class.armor.label") + header-class="light" +}} + {{#if (checked system.allArmor)}} + {{localize "SHADOWDARK.class.armor.all.label"}} + {{else}} + {{> items/_partials/choice-selector + config=armorConfig + editable=editable + }} + {{/if}} +{{/ui/sd-box}} + + +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.class-ability.options") + header-class="light" + content-class="item-grid" +}} +

{{localize "SHADOWDARK.class.weapons.all.label"}}

+ + +

{{localize "SHADOWDARK.class.weapons.all_melee.label"}}

+ + +

{{localize "SHADOWDARK.class.weapons.all_ranged.label"}}

+ + +

{{localize "SHADOWDARK.class.armor.all.label"}}

+ +{{/ui/sd-box}} + +
diff --git a/system/templates/items/class/_partials/languages.hbs b/system/templates/items/class/_partials/languages.hbs new file mode 100644 index 00000000..3d37bbe7 --- /dev/null +++ b/system/templates/items/class/_partials/languages.hbs @@ -0,0 +1,54 @@ +
+ {{localize 'SHADOWDARK.form.section_header.languages.label'}} +
+ +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.class.fixed") + header-class="light" +}} + {{> items/_partials/choice-selector + config=fixedLanguagesConfig + editable=editable + }} +{{/ui/sd-box}} + + +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.class.choice") + header-class="light" +}} + {{> items/_partials/choice-selector + config=languageChoicesConfig + editable=editable + }} +{{/ui/sd-box}} + + +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.class-ability.options") + header-class="light" + content-class="item-grid" +}} +

{{localize 'SHADOWDARK.class.language_choices.count.label'}}

+ {{numberInput + item.system.languages.select + name="system.languages.select" + placeholder="0" + }} + +

{{localize 'SHADOWDARK.language_choices.common.label'}}

+ {{numberInput + item.system.languages.common + name="system.languages.common" + placeholder="0" + }} + +

{{localize 'SHADOWDARK.language_choices.rare.label'}}

+ {{numberInput + item.system.languages.rare + name="system.languages.rare" + placeholder="0" + }} +{{/ui/sd-box}} + +
diff --git a/system/templates/items/class/_partials/talents.hbs b/system/templates/items/class/_partials/talents.hbs new file mode 100644 index 00000000..7677f433 --- /dev/null +++ b/system/templates/items/class/_partials/talents.hbs @@ -0,0 +1,44 @@ +
+ {{localize 'SHADOWDARK.form.section_header.talents.label'}} +
+ +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.class.fixed") + header-class="light" +}} + {{> items/_partials/choice-selector + config=talentsConfig + editable=editable + }} +{{/ui/sd-box}} + + +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.class.choice") + header-class="light" +}} + {{> items/_partials/choice-selector + config=talentChoicesConfig + editable=editable + }} +{{/ui/sd-box}} + + +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.class-ability.options") + header-class="light" + content-class="item-grid" +}} +

{{localize 'SHADOWDARK.class.talent_choices.count.label'}}

+ 1 + +{{/ui/sd-box}} + +
diff --git a/system/templates/items/class/details-tab.hbs b/system/templates/items/class/details-tab.hbs new file mode 100644 index 00000000..3347a5eb --- /dev/null +++ b/system/templates/items/class/details-tab.hbs @@ -0,0 +1,8 @@ +
+
+ {{> items/class/_partials/details }} + {{> items/class/_partials/equipment }} + {{> items/class/_partials/languages }} + {{> items/class/_partials/talents }} +
+
diff --git a/system/templates/items/tabs/spellsknown.hbs b/system/templates/items/class/spells-known-tab.hbs similarity index 60% rename from system/templates/items/tabs/spellsknown.hbs rename to system/templates/items/class/spells-known-tab.hbs index 479a8dec..ec319e45 100644 --- a/system/templates/items/tabs/spellsknown.hbs +++ b/system/templates/items/class/spells-known-tab.hbs @@ -1,5 +1,8 @@
-
Spells Known by Spell Tier
+
+ {{localize "SHADOWDARK.class.spells_Known.label"}} +
+ @@ -11,19 +14,19 @@ {{#each item.system.spellcasting.spellsknown}} - - - {{#each this}} - - {{/each}} - + + + {{#each this}} + + {{/each}} + {{/each}}
Level
{{@key}} - -
{{@key}} + +
diff --git a/system/templates/items/tabs/titles.hbs b/system/templates/items/class/titles-tab.hbs similarity index 100% rename from system/templates/items/tabs/titles.hbs rename to system/templates/items/class/titles-tab.hbs diff --git a/system/templates/items/item.hbs b/system/templates/items/item.hbs index 164ed561..ad512473 100644 --- a/system/templates/items/item.hbs +++ b/system/templates/items/item.hbs @@ -9,12 +9,6 @@ {{/if}} - {{#if showTab.titles}} - - {{localize "SHADOWDARK.sheet.item.tab.titles"}} - - {{/if}} - {{#if showTab.effects}} {{localize "SHADOWDARK.sheet.item.tab.effects"}} @@ -46,7 +40,6 @@
{{> items/tabs/details }} - {{> items/tabs/titles }} {{> items/_partials/effects-tab }} {{> items/tabs/light }} {{> items/tabs/spellsknown }} diff --git a/system/templates/items/tabs/details.hbs b/system/templates/items/tabs/details.hbs index faa7becd..180cff0a 100644 --- a/system/templates/items/tabs/details.hbs +++ b/system/templates/items/tabs/details.hbs @@ -1,18 +1,10 @@
- {{#ifEq item.type "Boon"}} - {{> items/_partials/boon }} - {{/ifEq}} - {{#ifEq item.type "Class Ability"}} {{> items/_partials/class-ability }} {{/ifEq}} - {{#ifEq item.type "Class"}} - {{> items/_partials/class }} - {{/ifEq}} - {{#ifEq item.type "Deity"}} {{> items/_partials/deity }} {{/ifEq}} From bbac36d13fb4a9cc6702d076c1cce8e1370acdaf Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 20 Oct 2024 23:07:50 +0100 Subject: [PATCH 042/182] show tab correctly --- system/templates/items/class.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/templates/items/class.hbs b/system/templates/items/class.hbs index 53d368ab..0c9268fe 100644 --- a/system/templates/items/class.hbs +++ b/system/templates/items/class.hbs @@ -10,7 +10,7 @@ {{localize "SHADOWDARK.sheet.item.tab.titles"}} - {{#if showTab.spellsknown}} + {{#if showTab.spellsKnown}} {{localize "SHADOWDARK.sheet.item.tab.spellsknown"}} From ad550e7768fcd168351b0808bfb702ccb45bd7e0 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 00:19:26 +0100 Subject: [PATCH 043/182] migrate class ability --- system/src/sheets/ItemSheetSD.mjs | 3 +- system/src/templates.mjs | 5 +- .../items/_partials/class-ability.hbs | 62 ------------------- system/templates/items/class-ability.hbs | 23 +++++++ .../class-ability/_partials/ability-check.hbs | 27 ++++++++ .../class-ability/_partials/ability-group.hbs | 6 ++ .../items/class-ability/_partials/options.hbs | 47 ++++++++++++++ .../items/class-ability/details-tab.hbs | 7 +++ system/templates/items/item.hbs | 7 --- system/templates/items/tabs/details.hbs | 4 -- 10 files changed, 116 insertions(+), 75 deletions(-) delete mode 100644 system/templates/items/_partials/class-ability.hbs create mode 100644 system/templates/items/class-ability.hbs create mode 100644 system/templates/items/class-ability/_partials/ability-check.hbs create mode 100644 system/templates/items/class-ability/_partials/ability-group.hbs create mode 100644 system/templates/items/class-ability/_partials/options.hbs create mode 100644 system/templates/items/class-ability/details-tab.hbs diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 6e73a8c2..4b1aee9f 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -35,6 +35,7 @@ export default class ItemSheetSD extends ItemSheet { "Basic", "Boon", "Class", + "Class Ability", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } @@ -325,7 +326,7 @@ export default class ItemSheetSD extends ItemSheet { : false; let spellsKnown = false; - if ((item.type === "Class") && (item.system.spellcasting.class !== "__not_spellcaster__")) { + if (item.type === "Class" && item.system.spellcasting.class !== "__not_spellcaster__") { spellsKnown = true; } diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 209a787a..05d37690 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -29,7 +29,6 @@ export default function() { "systems/shadowdark/templates/actors/player/talents.hbs", "systems/shadowdark/templates/items/_partials/active-effects.hbs", "systems/shadowdark/templates/items/_partials/choice-selector.hbs", - "systems/shadowdark/templates/items/_partials/class-ability.hbs", "systems/shadowdark/templates/items/_partials/cost.hbs", "systems/shadowdark/templates/items/_partials/deity.hbs", "systems/shadowdark/templates/items/_partials/description-tab.hbs", @@ -59,6 +58,10 @@ export default function() { "systems/shadowdark/templates/items/armor/details-tab.hbs", "systems/shadowdark/templates/items/basic/details-tab.hbs", "systems/shadowdark/templates/items/boon/details-tab.hbs", + "systems/shadowdark/templates/items/class-ability/_partials/ability-check.hbs", + "systems/shadowdark/templates/items/class-ability/_partials/ability-group.hbs", + "systems/shadowdark/templates/items/class-ability/_partials/options.hbs", + "systems/shadowdark/templates/items/class-ability/details-tab.hbs", "systems/shadowdark/templates/items/class/_partials/details.hbs", "systems/shadowdark/templates/items/class/_partials/equipment.hbs", "systems/shadowdark/templates/items/class/_partials/languages.hbs", diff --git a/system/templates/items/_partials/class-ability.hbs b/system/templates/items/_partials/class-ability.hbs deleted file mode 100644 index 58b51a83..00000000 --- a/system/templates/items/_partials/class-ability.hbs +++ /dev/null @@ -1,62 +0,0 @@ -{{#> ui/sd-box - header-label=(localize "SHADOWDARK.class-ability.ability.check") - header-class="light" -}} -
-

{{localize "SHADOWDARK.class-ability.ability.label"}}

- - -

{{localize 'SHADOWDARK.class-ability.dc.label'}}

- {{numberInput - item.system.dc - name="system.dc" - placeholder="0" - }} -
-{{/ui/sd-box}} - -{{#> ui/sd-box - header-label=(localize "SHADOWDARK.class-ability.group.label") - header-class="light" -}} - -{{/ui/sd-box}} - -{{#> ui/sd-box - header-label=(localize "SHADOWDARK.class-ability.options") - header-class="light" -}} -
-

{{localize "SHADOWDARK.class-ability.lose_on_failure.label"}}

- -

{{localize "SHADOWDARK.class-ability.limited-uses.label"}}

- -
- {{#if system.limitedUses}} -
-
-

{{localize 'SHADOWDARK.class-ability.available.label'}}

- {{numberInput - item.system.uses.available - name="system.uses.available" - placeholder="0" - }} -
-
-

{{localize 'SHADOWDARK.class-ability.maximum.label'}}

- {{numberInput - item.system.uses.max - name="system.uses.max" - placeholder="0" - }} -
-
- {{/if}} -{{/ui/sd-box}} diff --git a/system/templates/items/class-ability.hbs b/system/templates/items/class-ability.hbs new file mode 100644 index 00000000..daaae49c --- /dev/null +++ b/system/templates/items/class-ability.hbs @@ -0,0 +1,23 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/class-ability/details-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
diff --git a/system/templates/items/class-ability/_partials/ability-check.hbs b/system/templates/items/class-ability/_partials/ability-check.hbs new file mode 100644 index 00000000..d195dd6c --- /dev/null +++ b/system/templates/items/class-ability/_partials/ability-check.hbs @@ -0,0 +1,27 @@ +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.class-ability.ability.check") + header-class="light" +}} +
+

+ {{localize "SHADOWDARK.class-ability.ability.label"}} +

+ + +

+ {{localize 'SHADOWDARK.class-ability.dc.label'}} +

+ {{numberInput + item.system.dc + name="system.dc" + placeholder="0" + }} +
+{{/ui/sd-box}} diff --git a/system/templates/items/class-ability/_partials/ability-group.hbs b/system/templates/items/class-ability/_partials/ability-group.hbs new file mode 100644 index 00000000..e9366bba --- /dev/null +++ b/system/templates/items/class-ability/_partials/ability-group.hbs @@ -0,0 +1,6 @@ +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.class-ability.group.label") + header-class="light" +}} + +{{/ui/sd-box}} diff --git a/system/templates/items/class-ability/_partials/options.hbs b/system/templates/items/class-ability/_partials/options.hbs new file mode 100644 index 00000000..767fe3f4 --- /dev/null +++ b/system/templates/items/class-ability/_partials/options.hbs @@ -0,0 +1,47 @@ +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.class-ability.options") + header-class="light" +}} +
+

+ {{localize "SHADOWDARK.class-ability.lose_on_failure.label"}} +

+ +

+ {{localize "SHADOWDARK.class-ability.limited-uses.label"}} +

+ +
+ {{#if system.limitedUses}} +
+
+

+ {{localize 'SHADOWDARK.class-ability.available.label'}} +

+ {{numberInput + item.system.uses.available + name="system.uses.available" + placeholder="0" + }} +
+
+

+ {{localize 'SHADOWDARK.class-ability.maximum.label'}} +

+ {{numberInput + item.system.uses.max + name="system.uses.max" + placeholder="0" + }} +
+
+ {{/if}} +{{/ui/sd-box}} diff --git a/system/templates/items/class-ability/details-tab.hbs b/system/templates/items/class-ability/details-tab.hbs new file mode 100644 index 00000000..967fdcaa --- /dev/null +++ b/system/templates/items/class-ability/details-tab.hbs @@ -0,0 +1,7 @@ +
+
+ {{> items/class-ability/_partials/ability-check }} + {{> items/class-ability/_partials/ability-group }} + {{> items/class-ability/_partials/options }} +
+
diff --git a/system/templates/items/item.hbs b/system/templates/items/item.hbs index ad512473..1947f00e 100644 --- a/system/templates/items/item.hbs +++ b/system/templates/items/item.hbs @@ -21,12 +21,6 @@ {{/if}} - {{#if showTab.spellsknown}} - - {{localize "SHADOWDARK.sheet.item.tab.spellsknown"}} - - {{/if}} - {{#if showTab.description}} {{localize "SHADOWDARK.sheet.item.tab.description"}} @@ -42,7 +36,6 @@ {{> items/tabs/details }} {{> items/_partials/effects-tab }} {{> items/tabs/light }} - {{> items/tabs/spellsknown }} {{> items/_partials/description-tab }} {{> items/_partials/source-tab }}
diff --git a/system/templates/items/tabs/details.hbs b/system/templates/items/tabs/details.hbs index 180cff0a..b31585a4 100644 --- a/system/templates/items/tabs/details.hbs +++ b/system/templates/items/tabs/details.hbs @@ -1,10 +1,6 @@
- {{#ifEq item.type "Class Ability"}} - {{> items/_partials/class-ability }} - {{/ifEq}} - {{#ifEq item.type "Deity"}} {{> items/_partials/deity }} {{/ifEq}} From 3008259a53f2edbc5dc633b51bc79fcf33e41c47 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 00:49:58 +0100 Subject: [PATCH 044/182] migrate deity --- system/src/sheets/ItemSheetSD.mjs | 4 +--- system/src/templates.mjs | 2 +- system/templates/items/_partials/deity.hbs | 7 ------ system/templates/items/deity.hbs | 23 ++++++++++++++++++++ system/templates/items/deity/details-tab.hbs | 17 +++++++++++++++ system/templates/items/tabs/details.hbs | 4 ---- 6 files changed, 42 insertions(+), 15 deletions(-) delete mode 100644 system/templates/items/_partials/deity.hbs create mode 100644 system/templates/items/deity.hbs create mode 100644 system/templates/items/deity/details-tab.hbs diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 4b1aee9f..3e324ebd 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -36,6 +36,7 @@ export default class ItemSheetSD extends ItemSheet { "Boon", "Class", "Class Ability", + "Deity", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } @@ -332,8 +333,6 @@ export default class ItemSheetSD extends ItemSheet { const showTab = { details: [ - "Class Ability", - "Deity", "Effect", "Gem", "Language", @@ -356,7 +355,6 @@ export default class ItemSheetSD extends ItemSheet { ) ? true : false, light: item.system.light?.isSource ?? false, description: true, - titles: item.type === "Class", spellsKnown, }; diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 05d37690..a79a67c8 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -30,7 +30,6 @@ export default function() { "systems/shadowdark/templates/items/_partials/active-effects.hbs", "systems/shadowdark/templates/items/_partials/choice-selector.hbs", "systems/shadowdark/templates/items/_partials/cost.hbs", - "systems/shadowdark/templates/items/_partials/deity.hbs", "systems/shadowdark/templates/items/_partials/description-tab.hbs", "systems/shadowdark/templates/items/_partials/duration.hbs", "systems/shadowdark/templates/items/_partials/effect.hbs", @@ -69,6 +68,7 @@ export default function() { "systems/shadowdark/templates/items/class/details-tab.hbs", "systems/shadowdark/templates/items/class/spells-known-tab.hbs", "systems/shadowdark/templates/items/class/titles-tab.hbs", + "systems/shadowdark/templates/items/deity/details-tab.hbs", "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", diff --git a/system/templates/items/_partials/deity.hbs b/system/templates/items/_partials/deity.hbs deleted file mode 100644 index 67b077fd..00000000 --- a/system/templates/items/_partials/deity.hbs +++ /dev/null @@ -1,7 +0,0 @@ -
- - -
diff --git a/system/templates/items/deity.hbs b/system/templates/items/deity.hbs new file mode 100644 index 00000000..d791e5ed --- /dev/null +++ b/system/templates/items/deity.hbs @@ -0,0 +1,23 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/deity/details-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
diff --git a/system/templates/items/deity/details-tab.hbs b/system/templates/items/deity/details-tab.hbs new file mode 100644 index 00000000..ce50ef05 --- /dev/null +++ b/system/templates/items/deity/details-tab.hbs @@ -0,0 +1,17 @@ +
+
+
+

+ {{localize 'SHADOWDARK.sheet.actor.alignment'}} +

+ +
+
+
diff --git a/system/templates/items/tabs/details.hbs b/system/templates/items/tabs/details.hbs index b31585a4..2928a90e 100644 --- a/system/templates/items/tabs/details.hbs +++ b/system/templates/items/tabs/details.hbs @@ -1,10 +1,6 @@
- {{#ifEq item.type "Deity"}} - {{> items/_partials/deity }} - {{/ifEq}} - {{#ifEq item.type "Effect"}} {{> items/_partials/effect }} {{/ifEq}} From 4f1b7b253ad379f97ae9f0710d3dd9fd38a39c9d Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 00:58:50 +0100 Subject: [PATCH 045/182] migrate effect --- system/src/sheets/ItemSheetSD.mjs | 4 +-- system/src/templates.mjs | 5 +++- system/templates/items/_partials/effect.hbs | 27 ------------------ system/templates/items/effect.hbs | 28 +++++++++++++++++++ .../items/effect/_partials/category.hbs | 12 ++++++++ .../items/effect/_partials/duration.hbs | 12 ++++++++ .../items/effect/_partials/properties.hbs | 21 ++++++++++++++ system/templates/items/effect/details-tab.hbs | 7 +++++ 8 files changed, 86 insertions(+), 30 deletions(-) delete mode 100644 system/templates/items/_partials/effect.hbs create mode 100644 system/templates/items/effect.hbs create mode 100644 system/templates/items/effect/_partials/category.hbs create mode 100644 system/templates/items/effect/_partials/duration.hbs create mode 100644 system/templates/items/effect/_partials/properties.hbs create mode 100644 system/templates/items/effect/details-tab.hbs diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 3e324ebd..36f83d84 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -37,6 +37,7 @@ export default class ItemSheetSD extends ItemSheet { "Class", "Class Ability", "Deity", + "Effect", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } @@ -333,7 +334,6 @@ export default class ItemSheetSD extends ItemSheet { const showTab = { details: [ - "Effect", "Gem", "Language", "NPC Attack", @@ -350,7 +350,7 @@ export default class ItemSheetSD extends ItemSheet { ].includes(item.type), effects: ( - ["Boon", "Effect", "Talent"].includes(item.type) + ["Boon", "Talent"].includes(item.type) || item.system.magicItem ) ? true : false, light: item.system.light?.isSource ?? false, diff --git a/system/src/templates.mjs b/system/src/templates.mjs index a79a67c8..a0922a25 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -32,7 +32,6 @@ export default function() { "systems/shadowdark/templates/items/_partials/cost.hbs", "systems/shadowdark/templates/items/_partials/description-tab.hbs", "systems/shadowdark/templates/items/_partials/duration.hbs", - "systems/shadowdark/templates/items/_partials/effect.hbs", "systems/shadowdark/templates/items/_partials/effects-tab.hbs", "systems/shadowdark/templates/items/_partials/header.hbs", "systems/shadowdark/templates/items/_partials/item-category.hbs", @@ -69,6 +68,10 @@ export default function() { "systems/shadowdark/templates/items/class/spells-known-tab.hbs", "systems/shadowdark/templates/items/class/titles-tab.hbs", "systems/shadowdark/templates/items/deity/details-tab.hbs", + "systems/shadowdark/templates/items/effect/_partials/category.hbs", + "systems/shadowdark/templates/items/effect/_partials/duration.hbs", + "systems/shadowdark/templates/items/effect/_partials/properties.hbs", + "systems/shadowdark/templates/items/effect/details-tab.hbs", "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", diff --git a/system/templates/items/_partials/effect.hbs b/system/templates/items/_partials/effect.hbs deleted file mode 100644 index dc75cd14..00000000 --- a/system/templates/items/_partials/effect.hbs +++ /dev/null @@ -1,27 +0,0 @@ - -{{#> ui/sd-box - header-label=(localize "SHADOWDARK.item.effect.category.title") - header-class="light" -}} - -{{/ui/sd-box}} - - -{{#> ui/sd-box - header-label=(localize "SHADOWDARK.item.spell_duration") - header-class="light" -}} - {{> items/_partials/duration - base="system.duration" - duration=system.duration - type="effect" - choices=config.EFFECT_DURATIONS - variableDuration=variableDuration - }} -{{/ui/sd-box}} diff --git a/system/templates/items/effect.hbs b/system/templates/items/effect.hbs new file mode 100644 index 00000000..6a0ab394 --- /dev/null +++ b/system/templates/items/effect.hbs @@ -0,0 +1,28 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/effect/details-tab }} + {{> items/_partials/effects-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
diff --git a/system/templates/items/effect/_partials/category.hbs b/system/templates/items/effect/_partials/category.hbs new file mode 100644 index 00000000..12e4304e --- /dev/null +++ b/system/templates/items/effect/_partials/category.hbs @@ -0,0 +1,12 @@ +{{#> ui/sd-box + header-class="light" + header-label=(localize "SHADOWDARK.item.effect.category.title") +}} + +{{/ui/sd-box}} diff --git a/system/templates/items/effect/_partials/duration.hbs b/system/templates/items/effect/_partials/duration.hbs new file mode 100644 index 00000000..4ab20dce --- /dev/null +++ b/system/templates/items/effect/_partials/duration.hbs @@ -0,0 +1,12 @@ +{{#> ui/sd-box + header-class="light" + header-label=(localize "SHADOWDARK.item.spell_duration") +}} + {{> items/_partials/duration + base="system.duration" + choices=config.EFFECT_DURATIONS + duration=system.duration + type="effect" + variableDuration=variableDuration + }} +{{/ui/sd-box}} diff --git a/system/templates/items/effect/_partials/properties.hbs b/system/templates/items/effect/_partials/properties.hbs new file mode 100644 index 00000000..18d5f218 --- /dev/null +++ b/system/templates/items/effect/_partials/properties.hbs @@ -0,0 +1,21 @@ +{{#> ui/sd-box + header-label="Item Properties" + header-class="light" +}} +
+

{{localize "SHADOWDARK.item.effect.show-token-icon"}}

+ + +

{{localize "SHADOWDARK.item.effect.show-on-panel"}}

+ +
+ +{{/ui/sd-box}} diff --git a/system/templates/items/effect/details-tab.hbs b/system/templates/items/effect/details-tab.hbs new file mode 100644 index 00000000..3d561e95 --- /dev/null +++ b/system/templates/items/effect/details-tab.hbs @@ -0,0 +1,7 @@ +
+
+ {{> items/effect/_partials/category }} + {{> items/effect/_partials/duration }} + {{> items/effect/_partials/properties }} +
+
From 6396968e1ee1ca679711b3bcc4601c7ce64023dc Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 01:39:52 +0100 Subject: [PATCH 046/182] migrate gem sheet --- system/src/sheets/ItemSheetSD.mjs | 25 +++++---- system/src/templates.mjs | 1 + .../items/_partials/item-properties.hbs | 55 ++++++++----------- system/templates/items/class.hbs | 6 +- .../items/class/spells-known-tab.hbs | 2 +- system/templates/items/gem.hbs | 23 ++++++++ system/templates/items/gem/details-tab.hbs | 5 ++ system/templates/items/tabs/details.hbs | 4 -- 8 files changed, 70 insertions(+), 51 deletions(-) create mode 100644 system/templates/items/gem.hbs create mode 100644 system/templates/items/gem/details-tab.hbs diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 36f83d84..21106e06 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -38,6 +38,7 @@ export default class ItemSheetSD extends ItemSheet { "Class Ability", "Deity", "Effect", + "Gem", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } @@ -334,7 +335,6 @@ export default class ItemSheetSD extends ItemSheet { const showTab = { details: [ - "Gem", "Language", "NPC Attack", "NPC Special Attack", @@ -378,8 +378,19 @@ export default class ItemSheetSD extends ItemSheet { await this.getAncestrySelectorConfigs(context); } - if (["Class"].includes(item.type)) { + if (item.type === "Class") { await this.getClassSelectorConfigs(context); + + // initialize spellsknown table if not already set on a spellcaster class item + if (!item.system.spellcasting.spellsknown) { + item.system.spellcasting.spellsknown = {}; + for (let i = 1; i <= 10; i++) { + item.system.spellcasting.spellsknown[i] = {}; + for (let j = 1; j <= 5; j++) { + item.system.spellcasting.spellsknown[i][j] = null; + } + } + } } if (item.type === "Patron") { @@ -448,16 +459,6 @@ export default class ItemSheetSD extends ItemSheet { context.showItemProperties=true; } - // initialize spellsknown table if not already set on a spellcaster class item - if (this.spellsKnown && !item.system.spellcasting.spellsknown) { - item.system.spellcasting.spellsknown = {}; - for (let i = 1; i <= 10; i++) { - item.system.spellcasting.spellsknown[i] = {}; - for (let j = 1; j <= 5; j++) { - item.system.spellcasting.spellsknown[i][j] = null; - } - } - } if (item.type === "NPC Attack" || item.type === "NPC Special Attack") { context.npcAttackRangesDisplay = item.npcAttackRangesDisplay(); diff --git a/system/src/templates.mjs b/system/src/templates.mjs index a0922a25..ce0b8aba 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -72,6 +72,7 @@ export default function() { "systems/shadowdark/templates/items/effect/_partials/duration.hbs", "systems/shadowdark/templates/items/effect/_partials/properties.hbs", "systems/shadowdark/templates/items/effect/details-tab.hbs", + "systems/shadowdark/templates/items/gem/details-tab.hbs", "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", diff --git a/system/templates/items/_partials/item-properties.hbs b/system/templates/items/_partials/item-properties.hbs index b00b551d..6a0b9c81 100644 --- a/system/templates/items/_partials/item-properties.hbs +++ b/system/templates/items/_partials/item-properties.hbs @@ -5,64 +5,57 @@
{{#if item.system.canBeEquipped}} {{#if item.isOwned}} -

{{localize 'SHADOWDARK.item.equipped'}}

+

+ {{localize 'SHADOWDARK.item.equipped'}} +

{{/if}} {{/if}} {{#ifEq item.type "Basic"}} -

{{localize 'SHADOWDARK.item.ammunition'}}

+

+ {{localize 'SHADOWDARK.item.ammunition'}} +

-

{{localize 'SHADOWDARK.item.light.is_source'}}

+

+ {{localize 'SHADOWDARK.item.light.is_source'}} +

{{/ifEq}} {{#if showMagicItemCheckbox}} -

{{localize "SHADOWDARK.item.magic_item.is_magic"}}

- +

+ {{localize "SHADOWDARK.item.magic_item.is_magic"}} +

+ {{/if}} {{#ifEq item.type "Basic"}} -

{{localize 'SHADOWDARK.item.treasure'}}

+

+ {{localize 'SHADOWDARK.item.treasure'}} +

{{/ifEq}} - - {{#ifEq item.type "Effect"}} -

{{localize "SHADOWDARK.item.effect.show-token-icon"}}

- - -

{{localize "SHADOWDARK.item.effect.show-on-panel"}}

- - {{/ifEq}}
- {{/ui/sd-box}} diff --git a/system/templates/items/class.hbs b/system/templates/items/class.hbs index 0c9268fe..79dc715c 100644 --- a/system/templates/items/class.hbs +++ b/system/templates/items/class.hbs @@ -10,11 +10,11 @@ {{localize "SHADOWDARK.sheet.item.tab.titles"}} - {{#if showTab.spellsKnown}} - + {{#ifCond system.spellcasting.class "!==" "__not_spellcaster__"}} + {{localize "SHADOWDARK.sheet.item.tab.spellsknown"}} - {{/if}} + {{/ifCond}} {{localize "SHADOWDARK.sheet.item.tab.description"}} diff --git a/system/templates/items/class/spells-known-tab.hbs b/system/templates/items/class/spells-known-tab.hbs index ec319e45..e5a77a59 100644 --- a/system/templates/items/class/spells-known-tab.hbs +++ b/system/templates/items/class/spells-known-tab.hbs @@ -1,4 +1,4 @@ -
+
{{localize "SHADOWDARK.class.spells_Known.label"}}
diff --git a/system/templates/items/gem.hbs b/system/templates/items/gem.hbs new file mode 100644 index 00000000..7172f277 --- /dev/null +++ b/system/templates/items/gem.hbs @@ -0,0 +1,23 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/gem/details-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
diff --git a/system/templates/items/gem/details-tab.hbs b/system/templates/items/gem/details-tab.hbs new file mode 100644 index 00000000..16b1c854 --- /dev/null +++ b/system/templates/items/gem/details-tab.hbs @@ -0,0 +1,5 @@ +
+
+ {{> items/_partials/cost }} +
+
diff --git a/system/templates/items/tabs/details.hbs b/system/templates/items/tabs/details.hbs index 2928a90e..dfd4c27b 100644 --- a/system/templates/items/tabs/details.hbs +++ b/system/templates/items/tabs/details.hbs @@ -1,10 +1,6 @@
- {{#ifEq item.type "Effect"}} - {{> items/_partials/effect }} - {{/ifEq}} - {{#ifEq item.type "Language"}} {{> items/_partials/language }} {{/ifEq}} From 68f4defdac4fe5d8e1b5751548c056f599e7eedd Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 01:44:55 +0100 Subject: [PATCH 047/182] migrate language item sheets --- system/src/sheets/ItemSheetSD.mjs | 6 ++--- system/src/templates.mjs | 2 +- system/templates/items/_partials/language.hbs | 11 --------- system/templates/items/language.hbs | 23 +++++++++++++++++++ .../templates/items/language/details-tab.hbs | 16 +++++++++++++ 5 files changed, 43 insertions(+), 15 deletions(-) delete mode 100644 system/templates/items/_partials/language.hbs create mode 100644 system/templates/items/language.hbs create mode 100644 system/templates/items/language/details-tab.hbs diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 21106e06..8c2759bc 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -39,6 +39,7 @@ export default class ItemSheetSD extends ItemSheet { "Deity", "Effect", "Gem", + "Language", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } @@ -335,7 +336,6 @@ export default class ItemSheetSD extends ItemSheet { const showTab = { details: [ - "Language", "NPC Attack", "NPC Special Attack", "NPC Spell", @@ -350,7 +350,7 @@ export default class ItemSheetSD extends ItemSheet { ].includes(item.type), effects: ( - ["Boon", "Talent"].includes(item.type) + ["Talent"].includes(item.type) || item.system.magicItem ) ? true : false, light: item.system.light?.isSource ?? false, @@ -382,7 +382,7 @@ export default class ItemSheetSD extends ItemSheet { await this.getClassSelectorConfigs(context); // initialize spellsknown table if not already set on a spellcaster class item - if (!item.system.spellcasting.spellsknown) { + if (spellsKnown && !item.system.spellcasting.spellsknown) { item.system.spellcasting.spellsknown = {}; for (let i = 1; i <= 10; i++) { item.system.spellcasting.spellsknown[i] = {}; diff --git a/system/src/templates.mjs b/system/src/templates.mjs index ce0b8aba..cfa734e5 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -36,7 +36,6 @@ export default function() { "systems/shadowdark/templates/items/_partials/header.hbs", "systems/shadowdark/templates/items/_partials/item-category.hbs", "systems/shadowdark/templates/items/_partials/item-properties.hbs", - "systems/shadowdark/templates/items/_partials/language.hbs", "systems/shadowdark/templates/items/_partials/light-source.hbs", "systems/shadowdark/templates/items/_partials/npc-attack.hbs", "systems/shadowdark/templates/items/_partials/npc-special-attack.hbs", @@ -73,6 +72,7 @@ export default function() { "systems/shadowdark/templates/items/effect/_partials/properties.hbs", "systems/shadowdark/templates/items/effect/details-tab.hbs", "systems/shadowdark/templates/items/gem/details-tab.hbs", + "systems/shadowdark/templates/items/language/details-tab.hbs", "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", diff --git a/system/templates/items/_partials/language.hbs b/system/templates/items/_partials/language.hbs deleted file mode 100644 index 7e5c7694..00000000 --- a/system/templates/items/_partials/language.hbs +++ /dev/null @@ -1,11 +0,0 @@ -
-

{{localize 'SHADOWDARK.language.rarity.label'}}

- -
- diff --git a/system/templates/items/language.hbs b/system/templates/items/language.hbs new file mode 100644 index 00000000..e4d1f587 --- /dev/null +++ b/system/templates/items/language.hbs @@ -0,0 +1,23 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/language/details-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
diff --git a/system/templates/items/language/details-tab.hbs b/system/templates/items/language/details-tab.hbs new file mode 100644 index 00000000..7bb737cf --- /dev/null +++ b/system/templates/items/language/details-tab.hbs @@ -0,0 +1,16 @@ +
+
+
+

+ {{localize 'SHADOWDARK.language.rarity.label'}} +

+ +
+
+
From dd9bc4ce7458a445efcaca0f75f31685ffba670d Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 01:59:20 +0100 Subject: [PATCH 048/182] migrate npc attack sheet --- system/src/sheets/ItemSheetSD.mjs | 2 +- system/src/templates.mjs | 2 +- system/templates/items/npc-attack.hbs | 23 ++++++++ .../items/npc-attack/details-tab.hbs | 52 +++++++++++++++++++ 4 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 system/templates/items/npc-attack.hbs create mode 100644 system/templates/items/npc-attack/details-tab.hbs diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 8c2759bc..d898f548 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -40,6 +40,7 @@ export default class ItemSheetSD extends ItemSheet { "Effect", "Gem", "Language", + "NPC Attack", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } @@ -336,7 +337,6 @@ export default class ItemSheetSD extends ItemSheet { const showTab = { details: [ - "NPC Attack", "NPC Special Attack", "NPC Spell", "Patron", diff --git a/system/src/templates.mjs b/system/src/templates.mjs index cfa734e5..a78b1098 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -37,7 +37,6 @@ export default function() { "systems/shadowdark/templates/items/_partials/item-category.hbs", "systems/shadowdark/templates/items/_partials/item-properties.hbs", "systems/shadowdark/templates/items/_partials/light-source.hbs", - "systems/shadowdark/templates/items/_partials/npc-attack.hbs", "systems/shadowdark/templates/items/_partials/npc-special-attack.hbs", "systems/shadowdark/templates/items/_partials/npc-spell.hbs", "systems/shadowdark/templates/items/_partials/property.hbs", @@ -73,6 +72,7 @@ export default function() { "systems/shadowdark/templates/items/effect/details-tab.hbs", "systems/shadowdark/templates/items/gem/details-tab.hbs", "systems/shadowdark/templates/items/language/details-tab.hbs", + "systems/shadowdark/templates/items/npc-attack/details-tab.hbs", "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", diff --git a/system/templates/items/npc-attack.hbs b/system/templates/items/npc-attack.hbs new file mode 100644 index 00000000..25e5d11b --- /dev/null +++ b/system/templates/items/npc-attack.hbs @@ -0,0 +1,23 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/npc-attack/details-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
diff --git a/system/templates/items/npc-attack/details-tab.hbs b/system/templates/items/npc-attack/details-tab.hbs new file mode 100644 index 00000000..a44a7631 --- /dev/null +++ b/system/templates/items/npc-attack/details-tab.hbs @@ -0,0 +1,52 @@ +
+
+
+ +

{{localize 'SHADOWDARK.item.npc_attack_count'}}

+ + +

{{localize 'SHADOWDARK.item.npc_attack_damage_formula'}}

+ + +

{{localize 'SHADOWDARK.item.npc_attack_bonus'}}

+ {{numberInput + system.bonuses.attackBonus + name="system.bonuses.attackBonus" + placeholder="1" + }} + +

{{localize 'SHADOWDARK.item.effect.predefined_effect.critMultiplier'}}

+ {{numberInput + system.bonuses.critical.multiplier + name="system.bonuses.critical.multiplier" + placeholder="2" + }} +
+ +
+ +

{{localize 'SHADOWDARK.app.npc_attack_ranges.title'}}

+ +
{{npcAttackRangesDisplay}}
+
+ +

{{localize 'SHADOWDARK.item.npc_attack_special'}}

+ + +
+
From 3300c8f09fa5dcb6f760441a91ec00fade63214a Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 02:11:14 +0100 Subject: [PATCH 049/182] migrate npc special attack sheet --- system/src/sheets/ItemSheetSD.mjs | 2 +- system/src/templates.mjs | 2 +- .../templates/items/_partials/npc-attack.hbs | 48 ------------------- .../items/_partials/npc-special-attack.hbs | 23 --------- system/templates/items/npc-special-attack.hbs | 23 +++++++++ .../items/npc-special-attack/details-tab.hbs | 26 ++++++++++ 6 files changed, 51 insertions(+), 73 deletions(-) delete mode 100644 system/templates/items/_partials/npc-attack.hbs delete mode 100644 system/templates/items/_partials/npc-special-attack.hbs create mode 100644 system/templates/items/npc-special-attack.hbs create mode 100644 system/templates/items/npc-special-attack/details-tab.hbs diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index d898f548..5bf62c6b 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -41,6 +41,7 @@ export default class ItemSheetSD extends ItemSheet { "Gem", "Language", "NPC Attack", + "NPC Special Attack", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } @@ -337,7 +338,6 @@ export default class ItemSheetSD extends ItemSheet { const showTab = { details: [ - "NPC Special Attack", "NPC Spell", "Patron", "Potion", diff --git a/system/src/templates.mjs b/system/src/templates.mjs index a78b1098..84c531e3 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -37,7 +37,6 @@ export default function() { "systems/shadowdark/templates/items/_partials/item-category.hbs", "systems/shadowdark/templates/items/_partials/item-properties.hbs", "systems/shadowdark/templates/items/_partials/light-source.hbs", - "systems/shadowdark/templates/items/_partials/npc-special-attack.hbs", "systems/shadowdark/templates/items/_partials/npc-spell.hbs", "systems/shadowdark/templates/items/_partials/property.hbs", "systems/shadowdark/templates/items/_partials/slots.hbs", @@ -73,6 +72,7 @@ export default function() { "systems/shadowdark/templates/items/gem/details-tab.hbs", "systems/shadowdark/templates/items/language/details-tab.hbs", "systems/shadowdark/templates/items/npc-attack/details-tab.hbs", + "systems/shadowdark/templates/items/npc-special-attack/details-tab.hbs", "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", diff --git a/system/templates/items/_partials/npc-attack.hbs b/system/templates/items/_partials/npc-attack.hbs deleted file mode 100644 index da4f565d..00000000 --- a/system/templates/items/_partials/npc-attack.hbs +++ /dev/null @@ -1,48 +0,0 @@ -
-
- -

{{localize 'SHADOWDARK.item.npc_attack_count'}}

- - -

{{localize 'SHADOWDARK.item.npc_attack_damage_formula'}}

- - -

{{localize 'SHADOWDARK.item.npc_attack_bonus'}}

- {{numberInput - system.bonuses.attackBonus - name="system.bonuses.attackBonus" - placeholder="1" - }} - -

{{localize 'SHADOWDARK.item.effect.predefined_effect.critMultiplier'}}

- {{numberInput - system.bonuses.critical.multiplier - name="system.bonuses.critical.multiplier" - placeholder="2" - }} -
- - -

{{localize 'SHADOWDARK.app.npc_attack_ranges.title'}}

- -
{{npcAttackRangesDisplay}}
-
- -

{{localize 'SHADOWDARK.item.npc_attack_special'}}

- -
diff --git a/system/templates/items/_partials/npc-special-attack.hbs b/system/templates/items/_partials/npc-special-attack.hbs deleted file mode 100644 index a9c2e2ec..00000000 --- a/system/templates/items/_partials/npc-special-attack.hbs +++ /dev/null @@ -1,23 +0,0 @@ -
-

{{localize 'SHADOWDARK.item.npc_attack_count'}}

- - -

{{localize 'SHADOWDARK.item.npc_attack_bonus'}}

- {{numberInput - system.bonuses.attackBonus - name="system.bonuses.attackBonus" - placeholder="0" - }} - -

{{localize 'SHADOWDARK.app.npc_attack_ranges.title'}}

- - {{npcAttackRangesDisplay}} - -
diff --git a/system/templates/items/npc-special-attack.hbs b/system/templates/items/npc-special-attack.hbs new file mode 100644 index 00000000..78b55e8a --- /dev/null +++ b/system/templates/items/npc-special-attack.hbs @@ -0,0 +1,23 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/npc-special-attack/details-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
diff --git a/system/templates/items/npc-special-attack/details-tab.hbs b/system/templates/items/npc-special-attack/details-tab.hbs new file mode 100644 index 00000000..c5867275 --- /dev/null +++ b/system/templates/items/npc-special-attack/details-tab.hbs @@ -0,0 +1,26 @@ +
+
+
+

{{localize 'SHADOWDARK.item.npc_attack_count'}}

+ + +

{{localize 'SHADOWDARK.item.npc_attack_bonus'}}

+ {{numberInput + system.bonuses.attackBonus + name="system.bonuses.attackBonus" + placeholder="0" + }} + +

{{localize 'SHADOWDARK.app.npc_attack_ranges.title'}}

+ + {{npcAttackRangesDisplay}} + +
+
From 0f60ae7ec2747098a6ef9d56a8ca46635bb830c5 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 02:17:05 +0100 Subject: [PATCH 050/182] migrate npc spell sheet --- system/src/sheets/ItemSheetSD.mjs | 2 +- system/src/templates.mjs | 2 +- .../templates/items/_partials/npc-spell.hbs | 28 --------------- .../items/npc-attack/details-tab.hbs | 1 + .../items/npc-special-attack/details-tab.hbs | 1 + system/templates/items/npc-spell.hbs | 23 +++++++++++++ .../templates/items/npc-spell/details-tab.hbs | 34 +++++++++++++++++++ system/templates/items/tabs/details.hbs | 16 --------- 8 files changed, 61 insertions(+), 46 deletions(-) delete mode 100644 system/templates/items/_partials/npc-spell.hbs create mode 100644 system/templates/items/npc-spell.hbs create mode 100644 system/templates/items/npc-spell/details-tab.hbs diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 5bf62c6b..610d349b 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -42,6 +42,7 @@ export default class ItemSheetSD extends ItemSheet { "Language", "NPC Attack", "NPC Special Attack", + "NPC Spell", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } @@ -338,7 +339,6 @@ export default class ItemSheetSD extends ItemSheet { const showTab = { details: [ - "NPC Spell", "Patron", "Potion", "Property", diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 84c531e3..596cca74 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -37,7 +37,6 @@ export default function() { "systems/shadowdark/templates/items/_partials/item-category.hbs", "systems/shadowdark/templates/items/_partials/item-properties.hbs", "systems/shadowdark/templates/items/_partials/light-source.hbs", - "systems/shadowdark/templates/items/_partials/npc-spell.hbs", "systems/shadowdark/templates/items/_partials/property.hbs", "systems/shadowdark/templates/items/_partials/slots.hbs", "systems/shadowdark/templates/items/_partials/source-tab.hbs", @@ -73,6 +72,7 @@ export default function() { "systems/shadowdark/templates/items/language/details-tab.hbs", "systems/shadowdark/templates/items/npc-attack/details-tab.hbs", "systems/shadowdark/templates/items/npc-special-attack/details-tab.hbs", + "systems/shadowdark/templates/items/npc-spell/details-tab.hbs", "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", diff --git a/system/templates/items/_partials/npc-spell.hbs b/system/templates/items/_partials/npc-spell.hbs deleted file mode 100644 index fb21b624..00000000 --- a/system/templates/items/_partials/npc-spell.hbs +++ /dev/null @@ -1,28 +0,0 @@ -
-

DC

- {{numberInput - system.dc - name="system.dc" - class="spell-dc-value" - placeholder="10" - }} - -

{{localize 'SHADOWDARK.item.spell_duration'}}

- {{> items/_partials/duration - base="system.duration" - duration=system.duration - type="spell" - choices=config.SPELL_DURATIONS - variableDuration=variableDuration - }} - -

{{localize 'SHADOWDARK.item.spell_range'}}

- -
diff --git a/system/templates/items/npc-attack/details-tab.hbs b/system/templates/items/npc-attack/details-tab.hbs index a44a7631..2a4fd67b 100644 --- a/system/templates/items/npc-attack/details-tab.hbs +++ b/system/templates/items/npc-attack/details-tab.hbs @@ -49,4 +49,5 @@ />
+
diff --git a/system/templates/items/npc-special-attack/details-tab.hbs b/system/templates/items/npc-special-attack/details-tab.hbs index c5867275..9a866156 100644 --- a/system/templates/items/npc-special-attack/details-tab.hbs +++ b/system/templates/items/npc-special-attack/details-tab.hbs @@ -23,4 +23,5 @@ {{npcAttackRangesDisplay}}
+
diff --git a/system/templates/items/npc-spell.hbs b/system/templates/items/npc-spell.hbs new file mode 100644 index 00000000..61633ebf --- /dev/null +++ b/system/templates/items/npc-spell.hbs @@ -0,0 +1,23 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/npc-spell/details-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
diff --git a/system/templates/items/npc-spell/details-tab.hbs b/system/templates/items/npc-spell/details-tab.hbs new file mode 100644 index 00000000..53e6b36e --- /dev/null +++ b/system/templates/items/npc-spell/details-tab.hbs @@ -0,0 +1,34 @@ +
+
+
+

+ {{localize "SHADOWDARK.class-ability.dc.label"}} +

+ {{numberInput + system.dc + name="system.dc" + class="spell-dc-value" + placeholder="10" + }} + +

{{localize 'SHADOWDARK.item.spell_duration'}}

+ {{> items/_partials/duration + base="system.duration" + duration=system.duration + type="spell" + choices=config.SPELL_DURATIONS + variableDuration=variableDuration + }} + +

{{localize 'SHADOWDARK.item.spell_range'}}

+ +
+
+
diff --git a/system/templates/items/tabs/details.hbs b/system/templates/items/tabs/details.hbs index dfd4c27b..341eadb6 100644 --- a/system/templates/items/tabs/details.hbs +++ b/system/templates/items/tabs/details.hbs @@ -1,22 +1,6 @@
- {{#ifEq item.type "Language"}} - {{> items/_partials/language }} - {{/ifEq}} - - {{#ifEq item.type "NPC Attack"}} - {{> items/_partials/npc-attack }} - {{/ifEq}} - - {{#ifEq item.type "NPC Special Attack"}} - {{> items/_partials/npc-special-attack }} - {{/ifEq}} - - {{#ifEq item.type "NPC Spell"}} - {{> items/_partials/npc-spell }} - {{/ifEq}} - {{#ifEq item.type "Property"}} {{> items/_partials/property }} {{/ifEq}} From f63a85553be3450384a5eb5bc7b3b2d362d9fade Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 02:24:43 +0100 Subject: [PATCH 051/182] migrate npc feature sheet --- system/src/sheets/ItemSheetSD.mjs | 1 + system/template.json | 6 +-- .../templates/items/_partials/source-tab.hbs | 45 +++++++++---------- system/templates/items/npc-feature.hbs | 19 ++++++++ 4 files changed, 44 insertions(+), 27 deletions(-) create mode 100644 system/templates/items/npc-feature.hbs diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 610d349b..2edacb39 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -41,6 +41,7 @@ export default class ItemSheetSD extends ItemSheet { "Gem", "Language", "NPC Attack", + "NPC Feature", "NPC Special Attack", "NPC Spell", ].includes(this.item.type)) { diff --git a/system/template.json b/system/template.json index f19b0ccd..625e2ae9 100644 --- a/system/template.json +++ b/system/template.json @@ -374,6 +374,9 @@ "close" ] }, + "NPC Feature": { + "templates": ["common"] + }, "NPC Special Attack": { "templates": ["common"], "attack": { @@ -384,9 +387,6 @@ }, "ranges": [] }, - "NPC Feature": { - "templates": ["common"] - }, "NPC Spell": { "templates": ["common"], "duration": { diff --git a/system/templates/items/_partials/source-tab.hbs b/system/templates/items/_partials/source-tab.hbs index f6054935..bd3735b9 100644 --- a/system/templates/items/_partials/source-tab.hbs +++ b/system/templates/items/_partials/source-tab.hbs @@ -1,27 +1,24 @@
-
-

{{localize "SHADOWDARK.item.source_tag"}}

-
+

+ {{localize "SHADOWDARK.item.source_tag"}} +

- {{#if sourceLoaded}} - - {{else}} -

- - {{localize 'SHADOWDARK.error.source.source_missing'}} - -

- {{/if}} - -
-
+ {{#if sourceLoaded}} + + {{else}} +

+ + {{localize 'SHADOWDARK.error.source.source_missing'}} + +

+ {{/if}}
diff --git a/system/templates/items/npc-feature.hbs b/system/templates/items/npc-feature.hbs new file mode 100644 index 00000000..7d1fe88e --- /dev/null +++ b/system/templates/items/npc-feature.hbs @@ -0,0 +1,19 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
From 1d79c6912cd1df37bab8e0ea6372026cd34659d1 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 02:33:21 +0100 Subject: [PATCH 052/182] migrate (unfinished) patron sheet --- system/src/sheets/ItemSheetSD.mjs | 2 +- system/src/templates.mjs | 1 + system/templates/items/patron.hbs | 23 +++++++++++++++++++ system/templates/items/patron/details-tab.hbs | 4 ++++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 system/templates/items/patron.hbs create mode 100644 system/templates/items/patron/details-tab.hbs diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 2edacb39..fdcc195f 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -44,6 +44,7 @@ export default class ItemSheetSD extends ItemSheet { "NPC Feature", "NPC Special Attack", "NPC Spell", + "Patron", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } @@ -340,7 +341,6 @@ export default class ItemSheetSD extends ItemSheet { const showTab = { details: [ - "Patron", "Potion", "Property", "Scroll", diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 596cca74..183b0daa 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -73,6 +73,7 @@ export default function() { "systems/shadowdark/templates/items/npc-attack/details-tab.hbs", "systems/shadowdark/templates/items/npc-special-attack/details-tab.hbs", "systems/shadowdark/templates/items/npc-spell/details-tab.hbs", + "systems/shadowdark/templates/items/patron/details-tab.hbs", "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", diff --git a/system/templates/items/patron.hbs b/system/templates/items/patron.hbs new file mode 100644 index 00000000..e0802326 --- /dev/null +++ b/system/templates/items/patron.hbs @@ -0,0 +1,23 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/patron/details-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
diff --git a/system/templates/items/patron/details-tab.hbs b/system/templates/items/patron/details-tab.hbs new file mode 100644 index 00000000..ab35be5f --- /dev/null +++ b/system/templates/items/patron/details-tab.hbs @@ -0,0 +1,4 @@ +
+
+
+
From b29c0e2f7aa96cbe915a67cfddb664f5252cce44 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 02:48:34 +0100 Subject: [PATCH 053/182] migrate potion sheet --- i18n/en.yaml | 4 +-- system/src/sheets/ItemSheetSD.mjs | 2 +- system/src/templates.mjs | 1 + .../items/_partials/active-effects.hbs | 6 ++-- .../items/_partials/choice-selector.hbs | 2 +- system/templates/items/potion.hbs | 28 +++++++++++++++++++ system/templates/items/potion/details-tab.hbs | 6 ++++ 7 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 system/templates/items/potion.hbs create mode 100644 system/templates/items/potion/details-tab.hbs diff --git a/i18n/en.yaml b/i18n/en.yaml index c8ce9d73..4741b95d 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -305,7 +305,7 @@ SHADOWDARK.dialog.select_weapon_property.title: Choose Weapon Properties SHADOWDARK.dialog.spell_roll.title: Cast Spell with SHADOWDARK.dialog.submit: Submit SHADOWDARK.dialog.tooltip.talent_advantage: A talent is giving you advantage to this roll -SHADOWDARK.dialog.type_here: Type Here +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Drag and Drop Here SHADOWDARK.effect_duration.hours: Hours SHADOWDARK.effect_duration.minutes: Minutes @@ -403,7 +403,7 @@ SHADOWDARK.item.effect.lightSource.lightSpellNear: Light SHADOWDARK.item.effect.lightSource.lightSuppression: Light Suppression SHADOWDARK.item.effect.lightSource.purpleGlow: Purple Glow SHADOWDARK.item.effect.lightSource.torch: Torch -SHADOWDARK.item.effect.pre-defined.title: Pre-defined effects +SHADOWDARK.item.effect.pre-defined.title: Pre-defined Effects SHADOWDARK.item.effect.predefined_effect.abilityImprovement: Ability Score Improvement SHADOWDARK.item.effect.predefined_effect.abilityImprovementCha: Ability Score Improvement (Cha) SHADOWDARK.item.effect.predefined_effect.abilityImprovementCon: Ability Score Improvement (Con) diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index fdcc195f..4c119560 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -45,6 +45,7 @@ export default class ItemSheetSD extends ItemSheet { "NPC Special Attack", "NPC Spell", "Patron", + "Potion", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } @@ -341,7 +342,6 @@ export default class ItemSheetSD extends ItemSheet { const showTab = { details: [ - "Potion", "Property", "Scroll", "Spell", diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 183b0daa..2b54aed6 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -74,6 +74,7 @@ export default function() { "systems/shadowdark/templates/items/npc-special-attack/details-tab.hbs", "systems/shadowdark/templates/items/npc-spell/details-tab.hbs", "systems/shadowdark/templates/items/patron/details-tab.hbs", + "systems/shadowdark/templates/items/potion/details-tab.hbs", "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", diff --git a/system/templates/items/_partials/active-effects.hbs b/system/templates/items/_partials/active-effects.hbs index 07bdf306..0f4cd3d0 100644 --- a/system/templates/items/_partials/active-effects.hbs +++ b/system/templates/items/_partials/active-effects.hbs @@ -4,12 +4,12 @@

{{localize "SHADOWDARK.item.effect.pre-defined.title"}}

diff --git a/system/templates/items/_partials/choice-selector.hbs b/system/templates/items/_partials/choice-selector.hbs index 0b6d2c65..12e547c9 100644 --- a/system/templates/items/_partials/choice-selector.hbs +++ b/system/templates/items/_partials/choice-selector.hbs @@ -41,7 +41,7 @@ data-is-item="{{config.isItem}}" list="{{item._id}}_{{config.choicesKey}}_list" name="{{config.name}}" - placeholder="Type Here ..." + placeholder="{{localize "SHADOWDARK.dialog.type_here"}}" type="text" value="" /> diff --git a/system/templates/items/potion.hbs b/system/templates/items/potion.hbs new file mode 100644 index 00000000..ceeb553e --- /dev/null +++ b/system/templates/items/potion.hbs @@ -0,0 +1,28 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/potion/details-tab }} + {{> items/_partials/effects-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
diff --git a/system/templates/items/potion/details-tab.hbs b/system/templates/items/potion/details-tab.hbs new file mode 100644 index 00000000..af49619a --- /dev/null +++ b/system/templates/items/potion/details-tab.hbs @@ -0,0 +1,6 @@ +
+
+ {{> items/_partials/cost }} + {{> items/_partials/slots }} +
+
From ca49f7ad2ea115d7c4d23baaae4a7e75d96f47c0 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 02:52:55 +0100 Subject: [PATCH 054/182] migrate property sheet --- system/src/sheets/ItemSheetSD.mjs | 1 + system/src/templates.mjs | 2 +- system/templates/items/_partials/property.hbs | 11 --------- system/templates/items/property.hbs | 23 +++++++++++++++++++ .../templates/items/property/details-tab.hbs | 18 +++++++++++++++ 5 files changed, 43 insertions(+), 12 deletions(-) delete mode 100644 system/templates/items/_partials/property.hbs create mode 100644 system/templates/items/property.hbs create mode 100644 system/templates/items/property/details-tab.hbs diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 4c119560..998f52cc 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -46,6 +46,7 @@ export default class ItemSheetSD extends ItemSheet { "NPC Spell", "Patron", "Potion", + "Property", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 2b54aed6..8f84a751 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -37,7 +37,6 @@ export default function() { "systems/shadowdark/templates/items/_partials/item-category.hbs", "systems/shadowdark/templates/items/_partials/item-properties.hbs", "systems/shadowdark/templates/items/_partials/light-source.hbs", - "systems/shadowdark/templates/items/_partials/property.hbs", "systems/shadowdark/templates/items/_partials/slots.hbs", "systems/shadowdark/templates/items/_partials/source-tab.hbs", "systems/shadowdark/templates/items/_partials/spell.hbs", @@ -75,6 +74,7 @@ export default function() { "systems/shadowdark/templates/items/npc-spell/details-tab.hbs", "systems/shadowdark/templates/items/patron/details-tab.hbs", "systems/shadowdark/templates/items/potion/details-tab.hbs", + "systems/shadowdark/templates/items/property/details-tab.hbs", "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", diff --git a/system/templates/items/_partials/property.hbs b/system/templates/items/_partials/property.hbs deleted file mode 100644 index e4d54b2c..00000000 --- a/system/templates/items/_partials/property.hbs +++ /dev/null @@ -1,11 +0,0 @@ -
-

{{localize 'SHADOWDARK.property.type.title'}}

- -
diff --git a/system/templates/items/property.hbs b/system/templates/items/property.hbs new file mode 100644 index 00000000..a3b31a09 --- /dev/null +++ b/system/templates/items/property.hbs @@ -0,0 +1,23 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/property/details-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
diff --git a/system/templates/items/property/details-tab.hbs b/system/templates/items/property/details-tab.hbs new file mode 100644 index 00000000..a0ea7047 --- /dev/null +++ b/system/templates/items/property/details-tab.hbs @@ -0,0 +1,18 @@ +
+
+
+

+ {{localize 'SHADOWDARK.property.type.title'}} +

+ + +
+
+
From 1675a4575a3e02d07cd85096a35f430cf8fef3ae Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 02:58:25 +0100 Subject: [PATCH 055/182] migrate scroll sheet --- system/src/sheets/ItemSheetSD.mjs | 1 + system/src/templates.mjs | 1 + system/templates/items/scroll.hbs | 28 +++++++++++++++++++ system/templates/items/scroll/details-tab.hbs | 7 +++++ 4 files changed, 37 insertions(+) create mode 100644 system/templates/items/scroll.hbs create mode 100644 system/templates/items/scroll/details-tab.hbs diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 998f52cc..9f3e2c9f 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -47,6 +47,7 @@ export default class ItemSheetSD extends ItemSheet { "Patron", "Potion", "Property", + "Scroll", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 8f84a751..70c7704a 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -75,6 +75,7 @@ export default function() { "systems/shadowdark/templates/items/patron/details-tab.hbs", "systems/shadowdark/templates/items/potion/details-tab.hbs", "systems/shadowdark/templates/items/property/details-tab.hbs", + "systems/shadowdark/templates/items/scroll/details-tab.hbs", "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", diff --git a/system/templates/items/scroll.hbs b/system/templates/items/scroll.hbs new file mode 100644 index 00000000..6ddfdcd2 --- /dev/null +++ b/system/templates/items/scroll.hbs @@ -0,0 +1,28 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/scroll/details-tab }} + {{> items/_partials/effects-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
diff --git a/system/templates/items/scroll/details-tab.hbs b/system/templates/items/scroll/details-tab.hbs new file mode 100644 index 00000000..471d1b92 --- /dev/null +++ b/system/templates/items/scroll/details-tab.hbs @@ -0,0 +1,7 @@ +
+
+ {{> items/_partials/spell }} + {{> items/_partials/cost }} + {{> items/_partials/slots }} +
+
From e66e7162a05df37df6c63411c926ca13bf2ea64e Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 03:01:59 +0100 Subject: [PATCH 056/182] migrate spell sheet --- system/src/sheets/ItemSheetSD.mjs | 1 + system/src/templates.mjs | 1 + system/templates/items/spell.hbs | 23 ++++++++++++++++++++ system/templates/items/spell/details-tab.hbs | 5 +++++ 4 files changed, 30 insertions(+) create mode 100644 system/templates/items/spell.hbs create mode 100644 system/templates/items/spell/details-tab.hbs diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 9f3e2c9f..5bd788a9 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -48,6 +48,7 @@ export default class ItemSheetSD extends ItemSheet { "Potion", "Property", "Scroll", + "Spell", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 70c7704a..57b2a752 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -76,6 +76,7 @@ export default function() { "systems/shadowdark/templates/items/potion/details-tab.hbs", "systems/shadowdark/templates/items/property/details-tab.hbs", "systems/shadowdark/templates/items/scroll/details-tab.hbs", + "systems/shadowdark/templates/items/spell/details-tab.hbs", "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", diff --git a/system/templates/items/spell.hbs b/system/templates/items/spell.hbs new file mode 100644 index 00000000..92dcd0f8 --- /dev/null +++ b/system/templates/items/spell.hbs @@ -0,0 +1,23 @@ +
+ {{> items/_partials/header }} + + + +
+ {{> items/spell/details-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
+
diff --git a/system/templates/items/spell/details-tab.hbs b/system/templates/items/spell/details-tab.hbs new file mode 100644 index 00000000..449af73f --- /dev/null +++ b/system/templates/items/spell/details-tab.hbs @@ -0,0 +1,5 @@ +
+
+ {{> items/_partials/spell }} +
+
From 77639740ab6a52991f1f237f5b6f73d450568abf Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 11:57:34 +0100 Subject: [PATCH 057/182] migrate talent sheet and tweak effects tab partial --- scss/sheets/_item.scss | 1 - system/src/sheets/ItemSheetSD.mjs | 5 +- system/src/templates.mjs | 6 +- .../items/_partials/active-effects.hbs | 92 ------------------- .../items/_partials/description-tab.hbs | 7 +- .../templates/items/_partials/effects-tab.hbs | 5 +- .../items/_partials/effects/active-effect.hbs | 55 +++++++++++ .../_partials/effects/active-effects-list.hbs | 29 ++++++ .../_partials/effects/predefined-selector.hbs | 25 +++++ system/templates/items/_partials/talent.hbs | 19 ---- system/templates/items/tabs/details.hbs | 16 ---- system/templates/items/talent.hbs | 28 ++++++ system/templates/items/talent/details-tab.hbs | 23 +++++ 13 files changed, 171 insertions(+), 140 deletions(-) delete mode 100644 system/templates/items/_partials/active-effects.hbs create mode 100644 system/templates/items/_partials/effects/active-effect.hbs create mode 100644 system/templates/items/_partials/effects/active-effects-list.hbs create mode 100644 system/templates/items/_partials/effects/predefined-selector.hbs delete mode 100644 system/templates/items/_partials/talent.hbs create mode 100644 system/templates/items/talent.hbs create mode 100644 system/templates/items/talent/details-tab.hbs diff --git a/scss/sheets/_item.scss b/scss/sheets/_item.scss index df01b6f3..862b0099 100644 --- a/scss/sheets/_item.scss +++ b/scss/sheets/_item.scss @@ -4,7 +4,6 @@ display: grid; grid-template-columns: 2fr 1fr; gap: 4px 8px; - text-align: center; font-size: 12px; flex: 2; diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 5bd788a9..ac57770c 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -49,6 +49,7 @@ export default class ItemSheetSD extends ItemSheet { "Property", "Scroll", "Spell", + "Talent", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } @@ -345,10 +346,6 @@ export default class ItemSheetSD extends ItemSheet { const showTab = { details: [ - "Property", - "Scroll", - "Spell", - "Talent", "Wand", "Weapon", ].includes(item.type), diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 57b2a752..027826d5 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -27,12 +27,14 @@ export default function() { "systems/shadowdark/templates/actors/player/notes.hbs", "systems/shadowdark/templates/actors/player/spells.hbs", "systems/shadowdark/templates/actors/player/talents.hbs", - "systems/shadowdark/templates/items/_partials/active-effects.hbs", "systems/shadowdark/templates/items/_partials/choice-selector.hbs", "systems/shadowdark/templates/items/_partials/cost.hbs", "systems/shadowdark/templates/items/_partials/description-tab.hbs", "systems/shadowdark/templates/items/_partials/duration.hbs", "systems/shadowdark/templates/items/_partials/effects-tab.hbs", + "systems/shadowdark/templates/items/_partials/effects/active-effect.hbs", + "systems/shadowdark/templates/items/_partials/effects/active-effects-list.hbs", + "systems/shadowdark/templates/items/_partials/effects/predefined-selector.hbs", "systems/shadowdark/templates/items/_partials/header.hbs", "systems/shadowdark/templates/items/_partials/item-category.hbs", "systems/shadowdark/templates/items/_partials/item-properties.hbs", @@ -40,7 +42,6 @@ export default function() { "systems/shadowdark/templates/items/_partials/slots.hbs", "systems/shadowdark/templates/items/_partials/source-tab.hbs", "systems/shadowdark/templates/items/_partials/spell.hbs", - "systems/shadowdark/templates/items/_partials/talent.hbs", "systems/shadowdark/templates/items/_partials/weapon.hbs", "systems/shadowdark/templates/items/ancestry/_partials/character-generator.hbs", "systems/shadowdark/templates/items/ancestry/_partials/languages.hbs", @@ -79,6 +80,7 @@ export default function() { "systems/shadowdark/templates/items/spell/details-tab.hbs", "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", + "systems/shadowdark/templates/items/talent/details-tab.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", "systems/shadowdark/templates/partials/details/default.hbs", "systems/shadowdark/templates/partials/details/spell.hbs", diff --git a/system/templates/items/_partials/active-effects.hbs b/system/templates/items/_partials/active-effects.hbs deleted file mode 100644 index 0f4cd3d0..00000000 --- a/system/templates/items/_partials/active-effects.hbs +++ /dev/null @@ -1,92 +0,0 @@ -
- - -
-

{{localize "SHADOWDARK.item.effect.pre-defined.title"}}

- - - {{#each predefinedEffects}} - - {{/each}} - -
- -
{{localize "SHADOWDARK.sheet.item.tab.effects"}}
- -
    -
  1. - {{#if @root.effectsEditable}} - - {{/if}} -
    - {{localize "SHADOWDARK.item.effect.category.effect"}} -
    -
    - {{localize "SHADOWDARK.effect.header.changes"}} -
    -
    -
  2. - - {{#each effects as |effect|}} -
  3. - -
    - -
    {{#if (not effect.name)}}{{effect.label}}{{else}}{{effect.name}}{{/if}}
    - -
    - {{#each effect.changes as |change|}} - - {{fromConfig "EFFECT_TRANSLATIONS" change.key}} - - - {{/each}} -
    - -
    - {{#if @root.effectsEditable}} - - - - - - - - {{/if}} -
    - -
  4. - {{/each}} - -
-
- diff --git a/system/templates/items/_partials/description-tab.hbs b/system/templates/items/_partials/description-tab.hbs index dcf25845..571284d8 100644 --- a/system/templates/items/_partials/description-tab.hbs +++ b/system/templates/items/_partials/description-tab.hbs @@ -1,13 +1,12 @@
{{localize 'SHADOWDARK.item.description'}}
- {{editor - descriptionHTML - target="system.description" + {{editor descriptionHTML button=true + collaborate=false editable=editable engine="prosemirror" - collaborate=false + target="system.description" }}
diff --git a/system/templates/items/_partials/effects-tab.hbs b/system/templates/items/_partials/effects-tab.hbs index 3a4599bd..ec3a21f5 100644 --- a/system/templates/items/_partials/effects-tab.hbs +++ b/system/templates/items/_partials/effects-tab.hbs @@ -1,5 +1,6 @@
-
- {{> items/_partials/active-effects }} +
+ {{> items/_partials/effects/predefined-selector }} + {{> items/_partials/effects/active-effects-list }}
diff --git a/system/templates/items/_partials/effects/active-effect.hbs b/system/templates/items/_partials/effects/active-effect.hbs new file mode 100644 index 00000000..4a438d3c --- /dev/null +++ b/system/templates/items/_partials/effects/active-effect.hbs @@ -0,0 +1,55 @@ +
  • +
    + +
    + +
    + {{#unless effect.name}} + {{effect.label}} + {{else}} + {{effect.name}} + {{/unless}} +
    + +
    + {{#each effect.changes as |change|}} + + {{fromConfig "EFFECT_TRANSLATIONS" change.key}} + + + {{/each}} +
    + +
    + {{#if @root.effectsEditable}} + + + + {{/if}} +
    + +
  • diff --git a/system/templates/items/_partials/effects/active-effects-list.hbs b/system/templates/items/_partials/effects/active-effects-list.hbs new file mode 100644 index 00000000..66370878 --- /dev/null +++ b/system/templates/items/_partials/effects/active-effects-list.hbs @@ -0,0 +1,29 @@ +
    + {{localize "SHADOWDARK.sheet.item.tab.effects"}} +
    + +
      +
    1. + {{#if @root.effectsEditable}} + + {{/if}} +
      + {{localize "SHADOWDARK.item.effect.category.effect"}} +
      +
      + {{localize "SHADOWDARK.effect.header.changes"}} +
      +
      +
    2. + + {{#each effects as |effect|}} + {{> items/_partials/effects/active-effect + effect=effect + }} + {{/each}} +
    + diff --git a/system/templates/items/_partials/effects/predefined-selector.hbs b/system/templates/items/_partials/effects/predefined-selector.hbs new file mode 100644 index 00000000..59e9a78f --- /dev/null +++ b/system/templates/items/_partials/effects/predefined-selector.hbs @@ -0,0 +1,25 @@ +
    +

    + {{localize "SHADOWDARK.item.effect.pre-defined.title"}} +

    + +   + + + + + {{#each predefinedEffects}} + + {{/each}} + +
    diff --git a/system/templates/items/_partials/talent.hbs b/system/templates/items/_partials/talent.hbs deleted file mode 100644 index 35bd237c..00000000 --- a/system/templates/items/_partials/talent.hbs +++ /dev/null @@ -1,19 +0,0 @@ -
    -

    {{localize 'SHADOWDARK.item.talent_class'}}

    - - - {{#ifEq system.talentClass "level"}} -

    {{localize 'SHADOWDARK.item.level'}}

    - {{numberInput - item.system.level - name="system.level" - placeholder="0" - }} - {{/ifEq}} -
    diff --git a/system/templates/items/tabs/details.hbs b/system/templates/items/tabs/details.hbs index 341eadb6..1e775bc9 100644 --- a/system/templates/items/tabs/details.hbs +++ b/system/templates/items/tabs/details.hbs @@ -1,22 +1,6 @@
    - {{#ifEq item.type "Property"}} - {{> items/_partials/property }} - {{/ifEq}} - - {{#ifEq item.type "Scroll"}} - {{> items/_partials/spell }} - {{/ifEq}} - - {{#ifEq item.type "Spell"}} - {{> items/_partials/spell }} - {{/ifEq}} - - {{#ifEq item.type "Talent"}} - {{> items/_partials/talent }} - {{/ifEq}} - {{#ifEq item.type "Wand"}} {{> items/_partials/spell }} {{/ifEq}} diff --git a/system/templates/items/talent.hbs b/system/templates/items/talent.hbs new file mode 100644 index 00000000..dc7daadf --- /dev/null +++ b/system/templates/items/talent.hbs @@ -0,0 +1,28 @@ +
    + {{> items/_partials/header }} + + + +
    + {{> items/talent/details-tab }} + {{> items/_partials/effects-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
    +
    diff --git a/system/templates/items/talent/details-tab.hbs b/system/templates/items/talent/details-tab.hbs new file mode 100644 index 00000000..a3d780d7 --- /dev/null +++ b/system/templates/items/talent/details-tab.hbs @@ -0,0 +1,23 @@ +
    +
    +
    +

    {{localize 'SHADOWDARK.item.talent_class'}}

    + + + {{#ifEq system.talentClass "level"}} +

    {{localize 'SHADOWDARK.item.level'}}

    + {{numberInput + item.system.level + name="system.level" + placeholder="0" + }} + {{/ifEq}} +
    +
    +
    From b0ec1930ef29a6fd627ae301f67eebafca82d800 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 12:37:54 +0100 Subject: [PATCH 058/182] migrate wand sheet --- system/src/sheets/ItemSheetSD.mjs | 1 + system/src/templates.mjs | 1 + system/templates/items/armor.hbs | 9 +++++++ system/templates/items/basic.hbs | 9 +++++++ system/templates/items/tabs/details.hbs | 4 --- system/templates/items/wand.hbs | 28 +++++++++++++++++++++ system/templates/items/wand/details-tab.hbs | 7 ++++++ 7 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 system/templates/items/wand.hbs create mode 100644 system/templates/items/wand/details-tab.hbs diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index ac57770c..fd10b44f 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -50,6 +50,7 @@ export default class ItemSheetSD extends ItemSheet { "Scroll", "Spell", "Talent", + "Wand", ].includes(this.item.type)) { return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 027826d5..2ce0c296 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -81,6 +81,7 @@ export default function() { "systems/shadowdark/templates/items/tabs/details.hbs", "systems/shadowdark/templates/items/tabs/light.hbs", "systems/shadowdark/templates/items/talent/details-tab.hbs", + "systems/shadowdark/templates/items/wand/details-tab.hbs", "systems/shadowdark/templates/partials/details/armor.hbs", "systems/shadowdark/templates/partials/details/default.hbs", "systems/shadowdark/templates/partials/details/spell.hbs", diff --git a/system/templates/items/armor.hbs b/system/templates/items/armor.hbs index cbb9adad..b82a3fca 100644 --- a/system/templates/items/armor.hbs +++ b/system/templates/items/armor.hbs @@ -6,6 +6,12 @@ {{localize "SHADOWDARK.sheet.item.tab.details"}} + {{#if system.magicItem}} + + {{localize "SHADOWDARK.sheet.item.tab.effects"}} + + {{/if}} + {{localize "SHADOWDARK.sheet.item.tab.description"}} @@ -17,6 +23,9 @@
    {{> items/armor/details-tab }} + {{#if system.magicItem}} + {{> items/_partials/effects-tab }} + {{/if}} {{> items/_partials/description-tab }} {{> items/_partials/source-tab }}
    diff --git a/system/templates/items/basic.hbs b/system/templates/items/basic.hbs index 763cd3a7..507d4cf2 100644 --- a/system/templates/items/basic.hbs +++ b/system/templates/items/basic.hbs @@ -6,6 +6,12 @@ {{localize "SHADOWDARK.sheet.item.tab.details"}} + {{#if system.magicItem}} + + {{localize "SHADOWDARK.sheet.item.tab.effects"}} + + {{/if}} + {{localize "SHADOWDARK.sheet.item.tab.description"}} @@ -17,6 +23,9 @@
    {{> items/basic/details-tab }} + {{#if system.magicItem}} + {{> items/_partials/effects-tab }} + {{/if}} {{> items/_partials/description-tab }} {{> items/_partials/source-tab }}
    diff --git a/system/templates/items/tabs/details.hbs b/system/templates/items/tabs/details.hbs index 1e775bc9..7918fbbf 100644 --- a/system/templates/items/tabs/details.hbs +++ b/system/templates/items/tabs/details.hbs @@ -1,10 +1,6 @@
    - {{#ifEq item.type "Wand"}} - {{> items/_partials/spell }} - {{/ifEq}} - {{#ifEq item.type "Weapon"}} {{> items/_partials/weapon }} {{/ifEq}} diff --git a/system/templates/items/wand.hbs b/system/templates/items/wand.hbs new file mode 100644 index 00000000..7b57fa89 --- /dev/null +++ b/system/templates/items/wand.hbs @@ -0,0 +1,28 @@ +
    + {{> items/_partials/header }} + + + +
    + {{> items/wand/details-tab }} + {{> items/_partials/effects-tab }} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
    +
    diff --git a/system/templates/items/wand/details-tab.hbs b/system/templates/items/wand/details-tab.hbs new file mode 100644 index 00000000..471d1b92 --- /dev/null +++ b/system/templates/items/wand/details-tab.hbs @@ -0,0 +1,7 @@ +
    +
    + {{> items/_partials/spell }} + {{> items/_partials/cost }} + {{> items/_partials/slots }} +
    +
    From 24de490e5182ccd6515873d6c6579212ff475c86 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 19:17:39 +0100 Subject: [PATCH 059/182] closes #920 --- RELEASE_NOTES.md | 1 + system/templates/partials/details/armor.hbs | 26 +++++++++-- system/templates/partials/details/effect.hbs | 5 +- system/templates/partials/details/spell.hbs | 9 +++- system/templates/partials/details/weapon.hbs | 48 ++++++++++++++++---- 5 files changed, 72 insertions(+), 17 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index a5eb79ab..59e30ecd 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -3,6 +3,7 @@ ## Enhancements * [#657] Consume Ammunition When Attacking With Ranged Weapons if Required * [#901] Added Russian as a partially complete system language. +* [#920] Show tooltips on weapon and armor properties when showing expanded inline view in inventory ## Bugfixes * [#896] Add additional padding to blockquote style so text doesn't blend into decorations diff --git a/system/templates/partials/details/armor.hbs b/system/templates/partials/details/armor.hbs index f9ed64c2..236396ab 100644 --- a/system/templates/partials/details/armor.hbs +++ b/system/templates/partials/details/armor.hbs @@ -1,14 +1,29 @@

    - {{localize 'SHADOWDARK.item.armor_class'}} {{item.system.ac.base}}{{#if item.system.ac.modifier}}{{numberFormat item.system.ac.modifier decimals=0 sign=true}}{{/if}} + + {{localize 'SHADOWDARK.item.armor_class'}} + + + {{item.system.ac.base}}{{#if item.system.ac.modifier}}{{numberFormat item.system.ac.modifier decimals=0 sign=true}}{{/if}} +

    {{#if item.system.ac.attribute}} - {{localize 'SHADOWDARK.item.armor_bonus_attribute'}} {{fromConfig "ABILITIES_LONG" item.system.ac.attribute}} + + {{localize 'SHADOWDARK.item.armor_bonus_attribute'}} + + + {{fromConfig "ABILITIES_LONG" item.system.ac.attribute}} + {{/if}}

    {{#if item.system.baseArmor}} - {{localize 'SHADOWDARK.item.armor.base_armor.title'}} {{baseItemName}} + + {{localize 'SHADOWDARK.item.armor.base_armor.title'}} + + + {{baseItemName}} + {{/if}}

    @@ -17,7 +32,10 @@
    {{#each itemProperties}} - + {{this.name}} {{/each}} diff --git a/system/templates/partials/details/effect.hbs b/system/templates/partials/details/effect.hbs index 795be705..30e26a40 100644 --- a/system/templates/partials/details/effect.hbs +++ b/system/templates/partials/details/effect.hbs @@ -1,7 +1,10 @@ {{{description}}}
      -
    • +
    • {{item.system.category}}
    • diff --git a/system/templates/partials/details/spell.hbs b/system/templates/partials/details/spell.hbs index a5d92647..2e95abf2 100644 --- a/system/templates/partials/details/spell.hbs +++ b/system/templates/partials/details/spell.hbs @@ -1,5 +1,10 @@

      - {{localize "SHADOWDARK.item.spell_class"}} {{spellClasses}} + + {{localize "SHADOWDARK.item.spell_class"}} + + + {{spellClasses}} +

      {{{description}}} @@ -8,7 +13,7 @@
      • {{localize "SHADOWDARK.item.spell_tier"}} - {{ item.system.tier }} + {{item.system.tier}}
      • {{localize "SHADOWDARK.item.spell_duration"}}: diff --git a/system/templates/partials/details/weapon.hbs b/system/templates/partials/details/weapon.hbs index d01a22c5..cde16a39 100644 --- a/system/templates/partials/details/weapon.hbs +++ b/system/templates/partials/details/weapon.hbs @@ -1,24 +1,49 @@

        - {{localize 'SHADOWDARK.item.weapon_type'}} {{fromConfig "WEAPON_TYPES" item.system.type}} + + {{localize 'SHADOWDARK.item.weapon_type'}} + + + {{fromConfig "WEAPON_TYPES" item.system.type}} +

        - {{localize 'SHADOWDARK.item.weapon_range'}} {{fromConfig "RANGES" item.system.range}} + + {{localize 'SHADOWDARK.item.weapon_range'}} + + + {{fromConfig "RANGES" item.system.range}} +

        {{#if item.system.damage.oneHanded}}

        - {{localize 'SHADOWDARK.item.weapon_damage.oneHanded'}} {{fromConfig "WEAPON_BASE_DAMAGE" item.system.damage.oneHanded}} + + {{localize 'SHADOWDARK.item.weapon_damage.oneHanded'}} + + + {{fromConfig "WEAPON_BASE_DAMAGE" item.system.damage.oneHanded}} +

        {{/if}} {{#if item.system.damage.twoHanded}}

        - {{localize 'SHADOWDARK.item.weapon_damage.twoHanded'}} {{fromConfig "WEAPON_BASE_DAMAGE" item.system.damage.twoHanded}} + + {{localize 'SHADOWDARK.item.weapon_damage.twoHanded'}} + + + {{fromConfig "WEAPON_BASE_DAMAGE" item.system.damage.twoHanded}} + +

        +{{/if}} +{{#if item.system.baseWeapon}} +

        + + {{localize 'SHADOWDARK.item.weapon.base_weapon.title'}} + + + {{baseItemName}} +

        {{/if}} -

        - {{#if item.system.baseWeapon}} - {{localize 'SHADOWDARK.item.weapon.base_weapon.title'}} {{baseItemName}} - {{/if}} -

        {{{description}}}
        @@ -26,7 +51,10 @@
        {{#each itemProperties}} - + {{this.name}} {{/each}} From c3e96f9a134c52e31f750a1d27d9cb734528d03d Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 19:19:31 +0100 Subject: [PATCH 060/182] closes #917 --- i18n/en.yaml | 4 +- system/src/sheets/ItemSheetSD.mjs | 262 ++++++++---------- system/src/templates.mjs | 27 +- system/template.json | 74 ++++- system/templates/items/_partials/duration.hbs | 56 ++-- .../items/_partials/effects/active-effect.hbs | 41 ++- .../_partials/effects/active-effects-list.hbs | 14 +- .../_partials/effects/predefined-selector.hbs | 3 - .../items/_partials/item-category.hbs | 10 - .../items/_partials/item-properties.hbs | 61 ---- .../_partials/item-properties/ammunition.hbs | 8 + .../_partials/item-properties/equipped.hbs | 12 + .../item-properties/light-source.hbs | 8 + .../_partials/item-properties/magic-item.hbs | 8 + .../_partials/item-properties/treasure.hbs | 8 + .../items/_partials/light-source.hbs | 29 -- system/templates/items/_partials/spell.hbs | 34 +-- system/templates/items/_partials/weapon.hbs | 97 ------- .../{properties.hbs => armor-properties.hbs} | 2 +- .../items/armor/_partials/item-properties.hbs | 9 + system/templates/items/armor/details-tab.hbs | 4 +- system/templates/items/basic.hbs | 9 + .../items/basic/_partials/item-properties.hbs | 11 + .../items/basic/_partials/light-template.hbs | 12 + .../items/basic/_partials/light-timer.hbs | 21 ++ system/templates/items/basic/details-tab.hbs | 2 +- system/templates/items/basic/light-tab.hbs | 6 + system/templates/items/class.hbs | 8 +- system/templates/items/class/titles-tab.hbs | 28 +- system/templates/items/item.hbs | 42 --- system/templates/items/potion.hbs | 5 - system/templates/items/scroll.hbs | 5 - system/templates/items/tabs/details.hbs | 24 -- system/templates/items/tabs/light.hbs | 5 - system/templates/items/weapon.hbs | 32 +++ .../weapon/_partials/item-properties.hbs | 9 + .../weapon/_partials/weapon-properties.hbs | 29 ++ .../items/weapon/_partials/weapon.hbs | 76 +++++ system/templates/items/weapon/details-tab.hbs | 11 + system/templates/ui/sd-box.hbs | 8 +- 40 files changed, 587 insertions(+), 527 deletions(-) delete mode 100644 system/templates/items/_partials/item-category.hbs delete mode 100644 system/templates/items/_partials/item-properties.hbs create mode 100644 system/templates/items/_partials/item-properties/ammunition.hbs create mode 100644 system/templates/items/_partials/item-properties/equipped.hbs create mode 100644 system/templates/items/_partials/item-properties/light-source.hbs create mode 100644 system/templates/items/_partials/item-properties/magic-item.hbs create mode 100644 system/templates/items/_partials/item-properties/treasure.hbs delete mode 100644 system/templates/items/_partials/light-source.hbs delete mode 100644 system/templates/items/_partials/weapon.hbs rename system/templates/items/armor/_partials/{properties.hbs => armor-properties.hbs} (88%) create mode 100644 system/templates/items/armor/_partials/item-properties.hbs create mode 100644 system/templates/items/basic/_partials/item-properties.hbs create mode 100644 system/templates/items/basic/_partials/light-template.hbs create mode 100644 system/templates/items/basic/_partials/light-timer.hbs create mode 100644 system/templates/items/basic/light-tab.hbs delete mode 100644 system/templates/items/item.hbs delete mode 100644 system/templates/items/tabs/details.hbs delete mode 100644 system/templates/items/tabs/light.hbs create mode 100644 system/templates/items/weapon.hbs create mode 100644 system/templates/items/weapon/_partials/item-properties.hbs create mode 100644 system/templates/items/weapon/_partials/weapon-properties.hbs create mode 100644 system/templates/items/weapon/_partials/weapon.hbs create mode 100644 system/templates/items/weapon/details-tab.hbs diff --git a/i18n/en.yaml b/i18n/en.yaml index 4741b95d..d3ecd870 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -387,6 +387,7 @@ SHADOWDARK.item.armor_ac_modifier: Modifier SHADOWDARK.item.armor_ac: AC SHADOWDARK.item.armor_bonus_attribute: Bonus Attribute SHADOWDARK.item.armor_class: Armor Class +SHADOWDARK.item.armor.armor_properties.label: Armor Properties SHADOWDARK.item.armor.base_armor.chainmail: Chainmail SHADOWDARK.item.armor.base_armor.leather_armor: Leather Armor SHADOWDARK.item.armor.base_armor.plate_mail: Plate Mail @@ -480,7 +481,7 @@ SHADOWDARK.item.npc_attack_special: Attack Features SHADOWDARK.item.npc_attack_type: Type SHADOWDARK.item.npc_attack.num_damage_dice: Num. Damage Dice SHADOWDARK.item.potion.label: Potion -SHADOWDARK.item.properties: Properties +SHADOWDARK.item.properties.label: Item Properties SHADOWDARK.item.scroll.label: Scroll SHADOWDARK.item.source_tag: Source Tag SHADOWDARK.item.source: Source @@ -521,6 +522,7 @@ SHADOWDARK.item.weapon.base_weapon.staff: Staff SHADOWDARK.item.weapon.base_weapon.title: Base Weapon SHADOWDARK.item.weapon.base_weapon.wand: Wand SHADOWDARK.item.weapon.base_weapon.warhammer: Warhammer +SHADOWDARK.item.weapon.weapon_properties.label: Weapon Properties SHADOWDARK.language_choices.common.label: Additional Common SHADOWDARK.language_choices.rare.label: Additional Rare SHADOWDARK.language.celestial: Celestial diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index fd10b44f..e57be80e 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -28,35 +28,7 @@ export default class ItemSheetSD extends ItemSheet { /** @inheritdoc */ get template() { - if ([ - "Ancestry", - "Armor", - "Background", - "Basic", - "Boon", - "Class", - "Class Ability", - "Deity", - "Effect", - "Gem", - "Language", - "NPC Attack", - "NPC Feature", - "NPC Special Attack", - "NPC Spell", - "Patron", - "Potion", - "Property", - "Scroll", - "Spell", - "Talent", - "Wand", - ].includes(this.item.type)) { - return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; - } - else { - return "systems/shadowdark/templates/items/item.hbs"; - } + return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } /** @inheritdoc */ @@ -301,6 +273,18 @@ export default class ItemSheetSD extends ItemSheet { }; } + async getSources(context) { + context.sources = await shadowdark.compendiums.sources(); + + const itemSource = context.sources.find( + s => s.uuid === context.item.system.source.title + ); + + context.sourceLoaded = itemSource || context.item.system.source.title === "" + ? true + : false; + } + async getSpellSelectorConfigs(context) { const [selectedClasses, availableClasses] = await shadowdark.utils.getDedupedSelectedItems( @@ -319,6 +303,7 @@ export default class ItemSheetSD extends ItemSheet { }; } + /** @override */ async getData(options) { let loadingDialog; @@ -330,113 +315,72 @@ export default class ItemSheetSD extends ItemSheet { const context = await super.getData(options); - const item = context.item; - - context.sources = await shadowdark.compendiums.sources(); - const itemSource = context.sources.find( - s => s.uuid === item.system.source.title - ); - context.sourceLoaded = itemSource || item.system.source.title === "" - ? true - : false; - - let spellsKnown = false; - if (item.type === "Class" && item.system.spellcasting.class !== "__not_spellcaster__") { - spellsKnown = true; - } - - const showTab = { - details: [ - "Wand", - "Weapon", - ].includes(item.type), - - effects: ( - ["Talent"].includes(item.type) - || item.system.magicItem - ) ? true : false, - light: item.system.light?.isSource ?? false, - description: true, - spellsKnown, - }; + await this.getSources(context); foundry.utils.mergeObject(context, { config: CONFIG.SHADOWDARK, - effectsEditable: ( - item.parent === null - || game.version.split(".")[0] > 10 - ), - hasCost: item.system.cost !== undefined, - itemType: game.i18n.localize(`SHADOWDARK.item.type.${item.type}`), - showMagicItemCheckbox: item.system.isPhysical && !["Gem", "Potion", "Scroll", "Wand"].includes(item.type), - system: item.system, - showTab, editable: this.isEditable, - usesSlots: item.system.slots !== undefined, + itemType: game.i18n.localize(`SHADOWDARK.item.type.${context.item.type}`), + predefinedEffects: await this._getPredefinedEffectsList(), + system: context.item.system, }); + context.descriptionHTML = await TextEditor.enrichHTML( + context.system.description, + { + secrets: context.item.isOwner, + async: true, + relativeTo: this.item, + } + ); - if (["Ancestry"].includes(item.type)) { - await this.getAncestrySelectorConfigs(context); - } - - if (item.type === "Class") { - await this.getClassSelectorConfigs(context); + // Call any type-specific methods for this item type to gather + // additional data for the sheet + // + const itemTypeSafeName = context.item.type.replace(/\s/g, ""); + const itemTypeFunctionName = `getSheetDataFor${itemTypeSafeName}Item`; - // initialize spellsknown table if not already set on a spellcaster class item - if (spellsKnown && !item.system.spellcasting.spellsknown) { - item.system.spellcasting.spellsknown = {}; - for (let i = 1; i <= 10; i++) { - item.system.spellcasting.spellsknown[i] = {}; - for (let j = 1; j <= 5; j++) { - item.system.spellcasting.spellsknown[i][j] = null; - } - } - } + if (typeof this[itemTypeFunctionName] === "function") { + shadowdark.debug(`Calling Item type-specific method ${itemTypeFunctionName}()`); + await this[itemTypeFunctionName](context); } - if (item.type === "Patron") { - const patronBoonTables = - await shadowdark.compendiums.patronBoonTables(); + if (loadingDialog) loadingDialog.close({force: true}); - context.patronBoonTables = {}; - for (const patronBoonTable of patronBoonTables) { + return context; + } - context.patronBoonTables[patronBoonTable.uuid] = - patronBoonTable.name.replace(/^Patron\s+Boons:\s/, ""); - } - } - if (["Scroll", "Spell", "Wand"].includes(item.type)) { - await this.getSpellSelectorConfigs(context); - } + // ------------------------------------------------------------------------ + // Type-specific methods are used to gather any additional data necessary + // for rendering the item sheet. + // + // These methods are called using reflection from the main getData() method + // and should be named as follows: + // + // getSheetDataFor{item_type_with_no_spaces}Item + // ------------------------------------------------------------------------ - if (["Armor", "Weapon"].includes(item.type)) { - context.propertyItems = await item.propertyItems(); + async getSheetDataForAncestryItem(context) { + await this.getAncestrySelectorConfigs(context); + } - const mySlug = item.name.slugify(); + async getSheetDataForArmorItem(context) { + context.propertyItems = await context.item.propertyItems(); - if (item.type === "Armor") { - context.baseArmor = await shadowdark.utils.getSlugifiedItemList( - await shadowdark.compendiums.baseArmor() - ); + const mySlug = context.item.name.slugify(); - delete context.baseArmor[mySlug]; - } - if (item.type === "Weapon") { - context.ammunition = await shadowdark.utils.getSlugifiedItemList( - await shadowdark.compendiums.ammunition() - ); + context.baseArmor = await shadowdark.utils.getSlugifiedItemList( + await shadowdark.compendiums.baseArmor() + ); - context.baseWeapons = await shadowdark.utils.getSlugifiedItemList( - await shadowdark.compendiums.baseWeapons() - ); + delete context.baseArmor[mySlug]; + } - delete context.baseWeapons[mySlug]; - } - } + async getSheetDataForBasicItem(context) { + const item = context.item; - if (item.type === "Basic" && item.system.light.isSource) { + if (item.system.light.isSource) { if (!item.system.light.hasBeenUsed) { // Unused light sources should always have their remaining time // at maximum @@ -455,40 +399,80 @@ export default class ItemSheetSD extends ItemSheet { ); } } + } - if (context.showMagicItemCheckbox || item.system.canBeEquipped - || item.type === "Basic" || item.type === "Effect") { - context.showItemProperties=true; - } + async getSheetDataForClassItem(context) { + await this.getClassSelectorConfigs(context); + context.spellsKnown = + context.item.system.spellcasting.class !== "__not_spellcaster__"; + } - if (item.type === "NPC Attack" || item.type === "NPC Special Attack") { - context.npcAttackRangesDisplay = item.npcAttackRangesDisplay(); - } + async getSheetDataForEffectItem(context) { + context.variableDuration = CONFIG.SHADOWDARK.VARIABLE_DURATIONS + .includes(context.item.system.duration.type); + } - if (["Effect", "Potion", "Scroll", "Spell", "NPC Spell", "Wand"].includes(item.type)) { - context.variableDuration = CONFIG.SHADOWDARK.VARIABLE_DURATIONS - .includes(item.system.duration.type); + async getSheetDataForNPCAttackItem(context) { + context.npcAttackRangesDisplay = context.item.npcAttackRangesDisplay(); + } - } + async getSheetDataForNPCSpecialAttackItem(context) { + context.npcAttackRangesDisplay = context.item.npcAttackRangesDisplay(); + } + + async getSheetDataForNPCSpellItem(context) { + context.variableDuration = CONFIG.SHADOWDARK.VARIABLE_DURATIONS + .includes(context.item.system.duration.type); + } + + async getSheetDataForPatronItem(context) { + const patronBoonTables = + await shadowdark.compendiums.patronBoonTables(); + + context.patronBoonTables = {}; - if (context.showTab.effects) { - context.predefinedEffects = await this._getPredefinedEffectsList(); - context.effects = item.effects; + for (const patronBoonTable of patronBoonTables) { + context.patronBoonTables[patronBoonTable.uuid] = + patronBoonTable.name.replace(/^Patron\s+Boons:\s/, ""); } + } - context.descriptionHTML = await TextEditor.enrichHTML( - context.system.description, - { - secrets: context.item.isOwner, - async: true, - relativeTo: this.item, - } + async getSheetDataForScrollItem(context) { + await this.getSpellSelectorConfigs(context); + + context.variableDuration = CONFIG.SHADOWDARK.VARIABLE_DURATIONS + .includes(context.item.system.duration.type); + } + + async getSheetDataForSpellItem(context) { + await this.getSpellSelectorConfigs(context); + + context.variableDuration = CONFIG.SHADOWDARK.VARIABLE_DURATIONS + .includes(context.item.system.duration.type); + } + + async getSheetDataForWandItem(context) { + await this.getSpellSelectorConfigs(context); + + context.variableDuration = CONFIG.SHADOWDARK.VARIABLE_DURATIONS + .includes(context.item.system.duration.type); + } + + async getSheetDataForWeaponItem(context) { + context.propertyItems = await context.item.propertyItems(); + + const mySlug = context.item.name.slugify(); + + context.ammunition = await shadowdark.utils.getSlugifiedItemList( + await shadowdark.compendiums.ammunition() ); - if (loadingDialog) loadingDialog.close({force: true}); + context.baseWeapons = await shadowdark.utils.getSlugifiedItemList( + await shadowdark.compendiums.baseWeapons() + ); - return context; + delete context.baseWeapons[mySlug]; } /* -------------------------------------------- */ diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 2ce0c296..b092bd9c 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -36,21 +36,27 @@ export default function() { "systems/shadowdark/templates/items/_partials/effects/active-effects-list.hbs", "systems/shadowdark/templates/items/_partials/effects/predefined-selector.hbs", "systems/shadowdark/templates/items/_partials/header.hbs", - "systems/shadowdark/templates/items/_partials/item-category.hbs", - "systems/shadowdark/templates/items/_partials/item-properties.hbs", - "systems/shadowdark/templates/items/_partials/light-source.hbs", + "systems/shadowdark/templates/items/_partials/item-properties/ammunition.hbs", + "systems/shadowdark/templates/items/_partials/item-properties/equipped.hbs", + "systems/shadowdark/templates/items/_partials/item-properties/light-source.hbs", + "systems/shadowdark/templates/items/_partials/item-properties/magic-item.hbs", + "systems/shadowdark/templates/items/_partials/item-properties/treasure.hbs", "systems/shadowdark/templates/items/_partials/slots.hbs", "systems/shadowdark/templates/items/_partials/source-tab.hbs", "systems/shadowdark/templates/items/_partials/spell.hbs", - "systems/shadowdark/templates/items/_partials/weapon.hbs", "systems/shadowdark/templates/items/ancestry/_partials/character-generator.hbs", "systems/shadowdark/templates/items/ancestry/_partials/languages.hbs", "systems/shadowdark/templates/items/ancestry/_partials/talents.hbs", "systems/shadowdark/templates/items/ancestry/details-tab.hbs", + "systems/shadowdark/templates/items/armor/_partials/armor-properties.hbs", "systems/shadowdark/templates/items/armor/_partials/armor.hbs", - "systems/shadowdark/templates/items/armor/_partials/properties.hbs", + "systems/shadowdark/templates/items/armor/_partials/item-properties.hbs", "systems/shadowdark/templates/items/armor/details-tab.hbs", + "systems/shadowdark/templates/items/basic/_partials/item-properties.hbs", + "systems/shadowdark/templates/items/basic/_partials/light-template.hbs", + "systems/shadowdark/templates/items/basic/_partials/light-timer.hbs", "systems/shadowdark/templates/items/basic/details-tab.hbs", + "systems/shadowdark/templates/items/basic/light-tab.hbs", "systems/shadowdark/templates/items/boon/details-tab.hbs", "systems/shadowdark/templates/items/class-ability/_partials/ability-check.hbs", "systems/shadowdark/templates/items/class-ability/_partials/ability-group.hbs", @@ -78,15 +84,12 @@ export default function() { "systems/shadowdark/templates/items/property/details-tab.hbs", "systems/shadowdark/templates/items/scroll/details-tab.hbs", "systems/shadowdark/templates/items/spell/details-tab.hbs", - "systems/shadowdark/templates/items/tabs/details.hbs", - "systems/shadowdark/templates/items/tabs/light.hbs", "systems/shadowdark/templates/items/talent/details-tab.hbs", "systems/shadowdark/templates/items/wand/details-tab.hbs", - "systems/shadowdark/templates/partials/details/armor.hbs", - "systems/shadowdark/templates/partials/details/default.hbs", - "systems/shadowdark/templates/partials/details/spell.hbs", - "systems/shadowdark/templates/partials/details/weapon.hbs", - "systems/shadowdark/templates/partials/weapon-attack.hbs", + "systems/shadowdark/templates/items/weapon/_partials/item-properties.hbs", + "systems/shadowdark/templates/items/weapon/_partials/weapon-properties.hbs", + "systems/shadowdark/templates/items/weapon/_partials/weapon.hbs", + "systems/shadowdark/templates/items/weapon/details-tab.hbs", "systems/shadowdark/templates/ui/sd-box.hbs", ]; diff --git a/system/template.json b/system/template.json index 625e2ae9..f8f10145 100644 --- a/system/template.json +++ b/system/template.json @@ -281,7 +281,79 @@ "spellcasting": { "ability": "", "baseDifficulty": 10, - "class": "__not_spellcaster__" + "class": "__not_spellcaster__", + "spellsknown": { + "1": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "2": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "3": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "4": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "5": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "6": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "7": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "8": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "9": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "10": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + } + } }, "talents": [], "talentChoices": [], diff --git a/system/templates/items/_partials/duration.hbs b/system/templates/items/_partials/duration.hbs index edbdf2ed..8c667b9f 100644 --- a/system/templates/items/_partials/duration.hbs +++ b/system/templates/items/_partials/duration.hbs @@ -1,30 +1,30 @@
        - {{#if variableDuration}} - - {{else}} - - {{/if}} - + {{#if variableDuration}} + + {{else}} + + {{/if}} +
        diff --git a/system/templates/items/_partials/effects/active-effect.hbs b/system/templates/items/_partials/effects/active-effect.hbs index 4a438d3c..b39b2c85 100644 --- a/system/templates/items/_partials/effects/active-effect.hbs +++ b/system/templates/items/_partials/effects/active-effect.hbs @@ -22,34 +22,29 @@ placeholder="0" type="text" value="{{change.value}}" - {{#unless @root.effectsEditable}} - disabled - {{/unless}} > {{/each}}
        - {{#if @root.effectsEditable}} - - - - {{/if}} + + +
      • diff --git a/system/templates/items/_partials/effects/active-effects-list.hbs b/system/templates/items/_partials/effects/active-effects-list.hbs index 66370878..99f19759 100644 --- a/system/templates/items/_partials/effects/active-effects-list.hbs +++ b/system/templates/items/_partials/effects/active-effects-list.hbs @@ -4,13 +4,11 @@
        1. - {{#if @root.effectsEditable}} - - {{/if}} +
          {{localize "SHADOWDARK.item.effect.category.effect"}}
          @@ -20,7 +18,7 @@
        2. - {{#each effects as |effect|}} + {{#each item.effects as |effect|}} {{> items/_partials/effects/active-effect effect=effect }} diff --git a/system/templates/items/_partials/effects/predefined-selector.hbs b/system/templates/items/_partials/effects/predefined-selector.hbs index 59e9a78f..dbf6cacc 100644 --- a/system/templates/items/_partials/effects/predefined-selector.hbs +++ b/system/templates/items/_partials/effects/predefined-selector.hbs @@ -12,9 +12,6 @@ style="width:auto" type="text" value="" - {{#unless @root.effectsEditable}} - disabled - {{/unless}} /> diff --git a/system/templates/items/_partials/item-category.hbs b/system/templates/items/_partials/item-category.hbs deleted file mode 100644 index ab05b110..00000000 --- a/system/templates/items/_partials/item-category.hbs +++ /dev/null @@ -1,10 +0,0 @@ -
          - -
          \ No newline at end of file diff --git a/system/templates/items/_partials/item-properties.hbs b/system/templates/items/_partials/item-properties.hbs deleted file mode 100644 index 6a0b9c81..00000000 --- a/system/templates/items/_partials/item-properties.hbs +++ /dev/null @@ -1,61 +0,0 @@ -{{#> ui/sd-box - header-label="Item Properties" - header-class="light" -}} -
          - {{#if item.system.canBeEquipped}} - {{#if item.isOwned}} -

          - {{localize 'SHADOWDARK.item.equipped'}} -

          - - {{/if}} - {{/if}} - - {{#ifEq item.type "Basic"}} -

          - {{localize 'SHADOWDARK.item.ammunition'}} -

          - - -

          - {{localize 'SHADOWDARK.item.light.is_source'}} -

          - - {{/ifEq}} - - {{#if showMagicItemCheckbox}} -

          - {{localize "SHADOWDARK.item.magic_item.is_magic"}} -

          - - {{/if}} - - {{#ifEq item.type "Basic"}} -

          - {{localize 'SHADOWDARK.item.treasure'}} -

          - - {{/ifEq}} -
          -{{/ui/sd-box}} diff --git a/system/templates/items/_partials/item-properties/ammunition.hbs b/system/templates/items/_partials/item-properties/ammunition.hbs new file mode 100644 index 00000000..d78d9e46 --- /dev/null +++ b/system/templates/items/_partials/item-properties/ammunition.hbs @@ -0,0 +1,8 @@ +

          + {{localize 'SHADOWDARK.item.ammunition'}} +

          + diff --git a/system/templates/items/_partials/item-properties/equipped.hbs b/system/templates/items/_partials/item-properties/equipped.hbs new file mode 100644 index 00000000..3cb28f8a --- /dev/null +++ b/system/templates/items/_partials/item-properties/equipped.hbs @@ -0,0 +1,12 @@ +{{#if item.system.canBeEquipped}} + {{#if item.isOwned}} +

          + {{localize 'SHADOWDARK.item.equipped'}} +

          + + {{/if}} +{{/if}} diff --git a/system/templates/items/_partials/item-properties/light-source.hbs b/system/templates/items/_partials/item-properties/light-source.hbs new file mode 100644 index 00000000..79f30a48 --- /dev/null +++ b/system/templates/items/_partials/item-properties/light-source.hbs @@ -0,0 +1,8 @@ +

          + {{localize 'SHADOWDARK.item.light.is_source'}} +

          + diff --git a/system/templates/items/_partials/item-properties/magic-item.hbs b/system/templates/items/_partials/item-properties/magic-item.hbs new file mode 100644 index 00000000..15e62a77 --- /dev/null +++ b/system/templates/items/_partials/item-properties/magic-item.hbs @@ -0,0 +1,8 @@ +

          + {{localize "SHADOWDARK.item.magic_item.is_magic"}} +

          + diff --git a/system/templates/items/_partials/item-properties/treasure.hbs b/system/templates/items/_partials/item-properties/treasure.hbs new file mode 100644 index 00000000..7c1481a7 --- /dev/null +++ b/system/templates/items/_partials/item-properties/treasure.hbs @@ -0,0 +1,8 @@ +

          + {{localize "SHADOWDARK.item.treasure"}} +

          + diff --git a/system/templates/items/_partials/light-source.hbs b/system/templates/items/_partials/light-source.hbs deleted file mode 100644 index 863ecc15..00000000 --- a/system/templates/items/_partials/light-source.hbs +++ /dev/null @@ -1,29 +0,0 @@ -{{#if item.system.light.isSource}} -
          - - - - -
          -
          - - -
          -{{/if}} diff --git a/system/templates/items/_partials/spell.hbs b/system/templates/items/_partials/spell.hbs index 5ebb6ac1..37a2bdfc 100644 --- a/system/templates/items/_partials/spell.hbs +++ b/system/templates/items/_partials/spell.hbs @@ -25,24 +25,24 @@ placeholder="0" }} -

          {{localize 'SHADOWDARK.item.spell_range'}}

          - - -

          {{localize "SHADOWDARK.item.spell_duration"}}

          - {{> items/_partials/duration - base="system.duration" - duration=system.duration - type="spell" - choices=config.SPELL_DURATIONS - variableDuration=variableDuration +

          {{localize 'SHADOWDARK.item.spell_range'}}

          + + +

          {{localize "SHADOWDARK.item.spell_duration"}}

          + {{> items/_partials/duration + base="system.duration" + duration=system.duration + type="spell" + choices=config.SPELL_DURATIONS + variableDuration=variableDuration + }} {{/ui/sd-box}} {{#> ui/sd-box diff --git a/system/templates/items/_partials/weapon.hbs b/system/templates/items/_partials/weapon.hbs deleted file mode 100644 index dfc95a0c..00000000 --- a/system/templates/items/_partials/weapon.hbs +++ /dev/null @@ -1,97 +0,0 @@ -
          - {{#> ui/sd-box - header-label=(localize 'SHADOWDARK.item_type.weapon') - header-class="light" - content-class="item-grid" - }} - -

          {{localize 'SHADOWDARK.item.weapon.base_weapon.title'}}

          - - -

          {{localize 'SHADOWDARK.item.weapon_type'}}

          - - -

          {{localize 'SHADOWDARK.item.weapon_range'}}

          - - -

          {{localize 'SHADOWDARK.item.ammunition'}}

          - - -

          {{localize 'SHADOWDARK.item.weapon_damage.oneHanded'}}

          - - -

          {{localize 'SHADOWDARK.item.weapon_damage.twoHanded'}}

          - - - {{/ui/sd-box}} - - -
          -
          - - - - - - -
          -
          -
            - {{#each propertyItems}} -
          • - {{this.name}} -
          • - {{/each}} -
          -
          -
          - -
          diff --git a/system/templates/items/armor/_partials/properties.hbs b/system/templates/items/armor/_partials/armor-properties.hbs similarity index 88% rename from system/templates/items/armor/_partials/properties.hbs rename to system/templates/items/armor/_partials/armor-properties.hbs index 1907b5f0..28b39311 100644 --- a/system/templates/items/armor/_partials/properties.hbs +++ b/system/templates/items/armor/_partials/armor-properties.hbs @@ -1,7 +1,7 @@
    diff --git a/system/templates/items/basic.hbs b/system/templates/items/basic.hbs index 507d4cf2..117f83ea 100644 --- a/system/templates/items/basic.hbs +++ b/system/templates/items/basic.hbs @@ -12,6 +12,12 @@ {{/if}} + {{#if system.light.isSource}} + + {{localize "SHADOWDARK.sheet.item.tab.light"}} + + {{/if}} + {{localize "SHADOWDARK.sheet.item.tab.description"}} @@ -26,6 +32,9 @@ {{#if system.magicItem}} {{> items/_partials/effects-tab }} {{/if}} + {{#if system.light.isSource}} + {{> items/basic/light-tab }} + {{/if}} {{> items/_partials/description-tab }} {{> items/_partials/source-tab }}
    diff --git a/system/templates/items/basic/_partials/item-properties.hbs b/system/templates/items/basic/_partials/item-properties.hbs new file mode 100644 index 00000000..ad6bea33 --- /dev/null +++ b/system/templates/items/basic/_partials/item-properties.hbs @@ -0,0 +1,11 @@ +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.item.properties.label") + header-class="light" +}} +
    + {{> items/_partials/item-properties/ammunition }} + {{> items/_partials/item-properties/light-source }} + {{> items/_partials/item-properties/magic-item }} + {{> items/_partials/item-properties/treasure }} +
    +{{/ui/sd-box}} diff --git a/system/templates/items/basic/_partials/light-template.hbs b/system/templates/items/basic/_partials/light-template.hbs new file mode 100644 index 00000000..9271b9df --- /dev/null +++ b/system/templates/items/basic/_partials/light-template.hbs @@ -0,0 +1,12 @@ +
    +

    + {{localize 'SHADOWDARK.item.light.template'}} +

    + +
    diff --git a/system/templates/items/basic/_partials/light-timer.hbs b/system/templates/items/basic/_partials/light-timer.hbs new file mode 100644 index 00000000..2ea41cd8 --- /dev/null +++ b/system/templates/items/basic/_partials/light-timer.hbs @@ -0,0 +1,21 @@ +
    +

    + {{localize 'SHADOWDARK.item.light.longevity'}} +

    + +

    + {{localize 'SHADOWDARK.item.light.remaining'}} +

    + +
    diff --git a/system/templates/items/basic/details-tab.hbs b/system/templates/items/basic/details-tab.hbs index 97092b3f..44baa8c0 100644 --- a/system/templates/items/basic/details-tab.hbs +++ b/system/templates/items/basic/details-tab.hbs @@ -2,6 +2,6 @@
    {{> items/_partials/cost }} {{> items/_partials/slots }} - {{> items/_partials/item-properties }} + {{> items/basic/_partials/item-properties }}
    diff --git a/system/templates/items/basic/light-tab.hbs b/system/templates/items/basic/light-tab.hbs new file mode 100644 index 00000000..150ca0fe --- /dev/null +++ b/system/templates/items/basic/light-tab.hbs @@ -0,0 +1,6 @@ +
    +
    + {{> items/basic/_partials/light-timer }} + {{> items/basic/_partials/light-template }} +
    +
    diff --git a/system/templates/items/class.hbs b/system/templates/items/class.hbs index 79dc715c..79704259 100644 --- a/system/templates/items/class.hbs +++ b/system/templates/items/class.hbs @@ -10,11 +10,11 @@ {{localize "SHADOWDARK.sheet.item.tab.titles"}} - {{#ifCond system.spellcasting.class "!==" "__not_spellcaster__"}} + {{#if spellsKnown}} {{localize "SHADOWDARK.sheet.item.tab.spellsknown"}} - {{/ifCond}} + {{/if}} {{localize "SHADOWDARK.sheet.item.tab.description"}} @@ -28,7 +28,9 @@
    {{> items/class/details-tab }} {{> items/class/titles-tab }} - {{> items/class/spells-known-tab }} + {{#if spellsKnown}} + {{> items/class/spells-known-tab }} + {{/if}} {{> items/_partials/description-tab }} {{> items/_partials/source-tab }}
    diff --git a/system/templates/items/class/titles-tab.hbs b/system/templates/items/class/titles-tab.hbs index e3e9aa6a..4ea31d5c 100644 --- a/system/templates/items/class/titles-tab.hbs +++ b/system/templates/items/class/titles-tab.hbs @@ -1,17 +1,29 @@
    +
    + {{localize "SHADOWDARK.sheet.item.tab.titles"}} +
    -
    {{localize "SHADOWDARK.sheet.item.tab.titles"}}
    - - - - - + + + + + {{#each item.system.titles}} - -
    {{localize 'SHADOWDARK.class.titles.levels.label'}}{{localize 'SHADOWDARK.alignment.lawful'}}{{localize 'SHADOWDARK.alignment.chaotic'}}{{localize 'SHADOWDARK.alignment.neutral'}}  + {{localize 'SHADOWDARK.class.titles.levels.label'}} + + {{localize 'SHADOWDARK.alignment.lawful'}} + + {{localize 'SHADOWDARK.alignment.chaotic'}} + + {{localize 'SHADOWDARK.alignment.neutral'}} + +   +
    + {{numberInput this.from name="title.from" @@ -19,7 +31,7 @@ }} - + {{numberInput this.to name="title.to" diff --git a/system/templates/items/item.hbs b/system/templates/items/item.hbs deleted file mode 100644 index 1947f00e..00000000 --- a/system/templates/items/item.hbs +++ /dev/null @@ -1,42 +0,0 @@ -
    - {{> items/_partials/header }} - - - -
    - {{> items/tabs/details }} - {{> items/_partials/effects-tab }} - {{> items/tabs/light }} - {{> items/_partials/description-tab }} - {{> items/_partials/source-tab }} -
    -
    diff --git a/system/templates/items/potion.hbs b/system/templates/items/potion.hbs index ceeb553e..472dec8f 100644 --- a/system/templates/items/potion.hbs +++ b/system/templates/items/potion.hbs @@ -6,10 +6,6 @@ {{localize "SHADOWDARK.sheet.item.tab.details"}} - - {{localize "SHADOWDARK.sheet.item.tab.effects"}} - - {{localize "SHADOWDARK.sheet.item.tab.description"}} @@ -21,7 +17,6 @@
    {{> items/potion/details-tab }} - {{> items/_partials/effects-tab }} {{> items/_partials/description-tab }} {{> items/_partials/source-tab }}
    diff --git a/system/templates/items/scroll.hbs b/system/templates/items/scroll.hbs index 6ddfdcd2..67892451 100644 --- a/system/templates/items/scroll.hbs +++ b/system/templates/items/scroll.hbs @@ -6,10 +6,6 @@ {{localize "SHADOWDARK.sheet.item.tab.details"}} - - {{localize "SHADOWDARK.sheet.item.tab.effects"}} - - {{localize "SHADOWDARK.sheet.item.tab.description"}} @@ -21,7 +17,6 @@
    {{> items/scroll/details-tab }} - {{> items/_partials/effects-tab }} {{> items/_partials/description-tab }} {{> items/_partials/source-tab }}
    diff --git a/system/templates/items/tabs/details.hbs b/system/templates/items/tabs/details.hbs deleted file mode 100644 index 7918fbbf..00000000 --- a/system/templates/items/tabs/details.hbs +++ /dev/null @@ -1,24 +0,0 @@ -
    -
    - - {{#ifEq item.type "Weapon"}} - {{> items/_partials/weapon }} - {{/ifEq}} - - {{#if hasCost}} - {{> items/_partials/cost }} - {{/if}} - - {{#if usesSlots}} - {{!-- Gems have non-configurable slot settings --}} - {{#ifNeq item.type "Gem"}} - {{> items/_partials/slots }} - {{/ifNeq}} - {{/if}} - - {{#if showItemProperties}} - {{> items/_partials/item-properties }} - {{/if}} - -
    -
    diff --git a/system/templates/items/tabs/light.hbs b/system/templates/items/tabs/light.hbs deleted file mode 100644 index ccbaa25a..00000000 --- a/system/templates/items/tabs/light.hbs +++ /dev/null @@ -1,5 +0,0 @@ -
    -
    - {{> items/_partials/light-source }} -
    -
    diff --git a/system/templates/items/weapon.hbs b/system/templates/items/weapon.hbs new file mode 100644 index 00000000..f31a58d5 --- /dev/null +++ b/system/templates/items/weapon.hbs @@ -0,0 +1,32 @@ +
    + {{> items/_partials/header }} + + + +
    + {{> items/weapon/details-tab }} + {{#if system.magicItem}} + {{> items/_partials/effects-tab }} + {{/if}} + {{> items/_partials/description-tab }} + {{> items/_partials/source-tab }} +
    +
    diff --git a/system/templates/items/weapon/_partials/item-properties.hbs b/system/templates/items/weapon/_partials/item-properties.hbs new file mode 100644 index 00000000..db45ef0c --- /dev/null +++ b/system/templates/items/weapon/_partials/item-properties.hbs @@ -0,0 +1,9 @@ +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.item.properties.label") + header-class="light" +}} +
    + {{> items/_partials/item-properties/equipped }} + {{> items/_partials/item-properties/magic-item }} +
    +{{/ui/sd-box}} diff --git a/system/templates/items/weapon/_partials/weapon-properties.hbs b/system/templates/items/weapon/_partials/weapon-properties.hbs new file mode 100644 index 00000000..984898f2 --- /dev/null +++ b/system/templates/items/weapon/_partials/weapon-properties.hbs @@ -0,0 +1,29 @@ +
    +
    + + + + + + +
    +
    +
      + {{#each propertyItems}} +
    • + {{this.name}} +
    • + {{/each}} +
    +
    +
    diff --git a/system/templates/items/weapon/_partials/weapon.hbs b/system/templates/items/weapon/_partials/weapon.hbs new file mode 100644 index 00000000..1e270ec1 --- /dev/null +++ b/system/templates/items/weapon/_partials/weapon.hbs @@ -0,0 +1,76 @@ +{{#> ui/sd-box + header-label=(localize 'SHADOWDARK.item_type.weapon') + header-class="light" + content-class="item-grid" +}} +

    + {{localize 'SHADOWDARK.item.weapon.base_weapon.title'}} +

    + + +

    + {{localize 'SHADOWDARK.item.weapon_type'}} +

    + + +

    + {{localize 'SHADOWDARK.item.weapon_range'}} +

    + + +

    + {{localize 'SHADOWDARK.item.ammunition'}} +

    + + +

    + {{localize 'SHADOWDARK.item.weapon_damage.oneHanded'}} +

    + + +

    + {{localize 'SHADOWDARK.item.weapon_damage.twoHanded'}} +

    + +{{/ui/sd-box}} + diff --git a/system/templates/items/weapon/details-tab.hbs b/system/templates/items/weapon/details-tab.hbs new file mode 100644 index 00000000..95267b74 --- /dev/null +++ b/system/templates/items/weapon/details-tab.hbs @@ -0,0 +1,11 @@ +
    +
    +
    + {{> items/weapon/_partials/weapon }} + {{> items/weapon/_partials/weapon-properties }} +
    + {{> items/_partials/cost }} + {{> items/_partials/slots }} + {{> items/weapon/_partials/item-properties }} +
    +
    diff --git a/system/templates/ui/sd-box.hbs b/system/templates/ui/sd-box.hbs index 68767d09..867d8a69 100644 --- a/system/templates/ui/sd-box.hbs +++ b/system/templates/ui/sd-box.hbs @@ -1,7 +1,11 @@
    - - {{header-span}} + + + {{header-span}} +
    {{> @partial-block }} From 4becc7b677751564021fcf9b61dc9845098c6444 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 19:19:44 +0100 Subject: [PATCH 061/182] update release notes --- RELEASE_NOTES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 59e30ecd..3fa839dc 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -16,6 +16,7 @@ - Settings for compendium art mapping are now found in *Settings > Core > Compendium Art* +* [#917] Restructure Item sheet templates to make them a bit more manageable *Many thanks to **AdamsGH** for contributing **Russian** translation data.* From e635e2938464443aa531cea55276cd2c1239620a Mon Sep 17 00:00:00 2001 From: PrototypeESBU <> Date: Tue, 22 Oct 2024 07:28:09 +1300 Subject: [PATCH 062/182] Fixed issue with SD importer paste event listner --- scss/apps/_shadowdarkling-importer.scss | 2 +- system/src/apps/ShadowdarklingImporterSD.mjs | 8 ++++---- system/templates/apps/shadowdarkling-importer.hbs | 8 +++++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/scss/apps/_shadowdarkling-importer.scss b/scss/apps/_shadowdarkling-importer.scss index de985ccf..57b49d23 100644 --- a/scss/apps/_shadowdarkling-importer.scss +++ b/scss/apps/_shadowdarkling-importer.scss @@ -2,7 +2,7 @@ @use "../mixins" as *; .shadowdarkling-importer { - fieldset { + textarea { height:120px; border:2px solid #111; display: flex; diff --git a/system/src/apps/ShadowdarklingImporterSD.mjs b/system/src/apps/ShadowdarklingImporterSD.mjs index 0047bc86..ecb9c1e8 100644 --- a/system/src/apps/ShadowdarklingImporterSD.mjs +++ b/system/src/apps/ShadowdarklingImporterSD.mjs @@ -41,19 +41,19 @@ export default class ShadowdarklingImporterSD extends FormApplication { /** @inheritdoc */ activateListeners(html) { super.activateListeners(html); - window.addEventListener("paste", e => this._onPaste(e)); + html.on("paste", ".SDImporterJson", this._onPaste.bind(this)); } /** @inheritdoc */ _onSubmit(event) { event.preventDefault(); - + this._createActor(); super._onSubmit(event); } /** @override */ async _updateObject(event, data) { - this._createActor(); + // required method } /** @override */ @@ -76,7 +76,7 @@ export default class ShadowdarklingImporterSD extends FormApplication { let postedJson = ""; try { - postedJson = JSON.parse(event.clipboardData.getData("text/plain")); + postedJson = JSON.parse(event.originalEvent.clipboardData.getData("text/plain")); } catch(error) { ui.notifications.error("JSON not found in clipboard"); diff --git a/system/templates/apps/shadowdarkling-importer.hbs b/system/templates/apps/shadowdarkling-importer.hbs index 071d2e91..cf82cd06 100644 --- a/system/templates/apps/shadowdarkling-importer.hbs +++ b/system/templates/apps/shadowdarkling-importer.hbs @@ -64,9 +64,11 @@
    {{else}} -
    -

    {{localize "SHADOWDARK.apps.shadowdarkling-importer.instruction3"}}

    -
    +
    {{localize "SHADOWDARK.apps.shadowdarkling-importer.instruction1"}}
    {{localize "SHADOWDARK.apps.shadowdarkling-importer.instruction2"}}
    From 90abac893ad9a03a6650671f58f3121e8a028af6 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 19:29:23 +0100 Subject: [PATCH 063/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index c1ff67f1..0597f454 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -140,6 +140,7 @@ SHADOWDARK.armor.properties.shield: Щит SHADOWDARK.boon.type.label: Boon Type SHADOWDARK.boons.blessing: Благословение SHADOWDARK.boons.oath: Клятва +SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Секрет SHADOWDARK.chat_card.button.attack: Атака Ролла SHADOWDARK.chat_card.button.cast_spell: Сотворить заклинание @@ -211,6 +212,7 @@ SHADOWDARK.class.ranger: Рейнджер SHADOWDARK.class.spellcasting_ability.label: Spellcasting Ability SHADOWDARK.class.spellcasting_class.label: Класс заклинания SHADOWDARK.class.spellcasting.base_difficulty.label: Spellcasting Base DC +SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier SHADOWDARK.class.talent_choices.count.label: Choice Count SHADOWDARK.class.talent_choices.label: Talent Choices SHADOWDARK.class.talent_choices.prompt: Select Talent... @@ -303,7 +305,7 @@ SHADOWDARK.dialog.select_weapon_property.title: Выберите свойств SHADOWDARK.dialog.spell_roll.title: Использовать заклинание с SHADOWDARK.dialog.submit: Продолжить SHADOWDARK.dialog.tooltip.talent_advantage: Талант дает вам преимущество для этого броска -SHADOWDARK.dialog.type_here: Type Here +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Перетащите сюда SHADOWDARK.effect_duration.hours: Часы SHADOWDARK.effect_duration.minutes: Минуты @@ -385,6 +387,7 @@ SHADOWDARK.item.armor_ac_modifier: Модификатор SHADOWDARK.item.armor_ac: КБ SHADOWDARK.item.armor_bonus_attribute: Bonus Attribute SHADOWDARK.item.armor_class: Класс Брони +SHADOWDARK.item.armor.armor_properties.label: Armor Properties SHADOWDARK.item.armor.base_armor.chainmail: Chainmail SHADOWDARK.item.armor.base_armor.leather_armor: Кожаная броня SHADOWDARK.item.armor.base_armor.plate_mail: Латные доспехи @@ -401,7 +404,7 @@ SHADOWDARK.item.effect.lightSource.lightSpellNear: Свет SHADOWDARK.item.effect.lightSource.lightSuppression: Light Suppression SHADOWDARK.item.effect.lightSource.purpleGlow: Фиолетовое свечение SHADOWDARK.item.effect.lightSource.torch: Факел -SHADOWDARK.item.effect.pre-defined.title: Предустановленные эффекты +SHADOWDARK.item.effect.pre-defined.title: Pre-defined Effects SHADOWDARK.item.effect.predefined_effect.abilityImprovement: Улучшение очков способности SHADOWDARK.item.effect.predefined_effect.abilityImprovementCha: Ability Score Improvement (Cha) SHADOWDARK.item.effect.predefined_effect.abilityImprovementCon: Ability Score Improvement (Con) @@ -478,7 +481,7 @@ SHADOWDARK.item.npc_attack_special: Attack Features SHADOWDARK.item.npc_attack_type: Тип SHADOWDARK.item.npc_attack.num_damage_dice: Num. Damage Dice SHADOWDARK.item.potion.label: Зелье -SHADOWDARK.item.properties: Свойства +SHADOWDARK.item.properties.label: Item Properties SHADOWDARK.item.scroll.label: Свиток SHADOWDARK.item.source_tag: Source Tag SHADOWDARK.item.source: Источник @@ -519,6 +522,7 @@ SHADOWDARK.item.weapon.base_weapon.staff: Посох SHADOWDARK.item.weapon.base_weapon.title: Базовое оружие SHADOWDARK.item.weapon.base_weapon.wand: Палочка SHADOWDARK.item.weapon.base_weapon.warhammer: Warhammer +SHADOWDARK.item.weapon.weapon_properties.label: Weapon Properties SHADOWDARK.language_choices.common.label: Additional Common SHADOWDARK.language_choices.rare.label: Additional Rare SHADOWDARK.language.celestial: Божественный @@ -753,6 +757,7 @@ SHADOWDARK.talent.backstab: Backstab SHADOWDARK.talent.class.ancestry: Ancestry SHADOWDARK.talent.class.class: Class SHADOWDARK.talent.class.level: Level +SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Ability Improvement SHADOWDARK.talent.type.advantage.hp: HP Roll Advantage SHADOWDARK.talent.type.advantage.initiative: Initiative Advantage @@ -777,3 +782,29 @@ SHADOWDARK.weapon.properties.two_handed: Two-Handed SHADOWDARK.weapon.properties.versatile: Versatile SHADOWDARK.weapon.type.melee: Melee SHADOWDARK.weapon.type.ranged: Ranged +TYPES.Actor.Light: Light +TYPES.Actor.NPC: NPC +TYPES.Actor.Player: Player +TYPES.Item.Ancestry: Ancestry +TYPES.Item.Armor: Armor +TYPES.Item.Background: Background +TYPES.Item.Basic: Basic +TYPES.Item.Boon: Boon +TYPES.Item.Class Ability: Class Ability +TYPES.Item.Class: Class +TYPES.Item.Deity: Deity +TYPES.Item.Effect: Effect +TYPES.Item.Gem: Gem +TYPES.Item.Language: Language +TYPES.Item.NPC Attack: NPC Attack +TYPES.Item.NPC Feature: NPC Feature +TYPES.Item.NPC Special Attack: NPC Special Attack +TYPES.Item.NPC Spell: NPC Spell +TYPES.Item.Patron: Patron +TYPES.Item.Potion: Potion +TYPES.Item.Property: Property +TYPES.Item.Scroll: Scroll +TYPES.Item.Spell: Spell +TYPES.Item.Talent: Talent +TYPES.Item.Wand: Wand +TYPES.Item.Weapon: Weapon From 7ff3bb307156deb94bc39946a4ad0aea4a14f2b2 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 19:29:25 +0100 Subject: [PATCH 064/182] New translations en.yaml (French) --- i18n/fr.yaml | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/i18n/fr.yaml b/i18n/fr.yaml index f30b99b9..6039644f 100644 --- a/i18n/fr.yaml +++ b/i18n/fr.yaml @@ -140,6 +140,7 @@ SHADOWDARK.armor.properties.shield: Bouclier SHADOWDARK.boon.type.label: Type d'avantage SHADOWDARK.boons.blessing: Bénédiction SHADOWDARK.boons.oath: Serment +SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Secret SHADOWDARK.chat_card.button.attack: Jet d'Attaque SHADOWDARK.chat_card.button.cast_spell: Lancement de sort @@ -211,6 +212,7 @@ SHADOWDARK.class.ranger: Éclaireur SHADOWDARK.class.spellcasting_ability.label: Caractéristique d'incantation SHADOWDARK.class.spellcasting_class.label: Lanceur de sort SHADOWDARK.class.spellcasting.base_difficulty.label: DD de base pour lancer de sort +SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier SHADOWDARK.class.talent_choices.count.label: Nombre de choix SHADOWDARK.class.talent_choices.label: Choix des talents SHADOWDARK.class.talent_choices.prompt: Sélectionnez un Talent... @@ -303,7 +305,7 @@ SHADOWDARK.dialog.select_weapon_property.title: Choose Weapon Properties SHADOWDARK.dialog.spell_roll.title: Roll Spell with SHADOWDARK.dialog.submit: Valider SHADOWDARK.dialog.tooltip.talent_advantage: Un talent vous donne l'avantage de ce jet -SHADOWDARK.dialog.type_here: Type Here +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Drag and Drop Here SHADOWDARK.effect_duration.hours: Heures SHADOWDARK.effect_duration.minutes: Minutes @@ -385,6 +387,7 @@ SHADOWDARK.item.armor_ac_modifier: Modificateur SHADOWDARK.item.armor_ac: CA SHADOWDARK.item.armor_bonus_attribute: Attribut Bonus SHADOWDARK.item.armor_class: Classe d'Armure +SHADOWDARK.item.armor.armor_properties.label: Armor Properties SHADOWDARK.item.armor.base_armor.chainmail: Cotte de Maille SHADOWDARK.item.armor.base_armor.leather_armor: Armure de Cuir SHADOWDARK.item.armor.base_armor.plate_mail: Armure de Plate @@ -401,7 +404,7 @@ SHADOWDARK.item.effect.lightSource.lightSpellNear: Light SHADOWDARK.item.effect.lightSource.lightSuppression: Light Suppression SHADOWDARK.item.effect.lightSource.purpleGlow: Purple Glow SHADOWDARK.item.effect.lightSource.torch: Torch -SHADOWDARK.item.effect.pre-defined.title: Pre-defined effects +SHADOWDARK.item.effect.pre-defined.title: Pre-defined Effects SHADOWDARK.item.effect.predefined_effect.abilityImprovement: Ability Score Improvement SHADOWDARK.item.effect.predefined_effect.abilityImprovementCha: Ability Score Improvement (Cha) SHADOWDARK.item.effect.predefined_effect.abilityImprovementCon: Ability Score Improvement (Con) @@ -478,7 +481,7 @@ SHADOWDARK.item.npc_attack_special: Spécial SHADOWDARK.item.npc_attack_type: Type SHADOWDARK.item.npc_attack.num_damage_dice: Nombre de Dés de Dégâts SHADOWDARK.item.potion.label: Potion -SHADOWDARK.item.properties: Propriétés +SHADOWDARK.item.properties.label: Item Properties SHADOWDARK.item.scroll.label: Scroll SHADOWDARK.item.source_tag: Source Tag SHADOWDARK.item.source: Source @@ -519,6 +522,7 @@ SHADOWDARK.item.weapon.base_weapon.staff: Bâton SHADOWDARK.item.weapon.base_weapon.title: Base Weapon SHADOWDARK.item.weapon.base_weapon.wand: Baguette SHADOWDARK.item.weapon.base_weapon.warhammer: Marteau de Guerre +SHADOWDARK.item.weapon.weapon_properties.label: Weapon Properties SHADOWDARK.language_choices.common.label: Langue commune additionnelle SHADOWDARK.language_choices.rare.label: Langue rare additionnelle SHADOWDARK.language.celestial: Céleste @@ -753,6 +757,7 @@ SHADOWDARK.talent.backstab: Attaque Sournoise SHADOWDARK.talent.class.ancestry: Ascendance SHADOWDARK.talent.class.class: Classe SHADOWDARK.talent.class.level: Niveau +SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Ability Improvement SHADOWDARK.talent.type.advantage.hp: HP Roll Advantage SHADOWDARK.talent.type.advantage.initiative: Initiative Advantage @@ -777,3 +782,29 @@ SHADOWDARK.weapon.properties.two_handed: Two-handed SHADOWDARK.weapon.properties.versatile: Versatile SHADOWDARK.weapon.type.melee: Melee SHADOWDARK.weapon.type.ranged: Ranged +TYPES.Actor.Light: Light +TYPES.Actor.NPC: NPC +TYPES.Actor.Player: Player +TYPES.Item.Ancestry: Ancestry +TYPES.Item.Armor: Armor +TYPES.Item.Background: Background +TYPES.Item.Basic: Basic +TYPES.Item.Boon: Boon +TYPES.Item.Class Ability: Class Ability +TYPES.Item.Class: Class +TYPES.Item.Deity: Deity +TYPES.Item.Effect: Effect +TYPES.Item.Gem: Gem +TYPES.Item.Language: Language +TYPES.Item.NPC Attack: NPC Attack +TYPES.Item.NPC Feature: NPC Feature +TYPES.Item.NPC Special Attack: NPC Special Attack +TYPES.Item.NPC Spell: NPC Spell +TYPES.Item.Patron: Patron +TYPES.Item.Potion: Potion +TYPES.Item.Property: Property +TYPES.Item.Scroll: Scroll +TYPES.Item.Spell: Spell +TYPES.Item.Talent: Talent +TYPES.Item.Wand: Wand +TYPES.Item.Weapon: Weapon From 6a941865b1d48316a8210b647cc1768a7e208f81 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 19:29:26 +0100 Subject: [PATCH 065/182] New translations en.yaml (Spanish) --- i18n/es.yaml | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/i18n/es.yaml b/i18n/es.yaml index f7a43586..e8089dd4 100644 --- a/i18n/es.yaml +++ b/i18n/es.yaml @@ -140,6 +140,7 @@ SHADOWDARK.armor.properties.shield: Escudo SHADOWDARK.boon.type.label: Tipo de regalo SHADOWDARK.boons.blessing: Bendición SHADOWDARK.boons.oath: Juramento +SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Secreto SHADOWDARK.chat_card.button.attack: Tirada de ataque SHADOWDARK.chat_card.button.cast_spell: Lanzar hechizo @@ -211,6 +212,7 @@ SHADOWDARK.class.ranger: Explorador SHADOWDARK.class.spellcasting_ability.label: Aptitud Mágica SHADOWDARK.class.spellcasting_class.label: Clase de hechizo SHADOWDARK.class.spellcasting.base_difficulty.label: Spellcasting Base DC +SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier SHADOWDARK.class.talent_choices.count.label: Número de opciones SHADOWDARK.class.talent_choices.label: Elecciones de talento SHADOWDARK.class.talent_choices.prompt: Seleccionar talento... @@ -303,7 +305,7 @@ SHADOWDARK.dialog.select_weapon_property.title: Choose Weapon Properties SHADOWDARK.dialog.spell_roll.title: Lanzar hechizo con SHADOWDARK.dialog.submit: Enviar SHADOWDARK.dialog.tooltip.talent_advantage: Un talento te está dando ventaja en esta tirada -SHADOWDARK.dialog.type_here: Type Here +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Drag and Drop Here SHADOWDARK.effect_duration.hours: Horas SHADOWDARK.effect_duration.minutes: Minutos @@ -385,6 +387,7 @@ SHADOWDARK.item.armor_ac_modifier: Modificador SHADOWDARK.item.armor_ac: CA SHADOWDARK.item.armor_bonus_attribute: Bonus de atributo SHADOWDARK.item.armor_class: Clase de Armadura +SHADOWDARK.item.armor.armor_properties.label: Armor Properties SHADOWDARK.item.armor.base_armor.chainmail: Cota de Malla SHADOWDARK.item.armor.base_armor.leather_armor: Armadura de cuero SHADOWDARK.item.armor.base_armor.plate_mail: Armadura de placas @@ -401,7 +404,7 @@ SHADOWDARK.item.effect.lightSource.lightSpellNear: Luz SHADOWDARK.item.effect.lightSource.lightSuppression: Supresión de luz SHADOWDARK.item.effect.lightSource.purpleGlow: Brillo púrpura SHADOWDARK.item.effect.lightSource.torch: Antorcha -SHADOWDARK.item.effect.pre-defined.title: Efectos predefinidos +SHADOWDARK.item.effect.pre-defined.title: Pre-defined Effects SHADOWDARK.item.effect.predefined_effect.abilityImprovement: Mejora de la puntuación de habilidad SHADOWDARK.item.effect.predefined_effect.abilityImprovementCha: Mejora de la puntuación de habilidad (Car) SHADOWDARK.item.effect.predefined_effect.abilityImprovementCon: Mejora de la puntuación de habilidad (Con) @@ -478,7 +481,7 @@ SHADOWDARK.item.npc_attack_special: Especial SHADOWDARK.item.npc_attack_type: Tipo SHADOWDARK.item.npc_attack.num_damage_dice: Número de dados de daño SHADOWDARK.item.potion.label: Poción -SHADOWDARK.item.properties: Propiedades +SHADOWDARK.item.properties.label: Item Properties SHADOWDARK.item.scroll.label: Pergamino SHADOWDARK.item.source_tag: Source Tag SHADOWDARK.item.source: Source @@ -519,6 +522,7 @@ SHADOWDARK.item.weapon.base_weapon.staff: Bastón SHADOWDARK.item.weapon.base_weapon.title: Arma base SHADOWDARK.item.weapon.base_weapon.wand: Vara SHADOWDARK.item.weapon.base_weapon.warhammer: Martillo de guerra +SHADOWDARK.item.weapon.weapon_properties.label: Weapon Properties SHADOWDARK.language_choices.common.label: Común adicional SHADOWDARK.language_choices.rare.label: Rara adicional SHADOWDARK.language.celestial: Celestial @@ -753,6 +757,7 @@ SHADOWDARK.talent.backstab: Puñalada SHADOWDARK.talent.class.ancestry: Ancestro SHADOWDARK.talent.class.class: Clase SHADOWDARK.talent.class.level: Nivel +SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Mejora de Habilidad SHADOWDARK.talent.type.advantage.hp: Ventaja de tirada de PV SHADOWDARK.talent.type.advantage.initiative: Ventaja de iniciativa @@ -777,3 +782,29 @@ SHADOWDARK.weapon.properties.two_handed: A dos manos SHADOWDARK.weapon.properties.versatile: Versátil SHADOWDARK.weapon.type.melee: Cuerpo a Cuerpo SHADOWDARK.weapon.type.ranged: A distancia +TYPES.Actor.Light: Light +TYPES.Actor.NPC: NPC +TYPES.Actor.Player: Player +TYPES.Item.Ancestry: Ancestry +TYPES.Item.Armor: Armor +TYPES.Item.Background: Background +TYPES.Item.Basic: Basic +TYPES.Item.Boon: Boon +TYPES.Item.Class Ability: Class Ability +TYPES.Item.Class: Class +TYPES.Item.Deity: Deity +TYPES.Item.Effect: Effect +TYPES.Item.Gem: Gem +TYPES.Item.Language: Language +TYPES.Item.NPC Attack: NPC Attack +TYPES.Item.NPC Feature: NPC Feature +TYPES.Item.NPC Special Attack: NPC Special Attack +TYPES.Item.NPC Spell: NPC Spell +TYPES.Item.Patron: Patron +TYPES.Item.Potion: Potion +TYPES.Item.Property: Property +TYPES.Item.Scroll: Scroll +TYPES.Item.Spell: Spell +TYPES.Item.Talent: Talent +TYPES.Item.Wand: Wand +TYPES.Item.Weapon: Weapon From c902fa49373af961caef6724312ac4dea9c6f1c2 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 19:29:27 +0100 Subject: [PATCH 066/182] New translations en.yaml (German) --- i18n/de.yaml | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/i18n/de.yaml b/i18n/de.yaml index 89b11b4b..52e45bda 100644 --- a/i18n/de.yaml +++ b/i18n/de.yaml @@ -140,6 +140,7 @@ SHADOWDARK.armor.properties.shield: Schild SHADOWDARK.boon.type.label: Boon Type SHADOWDARK.boons.blessing: Segnung SHADOWDARK.boons.oath: Eid +SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Geheimnis SHADOWDARK.chat_card.button.attack: Angriff würfeln SHADOWDARK.chat_card.button.cast_spell: Zauber wirken @@ -211,6 +212,7 @@ SHADOWDARK.class.ranger: Waldläufer SHADOWDARK.class.spellcasting_ability.label: Zauber-Fähigkeit SHADOWDARK.class.spellcasting_class.label: Spell Class SHADOWDARK.class.spellcasting.base_difficulty.label: Spellcasting Base DC +SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier SHADOWDARK.class.talent_choices.count.label: Choice Count SHADOWDARK.class.talent_choices.label: Talent Choices SHADOWDARK.class.talent_choices.prompt: Select Talent... @@ -303,7 +305,7 @@ SHADOWDARK.dialog.select_weapon_property.title: Choose Weapon Properties SHADOWDARK.dialog.spell_roll.title: Zauberwurf mit SHADOWDARK.dialog.submit: Submit SHADOWDARK.dialog.tooltip.talent_advantage: Ein Talent gibt dir Vorteil für diesen Wurf -SHADOWDARK.dialog.type_here: Type Here +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Drag and Drop Here SHADOWDARK.effect_duration.hours: Hours SHADOWDARK.effect_duration.minutes: Minutes @@ -385,6 +387,7 @@ SHADOWDARK.item.armor_ac_modifier: Modifikator SHADOWDARK.item.armor_ac: RK SHADOWDARK.item.armor_bonus_attribute: Bonus Attribut SHADOWDARK.item.armor_class: Armor Class +SHADOWDARK.item.armor.armor_properties.label: Armor Properties SHADOWDARK.item.armor.base_armor.chainmail: Kettenrüstung SHADOWDARK.item.armor.base_armor.leather_armor: Lederrüstung SHADOWDARK.item.armor.base_armor.plate_mail: Plattenrüstung @@ -401,7 +404,7 @@ SHADOWDARK.item.effect.lightSource.lightSpellNear: Light SHADOWDARK.item.effect.lightSource.lightSuppression: Light Suppression SHADOWDARK.item.effect.lightSource.purpleGlow: Purple Glow SHADOWDARK.item.effect.lightSource.torch: Torch -SHADOWDARK.item.effect.pre-defined.title: Pre-defined effects +SHADOWDARK.item.effect.pre-defined.title: Pre-defined Effects SHADOWDARK.item.effect.predefined_effect.abilityImprovement: Ability Score Improvement SHADOWDARK.item.effect.predefined_effect.abilityImprovementCha: Ability Score Improvement (Cha) SHADOWDARK.item.effect.predefined_effect.abilityImprovementCon: Ability Score Improvement (Con) @@ -478,7 +481,7 @@ SHADOWDARK.item.npc_attack_special: Spezial SHADOWDARK.item.npc_attack_type: Typ SHADOWDARK.item.npc_attack.num_damage_dice: Anz. Schadenswürfel SHADOWDARK.item.potion.label: Potion -SHADOWDARK.item.properties: Eigenschaften +SHADOWDARK.item.properties.label: Item Properties SHADOWDARK.item.scroll.label: Scroll SHADOWDARK.item.source_tag: Source Tag SHADOWDARK.item.source: Source @@ -519,6 +522,7 @@ SHADOWDARK.item.weapon.base_weapon.staff: Stab SHADOWDARK.item.weapon.base_weapon.title: Base Weapon SHADOWDARK.item.weapon.base_weapon.wand: Zauberstab SHADOWDARK.item.weapon.base_weapon.warhammer: Kriegshammer +SHADOWDARK.item.weapon.weapon_properties.label: Weapon Properties SHADOWDARK.language_choices.common.label: Additional Common SHADOWDARK.language_choices.rare.label: Additional Rare SHADOWDARK.language.celestial: Himmlisch @@ -753,6 +757,7 @@ SHADOWDARK.talent.backstab: Rückenschlag SHADOWDARK.talent.class.ancestry: Abstammung SHADOWDARK.talent.class.class: Klasse SHADOWDARK.talent.class.level: Level +SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Fähigkeitsverbesserung SHADOWDARK.talent.type.advantage.hp: TP Wurfvorteil SHADOWDARK.talent.type.advantage.initiative: Initiativvorteil @@ -777,3 +782,29 @@ SHADOWDARK.weapon.properties.two_handed: zweihändig SHADOWDARK.weapon.properties.versatile: vielseitig SHADOWDARK.weapon.type.melee: Nahkampf SHADOWDARK.weapon.type.ranged: Fernkampf +TYPES.Actor.Light: Light +TYPES.Actor.NPC: NPC +TYPES.Actor.Player: Player +TYPES.Item.Ancestry: Ancestry +TYPES.Item.Armor: Armor +TYPES.Item.Background: Background +TYPES.Item.Basic: Basic +TYPES.Item.Boon: Boon +TYPES.Item.Class Ability: Class Ability +TYPES.Item.Class: Class +TYPES.Item.Deity: Deity +TYPES.Item.Effect: Effect +TYPES.Item.Gem: Gem +TYPES.Item.Language: Language +TYPES.Item.NPC Attack: NPC Attack +TYPES.Item.NPC Feature: NPC Feature +TYPES.Item.NPC Special Attack: NPC Special Attack +TYPES.Item.NPC Spell: NPC Spell +TYPES.Item.Patron: Patron +TYPES.Item.Potion: Potion +TYPES.Item.Property: Property +TYPES.Item.Scroll: Scroll +TYPES.Item.Spell: Spell +TYPES.Item.Talent: Talent +TYPES.Item.Wand: Wand +TYPES.Item.Weapon: Weapon From 2b4277eddf0fc4fa4cbdf7d881a92498714a8e7c Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 19:29:28 +0100 Subject: [PATCH 067/182] New translations en.yaml (Finnish) --- i18n/fi.yaml | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/i18n/fi.yaml b/i18n/fi.yaml index acc91e21..19aebec1 100644 --- a/i18n/fi.yaml +++ b/i18n/fi.yaml @@ -140,6 +140,7 @@ SHADOWDARK.armor.properties.shield: Kilpi SHADOWDARK.boon.type.label: Siunauksen tyyppi SHADOWDARK.boons.blessing: Siunaus SHADOWDARK.boons.oath: Vala +SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Salaisuus SHADOWDARK.chat_card.button.attack: Heitä hyökkäysheitto SHADOWDARK.chat_card.button.cast_spell: Loihdi loitsu @@ -211,6 +212,7 @@ SHADOWDARK.class.ranger: Samooja SHADOWDARK.class.spellcasting_ability.label: Loihtimiskyky SHADOWDARK.class.spellcasting_class.label: Loitsun hahmoluokka SHADOWDARK.class.spellcasting.base_difficulty.label: Loihtimisen vakio vaikeusaste +SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier SHADOWDARK.class.talent_choices.count.label: Valintojen määrä SHADOWDARK.class.talent_choices.label: Lahjakkuusvalinnat SHADOWDARK.class.talent_choices.prompt: Valitse lahjakkuus... @@ -303,7 +305,7 @@ SHADOWDARK.dialog.select_weapon_property.title: Aseen ominaisuuksien valinta SHADOWDARK.dialog.spell_roll.title: Heitä loihtimisheitto käyttäen SHADOWDARK.dialog.submit: Tallenna SHADOWDARK.dialog.tooltip.talent_advantage: Jokin lahjakkuuksistasi antaa sinulle edun tähän heittoon -SHADOWDARK.dialog.type_here: Kirjoita tähän +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Vedä ja tiputa tähän SHADOWDARK.effect_duration.hours: Tuntia SHADOWDARK.effect_duration.minutes: Minuuttia @@ -385,6 +387,7 @@ SHADOWDARK.item.armor_ac_modifier: Lisäpisteet SHADOWDARK.item.armor_ac: Puolustuspisteet SHADOWDARK.item.armor_bonus_attribute: Lisäominaisuus SHADOWDARK.item.armor_class: Puolustuspisteet +SHADOWDARK.item.armor.armor_properties.label: Armor Properties SHADOWDARK.item.armor.base_armor.chainmail: Rengaspanssari SHADOWDARK.item.armor.base_armor.leather_armor: Nahkapanssari SHADOWDARK.item.armor.base_armor.plate_mail: Levyhaarniska @@ -401,7 +404,7 @@ SHADOWDARK.item.effect.lightSource.lightSpellNear: Valotaika SHADOWDARK.item.effect.lightSource.lightSuppression: Valon vähennys SHADOWDARK.item.effect.lightSource.purpleGlow: Purppurainen hehku SHADOWDARK.item.effect.lightSource.torch: Soihtu -SHADOWDARK.item.effect.pre-defined.title: Ennalta määritetyt efektit +SHADOWDARK.item.effect.pre-defined.title: Pre-defined Effects SHADOWDARK.item.effect.predefined_effect.abilityImprovement: Kyvyn parantaminen SHADOWDARK.item.effect.predefined_effect.abilityImprovementCha: Kyvyn parantaminen (Kar) SHADOWDARK.item.effect.predefined_effect.abilityImprovementCon: Kyvyn parantaminen (Sit) @@ -478,7 +481,7 @@ SHADOWDARK.item.npc_attack_special: Erikoiskyky SHADOWDARK.item.npc_attack_type: Tyyppi SHADOWDARK.item.npc_attack.num_damage_dice: Vahinkonoppien määrä SHADOWDARK.item.potion.label: Rohto/Taikajuoma -SHADOWDARK.item.properties: Asetukset +SHADOWDARK.item.properties.label: Item Properties SHADOWDARK.item.scroll.label: Loitsukäärö SHADOWDARK.item.source_tag: Lähdetunniste SHADOWDARK.item.source: Lähde @@ -519,6 +522,7 @@ SHADOWDARK.item.weapon.base_weapon.staff: Sauva SHADOWDARK.item.weapon.base_weapon.title: Asetyyppi SHADOWDARK.item.weapon.base_weapon.wand: Taikasauva SHADOWDARK.item.weapon.base_weapon.warhammer: Sotavasara +SHADOWDARK.item.weapon.weapon_properties.label: Weapon Properties SHADOWDARK.language_choices.common.label: Lisää yleinen kieli SHADOWDARK.language_choices.rare.label: Lisää harvinainen kieli SHADOWDARK.language.celestial: Valonkieli @@ -753,6 +757,7 @@ SHADOWDARK.talent.backstab: Yllätyshyökkäys SHADOWDARK.talent.class.ancestry: Laji SHADOWDARK.talent.class.class: Hahmoluokka SHADOWDARK.talent.class.level: Taso +SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Kyvyn parannus SHADOWDARK.talent.type.advantage.hp: Osumapisteiden heitto edun kanssa SHADOWDARK.talent.type.advantage.initiative: Aloiteheitot edun kanssa @@ -777,3 +782,29 @@ SHADOWDARK.weapon.properties.two_handed: Kaksikätinen SHADOWDARK.weapon.properties.versatile: Yhden tai kahden käden ase SHADOWDARK.weapon.type.melee: Lähitaistelu ase SHADOWDARK.weapon.type.ranged: Kantama-ase +TYPES.Actor.Light: Light +TYPES.Actor.NPC: NPC +TYPES.Actor.Player: Player +TYPES.Item.Ancestry: Ancestry +TYPES.Item.Armor: Armor +TYPES.Item.Background: Background +TYPES.Item.Basic: Basic +TYPES.Item.Boon: Boon +TYPES.Item.Class Ability: Class Ability +TYPES.Item.Class: Class +TYPES.Item.Deity: Deity +TYPES.Item.Effect: Effect +TYPES.Item.Gem: Gem +TYPES.Item.Language: Language +TYPES.Item.NPC Attack: NPC Attack +TYPES.Item.NPC Feature: NPC Feature +TYPES.Item.NPC Special Attack: NPC Special Attack +TYPES.Item.NPC Spell: NPC Spell +TYPES.Item.Patron: Patron +TYPES.Item.Potion: Potion +TYPES.Item.Property: Property +TYPES.Item.Scroll: Scroll +TYPES.Item.Spell: Spell +TYPES.Item.Talent: Talent +TYPES.Item.Wand: Wand +TYPES.Item.Weapon: Weapon From 6eccd5af6c99e00be737530d3388a6fdeaebe5f4 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 19:29:30 +0100 Subject: [PATCH 068/182] New translations en.yaml (Korean) --- i18n/ko.yaml | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/i18n/ko.yaml b/i18n/ko.yaml index 3ced292d..122e541d 100644 --- a/i18n/ko.yaml +++ b/i18n/ko.yaml @@ -140,6 +140,7 @@ SHADOWDARK.armor.properties.shield: 방패 SHADOWDARK.boon.type.label: Boon Type SHADOWDARK.boons.blessing: Blessing SHADOWDARK.boons.oath: Oath +SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Secret SHADOWDARK.chat_card.button.attack: 명중 굴림 SHADOWDARK.chat_card.button.cast_spell: 주문 시전 @@ -211,6 +212,7 @@ SHADOWDARK.class.ranger: 레인저 SHADOWDARK.class.spellcasting_ability.label: 주문시전 능력 SHADOWDARK.class.spellcasting_class.label: Spell Class SHADOWDARK.class.spellcasting.base_difficulty.label: Spellcasting Base DC +SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier SHADOWDARK.class.talent_choices.count.label: 재능 카운트 SHADOWDARK.class.talent_choices.label: 재능 선택 SHADOWDARK.class.talent_choices.prompt: 재능을 지정하세요... @@ -303,7 +305,7 @@ SHADOWDARK.dialog.select_weapon_property.title: 무기 속성 지정 SHADOWDARK.dialog.spell_roll.title: 주문시전 굴림 SHADOWDARK.dialog.submit: 제출 SHADOWDARK.dialog.tooltip.talent_advantage: 이 굴림에 유리함을 주는 재능이 있습니다 -SHADOWDARK.dialog.type_here: Type Here +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Drag and Drop Here SHADOWDARK.effect_duration.hours: 시간 SHADOWDARK.effect_duration.minutes: 분 @@ -385,6 +387,7 @@ SHADOWDARK.item.armor_ac_modifier: 수정치 SHADOWDARK.item.armor_ac: AC SHADOWDARK.item.armor_bonus_attribute: 추가 속성 SHADOWDARK.item.armor_class: 방어도 (AC) +SHADOWDARK.item.armor.armor_properties.label: Armor Properties SHADOWDARK.item.armor.base_armor.chainmail: 체인메일 SHADOWDARK.item.armor.base_armor.leather_armor: 가죽 갑옷 SHADOWDARK.item.armor.base_armor.plate_mail: 판금 갑옷 @@ -401,7 +404,7 @@ SHADOWDARK.item.effect.lightSource.lightSpellNear: 빛 SHADOWDARK.item.effect.lightSource.lightSuppression: 빛 제거 SHADOWDARK.item.effect.lightSource.purpleGlow: 보라색 형광 SHADOWDARK.item.effect.lightSource.torch: 횃불 -SHADOWDARK.item.effect.pre-defined.title: 사전 지정된 효과 +SHADOWDARK.item.effect.pre-defined.title: Pre-defined Effects SHADOWDARK.item.effect.predefined_effect.abilityImprovement: 능력 점수 향상 SHADOWDARK.item.effect.predefined_effect.abilityImprovementCha: 능력 점수 향상 (매력) SHADOWDARK.item.effect.predefined_effect.abilityImprovementCon: 능력 점수 향상 (건강) @@ -478,7 +481,7 @@ SHADOWDARK.item.npc_attack_special: 공격 재주 SHADOWDARK.item.npc_attack_type: 유형 SHADOWDARK.item.npc_attack.num_damage_dice: 피해 주사위 SHADOWDARK.item.potion.label: 물약 -SHADOWDARK.item.properties: 속성 +SHADOWDARK.item.properties.label: Item Properties SHADOWDARK.item.scroll.label: 두루마리 SHADOWDARK.item.source_tag: Source Tag SHADOWDARK.item.source: Source @@ -519,6 +522,7 @@ SHADOWDARK.item.weapon.base_weapon.staff: 지팡이 SHADOWDARK.item.weapon.base_weapon.title: 기본 무기 SHADOWDARK.item.weapon.base_weapon.wand: 마법봉 SHADOWDARK.item.weapon.base_weapon.warhammer: 전쟁망치 +SHADOWDARK.item.weapon.weapon_properties.label: Weapon Properties SHADOWDARK.language_choices.common.label: Additional Common SHADOWDARK.language_choices.rare.label: Additional Rare SHADOWDARK.language.celestial: 천계어 Celestial @@ -753,6 +757,7 @@ SHADOWDARK.talent.backstab: 배후공격 SHADOWDARK.talent.class.ancestry: 선조 SHADOWDARK.talent.class.class: 클래스 SHADOWDARK.talent.class.level: 레벨 +SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: 능력 향상 SHADOWDARK.talent.type.advantage.hp: HP 굴림 유리함 SHADOWDARK.talent.type.advantage.initiative: 우선권 유리함 @@ -777,3 +782,29 @@ SHADOWDARK.weapon.properties.two_handed: 양손 SHADOWDARK.weapon.properties.versatile: 다용도 SHADOWDARK.weapon.type.melee: 근접 SHADOWDARK.weapon.type.ranged: 원거리 +TYPES.Actor.Light: Light +TYPES.Actor.NPC: NPC +TYPES.Actor.Player: Player +TYPES.Item.Ancestry: Ancestry +TYPES.Item.Armor: Armor +TYPES.Item.Background: Background +TYPES.Item.Basic: Basic +TYPES.Item.Boon: Boon +TYPES.Item.Class Ability: Class Ability +TYPES.Item.Class: Class +TYPES.Item.Deity: Deity +TYPES.Item.Effect: Effect +TYPES.Item.Gem: Gem +TYPES.Item.Language: Language +TYPES.Item.NPC Attack: NPC Attack +TYPES.Item.NPC Feature: NPC Feature +TYPES.Item.NPC Special Attack: NPC Special Attack +TYPES.Item.NPC Spell: NPC Spell +TYPES.Item.Patron: Patron +TYPES.Item.Potion: Potion +TYPES.Item.Property: Property +TYPES.Item.Scroll: Scroll +TYPES.Item.Spell: Spell +TYPES.Item.Talent: Talent +TYPES.Item.Wand: Wand +TYPES.Item.Weapon: Weapon From 3610d61b022dc7d4a1c511dbc7abe3027909ccc6 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 19:29:31 +0100 Subject: [PATCH 069/182] New translations en.yaml (Swedish) --- i18n/sv.yaml | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/i18n/sv.yaml b/i18n/sv.yaml index 4bec5663..33e284ca 100644 --- a/i18n/sv.yaml +++ b/i18n/sv.yaml @@ -140,6 +140,7 @@ SHADOWDARK.armor.properties.shield: Sköld SHADOWDARK.boon.type.label: Favörtyp SHADOWDARK.boons.blessing: Välsignelse SHADOWDARK.boons.oath: Eder +SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Hemlighet SHADOWDARK.chat_card.button.attack: Rulla attack SHADOWDARK.chat_card.button.cast_spell: Kasta besvärjelse @@ -211,6 +212,7 @@ SHADOWDARK.class.ranger: Jägare SHADOWDARK.class.spellcasting_ability.label: Besvärjelseförmåga SHADOWDARK.class.spellcasting_class.label: Besvärjelseklass SHADOWDARK.class.spellcasting.base_difficulty.label: Grundsvårighet för besvärjelse +SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier SHADOWDARK.class.talent_choices.count.label: Antal val SHADOWDARK.class.talent_choices.label: Talangval SHADOWDARK.class.talent_choices.prompt: Välj talang... @@ -303,7 +305,7 @@ SHADOWDARK.dialog.select_weapon_property.title: Välj rustningsegenskaper SHADOWDARK.dialog.spell_roll.title: Rulla besvärjelse med SHADOWDARK.dialog.submit: Skicka SHADOWDARK.dialog.tooltip.talent_advantage: En talang ger dig fördel -SHADOWDARK.dialog.type_here: Type Here +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Drag and Drop Here SHADOWDARK.effect_duration.hours: Timmar SHADOWDARK.effect_duration.minutes: Minuter @@ -385,6 +387,7 @@ SHADOWDARK.item.armor_ac_modifier: AC Bonus SHADOWDARK.item.armor_ac: AC SHADOWDARK.item.armor_bonus_attribute: Bonus Egenskap SHADOWDARK.item.armor_class: Rustningsklass +SHADOWDARK.item.armor.armor_properties.label: Armor Properties SHADOWDARK.item.armor.base_armor.chainmail: Ringbrynja SHADOWDARK.item.armor.base_armor.leather_armor: Läderrustning SHADOWDARK.item.armor.base_armor.plate_mail: Pansarrustning @@ -401,7 +404,7 @@ SHADOWDARK.item.effect.lightSource.lightSpellNear: Ljus SHADOWDARK.item.effect.lightSource.lightSuppression: Ljusdämpning SHADOWDARK.item.effect.lightSource.purpleGlow: Lila glöd SHADOWDARK.item.effect.lightSource.torch: Fackla -SHADOWDARK.item.effect.pre-defined.title: Fördefinerad effekter +SHADOWDARK.item.effect.pre-defined.title: Pre-defined Effects SHADOWDARK.item.effect.predefined_effect.abilityImprovement: Förbättring av förmåga SHADOWDARK.item.effect.predefined_effect.abilityImprovementCha: Förbättring av förmåga (Kar) SHADOWDARK.item.effect.predefined_effect.abilityImprovementCon: Förbättring av förmåga (Fys) @@ -478,7 +481,7 @@ SHADOWDARK.item.npc_attack_special: Special SHADOWDARK.item.npc_attack_type: Typ SHADOWDARK.item.npc_attack.num_damage_dice: Antal skadetärningar SHADOWDARK.item.potion.label: Brygd -SHADOWDARK.item.properties: Egenskaper +SHADOWDARK.item.properties.label: Item Properties SHADOWDARK.item.scroll.label: Pergamentrulle SHADOWDARK.item.source_tag: Source Tag SHADOWDARK.item.source: Källa @@ -519,6 +522,7 @@ SHADOWDARK.item.weapon.base_weapon.staff: Stav SHADOWDARK.item.weapon.base_weapon.title: Grundvapen SHADOWDARK.item.weapon.base_weapon.wand: Trollstav SHADOWDARK.item.weapon.base_weapon.warhammer: Stridshammare +SHADOWDARK.item.weapon.weapon_properties.label: Weapon Properties SHADOWDARK.language_choices.common.label: Ytterligare vanliga SHADOWDARK.language_choices.rare.label: Ytterligare sällsynta SHADOWDARK.language.celestial: Himmelska @@ -753,6 +757,7 @@ SHADOWDARK.talent.backstab: Rygghugg SHADOWDARK.talent.class.ancestry: Ursprung SHADOWDARK.talent.class.class: Klass SHADOWDARK.talent.class.level: Nivå +SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Förbättring av förmåga SHADOWDARK.talent.type.advantage.hp: Fördel KP Rullning SHADOWDARK.talent.type.advantage.initiative: Fördel på Initiativ @@ -777,3 +782,29 @@ SHADOWDARK.weapon.properties.two_handed: Två-handat SHADOWDARK.weapon.properties.versatile: Versatilt SHADOWDARK.weapon.type.melee: Närstrid SHADOWDARK.weapon.type.ranged: Avståndsstrid +TYPES.Actor.Light: Light +TYPES.Actor.NPC: NPC +TYPES.Actor.Player: Player +TYPES.Item.Ancestry: Ancestry +TYPES.Item.Armor: Armor +TYPES.Item.Background: Background +TYPES.Item.Basic: Basic +TYPES.Item.Boon: Boon +TYPES.Item.Class Ability: Class Ability +TYPES.Item.Class: Class +TYPES.Item.Deity: Deity +TYPES.Item.Effect: Effect +TYPES.Item.Gem: Gem +TYPES.Item.Language: Language +TYPES.Item.NPC Attack: NPC Attack +TYPES.Item.NPC Feature: NPC Feature +TYPES.Item.NPC Special Attack: NPC Special Attack +TYPES.Item.NPC Spell: NPC Spell +TYPES.Item.Patron: Patron +TYPES.Item.Potion: Potion +TYPES.Item.Property: Property +TYPES.Item.Scroll: Scroll +TYPES.Item.Spell: Spell +TYPES.Item.Talent: Talent +TYPES.Item.Wand: Wand +TYPES.Item.Weapon: Weapon From 3349abc040217154d082005cde7f9ea9b8804835 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 19:29:32 +0100 Subject: [PATCH 070/182] New translations en.yaml (Portuguese, Brazilian) --- i18n/pt_BR.yaml | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/i18n/pt_BR.yaml b/i18n/pt_BR.yaml index 3b21ac1d..f4bc80f9 100644 --- a/i18n/pt_BR.yaml +++ b/i18n/pt_BR.yaml @@ -140,6 +140,7 @@ SHADOWDARK.armor.properties.shield: Escudo SHADOWDARK.boon.type.label: Tipo de Dádiva SHADOWDARK.boons.blessing: Bênção SHADOWDARK.boons.oath: Juramento +SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Segredo SHADOWDARK.chat_card.button.attack: Rolar Ataque SHADOWDARK.chat_card.button.cast_spell: Conjurar Magia @@ -211,6 +212,7 @@ SHADOWDARK.class.ranger: Patrulheiro SHADOWDARK.class.spellcasting_ability.label: Atributo de Conjuração SHADOWDARK.class.spellcasting_class.label: Classe da Magia SHADOWDARK.class.spellcasting.base_difficulty.label: CD Base de Conjuração +SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier SHADOWDARK.class.talent_choices.count.label: Número de Escolhas SHADOWDARK.class.talent_choices.label: Opções de Talentos SHADOWDARK.class.talent_choices.prompt: Selecionar Talento... @@ -303,7 +305,7 @@ SHADOWDARK.dialog.select_weapon_property.title: Escolher Propriedade da Arma SHADOWDARK.dialog.spell_roll.title: Conjurar Magia com SHADOWDARK.dialog.submit: Enviar SHADOWDARK.dialog.tooltip.talent_advantage: Um talento está lhe dando vantagem nesta rolagem -SHADOWDARK.dialog.type_here: Escreva Aqui +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Arraste e Solte Aqui SHADOWDARK.effect_duration.hours: Horas SHADOWDARK.effect_duration.minutes: Minutos @@ -385,6 +387,7 @@ SHADOWDARK.item.armor_ac_modifier: Modificador SHADOWDARK.item.armor_ac: CA SHADOWDARK.item.armor_bonus_attribute: Bônus de Atributo SHADOWDARK.item.armor_class: Classe de Armadura +SHADOWDARK.item.armor.armor_properties.label: Armor Properties SHADOWDARK.item.armor.base_armor.chainmail: Cota de Malha SHADOWDARK.item.armor.base_armor.leather_armor: Armadura de Couro SHADOWDARK.item.armor.base_armor.plate_mail: Armadura de Placas @@ -401,7 +404,7 @@ SHADOWDARK.item.effect.lightSource.lightSpellNear: Luz SHADOWDARK.item.effect.lightSource.lightSuppression: Supressão leve SHADOWDARK.item.effect.lightSource.purpleGlow: Brilho Roxo SHADOWDARK.item.effect.lightSource.torch: Tocha -SHADOWDARK.item.effect.pre-defined.title: Efeitos pré-definidos +SHADOWDARK.item.effect.pre-defined.title: Pre-defined Effects SHADOWDARK.item.effect.predefined_effect.abilityImprovement: Melhoria de Atributo SHADOWDARK.item.effect.predefined_effect.abilityImprovementCha: Melhoria do Atributo (Car) SHADOWDARK.item.effect.predefined_effect.abilityImprovementCon: Melhoria do Atributo (Con) @@ -478,7 +481,7 @@ SHADOWDARK.item.npc_attack_special: Características de Ataque SHADOWDARK.item.npc_attack_type: Tipo SHADOWDARK.item.npc_attack.num_damage_dice: Núm. Dados de Dano SHADOWDARK.item.potion.label: Poção -SHADOWDARK.item.properties: Propriedades +SHADOWDARK.item.properties.label: Item Properties SHADOWDARK.item.scroll.label: Pergaminho SHADOWDARK.item.source_tag: Tag da Fonte SHADOWDARK.item.source: Fonte @@ -519,6 +522,7 @@ SHADOWDARK.item.weapon.base_weapon.staff: Cajado SHADOWDARK.item.weapon.base_weapon.title: Arma Base SHADOWDARK.item.weapon.base_weapon.wand: Varinha SHADOWDARK.item.weapon.base_weapon.warhammer: Martelo de Guerra +SHADOWDARK.item.weapon.weapon_properties.label: Weapon Properties SHADOWDARK.language_choices.common.label: Comum Adicional SHADOWDARK.language_choices.rare.label: Raro Adicional SHADOWDARK.language.celestial: Celestial @@ -753,6 +757,7 @@ SHADOWDARK.talent.backstab: Ataque Furtivo SHADOWDARK.talent.class.ancestry: Ancestralidade SHADOWDARK.talent.class.class: Classe SHADOWDARK.talent.class.level: Nível +SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Melhoria de Atributo SHADOWDARK.talent.type.advantage.hp: Vantagem na Rolagem de PV SHADOWDARK.talent.type.advantage.initiative: Vantagem na Iniciativa @@ -777,3 +782,29 @@ SHADOWDARK.weapon.properties.two_handed: Duas Mãos SHADOWDARK.weapon.properties.versatile: Versátil SHADOWDARK.weapon.type.melee: Corpo-a-Corpo SHADOWDARK.weapon.type.ranged: Alcance +TYPES.Actor.Light: Light +TYPES.Actor.NPC: NPC +TYPES.Actor.Player: Player +TYPES.Item.Ancestry: Ancestry +TYPES.Item.Armor: Armor +TYPES.Item.Background: Background +TYPES.Item.Basic: Basic +TYPES.Item.Boon: Boon +TYPES.Item.Class Ability: Class Ability +TYPES.Item.Class: Class +TYPES.Item.Deity: Deity +TYPES.Item.Effect: Effect +TYPES.Item.Gem: Gem +TYPES.Item.Language: Language +TYPES.Item.NPC Attack: NPC Attack +TYPES.Item.NPC Feature: NPC Feature +TYPES.Item.NPC Special Attack: NPC Special Attack +TYPES.Item.NPC Spell: NPC Spell +TYPES.Item.Patron: Patron +TYPES.Item.Potion: Potion +TYPES.Item.Property: Property +TYPES.Item.Scroll: Scroll +TYPES.Item.Spell: Spell +TYPES.Item.Talent: Talent +TYPES.Item.Wand: Wand +TYPES.Item.Weapon: Weapon From 26d9a69f31dcb52056f4eee3cc0a3832083a105f Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 21 Oct 2024 19:46:41 +0100 Subject: [PATCH 071/182] update release notes --- RELEASE_NOTES.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 3fa839dc..49297c7c 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -6,7 +6,10 @@ * [#920] Show tooltips on weapon and armor properties when showing expanded inline view in inventory ## Bugfixes +* [#894] Unnecessary "items not found" warning for "+2 Stats Points" from ShadowDarklings * [#896] Add additional padding to blockquote style so text doesn't blend into decorations +* [#902] Can't paste Shadowdarklings JSON if previously copied text object +* [#903] Importing Wizards from Shadowdarklings returns "Plus2INTOrPlus1Casting" errors * [#906] There's always an extra space between special attack name and effect * [#918] Actor and Item type names missing from i18n data * [#919] Class item template has incorrect default spellcasting class value From b96ef74b9a56b2fede4b77f0e6c47c1ce67d8fb2 Mon Sep 17 00:00:00 2001 From: PrototypeESBU <> Date: Wed, 23 Oct 2024 19:12:46 +1000 Subject: [PATCH 072/182] Initial working --- system/shadowdark.mjs | 2 ++ system/src/utils/ChecksSD.mjs | 57 +++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 system/src/utils/ChecksSD.mjs diff --git a/system/shadowdark.mjs b/system/shadowdark.mjs index 1723f33d..baeccfc0 100644 --- a/system/shadowdark.mjs +++ b/system/shadowdark.mjs @@ -7,6 +7,7 @@ import registerSystemSettings from "./src/settings.mjs"; import SHADOWDARK from "./src/config.mjs"; import ShadowdarkMacro from "./src/macro.mjs"; import UtilitySD from "./src/utils/UtilitySD.mjs"; +import ChecksSD from "./src/utils/ChecksSD.mjs"; import * as apps from "./src/apps/_module.mjs"; import * as chat from "./src/chat/_module.mjs"; @@ -75,6 +76,7 @@ Hooks.once("init", () => { registerSystemSettings(); loadTemplates(); + ChecksSD.registerEnrichers(); UtilitySD.loadLegacyArtMappings(); // Register sheet application classes diff --git a/system/src/utils/ChecksSD.mjs b/system/src/utils/ChecksSD.mjs new file mode 100644 index 00000000..e0fe0efc --- /dev/null +++ b/system/src/utils/ChecksSD.mjs @@ -0,0 +1,57 @@ +export default class ChecksSD { + + static async registerEnrichers() { + console.warn("enricher"); + // load custom text enrichers + // [[/check STAT DC]] + // [[/request STAT DC]] + CONFIG.TextEditor.enrichers.push({ + pattern: /\[\[\/(?check|request)\s(?\w{3})\s(?\d+)\]\]/g, + enricher: async (match, options) => { + let { command, stat, dc } = match.groups; + const link = document.createElement("a"); + link.dataset.command = command; + link.dataset.stat = stat; + link.dataset.dc = dc; + switch (command) { + case "check": + link.innerHTML = `DC ${dc} ${stat}`; + break; + case "request": + link.innerHTML = `DC ${dc} ${stat}`; + break; + } + return link; + }, + }); + + document.body.addEventListener("click", this.checkHandler); + } + + static async checkHandler(event) { + let data = event.target?.dataset; + if ( !data.command ) return; + + let options = {}; + if (event.shiftKey) { + options.fastForward = true; + } + + switch (data.command) { + case "check": + let actor = game.user.character; + if (actor) { + actor.rollAbility(data.stat, options); + } + else { + ui.notification.error("You do not have a character selected!"); + } + + break; + case "request": + console.log("Request Check"); + break; + } + } + +} From b7a090cb62c35a00264e900b548205e734592984 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Thu, 24 Oct 2024 02:07:18 +0100 Subject: [PATCH 073/182] work on warlock boon enhancements --- i18n/en.yaml | 6 +++ system/src/config.mjs | 8 ++++ system/src/documents/ActorSD.mjs | 36 +++++++++++++- system/src/documents/CompendiumsSD.mjs | 11 ++++- system/src/documents/ItemSD.mjs | 10 ++++ system/src/sheets/ItemSheetSD.mjs | 4 +- system/src/sheets/PlayerSheetSD.mjs | 47 +++++++++++++++---- system/template.json | 1 + system/templates/actors/player/details.hbs | 9 +++- .../actors/player/inventory/coins.hbs | 2 +- system/templates/actors/player/spells.hbs | 10 +++- system/templates/dialog/choose-spellbook.hbs | 13 +++++ 12 files changed, 141 insertions(+), 16 deletions(-) create mode 100644 system/templates/dialog/choose-spellbook.hbs diff --git a/i18n/en.yaml b/i18n/en.yaml index d3ecd870..d4ddf3fc 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -248,6 +248,7 @@ SHADOWDARK.dialog.edit_hp.title: Edit HP SHADOWDARK.dialog.edit_stats.title: Edit Stats SHADOWDARK.dialog.effect.choice.armor: Choose Armor Type SHADOWDARK.dialog.effect.choice.attribute: Choose Attribute +SHADOWDARK.dialog.effect.choice.class: Choose Class SHADOWDARK.dialog.effect.choice.damage_die: Choose Damage Die SHADOWDARK.dialog.effect.choice.lightsource: Choose Light Source SHADOWDARK.dialog.effect.choice.property: Choose Property @@ -303,6 +304,7 @@ SHADOWDARK.dialog.select_languages.title: Choose Languages SHADOWDARK.dialog.select_weapon_property.prompt: Select Weapon Property... SHADOWDARK.dialog.select_weapon_property.title: Choose Weapon Properties SHADOWDARK.dialog.spell_roll.title: Cast Spell with +SHADOWDARK.dialog.spellbook.open_which_class.title: Choose Available Spellboook SHADOWDARK.dialog.submit: Submit SHADOWDARK.dialog.tooltip.talent_advantage: A talent is giving you advantage to this roll SHADOWDARK.dialog.type_here: Type Here... @@ -436,6 +438,7 @@ SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: Ranged Attack Roll B SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: Ranged Damage Bonus SHADOWDARK.item.effect.predefined_effect.spellAdvantage: Spellcasting Advantage on Spell SHADOWDARK.item.effect.predefined_effect.spellCastingBonus: Spellcasting Check Bonus +SHADOWDARK.item.effect.predefined_effect.spellcastingClasses: Bonus Spellcasting Class SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: Unarmored AC Bonus SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: Weapon Attack Roll Bonus SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: Weapon Attack Damage Bonus @@ -452,6 +455,7 @@ SHADOWDARK.item.effect.warning.add_effect_without_value: Can't add effects witho SHADOWDARK.item.effect.warning.add_round_item_outside_combat: Can't add effects with Rounds type duration outside of combat. SHADOWDARK.item.equipped: Equipped SHADOWDARK.item.errors.no_available_ammunition: No ammunition available +SHADOWDARK.item.errors.no_spellcasting_classes: This character does not have a spellcasting class SHADOWDARK.item.inventory_free_carry: Free Carry SHADOWDARK.item.inventory_per_slot: Max per Slot SHADOWDARK.item.inventory_quantity: Quantity @@ -705,6 +709,7 @@ SHADOWDARK.sheet.player.languages: Languages SHADOWDARK.sheet.player.luck: Luck SHADOWDARK.sheet.player.melee_attacks: Melee Attacks SHADOWDARK.sheet.player.name.label: Name +SHADOWDARK.sheet.player.open_spellbook.tooltip: Open Spellbook SHADOWDARK.sheet.player.ranged_attacks: Ranged Attacks SHADOWDARK.sheet.player.spells_from_items: Spells From Items SHADOWDARK.sheet.player.spells_tier: Tier @@ -766,6 +771,7 @@ SHADOWDARK.talent.type.advantage.title: Advantage Bonus SHADOWDARK.talent.type.armor_bonus: Armor AC Bonus SHADOWDARK.talent.type.armor_mastery: Armor Mastery SHADOWDARK.talent.type.backstab_die: Extra Backstab Die +SHADOWDARK.talent.type.bonus_caster_classes: Bonus Spellcasting Class SHADOWDARK.talent.type.custom: Custom Talent SHADOWDARK.talent.type.melee_attack_bonus: Melee Attack Roll Bonus SHADOWDARK.talent.type.melee_damage_bonus: Melee Damage Roll Bonus diff --git a/system/src/config.mjs b/system/src/config.mjs index 872312fb..2ff6c18c 100644 --- a/system/src/config.mjs +++ b/system/src/config.mjs @@ -214,6 +214,7 @@ SHADOWDARK.EFFECT_TRANSLATIONS = { "system.bonuses.rangedAttackBonus": "SHADOWDARK.talent.type.ranged_attack_bonus", "system.bonuses.rangedDamageBonus": "SHADOWDARK.talent.type.ranged_damage_bonus", "system.bonuses.spellcastingCheckBonus": "SHADOWDARK.talent.type.spell_bonus", + "system.bonuses.spellcastingClasses": "SHADOWDARK.talent.type.bonus_caster_classes", "system.bonuses.weaponMastery": "SHADOWDARK.talent.type.weapon_mastery", }; @@ -433,6 +434,13 @@ SHADOWDARK.PREDEFINED_EFFECTS = { name: "SHADOWDARK.item.effect.predefined_effect.spellCastingBonus", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, + spellcastingClasses: { + defaultValue: "REPLACEME", + effectKey: "system.bonuses.spellcastingClasses", + icon: "icons/sundries/documents/document-sealed-brown-red.webp", + name: "SHADOWDARK.item.effect.predefined_effect.spellcastingClasses", + mode: "CONST.ACTIVE_EFFECT_MODES.ADD", + }, unarmoredAcBonus: { defaultValue: 1, effectKey: "system.bonuses.unarmoredAcBonus", diff --git a/system/src/documents/ActorSD.mjs b/system/src/documents/ActorSD.mjs index b682ed9d..5b571577 100644 --- a/system/src/documents/ActorSD.mjs +++ b/system/src/documents/ActorSD.mjs @@ -857,6 +857,34 @@ export default class ActorSD extends Actor { } + async getSpellcasterClasses() { + const actorClass = await this.getClass(); + + const playerSpellClasses = []; + + let spellClass = actorClass.system.spellcasting.class; + if (spellClass === "") { + playerSpellClasses.push(actorClass); + } + else if (spellClass !== "__not_spellcaster__") { + playerSpellClasses.push( + await this._getItemFromUuid(spellClass) + ); + } + + const spellcasterClasses = + await shadowdark.compendiums.spellcastingBaseClasses(); + + for (const bonusClass of this.system.bonuses.spellcastingClasses ?? []) { + playerSpellClasses.push( + spellcasterClasses.find(c => c.name.slugify() === bonusClass) + ); + } + + return playerSpellClasses.sort((a, b) => a.name.localeCompare(b.name)); + } + + async getSpellcastingAbility() { const characterClass = await this.getClass(); @@ -913,7 +941,13 @@ export default class ActorSD extends Actor { const spellcastingClass = characterClass?.system?.spellcasting?.class ?? "__not_spellcaster__"; - return characterClass && spellcastingClass !== "__not_spellcaster__" + const isSpellcastingClass = + characterClass && spellcastingClass !== "__not_spellcaster__"; + + const hasBonusSpellcastingClasses = + (this.system.bonuses.spellcastingClasses ?? []).length > 0; + + return isSpellcastingClass || hasBonusSpellcastingClasses ? true : false; } diff --git a/system/src/documents/CompendiumsSD.mjs b/system/src/documents/CompendiumsSD.mjs index e1a02a19..a83066b0 100644 --- a/system/src/documents/CompendiumsSD.mjs +++ b/system/src/documents/CompendiumsSD.mjs @@ -275,11 +275,20 @@ export default class CompendiumsSD { return sources.sort((a, b) => a.name.localeCompare(b.name)); } + static async spellcastingBaseClasses(filterSources=true) { + const documents = await CompendiumsSD._documents("Item", "Class", filterSources); + + return this._collectionFromArray(documents.filter(document => + document.system.spellcasting.class === "" + )); + } + static async spellcastingClasses(filterSources=true) { const documents = await CompendiumsSD._documents("Item", "Class", filterSources); + return this._collectionFromArray(documents.filter(document => document.system.spellcasting.ability !== "" - && document.system.spellcasting.class !== "NONE" + && document.system.spellcasting.class !== "__not_spellcaster__" )); } diff --git a/system/src/documents/ItemSD.mjs b/system/src/documents/ItemSD.mjs index cc14989e..4ab19681 100644 --- a/system/src/documents/ItemSD.mjs +++ b/system/src/documents/ItemSD.mjs @@ -474,6 +474,16 @@ export default class ItemSD extends Item { const chosen = await this._askEffectInput({name, type, options}); return chosen[type] ?? [value]; } + else if (key === "spellcastingClasses") { + const type = "class"; + + const options = await shadowdark.utils.getSlugifiedItemList( + await shadowdark.compendiums.spellcastingBaseClasses() + ); + + const chosen = await this._askEffectInput({name, type, options}); + return chosen[type] ?? [value]; + } else if ( [ "weaponDamageDieImprovementByProperty", diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index e57be80e..3c75c22a 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -247,7 +247,7 @@ export default class ItemSheetSD extends ItemSheet { }; const spellcastingClasses = - await shadowdark.compendiums.spellcastingClasses(); + await shadowdark.compendiums.spellcastingBaseClasses(); context.spellcastingClasses = {}; for (const spellcastingClass of spellcastingClasses) { @@ -288,7 +288,7 @@ export default class ItemSheetSD extends ItemSheet { async getSpellSelectorConfigs(context) { const [selectedClasses, availableClasses] = await shadowdark.utils.getDedupedSelectedItems( - await shadowdark.compendiums.spellcastingClasses(), + await shadowdark.compendiums.spellcastingBaseClasses(), this.item.system.class ?? [] ); diff --git a/system/src/sheets/PlayerSheetSD.mjs b/system/src/sheets/PlayerSheetSD.mjs index a1c838f2..feed6595 100644 --- a/system/src/sheets/PlayerSheetSD.mjs +++ b/system/src/sheets/PlayerSheetSD.mjs @@ -586,17 +586,46 @@ export default class PlayerSheetSD extends ActorSheetSD { } async _onOpenSpellBook(event) { - const actorClass = await this.actor.getClass(); - let spellClass = actorClass.system.spellcasting.class; - if (spellClass === "") { - spellClass = this.actor.system.class; + const playerSpellcasterClasses = await this.actor.getSpellcasterClasses(); + + const openChosenSpellbook = classUuid => { + new shadowdark.apps.SpellBookSD( + classUuid, + this.actor.id + ).render(true); + }; + + if (playerSpellcasterClasses.length <= 0) { + return ui.notifications.error( + game.i18n.localize("SHADOWDARK.item.errors.no_spellcasting_classes"), + { permanent: false } + ); + } + else if (playerSpellcasterClasses.length === 1) { + return openChosenSpellbook(playerSpellcasterClasses[0].uuid); + } + else { + return renderTemplate( + "systems/shadowdark/templates/dialog/choose-spellbook.hbs", + {classes: playerSpellcasterClasses} + ).then(html => { + const dialog = new Dialog({ + title: game.i18n.localize("SHADOWDARK.dialog.spellbook.open_which_class.title"), + content: html, + buttons: {}, + render: html => { + html.find("[data-action='open-class-spellbook']").click( + event => { + event.preventDefault(); + openChosenSpellbook(event.currentTarget.dataset.uuid); + dialog.close(); + } + ); + }, + }).render(true); + }); } - let spellbook = new shadowdark.apps.SpellBookSD( - spellClass, - this.actor.id - ); - spellbook.render(true); } async _onlevelUp(event) { diff --git a/system/template.json b/system/template.json index f8f10145..8c2ff4e3 100644 --- a/system/template.json +++ b/system/template.json @@ -115,6 +115,7 @@ "rangedAttackBonus": 0, "rangedDamageBonus": 0, "spellcastingCheckBonus": 0, + "spellcastingClasses": [], "unarmoredAcBonus": 0, "weaponDamageDieD12": [], "weaponDamageDieImprovementByProperty": [], diff --git a/system/templates/actors/player/details.hbs b/system/templates/actors/player/details.hbs index 711389b9..fe5d4ce4 100644 --- a/system/templates/actors/player/details.hbs +++ b/system/templates/actors/player/details.hbs @@ -47,7 +47,14 @@
    - {{#if isSpellcaster}}{{/if}} + {{#if isSpellcaster}} + + {{/if}} {{uuidToName system.class}}
    diff --git a/system/templates/actors/player/inventory/coins.hbs b/system/templates/actors/player/inventory/coins.hbs index 9baea992..78e27189 100644 --- a/system/templates/actors/player/inventory/coins.hbs +++ b/system/templates/actors/player/inventory/coins.hbs @@ -4,7 +4,7 @@
    -
    +
    {{numberInput actor.system.coins.gp name="system.coins.gp" diff --git a/system/templates/actors/player/spells.hbs b/system/templates/actors/player/spells.hbs index 29cf55ab..adbb8b8e 100644 --- a/system/templates/actors/player/spells.hbs +++ b/system/templates/actors/player/spells.hbs @@ -1,7 +1,15 @@
    {{#if isSpellcaster}} -
    {{localize "SHADOWDARK.sheet.item.tab.spellsknown"}}
    +
    + {{localize "SHADOWDARK.sheet.item.tab.spellsknown"}} +   + +
    {{#each spells as |tier tid|}}
    1. diff --git a/system/templates/dialog/choose-spellbook.hbs b/system/templates/dialog/choose-spellbook.hbs new file mode 100644 index 00000000..5ac51c49 --- /dev/null +++ b/system/templates/dialog/choose-spellbook.hbs @@ -0,0 +1,13 @@ +
      +
      + {{#each classes}} + + {{/each}} +
      +
      From f7770ec30ecfade011d0154123e31269a02d4fc8 Mon Sep 17 00:00:00 2001 From: PrototypeESBU <> Date: Sun, 27 Oct 2024 21:15:43 +1000 Subject: [PATCH 074/182] Working. needs clean up --- system/shadowdark.mjs | 1 + system/src/utils/ChecksSD.mjs | 63 +++++++++++++++++++++++------------ 2 files changed, 43 insertions(+), 21 deletions(-) diff --git a/system/shadowdark.mjs b/system/shadowdark.mjs index baeccfc0..5caae811 100644 --- a/system/shadowdark.mjs +++ b/system/shadowdark.mjs @@ -39,6 +39,7 @@ globalThis.shadowdark = { log: Logger.log, macro: ShadowdarkMacro, sheets, + checks: ChecksSD, utils: UtilitySD, warn: Logger.warn, }; diff --git a/system/src/utils/ChecksSD.mjs b/system/src/utils/ChecksSD.mjs index e0fe0efc..13a4b28a 100644 --- a/system/src/utils/ChecksSD.mjs +++ b/system/src/utils/ChecksSD.mjs @@ -1,24 +1,31 @@ export default class ChecksSD { static async registerEnrichers() { - console.warn("enricher"); // load custom text enrichers - // [[/check STAT DC]] - // [[/request STAT DC]] + // [[check DC STAT]] + // [[request DC STAT]] CONFIG.TextEditor.enrichers.push({ - pattern: /\[\[\/(?check|request)\s(?\w{3})\s(?\d+)\]\]/g, + pattern: /\[\[(?check|request)\s(?\d+)\s(?\w{3})\]\]/g, enricher: async (match, options) => { - let { command, stat, dc } = match.groups; + let { command, dc, stat } = match.groups; + + // Check for invalid data + if (!parseInt(dc)) return; + if (!CONFIG.SHADOWDARK.ABILITY_KEYS.includes(stat.toLowerCase())) return; + + // create replacement html const link = document.createElement("a"); + link.className = "content-link"; link.dataset.command = command; - link.dataset.stat = stat; link.dataset.dc = dc; + link.dataset.stat = stat; + const linkText = `DC ${dc} ${stat.toUpperCase()}`; switch (command) { case "check": - link.innerHTML = `DC ${dc} ${stat}`; + link.innerHTML = `${linkText}`; break; case "request": - link.innerHTML = `DC ${dc} ${stat}`; + link.innerHTML = `${linkText}`; break; } return link; @@ -32,26 +39,40 @@ export default class ChecksSD { let data = event.target?.dataset; if ( !data.command ) return; - let options = {}; - if (event.shiftKey) { - options.fastForward = true; - } - switch (data.command) { case "check": - let actor = game.user.character; - if (actor) { - actor.rollAbility(data.stat, options); + let options = {}; + if (event.shiftKey) { + options.fastForward = true; } - else { - ui.notification.error("You do not have a character selected!"); - } - + shadowdark.checks.rollCheck(data.dc, data.stat, options); break; case "request": - console.log("Request Check"); + shadowdark.checks.displayRequest(data.dc, data.stat); break; } } + static async rollCheck(dc, stat, options={}) { + let actor = game.user.character; + if (!actor) { + ui.notification.error("You do not have a character selected!"); + } + if (dc) { + options.target = dc; + } + actor.rollAbility(stat, options); + } + + + static async displayRequest(dc, stat) { + const HTML = `
      [[check ${dc} ${stat}]]
      `; + const chatData = { + user: game.user._id, + flavor: "Requesting a check", + content: HTML, + }; + ChatMessage.create(chatData, {}); + } + } From 2bb0d8aef32a06a3a18f1f602878e9f2cd57d5c4 Mon Sep 17 00:00:00 2001 From: PrototypeESBU <> Date: Mon, 28 Oct 2024 08:59:25 +1000 Subject: [PATCH 075/182] prevented error when using uppercase --- system/src/utils/ChecksSD.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/src/utils/ChecksSD.mjs b/system/src/utils/ChecksSD.mjs index 13a4b28a..840e17c0 100644 --- a/system/src/utils/ChecksSD.mjs +++ b/system/src/utils/ChecksSD.mjs @@ -61,7 +61,7 @@ export default class ChecksSD { if (dc) { options.target = dc; } - actor.rollAbility(stat, options); + actor.rollAbility(stat.toLowerCase(), options); } From 3c2e48494ab79c9b440b45b12d43be0b4faf32e3 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 28 Oct 2024 14:40:19 +0000 Subject: [PATCH 076/182] closes #927 --- system/src/migrations/MigrationRunnerSD.mjs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/system/src/migrations/MigrationRunnerSD.mjs b/system/src/migrations/MigrationRunnerSD.mjs index 04962c86..3e06a731 100644 --- a/system/src/migrations/MigrationRunnerSD.mjs +++ b/system/src/migrations/MigrationRunnerSD.mjs @@ -100,7 +100,9 @@ export default class MigrationRunnerSD { // anything if (token.actorLink || !game.actors.has(token.actorId)) continue; - const actorData = duplicate(game.actors.get(token.actorId)); + const actorData = foundry.utils.duplicate( + game.actors.get(token.actorId) + ); const delta = token.delta; From 660f0383eb965bf521981a39c065068b6913e1b0 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 28 Oct 2024 14:47:27 +0000 Subject: [PATCH 077/182] closes #928 --- .../classes.db/bard__112M28Tvi2ju06BE.json | 78 ++++++++++++++++++- .../desert_rider__nFz0c666A4wUcBNS.json | 78 ++++++++++++++++++- .../classes.db/fighter__hO7KrvqDRH6kvftJ.json | 78 ++++++++++++++++++- ...knight_of_st__ydris__0uVUOXKuX9xfJ600.json | 4 + .../classes.db/level_0__6LEKsG1HEw3dbo27.json | 78 ++++++++++++++++++- .../pit_fighter__Ox27sOstCqZfKIBI.json | 78 ++++++++++++++++++- .../classes.db/priest__oZWzXx1WRLg286zD.json | 4 + .../classes.db/ranger__SIEizdu3Jv9DHY1m.json | 78 ++++++++++++++++++- .../ras_godai__7tlVtlk1zbMQz8qF.json | 78 ++++++++++++++++++- .../sea_wolf__fEWU4eBsIyUygRJG.json | 78 ++++++++++++++++++- .../classes.db/seer__xdjod5gPhNPIkLth.json | 4 + .../classes.db/thief__C6wkCa2w5dlgSq7f.json | 78 ++++++++++++++++++- .../classes.db/warlock__waXnHdAHSHSo0dQI.json | 78 ++++++++++++++++++- .../classes.db/witch__KGnBAFiTiLHZJUND.json | 4 + .../classes.db/wizard__035nuVkU9q2wtMPs.json | 4 + .../all_nord_gods__7Ay6ImjgTQAMDc0M.json | 19 +++++ .../almazzat__5fPrD7qhcNYXxmgD.json | 17 ++++ .../deities__DOr658CRB6xwzgeB.json | 10 +++ .../freya__R6m1FzSnuw5OnSpB.json | 19 +++++ .../gede__FhDBOHUircue27aV.json | 18 +++++ .../kytheros__EpJT45EeH6ZmqoFp.json | 17 ++++ .../loki__rlrWLhbyaJZNrbND.json | 19 +++++ ...adeera_the_covenant__p91vJhT8FXvb2mLj.json | 17 ++++ .../memnon__oT5Urxeq9eAeXJZf.json | 17 ++++ .../mugdulblub__Kw1FhdDLUUjdqpLw.json | 18 +++++ .../odin__iblZelXFcIZFbPFH.json | 19 +++++ .../ord__w9GdZSr5XYNjIeeR.json | 18 +++++ .../patrons__3aze8z3qds3mZZm9.json | 10 +++ .../ramlaat__6qeBzYJUTgrMhUcW.json | 18 +++++ .../saint_terragnis__hNbUUJnD6HIda5tl.json | 17 ++++ .../shune_the_vile__cQGIVxXN6caEcOWt.json | 17 ++++ .../the_lost__r1j3fFsxwgxvIqxl.json | 18 +++++ .../the_willowman__YiYcBAvmzIlXK53d.json | 17 ++++ .../titania__lLaLJrEcGxU4Kc1W.json | 17 ++++ .../creeg_greythorn__PTFsYZ8ni3MbSdw8.json | 5 +- .../elbin_grizzlegut__RfFy5Nq3izy5oVD6.json | 5 +- .../iraga_draguul__CVFznZtBMmHG2w4a.json | 5 +- .../jorbin_ironhelm__wnjtoBC4k5dIiG8X.json | 5 +- .../martin_rast__uXk56wpEwdiTfAQN.json | 5 +- .../ralina_biggins__x3L0onniGSB97CU7.json | 5 +- .../yriel_lirandar__4gxXdPgUd0ofz89A.json | 5 +- .../zaldini_the_red__Jnb0sFKKKrAfowY0.json | 5 +- ...on_boons__almazzat__hywroIYso1ANoq4N.json} | 2 +- ...on_boons__kytheros__3pf5QyJjatNkylNv.json} | 2 +- ..._boons__mugdulblub__uM6xHa4gqStMgONB.json} | 2 +- ...ns__shune_the_vile__oKkk7o3Zhlab2vie.json} | 2 +- ...ons__the_willowman__jeMMr372yditrKMj.json} | 2 +- ...ron_boons__titania__mi0QYvreMf9j512E.json} | 2 +- .../talents.db/perform__J4KYu5M32T81yE1f.json | 19 ----- .../migrations/updates/Update_241028_1.mjs | 27 +++++++ system/src/migrations/updates/_module.mjs | 1 + system/system.json | 20 ++--- system/template.json | 5 ++ 53 files changed, 1193 insertions(+), 53 deletions(-) create mode 100644 data/packs/patrons-and-deities.db/all_nord_gods__7Ay6ImjgTQAMDc0M.json create mode 100644 data/packs/patrons-and-deities.db/almazzat__5fPrD7qhcNYXxmgD.json create mode 100644 data/packs/patrons-and-deities.db/deities__DOr658CRB6xwzgeB.json create mode 100644 data/packs/patrons-and-deities.db/freya__R6m1FzSnuw5OnSpB.json create mode 100644 data/packs/patrons-and-deities.db/gede__FhDBOHUircue27aV.json create mode 100644 data/packs/patrons-and-deities.db/kytheros__EpJT45EeH6ZmqoFp.json create mode 100644 data/packs/patrons-and-deities.db/loki__rlrWLhbyaJZNrbND.json create mode 100644 data/packs/patrons-and-deities.db/madeera_the_covenant__p91vJhT8FXvb2mLj.json create mode 100644 data/packs/patrons-and-deities.db/memnon__oT5Urxeq9eAeXJZf.json create mode 100644 data/packs/patrons-and-deities.db/mugdulblub__Kw1FhdDLUUjdqpLw.json create mode 100644 data/packs/patrons-and-deities.db/odin__iblZelXFcIZFbPFH.json create mode 100644 data/packs/patrons-and-deities.db/ord__w9GdZSr5XYNjIeeR.json create mode 100644 data/packs/patrons-and-deities.db/patrons__3aze8z3qds3mZZm9.json create mode 100644 data/packs/patrons-and-deities.db/ramlaat__6qeBzYJUTgrMhUcW.json create mode 100644 data/packs/patrons-and-deities.db/saint_terragnis__hNbUUJnD6HIda5tl.json create mode 100644 data/packs/patrons-and-deities.db/shune_the_vile__cQGIVxXN6caEcOWt.json create mode 100644 data/packs/patrons-and-deities.db/the_lost__r1j3fFsxwgxvIqxl.json create mode 100644 data/packs/patrons-and-deities.db/the_willowman__YiYcBAvmzIlXK53d.json create mode 100644 data/packs/patrons-and-deities.db/titania__lLaLJrEcGxU4Kc1W.json rename data/packs/rollable-tables.db/{almazzat_boons__hywroIYso1ANoq4N.json => patron_boons__almazzat__hywroIYso1ANoq4N.json} (94%) rename data/packs/rollable-tables.db/{kytheros_boons__3pf5QyJjatNkylNv.json => patron_boons__kytheros__3pf5QyJjatNkylNv.json} (93%) rename data/packs/rollable-tables.db/{mugdulblub_boons__uM6xHa4gqStMgONB.json => patron_boons__mugdulblub__uM6xHa4gqStMgONB.json} (94%) rename data/packs/rollable-tables.db/{shune_the_vile_boons__oKkk7o3Zhlab2vie.json => patron_boons__shune_the_vile__oKkk7o3Zhlab2vie.json} (92%) rename data/packs/rollable-tables.db/{the_willowman_boons__jeMMr372yditrKMj.json => patron_boons__the_willowman__jeMMr372yditrKMj.json} (93%) rename data/packs/rollable-tables.db/{titania_boons__mi0QYvreMf9j512E.json => patron_boons__titania__mi0QYvreMf9j512E.json} (94%) delete mode 100644 data/packs/talents.db/perform__J4KYu5M32T81yE1f.json create mode 100644 system/src/migrations/updates/Update_241028_1.mjs diff --git a/data/packs/classes.db/bard__112M28Tvi2ju06BE.json b/data/packs/classes.db/bard__112M28Tvi2ju06BE.json index 6cca77b0..5d371f83 100644 --- a/data/packs/classes.db/bard__112M28Tvi2ju06BE.json +++ b/data/packs/classes.db/bard__112M28Tvi2ju06BE.json @@ -31,6 +31,10 @@ "selectOptions": [ ] }, + "patron": { + "required": false, + "startingBoons": 0 + }, "predefinedEffects": "", "source": { "title": "bard-and-ranger" @@ -38,7 +42,79 @@ "spellcasting": { "ability": "cha", "baseDifficulty": 10, - "class": "__not_spellcaster__" + "class": "__not_spellcaster__", + "spellsknown": { + "1": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "10": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "2": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "3": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "4": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "5": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "6": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "7": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "8": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "9": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + } + } }, "talentChoiceCount": 0, "talentChoices": [ diff --git a/data/packs/classes.db/desert_rider__nFz0c666A4wUcBNS.json b/data/packs/classes.db/desert_rider__nFz0c666A4wUcBNS.json index dcf52ac8..fc457231 100644 --- a/data/packs/classes.db/desert_rider__nFz0c666A4wUcBNS.json +++ b/data/packs/classes.db/desert_rider__nFz0c666A4wUcBNS.json @@ -30,6 +30,10 @@ "selectOptions": [ ] }, + "patron": { + "required": false, + "startingBoons": 0 + }, "predefinedEffects": "", "source": { "page": 0, @@ -38,7 +42,79 @@ "spellcasting": { "ability": "", "baseDifficulty": 10, - "class": "__not_spellcaster__" + "class": "__not_spellcaster__", + "spellsknown": { + "1": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "10": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "2": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "3": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "4": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "5": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "6": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "7": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "8": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "9": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + } + } }, "talentChoiceCount": 0, "talentChoices": [ diff --git a/data/packs/classes.db/fighter__hO7KrvqDRH6kvftJ.json b/data/packs/classes.db/fighter__hO7KrvqDRH6kvftJ.json index fb3bc3a1..ab5c920f 100644 --- a/data/packs/classes.db/fighter__hO7KrvqDRH6kvftJ.json +++ b/data/packs/classes.db/fighter__hO7KrvqDRH6kvftJ.json @@ -28,6 +28,10 @@ "selectOptions": [ ] }, + "patron": { + "required": false, + "startingBoons": 0 + }, "predefinedEffects": "", "source": { "title": "core-rules" @@ -35,7 +39,79 @@ "spellcasting": { "ability": "", "baseDifficulty": 10, - "class": "__not_spellcaster__" + "class": "__not_spellcaster__", + "spellsknown": { + "1": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "10": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "2": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "3": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "4": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "5": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "6": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "7": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "8": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "9": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + } + } }, "talentChoiceCount": 0, "talentChoices": [ diff --git a/data/packs/classes.db/knight_of_st__ydris__0uVUOXKuX9xfJ600.json b/data/packs/classes.db/knight_of_st__ydris__0uVUOXKuX9xfJ600.json index 5f6d9022..74d36e29 100644 --- a/data/packs/classes.db/knight_of_st__ydris__0uVUOXKuX9xfJ600.json +++ b/data/packs/classes.db/knight_of_st__ydris__0uVUOXKuX9xfJ600.json @@ -30,6 +30,10 @@ "selectOptions": [ ] }, + "patron": { + "required": false, + "startingBoons": 0 + }, "predefinedEffects": "", "source": { "page": 0, diff --git a/data/packs/classes.db/level_0__6LEKsG1HEw3dbo27.json b/data/packs/classes.db/level_0__6LEKsG1HEw3dbo27.json index d6ed807e..03b280e2 100644 --- a/data/packs/classes.db/level_0__6LEKsG1HEw3dbo27.json +++ b/data/packs/classes.db/level_0__6LEKsG1HEw3dbo27.json @@ -28,6 +28,10 @@ "selectOptions": [ ] }, + "patron": { + "required": false, + "startingBoons": 0 + }, "predefinedEffects": "", "source": { "title": "core-rules" @@ -35,7 +39,79 @@ "spellcasting": { "ability": "", "baseDifficulty": 10, - "class": "__not_spellcaster__" + "class": "__not_spellcaster__", + "spellsknown": { + "1": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "10": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "2": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "3": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "4": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "5": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "6": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "7": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "8": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "9": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + } + } }, "talentChoiceCount": 0, "talentChoices": [ diff --git a/data/packs/classes.db/pit_fighter__Ox27sOstCqZfKIBI.json b/data/packs/classes.db/pit_fighter__Ox27sOstCqZfKIBI.json index e462dfca..12cf8d23 100644 --- a/data/packs/classes.db/pit_fighter__Ox27sOstCqZfKIBI.json +++ b/data/packs/classes.db/pit_fighter__Ox27sOstCqZfKIBI.json @@ -30,6 +30,10 @@ "selectOptions": [ ] }, + "patron": { + "required": false, + "startingBoons": 0 + }, "predefinedEffects": "", "source": { "page": 0, @@ -38,7 +42,79 @@ "spellcasting": { "ability": "", "baseDifficulty": 10, - "class": "__not_spellcaster__" + "class": "__not_spellcaster__", + "spellsknown": { + "1": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "10": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "2": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "3": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "4": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "5": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "6": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "7": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "8": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "9": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + } + } }, "talentChoiceCount": 0, "talentChoices": [ diff --git a/data/packs/classes.db/priest__oZWzXx1WRLg286zD.json b/data/packs/classes.db/priest__oZWzXx1WRLg286zD.json index da9be68c..05be77da 100644 --- a/data/packs/classes.db/priest__oZWzXx1WRLg286zD.json +++ b/data/packs/classes.db/priest__oZWzXx1WRLg286zD.json @@ -31,6 +31,10 @@ "Compendium.shadowdark.languages.Item.ufwua5RXnJXlA0St" ] }, + "patron": { + "required": false, + "startingBoons": 0 + }, "predefinedEffects": "", "source": { "title": "core-rules" diff --git a/data/packs/classes.db/ranger__SIEizdu3Jv9DHY1m.json b/data/packs/classes.db/ranger__SIEizdu3Jv9DHY1m.json index ee31b66e..9948ee92 100644 --- a/data/packs/classes.db/ranger__SIEizdu3Jv9DHY1m.json +++ b/data/packs/classes.db/ranger__SIEizdu3Jv9DHY1m.json @@ -30,6 +30,10 @@ "selectOptions": [ ] }, + "patron": { + "required": false, + "startingBoons": 0 + }, "predefinedEffects": "", "source": { "title": "bard-and-ranger" @@ -37,7 +41,79 @@ "spellcasting": { "ability": "", "baseDifficulty": 10, - "class": "__not_spellcaster__" + "class": "__not_spellcaster__", + "spellsknown": { + "1": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "10": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "2": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "3": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "4": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "5": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "6": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "7": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "8": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "9": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + } + } }, "talentChoiceCount": 0, "talentChoices": [ diff --git a/data/packs/classes.db/ras_godai__7tlVtlk1zbMQz8qF.json b/data/packs/classes.db/ras_godai__7tlVtlk1zbMQz8qF.json index 1a748329..d054e8d8 100644 --- a/data/packs/classes.db/ras_godai__7tlVtlk1zbMQz8qF.json +++ b/data/packs/classes.db/ras_godai__7tlVtlk1zbMQz8qF.json @@ -30,6 +30,10 @@ "selectOptions": [ ] }, + "patron": { + "required": false, + "startingBoons": 0 + }, "predefinedEffects": "", "source": { "page": 0, @@ -38,7 +42,79 @@ "spellcasting": { "ability": "", "baseDifficulty": 10, - "class": "__not_spellcaster__" + "class": "__not_spellcaster__", + "spellsknown": { + "1": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "10": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "2": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "3": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "4": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "5": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "6": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "7": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "8": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "9": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + } + } }, "talentChoiceCount": 0, "talentChoices": [ diff --git a/data/packs/classes.db/sea_wolf__fEWU4eBsIyUygRJG.json b/data/packs/classes.db/sea_wolf__fEWU4eBsIyUygRJG.json index a62bc39b..30f83f2e 100644 --- a/data/packs/classes.db/sea_wolf__fEWU4eBsIyUygRJG.json +++ b/data/packs/classes.db/sea_wolf__fEWU4eBsIyUygRJG.json @@ -31,6 +31,10 @@ "selectOptions": [ ] }, + "patron": { + "required": false, + "startingBoons": 0 + }, "predefinedEffects": "", "source": { "page": 0, @@ -39,7 +43,79 @@ "spellcasting": { "ability": "", "baseDifficulty": 10, - "class": "__not_spellcaster__" + "class": "__not_spellcaster__", + "spellsknown": { + "1": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "10": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "2": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "3": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "4": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "5": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "6": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "7": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "8": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "9": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + } + } }, "talentChoiceCount": 0, "talentChoices": [ diff --git a/data/packs/classes.db/seer__xdjod5gPhNPIkLth.json b/data/packs/classes.db/seer__xdjod5gPhNPIkLth.json index 46376e01..ebc01b80 100644 --- a/data/packs/classes.db/seer__xdjod5gPhNPIkLth.json +++ b/data/packs/classes.db/seer__xdjod5gPhNPIkLth.json @@ -29,6 +29,10 @@ "selectOptions": [ ] }, + "patron": { + "required": false, + "startingBoons": 0 + }, "predefinedEffects": "", "source": { "page": 0, diff --git a/data/packs/classes.db/thief__C6wkCa2w5dlgSq7f.json b/data/packs/classes.db/thief__C6wkCa2w5dlgSq7f.json index ec916495..98e0fa04 100644 --- a/data/packs/classes.db/thief__C6wkCa2w5dlgSq7f.json +++ b/data/packs/classes.db/thief__C6wkCa2w5dlgSq7f.json @@ -30,6 +30,10 @@ "selectOptions": [ ] }, + "patron": { + "required": false, + "startingBoons": 0 + }, "predefinedEffects": "", "source": { "title": "core-rules" @@ -37,7 +41,79 @@ "spellcasting": { "ability": "", "baseDifficulty": 10, - "class": "__not_spellcaster__" + "class": "__not_spellcaster__", + "spellsknown": { + "1": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "10": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "2": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "3": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "4": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "5": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "6": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "7": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "8": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "9": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + } + } }, "talentChoiceCount": 0, "talentChoices": [ diff --git a/data/packs/classes.db/warlock__waXnHdAHSHSo0dQI.json b/data/packs/classes.db/warlock__waXnHdAHSHSo0dQI.json index 8b8a4f33..9132459c 100644 --- a/data/packs/classes.db/warlock__waXnHdAHSHSo0dQI.json +++ b/data/packs/classes.db/warlock__waXnHdAHSHSo0dQI.json @@ -36,6 +36,10 @@ "Compendium.shadowdark.languages.Item.ufwua5RXnJXlA0St" ] }, + "patron": { + "required": true, + "startingBoons": 1 + }, "predefinedEffects": "", "source": { "page": 0, @@ -44,7 +48,79 @@ "spellcasting": { "ability": "", "baseDifficulty": 10, - "class": "__not_spellcaster__" + "class": "__not_spellcaster__", + "spellsknown": { + "1": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "10": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "2": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "3": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "4": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "5": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "6": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "7": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "8": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + }, + "9": { + "1": null, + "2": null, + "3": null, + "4": null, + "5": null + } + } }, "talentChoiceCount": 0, "talentChoices": [ diff --git a/data/packs/classes.db/witch__KGnBAFiTiLHZJUND.json b/data/packs/classes.db/witch__KGnBAFiTiLHZJUND.json index 51b6b667..ca936173 100644 --- a/data/packs/classes.db/witch__KGnBAFiTiLHZJUND.json +++ b/data/packs/classes.db/witch__KGnBAFiTiLHZJUND.json @@ -32,6 +32,10 @@ "selectOptions": [ ] }, + "patron": { + "required": false, + "startingBoons": 0 + }, "predefinedEffects": "", "source": { "page": 0, diff --git a/data/packs/classes.db/wizard__035nuVkU9q2wtMPs.json b/data/packs/classes.db/wizard__035nuVkU9q2wtMPs.json index 207519a0..b0f88b29 100644 --- a/data/packs/classes.db/wizard__035nuVkU9q2wtMPs.json +++ b/data/packs/classes.db/wizard__035nuVkU9q2wtMPs.json @@ -28,6 +28,10 @@ "selectOptions": [ ] }, + "patron": { + "required": false, + "startingBoons": 0 + }, "predefinedEffects": "", "source": { "title": "core-rules" diff --git a/data/packs/patrons-and-deities.db/all_nord_gods__7Ay6ImjgTQAMDc0M.json b/data/packs/patrons-and-deities.db/all_nord_gods__7Ay6ImjgTQAMDc0M.json new file mode 100644 index 00000000..6cc5c9c3 --- /dev/null +++ b/data/packs/patrons-and-deities.db/all_nord_gods__7Ay6ImjgTQAMDc0M.json @@ -0,0 +1,19 @@ +{ + "_id": "7Ay6ImjgTQAMDc0M", + "_key": "!items!7Ay6ImjgTQAMDc0M", + "effects": [ + ], + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", + "name": "All Nord Gods", + "system": { + "alignment": "", + "description": "

      The faithful worship all of the Old Gods in turn, but many find they align with one in particular. Paying respect to all the gods is not a betrayal; it is honorable.

      ", + "predefinedEffects": "", + "source": { + "page": 0, + "title": "cursed-scroll-3" + } + }, + "type": "Deity" +} diff --git a/data/packs/patrons-and-deities.db/almazzat__5fPrD7qhcNYXxmgD.json b/data/packs/patrons-and-deities.db/almazzat__5fPrD7qhcNYXxmgD.json new file mode 100644 index 00000000..d9d26a5d --- /dev/null +++ b/data/packs/patrons-and-deities.db/almazzat__5fPrD7qhcNYXxmgD.json @@ -0,0 +1,17 @@ +{ + "_id": "5fPrD7qhcNYXxmgD", + "_key": "!items!5fPrD7qhcNYXxmgD", + "effects": [ + ], + "folder": "3aze8z3qds3mZZm9", + "img": "icons/magic/unholy/silhouette-light-fire-blue.webp", + "name": "Almazzat", + "system": { + "boonTable": "Compendium.shadowdark.rollable-tables.RollTable.hywroIYso1ANoq4N", + "description": "

      A wolf-headed arch-demon with six eyes and six horns. Almazzat seeks to wrest the Sands of the Ages from his father, Kytheros.

      ", + "source": { + "title": "cursed-scroll-1" + } + }, + "type": "Patron" +} diff --git a/data/packs/patrons-and-deities.db/deities__DOr658CRB6xwzgeB.json b/data/packs/patrons-and-deities.db/deities__DOr658CRB6xwzgeB.json new file mode 100644 index 00000000..274558d3 --- /dev/null +++ b/data/packs/patrons-and-deities.db/deities__DOr658CRB6xwzgeB.json @@ -0,0 +1,10 @@ +{ + "_id": "DOr658CRB6xwzgeB", + "_key": "!folders!DOr658CRB6xwzgeB", + "color": "#22252b", + "description": "", + "folder": null, + "name": "Deities", + "sorting": "a", + "type": "Item" +} diff --git a/data/packs/patrons-and-deities.db/freya__R6m1FzSnuw5OnSpB.json b/data/packs/patrons-and-deities.db/freya__R6m1FzSnuw5OnSpB.json new file mode 100644 index 00000000..c2a90873 --- /dev/null +++ b/data/packs/patrons-and-deities.db/freya__R6m1FzSnuw5OnSpB.json @@ -0,0 +1,19 @@ +{ + "_id": "R6m1FzSnuw5OnSpB", + "_key": "!items!R6m1FzSnuw5OnSpB", + "effects": [ + ], + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", + "name": "Freya", + "system": { + "alignment": "neutral", + "description": "

      The goddess of love and hatred. The Queen of Shield Maidens whose valkyries carry worthy souls to the Great Feast. The First Seer who places her omens in bones, blood, and entrails. Freya inspires the poets and then torments them with lack.

      ", + "predefinedEffects": "", + "source": { + "page": 0, + "title": "cursed-scroll-3" + } + }, + "type": "Deity" +} diff --git a/data/packs/patrons-and-deities.db/gede__FhDBOHUircue27aV.json b/data/packs/patrons-and-deities.db/gede__FhDBOHUircue27aV.json new file mode 100644 index 00000000..cb308c68 --- /dev/null +++ b/data/packs/patrons-and-deities.db/gede__FhDBOHUircue27aV.json @@ -0,0 +1,18 @@ +{ + "_id": "FhDBOHUircue27aV", + "_key": "!items!FhDBOHUircue27aV", + "effects": [ + ], + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", + "name": "Gede", + "system": { + "alignment": "neutral", + "description": "

      The god of feasts, mirth, and the wilds. Gede is usually peaceful, but primal storms rage when her anger rises. Many elves and halflings worship her.

      ", + "predefinedEffects": "", + "source": { + "title": "core-rules" + } + }, + "type": "Deity" +} diff --git a/data/packs/patrons-and-deities.db/kytheros__EpJT45EeH6ZmqoFp.json b/data/packs/patrons-and-deities.db/kytheros__EpJT45EeH6ZmqoFp.json new file mode 100644 index 00000000..320473d8 --- /dev/null +++ b/data/packs/patrons-and-deities.db/kytheros__EpJT45EeH6ZmqoFp.json @@ -0,0 +1,17 @@ +{ + "_id": "EpJT45EeH6ZmqoFp", + "_key": "!items!EpJT45EeH6ZmqoFp", + "effects": [ + ], + "folder": "3aze8z3qds3mZZm9", + "img": "icons/magic/unholy/silhouette-light-fire-blue.webp", + "name": "Kytheros", + "system": { + "boonTable": "Compendium.shadowdark.rollable-tables.RollTable.3pf5QyJjatNkylNv", + "description": "

      The Lord of Time who sees all possible futures. Kytheros seeks the fulfillment of all destinies as they were meant to be.

      ", + "source": { + "title": "cursed-scroll-1" + } + }, + "type": "Patron" +} diff --git a/data/packs/patrons-and-deities.db/loki__rlrWLhbyaJZNrbND.json b/data/packs/patrons-and-deities.db/loki__rlrWLhbyaJZNrbND.json new file mode 100644 index 00000000..cdb36aa5 --- /dev/null +++ b/data/packs/patrons-and-deities.db/loki__rlrWLhbyaJZNrbND.json @@ -0,0 +1,19 @@ +{ + "_id": "rlrWLhbyaJZNrbND", + "_key": "!items!rlrWLhbyaJZNrbND", + "effects": [ + ], + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", + "name": "Loki", + "system": { + "alignment": "chaotic", + "description": "

      The Deceiver who wins with wit and wile. The wolf who disguises himself as a sheep. Loki is glib and infuriating; his words cut like steel, and his laughter howls like a gale. His followers do not seek Valhalla, for they know it will fall when Ragnarok comes.

      ", + "predefinedEffects": "", + "source": { + "page": 0, + "title": "cursed-scroll-3" + } + }, + "type": "Deity" +} diff --git a/data/packs/patrons-and-deities.db/madeera_the_covenant__p91vJhT8FXvb2mLj.json b/data/packs/patrons-and-deities.db/madeera_the_covenant__p91vJhT8FXvb2mLj.json new file mode 100644 index 00000000..734c78f6 --- /dev/null +++ b/data/packs/patrons-and-deities.db/madeera_the_covenant__p91vJhT8FXvb2mLj.json @@ -0,0 +1,17 @@ +{ + "_id": "p91vJhT8FXvb2mLj", + "_key": "!items!p91vJhT8FXvb2mLj", + "effects": [ + ], + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", + "name": "Madeera the Covenant", + "system": { + "alignment": "lawful", + "description": "

      Madeera was the first manifestation of Law. She carries every law of reality, a dictate called the Covenant, written on her skin in precise symbols.

      ", + "source": { + "title": "core-rules" + } + }, + "type": "Deity" +} diff --git a/data/packs/patrons-and-deities.db/memnon__oT5Urxeq9eAeXJZf.json b/data/packs/patrons-and-deities.db/memnon__oT5Urxeq9eAeXJZf.json new file mode 100644 index 00000000..e991c743 --- /dev/null +++ b/data/packs/patrons-and-deities.db/memnon__oT5Urxeq9eAeXJZf.json @@ -0,0 +1,17 @@ +{ + "_id": "oT5Urxeq9eAeXJZf", + "_key": "!items!oT5Urxeq9eAeXJZf", + "effects": [ + ], + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", + "name": "Memnon", + "system": { + "alignment": "chaotic", + "description": "

      Memnon was the first manifestation of Chaos. He is Madeera’s twin, a red-maned, leonine being whose ultimate ambition is to rend the cosmic laws of the Covenant from his sister’s skin.

      ", + "source": { + "title": "core-rules" + } + }, + "type": "Deity" +} diff --git a/data/packs/patrons-and-deities.db/mugdulblub__Kw1FhdDLUUjdqpLw.json b/data/packs/patrons-and-deities.db/mugdulblub__Kw1FhdDLUUjdqpLw.json new file mode 100644 index 00000000..868b568a --- /dev/null +++ b/data/packs/patrons-and-deities.db/mugdulblub__Kw1FhdDLUUjdqpLw.json @@ -0,0 +1,18 @@ +{ + "_id": "Kw1FhdDLUUjdqpLw", + "_key": "!items!Kw1FhdDLUUjdqpLw", + "effects": [ + ], + "folder": "3aze8z3qds3mZZm9", + "img": "icons/magic/unholy/silhouette-light-fire-blue.webp", + "name": "Mugdulblub", + "system": { + "boonTable": "Compendium.shadowdark.rollable-tables.RollTable.uM6xHa4gqStMgONB", + "description": "

      The Elder Ooze that leaks between the cracks in memory and the darkness between the stars. Mugdulblub seeks the dissolution of all physical form.

      ", + "predefinedEffects": "", + "source": { + "title": "cursed-scroll-1" + } + }, + "type": "Patron" +} diff --git a/data/packs/patrons-and-deities.db/odin__iblZelXFcIZFbPFH.json b/data/packs/patrons-and-deities.db/odin__iblZelXFcIZFbPFH.json new file mode 100644 index 00000000..f898c70b --- /dev/null +++ b/data/packs/patrons-and-deities.db/odin__iblZelXFcIZFbPFH.json @@ -0,0 +1,19 @@ +{ + "_id": "iblZelXFcIZFbPFH", + "_key": "!items!iblZelXFcIZFbPFH", + "effects": [ + ], + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", + "name": "Odin", + "system": { + "alignment": "lawful", + "description": "

      The Allfather. Odin the One-Eyed values strength and cleverness. His twin ravens wing through the night, spying on dreams and memories. Worthy warriors are brought to the Great Hall of Valhalla when they die to feast and fight beside him eternally.

      ", + "predefinedEffects": "", + "source": { + "page": 0, + "title": "cursed-scroll-3" + } + }, + "type": "Deity" +} diff --git a/data/packs/patrons-and-deities.db/ord__w9GdZSr5XYNjIeeR.json b/data/packs/patrons-and-deities.db/ord__w9GdZSr5XYNjIeeR.json new file mode 100644 index 00000000..079c8439 --- /dev/null +++ b/data/packs/patrons-and-deities.db/ord__w9GdZSr5XYNjIeeR.json @@ -0,0 +1,18 @@ +{ + "_id": "w9GdZSr5XYNjIeeR", + "_key": "!items!w9GdZSr5XYNjIeeR", + "effects": [ + ], + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", + "name": "Ord", + "system": { + "alignment": "neutral", + "description": "

      Ord the Unbending, the Wise, the Secret-Keeper. He is the god of magic, knowledge, secrets, and equilibrium.

      ", + "predefinedEffects": "", + "source": { + "title": "core-rules" + } + }, + "type": "Deity" +} diff --git a/data/packs/patrons-and-deities.db/patrons__3aze8z3qds3mZZm9.json b/data/packs/patrons-and-deities.db/patrons__3aze8z3qds3mZZm9.json new file mode 100644 index 00000000..da7ed2e2 --- /dev/null +++ b/data/packs/patrons-and-deities.db/patrons__3aze8z3qds3mZZm9.json @@ -0,0 +1,10 @@ +{ + "_id": "3aze8z3qds3mZZm9", + "_key": "!folders!3aze8z3qds3mZZm9", + "color": "#22252b", + "description": "", + "folder": null, + "name": "Patrons", + "sorting": "a", + "type": "Item" +} diff --git a/data/packs/patrons-and-deities.db/ramlaat__6qeBzYJUTgrMhUcW.json b/data/packs/patrons-and-deities.db/ramlaat__6qeBzYJUTgrMhUcW.json new file mode 100644 index 00000000..9b398523 --- /dev/null +++ b/data/packs/patrons-and-deities.db/ramlaat__6qeBzYJUTgrMhUcW.json @@ -0,0 +1,18 @@ +{ + "_id": "6qeBzYJUTgrMhUcW", + "_key": "!items!6qeBzYJUTgrMhUcW", + "effects": [ + ], + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", + "name": "Ramlaat", + "system": { + "alignment": "chaotic", + "description": "

      Ramlaat is the Pillager, the Barbaric, the Horde. Many orcs worship him and live by the Blood Rite, a prophecy that says only the strongest will survive a coming doom.

      ", + "predefinedEffects": "", + "source": { + "title": "core-rules" + } + }, + "type": "Deity" +} diff --git a/data/packs/patrons-and-deities.db/saint_terragnis__hNbUUJnD6HIda5tl.json b/data/packs/patrons-and-deities.db/saint_terragnis__hNbUUJnD6HIda5tl.json new file mode 100644 index 00000000..e855b796 --- /dev/null +++ b/data/packs/patrons-and-deities.db/saint_terragnis__hNbUUJnD6HIda5tl.json @@ -0,0 +1,17 @@ +{ + "_id": "hNbUUJnD6HIda5tl", + "_key": "!items!hNbUUJnD6HIda5tl", + "effects": [ + ], + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", + "name": "Saint Terragnis", + "system": { + "alignment": "lawful", + "description": "

      A legendary knight who is the patron of most lawful humans. She ascended to godhood long ago and is the embodiment of righteousness and justice.

      ", + "source": { + "title": "core-rules" + } + }, + "type": "Deity" +} diff --git a/data/packs/patrons-and-deities.db/shune_the_vile__cQGIVxXN6caEcOWt.json b/data/packs/patrons-and-deities.db/shune_the_vile__cQGIVxXN6caEcOWt.json new file mode 100644 index 00000000..91648d06 --- /dev/null +++ b/data/packs/patrons-and-deities.db/shune_the_vile__cQGIVxXN6caEcOWt.json @@ -0,0 +1,17 @@ +{ + "_id": "cQGIVxXN6caEcOWt", + "_key": "!items!cQGIVxXN6caEcOWt", + "effects": [ + ], + "folder": "3aze8z3qds3mZZm9", + "img": "icons/magic/unholy/silhouette-light-fire-blue.webp", + "name": "Shune the Vile", + "system": { + "boonTable": "Compendium.shadowdark.rollable-tables.RollTable.oKkk7o3Zhlab2vie", + "description": "

      A goddess, the Mother Witch who speaks to her children in the flicker of candles and the rattle of dry bones. Shune seeks hidden secrets and lost lore.

      ", + "source": { + "title": "cursed-scroll-1" + } + }, + "type": "Patron" +} diff --git a/data/packs/patrons-and-deities.db/the_lost__r1j3fFsxwgxvIqxl.json b/data/packs/patrons-and-deities.db/the_lost__r1j3fFsxwgxvIqxl.json new file mode 100644 index 00000000..144a7d08 --- /dev/null +++ b/data/packs/patrons-and-deities.db/the_lost__r1j3fFsxwgxvIqxl.json @@ -0,0 +1,18 @@ +{ + "_id": "r1j3fFsxwgxvIqxl", + "_key": "!items!r1j3fFsxwgxvIqxl", + "effects": [ + ], + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", + "name": "The Lost", + "system": { + "alignment": "", + "description": "

      Two of The Nine are lost to the ages, their names expunged from history and memory. Yet their whispered legend lingers on in ancient, forbidden texts and secret, deep places...

      ", + "predefinedEffects": "", + "source": { + "title": "core-rules" + } + }, + "type": "Deity" +} diff --git a/data/packs/patrons-and-deities.db/the_willowman__YiYcBAvmzIlXK53d.json b/data/packs/patrons-and-deities.db/the_willowman__YiYcBAvmzIlXK53d.json new file mode 100644 index 00000000..ef515477 --- /dev/null +++ b/data/packs/patrons-and-deities.db/the_willowman__YiYcBAvmzIlXK53d.json @@ -0,0 +1,17 @@ +{ + "_id": "YiYcBAvmzIlXK53d", + "_key": "!items!YiYcBAvmzIlXK53d", + "effects": [ + ], + "folder": "3aze8z3qds3mZZm9", + "img": "icons/magic/unholy/silhouette-light-fire-blue.webp", + "name": "The Willowman", + "system": { + "boonTable": "Compendium.shadowdark.rollable-tables.RollTable.jeMMr372yditrKMj", + "description": "

      A ghostly, elongated being who stalks misty forests and watches from the edge of nightmares. The Willowman seeks fear.

      ", + "source": { + "title": "cursed-scroll-1" + } + }, + "type": "Patron" +} diff --git a/data/packs/patrons-and-deities.db/titania__lLaLJrEcGxU4Kc1W.json b/data/packs/patrons-and-deities.db/titania__lLaLJrEcGxU4Kc1W.json new file mode 100644 index 00000000..53c2b0f8 --- /dev/null +++ b/data/packs/patrons-and-deities.db/titania__lLaLJrEcGxU4Kc1W.json @@ -0,0 +1,17 @@ +{ + "_id": "lLaLJrEcGxU4Kc1W", + "_key": "!items!lLaLJrEcGxU4Kc1W", + "effects": [ + ], + "folder": "3aze8z3qds3mZZm9", + "img": "icons/magic/unholy/silhouette-light-fire-blue.webp", + "name": "Titania", + "system": { + "boonTable": "Compendium.shadowdark.rollable-tables.RollTable.mi0QYvreMf9j512E", + "description": "

      The fickle Queen of the Fey who views all of existence as a whimsical dream with hidden meaning and poignant drama. Titania seeks mischief, beauty, and artistry.

      ", + "source": { + "title": "cursed-scroll-1" + } + }, + "type": "Patron" +} diff --git a/data/packs/quickstart-pregens.db/creeg_greythorn__PTFsYZ8ni3MbSdw8.json b/data/packs/quickstart-pregens.db/creeg_greythorn__PTFsYZ8ni3MbSdw8.json index 4ff97dd1..56d4b537 100644 --- a/data/packs/quickstart-pregens.db/creeg_greythorn__PTFsYZ8ni3MbSdw8.json +++ b/data/packs/quickstart-pregens.db/creeg_greythorn__PTFsYZ8ni3MbSdw8.json @@ -183,6 +183,8 @@ "rangedAttackBonus": 0, "rangedDamageBonus": 0, "spellcastingCheckBonus": 0, + "spellcastingClasses": [ + ], "unarmoredAcBonus": 0, "weaponDamageDieD12": [ ], @@ -201,7 +203,7 @@ "gp": 6, "sp": 0 }, - "deity": "Compendium.shadowdark.deities.Item.w9GdZSr5XYNjIeeR", + "deity": "Compendium.shadowdark.patrons-and-deities.Item.w9GdZSr5XYNjIeeR", "flags": { "hpRollLevels": [ ] @@ -223,6 +225,7 @@ "remaining": 0 }, "notes": "", + "patron": "", "slots": 10 }, "type": "Player" diff --git a/data/packs/quickstart-pregens.db/elbin_grizzlegut__RfFy5Nq3izy5oVD6.json b/data/packs/quickstart-pregens.db/elbin_grizzlegut__RfFy5Nq3izy5oVD6.json index d98d2d6f..60816305 100644 --- a/data/packs/quickstart-pregens.db/elbin_grizzlegut__RfFy5Nq3izy5oVD6.json +++ b/data/packs/quickstart-pregens.db/elbin_grizzlegut__RfFy5Nq3izy5oVD6.json @@ -183,6 +183,8 @@ "rangedAttackBonus": 0, "rangedDamageBonus": 0, "spellcastingCheckBonus": 0, + "spellcastingClasses": [ + ], "unarmoredAcBonus": 0, "weaponDamageDieD12": [ ], @@ -201,7 +203,7 @@ "gp": 10, "sp": 0 }, - "deity": "Compendium.shadowdark.deities.Item.p91vJhT8FXvb2mLj", + "deity": "Compendium.shadowdark.patrons-and-deities.Item.p91vJhT8FXvb2mLj", "flags": { "hpRollLevels": [ ] @@ -220,6 +222,7 @@ "remaining": 0 }, "notes": "", + "patron": "", "slots": 10 }, "type": "Player" diff --git a/data/packs/quickstart-pregens.db/iraga_draguul__CVFznZtBMmHG2w4a.json b/data/packs/quickstart-pregens.db/iraga_draguul__CVFznZtBMmHG2w4a.json index b7bf55ae..ed84d363 100644 --- a/data/packs/quickstart-pregens.db/iraga_draguul__CVFznZtBMmHG2w4a.json +++ b/data/packs/quickstart-pregens.db/iraga_draguul__CVFznZtBMmHG2w4a.json @@ -184,6 +184,8 @@ "rangedAttackBonus": 0, "rangedDamageBonus": 0, "spellcastingCheckBonus": 0, + "spellcastingClasses": [ + ], "unarmoredAcBonus": 0, "weaponDamageDieD12": [ ], @@ -202,7 +204,7 @@ "gp": 10, "sp": 0 }, - "deity": "Compendium.shadowdark.deities.Item.hNbUUJnD6HIda5tl", + "deity": "Compendium.shadowdark.patrons-and-deities.Item.hNbUUJnD6HIda5tl", "flags": { "hpRollLevels": [ ] @@ -221,6 +223,7 @@ "remaining": 0 }, "notes": "", + "patron": "", "slots": 10 }, "type": "Player" diff --git a/data/packs/quickstart-pregens.db/jorbin_ironhelm__wnjtoBC4k5dIiG8X.json b/data/packs/quickstart-pregens.db/jorbin_ironhelm__wnjtoBC4k5dIiG8X.json index 08afb11b..8d229c33 100644 --- a/data/packs/quickstart-pregens.db/jorbin_ironhelm__wnjtoBC4k5dIiG8X.json +++ b/data/packs/quickstart-pregens.db/jorbin_ironhelm__wnjtoBC4k5dIiG8X.json @@ -186,6 +186,8 @@ "rangedAttackBonus": 0, "rangedDamageBonus": 0, "spellcastingCheckBonus": 0, + "spellcastingClasses": [ + ], "unarmoredAcBonus": 0, "weaponDamageDieD12": [ ], @@ -204,7 +206,7 @@ "gp": 4, "sp": 0 }, - "deity": "Compendium.shadowdark.deities.Item.p91vJhT8FXvb2mLj", + "deity": "Compendium.shadowdark.patrons-and-deities.Item.p91vJhT8FXvb2mLj", "flags": { "hpRollLevels": [ ] @@ -222,6 +224,7 @@ "remaining": 0 }, "notes": "", + "patron": "", "slots": 10 }, "type": "Player" diff --git a/data/packs/quickstart-pregens.db/martin_rast__uXk56wpEwdiTfAQN.json b/data/packs/quickstart-pregens.db/martin_rast__uXk56wpEwdiTfAQN.json index f1aaa2e7..92abbba8 100644 --- a/data/packs/quickstart-pregens.db/martin_rast__uXk56wpEwdiTfAQN.json +++ b/data/packs/quickstart-pregens.db/martin_rast__uXk56wpEwdiTfAQN.json @@ -180,6 +180,8 @@ "rangedAttackBonus": 0, "rangedDamageBonus": 0, "spellcastingCheckBonus": 0, + "spellcastingClasses": [ + ], "unarmoredAcBonus": 0, "weaponDamageDieD12": [ ], @@ -198,7 +200,7 @@ "gp": 9, "sp": 0 }, - "deity": "Compendium.shadowdark.deities.Item.r1j3fFsxwgxvIqxl", + "deity": "Compendium.shadowdark.patrons-and-deities.Item.r1j3fFsxwgxvIqxl", "flags": { "hpRollLevels": [ ] @@ -216,6 +218,7 @@ "remaining": 0 }, "notes": "", + "patron": "", "slots": 10 }, "type": "Player" diff --git a/data/packs/quickstart-pregens.db/ralina_biggins__x3L0onniGSB97CU7.json b/data/packs/quickstart-pregens.db/ralina_biggins__x3L0onniGSB97CU7.json index be10ece6..987bfc93 100644 --- a/data/packs/quickstart-pregens.db/ralina_biggins__x3L0onniGSB97CU7.json +++ b/data/packs/quickstart-pregens.db/ralina_biggins__x3L0onniGSB97CU7.json @@ -179,6 +179,8 @@ "rangedAttackBonus": 0, "rangedDamageBonus": 0, "spellcastingCheckBonus": 0, + "spellcastingClasses": [ + ], "unarmoredAcBonus": 0, "weaponDamageDieD12": [ ], @@ -197,7 +199,7 @@ "gp": 12, "sp": 0 }, - "deity": "Compendium.shadowdark.deities.Item.FhDBOHUircue27aV", + "deity": "Compendium.shadowdark.patrons-and-deities.Item.FhDBOHUircue27aV", "flags": { "hpRollLevels": [ ] @@ -214,6 +216,7 @@ "remaining": 0 }, "notes": "", + "patron": "", "slots": 10 }, "type": "Player" diff --git a/data/packs/quickstart-pregens.db/yriel_lirandar__4gxXdPgUd0ofz89A.json b/data/packs/quickstart-pregens.db/yriel_lirandar__4gxXdPgUd0ofz89A.json index 9070c4ac..5fd7bdea 100644 --- a/data/packs/quickstart-pregens.db/yriel_lirandar__4gxXdPgUd0ofz89A.json +++ b/data/packs/quickstart-pregens.db/yriel_lirandar__4gxXdPgUd0ofz89A.json @@ -185,6 +185,8 @@ "rangedAttackBonus": 0, "rangedDamageBonus": 0, "spellcastingCheckBonus": 0, + "spellcastingClasses": [ + ], "unarmoredAcBonus": 0, "weaponDamageDieD12": [ ], @@ -203,7 +205,7 @@ "gp": 7, "sp": 0 }, - "deity": "Compendium.shadowdark.deities.Item.FhDBOHUircue27aV", + "deity": "Compendium.shadowdark.patrons-and-deities.Item.FhDBOHUircue27aV", "flags": { "hpRollLevels": [ ] @@ -222,6 +224,7 @@ "remaining": 0 }, "notes": "", + "patron": "", "slots": 10 }, "type": "Player" diff --git a/data/packs/quickstart-pregens.db/zaldini_the_red__Jnb0sFKKKrAfowY0.json b/data/packs/quickstart-pregens.db/zaldini_the_red__Jnb0sFKKKrAfowY0.json index 0cf5f290..bac2c8b1 100644 --- a/data/packs/quickstart-pregens.db/zaldini_the_red__Jnb0sFKKKrAfowY0.json +++ b/data/packs/quickstart-pregens.db/zaldini_the_red__Jnb0sFKKKrAfowY0.json @@ -181,6 +181,8 @@ "rangedAttackBonus": 0, "rangedDamageBonus": 0, "spellcastingCheckBonus": 0, + "spellcastingClasses": [ + ], "unarmoredAcBonus": 0, "weaponDamageDieD12": [ ], @@ -199,7 +201,7 @@ "gp": 8, "sp": 0 }, - "deity": "Compendium.shadowdark.deities.Item.6qeBzYJUTgrMhUcW", + "deity": "Compendium.shadowdark.patrons-and-deities.Item.6qeBzYJUTgrMhUcW", "flags": { "hpRollLevels": [ ] @@ -221,6 +223,7 @@ "remaining": 0 }, "notes": "", + "patron": "", "slots": 10 }, "type": "Player" diff --git a/data/packs/rollable-tables.db/almazzat_boons__hywroIYso1ANoq4N.json b/data/packs/rollable-tables.db/patron_boons__almazzat__hywroIYso1ANoq4N.json similarity index 94% rename from data/packs/rollable-tables.db/almazzat_boons__hywroIYso1ANoq4N.json rename to data/packs/rollable-tables.db/patron_boons__almazzat__hywroIYso1ANoq4N.json index bf88aa9e..29dd4181 100644 --- a/data/packs/rollable-tables.db/almazzat_boons__hywroIYso1ANoq4N.json +++ b/data/packs/rollable-tables.db/patron_boons__almazzat__hywroIYso1ANoq4N.json @@ -6,7 +6,7 @@ "folder": "CKyT2XJsdWmcwbhX", "formula": "2d6", "img": "icons/creatures/mammals/wolf-shadow-black.webp", - "name": "Almazzat Boons", + "name": "Patron Boons: Almazzat", "replacement": true, "results": [ "VA9pNnFn3TrNXLo9", diff --git a/data/packs/rollable-tables.db/kytheros_boons__3pf5QyJjatNkylNv.json b/data/packs/rollable-tables.db/patron_boons__kytheros__3pf5QyJjatNkylNv.json similarity index 93% rename from data/packs/rollable-tables.db/kytheros_boons__3pf5QyJjatNkylNv.json rename to data/packs/rollable-tables.db/patron_boons__kytheros__3pf5QyJjatNkylNv.json index feb4e1fc..fb6b4ffc 100644 --- a/data/packs/rollable-tables.db/kytheros_boons__3pf5QyJjatNkylNv.json +++ b/data/packs/rollable-tables.db/patron_boons__kytheros__3pf5QyJjatNkylNv.json @@ -6,7 +6,7 @@ "folder": "CKyT2XJsdWmcwbhX", "formula": "2d6", "img": "icons/magic/time/hourglass-yellow-green.webp", - "name": "Kytheros Boons", + "name": "Patron Boons: Kytheros", "replacement": true, "results": [ "rXO49oYGESKugM75", diff --git a/data/packs/rollable-tables.db/mugdulblub_boons__uM6xHa4gqStMgONB.json b/data/packs/rollable-tables.db/patron_boons__mugdulblub__uM6xHa4gqStMgONB.json similarity index 94% rename from data/packs/rollable-tables.db/mugdulblub_boons__uM6xHa4gqStMgONB.json rename to data/packs/rollable-tables.db/patron_boons__mugdulblub__uM6xHa4gqStMgONB.json index 1d6a46df..d0ec5dbe 100644 --- a/data/packs/rollable-tables.db/mugdulblub_boons__uM6xHa4gqStMgONB.json +++ b/data/packs/rollable-tables.db/patron_boons__mugdulblub__uM6xHa4gqStMgONB.json @@ -6,7 +6,7 @@ "folder": "CKyT2XJsdWmcwbhX", "formula": "2d6", "img": "icons/creatures/slimes/slime-bubble-green.webp", - "name": "Mugdulblub Boons", + "name": "Patron Boons: Mugdulblub", "replacement": true, "results": [ "eGG99yjTr69ERyvB", diff --git a/data/packs/rollable-tables.db/shune_the_vile_boons__oKkk7o3Zhlab2vie.json b/data/packs/rollable-tables.db/patron_boons__shune_the_vile__oKkk7o3Zhlab2vie.json similarity index 92% rename from data/packs/rollable-tables.db/shune_the_vile_boons__oKkk7o3Zhlab2vie.json rename to data/packs/rollable-tables.db/patron_boons__shune_the_vile__oKkk7o3Zhlab2vie.json index c32ac685..e0425736 100644 --- a/data/packs/rollable-tables.db/shune_the_vile_boons__oKkk7o3Zhlab2vie.json +++ b/data/packs/rollable-tables.db/patron_boons__shune_the_vile__oKkk7o3Zhlab2vie.json @@ -6,7 +6,7 @@ "folder": "CKyT2XJsdWmcwbhX", "formula": "2d6", "img": "icons/magic/unholy/silhouette-robe-evil-power.webp", - "name": "Shune the Vile Boons", + "name": "Patron Boons: Shune the Vile", "replacement": true, "results": [ "YYdtqKeiDCgowBHw", diff --git a/data/packs/rollable-tables.db/the_willowman_boons__jeMMr372yditrKMj.json b/data/packs/rollable-tables.db/patron_boons__the_willowman__jeMMr372yditrKMj.json similarity index 93% rename from data/packs/rollable-tables.db/the_willowman_boons__jeMMr372yditrKMj.json rename to data/packs/rollable-tables.db/patron_boons__the_willowman__jeMMr372yditrKMj.json index df37cf70..030e4af6 100644 --- a/data/packs/rollable-tables.db/the_willowman_boons__jeMMr372yditrKMj.json +++ b/data/packs/rollable-tables.db/patron_boons__the_willowman__jeMMr372yditrKMj.json @@ -6,7 +6,7 @@ "folder": "CKyT2XJsdWmcwbhX", "formula": "2d6", "img": "icons/creatures/magical/spirit-undead-ghost-purple.webp", - "name": "The Willowman Boons", + "name": "Patron Boons: The Willowman", "replacement": true, "results": [ "Hf3DleWOFlQGEiaY", diff --git a/data/packs/rollable-tables.db/titania_boons__mi0QYvreMf9j512E.json b/data/packs/rollable-tables.db/patron_boons__titania__mi0QYvreMf9j512E.json similarity index 94% rename from data/packs/rollable-tables.db/titania_boons__mi0QYvreMf9j512E.json rename to data/packs/rollable-tables.db/patron_boons__titania__mi0QYvreMf9j512E.json index 02947e74..4534a9bd 100644 --- a/data/packs/rollable-tables.db/titania_boons__mi0QYvreMf9j512E.json +++ b/data/packs/rollable-tables.db/patron_boons__titania__mi0QYvreMf9j512E.json @@ -6,7 +6,7 @@ "folder": "CKyT2XJsdWmcwbhX", "formula": "2d6", "img": "icons/magic/nature/plant-sprout-snow-green.webp", - "name": "Titania Boons", + "name": "Patron Boons: Titania", "replacement": true, "results": [ "kNHLU5Jg5fuOZhyo", diff --git a/data/packs/talents.db/perform__J4KYu5M32T81yE1f.json b/data/packs/talents.db/perform__J4KYu5M32T81yE1f.json deleted file mode 100644 index e8d0cb15..00000000 --- a/data/packs/talents.db/perform__J4KYu5M32T81yE1f.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "_id": "J4KYu5M32T81yE1f", - "_key": "!items!J4KYu5M32T81yE1f", - "effects": [ - ], - "folder": "8t1Gmpgn1Q6HXJAz", - "img": "icons/tools/instruments/lute-gold-brown.webp", - "name": "Presence", - "system": { - "description": "

      Make a DC 12 CHA check to enact one of the following effects. If you fail (excluding focus), you can't use that effect again until you rest.

      • @UUID[Compendium.shadowdark.class-abilities.Item.jg2sUC3nIAI8sT18]{Inspire} DC 12. One target in near gains a luck token.

      • @UUID[Compendium.shadowdark.class-abilities.Item.oCNpE6bnZjPIdOO1]{Fascinate} (Focus). You transfix all chosen targets of level 4 or less within near

      ", - "level": 1, - "predefinedEffects": "", - "source": { - "title": "bard-and-ranger" - }, - "talentClass": "class" - }, - "type": "Talent" -} diff --git a/system/src/migrations/updates/Update_241028_1.mjs b/system/src/migrations/updates/Update_241028_1.mjs new file mode 100644 index 00000000..d304ba32 --- /dev/null +++ b/system/src/migrations/updates/Update_241028_1.mjs @@ -0,0 +1,27 @@ +import { UpdateBaseSD } from "../UpdateBaseSD.mjs"; + +export default class Update_241028_1 extends UpdateBaseSD { + static version = 241028.1; + + async updateActor(actorData) { + if (actorData.type !== "Player") return; + + let deity = actorData.system.deity; + + if (deity.startsWith("Compendium.shadowdark.deities.Item.")) { + deity = deity.replace( + "Compendium.shadowdark.deities.Item.", + "Compendium.shadowdark.patrons-and-deities.Item." + ); + } + + // Hasn't changed, skip update + if (deity === actorData.system.deity) return; + + const updateData = { + "system.deity": deity, + }; + + return updateData; + } +} diff --git a/system/src/migrations/updates/_module.mjs b/system/src/migrations/updates/_module.mjs index ed492f5f..aa0713ee 100644 --- a/system/src/migrations/updates/_module.mjs +++ b/system/src/migrations/updates/_module.mjs @@ -23,3 +23,4 @@ export {default as Update_231125_1} from "./Update_231125_1.mjs"; export {default as Update_231216_1} from "./Update_231216_1.mjs"; export {default as Update_240910_1} from "./Update_240910_1.mjs"; export {default as Update_241020_1} from "./Update_241020_1.mjs"; +export {default as Update_241028_1} from "./Update_241028_1.mjs"; diff --git a/system/system.json b/system/system.json index 85e21c84..312093f9 100644 --- a/system/system.json +++ b/system/system.json @@ -127,15 +127,6 @@ "private": false, "flags": {} }, - { - "name": "deities", - "label": "Deities", - "system": "shadowdark", - "path": "packs/deities", - "type": "Item", - "private": false, - "flags": {} - }, { "name": "documentation", "label": "Documentation", @@ -190,6 +181,15 @@ "private": false, "flags": {} }, + { + "name": "patrons-and-deities", + "label": "Patrons and Deities", + "system": "shadowdark", + "path": "packs/patrons-and-deities", + "type": "Item", + "private": false, + "flags": {} + }, { "name": "properties", "label": "Properties", @@ -298,8 +298,8 @@ "backgrounds", "class-abilities", "classes", - "deities", "languages", + "patrons-and-deities", "talents" ] }, diff --git a/system/template.json b/system/template.json index 8c2ff4e3..35498a3c 100644 --- a/system/template.json +++ b/system/template.json @@ -138,6 +138,7 @@ "remaining": 0, "available": false }, + "patron": "", "slots": 10 } }, @@ -279,6 +280,10 @@ "armor": [], "classTalentTable": "", "hitPoints": "", + "patron": { + "required": false, + "startingBoons": 0 + }, "spellcasting": { "ability": "", "baseDifficulty": 10, From 0adf86f22cd2a022c71928df1b7f7dcc87507d71 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 28 Oct 2024 14:49:27 +0000 Subject: [PATCH 078/182] remove legacy compendium --- RELEASE_NOTES.md | 2 ++ .../all_nord_gods__7Ay6ImjgTQAMDc0M.json | 19 ------------------- .../deities.db/freya__R6m1FzSnuw5OnSpB.json | 19 ------------------- .../deities.db/gede__FhDBOHUircue27aV.json | 18 ------------------ .../deities.db/loki__rlrWLhbyaJZNrbND.json | 19 ------------------- ...adeera_the_covenant__p91vJhT8FXvb2mLj.json | 17 ----------------- .../deities.db/memnon__oT5Urxeq9eAeXJZf.json | 17 ----------------- .../deities.db/odin__iblZelXFcIZFbPFH.json | 19 ------------------- .../deities.db/ord__w9GdZSr5XYNjIeeR.json | 18 ------------------ .../deities.db/ramlaat__6qeBzYJUTgrMhUcW.json | 18 ------------------ .../saint_terragnis__hNbUUJnD6HIda5tl.json | 17 ----------------- .../shune_the_vile__cQGIVxXN6caEcOWt.json | 17 ----------------- .../the_lost__r1j3fFsxwgxvIqxl.json | 18 ------------------ 13 files changed, 2 insertions(+), 216 deletions(-) delete mode 100644 data/packs/deities.db/all_nord_gods__7Ay6ImjgTQAMDc0M.json delete mode 100644 data/packs/deities.db/freya__R6m1FzSnuw5OnSpB.json delete mode 100644 data/packs/deities.db/gede__FhDBOHUircue27aV.json delete mode 100644 data/packs/deities.db/loki__rlrWLhbyaJZNrbND.json delete mode 100644 data/packs/deities.db/madeera_the_covenant__p91vJhT8FXvb2mLj.json delete mode 100644 data/packs/deities.db/memnon__oT5Urxeq9eAeXJZf.json delete mode 100644 data/packs/deities.db/odin__iblZelXFcIZFbPFH.json delete mode 100644 data/packs/deities.db/ord__w9GdZSr5XYNjIeeR.json delete mode 100644 data/packs/deities.db/ramlaat__6qeBzYJUTgrMhUcW.json delete mode 100644 data/packs/deities.db/saint_terragnis__hNbUUJnD6HIda5tl.json delete mode 100644 data/packs/deities.db/shune_the_vile__cQGIVxXN6caEcOWt.json delete mode 100644 data/packs/deities.db/the_lost__r1j3fFsxwgxvIqxl.json diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 49297c7c..e4967e9f 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -20,6 +20,8 @@ - Settings for compendium art mapping are now found in *Settings > Core > Compendium Art* * [#917] Restructure Item sheet templates to make them a bit more manageable +* [#927] Migration runner accessing globalThis.duplicate which must now be accessed via foundry.utils.duplicate +* [#928] Migrate "Deities" to new "Patrons and Deities" compendium *Many thanks to **AdamsGH** for contributing **Russian** translation data.* diff --git a/data/packs/deities.db/all_nord_gods__7Ay6ImjgTQAMDc0M.json b/data/packs/deities.db/all_nord_gods__7Ay6ImjgTQAMDc0M.json deleted file mode 100644 index f2cdfffd..00000000 --- a/data/packs/deities.db/all_nord_gods__7Ay6ImjgTQAMDc0M.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "_id": "7Ay6ImjgTQAMDc0M", - "_key": "!items!7Ay6ImjgTQAMDc0M", - "effects": [ - ], - "folder": null, - "img": "icons/magic/holy/angel-wings-gray.webp", - "name": "All Nord Gods", - "system": { - "alignment": "", - "description": "

      The faithful worship all of the Old Gods in turn, but many find they align with one in particular. Paying respect to all the gods is not a betrayal; it is honorable.

      ", - "predefinedEffects": "", - "source": { - "page": 0, - "title": "cursed-scroll-3" - } - }, - "type": "Deity" -} diff --git a/data/packs/deities.db/freya__R6m1FzSnuw5OnSpB.json b/data/packs/deities.db/freya__R6m1FzSnuw5OnSpB.json deleted file mode 100644 index d3f87072..00000000 --- a/data/packs/deities.db/freya__R6m1FzSnuw5OnSpB.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "_id": "R6m1FzSnuw5OnSpB", - "_key": "!items!R6m1FzSnuw5OnSpB", - "effects": [ - ], - "folder": null, - "img": "icons/magic/holy/angel-wings-gray.webp", - "name": "Freya", - "system": { - "alignment": "neutral", - "description": "

      The goddess of love and hatred. The Queen of Shield Maidens whose valkyries carry worthy souls to the Great Feast. The First Seer who places her omens in bones, blood, and entrails. Freya inspires the poets and then torments them with lack.

      ", - "predefinedEffects": "", - "source": { - "page": 0, - "title": "cursed-scroll-3" - } - }, - "type": "Deity" -} diff --git a/data/packs/deities.db/gede__FhDBOHUircue27aV.json b/data/packs/deities.db/gede__FhDBOHUircue27aV.json deleted file mode 100644 index 2f8f4d15..00000000 --- a/data/packs/deities.db/gede__FhDBOHUircue27aV.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "_id": "FhDBOHUircue27aV", - "_key": "!items!FhDBOHUircue27aV", - "effects": [ - ], - "folder": null, - "img": "icons/magic/holy/yin-yang-balance-symbol.webp", - "name": "Gede", - "system": { - "alignment": "neutral", - "description": "

      The god of feasts, mirth, and the wilds. Gede is usually peaceful, but primal storms rage when her anger rises. Many elves and halflings worship her.

      ", - "predefinedEffects": "", - "source": { - "title": "core-rules" - } - }, - "type": "Deity" -} diff --git a/data/packs/deities.db/loki__rlrWLhbyaJZNrbND.json b/data/packs/deities.db/loki__rlrWLhbyaJZNrbND.json deleted file mode 100644 index 5d036c52..00000000 --- a/data/packs/deities.db/loki__rlrWLhbyaJZNrbND.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "_id": "rlrWLhbyaJZNrbND", - "_key": "!items!rlrWLhbyaJZNrbND", - "effects": [ - ], - "folder": null, - "img": "icons/magic/holy/angel-wings-gray.webp", - "name": "Loki", - "system": { - "alignment": "chaotic", - "description": "

      The Deceiver who wins with wit and wile. The wolf who disguises himself as a sheep. Loki is glib and infuriating; his words cut like steel, and his laughter howls like a gale. His followers do not seek Valhalla, for they know it will fall when Ragnarok comes.

      ", - "predefinedEffects": "", - "source": { - "page": 0, - "title": "cursed-scroll-3" - } - }, - "type": "Deity" -} diff --git a/data/packs/deities.db/madeera_the_covenant__p91vJhT8FXvb2mLj.json b/data/packs/deities.db/madeera_the_covenant__p91vJhT8FXvb2mLj.json deleted file mode 100644 index cb2e9b85..00000000 --- a/data/packs/deities.db/madeera_the_covenant__p91vJhT8FXvb2mLj.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "_id": "p91vJhT8FXvb2mLj", - "_key": "!items!p91vJhT8FXvb2mLj", - "effects": [ - ], - "folder": null, - "img": "icons/magic/holy/yin-yang-balance-symbol.webp", - "name": "Madeera the Covenant", - "system": { - "alignment": "lawful", - "description": "

      Madeera was the first manifestation of Law. She carries every law of reality, a dictate called the Covenant, written on her skin in precise symbols.

      ", - "source": { - "title": "core-rules" - } - }, - "type": "Deity" -} diff --git a/data/packs/deities.db/memnon__oT5Urxeq9eAeXJZf.json b/data/packs/deities.db/memnon__oT5Urxeq9eAeXJZf.json deleted file mode 100644 index f13c24fe..00000000 --- a/data/packs/deities.db/memnon__oT5Urxeq9eAeXJZf.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "_id": "oT5Urxeq9eAeXJZf", - "_key": "!items!oT5Urxeq9eAeXJZf", - "effects": [ - ], - "folder": null, - "img": "icons/magic/holy/yin-yang-balance-symbol.webp", - "name": "Memnon", - "system": { - "alignment": "chaotic", - "description": "

      Memnon was the first manifestation of Chaos. He is Madeera’s twin, a red-maned, leonine being whose ultimate ambition is to rend the cosmic laws of the Covenant from his sister’s skin.

      ", - "source": { - "title": "core-rules" - } - }, - "type": "Deity" -} diff --git a/data/packs/deities.db/odin__iblZelXFcIZFbPFH.json b/data/packs/deities.db/odin__iblZelXFcIZFbPFH.json deleted file mode 100644 index f6898581..00000000 --- a/data/packs/deities.db/odin__iblZelXFcIZFbPFH.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "_id": "iblZelXFcIZFbPFH", - "_key": "!items!iblZelXFcIZFbPFH", - "effects": [ - ], - "folder": null, - "img": "icons/magic/holy/angel-wings-gray.webp", - "name": "Odin", - "system": { - "alignment": "lawful", - "description": "

      The Allfather. Odin the One-Eyed values strength and cleverness. His twin ravens wing through the night, spying on dreams and memories. Worthy warriors are brought to the Great Hall of Valhalla when they die to feast and fight beside him eternally.

      ", - "predefinedEffects": "", - "source": { - "page": 0, - "title": "cursed-scroll-3" - } - }, - "type": "Deity" -} diff --git a/data/packs/deities.db/ord__w9GdZSr5XYNjIeeR.json b/data/packs/deities.db/ord__w9GdZSr5XYNjIeeR.json deleted file mode 100644 index 2caa694e..00000000 --- a/data/packs/deities.db/ord__w9GdZSr5XYNjIeeR.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "_id": "w9GdZSr5XYNjIeeR", - "_key": "!items!w9GdZSr5XYNjIeeR", - "effects": [ - ], - "folder": null, - "img": "icons/magic/holy/yin-yang-balance-symbol.webp", - "name": "Ord", - "system": { - "alignment": "neutral", - "description": "

      Ord the Unbending, the Wise, the Secret-Keeper. He is the god of magic, knowledge, secrets, and equilibrium.

      ", - "predefinedEffects": "", - "source": { - "title": "core-rules" - } - }, - "type": "Deity" -} diff --git a/data/packs/deities.db/ramlaat__6qeBzYJUTgrMhUcW.json b/data/packs/deities.db/ramlaat__6qeBzYJUTgrMhUcW.json deleted file mode 100644 index dfcf8aa2..00000000 --- a/data/packs/deities.db/ramlaat__6qeBzYJUTgrMhUcW.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "_id": "6qeBzYJUTgrMhUcW", - "_key": "!items!6qeBzYJUTgrMhUcW", - "effects": [ - ], - "folder": null, - "img": "icons/magic/holy/yin-yang-balance-symbol.webp", - "name": "Ramlaat", - "system": { - "alignment": "chaotic", - "description": "

      Ramlaat is the Pillager, the Barbaric, the Horde. Many orcs worship him and live by the Blood Rite, a prophecy that says only the strongest will survive a coming doom.

      ", - "predefinedEffects": "", - "source": { - "title": "core-rules" - } - }, - "type": "Deity" -} diff --git a/data/packs/deities.db/saint_terragnis__hNbUUJnD6HIda5tl.json b/data/packs/deities.db/saint_terragnis__hNbUUJnD6HIda5tl.json deleted file mode 100644 index 1e81bb12..00000000 --- a/data/packs/deities.db/saint_terragnis__hNbUUJnD6HIda5tl.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "_id": "hNbUUJnD6HIda5tl", - "_key": "!items!hNbUUJnD6HIda5tl", - "effects": [ - ], - "folder": null, - "img": "icons/magic/holy/yin-yang-balance-symbol.webp", - "name": "Saint Terragnis", - "system": { - "alignment": "lawful", - "description": "

      A legendary knight who is the patron of most lawful humans. She ascended to godhood long ago and is the embodiment of righteousness and justice.

      ", - "source": { - "title": "core-rules" - } - }, - "type": "Deity" -} diff --git a/data/packs/deities.db/shune_the_vile__cQGIVxXN6caEcOWt.json b/data/packs/deities.db/shune_the_vile__cQGIVxXN6caEcOWt.json deleted file mode 100644 index b98b0f2b..00000000 --- a/data/packs/deities.db/shune_the_vile__cQGIVxXN6caEcOWt.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "_id": "cQGIVxXN6caEcOWt", - "_key": "!items!cQGIVxXN6caEcOWt", - "effects": [ - ], - "folder": null, - "img": "icons/magic/holy/yin-yang-balance-symbol.webp", - "name": "Shune the Vile", - "system": { - "alignment": "chaotic", - "description": "

      Shune whispers arcane secrets to sorcerers and witches who call to her in the dark hours. She schemes to displace Ord so she can control the vast flow of magic herself.

      ", - "source": { - "title": "core-rules" - } - }, - "type": "Deity" -} diff --git a/data/packs/deities.db/the_lost__r1j3fFsxwgxvIqxl.json b/data/packs/deities.db/the_lost__r1j3fFsxwgxvIqxl.json deleted file mode 100644 index 72758393..00000000 --- a/data/packs/deities.db/the_lost__r1j3fFsxwgxvIqxl.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "_id": "r1j3fFsxwgxvIqxl", - "_key": "!items!r1j3fFsxwgxvIqxl", - "effects": [ - ], - "folder": null, - "img": "icons/magic/holy/yin-yang-balance-symbol.webp", - "name": "The Lost", - "system": { - "alignment": "", - "description": "

      Two of The Nine are lost to the ages, their names expunged from history and memory. Yet their whispered legend lingers on in ancient, forbidden texts and secret, deep places...

      ", - "predefinedEffects": "", - "source": { - "title": "core-rules" - } - }, - "type": "Deity" -} From bc21381fec922a793e42a4cf07c9e99976d63e0d Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Tue, 29 Oct 2024 19:38:34 +0000 Subject: [PATCH 079/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 1124 +++++++++++++++++++++++++------------------------- 1 file changed, 562 insertions(+), 562 deletions(-) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index 0597f454..d2b49171 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -13,48 +13,48 @@ SHADOWDARK.ability_wisdom: Мудрость SHADOWDARK.alignment.chaotic: Хаотичный SHADOWDARK.alignment.lawful: Законопослушный SHADOWDARK.alignment.neutral: -SHADOWDARK.ancestry.choice_count: Choice Count +SHADOWDARK.ancestry.choice_count: Количество выборов SHADOWDARK.ancestry.choice: Выбор -SHADOWDARK.ancestry.fixed: Fixed +SHADOWDARK.ancestry.fixed: Фиксированный SHADOWDARK.ancestry.languages.label: Языки предков SHADOWDARK.ancestry.languages.prompt: Выберите язык... -SHADOWDARK.ancestry.nametable.label: Случайная таблица имён -SHADOWDARK.ancestry.nametable.placeholder: Drag Roll Table Here -SHADOWDARK.ancestry.nametable.random_weight: Randomization Weight -SHADOWDARK.ancestry.nametable.tooltip.weight: Affects the chance of rolling when using the Character Generator. Higher values increase chance. Default value is 1. -SHADOWDARK.ancestry.talents.label: Таланты Предков -SHADOWDARK.ancestry.talents.prompt: Выберите Талант... +SHADOWDARK.ancestry.nametable.label: Таблица случайных имён +SHADOWDARK.ancestry.nametable.placeholder: Перетащите сюда таблицу бросков +SHADOWDARK.ancestry.nametable.random_weight: Вес рандомизации +SHADOWDARK.ancestry.nametable.tooltip.weight: Влияет на шанс выпадения при использовании генератора персонажей. Более высокие значения увеличивают шанс. Значение по умолчанию - 1. +SHADOWDARK.ancestry.talents.label: Таланты предков +SHADOWDARK.ancestry.talents.prompt: Выберите талант... SHADOWDARK.app.active_effects.title: Активные эффекты -SHADOWDARK.app.gem_bag.sell_all: Продать все Самоцветы -SHADOWDARK.app.gem_bag.title: Мешок Самоцветов -SHADOWDARK.app.gem_bag.tooltip.sell_gem: Продать Самоцвет +SHADOWDARK.app.gem_bag.sell_all: Продать все камни +SHADOWDARK.app.gem_bag.title: Мешочек с камнями +SHADOWDARK.app.gem_bag.tooltip.sell_gem: Продать камень SHADOWDARK.app.gem_bag.total_value: Общая стоимость -SHADOWDARK.app.item_properties.armor.title: Свойства Брони +SHADOWDARK.app.item_properties.armor.title: Свойства брони SHADOWDARK.app.item_properties.languages.title: Языки -SHADOWDARK.app.item_properties.magic_item.effects.title: Эффекты магического предмета +SHADOWDARK.app.item_properties.magic_item.effects.title: Эффекты магических предметов SHADOWDARK.app.item_properties.save: Сохранить -SHADOWDARK.app.item_properties.talent.effects.title: Эффект таланта +SHADOWDARK.app.item_properties.talent.effects.title: Типы эффектов талантов SHADOWDARK.app.item_properties.title: Свойства SHADOWDARK.app.item_properties.weapon.title: Свойства оружия SHADOWDARK.app.light_tracker.minute_short: мин -SHADOWDARK.app.light_tracker.minutes_short: минуты -SHADOWDARK.app.light_tracker.title: Трекер освещения -SHADOWDARK.app.light-tracker.douse-light: Douse Light +SHADOWDARK.app.light_tracker.minutes_short: мин +SHADOWDARK.app.light_tracker.title: Отслеживание света +SHADOWDARK.app.light-tracker.douse-light: Погасить свет SHADOWDARK.app.light-tracker.hide-inactive: Скрыть актёров без света SHADOWDARK.app.light-tracker.show-all-actors: Показать всех актёров SHADOWDARK.app.light-tracker.turn-out-the-lights: Выключить свет -SHADOWDARK.app.loading.body: Поиск отдаленных земель... +SHADOWDARK.app.loading.body: Поиск в далёких землях... SHADOWDARK.app.loading.title: Загрузка -SHADOWDARK.app.npc_attack_ranges.title: Attack Ranges +SHADOWDARK.app.npc_attack_ranges.title: Диапазоны атак SHADOWDARK.apps.character-generator.create_character: Создать персонажа -SHADOWDARK.apps.character-generator.error.create: Не удалось создать персонажа {error} +SHADOWDARK.apps.character-generator.error.create: Не удалось создать персонажа игрока {error} SHADOWDARK.apps.character-generator.error.name: Имя персонажа не может быть пустым -SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: Unable to roll a random name without a selected Ancestry +SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: Невозможно сгенерировать случайное имя без выбранного происхождения SHADOWDARK.apps.character-generator.gear: Снаряжение SHADOWDARK.apps.character-generator.gold: Золото SHADOWDARK.apps.character-generator.name: Имя персонажа SHADOWDARK.apps.character-generator.success: Персонаж создан -SHADOWDARK.apps.character-generator.title: Генератор персонажа +SHADOWDARK.apps.character-generator.title: Генератор персонажей SHADOWDARK.apps.character-generator.tooltip: Полностью случайный персонаж SHADOWDARK.apps.character-generator.type: Тип SHADOWDARK.apps.character-generator.update_character: Обновить персонажа @@ -62,250 +62,250 @@ SHADOWDARK.apps.effect_panel.dialog.delete_effect.content: Вы хотите у SHADOWDARK.apps.effect_panel.dialog.delete_effect.title: Удалить эффект? SHADOWDARK.apps.effect_panel.duration_label.expired: Истёк SHADOWDARK.apps.effect_panel.duration_label.one_day: Остался 1 день -SHADOWDARK.apps.effect_panel.duration_label.one_hour: Осталось 1 час -SHADOWDARK.apps.effect_panel.duration_label.one_minute: Осталось 1 минута -SHADOWDARK.apps.effect_panel.duration_label.one_round: 1 Round Remaining -SHADOWDARK.apps.effect_panel.duration_label.one_second: Осталось 1 секунда +SHADOWDARK.apps.effect_panel.duration_label.one_hour: Остался 1 час +SHADOWDARK.apps.effect_panel.duration_label.one_minute: Осталась 1 минута +SHADOWDARK.apps.effect_panel.duration_label.one_round: Остался 1 раунд +SHADOWDARK.apps.effect_panel.duration_label.one_second: Осталась 1 секунда SHADOWDARK.apps.effect_panel.duration_label.one_week: Осталась 1 неделя SHADOWDARK.apps.effect_panel.duration_label.one_year: Остался 1 год SHADOWDARK.apps.effect_panel.duration_label.unlimited: Неограниченная длительность -SHADOWDARK.apps.effect_panel.duration_label.x_days: "{days} дней осталось" -SHADOWDARK.apps.effect_panel.duration_label.x_hours: "{hours} часов осталось" -SHADOWDARK.apps.effect_panel.duration_label.x_minutes: "{minutes} минут осталось " -SHADOWDARK.apps.effect_panel.duration_label.x_rounds: "Осталось раундов {rounds}" -SHADOWDARK.apps.effect_panel.duration_label.x_seconds: "{seconds} секунд осталось" -SHADOWDARK.apps.effect_panel.duration_label.x_weeks: " {weeks} недель осталось" -SHADOWDARK.apps.effect_panel.duration_label.x_years: "{years} лет осталось" +SHADOWDARK.apps.effect_panel.duration_label.x_days: "Осталось {days} дней" +SHADOWDARK.apps.effect_panel.duration_label.x_hours: "Осталось {hours} часов" +SHADOWDARK.apps.effect_panel.duration_label.x_minutes: "Осталось {minutes} минут" +SHADOWDARK.apps.effect_panel.duration_label.x_rounds: "Осталось {rounds} раундов" +SHADOWDARK.apps.effect_panel.duration_label.x_seconds: "Осталось {seconds} секунд" +SHADOWDARK.apps.effect_panel.duration_label.x_weeks: "Осталось {weeks} недель" +SHADOWDARK.apps.effect_panel.duration_label.x_years: "Осталось {years} лет" SHADOWDARK.apps.effect_panel.right_click_to_remove: "[Правый клик] Удалить эффект" -SHADOWDARK.apps.item-importer.import_button: Импорт элемента -SHADOWDARK.apps.item-importer.instruction1: 1. Copy item text from source material. -SHADOWDARK.apps.item-importer.instruction2a: 2. Paste text into this box following the item format shown in the core rules. -SHADOWDARK.apps.item-importer.instruction2b: Имя предмета -SHADOWDARK.apps.item-importer.instruction2c: Подпись -SHADOWDARK.apps.item-importer.instruction2d: Features -SHADOWDARK.apps.item-importer.instruction3: 3. Click Import Item. -SHADOWDARK.apps.item-importer.title: Импорт элемента +SHADOWDARK.apps.item-importer.import_button: Импортировать предмет +SHADOWDARK.apps.item-importer.instruction1: 1. Скопируйте текст предмета из исходного материала. +SHADOWDARK.apps.item-importer.instruction2a: 2. Вставьте текст в это поле, следуя формату предмета, показанному в основных правилах. +SHADOWDARK.apps.item-importer.instruction2b: Название предмета +SHADOWDARK.apps.item-importer.instruction2c: Описание +SHADOWDARK.apps.item-importer.instruction2d: Особенности +SHADOWDARK.apps.item-importer.instruction3: 3. Нажмите "Импортировать предмет". +SHADOWDARK.apps.item-importer.title: Импорт предмета SHADOWDARK.apps.level-up.dragdrop: Перетащите сюда -SHADOWDARK.apps.level-up.hit_points: Пункты здоровья +SHADOWDARK.apps.level-up.hit_points: Очки здоровья SHADOWDARK.apps.level-up.level_up: Повышение уровня! SHADOWDARK.apps.level-up.leveling_to: Повышение до уровня -SHADOWDARK.apps.level-up.missing_selections: Missing Selections -SHADOWDARK.apps.level-up.notalent: No talents gained at this level -SHADOWDARK.apps.level-up.prompt: Not all required selections have been made. Continue with level up anyways? -SHADOWDARK.apps.level-up.roll_talent: Roll Talent +SHADOWDARK.apps.level-up.missing_selections: Отсутствуют выборы +SHADOWDARK.apps.level-up.notalent: На этом уровне не получено талантов +SHADOWDARK.apps.level-up.prompt: Не все обязательные выборы сделаны. Продолжить повышение уровня в любом случае? +SHADOWDARK.apps.level-up.roll_talent: Бросить талант SHADOWDARK.apps.level-up.title: Повышение уровня -SHADOWDARK.apps.monster-importer.import_button: Импорт монстра -SHADOWDARK.apps.monster-importer.instruction1: 1. Copy monster text from source material. -SHADOWDARK.apps.monster-importer.instruction2a: 2. Paste text into the text box following the monster format shown in the core rules. Add a blank line between each ability. +SHADOWDARK.apps.monster-importer.import_button: Импортировать монстра +SHADOWDARK.apps.monster-importer.instruction1: 1. Скопируйте текст монстра из исходного материала. +SHADOWDARK.apps.monster-importer.instruction2a: 2. Вставьте текст в текстовое поле, следуя формату монстра, показанному в основных правилах. Добавьте пустую строку между каждой способностью. SHADOWDARK.apps.monster-importer.instruction2b: Название монстра -SHADOWDARK.apps.monster-importer.instruction2c: Flavor text -SHADOWDARK.apps.monster-importer.instruction2d: Main stat block -SHADOWDARK.apps.monster-importer.instruction2e: Feature -SHADOWDARK.apps.monster-importer.instruction3: 3. Click Import Monster. -SHADOWDARK.apps.monster-importer.title: Import Monster +SHADOWDARK.apps.monster-importer.instruction2c: Художественное описание +SHADOWDARK.apps.monster-importer.instruction2d: Основной блок характеристик +SHADOWDARK.apps.monster-importer.instruction2e: Особенность +SHADOWDARK.apps.monster-importer.instruction3: 3. Нажмите "Импортировать монстра". +SHADOWDARK.apps.monster-importer.title: Импорт монстра SHADOWDARK.apps.shadowdarkling-importer.errors: Предметы не найдены -SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer -SHADOWDARK.apps.shadowdarkling-importer.import_button: Импорт -SHADOWDARK.apps.shadowdarkling-importer.import_button2: Частичный импорт -SHADOWDARK.apps.shadowdarkling-importer.instruction1: 1. Visit Shadowdarklings.net. -SHADOWDARK.apps.shadowdarkling-importer.instruction2: 2. Create Character > Export > copy JSON to clipboard. -SHADOWDARK.apps.shadowdarkling-importer.instruction3: Вставить JSON персонажа здесь -SHADOWDARK.apps.shadowdarkling-importer.title: Import Shadowdarkling +SHADOWDARK.apps.shadowdarkling-importer.header: Импортер Shadowdarkling +SHADOWDARK.apps.shadowdarkling-importer.import_button: Импортировать +SHADOWDARK.apps.shadowdarkling-importer.import_button2: Частично импортировать +SHADOWDARK.apps.shadowdarkling-importer.instruction1: 1. Посетите Shadowdarklings.net. +SHADOWDARK.apps.shadowdarkling-importer.instruction2: 2. Создать персонажа > Экспорт > скопировать JSON в буфер обмена. +SHADOWDARK.apps.shadowdarkling-importer.instruction3: Вставьте JSON персонажа сюда +SHADOWDARK.apps.shadowdarkling-importer.title: Импорт Shadowdarkling SHADOWDARK.apps.solodark.button1: Маловероятно или невозможно -SHADOWDARK.apps.solodark.button2: Even Chance -SHADOWDARK.apps.solodark.button3: Likely or Certain +SHADOWDARK.apps.solodark.button2: Равные шансы +SHADOWDARK.apps.solodark.button3: Вероятно или определенно SHADOWDARK.apps.solodark.oracle: Оракул -SHADOWDARK.apps.solodark.phrasing: Ask your question with affirmative phrasing. Instead of asking, "Are there no orcs in this room?" ask, "Are there orcs in this room?" +SHADOWDARK.apps.solodark.phrasing: Задавайте вопрос в утвердительной форме. Вместо "Нет ли орков в этой комнате?", спросите "Есть ли орки в этой комнате?" SHADOWDARK.apps.solodark.question1: Какой вопрос? -SHADOWDARK.apps.solodark.question2: Насколько вероятно, что результат "да"? -SHADOWDARK.apps.solodark.roll_prompt: Roll Prompt +SHADOWDARK.apps.solodark.question2: Насколько вероятен ответ "да"? +SHADOWDARK.apps.solodark.roll_prompt: Подсказка для броска SHADOWDARK.apps.solodark.title: SoloDark SHADOWDARK.apps.spell-book.known: Известные SHADOWDARK.apps.spell-book.title: Список заклинаний класса -SHADOWDARK.apps.spell-importer.import_button: Импорт заклинания -SHADOWDARK.apps.spell-importer.instruction1: 1. Copy spell text from source material. -SHADOWDARK.apps.spell-importer.instruction2a: 2. Paste text into this box following the spell format shown in the core rules. +SHADOWDARK.apps.spell-importer.import_button: Импортировать заклинание +SHADOWDARK.apps.spell-importer.instruction1: 1. Скопируйте текст заклинания из исходного материала. +SHADOWDARK.apps.spell-importer.instruction2a: 2. Вставьте текст в это поле, следуя формату заклинаний, показанному в основных правилах. SHADOWDARK.apps.spell-importer.instruction2b: Название заклинания -SHADOWDARK.apps.spell-importer.instruction2c: Tier and class +SHADOWDARK.apps.spell-importer.instruction2c: Уровень и класс SHADOWDARK.apps.spell-importer.instruction2d: Продолжительность SHADOWDARK.apps.spell-importer.instruction2e: Дальность SHADOWDARK.apps.spell-importer.instruction2f: Описание -SHADOWDARK.apps.spell-importer.instruction3: 3. Click Import Spell. +SHADOWDARK.apps.spell-importer.instruction3: 3. Нажмите "Импортировать заклинание". SHADOWDARK.apps.spell-importer.title: Импорт заклинания -SHADOWDARK.armor.properties.disadvantage_stealth: Disadvantage/Stealth -SHADOWDARK.armor.properties.disadvantage_swimming: Disadvantage/Swim -SHADOWDARK.armor.properties.no_swimming: No Swim -SHADOWDARK.armor.properties.one_handed: Occupies One Hand +SHADOWDARK.armor.properties.disadvantage_stealth: Помеха/Скрытность +SHADOWDARK.armor.properties.disadvantage_swimming: Помеха/Плавание +SHADOWDARK.armor.properties.no_swimming: Нельзя плавать +SHADOWDARK.armor.properties.one_handed: Занимает одну руку SHADOWDARK.armor.properties.shield: Щит -SHADOWDARK.boon.type.label: Boon Type +SHADOWDARK.boon.type.label: Тип благословения SHADOWDARK.boons.blessing: Благословение SHADOWDARK.boons.oath: Клятва SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Секрет -SHADOWDARK.chat_card.button.attack: Атака Ролла -SHADOWDARK.chat_card.button.cast_spell: Сотворить заклинание +SHADOWDARK.chat_card.button.attack: Бросок атаки +SHADOWDARK.chat_card.button.cast_spell: Использовать заклинание SHADOWDARK.chat_card.button.learn_spell: Выучить заклинание SHADOWDARK.chat_card.button.use_potion: Использовать зелье SHADOWDARK.chat_card.button.use_scroll: Использовать свиток -SHADOWDARK.chat_card.button.use_wand: Use Wand -SHADOWDARK.chat_card.context.apply_damage_secondary: Применить дополнительный урон +SHADOWDARK.chat_card.button.use_wand: Использовать жезл +SHADOWDARK.chat_card.context.apply_damage_secondary: Применить вторичный урон SHADOWDARK.chat_card.context.apply_damage: Применить урон SHADOWDARK.chat_card.context.apply_healing_secondary: Применить вторичное лечение SHADOWDARK.chat_card.context.apply_healing: Применить лечение -SHADOWDARK.chat.clockwise_initiative: Since {name} rolled highest, they will go first, and all other combatants will follow in a fixed order. -SHADOWDARK.chat.hp_roll.apply_to_max: Добавить к Макс. HP -SHADOWDARK.chat.item_roll.double_numerical: Double any one numerical value! -SHADOWDARK.chat.item_roll.mishap: Roll on the appropriate Mishap table! -SHADOWDARK.chat.item_roll.title: Attack roll with {name} -SHADOWDARK.chat.item_roll.wand_mishap: The wand breaks and permanently ceases to work -SHADOWDARK.chat.light_source.expired: "{lightSource} персонажа {name} иссяк" -SHADOWDARK.chat.light_source.remaining: осталось минут +SHADOWDARK.chat.clockwise_initiative: Поскольку {name} выбросил наивысший результат, они будут ходить первыми, а все остальные участники боя будут следовать в фиксированном порядке. +SHADOWDARK.chat.hp_roll.apply_to_max: Добавить к максимуму ОЗ +SHADOWDARK.chat.item_roll.double_numerical: Удвойте любое одно числовое значение! +SHADOWDARK.chat.item_roll.mishap: Бросьте по соответствующей таблице неудач! +SHADOWDARK.chat.item_roll.title: Бросок атаки с {name} +SHADOWDARK.chat.item_roll.wand_mishap: Жезл ломается и навсегда перестает работать +SHADOWDARK.chat.light_source.expired: "{name}'s {lightSource} истёк" +SHADOWDARK.chat.light_source.remaining: минут осталось SHADOWDARK.chat.light_source.seconds_remaining: Осталось менее 1 минуты -SHADOWDARK.chat.light_source.source.all: Все источники света закончились -SHADOWDARK.chat.light_source.source.dropped: был выброшен -SHADOWDARK.chat.light_source.source.picked_up: был подобран -SHADOWDARK.chat.light_source.source.toggle.off: был потушен -SHADOWDARK.chat.light_source.source.toggle.on: зажжён -SHADOWDARK.chat.light_source.went_out: "{lightSource} персонажа {name} потухло" +SHADOWDARK.chat.light_source.source.all: Все источники света погасли +SHADOWDARK.chat.light_source.source.dropped: был брошен +SHADOWDARK.chat.light_source.source.picked_up: был поднят +SHADOWDARK.chat.light_source.source.toggle.off: был погашен +SHADOWDARK.chat.light_source.source.toggle.on: был зажжен +SHADOWDARK.chat.light_source.went_out: "{name}'s {lightSource} погас" SHADOWDARK.chat.potion_used: "{name} использовал зелье" -SHADOWDARK.chat.spell_learn.failure: "{name} ничего не удалось выучить из свитка" -SHADOWDARK.chat.spell_learn.success: "{name} успешно изучил заклинание {spellName}" +SHADOWDARK.chat.spell_learn.failure: "{name} не удалось ничему научиться из свитка" +SHADOWDARK.chat.spell_learn.success: "{name} успешно выучил заклинание {spellName}" SHADOWDARK.chat.spell_learn.title: Изучение заклинания -SHADOWDARK.chat.spell_roll.title: "{name}, DC {spellDC}" -SHADOWDARK.chat.use_ability.failure: "{name} failed to used the {ability} ability" -SHADOWDARK.chat.use_ability.success: "{name} successfully used the {ability} ability" +SHADOWDARK.chat.spell_roll.title: "{name}, СЛ {spellDC}" +SHADOWDARK.chat.use_ability.failure: "{name} не удалось использовать способность {ability}" +SHADOWDARK.chat.use_ability.success: "{name} успешно использовал способность {ability}" SHADOWDARK.chat.use_ability.title: "Использование способности" -SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG -SHADOWDARK.chat.welcome_message.arcane_library_text: Visit the Arcane Library website for official Shadowdark PDFs, books and merch. -SHADOWDARK.chat.welcome_message.arcane_library: Support The Arcane Library -SHADOWDARK.chat.welcome_message.issues_button: Баг трекер -SHADOWDARK.chat.welcome_message.issues_text: "If you find any issues or have ideas for new features for the system, check out our issue tracker." -SHADOWDARK.chat.welcome_message.issues: Сообщить о проблеме -SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are some resources to get you started. -SHADOWDARK.chat.welcome_message.title: Shadowdark RPG for Foundry -SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial +SHADOWDARK.chat.welcome_message.arcane_library_button: Магазин Shadowdark RPG +SHADOWDARK.chat.welcome_message.arcane_library_text: Посетите сайт Arcane Library для приобретения официальных PDF, книг и мерчендайза Shadowdark. +SHADOWDARK.chat.welcome_message.arcane_library: Поддержите The Arcane Library +SHADOWDARK.chat.welcome_message.issues_button: Трекер проблем +SHADOWDARK.chat.welcome_message.issues_text: "Если вы обнаружили какие-либо проблемы или у вас есть идеи для новых функций системы, посетите наш трекер проблем." +SHADOWDARK.chat.welcome_message.issues: Сообщить о проблемах +SHADOWDARK.chat.welcome_message.title_text: Добро пожаловать в Shadowdark RPG. Вот некоторые ресурсы, чтобы начать. +SHADOWDARK.chat.welcome_message.title: Shadowdark RPG для Foundry +SHADOWDARK.chat.welcome_message.watch: Посмотрите видео-руководство SHADOWDARK.chatcard.default: Бросок SHADOWDARK.class-ability.ability.check: Проверка способности -SHADOWDARK.class-ability.ability.label: +SHADOWDARK.class-ability.ability.label: Способность SHADOWDARK.class-ability.available.label: Доступно -SHADOWDARK.class-ability.dc.label: DC -SHADOWDARK.class-ability.group.label: Группа умений +SHADOWDARK.class-ability.dc.label: СЛ +SHADOWDARK.class-ability.group.label: Группа способностей SHADOWDARK.class-ability.limited-uses.label: Ограниченное использование? -SHADOWDARK.class-ability.lose_on_failure.label: Проиграли при ошибке? -SHADOWDARK.class-ability.lost.label: Утеряно +SHADOWDARK.class-ability.lose_on_failure.label: Потеря при неудаче? +SHADOWDARK.class-ability.lost.label: Потеряно SHADOWDARK.class-ability.maximum.label: Максимум -SHADOWDARK.class-ability.options: Настройки -SHADOWDARK.class.armor.all.label: Вся броня -SHADOWDARK.class.armor.label: Броня -SHADOWDARK.class.armor.prompt: Выберите броню... -SHADOWDARK.class.choice_count: Choice Count +SHADOWDARK.class-ability.options: Опции +SHADOWDARK.class.armor.all.label: Все доспехи +SHADOWDARK.class.armor.label: Доспехи +SHADOWDARK.class.armor.prompt: Выберите доспехи... +SHADOWDARK.class.choice_count: Количество выборов SHADOWDARK.class.choice: Выбор -SHADOWDARK.class.fighter: Боец -SHADOWDARK.class.fixed: Fixed -SHADOWDARK.class.hit_points.label: HP Die Roll -SHADOWDARK.class.language_choices.count.label: Choice Count -SHADOWDARK.class.language_choices.label: Выбор языка -SHADOWDARK.class.language_choices.prompt: Выбрать язык... +SHADOWDARK.class.fighter: Воин +SHADOWDARK.class.fixed: Фиксированный +SHADOWDARK.class.hit_points.label: Бросок кубика ОЗ +SHADOWDARK.class.language_choices.count.label: Количество выборов +SHADOWDARK.class.language_choices.label: Выбор языков +SHADOWDARK.class.language_choices.prompt: Выберите язык... SHADOWDARK.class.languages.label: Языки класса SHADOWDARK.class.priest: Жрец -SHADOWDARK.class.ranger: Рейнджер -SHADOWDARK.class.spellcasting_ability.label: Spellcasting Ability -SHADOWDARK.class.spellcasting_class.label: Класс заклинания -SHADOWDARK.class.spellcasting.base_difficulty.label: Spellcasting Base DC +SHADOWDARK.class.ranger: Следопыт +SHADOWDARK.class.spellcasting_ability.label: Способность колдовства +SHADOWDARK.class.spellcasting_class.label: Класс заклинаний +SHADOWDARK.class.spellcasting.base_difficulty.label: Базовая СЛ колдовства SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier -SHADOWDARK.class.talent_choices.count.label: Choice Count -SHADOWDARK.class.talent_choices.label: Talent Choices -SHADOWDARK.class.talent_choices.prompt: Select Talent... -SHADOWDARK.class.talents_table.label: Class Talents Table +SHADOWDARK.class.talent_choices.count.label: Количество выборов +SHADOWDARK.class.talent_choices.label: Выбор талантов +SHADOWDARK.class.talent_choices.prompt: Выберите талант... +SHADOWDARK.class.talents_table.label: Таблица талантов класса SHADOWDARK.class.talents.label: Таланты SHADOWDARK.class.talents.prompt: Выберите талант... SHADOWDARK.class.thief: Вор SHADOWDARK.class.titles.levels.from.label: От SHADOWDARK.class.titles.levels.label: Уровни -SHADOWDARK.class.titles.levels.to.label: Кому -SHADOWDARK.class.weapons.all_melee.label: Все виды оружия ближнего боя -SHADOWDARK.class.weapons.all_ranged.label: Все виды оружия дальнего боя +SHADOWDARK.class.titles.levels.to.label: До +SHADOWDARK.class.weapons.all_melee.label: Всё рукопашное оружие +SHADOWDARK.class.weapons.all_ranged.label: Всё дальнобойное оружие SHADOWDARK.class.weapons.all.label: Всё оружие SHADOWDARK.class.weapons.label: Оружие SHADOWDARK.class.weapons.prompt: Выберите оружие... SHADOWDARK.class.wizard: Волшебник -SHADOWDARK.coins.cp: CP -SHADOWDARK.coins.gp: GP -SHADOWDARK.coins.sp: SP -SHADOWDARK.damage.one_handed: "One-Handed Damage:" -SHADOWDARK.damage.two_handed: "Two-Handed Damage:" -SHADOWDARK.dialog.ability_check.cha: Charisma Check -SHADOWDARK.dialog.ability_check.con: Constitution Check -SHADOWDARK.dialog.ability_check.dex: Проверка ловкости -SHADOWDARK.dialog.ability_check.int: Проверка интеллекта -SHADOWDARK.dialog.ability_check.str: Проверка силы -SHADOWDARK.dialog.ability_check.title: Проверка способности -SHADOWDARK.dialog.ability_check.wis: Проверка мудрости -SHADOWDARK.dialog.create_custom_item: Create Custom Item -SHADOWDARK.dialog.create_treasure: Create Treasure +SHADOWDARK.coins.cp: МД +SHADOWDARK.coins.gp: ЗМ +SHADOWDARK.coins.sp: СМ +SHADOWDARK.damage.one_handed: "Урон одной рукой:" +SHADOWDARK.damage.two_handed: "Урон двумя руками:" +SHADOWDARK.dialog.ability_check.cha: Проверка Харизмы +SHADOWDARK.dialog.ability_check.con: Проверка Телосложения +SHADOWDARK.dialog.ability_check.dex: Проверка Ловкости +SHADOWDARK.dialog.ability_check.int: Проверка Интеллекта +SHADOWDARK.dialog.ability_check.str: Проверка Силы +SHADOWDARK.dialog.ability_check.title: Проверка характеристики +SHADOWDARK.dialog.ability_check.wis: Проверка Мудрости +SHADOWDARK.dialog.create_custom_item: Создать пользовательский предмет +SHADOWDARK.dialog.create_treasure: Создать сокровище SHADOWDARK.dialog.create: Создать -SHADOWDARK.dialog.edit_hp.title: Изменить HP +SHADOWDARK.dialog.edit_hp.title: Изменить ОЗ SHADOWDARK.dialog.edit_stats.title: Изменить характеристики -SHADOWDARK.dialog.effect.choice.armor: Выберите тип брони +SHADOWDARK.dialog.effect.choice.armor: Выберите тип доспеха SHADOWDARK.dialog.effect.choice.attribute: Выберите атрибут -SHADOWDARK.dialog.effect.choice.damage_die: Choose Damage Die -SHADOWDARK.dialog.effect.choice.lightsource: Choose Light Source +SHADOWDARK.dialog.effect.choice.damage_die: Выберите кубик урона +SHADOWDARK.dialog.effect.choice.lightsource: Выберите источник света SHADOWDARK.dialog.effect.choice.property: Выберите свойство -SHADOWDARK.dialog.effect.choice.spell: Выбрать заклинание -SHADOWDARK.dialog.effect.choice.weapon_property: Choose Weapon Property +SHADOWDARK.dialog.effect.choice.spell: Выберите заклинание +SHADOWDARK.dialog.effect.choice.weapon_property: Выберите свойство оружия SHADOWDARK.dialog.effect.choice.weapon: Выберите тип оружия -SHADOWDARK.dialog.effect.choices.title: Effect Parameters +SHADOWDARK.dialog.effect.choices.title: Параметры эффекта SHADOWDARK.dialog.general.are_you_sure: Вы уверены? -SHADOWDARK.dialog.general.cancel: Отменить +SHADOWDARK.dialog.general.cancel: Отмена SHADOWDARK.dialog.general.no: "Нет" SHADOWDARK.dialog.general.select: Выбрать SHADOWDARK.dialog.general.yes: "Да" -SHADOWDARK.dialog.gm: Gamemaster -SHADOWDARK.dialog.hp_roll.per_level: Roll HP for level {level} -SHADOWDARK.dialog.hp_roll.previous_hp: "HP before rolling: {hp}" -SHADOWDARK.dialog.hp_roll.roll_level_1: Rolled {hp} hp for level 1 (incl. con mod) -SHADOWDARK.dialog.hp_roll.roll_per_level: Rolled {hp} hp for level {level} -SHADOWDARK.dialog.hp_roll.sum_total: For a new max HP of {total} hp -SHADOWDARK.dialog.hp_roll.summary: HP Rolling Summary -SHADOWDARK.dialog.hp_roll.title: HP Roll -SHADOWDARK.dialog.item_roll.ability_bonus: Бонус умения +SHADOWDARK.dialog.gm: Мастер игры +SHADOWDARK.dialog.hp_roll.per_level: Бросок ОЗ для уровня {level} +SHADOWDARK.dialog.hp_roll.previous_hp: "ОЗ до броска: {hp}" +SHADOWDARK.dialog.hp_roll.roll_level_1: Выпало {hp} ОЗ для 1 уровня (включая мод. телосложения) +SHADOWDARK.dialog.hp_roll.roll_per_level: Выпало {hp} ОЗ для уровня {level} +SHADOWDARK.dialog.hp_roll.sum_total: 'Итого новый максимум ОЗ: {total}' +SHADOWDARK.dialog.hp_roll.summary: Итоги броска ОЗ +SHADOWDARK.dialog.hp_roll.title: Бросок ОЗ +SHADOWDARK.dialog.item_roll.ability_bonus: Бонус характеристики SHADOWDARK.dialog.item_roll.item_bonus: Бонус предмета SHADOWDARK.dialog.item_roll.talent_bonus: Бонус таланта SHADOWDARK.dialog.item_roll.title: Бросок атаки с -SHADOWDARK.dialog.item_selector.default_title: Выбрать предменты -SHADOWDARK.dialog.item_selector.error.max_choices_exceeded: You can only select a maximum of {maxChoices} of this Item type. -SHADOWDARK.dialog.item_selector.error.no_items_found: Unable to find items of the correct type in the available compendiums. +SHADOWDARK.dialog.item_selector.default_title: Выберите предметы +SHADOWDARK.dialog.item_selector.error.max_choices_exceeded: Вы можете выбрать максимум {maxChoices} предметов этого типа. +SHADOWDARK.dialog.item_selector.error.no_items_found: Не удалось найти предметы нужного типа в доступных сборниках. SHADOWDARK.dialog.item_selector.select_item.prompt: Выберите предмет... -SHADOWDARK.dialog.item.confirm_delete: Подтвердить удаление -SHADOWDARK.dialog.item.confirm_sale: Подтвердить продажу -SHADOWDARK.dialog.item.create_from_spell: Создать предмет из {spellName} +SHADOWDARK.dialog.item.confirm_delete: Подтвердите удаление +SHADOWDARK.dialog.item.confirm_sale: Подтвердите продажу +SHADOWDARK.dialog.item.create_from_spell: Создать предмет из заклинания {spellName} SHADOWDARK.dialog.item.delete: Удалить -SHADOWDARK.dialog.item.sell_all: Продать все +SHADOWDARK.dialog.item.sell_all: Продать всё SHADOWDARK.dialog.item.sell: Продать SHADOWDARK.dialog.item.use: Использовать -SHADOWDARK.dialog.light_source.pick_up.title: Select actor to give lightsource -SHADOWDARK.dialog.roll_mode_label: Тип броска +SHADOWDARK.dialog.light_source.pick_up.title: Выберите персонажа, которому дать источник света +SHADOWDARK.dialog.roll_mode_label: Режим броска SHADOWDARK.dialog.roll: Бросок -SHADOWDARK.dialog.scroll.learn_spell_class_warning: "WARNING: This spell is not of the same class as the character, are you sure you wish to try and learn it?" -SHADOWDARK.dialog.scroll.wrong_class_confirm: Подтвердить обучение заклинанию -SHADOWDARK.dialog.select_ancestry.prompt: Select Ancestry... -SHADOWDARK.dialog.select_ancestry.title: Choose Ancestry -SHADOWDARK.dialog.select_armor_property.prompt: Select Armor Property... -SHADOWDARK.dialog.select_armor_property.title: Choose Armor Properties -SHADOWDARK.dialog.select_background.prompt: Выбрать предысторию... -SHADOWDARK.dialog.select_background.title: Выберите предысторию -SHADOWDARK.dialog.select_class.prompt: Выбрать класс... -SHADOWDARK.dialog.select_class.title: Выберите класс -SHADOWDARK.dialog.select_deity.prompt: Выбрать божество... -SHADOWDARK.dialog.select_deity.title: Выберите божество -SHADOWDARK.dialog.select_languages.prompt: Выбрать язык... -SHADOWDARK.dialog.select_languages.title: Выберите язык -SHADOWDARK.dialog.select_weapon_property.prompt: Выбрать свойство оружия... +SHADOWDARK.dialog.scroll.learn_spell_class_warning: "ВНИМАНИЕ: Это заклинание не относится к классу персонажа. Вы уверены, что хотите попробовать его выучить?" +SHADOWDARK.dialog.scroll.wrong_class_confirm: Подтвердить изучение заклинания +SHADOWDARK.dialog.select_ancestry.prompt: Выберите происхождение... +SHADOWDARK.dialog.select_ancestry.title: Выбор происхождения +SHADOWDARK.dialog.select_armor_property.prompt: Выберите свойство доспеха... +SHADOWDARK.dialog.select_armor_property.title: Выбор свойств доспеха +SHADOWDARK.dialog.select_background.prompt: Выберите предысторию... +SHADOWDARK.dialog.select_background.title: Выбор предыстории +SHADOWDARK.dialog.select_class.prompt: Выберите класс... +SHADOWDARK.dialog.select_class.title: Выбор класса +SHADOWDARK.dialog.select_deity.prompt: Выберите божество... +SHADOWDARK.dialog.select_deity.title: Выбор божества +SHADOWDARK.dialog.select_languages.prompt: Выберите язык... +SHADOWDARK.dialog.select_languages.title: Выбор языков +SHADOWDARK.dialog.select_weapon_property.prompt: Выберите свойство оружия... SHADOWDARK.dialog.select_weapon_property.title: Выберите свойства оружия -SHADOWDARK.dialog.spell_roll.title: Использовать заклинание с -SHADOWDARK.dialog.submit: Продолжить -SHADOWDARK.dialog.tooltip.talent_advantage: Талант дает вам преимущество для этого броска -SHADOWDARK.dialog.type_here: Type Here... +SHADOWDARK.dialog.spell_roll.title: Сотворить заклинание с помощью +SHADOWDARK.dialog.submit: Подтвердить +SHADOWDARK.dialog.tooltip.talent_advantage: Талант даёт вам преимущество для этого броска +SHADOWDARK.dialog.type_here: Введите здесь SHADOWDARK.dragdrop: Перетащите сюда SHADOWDARK.effect_duration.hours: Часы SHADOWDARK.effect_duration.minutes: Минуты @@ -319,199 +319,199 @@ SHADOWDARK.effect.header.delete: Удалить SHADOWDARK.effect.header.edit: Редактировать SHADOWDARK.effect.header.name: Название SHADOWDARK.effect.header.options: Опции -SHADOWDARK.effect.header.toggle_active: Toggle Active -SHADOWDARK.effect.header.transfer: Transfer +SHADOWDARK.effect.header.toggle_active: Переключить активность +SHADOWDARK.effect.header.transfer: Перенести SHADOWDARK.effect.item: Эффекты предметов SHADOWDARK.effect.new: Новый эффект -SHADOWDARK.effect.spell: Эффект заклинания -SHADOWDARK.effect.talent: Эффект таланта -SHADOWDARK.effect.temporary: Временный эффект -SHADOWDARK.effect.tooltip.transfer.do_not: Does not transfer -SHADOWDARK.effect.tooltip.transfer.do: Does transfer -SHADOWDARK.effect.tooltip.transfer.header: Transfer effect to actor when item is added -SHADOWDARK.effect.unavailable: Disabled Effects +SHADOWDARK.effect.spell: Эффекты заклинаний +SHADOWDARK.effect.talent: Эффекты талантов +SHADOWDARK.effect.temporary: Временные эффекты +SHADOWDARK.effect.tooltip.transfer.do_not: Не переносится +SHADOWDARK.effect.tooltip.transfer.do: Переносится +SHADOWDARK.effect.tooltip.transfer.header: Перенести эффект на актора при добавлении предмета +SHADOWDARK.effect.unavailable: Отключенные эффекты SHADOWDARK.error.class_ability.no-uses-remaining: Не осталось использований -SHADOWDARK.error.general.gm_required: Чтобы сделать это, у вас должна быть роль мастера. +SHADOWDARK.error.general.gm_required: Для этого действия требуются права Мастера игры. SHADOWDARK.error.general.no_character_class: Класс персонажа не выбран SHADOWDARK.error.source.source_missing: Источник отсутствует или неизвестен... -SHADOWDARK.error.spells.no_spellcasting_ability_set: No character spellcasting ability has been configured +SHADOWDARK.error.spells.no_spellcasting_ability_set: Способность к заклинаниям персонажа не настроена SHADOWDARK.form.section_header.equipment.label: Снаряжение SHADOWDARK.form.section_header.languages.label: Языки -SHADOWDARK.form.section_header.names.label: Название +SHADOWDARK.form.section_header.names.label: Имена SHADOWDARK.form.section_header.spellcasting.label: Заклинания SHADOWDARK.form.section_header.talents.label: Таланты -SHADOWDARK.hotbar.abilityLost: Способность в данный момент потеряна -SHADOWDARK.hotbar.moreThanOneItemWithName: Найдено более одного элемента с таким именем -SHADOWDARK.hotbar.noActorSelected: Вы должны выбрать персонажа для использования этого макроса -SHADOWDARK.hotbar.noItemWithName: На персонаже не найдено такого предмета -SHADOWDARK.hotbar.spellLost: Заклинание в данный момент потеряно -SHADOWDARK.inventory.carried_gear: Carried Gear +SHADOWDARK.hotbar.abilityLost: Способность временно утрачена +SHADOWDARK.hotbar.moreThanOneItemWithName: Найдено более одного предмета с таким названием +SHADOWDARK.hotbar.noActorSelected: Выберите актора для использования этого макроса +SHADOWDARK.hotbar.noItemWithName: Предмет с таким названием не найден у персонажа +SHADOWDARK.hotbar.spellLost: Заклинание временно утрачено +SHADOWDARK.inventory.carried_gear: Носимое снаряжение SHADOWDARK.inventory.coins: Монеты -SHADOWDARK.inventory.equipped_gear: Снаряженная экипировка +SHADOWDARK.inventory.equipped_gear: Экипированное снаряжение SHADOWDARK.inventory.gear: Снаряжение -SHADOWDARK.inventory.gems: Самоцветы -SHADOWDARK.inventory.item.light_remaining: "{timeRemaining} минут осталось " +SHADOWDARK.inventory.gems: Драгоценные камни +SHADOWDARK.inventory.item.light_remaining: "Осталось {timeRemaining} минут" SHADOWDARK.inventory.item.light_seconds_remaining: Осталось менее 1 минуты SHADOWDARK.inventory.item.light_used: (использовано) SHADOWDARK.inventory.label.quantity: Кол-во SHADOWDARK.inventory.label.slots: Слоты -SHADOWDARK.inventory.section.armor: Броня +SHADOWDARK.inventory.section.armor: Доспехи SHADOWDARK.inventory.section.basic: Базовое снаряжение SHADOWDARK.inventory.section.potions: Зелья SHADOWDARK.inventory.section.scrolls: Свитки -SHADOWDARK.inventory.section.treasure: Сокровище +SHADOWDARK.inventory.section.treasure: Сокровища SHADOWDARK.inventory.section.wands: Жезлы SHADOWDARK.inventory.section.weapon: Оружие -SHADOWDARK.inventory.slots_max: Макс. -SHADOWDARK.inventory.slots_used: Использованный +SHADOWDARK.inventory.slots_max: Макс +SHADOWDARK.inventory.slots_used: Использовано SHADOWDARK.inventory.slots: Слоты -SHADOWDARK.inventory.stashed_gear: Stashed Gear -SHADOWDARK.inventory.tooltip.gem_bag: Открыть сумку с самоцветами +SHADOWDARK.inventory.stashed_gear: Складированное снаряжение +SHADOWDARK.inventory.tooltip.gem_bag: Открыть мешочек с драгоценными камнями SHADOWDARK.inventory.tooltip.item_decrement: Уменьшить количество SHADOWDARK.inventory.tooltip.item_increment: Увеличить количество SHADOWDARK.inventory.tooltip.sell_treasure: Продать сокровище -SHADOWDARK.inventory.tooltip.toggle_equipped: Сменить экипировку +SHADOWDARK.inventory.tooltip.toggle_equipped: Переключить экипировку SHADOWDARK.inventory.tooltip.toggle_light_source: Переключить источник света -SHADOWDARK.inventory.tooltip.toggle_stashed: Переключить тайник +SHADOWDARK.inventory.tooltip.toggle_stashed: Переключить складирование SHADOWDARK.inventory.total_coins: Всего монет -SHADOWDARK.inventory.total_gems: Всего самоцветов -SHADOWDARK.item_type.armor: Броня -SHADOWDARK.item_type.basic: Базовая -SHADOWDARK.item_type.gem: Самоцвет +SHADOWDARK.inventory.total_gems: Всего драгоценных камней +SHADOWDARK.item_type.armor: Доспехи +SHADOWDARK.item_type.basic: Базовое +SHADOWDARK.item_type.gem: Драгоценный камень SHADOWDARK.item_type.potion: Зелье SHADOWDARK.item_type.spell: Заклинание SHADOWDARK.item_type.talent: Талант SHADOWDARK.item_type.weapon: Оружие SHADOWDARK.item.ammunition: Ammunition SHADOWDARK.item.armor_ac_modifier: Модификатор -SHADOWDARK.item.armor_ac: КБ -SHADOWDARK.item.armor_bonus_attribute: Bonus Attribute -SHADOWDARK.item.armor_class: Класс Брони +SHADOWDARK.item.armor_ac: КЗ +SHADOWDARK.item.armor_bonus_attribute: Бонусный атрибут +SHADOWDARK.item.armor_class: Класс доспеха SHADOWDARK.item.armor.armor_properties.label: Armor Properties -SHADOWDARK.item.armor.base_armor.chainmail: Chainmail -SHADOWDARK.item.armor.base_armor.leather_armor: Кожаная броня -SHADOWDARK.item.armor.base_armor.plate_mail: Латные доспехи +SHADOWDARK.item.armor.base_armor.chainmail: Кольчуга +SHADOWDARK.item.armor.base_armor.leather_armor: Кожаный доспех +SHADOWDARK.item.armor.base_armor.plate_mail: Латы SHADOWDARK.item.armor.base_armor.shield: Щит -SHADOWDARK.item.armor.base_armor.title: Базовая броня -SHADOWDARK.item.cost: Цена +SHADOWDARK.item.armor.base_armor.title: Базовый доспех +SHADOWDARK.item.cost: Стоимость SHADOWDARK.item.description: Описание -SHADOWDARK.item.effect.category.condition: Условия +SHADOWDARK.item.effect.category.condition: Состояние SHADOWDARK.item.effect.category.effect: Эффект SHADOWDARK.item.effect.category.title: Категория эффекта SHADOWDARK.item.effect.lightSource.lantern: Фонарь -SHADOWDARK.item.effect.lightSource.lightSpellDouble: Свет (двойной диапазон) +SHADOWDARK.item.effect.lightSource.lightSpellDouble: Свет (Двойная дальность) SHADOWDARK.item.effect.lightSource.lightSpellNear: Свет -SHADOWDARK.item.effect.lightSource.lightSuppression: Light Suppression +SHADOWDARK.item.effect.lightSource.lightSuppression: Подавление света SHADOWDARK.item.effect.lightSource.purpleGlow: Фиолетовое свечение SHADOWDARK.item.effect.lightSource.torch: Факел -SHADOWDARK.item.effect.pre-defined.title: Pre-defined Effects -SHADOWDARK.item.effect.predefined_effect.abilityImprovement: Улучшение очков способности -SHADOWDARK.item.effect.predefined_effect.abilityImprovementCha: Ability Score Improvement (Cha) -SHADOWDARK.item.effect.predefined_effect.abilityImprovementCon: Ability Score Improvement (Con) -SHADOWDARK.item.effect.predefined_effect.abilityImprovementDex: Ability Score Improvement (Dex) -SHADOWDARK.item.effect.predefined_effect.abilityImprovementInt: Ability Score Improvement (Int) -SHADOWDARK.item.effect.predefined_effect.abilityImprovementStr: Ability Score Improvement (Str) -SHADOWDARK.item.effect.predefined_effect.abilityImprovementWis: Ability Score Improvement (Wis) -SHADOWDARK.item.effect.predefined_effect.acBonus: Бонус КБ -SHADOWDARK.item.effect.predefined_effect.acBonusFromAttribute: Бонус КБ от атрибута -SHADOWDARK.item.effect.predefined_effect.additionalGearSlots: Additional Gear Slots -SHADOWDARK.item.effect.predefined_effect.armorMastery: Совершенное владение броней -SHADOWDARK.item.effect.predefined_effect.backstabDie: Additional Backstab Die -SHADOWDARK.item.effect.predefined_effect.criticalFailureThreshold: Critical Failure Threshold -SHADOWDARK.item.effect.predefined_effect.criticalSuccessThreshold: Critical Success Threshold -SHADOWDARK.item.effect.predefined_effect.critMultiplier: Множитель крита +SHADOWDARK.item.effect.pre-defined.title: Предопределенные эффекты +SHADOWDARK.item.effect.predefined_effect.abilityImprovement: Улучшение показателя характеристики +SHADOWDARK.item.effect.predefined_effect.abilityImprovementCha: Улучшение показателя характеристики (Хар) +SHADOWDARK.item.effect.predefined_effect.abilityImprovementCon: Улучшение показателя характеристики (Тел) +SHADOWDARK.item.effect.predefined_effect.abilityImprovementDex: Улучшение показателя характеристики (Лов) +SHADOWDARK.item.effect.predefined_effect.abilityImprovementInt: Улучшение показателя характеристики (Инт) +SHADOWDARK.item.effect.predefined_effect.abilityImprovementStr: Улучшение показателя характеристики (Сил) +SHADOWDARK.item.effect.predefined_effect.abilityImprovementWis: Улучшение показателя характеристики (Мдр) +SHADOWDARK.item.effect.predefined_effect.acBonus: Бонус к КЗ +SHADOWDARK.item.effect.predefined_effect.acBonusFromAttribute: Бонус к КЗ от характеристики +SHADOWDARK.item.effect.predefined_effect.additionalGearSlots: Дополнительные слоты снаряжения +SHADOWDARK.item.effect.predefined_effect.armorMastery: Мастерство доспехов +SHADOWDARK.item.effect.predefined_effect.backstabDie: Дополнительный кубик подлого удара +SHADOWDARK.item.effect.predefined_effect.criticalFailureThreshold: Порог критического провала +SHADOWDARK.item.effect.predefined_effect.criticalSuccessThreshold: Порог критического успеха +SHADOWDARK.item.effect.predefined_effect.critMultiplier: Множитель критического удара SHADOWDARK.item.effect.predefined_effect.damageMultiplier: Множитель урона -SHADOWDARK.item.effect.predefined_effect.hpAdvantage: HP Roll Advantage -SHADOWDARK.item.effect.predefined_effect.initAdvantage: Преимущества инициативы +SHADOWDARK.item.effect.predefined_effect.hpAdvantage: Преимущество при броске ОЗ +SHADOWDARK.item.effect.predefined_effect.initAdvantage: Преимущество инициативы SHADOWDARK.item.effect.predefined_effect.lightSource: Источник света -SHADOWDARK.item.effect.predefined_effect.meleeAttackBonus: Бонус к атаке ближнего боя -SHADOWDARK.item.effect.predefined_effect.meleeDamageBonus: Бонус к урону ближнего боя -SHADOWDARK.item.effect.predefined_effect.permanentAbilityCha: Permanent Ability (Cha) -SHADOWDARK.item.effect.predefined_effect.permanentAbilityCon: Permanent Ability (Con) -SHADOWDARK.item.effect.predefined_effect.permanentAbilityDex: Permanent Ability (Dex) -SHADOWDARK.item.effect.predefined_effect.permanentAbilityInt: Permanent Ability (Int) -SHADOWDARK.item.effect.predefined_effect.permanentAbilityStr: Permanent Ability (Str) -SHADOWDARK.item.effect.predefined_effect.permanentAbilityWis: Permanent Ability (Wis) -SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: Бонус к атаке дальнего боя -SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: Бонус к урону дальнего боя -SHADOWDARK.item.effect.predefined_effect.spellAdvantage: Spellcasting Advantage on Spell -SHADOWDARK.item.effect.predefined_effect.spellCastingBonus: Spellcasting Check Bonus -SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: Небронированный КБ бонус -SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: Бонус к атаке оружия -SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: Бонус к урону атаки оружия -SHADOWDARK.item.effect.predefined_effect.weaponDamageDieD12: Weapon Damage Die D12 -SHADOWDARK.item.effect.predefined_effect.weaponDamageDieImprovementByProperty: Weapon Damage Die Improvement by Property -SHADOWDARK.item.effect.predefined_effect.weaponDamageExtraDieByProperty: Extra Damage Die by Property -SHADOWDARK.item.effect.predefined_effect.weaponDamageExtraDieImprovementByProperty: Extra Damage Die Improvement by Property -SHADOWDARK.item.effect.predefined_effect.weaponDamageMultiplier: Weapon Damage Multiplier -SHADOWDARK.item.effect.predefined_effect.weaponMastery: Совершенное владение оружием -SHADOWDARK.item.effect.show-on-panel: Отображать на панели -SHADOWDARK.item.effect.show-token-icon: Показать иконку токена -SHADOWDARK.item.effect.source.title: Item Source -SHADOWDARK.item.effect.warning.add_effect_without_value: Can't add effects without selecting a value when asked. -SHADOWDARK.item.effect.warning.add_round_item_outside_combat: Can't add effects with Rounds type duration outside of combat. +SHADOWDARK.item.effect.predefined_effect.meleeAttackBonus: Бонус к броску атаки в ближнем бою +SHADOWDARK.item.effect.predefined_effect.meleeDamageBonus: Бонус к урону в ближнем бою +SHADOWDARK.item.effect.predefined_effect.permanentAbilityCha: Постоянная характеристика (Хар) +SHADOWDARK.item.effect.predefined_effect.permanentAbilityCon: Постоянная характеристика (Тел) +SHADOWDARK.item.effect.predefined_effect.permanentAbilityDex: Постоянная характеристика (Лов) +SHADOWDARK.item.effect.predefined_effect.permanentAbilityInt: Постоянная характеристика (Инт) +SHADOWDARK.item.effect.predefined_effect.permanentAbilityStr: Постоянная характеристика (Сил) +SHADOWDARK.item.effect.predefined_effect.permanentAbilityWis: Постоянная характеристика (Мдр) +SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: Бонус к броску дальней атаки +SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: Бонус к урону дальней атаки +SHADOWDARK.item.effect.predefined_effect.spellAdvantage: Преимущество при колдовстве заклинания +SHADOWDARK.item.effect.predefined_effect.spellCastingBonus: Бонус к проверке колдовства +SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: Бонус к КЗ без доспехов +SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: Бонус к броску атаки оружием +SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: Бонус к урону атаки оружием +SHADOWDARK.item.effect.predefined_effect.weaponDamageDieD12: Кубик урона оружия D12 +SHADOWDARK.item.effect.predefined_effect.weaponDamageDieImprovementByProperty: Улучшение кубика урона оружия по свойству +SHADOWDARK.item.effect.predefined_effect.weaponDamageExtraDieByProperty: Дополнительный кубик урона по свойству +SHADOWDARK.item.effect.predefined_effect.weaponDamageExtraDieImprovementByProperty: Улучшение дополнительного кубика урона по свойству +SHADOWDARK.item.effect.predefined_effect.weaponDamageMultiplier: Множитель урона оружия +SHADOWDARK.item.effect.predefined_effect.weaponMastery: Мастерство оружия +SHADOWDARK.item.effect.show-on-panel: Показать на панели +SHADOWDARK.item.effect.show-token-icon: Показать иконку жетона +SHADOWDARK.item.effect.source.title: Источник предмета +SHADOWDARK.item.effect.warning.add_effect_without_value: Нельзя добавить эффекты без выбора значения, когда это требуется. +SHADOWDARK.item.effect.warning.add_round_item_outside_combat: Нельзя добавить эффекты с длительностью в раундах вне боя. SHADOWDARK.item.equipped: Экипировано SHADOWDARK.item.errors.no_available_ammunition: No ammunition available -SHADOWDARK.item.inventory_free_carry: Free Carry +SHADOWDARK.item.inventory_free_carry: Свободный перенос SHADOWDARK.item.inventory_per_slot: Макс. на слот SHADOWDARK.item.inventory_quantity: Количество -SHADOWDARK.item.inventory_slots: Slots per Item +SHADOWDARK.item.inventory_slots: Слотов на предмет SHADOWDARK.item.level: Уровень SHADOWDARK.item.light.is_source: Источник света -SHADOWDARK.item.light.longevity: Longevity (Mins) -SHADOWDARK.item.light.remaining: Remaining (Mins) -SHADOWDARK.item.light.template: Light Template +SHADOWDARK.item.light.longevity: Долговечность (мин) +SHADOWDARK.item.light.remaining: Осталось (мин) +SHADOWDARK.item.light.template: Шаблон света SHADOWDARK.item.magic_item.is_magic: Магический предмет -SHADOWDARK.item.magic_item.title: Magic Item Effect(s) +SHADOWDARK.item.magic_item.title: Эффект(ы) магического предмета SHADOWDARK.item.magic_item.type.attackBonus: Бонус к атаке -SHADOWDARK.item.magic_item.type.criticalFailureThreshold: Higher Critical Failure Threshold -SHADOWDARK.item.magic_item.type.criticalSuccessThreshold: Lower Critical Success Threshold -SHADOWDARK.item.magic_item.type.critMultiplier: Critical Multiplier +SHADOWDARK.item.magic_item.type.criticalFailureThreshold: Повышенный порог критического провала +SHADOWDARK.item.magic_item.type.criticalSuccessThreshold: Пониженный порог критического успеха +SHADOWDARK.item.magic_item.type.critMultiplier: Множитель критического удара SHADOWDARK.item.magic_item.type.custom: Пользовательский эффект -SHADOWDARK.item.magic_item.type.damageBonus: Бонус урона -SHADOWDARK.item.magic_item.type.permanentAbility: Постоянное изменение способности +SHADOWDARK.item.magic_item.type.damageBonus: Бонус к урону +SHADOWDARK.item.magic_item.type.permanentAbility: Постоянное изменение характеристики SHADOWDARK.item.name_from_spell.Potion: Зелье {spellName} SHADOWDARK.item.name_from_spell.Scroll: Свиток {spellName} -SHADOWDARK.item.name_from_spell.Wand: Палочка {spellName} -SHADOWDARK.item.name: Имя предмета +SHADOWDARK.item.name_from_spell.Wand: Жезл {spellName} +SHADOWDARK.item.name: Название предмета SHADOWDARK.item.npc_attack_bonus: Бонус атаки -SHADOWDARK.item.npc_attack_count: Num. Attacks +SHADOWDARK.item.npc_attack_count: Кол-во атак SHADOWDARK.item.npc_attack_damage_formula: Формула урона -SHADOWDARK.item.npc_attack_special: Attack Features +SHADOWDARK.item.npc_attack_special: Особенности атаки SHADOWDARK.item.npc_attack_type: Тип -SHADOWDARK.item.npc_attack.num_damage_dice: Num. Damage Dice +SHADOWDARK.item.npc_attack.num_damage_dice: Кол-во кубиков урона SHADOWDARK.item.potion.label: Зелье SHADOWDARK.item.properties.label: Item Properties SHADOWDARK.item.scroll.label: Свиток -SHADOWDARK.item.source_tag: Source Tag +SHADOWDARK.item.source_tag: Тег источника SHADOWDARK.item.source: Источник -SHADOWDARK.item.spell_caster_classes: Caster Classes +SHADOWDARK.item.spell_caster_classes: Классы заклинателей SHADOWDARK.item.spell_class: Класс заклинания -SHADOWDARK.item.spell_duration: Продолжительность +SHADOWDARK.item.spell_duration: Длительность SHADOWDARK.item.spell_name: Название заклинания -SHADOWDARK.item.spell_range: Дальность +SHADOWDARK.item.spell_range: Дистанция SHADOWDARK.item.spell_tier: Уровень SHADOWDARK.item.spell.label: Заклинание -SHADOWDARK.item.stashed.label: Stashed +SHADOWDARK.item.stashed.label: На хранении SHADOWDARK.item.talent_class: Класс таланта SHADOWDARK.item.treasure_name: Название сокровища -SHADOWDARK.item.treasure_value: Цена сокровища +SHADOWDARK.item.treasure_value: Ценность сокровища SHADOWDARK.item.treasure: Сокровище SHADOWDARK.item.type: Тип предмета -SHADOWDARK.item.wand.label: Палочка -SHADOWDARK.item.weapon_damage.oneHanded_short: 1H -SHADOWDARK.item.weapon_damage.oneHanded: 1H Damage -SHADOWDARK.item.weapon_damage.twoHanded_short: 2H -SHADOWDARK.item.weapon_damage.twoHanded: 2H Damage -SHADOWDARK.item.weapon_range: Range +SHADOWDARK.item.wand.label: Жезл +SHADOWDARK.item.weapon_damage.oneHanded_short: 1Р +SHADOWDARK.item.weapon_damage.oneHanded: Урон одноручным +SHADOWDARK.item.weapon_damage.twoHanded_short: 2Р +SHADOWDARK.item.weapon_damage.twoHanded: Урон двуручным +SHADOWDARK.item.weapon_range: Дальность SHADOWDARK.item.weapon_type: Тип -SHADOWDARK.item.weapon.base_weapon.bastard_sword: Bastard Sword +SHADOWDARK.item.weapon.base_weapon.bastard_sword: Полуторный меч SHADOWDARK.item.weapon.base_weapon.club: Дубинка SHADOWDARK.item.weapon.base_weapon.crossbow: Арбалет SHADOWDARK.item.weapon.base_weapon.dagger: Кинжал -SHADOWDARK.item.weapon.base_weapon.greataxe: Двуручный топор +SHADOWDARK.item.weapon.base_weapon.greataxe: Секира SHADOWDARK.item.weapon.base_weapon.greatsword: Двуручный меч -SHADOWDARK.item.weapon.base_weapon.javelin: Javelin +SHADOWDARK.item.weapon.base_weapon.javelin: Метательное Копьё SHADOWDARK.item.weapon.base_weapon.longbow: Длинный лук SHADOWDARK.item.weapon.base_weapon.longsword: Длинный меч SHADOWDARK.item.weapon.base_weapon.mace: Булава @@ -520,268 +520,268 @@ SHADOWDARK.item.weapon.base_weapon.shortsword: Короткий меч SHADOWDARK.item.weapon.base_weapon.spear: Копьё SHADOWDARK.item.weapon.base_weapon.staff: Посох SHADOWDARK.item.weapon.base_weapon.title: Базовое оружие -SHADOWDARK.item.weapon.base_weapon.wand: Палочка -SHADOWDARK.item.weapon.base_weapon.warhammer: Warhammer +SHADOWDARK.item.weapon.base_weapon.wand: Волшебная палочка +SHADOWDARK.item.weapon.base_weapon.warhammer: Боевой молот SHADOWDARK.item.weapon.weapon_properties.label: Weapon Properties -SHADOWDARK.language_choices.common.label: Additional Common -SHADOWDARK.language_choices.rare.label: Additional Rare -SHADOWDARK.language.celestial: Божественный -SHADOWDARK.language.common: Common -SHADOWDARK.language.diabolic: Diabolic -SHADOWDARK.language.draconic: Draconic -SHADOWDARK.language.dwarvish: Dwarvish -SHADOWDARK.language.elvish: Elvish -SHADOWDARK.language.giant: Гигант -SHADOWDARK.language.goblin: Гоблин -SHADOWDARK.language.merran: Merran -SHADOWDARK.language.orcish: Orcish -SHADOWDARK.language.primordial: Primordial -SHADOWDARK.language.rarity.common: Общее -SHADOWDARK.language.rarity.label: Rarity -SHADOWDARK.language.rarity.rare: Rare -SHADOWDARK.language.reptilian: Reptilian -SHADOWDARK.language.sylvan: Sylvan -SHADOWDARK.language.thanian: Thanian -SHADOWDARK.language.who_speaks_it: Who Speaks It -SHADOWDARK.light_source.lantern: Lantern -SHADOWDARK.light_source.light_spell.double_near: Light Spell (Double Near) -SHADOWDARK.light_source.light_spell.near: Light Spell (Near) +SHADOWDARK.language_choices.common.label: Дополнительный общий +SHADOWDARK.language_choices.rare.label: Дополнительный редкий +SHADOWDARK.language.celestial: Небесный +SHADOWDARK.language.common: Общий +SHADOWDARK.language.diabolic: Дьявольский +SHADOWDARK.language.draconic: Драконий +SHADOWDARK.language.dwarvish: Дварфийский +SHADOWDARK.language.elvish: Эльфийский +SHADOWDARK.language.giant: Великаний +SHADOWDARK.language.goblin: Гоблинский +SHADOWDARK.language.merran: Мерранский +SHADOWDARK.language.orcish: Орочий +SHADOWDARK.language.primordial: Первичный +SHADOWDARK.language.rarity.common: Общий +SHADOWDARK.language.rarity.label: Редкость +SHADOWDARK.language.rarity.rare: Редкий +SHADOWDARK.language.reptilian: Рептилоидный +SHADOWDARK.language.sylvan: Сильванский +SHADOWDARK.language.thanian: Таньянский +SHADOWDARK.language.who_speaks_it: Кто на нём говорит +SHADOWDARK.light_source.lantern: Фонарь +SHADOWDARK.light_source.light_spell.double_near: Заклинание света (Двойная ближняя) +SHADOWDARK.light_source.light_spell.near: Заклинание света (Ближняя) SHADOWDARK.light_source.torch: Факел -SHADOWDARK.light-source.dropped: Dropped {name} -SHADOWDARK.light-source.pick-up-lightsource.tooltip: Pick up Lightsource +SHADOWDARK.light-source.dropped: Выронен {name} +SHADOWDARK.light-source.pick-up-lightsource.tooltip: Поднять источник света SHADOWDARK.light-tracker.active: Активен -SHADOWDARK.light-tracker.paused: Приостановлен +SHADOWDARK.light-tracker.paused: На паузе SHADOWDARK.light-tracker.status.label: Статус SHADOWDARK.light-tracker.title: Трекер освещения SHADOWDARK.light-tracker.user_warning: Один или несколько пользователей не выбрали персонажа -SHADOWDARK.macro.error.caught_error: "" -SHADOWDARK.macro.error.gm_role_required: The '{macro}' macro requires you to have the 'Game Master' user role -SHADOWDARK.macro.success: The '{macro}' macro completed successfully -SHADOWDARK.macro.warn.create_item_requires_ownership: You can only create macro buttons for owned Items -SHADOWDARK.migration.begin_migration: Performing data upgrades for Shadowdark RPG -SHADOWDARK.migration.begin_schema: Applying updates for Shadowdark RPG schema v{version} -SHADOWDARK.migration.completed_migration: Completed data updgrades for Shadowdark RPG -SHADOWDARK.migration.completed_schema: Completed applying updates for Shadowdark RPG schema v{version} -SHADOWDARK.module_art_config.portraits: Portraits -SHADOWDARK.module_art_config.tokens: Tokens -SHADOWDARK.notify.combat.clockwise_initiative_only_gm: When Clockwise Initiative is enabled, only the GM can roll initiative. -SHADOWDARK.npc_attack.type.physical: Physical -SHADOWDARK.npc_attack.type.special: Special -SHADOWDARK.npc_move.close: Close -SHADOWDARK.npc_move.double_near: Double Near -SHADOWDARK.npc_move.far: Far -SHADOWDARK.npc_move.near: Near -SHADOWDARK.npc_move.none: None -SHADOWDARK.npc_move.special: Special -SHADOWDARK.npc_move.triple_near: Triple Near -SHADOWDARK.property.type.option.armor: Armor -SHADOWDARK.property.type.option.weapon: Weapon -SHADOWDARK.property.type.title: Property Type -SHADOWDARK.range.close_short: C -SHADOWDARK.range.close: Close -SHADOWDARK.range.far_short: F -SHADOWDARK.range.far: Far -SHADOWDARK.range.near_short: "N" -SHADOWDARK.range.near: Near -SHADOWDARK.range.nearLine_short: NL -SHADOWDARK.range.nearLine: Near Line -SHADOWDARK.range.samePlane_short: SP -SHADOWDARK.range.samePlane: On the same plane -SHADOWDARK.range.self_short: S -SHADOWDARK.range.self: Self -SHADOWDARK.range.touch_short: T -SHADOWDARK.range.touch: Touch -SHADOWDARK.range.unlimited_short: U -SHADOWDARK.range.unlimited: Unlimited -SHADOWDARK.roll.advantage_title: "{title} with Advantage" -SHADOWDARK.roll.advantage: Advantage -SHADOWDARK.roll.critical.failure: Critical Failure! ({value}) -SHADOWDARK.roll.critical.success: Critical Success! ({value}) -SHADOWDARK.roll.D20: Roll D20 -SHADOWDARK.roll.damage: "Damage Roll:" -SHADOWDARK.roll.disadvantage_title: "{title} with Disadvantage" -SHADOWDARK.roll.disadvantage: Disadvantage -SHADOWDARK.roll.failure: Failure! ({value}) -SHADOWDARK.roll.normal: Normal -SHADOWDARK.roll.spell_casting_check: Spellcasting Check -SHADOWDARK.roll.success: Success! ({value}) +SHADOWDARK.macro.error.caught_error: "Макрос '{macro}' завершился с ошибкой: {error}" +SHADOWDARK.macro.error.gm_role_required: Для макроса '{macro}' требуется роль 'Мастер игры' +SHADOWDARK.macro.success: Макрос '{macro}' успешно выполнен +SHADOWDARK.macro.warn.create_item_requires_ownership: Вы можете создавать кнопки макросов только для принадлежащих вам предметов +SHADOWDARK.migration.begin_migration: Выполняется обновление данных для Shadowdark RPG +SHADOWDARK.migration.begin_schema: Применение обновлений для схемы Shadowdark RPG v{version} +SHADOWDARK.migration.completed_migration: Обновление данных для Shadowdark RPG завершено +SHADOWDARK.migration.completed_schema: Завершено применение обновлений для схемы Shadowdark RPG v{version} +SHADOWDARK.module_art_config.portraits: Портреты +SHADOWDARK.module_art_config.tokens: Жетоны +SHADOWDARK.notify.combat.clockwise_initiative_only_gm: Когда включена инициатива по часовой стрелке, только Мастер может бросать инициативу. +SHADOWDARK.npc_attack.type.physical: Физическая +SHADOWDARK.npc_attack.type.special: Особая +SHADOWDARK.npc_move.close: Вплотную +SHADOWDARK.npc_move.double_near: Двойная ближняя +SHADOWDARK.npc_move.far: Дальняя +SHADOWDARK.npc_move.near: Ближняя +SHADOWDARK.npc_move.none: Нет +SHADOWDARK.npc_move.special: Особая +SHADOWDARK.npc_move.triple_near: Тройная ближняя +SHADOWDARK.property.type.option.armor: Доспех +SHADOWDARK.property.type.option.weapon: Оружие +SHADOWDARK.property.type.title: Тип свойства +SHADOWDARK.range.close_short: В +SHADOWDARK.range.close: Вплотную +SHADOWDARK.range.far_short: Д +SHADOWDARK.range.far: Дальняя +SHADOWDARK.range.near_short: "Б" +SHADOWDARK.range.near: Ближняя +SHADOWDARK.range.nearLine_short: БЛ +SHADOWDARK.range.nearLine: Ближняя линия +SHADOWDARK.range.samePlane_short: ОП +SHADOWDARK.range.samePlane: На одном плане +SHADOWDARK.range.self_short: С +SHADOWDARK.range.self: На себя +SHADOWDARK.range.touch_short: К +SHADOWDARK.range.touch: Касание +SHADOWDARK.range.unlimited_short: Н +SHADOWDARK.range.unlimited: Неограниченная +SHADOWDARK.roll.advantage_title: "{title} с преимуществом" +SHADOWDARK.roll.advantage: Преимущество +SHADOWDARK.roll.critical.failure: Критический провал! ({value}) +SHADOWDARK.roll.critical.success: Критический успех! ({value}) +SHADOWDARK.roll.D20: Бросок D20 +SHADOWDARK.roll.damage: "Бросок урона:" +SHADOWDARK.roll.disadvantage_title: "{title} с помехой" +SHADOWDARK.roll.disadvantage: Помеха +SHADOWDARK.roll.failure: Провал! ({value}) +SHADOWDARK.roll.normal: Обычный +SHADOWDARK.roll.spell_casting_check: Проверка заклинания +SHADOWDARK.roll.success: Успех! ({value}) SHADOWDARK.settings.consume_ammunition.hint: Automatically adjust ammunition for weapons that use it when an attack roll is made SHADOWDARK.settings.consume_ammunition.name: Auto-Consume Ammunition -SHADOWDARK.settings.debugEnabled.hint: Enable or Disable additional debug logging -SHADOWDARK.settings.debugEnabled.name: Enable/Disable Debug -SHADOWDARK.settings.effect_panel.show_passive.hint: If checked, the Effect Panel will also show active effects from talents and items -SHADOWDARK.settings.effect_panel.show_passive.name: Show All Active Effects -SHADOWDARK.settings.migrateSystemCompendiums.hint: Perform data migration on the built in Shadowdark RPG system compendiums (don't modify this unless you know what you are doing) -SHADOWDARK.settings.migrateSystemCompendiums.name: Migrate System Compendiums -SHADOWDARK.settings.module_art.hint: Configure which module-provided art should be used -SHADOWDARK.settings.module_art.label: Configure Art -SHADOWDARK.settings.module_art.name: Module-provided Art -SHADOWDARK.settings.module_art.save: Save Changes -SHADOWDARK.settings.roll_npc_hp.hint: Automatically roll NPC Hit Points when they are added to a scene -SHADOWDARK.settings.roll_npc_hp.name: Auto Roll NPC Hit Points -SHADOWDARK.settings.schemaVersion.hint: Records the current schema version for the Shadowdark RPG system data. (don't modify this unless you know what you are doing) -SHADOWDARK.settings.schemaVersion.name: Schema Version -SHADOWDARK.settings.source_filter.all_used: All sources are currently allowed -SHADOWDARK.settings.source_filter.button_label: Configure Source Filters -SHADOWDARK.settings.source_filter.hint: If populated, only book sources included in this list will be available for selection in relevant places. Items with no book source set will always be available. -SHADOWDARK.settings.source_filter.name: Source Filter -SHADOWDARK.settings.source_filter.prompt: Select Source... -SHADOWDARK.settings.source_filter.save_button: Save Configuration -SHADOWDARK.settings.source_filter.these_used: Only the following sources will be allowed -SHADOWDARK.settings.source_filter.title: Book Source Filters -SHADOWDARK.settings.systemVersion.hint: Records the current Shadowdark RPG system version number. (don't modify this unless you know what you are doing) -SHADOWDARK.settings.systemVersion.name: System Version -SHADOWDARK.settings.track_light_sources.hint: If checked the system will track and update the time remaining on any active light sources. -SHADOWDARK.settings.track_light_sources.inactive_user.hint: If checked light sources belonging to inactive (not logged in) users will still be tracked -SHADOWDARK.settings.track_light_sources.inactive_user.name: Track Inactive User Light Sources -SHADOWDARK.settings.track_light_sources.interval.hint: How frequently tracked light sources will be updated, in seconds. -SHADOWDARK.settings.track_light_sources.interval.name: Light Tracking Interval -SHADOWDARK.settings.track_light_sources.name: Track Light Sources -SHADOWDARK.settings.track_light_sources.open_on_start.hint: If checked the Light Tracking interface will open on startup (GM only). -SHADOWDARK.settings.track_light_sources.open_on_start.name: Open Light Tracking UI on Startup -SHADOWDARK.settings.track_light_sources.pause_with_game.hint: If checked the Realtime Light Tracking will pause whenever Foundry is paused. -SHADOWDARK.settings.track_light_sources.pause_with_game.name: Pause Light Tracking -SHADOWDARK.settings.track_light_sources.realtime_tracking.hint: If checked the Light Tracking will follow real time. Disable if an external time/calendar module is used. -SHADOWDARK.settings.track_light_sources.realtime_tracking.name: Realtime Light Tracking -SHADOWDARK.settings.use_clockwise_initiative.hint: If checked the combatant with the highest iniative roll will go first, and all other combatants will follow in a fixed order. All NPCs will be grouped together in the initiative order. -SHADOWDARK.settings.use_clockwise_initiative.name: Use Clockwise Initiative -SHADOWDARK.settings.use_pulp_mode.hint: Shows Luck tokens as a numeric value rather than a checkbox -SHADOWDARK.settings.use_pulp_mode.name: Enable Pulp Mode -SHADOWDARK.sheet.abilities.label: Умения -SHADOWDARK.sheet.abilities.modifiers: Modifiers -SHADOWDARK.sheet.abilities.stats: Статы -SHADOWDARK.sheet.abilities.ungrouped.label: Miscellaneous -SHADOWDARK.sheet.abilities.uses.decrement.tooltip: Decrease Available Uses -SHADOWDARK.sheet.abilities.uses.increment.tooltip: Increase Available Uses -SHADOWDARK.sheet.actor.ac: AC -SHADOWDARK.sheet.actor.alignment: Alignment -SHADOWDARK.sheet.actor.hp_max: Max -SHADOWDARK.sheet.actor.hp: HP -SHADOWDARK.sheet.actor.level: Level -SHADOWDARK.sheet.actor.placeholder.name: New Actor Name -SHADOWDARK.sheet.class.item: Shadowdark Item Sheet -SHADOWDARK.sheet.class.npc: Shadowdark NPC Sheet -SHADOWDARK.sheet.class.player: Shadowdark Player Sheet -SHADOWDARK.sheet.general.item_create.tooltip: Create {type} Item -SHADOWDARK.sheet.general.item_delete.title: Delete Item -SHADOWDARK.sheet.general.item_edit.title: Edit Item -SHADOWDARK.sheet.general.roll_hp: Roll HP -SHADOWDARK.sheet.item.tab.description: Description -SHADOWDARK.sheet.item.tab.details: Подробности -SHADOWDARK.sheet.item.tab.effects: Effects -SHADOWDARK.sheet.item.tab.light: Light -SHADOWDARK.sheet.item.tab.magic: Magic -SHADOWDARK.sheet.item.tab.source: Source -SHADOWDARK.sheet.item.tab.spellsknown: Spells Known -SHADOWDARK.sheet.item.tab.titles: Titles -SHADOWDARK.sheet.npc.attacks_label: Attacks -SHADOWDARK.sheet.npc.dark_adapted: Dark-Adapted -SHADOWDARK.sheet.npc.description_label: Description -SHADOWDARK.sheet.npc.features_label: Features -SHADOWDARK.sheet.npc.movement_short: Move -SHADOWDARK.sheet.npc.movement: Movement -SHADOWDARK.sheet.npc.specials_label: Special Attacks -SHADOWDARK.sheet.npc.tab.abilities: Умения -SHADOWDARK.sheet.npc.tab.description: Description -SHADOWDARK.sheet.npc.tab.spells: Spells -SHADOWDARK.sheet.player.active_effect_override: This value is being modified by an Active Effect and cannot be edited. Disable the effect to edit it. -SHADOWDARK.sheet.player.ancestry.label: Ancestry -SHADOWDARK.sheet.player.ancestry.tooltip: Your character's cultural and ancestral heritage -SHADOWDARK.sheet.player.available_spells: Available Spells -SHADOWDARK.sheet.player.background.label: Background -SHADOWDARK.sheet.player.background.tooltip: Your history and past experience. You are adept at tasks related to your background. -SHADOWDARK.sheet.player.boon.label: Boon -SHADOWDARK.sheet.player.boons.blessings.label: Blessings -SHADOWDARK.sheet.player.boons.label: Boons -SHADOWDARK.sheet.player.boons.name: Boon Name -SHADOWDARK.sheet.player.boons.oaths.label: Oaths -SHADOWDARK.sheet.player.boons.secrets.label: Secrets -SHADOWDARK.sheet.player.class_spells: Class Spells -SHADOWDARK.sheet.player.class.label: Class -SHADOWDARK.sheet.player.class.tooltip: Your character's job -SHADOWDARK.sheet.player.deity.label: Deity -SHADOWDARK.sheet.player.deity.tooltip: Your character’s cosmic link to the opposing forces of Law and Chaos, or balanced Neutrality. -SHADOWDARK.sheet.player.languages: Languages +SHADOWDARK.settings.debugEnabled.hint: Включить или отключить дополнительное ведение журнала отладки +SHADOWDARK.settings.debugEnabled.name: Включить/Отключить отладку +SHADOWDARK.settings.effect_panel.show_passive.hint: Если отмечено, Панель эффектов также будет показывать активные эффекты от талантов и предметов +SHADOWDARK.settings.effect_panel.show_passive.name: Показывать все активные эффекты +SHADOWDARK.settings.migrateSystemCompendiums.hint: Выполнить миграцию данных для встроенных сборников системы Shadowdark RPG (не изменяйте, если не знаете, что делаете) +SHADOWDARK.settings.migrateSystemCompendiums.name: Мигрировать системные сборники +SHADOWDARK.settings.module_art.hint: Настройте, какие изображения, предоставленные модулями, следует использовать +SHADOWDARK.settings.module_art.label: Настроить изображения +SHADOWDARK.settings.module_art.name: Изображения из модулей +SHADOWDARK.settings.module_art.save: Сохранить изменения +SHADOWDARK.settings.roll_npc_hp.hint: Автоматически бросать кубики для определения очков здоровья NPC при добавлении их на сцену +SHADOWDARK.settings.roll_npc_hp.name: Автоматический бросок очков здоровья NPC +SHADOWDARK.settings.schemaVersion.hint: Записывает текущую версию схемы данных системы Shadowdark RPG (не изменяйте, если не знаете, что делаете) +SHADOWDARK.settings.schemaVersion.name: Версия схемы +SHADOWDARK.settings.source_filter.all_used: В настоящее время разрешены все источники +SHADOWDARK.settings.source_filter.button_label: Настроить фильтры источников +SHADOWDARK.settings.source_filter.hint: Если заполнено, только источники книг, включенные в этот список, будут доступны для выбора в соответствующих местах. Предметы без установленного источника книги всегда будут доступны. +SHADOWDARK.settings.source_filter.name: Фильтр источников +SHADOWDARK.settings.source_filter.prompt: Выберите источник... +SHADOWDARK.settings.source_filter.save_button: Сохранить конфигурацию +SHADOWDARK.settings.source_filter.these_used: Будут разрешены только следующие источники +SHADOWDARK.settings.source_filter.title: Фильтры источников книг +SHADOWDARK.settings.systemVersion.hint: Записывает текущую версию системы Shadowdark RPG (не изменяйте, если не знаете, что делаете) +SHADOWDARK.settings.systemVersion.name: Версия системы +SHADOWDARK.settings.track_light_sources.hint: Если отмечено, система будет отслеживать и обновлять оставшееся время для любых активных источников света +SHADOWDARK.settings.track_light_sources.inactive_user.hint: Если отмечено, источники света, принадлежащие неактивным (не вошедшим в систему) пользователям, все равно будут отслеживаться +SHADOWDARK.settings.track_light_sources.inactive_user.name: Отслеживать источники света неактивных пользователей +SHADOWDARK.settings.track_light_sources.interval.hint: Как часто будут обновляться отслеживаемые источники света, в секундах +SHADOWDARK.settings.track_light_sources.interval.name: Интервал отслеживания света +SHADOWDARK.settings.track_light_sources.name: Отслеживать источники света +SHADOWDARK.settings.track_light_sources.open_on_start.hint: Если отмечено, интерфейс отслеживания света будет открываться при запуске (только для GM) +SHADOWDARK.settings.track_light_sources.open_on_start.name: Открывать интерфейс отслеживания света при запуске +SHADOWDARK.settings.track_light_sources.pause_with_game.hint: Если отмечено, отслеживание света в реальном времени будет приостанавливаться всякий раз, когда Foundry приостанавливается +SHADOWDARK.settings.track_light_sources.pause_with_game.name: Приостанавливать отслеживание света +SHADOWDARK.settings.track_light_sources.realtime_tracking.hint: Если отмечено, отслеживание света будет следовать реальному времени. Отключите, если используется внешний модуль времени/календаря +SHADOWDARK.settings.track_light_sources.realtime_tracking.name: Отслеживание света в реальном времени +SHADOWDARK.settings.use_clockwise_initiative.hint: Если отмечено, участник с наивысшим броском инициативы будет ходить первым, а все остальные участники будут следовать в фиксированном порядке. Все NPC будут сгруппированы вместе в порядке инициативы +SHADOWDARK.settings.use_clockwise_initiative.name: Использовать инициативу по часовой стрелке +SHADOWDARK.settings.use_pulp_mode.hint: Показывает жетоны Удачи как числовое значение, а не как флажок +SHADOWDARK.settings.use_pulp_mode.name: Включить режим Pulp +SHADOWDARK.sheet.abilities.label: Способности +SHADOWDARK.sheet.abilities.modifiers: Модификаторы +SHADOWDARK.sheet.abilities.stats: Характеристики +SHADOWDARK.sheet.abilities.ungrouped.label: Разное +SHADOWDARK.sheet.abilities.uses.decrement.tooltip: Уменьшить доступные использования +SHADOWDARK.sheet.abilities.uses.increment.tooltip: Увеличить доступные использования +SHADOWDARK.sheet.actor.ac: КЗ +SHADOWDARK.sheet.actor.alignment: Мировоззрение +SHADOWDARK.sheet.actor.hp_max: Макс +SHADOWDARK.sheet.actor.hp: ОЗ +SHADOWDARK.sheet.actor.level: Уровень +SHADOWDARK.sheet.actor.placeholder.name: Имя нового актора +SHADOWDARK.sheet.class.item: Лист предмета Shadowdark +SHADOWDARK.sheet.class.npc: Лист NPC Shadowdark +SHADOWDARK.sheet.class.player: Лист игрока Shadowdark +SHADOWDARK.sheet.general.item_create.tooltip: Создать предмет типа {type} +SHADOWDARK.sheet.general.item_delete.title: Удалить предмет +SHADOWDARK.sheet.general.item_edit.title: Редактировать предмет +SHADOWDARK.sheet.general.roll_hp: Бросить ОЗ +SHADOWDARK.sheet.item.tab.description: Описание +SHADOWDARK.sheet.item.tab.details: Детали +SHADOWDARK.sheet.item.tab.effects: Эффекты +SHADOWDARK.sheet.item.tab.light: Свет +SHADOWDARK.sheet.item.tab.magic: Магия +SHADOWDARK.sheet.item.tab.source: Источник +SHADOWDARK.sheet.item.tab.spellsknown: Известные заклинания +SHADOWDARK.sheet.item.tab.titles: Титулы +SHADOWDARK.sheet.npc.attacks_label: Атаки +SHADOWDARK.sheet.npc.dark_adapted: Адаптирован к темноте +SHADOWDARK.sheet.npc.description_label: Описание +SHADOWDARK.sheet.npc.features_label: Особенности +SHADOWDARK.sheet.npc.movement_short: Движ +SHADOWDARK.sheet.npc.movement: Движение +SHADOWDARK.sheet.npc.specials_label: Особые атаки +SHADOWDARK.sheet.npc.tab.abilities: Способности +SHADOWDARK.sheet.npc.tab.description: Описание +SHADOWDARK.sheet.npc.tab.spells: Заклинания +SHADOWDARK.sheet.player.active_effect_override: Это значение изменяется активным эффектом и не может быть отредактировано. Отключите эффект, чтобы отредактировать его. +SHADOWDARK.sheet.player.ancestry.label: Происхождение +SHADOWDARK.sheet.player.ancestry.tooltip: Культурное и родовое наследие вашего персонажа +SHADOWDARK.sheet.player.available_spells: Доступные заклинания +SHADOWDARK.sheet.player.background.label: Предыстория +SHADOWDARK.sheet.player.background.tooltip: Ваша история и прошлый опыт. Вы искусны в задачах, связанных с вашей предысторией. +SHADOWDARK.sheet.player.boon.label: Дар +SHADOWDARK.sheet.player.boons.blessings.label: Благословения +SHADOWDARK.sheet.player.boons.label: Дары +SHADOWDARK.sheet.player.boons.name: Название дара +SHADOWDARK.sheet.player.boons.oaths.label: Клятвы +SHADOWDARK.sheet.player.boons.secrets.label: Секреты +SHADOWDARK.sheet.player.class_spells: Заклинания класса +SHADOWDARK.sheet.player.class.label: Класс +SHADOWDARK.sheet.player.class.tooltip: Профессия вашего персонажа +SHADOWDARK.sheet.player.deity.label: Божество +SHADOWDARK.sheet.player.deity.tooltip: Космическая связь вашего персонажа с противоборствующими силами Закона и Хаоса или сбалансированного Нейтралитета. +SHADOWDARK.sheet.player.languages: Языки SHADOWDARK.sheet.player.luck: Удача -SHADOWDARK.sheet.player.melee_attacks: Melee Attacks -SHADOWDARK.sheet.player.name.label: Name -SHADOWDARK.sheet.player.ranged_attacks: Ranged Attacks -SHADOWDARK.sheet.player.spells_from_items: Spells From Items -SHADOWDARK.sheet.player.spells_tier: Tier -SHADOWDARK.sheet.player.spells: Spells -SHADOWDARK.sheet.player.tab.abilities: Умения -SHADOWDARK.sheet.player.tab.details: Подробности -SHADOWDARK.sheet.player.tab.inventory: Inventory -SHADOWDARK.sheet.player.tab.notes: Notes -SHADOWDARK.sheet.player.tab.spells: Spells -SHADOWDARK.sheet.player.tab.talents: Talents -SHADOWDARK.sheet.player.talents_level: Level -SHADOWDARK.sheet.player.talents_name: Name -SHADOWDARK.sheet.player.talents: Talents -SHADOWDARK.sheet.player.title: Title -SHADOWDARK.sheet.player.toggle_ability_lost: Toggle Ability Lost -SHADOWDARK.sheet.player.toggle_edit_hp: Toggle Edit HP -SHADOWDARK.sheet.player.toggle_edit_stats: Toggle Edit Stats -SHADOWDARK.sheet.player.toggle_spell_lost: Toggle Spell Lost -SHADOWDARK.sheet.player.tooltip.cast_spell: Cast Spell -SHADOWDARK.sheet.player.tooltip.learn_spell: Learn Spell -SHADOWDARK.sheet.player.tooltip.use_class_ability: Use Class Ability -SHADOWDARK.sheet.player.tooltip.use_potion: Use Potion -SHADOWDARK.sheet.player.tooltip.use_scroll: Use Scroll -SHADOWDARK.sheet.player.tooltip.use_wand: Use Wand -SHADOWDARK.sheet.player.xp: XP -SHADOWDARK.source.bard-and-ranger: "Shadowdark RPG: Bard and Ranger" -SHADOWDARK.source.core-rules: "Shadowdark RPG: Core Rules" -SHADOWDARK.source.cursed-scroll-1: Cursed Scroll Vol.1, Diablerie! -SHADOWDARK.source.cursed-scroll-2: Cursed Scroll Vol.2, Red Sands -SHADOWDARK.source.cursed-scroll-3: Cursed Scroll Vol.3, Midnight Sun +SHADOWDARK.sheet.player.melee_attacks: Рукопашные атаки +SHADOWDARK.sheet.player.name.label: Имя +SHADOWDARK.sheet.player.ranged_attacks: Дальние атаки +SHADOWDARK.sheet.player.spells_from_items: Заклинания от предметов +SHADOWDARK.sheet.player.spells_tier: Уровень +SHADOWDARK.sheet.player.spells: Заклинания +SHADOWDARK.sheet.player.tab.abilities: Способности +SHADOWDARK.sheet.player.tab.details: Детали +SHADOWDARK.sheet.player.tab.inventory: Инвентарь +SHADOWDARK.sheet.player.tab.notes: Заметки +SHADOWDARK.sheet.player.tab.spells: Заклинания +SHADOWDARK.sheet.player.tab.talents: Таланты +SHADOWDARK.sheet.player.talents_level: Уровень +SHADOWDARK.sheet.player.talents_name: Название +SHADOWDARK.sheet.player.talents: Таланты +SHADOWDARK.sheet.player.title: Титул +SHADOWDARK.sheet.player.toggle_ability_lost: Переключить потерю способности +SHADOWDARK.sheet.player.toggle_edit_hp: Переключить редактирование ОЗ +SHADOWDARK.sheet.player.toggle_edit_stats: Переключить редактирование характеристик +SHADOWDARK.sheet.player.toggle_spell_lost: Переключить потерю заклинания +SHADOWDARK.sheet.player.tooltip.cast_spell: Сотворить заклинание +SHADOWDARK.sheet.player.tooltip.learn_spell: Выучить заклинание +SHADOWDARK.sheet.player.tooltip.use_class_ability: Использовать классовую способность +SHADOWDARK.sheet.player.tooltip.use_potion: Использовать зелье +SHADOWDARK.sheet.player.tooltip.use_scroll: Использовать свиток +SHADOWDARK.sheet.player.tooltip.use_wand: Использовать жезл +SHADOWDARK.sheet.player.xp: Опыт +SHADOWDARK.source.bard-and-ranger: "Shadowdark НРИ: Бард и Следопыт" +SHADOWDARK.source.core-rules: "Shadowdark НРИ: Основные правила" +SHADOWDARK.source.cursed-scroll-1: Проклятый свиток том 1, Дьявольщина! +SHADOWDARK.source.cursed-scroll-2: Проклятый свиток том 2, Красные пески +SHADOWDARK.source.cursed-scroll-3: Проклятый свиток том 3, Полуночное солнце SHADOWDARK.source.cursed-scroll-4: Cursed Scroll Vol.4, River of Night SHADOWDARK.source.cursed-scroll-5: Cursed Scroll Vol.5, Dwellers in the Deep SHADOWDARK.source.cursed-scroll-6: Cursed Scroll Vol.6, City of Masks -SHADOWDARK.source.quickstart: "Shadowdark RPG: Quickstart Set" -SHADOWDARK.spell_caster.priest: Priest -SHADOWDARK.spell_caster.wizard: Wizard -SHADOWDARK.spell_duration.days: Days -SHADOWDARK.spell_duration.focus: Focus -SHADOWDARK.spell_duration.instant: Instant -SHADOWDARK.spell_duration.permanent: Permanent -SHADOWDARK.spell_duration.real_time: Real Time -SHADOWDARK.spell_duration.rounds: Rounds -SHADOWDARK.spell_duration.turns: Turns -SHADOWDARK.spell_range.close: Close -SHADOWDARK.spell_range.far: Far -SHADOWDARK.spell_range.near: Near -SHADOWDARK.spell.classes.label: Caster Classes -SHADOWDARK.spell.classes.prompt: Select Class... -SHADOWDARK.talent.backstab: Backstab -SHADOWDARK.talent.class.ancestry: Ancestry -SHADOWDARK.talent.class.class: Class -SHADOWDARK.talent.class.level: Level +SHADOWDARK.source.quickstart: "Shadowdark НРИ: Набор для быстрого старта" +SHADOWDARK.spell_caster.priest: Жрец +SHADOWDARK.spell_caster.wizard: Волшебник +SHADOWDARK.spell_duration.days: Дни +SHADOWDARK.spell_duration.focus: Концентрация +SHADOWDARK.spell_duration.instant: Мгновенное +SHADOWDARK.spell_duration.permanent: Постоянное +SHADOWDARK.spell_duration.real_time: Реальное время +SHADOWDARK.spell_duration.rounds: Раунды +SHADOWDARK.spell_duration.turns: Ходы +SHADOWDARK.spell_range.close: Близко +SHADOWDARK.spell_range.far: Далеко +SHADOWDARK.spell_range.near: Рядом +SHADOWDARK.spell.classes.label: Классы заклинателей +SHADOWDARK.spell.classes.prompt: Выберите класс... +SHADOWDARK.talent.backstab: Удар в спину +SHADOWDARK.talent.class.ancestry: Происхождение +SHADOWDARK.talent.class.class: Класс +SHADOWDARK.talent.class.level: Уровень SHADOWDARK.talent.level_gained: Level Gained -SHADOWDARK.talent.type.ability_improvement: Ability Improvement -SHADOWDARK.talent.type.advantage.hp: HP Roll Advantage -SHADOWDARK.talent.type.advantage.initiative: Initiative Advantage -SHADOWDARK.talent.type.advantage.spell: Spellcasting Advantage -SHADOWDARK.talent.type.advantage.title: Advantage Bonus -SHADOWDARK.talent.type.armor_bonus: Броня КБ бонус -SHADOWDARK.talent.type.armor_mastery: Armor Mastery -SHADOWDARK.talent.type.backstab_die: Extra Backstab Die -SHADOWDARK.talent.type.custom: Custom Talent -SHADOWDARK.talent.type.melee_attack_bonus: Melee Attack Roll Bonus -SHADOWDARK.talent.type.melee_damage_bonus: Melee Damage Roll Bonus -SHADOWDARK.talent.type.ranged_attack_bonus: Ranged Attack Roll Bonus -SHADOWDARK.talent.type.ranged_damage_bonus: Ranged Damage Roll Bonus -SHADOWDARK.talent.type.spell_bonus: Spellcasting Bonus -SHADOWDARK.talent.type.title: Talent Type(s) -SHADOWDARK.talent.type.weapon_mastery: Weapon Mastery -SHADOWDARK.tours.lightsource.notification.not_enabled: You need to enable the Lightsource Tracker in settings to be able to run the Tour -SHADOWDARK.weapon.properties.finesse: Finesse -SHADOWDARK.weapon.properties.loading: Loading -SHADOWDARK.weapon.properties.thrown: Thrown -SHADOWDARK.weapon.properties.two_handed: Two-Handed -SHADOWDARK.weapon.properties.versatile: Versatile -SHADOWDARK.weapon.type.melee: Melee -SHADOWDARK.weapon.type.ranged: Ranged +SHADOWDARK.talent.type.ability_improvement: Улучшение характеристики +SHADOWDARK.talent.type.advantage.hp: Преимущество при броске ОЗ +SHADOWDARK.talent.type.advantage.initiative: Преимущество инициативы +SHADOWDARK.talent.type.advantage.spell: Преимущество при накладывании заклинаний +SHADOWDARK.talent.type.advantage.title: Бонус преимущества +SHADOWDARK.talent.type.armor_bonus: Бонус к КЗ доспеха +SHADOWDARK.talent.type.armor_mastery: Мастерство доспехов +SHADOWDARK.talent.type.backstab_die: Дополнительный кубик удара в спину +SHADOWDARK.talent.type.custom: Пользовательский талант +SHADOWDARK.talent.type.melee_attack_bonus: Бонус к броску рукопашной атаки +SHADOWDARK.talent.type.melee_damage_bonus: Бонус к броску рукопашного урона +SHADOWDARK.talent.type.ranged_attack_bonus: Бонус к броску дальней атаки +SHADOWDARK.talent.type.ranged_damage_bonus: Бонус к броску дальнего урона +SHADOWDARK.talent.type.spell_bonus: Бонус к накладыванию заклинаний +SHADOWDARK.talent.type.title: Тип(ы) таланта +SHADOWDARK.talent.type.weapon_mastery: Мастерство оружия +SHADOWDARK.tours.lightsource.notification.not_enabled: Вам нужно включить отслеживание источников света в настройках, чтобы иметь возможность запустить тур +SHADOWDARK.weapon.properties.finesse: Фехтовальное +SHADOWDARK.weapon.properties.loading: Перезаряжаемое +SHADOWDARK.weapon.properties.thrown: Метательное +SHADOWDARK.weapon.properties.two_handed: Двуручное +SHADOWDARK.weapon.properties.versatile: Универсальное +SHADOWDARK.weapon.type.melee: Рукопашное +SHADOWDARK.weapon.type.ranged: Дальнобойное TYPES.Actor.Light: Light TYPES.Actor.NPC: NPC TYPES.Actor.Player: Player From 010245673e4dc20c062e3cf24bad0253ad8b7d42 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Wed, 30 Oct 2024 17:19:57 +0000 Subject: [PATCH 080/182] work on templates --- system/src/apps/LevelUpSD.mjs | 20 +- system/src/handlebars.mjs | 74 +++--- system/src/templates.mjs | 11 + system/templates/actors/player/details.hbs | 226 +++--------------- .../actors/player/details/alignment.hbs | 17 ++ .../actors/player/details/ancestry.hbs | 26 ++ .../actors/player/details/background.hbs | 26 ++ .../templates/actors/player/details/boons.hbs | 88 ++++--- .../templates/actors/player/details/class.hbs | 34 +++ .../templates/actors/player/details/deity.hbs | 26 ++ .../actors/player/details/languages.hbs | 33 +++ .../templates/actors/player/details/level.hbs | 15 ++ .../actors/player/details/patron.hbs | 26 ++ .../templates/actors/player/details/title.hbs | 12 + system/templates/actors/player/details/xp.hbs | 25 ++ system/templates/actors/player/spells.hbs | 4 +- system/templates/apps/level-up.hbs | 74 +++--- .../items/class/_partials/details.hbs | 2 - .../items/class/_partials/equipment.hbs | 2 - .../items/class/_partials/languages.hbs | 2 - .../items/class/_partials/patron.hbs | 32 +++ .../items/class/_partials/talents.hbs | 2 - system/templates/items/class/details-tab.hbs | 1 + system/templates/items/patron/details-tab.hbs | 11 + 24 files changed, 463 insertions(+), 326 deletions(-) create mode 100644 system/templates/actors/player/details/alignment.hbs create mode 100644 system/templates/actors/player/details/ancestry.hbs create mode 100644 system/templates/actors/player/details/background.hbs create mode 100644 system/templates/actors/player/details/class.hbs create mode 100644 system/templates/actors/player/details/deity.hbs create mode 100644 system/templates/actors/player/details/languages.hbs create mode 100644 system/templates/actors/player/details/level.hbs create mode 100644 system/templates/actors/player/details/patron.hbs create mode 100644 system/templates/actors/player/details/title.hbs create mode 100644 system/templates/actors/player/details/xp.hbs create mode 100644 system/templates/items/class/_partials/patron.hbs diff --git a/system/src/apps/LevelUpSD.mjs b/system/src/apps/LevelUpSD.mjs index 8f29c020..efd89c58 100644 --- a/system/src/apps/LevelUpSD.mjs +++ b/system/src/apps/LevelUpSD.mjs @@ -1,11 +1,3 @@ -Handlebars.registerHelper("addEmptySlots", (objects, max) => { - const newOjects = objects.map(a => ({...a})); - for (let j = 0; j < max - objects.length; j++) { - newOjects.push(null); - } - return newOjects; -}); - export default class LevelUpSD extends FormApplication { constructor(uid) { @@ -103,19 +95,14 @@ export default class LevelUpSD extends FormApplication { this.data.currentLevel = this.data.actor.system.level.value; this.data.targetLevel = this.data.currentLevel +1; this.data.talentGained = (this.data.targetLevel % 2 !== 0); - this.data.isSpellCaster = (this.data.class.system.spellcasting.class !== "__not_spellcaster__"); + this.data.totalSpellsToChoose = 0; - if (this.data.isSpellCaster) { + if (await this.data.actor.isSpellCaster()) { this.data.spellcastingClass = this.data.class.system.spellcasting.class === "" ? this.data.actor.system.class : this.data.class.system.spellcasting.class; - this.spellbook = new shadowdark.apps.SpellBookSD( - this.data.spellcastingClass, - this.data.actor.id - ); - // calculate the spells gained for the target level from the spells known table if (this.data.class.system.spellcasting.spellsknown) { // setup known spells for this level @@ -133,6 +120,7 @@ export default class LevelUpSD extends FormApplication { Object.keys(targetSpells).forEach(k => { this.data.spells[k].max = targetSpells[k] - currentSpells[k]; + this.data.totalSpellsToChoose += this.data.spells[k].max; }); } else { @@ -169,7 +157,7 @@ export default class LevelUpSD extends FormApplication { } async _openSpellBook() { - this.spellbook.render(true); + this.data.actor.openSpellBook(); } async _onRollHP() { diff --git a/system/src/handlebars.mjs b/system/src/handlebars.mjs index 040c9c61..8ac733d0 100644 --- a/system/src/handlebars.mjs +++ b/system/src/handlebars.mjs @@ -8,6 +8,32 @@ export default function registerHandlebarsHelpers() { : effect.icon; }); + Handlebars.registerHelper("addEmptySlots", (objects, max) => { + const newOjects = objects.map(a => ({...a})); + for (let j = 0; j < max - objects.length; j++) { + newOjects.push(null); + } + return newOjects; + }); + + Handlebars.registerHelper("displayCost", item => { + let costInGp = item.system.cost.gp + + (item.system.cost.sp /10 ) + + (item.system.cost.cp /100 ); + costInGp = costInGp * item.system.quantity; + return costInGp.toString().concat(" gp"); + }); + + Handlebars.registerHelper("fromConfig", function(arg1, arg2) { + return CONFIG.SHADOWDARK[arg1][arg2] ? CONFIG.SHADOWDARK[arg1][arg2] : arg2; + }); + + Handlebars.registerHelper("getSpellDuration", (type, value) => { + return (CONFIG.SHADOWDARK.VARIABLE_DURATIONS.includes(type)) + ? `${value} ${CONFIG.SHADOWDARK.SPELL_DURATIONS[type]}` + : CONFIG.SHADOWDARK.SPELL_DURATIONS[type]; + }); + Handlebars.registerHelper("ifCond", function(v1, operator, v2, options) { switch (operator) { case "==": @@ -47,21 +73,11 @@ export default function registerHandlebarsHelpers() { return obj[index] ? options.fn(this) : options.inverse(this); }); - Handlebars.registerHelper("fromConfig", function(arg1, arg2) { - return CONFIG.SHADOWDARK[arg1][arg2] ? CONFIG.SHADOWDARK[arg1][arg2] : arg2; - }); - Handlebars.registerHelper("ifVariableSpellDuration", (value, options) => { return CONFIG.SHADOWDARK.VARIABLE_DURATIONS .includes(value) ? options.fn(this) : options.inverse(this); }); - Handlebars.registerHelper("getSpellDuration", (type, value) => { - return (CONFIG.SHADOWDARK.VARIABLE_DURATIONS.includes(type)) - ? `${value} ${CONFIG.SHADOWDARK.SPELL_DURATIONS[type]}` - : CONFIG.SHADOWDARK.SPELL_DURATIONS[type]; - }); - Handlebars.registerHelper("joinStrings", value => { value = value ? value : []; return value.join(", "); @@ -72,14 +88,6 @@ export default function registerHandlebarsHelpers() { return shadowdark.utils.getFromUuidSync(uuid).name; }); - Handlebars.registerHelper("displayCost", item => { - let costInGp = item.system.cost.gp - + (item.system.cost.sp /10 ) - + (item.system.cost.cp /100 ); - costInGp = costInGp * item.system.quantity; - return costInGp.toString().concat(" gp"); - }); - /* -------------------------------------------- */ /* Effect Panel Handlebars */ /* -------------------------------------------- */ @@ -114,59 +122,59 @@ export default function registerHandlebarsHelpers() { else if (remainingDuration === Infinity) { return game.i18n.localize("SHADOWDARK.apps.effect_panel.duration_label.unlimited"); } - else if (remainingDuration >= EffectPanelSD.DURATION_CONVERTION.IN_TWO_YEARS) { + else if (remainingDuration >= EffectPanelSD.DURATION_CONVERSION.IN_TWO_YEARS) { return game.i18n.format( "SHADOWDARK.apps.effect_panel.duration_label.x_years", { years: - Math.floor(remainingDuration / EffectPanelSD.DURATION_CONVERTION.IN_ONE_YEAR), + Math.floor(remainingDuration / EffectPanelSD.DURATION_CONVERSION.IN_ONE_YEAR), } ); } - else if (remainingDuration >= EffectPanelSD.DURATION_CONVERTION.IN_ONE_YEAR) { + else if (remainingDuration >= EffectPanelSD.DURATION_CONVERSION.IN_ONE_YEAR) { return game.i18n.localize("SHADOWDARK.apps.effect_panel.duration_label.one_year"); } - else if (remainingDuration >= EffectPanelSD.DURATION_CONVERTION.IN_TWO_WEEKS) { + else if (remainingDuration >= EffectPanelSD.DURATION_CONVERSION.IN_TWO_WEEKS) { return game.i18n.format( "SHADOWDARK.apps.effect_panel.duration_label.x_weeks", { weeks: - Math.floor(remainingDuration / EffectPanelSD.DURATION_CONVERTION.IN_ONE_WEEK), + Math.floor(remainingDuration / EffectPanelSD.DURATION_CONVERSION.IN_ONE_WEEK), } ); } - else if (remainingDuration >= EffectPanelSD.DURATION_CONVERTION.IN_ONE_WEEK) { + else if (remainingDuration >= EffectPanelSD.DURATION_CONVERSION.IN_ONE_WEEK) { return game.i18n.localize("SHADOWDARK.apps.effect_panel.duration_label.one_week"); } - else if (remainingDuration >= EffectPanelSD.DURATION_CONVERTION.IN_TWO_DAYS) { + else if (remainingDuration >= EffectPanelSD.DURATION_CONVERSION.IN_TWO_DAYS) { return game.i18n.format( "SHADOWDARK.apps.effect_panel.duration_label.x_days", { days: - Math.floor(remainingDuration / EffectPanelSD.DURATION_CONVERTION.IN_ONE_DAY), + Math.floor(remainingDuration / EffectPanelSD.DURATION_CONVERSION.IN_ONE_DAY), } ); } - else if (remainingDuration >= EffectPanelSD.DURATION_CONVERTION.IN_ONE_DAY) { + else if (remainingDuration >= EffectPanelSD.DURATION_CONVERSION.IN_ONE_DAY) { return game.i18n.localize("SHADOWDARK.apps.effect_panel.duration_label.one_day"); } - else if (remainingDuration >= EffectPanelSD.DURATION_CONVERTION.IN_TWO_HOURS) { + else if (remainingDuration >= EffectPanelSD.DURATION_CONVERSION.IN_TWO_HOURS) { return game.i18n.format( "SHADOWDARK.apps.effect_panel.duration_label.x_hours", { hours: - Math.floor(remainingDuration / EffectPanelSD.DURATION_CONVERTION.IN_ONE_HOUR), + Math.floor(remainingDuration / EffectPanelSD.DURATION_CONVERSION.IN_ONE_HOUR), } ); } - else if (remainingDuration >= EffectPanelSD.DURATION_CONVERTION.IN_ONE_HOUR) { + else if (remainingDuration >= EffectPanelSD.DURATION_CONVERSION.IN_ONE_HOUR) { return game.i18n.localize("SHADOWDARK.apps.effect_panel.duration_label.one_hour"); } - else if (remainingDuration >= EffectPanelSD.DURATION_CONVERTION.IN_TWO_MINUTES) { + else if (remainingDuration >= EffectPanelSD.DURATION_CONVERSION.IN_TWO_MINUTES) { return game.i18n.format( "SHADOWDARK.apps.effect_panel.duration_label.x_minutes", { minutes: - Math.floor(remainingDuration / EffectPanelSD.DURATION_CONVERTION.IN_ONE_MINUTE), + Math.floor(remainingDuration / EffectPanelSD.DURATION_CONVERSION.IN_ONE_MINUTE), } ); } - else if (remainingDuration >= EffectPanelSD.DURATION_CONVERTION.IN_ONE_MINUTE) { + else if (remainingDuration >= EffectPanelSD.DURATION_CONVERSION.IN_ONE_MINUTE) { return game.i18n.localize("SHADOWDARK.apps.effect_panel.duration_label.one_minute"); } else if (remainingDuration >= 2) { diff --git a/system/src/templates.mjs b/system/src/templates.mjs index b092bd9c..d1f77119 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -19,7 +19,17 @@ export default function() { "systems/shadowdark/templates/actors/player/abilities/luck.hbs", "systems/shadowdark/templates/actors/player/abilities/stats.hbs", "systems/shadowdark/templates/actors/player/details.hbs", + "systems/shadowdark/templates/actors/player/details/alignment.hbs", + "systems/shadowdark/templates/actors/player/details/ancestry.hbs", + "systems/shadowdark/templates/actors/player/details/background.hbs", "systems/shadowdark/templates/actors/player/details/boons.hbs", + "systems/shadowdark/templates/actors/player/details/class.hbs", + "systems/shadowdark/templates/actors/player/details/deity.hbs", + "systems/shadowdark/templates/actors/player/details/languages.hbs", + "systems/shadowdark/templates/actors/player/details/level.hbs", + "systems/shadowdark/templates/actors/player/details/patron.hbs", + "systems/shadowdark/templates/actors/player/details/title.hbs", + "systems/shadowdark/templates/actors/player/details/xp.hbs", "systems/shadowdark/templates/actors/player/inventory.hbs", "systems/shadowdark/templates/actors/player/inventory/coins.hbs", "systems/shadowdark/templates/actors/player/inventory/gems.hbs", @@ -65,6 +75,7 @@ export default function() { "systems/shadowdark/templates/items/class/_partials/details.hbs", "systems/shadowdark/templates/items/class/_partials/equipment.hbs", "systems/shadowdark/templates/items/class/_partials/languages.hbs", + "systems/shadowdark/templates/items/class/_partials/patron.hbs", "systems/shadowdark/templates/items/class/_partials/talents.hbs", "systems/shadowdark/templates/items/class/details-tab.hbs", "systems/shadowdark/templates/items/class/spells-known-tab.hbs", diff --git a/system/templates/actors/player/details.hbs b/system/templates/actors/player/details.hbs index fe5d4ce4..46eead71 100644 --- a/system/templates/actors/player/details.hbs +++ b/system/templates/actors/player/details.hbs @@ -1,201 +1,31 @@
      -
      - -
      - - -
      -
      - - - -
      -
      - {{#unless levelUp}} - {{system.level.value}} - {{/unless}} - {{#if levelUp}} - - {{/if}} -
      -
      - - -
      -
      - - - -
      -
      - {{classTitle}} -
      -
      - - -
      -
      - - - {{#if owner}} - - - {{/if}} - -
      -
      - {{#if isSpellcaster}} - - {{/if}} - {{uuidToName system.class}} -
      -
      - - -
      -
      - - - -
      -
      -
      - {{numberInput - system.level.xp - name="system.level.xp" - class="ability-score" - placeholder="0" - }} -
      /
      -
      {{xpNextLevel}}
      -
      -
      -
      - - -
      -
      - - - {{#if owner}} - - - {{/if}} - -
      - -
      - - -
      -
      - - - {{#if owner}} - - - {{/if}} - -
      - -
      - -
      - -
      - - -
      -
      - - - -
      -
      - -
      -
      - - -
      -
      - - - {{#if owner}} - - - {{/if}} - -
      - -
      +
      +
      + {{!-- First Row --}} + {{> actors/player/details/level }} + {{> actors/player/details/title }} + {{> actors/player/details/class }} + + {{!-- Second Row --}} + {{> actors/player/details/xp }} + {{> actors/player/details/ancestry }} + {{> actors/player/details/background }} +
      + + {{#if classHasPatron}} +
      + {{> actors/player/details/alignment }} + {{> actors/player/details/deity }} + {{> actors/player/details/patron }} +
      + {{else}} +
      + {{> actors/player/details/alignment }} + {{> actors/player/details/deity }} +
      + {{/if}} + + {{> actors/player/details/languages }} + {{> actors/player/details/boons }}
      - -
      -
      - - - {{#if owner}} - - - {{/if}} - -
      -
      -
        - {{#each knownLanguages}} -
      • - {{this.name}} -
      • - {{/each}} -
      -
      -
      - - -
      -
      {{localize "SHADOWDARK.sheet.player.boons.label"}}
      - {{> actors/player/details/boons}} -
      - - - -
      -
      -
      diff --git a/system/templates/actors/player/details/alignment.hbs b/system/templates/actors/player/details/alignment.hbs new file mode 100644 index 00000000..55505cfb --- /dev/null +++ b/system/templates/actors/player/details/alignment.hbs @@ -0,0 +1,17 @@ + +
      +
      + + +
      +
      + +
      +
      diff --git a/system/templates/actors/player/details/ancestry.hbs b/system/templates/actors/player/details/ancestry.hbs new file mode 100644 index 00000000..135a5eea --- /dev/null +++ b/system/templates/actors/player/details/ancestry.hbs @@ -0,0 +1,26 @@ + +
      +
      + + + {{#if owner}} + + + {{/if}} + +
      + +
      diff --git a/system/templates/actors/player/details/background.hbs b/system/templates/actors/player/details/background.hbs new file mode 100644 index 00000000..d2980d80 --- /dev/null +++ b/system/templates/actors/player/details/background.hbs @@ -0,0 +1,26 @@ + +
      +
      + + + {{#if owner}} + + + {{/if}} + +
      + +
      diff --git a/system/templates/actors/player/details/boons.hbs b/system/templates/actors/player/details/boons.hbs index 3ac7d3b0..b00707d2 100644 --- a/system/templates/actors/player/details/boons.hbs +++ b/system/templates/actors/player/details/boons.hbs @@ -1,34 +1,58 @@ -
        -
      1. -
        - - {{localize "SHADOWDARK.sheet.player.boon.label"}}
        -
        {{localize "SHADOWDARK.boon.type.label"}}
        -
        {{localize "SHADOWDARK.talent.level_gained"}}
        -
      2. + +
        +
        + {{localize "SHADOWDARK.sheet.player.boons.label"}} +
        +
          +
        1. +
          + + {{localize "SHADOWDARK.sheet.player.boon.label"}} +
          +
          + {{localize "SHADOWDARK.boon.type.label"}} +
          +
          + {{localize "SHADOWDARK.talent.level_gained"}} +
          +
        2. - {{#each boons as |boonType|}} - {{#each boonType.items as |boon|}} -
        3. -
          - -
          - - {{boon.name}} - -
          - {{boonType.label}} -
          -
          - {{#ifCond boon.system.level ">" 0}} - {{boon.system.level}} - {{/ifCond}} -
          -
        4. + {{#each boons as |boonType|}} + {{#each boonType.items as |boon|}} +
        5. +
          + +
          + + + {{boon.name}} + + +
          + {{boonType.label}} +
          + +
          + {{#ifCond boon.system.level ">" 0}} + {{boon.system.level}} + {{/ifCond}} +
          +
        6. + {{/each}} {{/each}} - {{/each}} -
        +
      +
    diff --git a/system/templates/actors/player/details/class.hbs b/system/templates/actors/player/details/class.hbs new file mode 100644 index 00000000..6a8f1e16 --- /dev/null +++ b/system/templates/actors/player/details/class.hbs @@ -0,0 +1,34 @@ + +
    +
    + + + {{#if owner}} + + + {{/if}} + +
    +
    + {{#if isSpellCaster}} + + {{/if}} + + {{uuidToName system.class}} + +
    +
    diff --git a/system/templates/actors/player/details/deity.hbs b/system/templates/actors/player/details/deity.hbs new file mode 100644 index 00000000..fdfb2ea6 --- /dev/null +++ b/system/templates/actors/player/details/deity.hbs @@ -0,0 +1,26 @@ + +
    +
    + + + {{#if owner}} + + + {{/if}} + +
    + +
    diff --git a/system/templates/actors/player/details/languages.hbs b/system/templates/actors/player/details/languages.hbs new file mode 100644 index 00000000..d1e5dab3 --- /dev/null +++ b/system/templates/actors/player/details/languages.hbs @@ -0,0 +1,33 @@ + +
    +
    + + + {{#if owner}} + + + {{/if}} + +
    +
    +
      + {{#each knownLanguages}} +
    • + {{this.name}} +
    • + {{/each}} +
    +
    +
    diff --git a/system/templates/actors/player/details/level.hbs b/system/templates/actors/player/details/level.hbs new file mode 100644 index 00000000..306bcfee --- /dev/null +++ b/system/templates/actors/player/details/level.hbs @@ -0,0 +1,15 @@ + +
    +
    + + +
    +
    + {{#unless levelUp}} + {{system.level.value}} + {{/unless}} + {{#if levelUp}} + + {{/if}} +
    +
    diff --git a/system/templates/actors/player/details/patron.hbs b/system/templates/actors/player/details/patron.hbs new file mode 100644 index 00000000..e69dde2f --- /dev/null +++ b/system/templates/actors/player/details/patron.hbs @@ -0,0 +1,26 @@ + +
    +
    + + + {{#if owner}} + + + {{/if}} + +
    + +
    diff --git a/system/templates/actors/player/details/title.hbs b/system/templates/actors/player/details/title.hbs new file mode 100644 index 00000000..56aaf6f2 --- /dev/null +++ b/system/templates/actors/player/details/title.hbs @@ -0,0 +1,12 @@ + +
    +
    + + +
    +
    + {{classTitle}} +
    +
    diff --git a/system/templates/actors/player/details/xp.hbs b/system/templates/actors/player/details/xp.hbs new file mode 100644 index 00000000..2354b7a9 --- /dev/null +++ b/system/templates/actors/player/details/xp.hbs @@ -0,0 +1,25 @@ + +
    +
    + + +
    +
    +
    + {{numberInput + system.level.xp + class="ability-score" + name="system.level.xp" + placeholder="0" + }} +
    + / +
    +
    + {{xpNextLevel}} +
    +
    +
    +
    diff --git a/system/templates/actors/player/spells.hbs b/system/templates/actors/player/spells.hbs index adbb8b8e..03c88728 100644 --- a/system/templates/actors/player/spells.hbs +++ b/system/templates/actors/player/spells.hbs @@ -1,6 +1,6 @@
    - {{#if isSpellcaster}} + {{#if isSpellCaster}}
    {{localize "SHADOWDARK.sheet.item.tab.spellsknown"}}   @@ -146,7 +146,7 @@ > - {{#if ../isSpellcaster}} + {{#if ../isSpellCaster}} {{!-- Spells --}} - {{#if isSpellCaster}} -
    - -
    - {{#each spells}} - {{#if this.max}} -
    -

    {{this.name}}

    -
    - {{#each (addEmptySlots this.objects this.max)}} -
    - {{#if this}} - - {{/if}} - {{#unless this}} -
    {{localize "SHADOWDARK.apps.level-up.dragdrop"}}
    - {{/unless}} -
    - {{/each}} + {{#ifCond totalSpellsToChoose ">" 0}} +
    +
    + + +
    +
    + {{#each spells}} + {{#if this.max}} +
    +

    {{this.name}}

    +
    + {{#each (addEmptySlots this.objects this.max)}} +
    + {{#if this}} + + {{/if}} + {{#unless this}} +
    {{localize "SHADOWDARK.apps.level-up.dragdrop"}}
    + {{/unless}} +
    + {{/each}} +
    -
    - {{/if}} - {{/each}} + {{/if}} + {{/each}} +
    -
    - {{/if}} + {{/ifCond}}
    diff --git a/system/templates/items/class/_partials/details.hbs b/system/templates/items/class/_partials/details.hbs index 9f9b6eb7..c15f7cd8 100644 --- a/system/templates/items/class/_partials/details.hbs +++ b/system/templates/items/class/_partials/details.hbs @@ -69,5 +69,3 @@ placeholder="10" }}
    - -
    diff --git a/system/templates/items/class/_partials/equipment.hbs b/system/templates/items/class/_partials/equipment.hbs index 97b064bc..b5de0139 100644 --- a/system/templates/items/class/_partials/equipment.hbs +++ b/system/templates/items/class/_partials/equipment.hbs @@ -49,5 +49,3 @@

    {{localize "SHADOWDARK.class.armor.all.label"}}

    {{/ui/sd-box}} - -
    diff --git a/system/templates/items/class/_partials/languages.hbs b/system/templates/items/class/_partials/languages.hbs index 3d37bbe7..e13b888a 100644 --- a/system/templates/items/class/_partials/languages.hbs +++ b/system/templates/items/class/_partials/languages.hbs @@ -50,5 +50,3 @@ placeholder="0" }} {{/ui/sd-box}} - -
    diff --git a/system/templates/items/class/_partials/patron.hbs b/system/templates/items/class/_partials/patron.hbs new file mode 100644 index 00000000..4e086ff3 --- /dev/null +++ b/system/templates/items/class/_partials/patron.hbs @@ -0,0 +1,32 @@ +
    + {{localize 'SHADOWDARK.form.section_header.patron.label'}} +
    + +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.class-ability.boons") + header-class="light" + content-class="item-grid" +}} +

    {{localize 'SHADOWDARK.class.starting_boons.count.label'}}

    + {{numberInput + item.system.patron.startingBoons + name="system.patron.startingBoons" + value="1" + }} +{{/ui/sd-box}} + + +{{#> ui/sd-box + header-label=(localize "SHADOWDARK.class-ability.options") + header-class="light" + content-class="item-grid" +}} +

    {{localize "SHADOWDARK.class.has_patron.count.label"}}

    + + +{{/ui/sd-box}} + diff --git a/system/templates/items/class/_partials/talents.hbs b/system/templates/items/class/_partials/talents.hbs index 7677f433..da8b8295 100644 --- a/system/templates/items/class/_partials/talents.hbs +++ b/system/templates/items/class/_partials/talents.hbs @@ -40,5 +40,3 @@ }} --> {{/ui/sd-box}} - -
    diff --git a/system/templates/items/class/details-tab.hbs b/system/templates/items/class/details-tab.hbs index 3347a5eb..83bf3355 100644 --- a/system/templates/items/class/details-tab.hbs +++ b/system/templates/items/class/details-tab.hbs @@ -3,6 +3,7 @@ {{> items/class/_partials/details }} {{> items/class/_partials/equipment }} {{> items/class/_partials/languages }} + {{> items/class/_partials/patron }} {{> items/class/_partials/talents }}
    diff --git a/system/templates/items/patron/details-tab.hbs b/system/templates/items/patron/details-tab.hbs index ab35be5f..1a1825f3 100644 --- a/system/templates/items/patron/details-tab.hbs +++ b/system/templates/items/patron/details-tab.hbs @@ -1,4 +1,15 @@
    +
    +

    {{localize "SHADOWDARK.patron.boons_table.label"}}

    + +
    From fa85a319c2d4430f871dcfcf4c1584a91d412b8d Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Wed, 30 Oct 2024 17:21:43 +0000 Subject: [PATCH 081/182] typo --- system/src/apps/EffectPanelSD.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/src/apps/EffectPanelSD.mjs b/system/src/apps/EffectPanelSD.mjs index d723542c..fd7531b4 100644 --- a/system/src/apps/EffectPanelSD.mjs +++ b/system/src/apps/EffectPanelSD.mjs @@ -1,5 +1,5 @@ export default class EffectPanelSD extends Application { - static DURATION_CONVERTION = { + static DURATION_CONVERSION = { IN_ONE_ROUND: 10, IN_ONE_MINUTE: 60, IN_TWO_MINUTES: 120, From 8ea2cc5780c1d5671f02618a8c9cf8fec45d9795 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Wed, 30 Oct 2024 17:22:09 +0000 Subject: [PATCH 082/182] new Patron selector --- .../PatronSelector.mjs | 31 +++++++++++++++++++ .../apps/CompendiumItemSelectors/_module.mjs | 1 + 2 files changed, 32 insertions(+) create mode 100644 system/src/apps/CompendiumItemSelectors/PatronSelector.mjs diff --git a/system/src/apps/CompendiumItemSelectors/PatronSelector.mjs b/system/src/apps/CompendiumItemSelectors/PatronSelector.mjs new file mode 100644 index 00000000..95b1fac3 --- /dev/null +++ b/system/src/apps/CompendiumItemSelectors/PatronSelector.mjs @@ -0,0 +1,31 @@ +import CompendiumItemSelector from "../CompendiumItemSelector"; + +export default class PatronSelector extends CompendiumItemSelector { + + closeOnSelection = true; + + maxChoices = 1; + + get title() { + return game.i18n.localize("SHADOWDARK.dialog.select_patron.title"); + } + + async getAvailableItems() { + return await shadowdark.compendiums.patrons(); + } + + + async getUuids() { + const uuid = this.object?.system?.patron; + + return uuid !== "" ? [uuid] : []; + } + + async saveUuids(uuids) { + const uuid = uuids[0] ?? ""; + + return this.object.update({ + "system.patron": uuid, + }); + } +} diff --git a/system/src/apps/CompendiumItemSelectors/_module.mjs b/system/src/apps/CompendiumItemSelectors/_module.mjs index 5884ddc2..ee15ada8 100644 --- a/system/src/apps/CompendiumItemSelectors/_module.mjs +++ b/system/src/apps/CompendiumItemSelectors/_module.mjs @@ -4,4 +4,5 @@ export {default as BackgroundSelector} from "./BackgroundSelector.mjs"; export {default as ClassSelector} from "./ClassSelector.mjs"; export {default as DeitySelector} from "./DeitySelector.mjs"; export {default as LanguageSelector} from "./LanguageSelector.mjs"; +export {default as PatronSelector} from "./PatronSelector.mjs"; export {default as WeaponPropertySelector} from "./WeaponPropertySelector.mjs"; From fab845ad264fa109704fc5ce811857e84e168a19 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Wed, 30 Oct 2024 17:23:19 +0000 Subject: [PATCH 083/182] patron work and open spellbook from Actor class supporting 1+ casting classes --- i18n/en.yaml | 7 +++ system/src/documents/ActorSD.mjs | 50 +++++++++++++++++++- system/src/documents/CompendiumsSD.mjs | 4 ++ system/src/documents/ItemSD.mjs | 2 +- system/src/sheets/ActorSheetSD.mjs | 3 ++ system/src/sheets/PlayerSheetSD.mjs | 63 +++++++------------------- 6 files changed, 81 insertions(+), 48 deletions(-) diff --git a/i18n/en.yaml b/i18n/en.yaml index d4ddf3fc..8c3748e2 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -188,6 +188,7 @@ SHADOWDARK.chatcard.default: Roll SHADOWDARK.class-ability.ability.check: Ability Check SHADOWDARK.class-ability.ability.label: Ability SHADOWDARK.class-ability.available.label: Available +SHADOWDARK.class-ability.boons: Boons SHADOWDARK.class-ability.dc.label: DC SHADOWDARK.class-ability.group.label: Ability Group SHADOWDARK.class-ability.limited-uses.label: Limited Uses? @@ -202,6 +203,7 @@ SHADOWDARK.class.choice_count: Choice Count SHADOWDARK.class.choice: Choice SHADOWDARK.class.fighter: Fighter SHADOWDARK.class.fixed: Fixed +SHADOWDARK.class.has_patron.count.label: Has Patron? SHADOWDARK.class.hit_points.label: HP Die Roll SHADOWDARK.class.language_choices.count.label: Choice Count SHADOWDARK.class.language_choices.label: Language Choices @@ -213,6 +215,7 @@ SHADOWDARK.class.spellcasting_ability.label: Spellcasting Ability SHADOWDARK.class.spellcasting_class.label: Spell Class SHADOWDARK.class.spellcasting.base_difficulty.label: Spellcasting Base DC SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier +SHADOWDARK.class.starting_boons.count.label: Starting Boons SHADOWDARK.class.talent_choices.count.label: Choice Count SHADOWDARK.class.talent_choices.label: Talent Choices SHADOWDARK.class.talent_choices.prompt: Select Talent... @@ -301,6 +304,7 @@ SHADOWDARK.dialog.select_deity.prompt: Select Deity... SHADOWDARK.dialog.select_deity.title: Choose Deity SHADOWDARK.dialog.select_languages.prompt: Select Language... SHADOWDARK.dialog.select_languages.title: Choose Languages +SHADOWDARK.dialog.select_patron.title: Select Patron SHADOWDARK.dialog.select_weapon_property.prompt: Select Weapon Property... SHADOWDARK.dialog.select_weapon_property.title: Choose Weapon Properties SHADOWDARK.dialog.spell_roll.title: Cast Spell with @@ -340,6 +344,7 @@ SHADOWDARK.error.spells.no_spellcasting_ability_set: No character spellcasting a SHADOWDARK.form.section_header.equipment.label: Equipment SHADOWDARK.form.section_header.languages.label: Languages SHADOWDARK.form.section_header.names.label: Names +SHADOWDARK.form.section_header.patron.label: Patron SHADOWDARK.form.section_header.spellcasting.label: Spellcasting SHADOWDARK.form.section_header.talents.label: Talents SHADOWDARK.hotbar.abilityLost: Ability currently lost @@ -578,6 +583,7 @@ SHADOWDARK.npc_move.near: Near SHADOWDARK.npc_move.none: None SHADOWDARK.npc_move.special: Special SHADOWDARK.npc_move.triple_near: Triple Near +SHADOWDARK.patron.boons_table.label: Patron Boons Table SHADOWDARK.property.type.option.armor: Armor SHADOWDARK.property.type.option.weapon: Weapon SHADOWDARK.property.type.title: Property Type @@ -710,6 +716,7 @@ SHADOWDARK.sheet.player.luck: Luck SHADOWDARK.sheet.player.melee_attacks: Melee Attacks SHADOWDARK.sheet.player.name.label: Name SHADOWDARK.sheet.player.open_spellbook.tooltip: Open Spellbook +SHADOWDARK.sheet.player.patron.tooltip: Your patron is the source of your supernatural gifts SHADOWDARK.sheet.player.ranged_attacks: Ranged Attacks SHADOWDARK.sheet.player.spells_from_items: Spells From Items SHADOWDARK.sheet.player.spells_tier: Tier diff --git a/system/src/documents/ActorSD.mjs b/system/src/documents/ActorSD.mjs index 5b571577..64966021 100644 --- a/system/src/documents/ActorSD.mjs +++ b/system/src/documents/ActorSD.mjs @@ -835,6 +835,12 @@ export default class ActorSD extends Actor { } + async getPatron() { + const uuid = this.system.patron ?? ""; + return await this._getItemFromUuid(uuid); + } + + async getDeity() { const uuid = this.system.deity ?? ""; return await this._getItemFromUuid(uuid); @@ -935,7 +941,7 @@ export default class ActorSD extends Actor { } - async isSpellcaster() { + async isSpellCaster() { const characterClass = await this.getClass(); const spellcastingClass = @@ -1028,6 +1034,48 @@ export default class ActorSD extends Actor { } + async openSpellBook() { + const playerSpellcasterClasses = await this.getSpellcasterClasses(); + + const openChosenSpellbook = classUuid => { + new shadowdark.apps.SpellBookSD( + classUuid, + this.id + ).render(true); + }; + + if (playerSpellcasterClasses.length <= 0) { + return ui.notifications.error( + game.i18n.localize("SHADOWDARK.item.errors.no_spellcasting_classes"), + { permanent: false } + ); + } + else if (playerSpellcasterClasses.length === 1) { + return openChosenSpellbook(playerSpellcasterClasses[0].uuid); + } + else { + return renderTemplate( + "systems/shadowdark/templates/dialog/choose-spellbook.hbs", + {classes: playerSpellcasterClasses} + ).then(html => { + const dialog = new Dialog({ + title: game.i18n.localize("SHADOWDARK.dialog.spellbook.open_which_class.title"), + content: html, + buttons: {}, + render: html => { + html.find("[data-action='open-class-spellbook']").click( + event => { + event.preventDefault(); + openChosenSpellbook(event.currentTarget.dataset.uuid); + dialog.close(); + } + ); + }, + }).render(true); + }); + } + } + /** @inheritDoc */ prepareData() { super.prepareData(); diff --git a/system/src/documents/CompendiumsSD.mjs b/system/src/documents/CompendiumsSD.mjs index a83066b0..ad7797da 100644 --- a/system/src/documents/CompendiumsSD.mjs +++ b/system/src/documents/CompendiumsSD.mjs @@ -203,6 +203,10 @@ export default class CompendiumsSD { return CompendiumsSD._documents("Item", "NPC Features", filterSources); } + static async patrons(filterSources=true) { + return CompendiumsSD._documents("Item", "Patron", filterSources); + } + static async patronBoonTables(filterSources=true) { const documents = await CompendiumsSD._documents( "RollTable", null, filterSources diff --git a/system/src/documents/ItemSD.mjs b/system/src/documents/ItemSD.mjs index 4ab19681..bd406dd0 100644 --- a/system/src/documents/ItemSD.mjs +++ b/system/src/documents/ItemSD.mjs @@ -72,7 +72,7 @@ export default class ItemSD extends Item { }; if (this.actor.type === "Player") { - data.isSpellcaster = await this.actor.isSpellcaster(); + data.isSpellCaster = await this.actor.isSpellCaster(); data.canUseMagicItems = await this.actor.canUseMagicItems(); } diff --git a/system/src/sheets/ActorSheetSD.mjs b/system/src/sheets/ActorSheetSD.mjs index f5782576..9f170b6e 100644 --- a/system/src/sheets/ActorSheetSD.mjs +++ b/system/src/sheets/ActorSheetSD.mjs @@ -199,6 +199,9 @@ export default class ActorSheetSD extends ActorSheet { case "language": new select.LanguageSelector(this.actor).render(true); break; + case "patron": + new select.PatronSelector(this.actor).render(true); + break; } } diff --git a/system/src/sheets/PlayerSheetSD.mjs b/system/src/sheets/PlayerSheetSD.mjs index feed6595..da91a07b 100644 --- a/system/src/sheets/PlayerSheetSD.mjs +++ b/system/src/sheets/PlayerSheetSD.mjs @@ -129,28 +129,34 @@ export default class PlayerSheetSD extends ActorSheetSD { const data = { ancestry: { name: "ancestry", - label: game.i18n.localize("SHADOWDARK.sheet.player.ancestry.label"), + label: game.i18n.localize("TYPES.Item.Ancestry"), tooltip: game.i18n.localize("SHADOWDARK.sheet.player.ancestry.tooltip"), item: await fromUuid(system.ancestry) ?? null, }, background: { name: "background", - label: game.i18n.localize("SHADOWDARK.sheet.player.background.label"), + label: game.i18n.localize("TYPES.Item.Background"), tooltip: game.i18n.localize("SHADOWDARK.sheet.player.background.tooltip"), item: await fromUuid(system.background) ?? null, }, class: { name: "class", - label: game.i18n.localize("SHADOWDARK.sheet.player.class.label"), + label: game.i18n.localize("TYPES.Item.Class"), tooltip: game.i18n.localize("SHADOWDARK.sheet.player.class.tooltip"), item: await fromUuid(system.class) ?? null, }, deity: { name: "deity", - label: game.i18n.localize("SHADOWDARK.sheet.player.deity.label"), + label: game.i18n.localize("TYPES.Item.Deity"), tooltip: game.i18n.localize("SHADOWDARK.sheet.player.deity.tooltip"), item: await fromUuid(system.deity) ?? null, }, + patron: { + name: "patron", + label: game.i18n.localize("TYPES.Item.Patron"), + tooltip: game.i18n.localize("SHADOWDARK.sheet.player.patron.tooltip"), + item: await fromUuid(system.patron) ?? null, + }, }; return data; @@ -176,9 +182,9 @@ export default class PlayerSheetSD extends ActorSheetSD { context.system.attributes.ac.value = await this.actor.getArmorClass(); - context.isSpellcaster = await this.actor.isSpellcaster(); + context.isSpellCaster = await this.actor.isSpellCaster(); context.canUseMagicItems = await this.actor.canUseMagicItems(); - context.showSpellsTab = context.isSpellcaster || context.canUseMagicItems; + context.showSpellsTab = context.isSpellCaster || context.canUseMagicItems; context.maxHp = this.actor.system.attributes.hp.base + this.actor.system.attributes.hp.bonus; @@ -205,8 +211,11 @@ export default class PlayerSheetSD extends ActorSheetSD { ); context.characterClass = await this.actor.getClass(); + context.classHasPatron = context.characterClass.system.patron.required; context.classTitle = await this.actor.getTitle(); + context.characterPatron = await this.actor.getPatron(); + context.usePulpMode = game.settings.get("shadowdark", "usePulpMode"); context.editingHp = this.editingHp; @@ -586,46 +595,8 @@ export default class PlayerSheetSD extends ActorSheetSD { } async _onOpenSpellBook(event) { - const playerSpellcasterClasses = await this.actor.getSpellcasterClasses(); - - const openChosenSpellbook = classUuid => { - new shadowdark.apps.SpellBookSD( - classUuid, - this.actor.id - ).render(true); - }; - - if (playerSpellcasterClasses.length <= 0) { - return ui.notifications.error( - game.i18n.localize("SHADOWDARK.item.errors.no_spellcasting_classes"), - { permanent: false } - ); - } - else if (playerSpellcasterClasses.length === 1) { - return openChosenSpellbook(playerSpellcasterClasses[0].uuid); - } - else { - return renderTemplate( - "systems/shadowdark/templates/dialog/choose-spellbook.hbs", - {classes: playerSpellcasterClasses} - ).then(html => { - const dialog = new Dialog({ - title: game.i18n.localize("SHADOWDARK.dialog.spellbook.open_which_class.title"), - content: html, - buttons: {}, - render: html => { - html.find("[data-action='open-class-spellbook']").click( - event => { - event.preventDefault(); - openChosenSpellbook(event.currentTarget.dataset.uuid); - dialog.close(); - } - ); - }, - }).render(true); - }); - } - + event.preventDefault(); + this.actor.openSpellBook(); } async _onlevelUp(event) { From b525668a14600308f8cdb65ec2dd3897db8c159a Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Wed, 30 Oct 2024 17:26:17 +0000 Subject: [PATCH 084/182] release notes --- RELEASE_NOTES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 49297c7c..a3aa86f1 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -20,6 +20,7 @@ - Settings for compendium art mapping are now found in *Settings > Core > Compendium Art* * [#917] Restructure Item sheet templates to make them a bit more manageable +* [#929] Merged Russian language updates from Crowdin *Many thanks to **AdamsGH** for contributing **Russian** translation data.* From ef452872968b5d88c09f717ce779f909dee274bd Mon Sep 17 00:00:00 2001 From: PrototypeESBU <> Date: Fri, 1 Nov 2024 14:27:06 +1000 Subject: [PATCH 085/182] added localization --- i18n/en.yaml | 2 ++ system/src/utils/ChecksSD.mjs | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/i18n/en.yaml b/i18n/en.yaml index d3ecd870..8f73f4c7 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -185,6 +185,7 @@ SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are SHADOWDARK.chat.welcome_message.title: Shadowdark RPG for Foundry SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial SHADOWDARK.chatcard.default: Roll +SHADOWDARK.check.requesting: Requesting a check SHADOWDARK.class-ability.ability.check: Ability Check SHADOWDARK.class-ability.ability.label: Ability SHADOWDARK.class-ability.available.label: Available @@ -333,6 +334,7 @@ SHADOWDARK.effect.unavailable: Disabled Effects SHADOWDARK.error.class_ability.no-uses-remaining: No uses remaining SHADOWDARK.error.general.gm_required: You must have the Game Master role to do that. SHADOWDARK.error.general.no_character_class: No character class has been selected +SHADOWDARK.error.general.no_character_selected: No character selected SHADOWDARK.error.source.source_missing: Source missing or unknown... SHADOWDARK.error.spells.no_spellcasting_ability_set: No character spellcasting ability has been configured SHADOWDARK.form.section_header.equipment.label: Equipment diff --git a/system/src/utils/ChecksSD.mjs b/system/src/utils/ChecksSD.mjs index 840e17c0..1df2deb3 100644 --- a/system/src/utils/ChecksSD.mjs +++ b/system/src/utils/ChecksSD.mjs @@ -19,7 +19,7 @@ export default class ChecksSD { link.dataset.command = command; link.dataset.dc = dc; link.dataset.stat = stat; - const linkText = `DC ${dc} ${stat.toUpperCase()}`; + const linkText = `${game.i18n.localize("SHADOWDARK.class-ability.dc.label")} ${dc} ${game.i18n.localize(`SHADOWDARK.ability_${stat}`)}`.toUpperCase(); switch (command) { case "check": link.innerHTML = `${linkText}`; @@ -56,7 +56,9 @@ export default class ChecksSD { static async rollCheck(dc, stat, options={}) { let actor = game.user.character; if (!actor) { - ui.notification.error("You do not have a character selected!"); + ui.notification.error( + game.i18n.localize("SHADOWDARK.error.general.no_character_selected") + ); } if (dc) { options.target = dc; @@ -69,7 +71,7 @@ export default class ChecksSD { const HTML = `
    [[check ${dc} ${stat}]]
    `; const chatData = { user: game.user._id, - flavor: "Requesting a check", + flavor: game.i18n.localize("SHADOWDARK.check.requesting"), content: HTML, }; ChatMessage.create(chatData, {}); From 801d6f179f841125850ad82b356f9ae1fd0cc51e Mon Sep 17 00:00:00 2001 From: PrototypeESBU <> Date: Thu, 31 Oct 2024 22:19:57 -0700 Subject: [PATCH 086/182] added flexibility when matching stat --- system/src/utils/ChecksSD.mjs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/system/src/utils/ChecksSD.mjs b/system/src/utils/ChecksSD.mjs index 1df2deb3..ee36dedc 100644 --- a/system/src/utils/ChecksSD.mjs +++ b/system/src/utils/ChecksSD.mjs @@ -11,7 +11,12 @@ export default class ChecksSD { // Check for invalid data if (!parseInt(dc)) return; - if (!CONFIG.SHADOWDARK.ABILITY_KEYS.includes(stat.toLowerCase())) return; + if (CONFIG.SHADOWDARK.ABILITY_KEYS.includes(stat.toLowerCase())) { + stat = stat.toLowerCase(); + } + else { + return; + } // create replacement html const link = document.createElement("a"); From 3c33abcd69e7f0483d34903c125b4479fd843e59 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 11:25:54 +0000 Subject: [PATCH 087/182] reclassify boon talents --- .../_1_to_ac__aFltU1eRz4bmIlbj.json | 2 +- .../_1_xp_for_secrets__9K2XPwkAA7BYZQrW.json | 2 +- .../add_wisdom_to_roll__FIHNdRhD6DHFxSkC.json | 2 +- ...ge_on_melee_attacks__6iJ6ETUAKC7DR0aT.json | 2 +- ..._spellcasting_class__XlKUkXYPhdOGlU9v.json | 33 +++++++++++++++++++ .../force_gm_reroll__vWtHRiL8lNiisrXy.json | 2 +- .../force_morale_check__H6gRb0879zMVYdiO.json | 2 +- .../hypnotize__rtCyEISzbgf6ZuJb.json | 2 +- .../immunity_to_acid__71NHQE8WsxOe9ShC.json | 2 +- .../immunity_to_cold__cOIRoHL3D9zGpOyX.json | 2 +- .../immunity_to_poison__Ovw15rq5cAfDMe1t.json | 2 +- ...earn_a_wizard_spell__mgRrWET5MEaGLVNo.json | 6 +++- .../learn_melee_weapon__BOOWJDqwiHN5BdxF.json | 2 +- ..._to_wield_a_longbow__j4a9tc7JoXyVObkZ.json | 2 +- .../max_2_hp_rolls__8x1pq8tUSbf4UH8G.json | 2 +- .../patron_boon__TcpWrnecaN2k2gYr.json | 10 ++++++ ...ad_mind_of_creature__IbWH7TwcOPMJt842.json | 2 +- .../slime_form__A9nJ9MYVegFPDwva.json | 2 +- .../teleport__EUE1pFpmreF9ZMKx.json | 2 +- 19 files changed, 64 insertions(+), 17 deletions(-) create mode 100644 data/packs/talents.db/bonus_spellcasting_class__XlKUkXYPhdOGlU9v.json create mode 100644 data/packs/talents.db/patron_boon__TcpWrnecaN2k2gYr.json diff --git a/data/packs/talents.db/_1_to_ac__aFltU1eRz4bmIlbj.json b/data/packs/talents.db/_1_to_ac__aFltU1eRz4bmIlbj.json index 990773e0..00a69b85 100644 --- a/data/packs/talents.db/_1_to_ac__aFltU1eRz4bmIlbj.json +++ b/data/packs/talents.db/_1_to_ac__aFltU1eRz4bmIlbj.json @@ -14,7 +14,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/_1_xp_for_secrets__9K2XPwkAA7BYZQrW.json b/data/packs/talents.db/_1_xp_for_secrets__9K2XPwkAA7BYZQrW.json index 9090c8ad..4b1a58a4 100644 --- a/data/packs/talents.db/_1_xp_for_secrets__9K2XPwkAA7BYZQrW.json +++ b/data/packs/talents.db/_1_xp_for_secrets__9K2XPwkAA7BYZQrW.json @@ -14,7 +14,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/add_wisdom_to_roll__FIHNdRhD6DHFxSkC.json b/data/packs/talents.db/add_wisdom_to_roll__FIHNdRhD6DHFxSkC.json index dad1b972..7bea09ee 100644 --- a/data/packs/talents.db/add_wisdom_to_roll__FIHNdRhD6DHFxSkC.json +++ b/data/packs/talents.db/add_wisdom_to_roll__FIHNdRhD6DHFxSkC.json @@ -14,7 +14,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/advantage_on_melee_attacks__6iJ6ETUAKC7DR0aT.json b/data/packs/talents.db/advantage_on_melee_attacks__6iJ6ETUAKC7DR0aT.json index 2a695173..3f7f1ed1 100644 --- a/data/packs/talents.db/advantage_on_melee_attacks__6iJ6ETUAKC7DR0aT.json +++ b/data/packs/talents.db/advantage_on_melee_attacks__6iJ6ETUAKC7DR0aT.json @@ -13,7 +13,7 @@ "source": { "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/bonus_spellcasting_class__XlKUkXYPhdOGlU9v.json b/data/packs/talents.db/bonus_spellcasting_class__XlKUkXYPhdOGlU9v.json new file mode 100644 index 00000000..6376d45f --- /dev/null +++ b/data/packs/talents.db/bonus_spellcasting_class__XlKUkXYPhdOGlU9v.json @@ -0,0 +1,33 @@ +{ + "_id": "XlKUkXYPhdOGlU9v", + "_key": "!items.effects!mgRrWET5MEaGLVNo.XlKUkXYPhdOGlU9v", + "changes": [ + { + "key": "system.bonuses.spellcastingClasses", + "mode": 2, + "priority": null, + "value": "wizard" + } + ], + "description": "", + "disabled": false, + "duration": { + "combat": null, + "rounds": null, + "seconds": null, + "startRound": null, + "startTime": null, + "startTurn": null, + "turns": null + }, + "img": "icons/sundries/documents/document-sealed-brown-red.webp", + "name": "Bonus Spellcasting Class", + "origin": null, + "statuses": [ + ], + "system": { + }, + "tint": "#ffffff", + "transfer": true, + "type": "base" +} diff --git a/data/packs/talents.db/force_gm_reroll__vWtHRiL8lNiisrXy.json b/data/packs/talents.db/force_gm_reroll__vWtHRiL8lNiisrXy.json index 3d8339aa..586b7aad 100644 --- a/data/packs/talents.db/force_gm_reroll__vWtHRiL8lNiisrXy.json +++ b/data/packs/talents.db/force_gm_reroll__vWtHRiL8lNiisrXy.json @@ -14,7 +14,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/force_morale_check__H6gRb0879zMVYdiO.json b/data/packs/talents.db/force_morale_check__H6gRb0879zMVYdiO.json index 4de7edda..99e92f78 100644 --- a/data/packs/talents.db/force_morale_check__H6gRb0879zMVYdiO.json +++ b/data/packs/talents.db/force_morale_check__H6gRb0879zMVYdiO.json @@ -14,7 +14,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/hypnotize__rtCyEISzbgf6ZuJb.json b/data/packs/talents.db/hypnotize__rtCyEISzbgf6ZuJb.json index 48e7090f..b8cd93b5 100644 --- a/data/packs/talents.db/hypnotize__rtCyEISzbgf6ZuJb.json +++ b/data/packs/talents.db/hypnotize__rtCyEISzbgf6ZuJb.json @@ -14,7 +14,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/immunity_to_acid__71NHQE8WsxOe9ShC.json b/data/packs/talents.db/immunity_to_acid__71NHQE8WsxOe9ShC.json index 2cb3694f..8bc9a7e6 100644 --- a/data/packs/talents.db/immunity_to_acid__71NHQE8WsxOe9ShC.json +++ b/data/packs/talents.db/immunity_to_acid__71NHQE8WsxOe9ShC.json @@ -14,7 +14,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/immunity_to_cold__cOIRoHL3D9zGpOyX.json b/data/packs/talents.db/immunity_to_cold__cOIRoHL3D9zGpOyX.json index e7c827a3..35f8b583 100644 --- a/data/packs/talents.db/immunity_to_cold__cOIRoHL3D9zGpOyX.json +++ b/data/packs/talents.db/immunity_to_cold__cOIRoHL3D9zGpOyX.json @@ -14,7 +14,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/immunity_to_poison__Ovw15rq5cAfDMe1t.json b/data/packs/talents.db/immunity_to_poison__Ovw15rq5cAfDMe1t.json index da65c1f8..6355f354 100644 --- a/data/packs/talents.db/immunity_to_poison__Ovw15rq5cAfDMe1t.json +++ b/data/packs/talents.db/immunity_to_poison__Ovw15rq5cAfDMe1t.json @@ -14,7 +14,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/learn_a_wizard_spell__mgRrWET5MEaGLVNo.json b/data/packs/talents.db/learn_a_wizard_spell__mgRrWET5MEaGLVNo.json index de6263e1..b46238f3 100644 --- a/data/packs/talents.db/learn_a_wizard_spell__mgRrWET5MEaGLVNo.json +++ b/data/packs/talents.db/learn_a_wizard_spell__mgRrWET5MEaGLVNo.json @@ -2,11 +2,15 @@ "_id": "mgRrWET5MEaGLVNo", "_key": "!items!mgRrWET5MEaGLVNo", "effects": [ + "XlKUkXYPhdOGlU9v" ], "folder": "TcpWrnecaN2k2gYr", "img": "icons/sundries/books/book-eye-purple.webp", "name": "Learn a Wizard Spell", "system": { + "bonuses": { + "spellcastingClasses": "wizard" + }, "description": "

    Learn a wizard spell, tier = half your level. Cast it with INT

    ", "level": 0, "predefinedEffects": "", @@ -14,7 +18,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/learn_melee_weapon__BOOWJDqwiHN5BdxF.json b/data/packs/talents.db/learn_melee_weapon__BOOWJDqwiHN5BdxF.json index 53d09985..72d28d27 100644 --- a/data/packs/talents.db/learn_melee_weapon__BOOWJDqwiHN5BdxF.json +++ b/data/packs/talents.db/learn_melee_weapon__BOOWJDqwiHN5BdxF.json @@ -15,7 +15,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/learn_to_wield_a_longbow__j4a9tc7JoXyVObkZ.json b/data/packs/talents.db/learn_to_wield_a_longbow__j4a9tc7JoXyVObkZ.json index e8dd5cc1..5eb0904a 100644 --- a/data/packs/talents.db/learn_to_wield_a_longbow__j4a9tc7JoXyVObkZ.json +++ b/data/packs/talents.db/learn_to_wield_a_longbow__j4a9tc7JoXyVObkZ.json @@ -14,7 +14,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/max_2_hp_rolls__8x1pq8tUSbf4UH8G.json b/data/packs/talents.db/max_2_hp_rolls__8x1pq8tUSbf4UH8G.json index 02c551a9..6c0a6759 100644 --- a/data/packs/talents.db/max_2_hp_rolls__8x1pq8tUSbf4UH8G.json +++ b/data/packs/talents.db/max_2_hp_rolls__8x1pq8tUSbf4UH8G.json @@ -14,7 +14,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/patron_boon__TcpWrnecaN2k2gYr.json b/data/packs/talents.db/patron_boon__TcpWrnecaN2k2gYr.json new file mode 100644 index 00000000..2495a81e --- /dev/null +++ b/data/packs/talents.db/patron_boon__TcpWrnecaN2k2gYr.json @@ -0,0 +1,10 @@ +{ + "_id": "TcpWrnecaN2k2gYr", + "_key": "!folders!TcpWrnecaN2k2gYr", + "color": "#22252b", + "description": "", + "folder": null, + "name": "Patron Boon", + "sorting": "a", + "type": "Item" +} diff --git a/data/packs/talents.db/read_mind_of_creature__IbWH7TwcOPMJt842.json b/data/packs/talents.db/read_mind_of_creature__IbWH7TwcOPMJt842.json index 63c1b55e..9b723999 100644 --- a/data/packs/talents.db/read_mind_of_creature__IbWH7TwcOPMJt842.json +++ b/data/packs/talents.db/read_mind_of_creature__IbWH7TwcOPMJt842.json @@ -14,7 +14,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/slime_form__A9nJ9MYVegFPDwva.json b/data/packs/talents.db/slime_form__A9nJ9MYVegFPDwva.json index 6bebaf61..8b532a37 100644 --- a/data/packs/talents.db/slime_form__A9nJ9MYVegFPDwva.json +++ b/data/packs/talents.db/slime_form__A9nJ9MYVegFPDwva.json @@ -14,7 +14,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } diff --git a/data/packs/talents.db/teleport__EUE1pFpmreF9ZMKx.json b/data/packs/talents.db/teleport__EUE1pFpmreF9ZMKx.json index 1794f0e0..86fa31f2 100644 --- a/data/packs/talents.db/teleport__EUE1pFpmreF9ZMKx.json +++ b/data/packs/talents.db/teleport__EUE1pFpmreF9ZMKx.json @@ -14,7 +14,7 @@ "page": 0, "title": "cursed-scroll-1" }, - "talentClass": "level" + "talentClass": "patronBoon" }, "type": "Talent" } From ff0ded4dae5c68889bd723d758679832681e5c8e Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 11:27:29 +0000 Subject: [PATCH 088/182] support new talent class --- i18n/en.yaml | 2 +- system/src/config.mjs | 2 +- system/src/sheets/ItemSheetSD.mjs | 9 +++++++++ system/templates/items/boon/details-tab.hbs | 20 +++++++++++-------- system/templates/items/talent/details-tab.hbs | 9 +++++---- 5 files changed, 28 insertions(+), 14 deletions(-) diff --git a/i18n/en.yaml b/i18n/en.yaml index 8c3748e2..b3cac8c9 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -140,7 +140,6 @@ SHADOWDARK.armor.properties.shield: Shield SHADOWDARK.boon.type.label: Boon Type SHADOWDARK.boons.blessing: Blessing SHADOWDARK.boons.oath: Oath -SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Secret SHADOWDARK.chat_card.button.attack: Roll Attack SHADOWDARK.chat_card.button.cast_spell: Cast Spell @@ -769,6 +768,7 @@ SHADOWDARK.talent.backstab: Backstab SHADOWDARK.talent.class.ancestry: Ancestry SHADOWDARK.talent.class.class: Class SHADOWDARK.talent.class.level: Level +SHADOWDARK.talent.class.patronBoon: Patron Boon SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Ability Improvement SHADOWDARK.talent.type.advantage.hp: HP Roll Advantage diff --git a/system/src/config.mjs b/system/src/config.mjs index 2ff6c18c..504bb1dd 100644 --- a/system/src/config.mjs +++ b/system/src/config.mjs @@ -50,7 +50,6 @@ SHADOWDARK.DAMAGE_DICE = [ SHADOWDARK.BOON_TYPES = { blessing: "SHADOWDARK.boons.blessing", oath: "SHADOWDARK.boons.oath", - patron: "SHADOWDARK.boons.patron", secret: "SHADOWDARK.boons.secret", }; @@ -544,6 +543,7 @@ SHADOWDARK.TALENT_CLASSES = { ancestry: "SHADOWDARK.talent.class.ancestry", class: "SHADOWDARK.talent.class.class", level: "SHADOWDARK.talent.class.level", + patronBoon: "SHADOWDARK.talent.class.patronBoon", }; SHADOWDARK.WEAPON_BASE_DAMAGE = { diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index 3c75c22a..d4905223 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -452,6 +452,15 @@ export default class ItemSheetSD extends ItemSheet { .includes(context.item.system.duration.type); } + async getSheetDataForTalentItem(context) { + context.showsLevelInput = { + ancestry: false, + class: false, + level: true, + patronBoon: true, + }; + } + async getSheetDataForWandItem(context) { await this.getSpellSelectorConfigs(context); diff --git a/system/templates/items/boon/details-tab.hbs b/system/templates/items/boon/details-tab.hbs index f071dbb5..280fba1c 100644 --- a/system/templates/items/boon/details-tab.hbs +++ b/system/templates/items/boon/details-tab.hbs @@ -1,18 +1,22 @@
    -
    -

    {{localize 'SHADOWDARK.boon.type.label'}}

    +
    +

    + {{localize 'SHADOWDARK.boon.type.label'}} +

    +
    -

    {{localize 'SHADOWDARK.item.level'}}

    - {{numberInput - item.system.level +
    +

    + {{localize 'SHADOWDARK.item.level'}} +

    + {{numberInput item.system.level name="system.level" placeholder="0" }} diff --git a/system/templates/items/talent/details-tab.hbs b/system/templates/items/talent/details-tab.hbs index a3d780d7..8c1567c9 100644 --- a/system/templates/items/talent/details-tab.hbs +++ b/system/templates/items/talent/details-tab.hbs @@ -1,6 +1,6 @@
    -
    +

    {{localize 'SHADOWDARK.item.talent_class'}}

    - - {{#ifEq system.talentClass "level"}} +
    +
    + {{#if (lookup showsLevelInput system.talentClass)}}

    {{localize 'SHADOWDARK.item.level'}}

    {{numberInput item.system.level name="system.level" placeholder="0" }} - {{/ifEq}} + {{/if}}
    From 55c2d21a1f0db3f28753c0ccd326b19969f27ec1 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 11:27:45 +0000 Subject: [PATCH 089/182] tidy up templates --- .../items/npc-attack/details-tab.hbs | 64 +++++++++++-------- .../items/npc-special-attack/details-tab.hbs | 15 +++-- .../templates/items/npc-spell/details-tab.hbs | 2 +- .../templates/items/property/details-tab.hbs | 2 +- 4 files changed, 47 insertions(+), 36 deletions(-) diff --git a/system/templates/items/npc-attack/details-tab.hbs b/system/templates/items/npc-attack/details-tab.hbs index 2a4fd67b..bb60d077 100644 --- a/system/templates/items/npc-attack/details-tab.hbs +++ b/system/templates/items/npc-attack/details-tab.hbs @@ -1,53 +1,63 @@
    -
    -
    - -

    {{localize 'SHADOWDARK.item.npc_attack_count'}}

    +
    +
    +

    + {{localize 'SHADOWDARK.item.npc_attack_count'}} +

    -

    {{localize 'SHADOWDARK.item.npc_attack_damage_formula'}}

    +

    + {{localize 'SHADOWDARK.item.npc_attack_bonus'}} +

    + {{numberInput system.bonuses.attackBonus + name="system.bonuses.attackBonus" + placeholder="1" + }} + +

    + {{localize 'SHADOWDARK.app.npc_attack_ranges.title'}} +

    + +
    + {{npcAttackRangesDisplay}} +
    +
    +
    + +
    +

    + {{localize 'SHADOWDARK.item.npc_attack_damage_formula'}} +

    -

    {{localize 'SHADOWDARK.item.npc_attack_bonus'}}

    - {{numberInput - system.bonuses.attackBonus - name="system.bonuses.attackBonus" - placeholder="1" - }} - -

    {{localize 'SHADOWDARK.item.effect.predefined_effect.critMultiplier'}}

    - {{numberInput - system.bonuses.critical.multiplier +

    + {{localize 'SHADOWDARK.item.effect.predefined_effect.critMultiplier'}} +

    + {{numberInput system.bonuses.critical.multiplier name="system.bonuses.critical.multiplier" placeholder="2" }}
    -
    - -

    {{localize 'SHADOWDARK.app.npc_attack_ranges.title'}}

    - -
    {{npcAttackRangesDisplay}}
    -
    - -

    {{localize 'SHADOWDARK.item.npc_attack_special'}}

    +
    +

    + {{localize 'SHADOWDARK.item.npc_attack_special'}} +

    -
    +
    diff --git a/system/templates/items/npc-special-attack/details-tab.hbs b/system/templates/items/npc-special-attack/details-tab.hbs index 9a866156..da8b4c35 100644 --- a/system/templates/items/npc-special-attack/details-tab.hbs +++ b/system/templates/items/npc-special-attack/details-tab.hbs @@ -1,6 +1,6 @@
    -
    +

    {{localize 'SHADOWDARK.item.npc_attack_count'}}

    {{localize 'SHADOWDARK.app.npc_attack_ranges.title'}} - - {{npcAttackRangesDisplay}} +

    + {{localize 'SHADOWDARK.app.npc_attack_ranges.title'}} +

    +
    +
    + {{npcAttackRangesDisplay}} +
    diff --git a/system/templates/items/npc-spell/details-tab.hbs b/system/templates/items/npc-spell/details-tab.hbs index 53e6b36e..ab0b0101 100644 --- a/system/templates/items/npc-spell/details-tab.hbs +++ b/system/templates/items/npc-spell/details-tab.hbs @@ -1,6 +1,6 @@
    -
    +

    {{localize "SHADOWDARK.class-ability.dc.label"}}

    diff --git a/system/templates/items/property/details-tab.hbs b/system/templates/items/property/details-tab.hbs index a0ea7047..8c094694 100644 --- a/system/templates/items/property/details-tab.hbs +++ b/system/templates/items/property/details-tab.hbs @@ -1,6 +1,6 @@
    -
    +

    {{localize 'SHADOWDARK.property.type.title'}}

    From a340422af63d59e31ce28b7c83135bf5f10f1684 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 11:46:48 +0000 Subject: [PATCH 090/182] closes #847 --- RELEASE_NOTES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 6cbc7993..afc3a304 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -2,6 +2,7 @@ ## Enhancements * [#657] Consume Ammunition When Attacking With Ranged Weapons if Required +* [#847] Add support for Warlock class Boon which gives the ability to learn a Wizard spell * [#901] Added Russian as a partially complete system language. * [#920] Show tooltips on weapon and armor properties when showing expanded inline view in inventory From b558d8f4568f6f37d68fd38e2324435581c8e6be Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 11:51:15 +0000 Subject: [PATCH 091/182] closes #879, closes #880 --- RELEASE_NOTES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index afc3a304..d94cc550 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -3,6 +3,8 @@ ## Enhancements * [#657] Consume Ammunition When Attacking With Ranged Weapons if Required * [#847] Add support for Warlock class Boon which gives the ability to learn a Wizard spell +* [#879] Add new Patron item class +* [#880] Create a new Patron Boon type for Talents * [#901] Added Russian as a partially complete system language. * [#920] Show tooltips on weapon and armor properties when showing expanded inline view in inventory From 4aeade9b4893c78270760c5696d6da5cb9f3fe46 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 12:20:39 +0000 Subject: [PATCH 092/182] indicate patron boons on character sheet talent page --- system/src/sheets/PlayerSheetSD.mjs | 3 ++- system/templates/actors/player/talents.hbs | 13 ++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/system/src/sheets/PlayerSheetSD.mjs b/system/src/sheets/PlayerSheetSD.mjs index da91a07b..de78beff 100644 --- a/system/src/sheets/PlayerSheetSD.mjs +++ b/system/src/sheets/PlayerSheetSD.mjs @@ -953,7 +953,8 @@ export default class PlayerSheetSD extends ActorSheetSD { } else if (i.type === "Talent") { const talentClass = i.system.talentClass; - talents[talentClass].items.push(i); + const section = talentClass !== "patronBoon" ? talentClass : "level"; + talents[section].items.push(i); } else if (i.type === "Effect") { const category = i.system.category; diff --git a/system/templates/actors/player/talents.hbs b/system/templates/actors/player/talents.hbs index 1a8482fb..2eb39661 100644 --- a/system/templates/actors/player/talents.hbs +++ b/system/templates/actors/player/talents.hbs @@ -46,13 +46,20 @@
  • + >
    - {{this.name}} + + {{this.name}} + {{#ifEq this.system.talentClass "patronBoon"}} + + {{/ifEq}} +
    {{this.system.level}}
  • {{/each}} -
    From 0f1343dcf0af7b7f8f4d3f70751cf709c00f5dc5 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 12:46:52 +0000 Subject: [PATCH 093/182] use casting ability with best modifier if multiple available --- system/src/documents/ActorSD.mjs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/system/src/documents/ActorSD.mjs b/system/src/documents/ActorSD.mjs index 64966021..4950c4e6 100644 --- a/system/src/documents/ActorSD.mjs +++ b/system/src/documents/ActorSD.mjs @@ -892,9 +892,28 @@ export default class ActorSD extends Actor { async getSpellcastingAbility() { - const characterClass = await this.getClass(); + const spellcasterClasses = await this.getSpellcasterClasses(); + + let chosenAbility = ""; + let chosenAbilityModifier = 0; + + for (const casterClass of spellcasterClasses) { + const ability = casterClass?.system?.spellcasting?.ability ?? ""; + + if (chosenAbility === "") { + chosenAbility = ability; + chosenAbilityModifier = this.abilityModifier(ability); + } + else { + const modifier = this.abilityModifier(ability); + if (modifier > chosenAbilityModifier) { + chosenAbility = ability; + chosenAbilityModifier = modifier; + } + } + } - return characterClass?.system?.spellcasting?.ability ?? ""; + return chosenAbility; } async getTitle() { From 923258355de0f01132ccf9bf61d08b65725b03e2 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 12:48:13 +0000 Subject: [PATCH 094/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index d2b49171..5803701e 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -140,7 +140,6 @@ SHADOWDARK.armor.properties.shield: Щит SHADOWDARK.boon.type.label: Тип благословения SHADOWDARK.boons.blessing: Благословение SHADOWDARK.boons.oath: Клятва -SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Секрет SHADOWDARK.chat_card.button.attack: Бросок атаки SHADOWDARK.chat_card.button.cast_spell: Использовать заклинание @@ -188,6 +187,7 @@ SHADOWDARK.chatcard.default: Бросок SHADOWDARK.class-ability.ability.check: Проверка способности SHADOWDARK.class-ability.ability.label: Способность SHADOWDARK.class-ability.available.label: Доступно +SHADOWDARK.class-ability.boons: Boons SHADOWDARK.class-ability.dc.label: СЛ SHADOWDARK.class-ability.group.label: Группа способностей SHADOWDARK.class-ability.limited-uses.label: Ограниченное использование? @@ -202,6 +202,7 @@ SHADOWDARK.class.choice_count: Количество выборов SHADOWDARK.class.choice: Выбор SHADOWDARK.class.fighter: Воин SHADOWDARK.class.fixed: Фиксированный +SHADOWDARK.class.has_patron.count.label: Has Patron? SHADOWDARK.class.hit_points.label: Бросок кубика ОЗ SHADOWDARK.class.language_choices.count.label: Количество выборов SHADOWDARK.class.language_choices.label: Выбор языков @@ -213,6 +214,7 @@ SHADOWDARK.class.spellcasting_ability.label: Способность колдов SHADOWDARK.class.spellcasting_class.label: Класс заклинаний SHADOWDARK.class.spellcasting.base_difficulty.label: Базовая СЛ колдовства SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier +SHADOWDARK.class.starting_boons.count.label: Starting Boons SHADOWDARK.class.talent_choices.count.label: Количество выборов SHADOWDARK.class.talent_choices.label: Выбор талантов SHADOWDARK.class.talent_choices.prompt: Выберите талант... @@ -248,6 +250,7 @@ SHADOWDARK.dialog.edit_hp.title: Изменить ОЗ SHADOWDARK.dialog.edit_stats.title: Изменить характеристики SHADOWDARK.dialog.effect.choice.armor: Выберите тип доспеха SHADOWDARK.dialog.effect.choice.attribute: Выберите атрибут +SHADOWDARK.dialog.effect.choice.class: Choose Class SHADOWDARK.dialog.effect.choice.damage_die: Выберите кубик урона SHADOWDARK.dialog.effect.choice.lightsource: Выберите источник света SHADOWDARK.dialog.effect.choice.property: Выберите свойство @@ -300,9 +303,11 @@ SHADOWDARK.dialog.select_deity.prompt: Выберите божество... SHADOWDARK.dialog.select_deity.title: Выбор божества SHADOWDARK.dialog.select_languages.prompt: Выберите язык... SHADOWDARK.dialog.select_languages.title: Выбор языков +SHADOWDARK.dialog.select_patron.title: Select Patron SHADOWDARK.dialog.select_weapon_property.prompt: Выберите свойство оружия... SHADOWDARK.dialog.select_weapon_property.title: Выберите свойства оружия SHADOWDARK.dialog.spell_roll.title: Сотворить заклинание с помощью +SHADOWDARK.dialog.spellbook.open_which_class.title: Choose Available Spellboook SHADOWDARK.dialog.submit: Подтвердить SHADOWDARK.dialog.tooltip.talent_advantage: Талант даёт вам преимущество для этого броска SHADOWDARK.dialog.type_here: Введите здесь @@ -338,6 +343,7 @@ SHADOWDARK.error.spells.no_spellcasting_ability_set: Способность к SHADOWDARK.form.section_header.equipment.label: Снаряжение SHADOWDARK.form.section_header.languages.label: Языки SHADOWDARK.form.section_header.names.label: Имена +SHADOWDARK.form.section_header.patron.label: Patron SHADOWDARK.form.section_header.spellcasting.label: Заклинания SHADOWDARK.form.section_header.talents.label: Таланты SHADOWDARK.hotbar.abilityLost: Способность временно утрачена @@ -436,6 +442,7 @@ SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: Бонус к бро SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: Бонус к урону дальней атаки SHADOWDARK.item.effect.predefined_effect.spellAdvantage: Преимущество при колдовстве заклинания SHADOWDARK.item.effect.predefined_effect.spellCastingBonus: Бонус к проверке колдовства +SHADOWDARK.item.effect.predefined_effect.spellcastingClasses: Bonus Spellcasting Class SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: Бонус к КЗ без доспехов SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: Бонус к броску атаки оружием SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: Бонус к урону атаки оружием @@ -452,6 +459,7 @@ SHADOWDARK.item.effect.warning.add_effect_without_value: Нельзя добав SHADOWDARK.item.effect.warning.add_round_item_outside_combat: Нельзя добавить эффекты с длительностью в раундах вне боя. SHADOWDARK.item.equipped: Экипировано SHADOWDARK.item.errors.no_available_ammunition: No ammunition available +SHADOWDARK.item.errors.no_spellcasting_classes: This character does not have a spellcasting class SHADOWDARK.item.inventory_free_carry: Свободный перенос SHADOWDARK.item.inventory_per_slot: Макс. на слот SHADOWDARK.item.inventory_quantity: Количество @@ -574,6 +582,7 @@ SHADOWDARK.npc_move.near: Ближняя SHADOWDARK.npc_move.none: Нет SHADOWDARK.npc_move.special: Особая SHADOWDARK.npc_move.triple_near: Тройная ближняя +SHADOWDARK.patron.boons_table.label: Patron Boons Table SHADOWDARK.property.type.option.armor: Доспех SHADOWDARK.property.type.option.weapon: Оружие SHADOWDARK.property.type.title: Тип свойства @@ -705,6 +714,8 @@ SHADOWDARK.sheet.player.languages: Языки SHADOWDARK.sheet.player.luck: Удача SHADOWDARK.sheet.player.melee_attacks: Рукопашные атаки SHADOWDARK.sheet.player.name.label: Имя +SHADOWDARK.sheet.player.open_spellbook.tooltip: Open Spellbook +SHADOWDARK.sheet.player.patron.tooltip: Your patron is the source of your supernatural gifts SHADOWDARK.sheet.player.ranged_attacks: Дальние атаки SHADOWDARK.sheet.player.spells_from_items: Заклинания от предметов SHADOWDARK.sheet.player.spells_tier: Уровень @@ -757,6 +768,7 @@ SHADOWDARK.talent.backstab: Удар в спину SHADOWDARK.talent.class.ancestry: Происхождение SHADOWDARK.talent.class.class: Класс SHADOWDARK.talent.class.level: Уровень +SHADOWDARK.talent.class.patronBoon: Patron Boon SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Улучшение характеристики SHADOWDARK.talent.type.advantage.hp: Преимущество при броске ОЗ @@ -766,6 +778,7 @@ SHADOWDARK.talent.type.advantage.title: Бонус преимущества SHADOWDARK.talent.type.armor_bonus: Бонус к КЗ доспеха SHADOWDARK.talent.type.armor_mastery: Мастерство доспехов SHADOWDARK.talent.type.backstab_die: Дополнительный кубик удара в спину +SHADOWDARK.talent.type.bonus_caster_classes: Bonus Spellcasting Class SHADOWDARK.talent.type.custom: Пользовательский талант SHADOWDARK.talent.type.melee_attack_bonus: Бонус к броску рукопашной атаки SHADOWDARK.talent.type.melee_damage_bonus: Бонус к броску рукопашного урона From b2109ae7ac7edefa33cfaa6bad53d3d3a625ff0b Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 12:48:14 +0000 Subject: [PATCH 095/182] New translations en.yaml (French) --- i18n/fr.yaml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/i18n/fr.yaml b/i18n/fr.yaml index 6039644f..85e61082 100644 --- a/i18n/fr.yaml +++ b/i18n/fr.yaml @@ -140,7 +140,6 @@ SHADOWDARK.armor.properties.shield: Bouclier SHADOWDARK.boon.type.label: Type d'avantage SHADOWDARK.boons.blessing: Bénédiction SHADOWDARK.boons.oath: Serment -SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Secret SHADOWDARK.chat_card.button.attack: Jet d'Attaque SHADOWDARK.chat_card.button.cast_spell: Lancement de sort @@ -188,6 +187,7 @@ SHADOWDARK.chatcard.default: Lancer SHADOWDARK.class-ability.ability.check: Ability Check SHADOWDARK.class-ability.ability.label: Capacité SHADOWDARK.class-ability.available.label: Disponible +SHADOWDARK.class-ability.boons: Boons SHADOWDARK.class-ability.dc.label: DD SHADOWDARK.class-ability.group.label: Groupe de Capacités SHADOWDARK.class-ability.limited-uses.label: Nombre d'utilisations limité ? @@ -202,6 +202,7 @@ SHADOWDARK.class.choice_count: Choice Count SHADOWDARK.class.choice: Choice SHADOWDARK.class.fighter: Guerrier SHADOWDARK.class.fixed: Fixed +SHADOWDARK.class.has_patron.count.label: Has Patron? SHADOWDARK.class.hit_points.label: Lancer de Dé de vie SHADOWDARK.class.language_choices.count.label: Nombre de choix SHADOWDARK.class.language_choices.label: Choix de langues @@ -213,6 +214,7 @@ SHADOWDARK.class.spellcasting_ability.label: Caractéristique d'incantation SHADOWDARK.class.spellcasting_class.label: Lanceur de sort SHADOWDARK.class.spellcasting.base_difficulty.label: DD de base pour lancer de sort SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier +SHADOWDARK.class.starting_boons.count.label: Starting Boons SHADOWDARK.class.talent_choices.count.label: Nombre de choix SHADOWDARK.class.talent_choices.label: Choix des talents SHADOWDARK.class.talent_choices.prompt: Sélectionnez un Talent... @@ -248,6 +250,7 @@ SHADOWDARK.dialog.edit_hp.title: Edit HP SHADOWDARK.dialog.edit_stats.title: Edit Stats SHADOWDARK.dialog.effect.choice.armor: Choisissez un type d'armure SHADOWDARK.dialog.effect.choice.attribute: Choisissez un attribut +SHADOWDARK.dialog.effect.choice.class: Choose Class SHADOWDARK.dialog.effect.choice.damage_die: Choisissez un dé de dégâts SHADOWDARK.dialog.effect.choice.lightsource: Choisir la source de lumière SHADOWDARK.dialog.effect.choice.property: Choisissez une propriété @@ -300,9 +303,11 @@ SHADOWDARK.dialog.select_deity.prompt: Select Deity... SHADOWDARK.dialog.select_deity.title: Choose Deity SHADOWDARK.dialog.select_languages.prompt: Select Language... SHADOWDARK.dialog.select_languages.title: Choose Languages +SHADOWDARK.dialog.select_patron.title: Select Patron SHADOWDARK.dialog.select_weapon_property.prompt: Select Weapon Property... SHADOWDARK.dialog.select_weapon_property.title: Choose Weapon Properties SHADOWDARK.dialog.spell_roll.title: Roll Spell with +SHADOWDARK.dialog.spellbook.open_which_class.title: Choose Available Spellboook SHADOWDARK.dialog.submit: Valider SHADOWDARK.dialog.tooltip.talent_advantage: Un talent vous donne l'avantage de ce jet SHADOWDARK.dialog.type_here: Type Here... @@ -338,6 +343,7 @@ SHADOWDARK.error.spells.no_spellcasting_ability_set: Aucune capacité de lanceme SHADOWDARK.form.section_header.equipment.label: Équipement SHADOWDARK.form.section_header.languages.label: Languages SHADOWDARK.form.section_header.names.label: Names +SHADOWDARK.form.section_header.patron.label: Patron SHADOWDARK.form.section_header.spellcasting.label: Spellcasting SHADOWDARK.form.section_header.talents.label: Talents SHADOWDARK.hotbar.abilityLost: Ability currently lost @@ -436,6 +442,7 @@ SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: Bonus au jet d'Attaq SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: Bonus aux Dégâts à Distance SHADOWDARK.item.effect.predefined_effect.spellAdvantage: Avantage d'Incantation sur le Sort SHADOWDARK.item.effect.predefined_effect.spellCastingBonus: Bonus pour jet d'Incantation +SHADOWDARK.item.effect.predefined_effect.spellcastingClasses: Bonus Spellcasting Class SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: Unarmored AC Bonus SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: Bonus au jet d'Attaque d'Arme SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: Bonus aux Dégâts d'Attaque d'Arme @@ -452,6 +459,7 @@ SHADOWDARK.item.effect.warning.add_effect_without_value: Can't add effects witho SHADOWDARK.item.effect.warning.add_round_item_outside_combat: Can't add effects with Rounds type duration outside of combat. SHADOWDARK.item.equipped: Équipé SHADOWDARK.item.errors.no_available_ammunition: No ammunition available +SHADOWDARK.item.errors.no_spellcasting_classes: This character does not have a spellcasting class SHADOWDARK.item.inventory_free_carry: Free Carry SHADOWDARK.item.inventory_per_slot: Max per Slot SHADOWDARK.item.inventory_quantity: Quantité @@ -574,6 +582,7 @@ SHADOWDARK.npc_move.near: Near SHADOWDARK.npc_move.none: None SHADOWDARK.npc_move.special: Special SHADOWDARK.npc_move.triple_near: Triple Near +SHADOWDARK.patron.boons_table.label: Patron Boons Table SHADOWDARK.property.type.option.armor: Armor SHADOWDARK.property.type.option.weapon: Weapon SHADOWDARK.property.type.title: Property Type @@ -705,6 +714,8 @@ SHADOWDARK.sheet.player.languages: Langues SHADOWDARK.sheet.player.luck: Chance SHADOWDARK.sheet.player.melee_attacks: Attaque en Mêlée SHADOWDARK.sheet.player.name.label: Name +SHADOWDARK.sheet.player.open_spellbook.tooltip: Open Spellbook +SHADOWDARK.sheet.player.patron.tooltip: Your patron is the source of your supernatural gifts SHADOWDARK.sheet.player.ranged_attacks: Attaques à Distance SHADOWDARK.sheet.player.spells_from_items: Spells From Items SHADOWDARK.sheet.player.spells_tier: Rang @@ -757,6 +768,7 @@ SHADOWDARK.talent.backstab: Attaque Sournoise SHADOWDARK.talent.class.ancestry: Ascendance SHADOWDARK.talent.class.class: Classe SHADOWDARK.talent.class.level: Niveau +SHADOWDARK.talent.class.patronBoon: Patron Boon SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Ability Improvement SHADOWDARK.talent.type.advantage.hp: HP Roll Advantage @@ -766,6 +778,7 @@ SHADOWDARK.talent.type.advantage.title: Advantage Bonus SHADOWDARK.talent.type.armor_bonus: Armor AC Bonus SHADOWDARK.talent.type.armor_mastery: Maîtrise des Armures SHADOWDARK.talent.type.backstab_die: Extra Backstab Die +SHADOWDARK.talent.type.bonus_caster_classes: Bonus Spellcasting Class SHADOWDARK.talent.type.custom: Custom Talent SHADOWDARK.talent.type.melee_attack_bonus: Melee Attack Roll Bonus SHADOWDARK.talent.type.melee_damage_bonus: Bonus aux Dégâts en Mêlée From ca1c6418a42c8ab7136fa270501968b7fa49f96f Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 12:48:15 +0000 Subject: [PATCH 096/182] New translations en.yaml (Spanish) --- i18n/es.yaml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/i18n/es.yaml b/i18n/es.yaml index e8089dd4..61e71332 100644 --- a/i18n/es.yaml +++ b/i18n/es.yaml @@ -140,7 +140,6 @@ SHADOWDARK.armor.properties.shield: Escudo SHADOWDARK.boon.type.label: Tipo de regalo SHADOWDARK.boons.blessing: Bendición SHADOWDARK.boons.oath: Juramento -SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Secreto SHADOWDARK.chat_card.button.attack: Tirada de ataque SHADOWDARK.chat_card.button.cast_spell: Lanzar hechizo @@ -188,6 +187,7 @@ SHADOWDARK.chatcard.default: Tirada SHADOWDARK.class-ability.ability.check: Ability Check SHADOWDARK.class-ability.ability.label: Habilidad SHADOWDARK.class-ability.available.label: Disponible +SHADOWDARK.class-ability.boons: Boons SHADOWDARK.class-ability.dc.label: CD SHADOWDARK.class-ability.group.label: Grupo de habilidades SHADOWDARK.class-ability.limited-uses.label: '¿Usos limitados?' @@ -202,6 +202,7 @@ SHADOWDARK.class.choice_count: Choice Count SHADOWDARK.class.choice: Choice SHADOWDARK.class.fighter: Luchador SHADOWDARK.class.fixed: Fixed +SHADOWDARK.class.has_patron.count.label: Has Patron? SHADOWDARK.class.hit_points.label: Tirada de dado PV SHADOWDARK.class.language_choices.count.label: Número de opciones SHADOWDARK.class.language_choices.label: Language Choices @@ -213,6 +214,7 @@ SHADOWDARK.class.spellcasting_ability.label: Aptitud Mágica SHADOWDARK.class.spellcasting_class.label: Clase de hechizo SHADOWDARK.class.spellcasting.base_difficulty.label: Spellcasting Base DC SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier +SHADOWDARK.class.starting_boons.count.label: Starting Boons SHADOWDARK.class.talent_choices.count.label: Número de opciones SHADOWDARK.class.talent_choices.label: Elecciones de talento SHADOWDARK.class.talent_choices.prompt: Seleccionar talento... @@ -248,6 +250,7 @@ SHADOWDARK.dialog.edit_hp.title: Edit HP SHADOWDARK.dialog.edit_stats.title: Edit Stats SHADOWDARK.dialog.effect.choice.armor: Elige el tipo de armadura SHADOWDARK.dialog.effect.choice.attribute: Elegir atributo +SHADOWDARK.dialog.effect.choice.class: Choose Class SHADOWDARK.dialog.effect.choice.damage_die: Elegir dado de daño SHADOWDARK.dialog.effect.choice.lightsource: Elegir fuente de luz SHADOWDARK.dialog.effect.choice.property: Elegir propiedad @@ -300,9 +303,11 @@ SHADOWDARK.dialog.select_deity.prompt: Seleccionar deidad... SHADOWDARK.dialog.select_deity.title: Elegir deidad SHADOWDARK.dialog.select_languages.prompt: Seleccionar idioma... SHADOWDARK.dialog.select_languages.title: Elegir idiomas +SHADOWDARK.dialog.select_patron.title: Select Patron SHADOWDARK.dialog.select_weapon_property.prompt: Seleccionar propiedad de arma... SHADOWDARK.dialog.select_weapon_property.title: Choose Weapon Properties SHADOWDARK.dialog.spell_roll.title: Lanzar hechizo con +SHADOWDARK.dialog.spellbook.open_which_class.title: Choose Available Spellboook SHADOWDARK.dialog.submit: Enviar SHADOWDARK.dialog.tooltip.talent_advantage: Un talento te está dando ventaja en esta tirada SHADOWDARK.dialog.type_here: Type Here... @@ -338,6 +343,7 @@ SHADOWDARK.error.spells.no_spellcasting_ability_set: No character spellcasting a SHADOWDARK.form.section_header.equipment.label: Equipment SHADOWDARK.form.section_header.languages.label: Idiomas SHADOWDARK.form.section_header.names.label: Names +SHADOWDARK.form.section_header.patron.label: Patron SHADOWDARK.form.section_header.spellcasting.label: Spellcasting SHADOWDARK.form.section_header.talents.label: Talentos SHADOWDARK.hotbar.abilityLost: Ability currently lost @@ -436,6 +442,7 @@ SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: Bonus de ataque a di SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: Bonus de daño a distancia SHADOWDARK.item.effect.predefined_effect.spellAdvantage: Ventaja de lanzamiento de hechizo SHADOWDARK.item.effect.predefined_effect.spellCastingBonus: Bonus de lanzamiento de hechizo +SHADOWDARK.item.effect.predefined_effect.spellcastingClasses: Bonus Spellcasting Class SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: Bonus de CA sin armaduras SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: Bonus de Ataque de Arma SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: Bonus de daño de arma @@ -452,6 +459,7 @@ SHADOWDARK.item.effect.warning.add_effect_without_value: No se pueden añadir ef SHADOWDARK.item.effect.warning.add_round_item_outside_combat: No se pueden añadir efectos con duración del tipo de rondas fuera del combate. SHADOWDARK.item.equipped: Equipado SHADOWDARK.item.errors.no_available_ammunition: No ammunition available +SHADOWDARK.item.errors.no_spellcasting_classes: This character does not have a spellcasting class SHADOWDARK.item.inventory_free_carry: Llevar libremente SHADOWDARK.item.inventory_per_slot: Máximo por espacio SHADOWDARK.item.inventory_quantity: Cantidad @@ -574,6 +582,7 @@ SHADOWDARK.npc_move.near: Próximo SHADOWDARK.npc_move.none: Nada SHADOWDARK.npc_move.special: Especial SHADOWDARK.npc_move.triple_near: Triple próximo +SHADOWDARK.patron.boons_table.label: Patron Boons Table SHADOWDARK.property.type.option.armor: Armadura SHADOWDARK.property.type.option.weapon: Arma SHADOWDARK.property.type.title: Tipo de propiedad @@ -705,6 +714,8 @@ SHADOWDARK.sheet.player.languages: Idiomas SHADOWDARK.sheet.player.luck: Suerte SHADOWDARK.sheet.player.melee_attacks: Ataque cuerpo a cuerpo SHADOWDARK.sheet.player.name.label: Name +SHADOWDARK.sheet.player.open_spellbook.tooltip: Open Spellbook +SHADOWDARK.sheet.player.patron.tooltip: Your patron is the source of your supernatural gifts SHADOWDARK.sheet.player.ranged_attacks: Ataques a distancia. SHADOWDARK.sheet.player.spells_from_items: Spells From Items SHADOWDARK.sheet.player.spells_tier: Nivel @@ -757,6 +768,7 @@ SHADOWDARK.talent.backstab: Puñalada SHADOWDARK.talent.class.ancestry: Ancestro SHADOWDARK.talent.class.class: Clase SHADOWDARK.talent.class.level: Nivel +SHADOWDARK.talent.class.patronBoon: Patron Boon SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Mejora de Habilidad SHADOWDARK.talent.type.advantage.hp: Ventaja de tirada de PV @@ -766,6 +778,7 @@ SHADOWDARK.talent.type.advantage.title: Bonus de ventaja SHADOWDARK.talent.type.armor_bonus: Bono de CA de armadura SHADOWDARK.talent.type.armor_mastery: Maestría de armaduras SHADOWDARK.talent.type.backstab_die: Dado extra de puñalada +SHADOWDARK.talent.type.bonus_caster_classes: Bonus Spellcasting Class SHADOWDARK.talent.type.custom: Talento personalizado SHADOWDARK.talent.type.melee_attack_bonus: Bonus de Ataque Cuerpo a Cuerpo SHADOWDARK.talent.type.melee_damage_bonus: Bonus de daño cuerpo a cuerpo From 388d1a53236eb457beb73224c0b3cca390c416e0 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 12:48:16 +0000 Subject: [PATCH 097/182] New translations en.yaml (German) --- i18n/de.yaml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/i18n/de.yaml b/i18n/de.yaml index 52e45bda..4ff6f2dc 100644 --- a/i18n/de.yaml +++ b/i18n/de.yaml @@ -140,7 +140,6 @@ SHADOWDARK.armor.properties.shield: Schild SHADOWDARK.boon.type.label: Boon Type SHADOWDARK.boons.blessing: Segnung SHADOWDARK.boons.oath: Eid -SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Geheimnis SHADOWDARK.chat_card.button.attack: Angriff würfeln SHADOWDARK.chat_card.button.cast_spell: Zauber wirken @@ -188,6 +187,7 @@ SHADOWDARK.chatcard.default: Wurf SHADOWDARK.class-ability.ability.check: Ability Check SHADOWDARK.class-ability.ability.label: Ability SHADOWDARK.class-ability.available.label: Available +SHADOWDARK.class-ability.boons: Boons SHADOWDARK.class-ability.dc.label: SG SHADOWDARK.class-ability.group.label: Ability Group SHADOWDARK.class-ability.limited-uses.label: Limited Uses? @@ -202,6 +202,7 @@ SHADOWDARK.class.choice_count: Choice Count SHADOWDARK.class.choice: Choice SHADOWDARK.class.fighter: Kämpfer SHADOWDARK.class.fixed: Fixed +SHADOWDARK.class.has_patron.count.label: Has Patron? SHADOWDARK.class.hit_points.label: HP Die Roll SHADOWDARK.class.language_choices.count.label: Choice Count SHADOWDARK.class.language_choices.label: Language Choices @@ -213,6 +214,7 @@ SHADOWDARK.class.spellcasting_ability.label: Zauber-Fähigkeit SHADOWDARK.class.spellcasting_class.label: Spell Class SHADOWDARK.class.spellcasting.base_difficulty.label: Spellcasting Base DC SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier +SHADOWDARK.class.starting_boons.count.label: Starting Boons SHADOWDARK.class.talent_choices.count.label: Choice Count SHADOWDARK.class.talent_choices.label: Talent Choices SHADOWDARK.class.talent_choices.prompt: Select Talent... @@ -248,6 +250,7 @@ SHADOWDARK.dialog.edit_hp.title: Edit HP SHADOWDARK.dialog.edit_stats.title: Edit Stats SHADOWDARK.dialog.effect.choice.armor: Choose Armor Type SHADOWDARK.dialog.effect.choice.attribute: Choose Attribute +SHADOWDARK.dialog.effect.choice.class: Choose Class SHADOWDARK.dialog.effect.choice.damage_die: Choose Damage Die SHADOWDARK.dialog.effect.choice.lightsource: Choose Light Source SHADOWDARK.dialog.effect.choice.property: Choose Property @@ -300,9 +303,11 @@ SHADOWDARK.dialog.select_deity.prompt: Select Deity... SHADOWDARK.dialog.select_deity.title: Choose Deity SHADOWDARK.dialog.select_languages.prompt: Select Language... SHADOWDARK.dialog.select_languages.title: Choose Languages +SHADOWDARK.dialog.select_patron.title: Select Patron SHADOWDARK.dialog.select_weapon_property.prompt: Select Weapon Property... SHADOWDARK.dialog.select_weapon_property.title: Choose Weapon Properties SHADOWDARK.dialog.spell_roll.title: Zauberwurf mit +SHADOWDARK.dialog.spellbook.open_which_class.title: Choose Available Spellboook SHADOWDARK.dialog.submit: Submit SHADOWDARK.dialog.tooltip.talent_advantage: Ein Talent gibt dir Vorteil für diesen Wurf SHADOWDARK.dialog.type_here: Type Here... @@ -338,6 +343,7 @@ SHADOWDARK.error.spells.no_spellcasting_ability_set: No character spellcasting a SHADOWDARK.form.section_header.equipment.label: Equipment SHADOWDARK.form.section_header.languages.label: Languages SHADOWDARK.form.section_header.names.label: Names +SHADOWDARK.form.section_header.patron.label: Patron SHADOWDARK.form.section_header.spellcasting.label: Spellcasting SHADOWDARK.form.section_header.talents.label: Talents SHADOWDARK.hotbar.abilityLost: Ability currently lost @@ -436,6 +442,7 @@ SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: Ranged Attack Roll B SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: Ranged Damage Bonus SHADOWDARK.item.effect.predefined_effect.spellAdvantage: Spellcasting Advantage on Spell SHADOWDARK.item.effect.predefined_effect.spellCastingBonus: Spellcasting Check Bonus +SHADOWDARK.item.effect.predefined_effect.spellcastingClasses: Bonus Spellcasting Class SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: Unarmored AC Bonus SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: Weapon Attack Roll Bonus SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: Weapon Attack Damage Bonus @@ -452,6 +459,7 @@ SHADOWDARK.item.effect.warning.add_effect_without_value: Can't add effects witho SHADOWDARK.item.effect.warning.add_round_item_outside_combat: Can't add effects with Rounds type duration outside of combat. SHADOWDARK.item.equipped: Angelegt SHADOWDARK.item.errors.no_available_ammunition: No ammunition available +SHADOWDARK.item.errors.no_spellcasting_classes: This character does not have a spellcasting class SHADOWDARK.item.inventory_free_carry: Freies Tragen SHADOWDARK.item.inventory_per_slot: Max pro Platz SHADOWDARK.item.inventory_quantity: Menge @@ -574,6 +582,7 @@ SHADOWDARK.npc_move.near: Nah SHADOWDARK.npc_move.none: None SHADOWDARK.npc_move.special: Special SHADOWDARK.npc_move.triple_near: Triple Near +SHADOWDARK.patron.boons_table.label: Patron Boons Table SHADOWDARK.property.type.option.armor: Armor SHADOWDARK.property.type.option.weapon: Weapon SHADOWDARK.property.type.title: Property Type @@ -705,6 +714,8 @@ SHADOWDARK.sheet.player.languages: Sprachen SHADOWDARK.sheet.player.luck: Glück SHADOWDARK.sheet.player.melee_attacks: Nahkampfattacken SHADOWDARK.sheet.player.name.label: Name +SHADOWDARK.sheet.player.open_spellbook.tooltip: Open Spellbook +SHADOWDARK.sheet.player.patron.tooltip: Your patron is the source of your supernatural gifts SHADOWDARK.sheet.player.ranged_attacks: Fernkampfattacken SHADOWDARK.sheet.player.spells_from_items: Spells From Items SHADOWDARK.sheet.player.spells_tier: Stufe @@ -757,6 +768,7 @@ SHADOWDARK.talent.backstab: Rückenschlag SHADOWDARK.talent.class.ancestry: Abstammung SHADOWDARK.talent.class.class: Klasse SHADOWDARK.talent.class.level: Level +SHADOWDARK.talent.class.patronBoon: Patron Boon SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Fähigkeitsverbesserung SHADOWDARK.talent.type.advantage.hp: TP Wurfvorteil @@ -766,6 +778,7 @@ SHADOWDARK.talent.type.advantage.title: Vorteilsbonus SHADOWDARK.talent.type.armor_bonus: Rüstungs-RK-Bonus SHADOWDARK.talent.type.armor_mastery: Armor Mastery SHADOWDARK.talent.type.backstab_die: Zusätzlicher Meuchelwürfel +SHADOWDARK.talent.type.bonus_caster_classes: Bonus Spellcasting Class SHADOWDARK.talent.type.custom: Eigenes Talent SHADOWDARK.talent.type.melee_attack_bonus: Nahkampfangriffswurfbonus SHADOWDARK.talent.type.melee_damage_bonus: Nahkampfschadenswurfbonus From 6fedfbac460d9970b401ec4c4f0d3d950af49f99 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 12:48:18 +0000 Subject: [PATCH 098/182] New translations en.yaml (Finnish) --- i18n/fi.yaml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/i18n/fi.yaml b/i18n/fi.yaml index 19aebec1..28b7acca 100644 --- a/i18n/fi.yaml +++ b/i18n/fi.yaml @@ -140,7 +140,6 @@ SHADOWDARK.armor.properties.shield: Kilpi SHADOWDARK.boon.type.label: Siunauksen tyyppi SHADOWDARK.boons.blessing: Siunaus SHADOWDARK.boons.oath: Vala -SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Salaisuus SHADOWDARK.chat_card.button.attack: Heitä hyökkäysheitto SHADOWDARK.chat_card.button.cast_spell: Loihdi loitsu @@ -188,6 +187,7 @@ SHADOWDARK.chatcard.default: Heitä noppaa SHADOWDARK.class-ability.ability.check: Kyvykkyysheitto SHADOWDARK.class-ability.ability.label: Kyky SHADOWDARK.class-ability.available.label: Käytettävissä +SHADOWDARK.class-ability.boons: Boons SHADOWDARK.class-ability.dc.label: VA SHADOWDARK.class-ability.group.label: Kykyjoukko SHADOWDARK.class-ability.limited-uses.label: Rajoitettuja käyttökertoja? @@ -202,6 +202,7 @@ SHADOWDARK.class.choice_count: Valintojen määrä SHADOWDARK.class.choice: Valinta SHADOWDARK.class.fighter: Taistelija SHADOWDARK.class.fixed: Kiinteä +SHADOWDARK.class.has_patron.count.label: Has Patron? SHADOWDARK.class.hit_points.label: Osumapisteheitto SHADOWDARK.class.language_choices.count.label: Valintojen määrä SHADOWDARK.class.language_choices.label: Kielivalinnat @@ -213,6 +214,7 @@ SHADOWDARK.class.spellcasting_ability.label: Loihtimiskyky SHADOWDARK.class.spellcasting_class.label: Loitsun hahmoluokka SHADOWDARK.class.spellcasting.base_difficulty.label: Loihtimisen vakio vaikeusaste SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier +SHADOWDARK.class.starting_boons.count.label: Starting Boons SHADOWDARK.class.talent_choices.count.label: Valintojen määrä SHADOWDARK.class.talent_choices.label: Lahjakkuusvalinnat SHADOWDARK.class.talent_choices.prompt: Valitse lahjakkuus... @@ -248,6 +250,7 @@ SHADOWDARK.dialog.edit_hp.title: Muokkaa osumapisteitä SHADOWDARK.dialog.edit_stats.title: Muokkaa kyvykkyysarvoja SHADOWDARK.dialog.effect.choice.armor: Valitse panssarin tyyppi SHADOWDARK.dialog.effect.choice.attribute: Valitse ominaisuus +SHADOWDARK.dialog.effect.choice.class: Choose Class SHADOWDARK.dialog.effect.choice.damage_die: Valitse vahinkonoppa SHADOWDARK.dialog.effect.choice.lightsource: Valitse valonlähde SHADOWDARK.dialog.effect.choice.property: Valitse tyyppi @@ -300,9 +303,11 @@ SHADOWDARK.dialog.select_deity.prompt: Valitse jumaluus... SHADOWDARK.dialog.select_deity.title: Jumaluuden valinta SHADOWDARK.dialog.select_languages.prompt: Valitse kieli... SHADOWDARK.dialog.select_languages.title: Kielien valinta +SHADOWDARK.dialog.select_patron.title: Select Patron SHADOWDARK.dialog.select_weapon_property.prompt: Valitse aseen ominaisuus... SHADOWDARK.dialog.select_weapon_property.title: Aseen ominaisuuksien valinta SHADOWDARK.dialog.spell_roll.title: Heitä loihtimisheitto käyttäen +SHADOWDARK.dialog.spellbook.open_which_class.title: Choose Available Spellboook SHADOWDARK.dialog.submit: Tallenna SHADOWDARK.dialog.tooltip.talent_advantage: Jokin lahjakkuuksistasi antaa sinulle edun tähän heittoon SHADOWDARK.dialog.type_here: Type Here... @@ -338,6 +343,7 @@ SHADOWDARK.error.spells.no_spellcasting_ability_set: Hahmon loihtimiskyvykkyytt SHADOWDARK.form.section_header.equipment.label: Varusteet SHADOWDARK.form.section_header.languages.label: Kielet SHADOWDARK.form.section_header.names.label: Nimet +SHADOWDARK.form.section_header.patron.label: Patron SHADOWDARK.form.section_header.spellcasting.label: Loihtiminen SHADOWDARK.form.section_header.talents.label: Lahjakkuudet SHADOWDARK.hotbar.abilityLost: Kyky on toistaiseksi menetetty @@ -436,6 +442,7 @@ SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: Kantama-aseiden hyö SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: Kantama-aseiden vahinkoheittoihin bonus SHADOWDARK.item.effect.predefined_effect.spellAdvantage: Tietyn loitsun loihtiminen edun kanssa SHADOWDARK.item.effect.predefined_effect.spellCastingBonus: Loihtimisbonus +SHADOWDARK.item.effect.predefined_effect.spellcastingClasses: Bonus Spellcasting Class SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: Puolustuspistebonus ilman panssaria SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: Aseellisen hyökkäysheiton bonus SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: Aseellisen vahinkoheiton bonus @@ -452,6 +459,7 @@ SHADOWDARK.item.effect.warning.add_effect_without_value: Ei voi lisätä efektej SHADOWDARK.item.effect.warning.add_round_item_outside_combat: Ei voi lisätä efektejä "kierros"-kestolla taistelun ulkopuolella. SHADOWDARK.item.equipped: Käytössä SHADOWDARK.item.errors.no_available_ammunition: No ammunition available +SHADOWDARK.item.errors.no_spellcasting_classes: This character does not have a spellcasting class SHADOWDARK.item.inventory_free_carry: Vapaat kannettavat SHADOWDARK.item.inventory_per_slot: Maksimi per tarviketila SHADOWDARK.item.inventory_quantity: Lukumäärä @@ -574,6 +582,7 @@ SHADOWDARK.npc_move.near: Lähellä SHADOWDARK.npc_move.none: Ei yhtään SHADOWDARK.npc_move.special: Erikoisliikkuminen SHADOWDARK.npc_move.triple_near: '"Lähellä" etäisyys triplana' +SHADOWDARK.patron.boons_table.label: Patron Boons Table SHADOWDARK.property.type.option.armor: Panssari SHADOWDARK.property.type.option.weapon: Ase SHADOWDARK.property.type.title: Ominaisuuden tyyppi @@ -705,6 +714,8 @@ SHADOWDARK.sheet.player.languages: Kielet SHADOWDARK.sheet.player.luck: Tuuripiste SHADOWDARK.sheet.player.melee_attacks: Lähihyökkäys SHADOWDARK.sheet.player.name.label: Nimi +SHADOWDARK.sheet.player.open_spellbook.tooltip: Open Spellbook +SHADOWDARK.sheet.player.patron.tooltip: Your patron is the source of your supernatural gifts SHADOWDARK.sheet.player.ranged_attacks: Kantamahyökkäykset SHADOWDARK.sheet.player.spells_from_items: Loitsut esineistä SHADOWDARK.sheet.player.spells_tier: Loitsutaso @@ -757,6 +768,7 @@ SHADOWDARK.talent.backstab: Yllätyshyökkäys SHADOWDARK.talent.class.ancestry: Laji SHADOWDARK.talent.class.class: Hahmoluokka SHADOWDARK.talent.class.level: Taso +SHADOWDARK.talent.class.patronBoon: Patron Boon SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Kyvyn parannus SHADOWDARK.talent.type.advantage.hp: Osumapisteiden heitto edun kanssa @@ -766,6 +778,7 @@ SHADOWDARK.talent.type.advantage.title: Etubonus SHADOWDARK.talent.type.armor_bonus: Puolustuspistebonus panssarista SHADOWDARK.talent.type.armor_mastery: Taituruus panssarin kanssa SHADOWDARK.talent.type.backstab_die: Lisänoppa yllätyshyökkäykseen +SHADOWDARK.talent.type.bonus_caster_classes: Bonus Spellcasting Class SHADOWDARK.talent.type.custom: Mukautettu lahjakkuus SHADOWDARK.talent.type.melee_attack_bonus: Lähitaistelun hyökkäysheittoihin bonus SHADOWDARK.talent.type.melee_damage_bonus: Lähitaistelun vahinkoheittoihin bonus From b1666b4cb7fe7d95f0a3e6de5c2a86cf8f6233b4 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 12:48:19 +0000 Subject: [PATCH 099/182] New translations en.yaml (Korean) --- i18n/ko.yaml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/i18n/ko.yaml b/i18n/ko.yaml index 122e541d..2d78437d 100644 --- a/i18n/ko.yaml +++ b/i18n/ko.yaml @@ -140,7 +140,6 @@ SHADOWDARK.armor.properties.shield: 방패 SHADOWDARK.boon.type.label: Boon Type SHADOWDARK.boons.blessing: Blessing SHADOWDARK.boons.oath: Oath -SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Secret SHADOWDARK.chat_card.button.attack: 명중 굴림 SHADOWDARK.chat_card.button.cast_spell: 주문 시전 @@ -188,6 +187,7 @@ SHADOWDARK.chatcard.default: 굴림 SHADOWDARK.class-ability.ability.check: Ability Check SHADOWDARK.class-ability.ability.label: Ability SHADOWDARK.class-ability.available.label: Available +SHADOWDARK.class-ability.boons: Boons SHADOWDARK.class-ability.dc.label: DC SHADOWDARK.class-ability.group.label: 능력 그룹 SHADOWDARK.class-ability.limited-uses.label: Limited Uses? @@ -202,6 +202,7 @@ SHADOWDARK.class.choice_count: Choice Count SHADOWDARK.class.choice: Choice SHADOWDARK.class.fighter: 전사 SHADOWDARK.class.fixed: Fixed +SHADOWDARK.class.has_patron.count.label: Has Patron? SHADOWDARK.class.hit_points.label: HP Die Roll SHADOWDARK.class.language_choices.count.label: Choice Count SHADOWDARK.class.language_choices.label: Language Choices @@ -213,6 +214,7 @@ SHADOWDARK.class.spellcasting_ability.label: 주문시전 능력 SHADOWDARK.class.spellcasting_class.label: Spell Class SHADOWDARK.class.spellcasting.base_difficulty.label: Spellcasting Base DC SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier +SHADOWDARK.class.starting_boons.count.label: Starting Boons SHADOWDARK.class.talent_choices.count.label: 재능 카운트 SHADOWDARK.class.talent_choices.label: 재능 선택 SHADOWDARK.class.talent_choices.prompt: 재능을 지정하세요... @@ -248,6 +250,7 @@ SHADOWDARK.dialog.edit_hp.title: Edit HP SHADOWDARK.dialog.edit_stats.title: Edit Stats SHADOWDARK.dialog.effect.choice.armor: 방어구 유형 선택 SHADOWDARK.dialog.effect.choice.attribute: Choose Attribute +SHADOWDARK.dialog.effect.choice.class: Choose Class SHADOWDARK.dialog.effect.choice.damage_die: Choose Damage Die SHADOWDARK.dialog.effect.choice.lightsource: Choose Light Source SHADOWDARK.dialog.effect.choice.property: Choose Property @@ -300,9 +303,11 @@ SHADOWDARK.dialog.select_deity.prompt: Select Deity... SHADOWDARK.dialog.select_deity.title: 신격 지정 SHADOWDARK.dialog.select_languages.prompt: Select Language... SHADOWDARK.dialog.select_languages.title: 언어 지정 +SHADOWDARK.dialog.select_patron.title: Select Patron SHADOWDARK.dialog.select_weapon_property.prompt: Select Weapon Property... SHADOWDARK.dialog.select_weapon_property.title: 무기 속성 지정 SHADOWDARK.dialog.spell_roll.title: 주문시전 굴림 +SHADOWDARK.dialog.spellbook.open_which_class.title: Choose Available Spellboook SHADOWDARK.dialog.submit: 제출 SHADOWDARK.dialog.tooltip.talent_advantage: 이 굴림에 유리함을 주는 재능이 있습니다 SHADOWDARK.dialog.type_here: Type Here... @@ -338,6 +343,7 @@ SHADOWDARK.error.spells.no_spellcasting_ability_set: 캐릭터의 주문시전 SHADOWDARK.form.section_header.equipment.label: Equipment SHADOWDARK.form.section_header.languages.label: Languages SHADOWDARK.form.section_header.names.label: Names +SHADOWDARK.form.section_header.patron.label: Patron SHADOWDARK.form.section_header.spellcasting.label: Spellcasting SHADOWDARK.form.section_header.talents.label: 재능 SHADOWDARK.hotbar.abilityLost: Ability currently lost @@ -436,6 +442,7 @@ SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: 원거리 명중 굴 SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: 원거리 피해 보너스 SHADOWDARK.item.effect.predefined_effect.spellAdvantage: 주문시전에 유리함 SHADOWDARK.item.effect.predefined_effect.spellCastingBonus: 주문시전 판정 보너스 +SHADOWDARK.item.effect.predefined_effect.spellcastingClasses: Bonus Spellcasting Class SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: Unarmored AC Bonus SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: 무기 명중 굴림 보너스 SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: 무기 명중 피해 보너스 @@ -452,6 +459,7 @@ SHADOWDARK.item.effect.warning.add_effect_without_value: 값을 지정하지 않 SHADOWDARK.item.effect.warning.add_round_item_outside_combat: 전투가 아닐 때 라운드 단위로 지속시간을 세는 효과를 추가할 수 없습니다 SHADOWDARK.item.equipped: 장착 중 SHADOWDARK.item.errors.no_available_ammunition: No ammunition available +SHADOWDARK.item.errors.no_spellcasting_classes: This character does not have a spellcasting class SHADOWDARK.item.inventory_free_carry: 슬롯 소모 안 함 SHADOWDARK.item.inventory_per_slot: 슬롯 당 최대값 SHADOWDARK.item.inventory_quantity: 수량 @@ -574,6 +582,7 @@ SHADOWDARK.npc_move.near: 단거리 SHADOWDARK.npc_move.none: 없음 SHADOWDARK.npc_move.special: 특수 SHADOWDARK.npc_move.triple_near: 단거리 3배 +SHADOWDARK.patron.boons_table.label: Patron Boons Table SHADOWDARK.property.type.option.armor: Armor SHADOWDARK.property.type.option.weapon: Weapon SHADOWDARK.property.type.title: Property Type @@ -705,6 +714,8 @@ SHADOWDARK.sheet.player.languages: 언어 SHADOWDARK.sheet.player.luck: 운 SHADOWDARK.sheet.player.melee_attacks: 근접 공격 SHADOWDARK.sheet.player.name.label: Name +SHADOWDARK.sheet.player.open_spellbook.tooltip: Open Spellbook +SHADOWDARK.sheet.player.patron.tooltip: Your patron is the source of your supernatural gifts SHADOWDARK.sheet.player.ranged_attacks: 원거리 공격 SHADOWDARK.sheet.player.spells_from_items: Spells From Items SHADOWDARK.sheet.player.spells_tier: 등급 @@ -757,6 +768,7 @@ SHADOWDARK.talent.backstab: 배후공격 SHADOWDARK.talent.class.ancestry: 선조 SHADOWDARK.talent.class.class: 클래스 SHADOWDARK.talent.class.level: 레벨 +SHADOWDARK.talent.class.patronBoon: Patron Boon SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: 능력 향상 SHADOWDARK.talent.type.advantage.hp: HP 굴림 유리함 @@ -766,6 +778,7 @@ SHADOWDARK.talent.type.advantage.title: 유리함 보너스 SHADOWDARK.talent.type.armor_bonus: 방어구 AC 보너스 SHADOWDARK.talent.type.armor_mastery: 방어구 숙달 SHADOWDARK.talent.type.backstab_die: 추가 배후공격 주사위 +SHADOWDARK.talent.type.bonus_caster_classes: Bonus Spellcasting Class SHADOWDARK.talent.type.custom: 사용자지정 재능 SHADOWDARK.talent.type.melee_attack_bonus: 근접 명중 굴림 보너스 SHADOWDARK.talent.type.melee_damage_bonus: 근접 피해 굴림 보너스 From 49b057c6b07695a60dfaa9bb34bd20286878573d Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 12:48:20 +0000 Subject: [PATCH 100/182] New translations en.yaml (Swedish) --- i18n/sv.yaml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/i18n/sv.yaml b/i18n/sv.yaml index 33e284ca..86e2ce85 100644 --- a/i18n/sv.yaml +++ b/i18n/sv.yaml @@ -140,7 +140,6 @@ SHADOWDARK.armor.properties.shield: Sköld SHADOWDARK.boon.type.label: Favörtyp SHADOWDARK.boons.blessing: Välsignelse SHADOWDARK.boons.oath: Eder -SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Hemlighet SHADOWDARK.chat_card.button.attack: Rulla attack SHADOWDARK.chat_card.button.cast_spell: Kasta besvärjelse @@ -188,6 +187,7 @@ SHADOWDARK.chatcard.default: Rulla SHADOWDARK.class-ability.ability.check: Ability Check SHADOWDARK.class-ability.ability.label: Förmåga SHADOWDARK.class-ability.available.label: Tillgänglig +SHADOWDARK.class-ability.boons: Boons SHADOWDARK.class-ability.dc.label: DC SHADOWDARK.class-ability.group.label: Förmågegrupp SHADOWDARK.class-ability.limited-uses.label: Begränsade användningar? @@ -202,6 +202,7 @@ SHADOWDARK.class.choice_count: Choice Count SHADOWDARK.class.choice: Choice SHADOWDARK.class.fighter: Krigare SHADOWDARK.class.fixed: Fixed +SHADOWDARK.class.has_patron.count.label: Has Patron? SHADOWDARK.class.hit_points.label: Rulla HP Tärning SHADOWDARK.class.language_choices.count.label: Antal val SHADOWDARK.class.language_choices.label: Språkval @@ -213,6 +214,7 @@ SHADOWDARK.class.spellcasting_ability.label: Besvärjelseförmåga SHADOWDARK.class.spellcasting_class.label: Besvärjelseklass SHADOWDARK.class.spellcasting.base_difficulty.label: Grundsvårighet för besvärjelse SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier +SHADOWDARK.class.starting_boons.count.label: Starting Boons SHADOWDARK.class.talent_choices.count.label: Antal val SHADOWDARK.class.talent_choices.label: Talangval SHADOWDARK.class.talent_choices.prompt: Välj talang... @@ -248,6 +250,7 @@ SHADOWDARK.dialog.edit_hp.title: Edit HP SHADOWDARK.dialog.edit_stats.title: Edit Stats SHADOWDARK.dialog.effect.choice.armor: Välj rustningstyp SHADOWDARK.dialog.effect.choice.attribute: Välj attribut +SHADOWDARK.dialog.effect.choice.class: Choose Class SHADOWDARK.dialog.effect.choice.damage_die: Välj skadetärning SHADOWDARK.dialog.effect.choice.lightsource: Välj ljuskälla SHADOWDARK.dialog.effect.choice.property: Välj egenskap @@ -300,9 +303,11 @@ SHADOWDARK.dialog.select_deity.prompt: Välj gud... SHADOWDARK.dialog.select_deity.title: Välj gud SHADOWDARK.dialog.select_languages.prompt: Välj språk... SHADOWDARK.dialog.select_languages.title: Välj språk +SHADOWDARK.dialog.select_patron.title: Select Patron SHADOWDARK.dialog.select_weapon_property.prompt: Välj vapenegenskap... SHADOWDARK.dialog.select_weapon_property.title: Välj rustningsegenskaper SHADOWDARK.dialog.spell_roll.title: Rulla besvärjelse med +SHADOWDARK.dialog.spellbook.open_which_class.title: Choose Available Spellboook SHADOWDARK.dialog.submit: Skicka SHADOWDARK.dialog.tooltip.talent_advantage: En talang ger dig fördel SHADOWDARK.dialog.type_here: Type Here... @@ -338,6 +343,7 @@ SHADOWDARK.error.spells.no_spellcasting_ability_set: Magiförmåga har inte stä SHADOWDARK.form.section_header.equipment.label: Utrustning SHADOWDARK.form.section_header.languages.label: Språk SHADOWDARK.form.section_header.names.label: Namn +SHADOWDARK.form.section_header.patron.label: Patron SHADOWDARK.form.section_header.spellcasting.label: Besvärjelser SHADOWDARK.form.section_header.talents.label: Talanger SHADOWDARK.hotbar.abilityLost: Förmåga inte tillgänglig @@ -436,6 +442,7 @@ SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: Bonus för Avstånds SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: Bonus för Avståndsskada SHADOWDARK.item.effect.predefined_effect.spellAdvantage: Fördel vid Besvärjelsekast SHADOWDARK.item.effect.predefined_effect.spellCastingBonus: Bonus för Besvärjelsekast +SHADOWDARK.item.effect.predefined_effect.spellcastingClasses: Bonus Spellcasting Class SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: AC Bonus utan rustning SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: Bonus för Vapenattack SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: Bonus för vapenskada @@ -452,6 +459,7 @@ SHADOWDARK.item.effect.warning.add_effect_without_value: Kan inte lägga till ef SHADOWDARK.item.effect.warning.add_round_item_outside_combat: Kan inte lägga till effekter med rundor som varaktighet utanför strid. SHADOWDARK.item.equipped: Buren SHADOWDARK.item.errors.no_available_ammunition: No ammunition available +SHADOWDARK.item.errors.no_spellcasting_classes: This character does not have a spellcasting class SHADOWDARK.item.inventory_free_carry: Fri kapacitet SHADOWDARK.item.inventory_per_slot: Max antal per plats SHADOWDARK.item.inventory_quantity: Kvantitet @@ -574,6 +582,7 @@ SHADOWDARK.npc_move.near: Nära SHADOWDARK.npc_move.none: Ingen SHADOWDARK.npc_move.special: Special SHADOWDARK.npc_move.triple_near: Trippelnära +SHADOWDARK.patron.boons_table.label: Patron Boons Table SHADOWDARK.property.type.option.armor: Rustning SHADOWDARK.property.type.option.weapon: Vapen SHADOWDARK.property.type.title: Typ av egenskap @@ -705,6 +714,8 @@ SHADOWDARK.sheet.player.languages: Språk SHADOWDARK.sheet.player.luck: Tur SHADOWDARK.sheet.player.melee_attacks: Närstridsattacker SHADOWDARK.sheet.player.name.label: Namn +SHADOWDARK.sheet.player.open_spellbook.tooltip: Open Spellbook +SHADOWDARK.sheet.player.patron.tooltip: Your patron is the source of your supernatural gifts SHADOWDARK.sheet.player.ranged_attacks: Avståndsattacker SHADOWDARK.sheet.player.spells_from_items: Spells From Items SHADOWDARK.sheet.player.spells_tier: Grad @@ -757,6 +768,7 @@ SHADOWDARK.talent.backstab: Rygghugg SHADOWDARK.talent.class.ancestry: Ursprung SHADOWDARK.talent.class.class: Klass SHADOWDARK.talent.class.level: Nivå +SHADOWDARK.talent.class.patronBoon: Patron Boon SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Förbättring av förmåga SHADOWDARK.talent.type.advantage.hp: Fördel KP Rullning @@ -766,6 +778,7 @@ SHADOWDARK.talent.type.advantage.title: Fördelsbonus SHADOWDARK.talent.type.armor_bonus: Bonus för Armor Class SHADOWDARK.talent.type.armor_mastery: Rustningsmästare SHADOWDARK.talent.type.backstab_die: Extra tärning bakhåll +SHADOWDARK.talent.type.bonus_caster_classes: Bonus Spellcasting Class SHADOWDARK.talent.type.custom: Egen Talang SHADOWDARK.talent.type.melee_attack_bonus: Bonus för Närstridsattack SHADOWDARK.talent.type.melee_damage_bonus: Bonus för Närstridsskada From 155d0985cb420ae66e49c3f152ca719b87274c81 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 12:48:21 +0000 Subject: [PATCH 101/182] New translations en.yaml (Portuguese, Brazilian) --- i18n/pt_BR.yaml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/i18n/pt_BR.yaml b/i18n/pt_BR.yaml index f4bc80f9..6ba06f6f 100644 --- a/i18n/pt_BR.yaml +++ b/i18n/pt_BR.yaml @@ -140,7 +140,6 @@ SHADOWDARK.armor.properties.shield: Escudo SHADOWDARK.boon.type.label: Tipo de Dádiva SHADOWDARK.boons.blessing: Bênção SHADOWDARK.boons.oath: Juramento -SHADOWDARK.boons.patron: Patron SHADOWDARK.boons.secret: Segredo SHADOWDARK.chat_card.button.attack: Rolar Ataque SHADOWDARK.chat_card.button.cast_spell: Conjurar Magia @@ -188,6 +187,7 @@ SHADOWDARK.chatcard.default: Rolar SHADOWDARK.class-ability.ability.check: Teste de Atributo SHADOWDARK.class-ability.ability.label: Atributo SHADOWDARK.class-ability.available.label: Disponível +SHADOWDARK.class-ability.boons: Boons SHADOWDARK.class-ability.dc.label: CD SHADOWDARK.class-ability.group.label: Grupo de Atributo SHADOWDARK.class-ability.limited-uses.label: Usos Limitados? @@ -202,6 +202,7 @@ SHADOWDARK.class.choice_count: Número de Escolhas SHADOWDARK.class.choice: Escolha SHADOWDARK.class.fighter: Guerreiro SHADOWDARK.class.fixed: Fixo +SHADOWDARK.class.has_patron.count.label: Has Patron? SHADOWDARK.class.hit_points.label: Rolar dado de PV SHADOWDARK.class.language_choices.count.label: Número de Escolhas SHADOWDARK.class.language_choices.label: Opções de Idioma @@ -213,6 +214,7 @@ SHADOWDARK.class.spellcasting_ability.label: Atributo de Conjuração SHADOWDARK.class.spellcasting_class.label: Classe da Magia SHADOWDARK.class.spellcasting.base_difficulty.label: CD Base de Conjuração SHADOWDARK.class.spells_Known.label: Spells Known by Spell Tier +SHADOWDARK.class.starting_boons.count.label: Starting Boons SHADOWDARK.class.talent_choices.count.label: Número de Escolhas SHADOWDARK.class.talent_choices.label: Opções de Talentos SHADOWDARK.class.talent_choices.prompt: Selecionar Talento... @@ -248,6 +250,7 @@ SHADOWDARK.dialog.edit_hp.title: Editar PV SHADOWDARK.dialog.edit_stats.title: Editar Atributos SHADOWDARK.dialog.effect.choice.armor: Escolher Tipo de Armadura SHADOWDARK.dialog.effect.choice.attribute: Escolher Atributo +SHADOWDARK.dialog.effect.choice.class: Choose Class SHADOWDARK.dialog.effect.choice.damage_die: Escolher Dado de Dano SHADOWDARK.dialog.effect.choice.lightsource: Escolher Fonte de Luz SHADOWDARK.dialog.effect.choice.property: Escolher Propriedade @@ -300,9 +303,11 @@ SHADOWDARK.dialog.select_deity.prompt: Selecionar Divindade... SHADOWDARK.dialog.select_deity.title: Escolher Divindade SHADOWDARK.dialog.select_languages.prompt: Selecionar Idioma... SHADOWDARK.dialog.select_languages.title: Escolher idioma +SHADOWDARK.dialog.select_patron.title: Select Patron SHADOWDARK.dialog.select_weapon_property.prompt: Selecionar Propriedade da Arma... SHADOWDARK.dialog.select_weapon_property.title: Escolher Propriedade da Arma SHADOWDARK.dialog.spell_roll.title: Conjurar Magia com +SHADOWDARK.dialog.spellbook.open_which_class.title: Choose Available Spellboook SHADOWDARK.dialog.submit: Enviar SHADOWDARK.dialog.tooltip.talent_advantage: Um talento está lhe dando vantagem nesta rolagem SHADOWDARK.dialog.type_here: Type Here... @@ -338,6 +343,7 @@ SHADOWDARK.error.spells.no_spellcasting_ability_set: Nenhum atributo de conjura SHADOWDARK.form.section_header.equipment.label: Equipamento SHADOWDARK.form.section_header.languages.label: Idiomas SHADOWDARK.form.section_header.names.label: Nomes +SHADOWDARK.form.section_header.patron.label: Patron SHADOWDARK.form.section_header.spellcasting.label: Conjuração SHADOWDARK.form.section_header.talents.label: Talentos SHADOWDARK.hotbar.abilityLost: Atributo perdido no momento @@ -436,6 +442,7 @@ SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus: Bônus de Ataque à SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus: Bônus de Dano à Distância SHADOWDARK.item.effect.predefined_effect.spellAdvantage: Vantagem na Conjuração da Magia SHADOWDARK.item.effect.predefined_effect.spellCastingBonus: Bônus no Teste de Conjuração +SHADOWDARK.item.effect.predefined_effect.spellcastingClasses: Bonus Spellcasting Class SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus: Bônus de CA Sem Armadura SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus: Bônus de Ataque de Arma SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus: Bônus de Dano de Arma @@ -452,6 +459,7 @@ SHADOWDARK.item.effect.warning.add_effect_without_value: Não é possível adici SHADOWDARK.item.effect.warning.add_round_item_outside_combat: Não é possível adicionar efeitos com a duração de tipo Rodadas fora do combate. SHADOWDARK.item.equipped: Equipado SHADOWDARK.item.errors.no_available_ammunition: No ammunition available +SHADOWDARK.item.errors.no_spellcasting_classes: This character does not have a spellcasting class SHADOWDARK.item.inventory_free_carry: Carga Livre SHADOWDARK.item.inventory_per_slot: Máx por Espaço SHADOWDARK.item.inventory_quantity: Quantidade @@ -574,6 +582,7 @@ SHADOWDARK.npc_move.near: Próximo SHADOWDARK.npc_move.none: Nenhum SHADOWDARK.npc_move.special: Especial SHADOWDARK.npc_move.triple_near: Próximo Triplo +SHADOWDARK.patron.boons_table.label: Patron Boons Table SHADOWDARK.property.type.option.armor: Armadura SHADOWDARK.property.type.option.weapon: Arma SHADOWDARK.property.type.title: Tipo da Propriedade @@ -705,6 +714,8 @@ SHADOWDARK.sheet.player.languages: Idiomas SHADOWDARK.sheet.player.luck: Sorte SHADOWDARK.sheet.player.melee_attacks: Ataques Corpo-a-Corpo SHADOWDARK.sheet.player.name.label: Nome +SHADOWDARK.sheet.player.open_spellbook.tooltip: Open Spellbook +SHADOWDARK.sheet.player.patron.tooltip: Your patron is the source of your supernatural gifts SHADOWDARK.sheet.player.ranged_attacks: Ataques à Distância SHADOWDARK.sheet.player.spells_from_items: Magias de Itens SHADOWDARK.sheet.player.spells_tier: Nível @@ -757,6 +768,7 @@ SHADOWDARK.talent.backstab: Ataque Furtivo SHADOWDARK.talent.class.ancestry: Ancestralidade SHADOWDARK.talent.class.class: Classe SHADOWDARK.talent.class.level: Nível +SHADOWDARK.talent.class.patronBoon: Patron Boon SHADOWDARK.talent.level_gained: Level Gained SHADOWDARK.talent.type.ability_improvement: Melhoria de Atributo SHADOWDARK.talent.type.advantage.hp: Vantagem na Rolagem de PV @@ -766,6 +778,7 @@ SHADOWDARK.talent.type.advantage.title: Bônus da Vantagem SHADOWDARK.talent.type.armor_bonus: Bônus de CA da Armadura SHADOWDARK.talent.type.armor_mastery: Maestria de Armadura SHADOWDARK.talent.type.backstab_die: Dado Extra de Ataque Furtivo +SHADOWDARK.talent.type.bonus_caster_classes: Bonus Spellcasting Class SHADOWDARK.talent.type.custom: Talento Customizado SHADOWDARK.talent.type.melee_attack_bonus: Bônus de Ataque Corpo-a-Corpo SHADOWDARK.talent.type.melee_damage_bonus: Bônus de Dano Corpo-a-Corpo From 3106c3dfb25ea1f6cb6dc431115632375c279270 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 2 Nov 2024 13:39:06 +0000 Subject: [PATCH 102/182] closes #930 --- RELEASE_NOTES.md | 1 + system/src/documents/ActorSD.mjs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index d94cc550..19645438 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -16,6 +16,7 @@ * [#906] There's always an extra space between special attack name and effect * [#918] Actor and Item type names missing from i18n data * [#919] Class item template has incorrect default spellcasting class value +* [#930] Class Abilities can't be used if they have no associated skill roll ## Chores * [#911] Replaced compendium art mapping with default Foundry method. diff --git a/system/src/documents/ActorSD.mjs b/system/src/documents/ActorSD.mjs index 4950c4e6..2d1f0a75 100644 --- a/system/src/documents/ActorSD.mjs +++ b/system/src/documents/ActorSD.mjs @@ -1414,7 +1414,7 @@ export default class ActorSD extends Actor { title = game.i18n.localize("SHADOWDARK.chat.use_ability.title"); // does ability use on a roll check? - if (typeof item.system.ability !== "undefined") { + if (item.system.ability !== "") { options = foundry.utils.mergeObject({target: item.system.dc}, options); const result = await this.rollAbility( item.system.ability, From a1d8f9837d45a7193106104b209bff232c0afc09 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 3 Nov 2024 22:38:52 +0000 Subject: [PATCH 103/182] closes #924 --- RELEASE_NOTES.md | 1 + i18n/en.yaml | 8 + system/src/documents/CompendiumsSD.mjs | 6 +- system/src/sheets/PlayerSheetSD.mjs | 7 +- system/src/templates.mjs | 5 + system/src/utils/UtilitySD.mjs | 13 + system/template.json | 3 +- system/templates/actors/player/inventory.hbs | 235 +----------------- .../actors/player/inventory/carried-gear.hbs | 35 +++ .../actors/player/inventory/equipped-gear.hbs | 28 +++ .../actors/player/inventory/item.hbs | 101 ++++++++ .../actors/player/inventory/stashed-gear.hbs | 57 +++++ .../actors/player/inventory/treasure.hbs | 61 +++++ .../weapon/_partials/item-properties.hbs | 1 + 14 files changed, 326 insertions(+), 235 deletions(-) create mode 100644 system/templates/actors/player/inventory/carried-gear.hbs create mode 100644 system/templates/actors/player/inventory/equipped-gear.hbs create mode 100644 system/templates/actors/player/inventory/item.hbs create mode 100644 system/templates/actors/player/inventory/stashed-gear.hbs create mode 100644 system/templates/actors/player/inventory/treasure.hbs diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 19645438..3b916bef 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -24,6 +24,7 @@ - Settings for compendium art mapping are now found in *Settings > Core > Compendium Art* * [#917] Restructure Item sheet templates to make them a bit more manageable +* [#924] Perform an audit of existing templates to ensure we don't have any raw strings that should be i18n-ified * [#927] Migration runner accessing globalThis.duplicate which must now be accessed via foundry.utils.duplicate * [#928] Migrate "Deities" to new "Patrons and Deities" compendium * [#929] Merged Russian language updates from Crowdin diff --git a/i18n/en.yaml b/i18n/en.yaml index b3cac8c9..3d145f45 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -710,6 +710,14 @@ SHADOWDARK.sheet.player.class.label: Class SHADOWDARK.sheet.player.class.tooltip: Your character's job SHADOWDARK.sheet.player.deity.label: Deity SHADOWDARK.sheet.player.deity.tooltip: Your character’s cosmic link to the opposing forces of Law and Chaos, or balanced Neutrality. +SHADOWDARK.sheet.player.inventory.gear.label: Gear +SHADOWDARK.sheet.player.inventory.items.label: Items +SHADOWDARK.sheet.player.inventory.quantity_short.label: Qty +SHADOWDARK.sheet.player.inventory.slots.label: Slots +SHADOWDARK.sheet.player.inventory.stashed_item.label: Stashed Item +SHADOWDARK.sheet.player.inventory.treasure.label: Treasure +SHADOWDARK.sheet.player.inventory.type.label: Type +SHADOWDARK.sheet.player.inventory.value.label: Value SHADOWDARK.sheet.player.languages: Languages SHADOWDARK.sheet.player.luck: Luck SHADOWDARK.sheet.player.melee_attacks: Melee Attacks diff --git a/system/src/documents/CompendiumsSD.mjs b/system/src/documents/CompendiumsSD.mjs index ad7797da..5483c195 100644 --- a/system/src/documents/CompendiumsSD.mjs +++ b/system/src/documents/CompendiumsSD.mjs @@ -55,8 +55,10 @@ export default class CompendiumsSD { } static async ammunition(filterSources=true) { - const documents = - await CompendiumsSD._documents("Item", "Basic", filterSources); + const documents = shadowdark.utils.combineCollection( + await CompendiumsSD._documents("Item", "Basic", filterSources), + await CompendiumsSD._documents("Item", "Weapon", filterSources) + ); return this._collectionFromArray( documents.filter(document => document.system.isAmmunition) diff --git a/system/src/sheets/PlayerSheetSD.mjs b/system/src/sheets/PlayerSheetSD.mjs index de78beff..56015a20 100644 --- a/system/src/sheets/PlayerSheetSD.mjs +++ b/system/src/sheets/PlayerSheetSD.mjs @@ -841,8 +841,13 @@ export default class PlayerSheetSD extends ActorSheetSD { const freeCarrySeen = {}; for (const i of this._sortAllItems(context)) { + i.uuid = `Actor.${this.actor._id}.Item.${i._id}`; + if (i.system.isPhysical && i.type !== "Gem") { - i.showQuantity = i.system.slots.per_slot > 1 ? true : false; + i.showQuantity = + i.system.isAmmunition || i.system.slots.per_slot > 1 + ? true + : false; // We calculate how many slots are used by this item, taking // into account the quantity and any free items. diff --git a/system/src/templates.mjs b/system/src/templates.mjs index d1f77119..2cd682b7 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -31,9 +31,14 @@ export default function() { "systems/shadowdark/templates/actors/player/details/title.hbs", "systems/shadowdark/templates/actors/player/details/xp.hbs", "systems/shadowdark/templates/actors/player/inventory.hbs", + "systems/shadowdark/templates/actors/player/inventory/carried-gear.hbs", "systems/shadowdark/templates/actors/player/inventory/coins.hbs", + "systems/shadowdark/templates/actors/player/inventory/equipped-gear.hbs", "systems/shadowdark/templates/actors/player/inventory/gems.hbs", + "systems/shadowdark/templates/actors/player/inventory/item.hbs", "systems/shadowdark/templates/actors/player/inventory/slots.hbs", + "systems/shadowdark/templates/actors/player/inventory/stashed-gear.hbs", + "systems/shadowdark/templates/actors/player/inventory/treasure.hbs", "systems/shadowdark/templates/actors/player/notes.hbs", "systems/shadowdark/templates/actors/player/spells.hbs", "systems/shadowdark/templates/actors/player/talents.hbs", diff --git a/system/src/utils/UtilitySD.mjs b/system/src/utils/UtilitySD.mjs index 805f8c7f..acfef4a9 100644 --- a/system/src/utils/UtilitySD.mjs +++ b/system/src/utils/UtilitySD.mjs @@ -133,6 +133,19 @@ export default class UtilitySD { return itemList; } + static combineCollection(map1, map2) { + map2.forEach(value => { + if (map1.has(value._id)) { + shadowdark.warn(`Map already contains an item with key ${key}`); + } + else { + map1.set(value._id, value); + } + }); + + return map1; + } + // If this is a new release, show the release notes to the GM the first time // they login static async showNewReleaseNotes() { diff --git a/system/template.json b/system/template.json index 35498a3c..f6f09f41 100644 --- a/system/template.json +++ b/system/template.json @@ -212,6 +212,7 @@ "sp": 0 }, "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "quantity": 1, @@ -257,7 +258,6 @@ "lightSource", "physical" ], - "isAmmunition": false, "scroll": false, "treasure": false }, @@ -535,6 +535,7 @@ "oneHanded": "", "twoHanded": "" }, + "properties": [], "range": "close", "type": "melee", diff --git a/system/templates/actors/player/inventory.hbs b/system/templates/actors/player/inventory.hbs index f71c33fa..79a5afe6 100644 --- a/system/templates/actors/player/inventory.hbs +++ b/system/templates/actors/player/inventory.hbs @@ -1,238 +1,11 @@
    - - -
    {{localize "SHADOWDARK.inventory.equipped_gear"}}
    -
      -
    1. -
      Gear
      -
      Qty
      -
      Slots
      -
      -
    2. - - {{#each inventory.equipped as |item|}} -
    3. -
      - -
      - - {{item.name}} - -
      -
      {{item.slotsUsed}}
      -
      - - - -
      -
    4. - {{/each}} -
    - -
    - - -
    {{localize "SHADOWDARK.inventory.carried_gear"}}
    -
      -
    1. -
      - - Items -
      -
      Qty
      -
      Slots
      -
      -
    2. - - {{#each inventory.carried as |item|}} -
    3. -
      - -
      - - {{item.name}} - {{#if item.lightSourceUsed}} - {{localize "SHADOWDARK.inventory.item.light_used"}} - {{/if}} - - {{#if item.lightSourceUsed}} -
      - {{item.lightSourceProgress}} -
      - {{/if}} -
      - {{#if item.showQuantity}} - {{#if ../owner}} - - - - {{/if}} - {{item.system.quantity}}/{{item.system.slots.per_slot}} - {{#if ../owner}} - - - - {{/if}} - {{else}} -   - {{/if}} - - -
      -
      - {{item.slotsUsed}} -
      -
      - {{#if item.system.canBeEquipped}} - - - - {{/if}} - {{#if item.system.light.isSource}} - - - - {{/if}} - {{#ifEq item.type "Potion"}} - - - - {{/ifEq}} - - - -
      -
    4. - {{/each}} -
    - - -
      -
    1. -
      - - Treasure -
      -
      Value
      -
      Slots
      -
      -
    2. - - {{#each inventory.treasure as |item|}} -
    3. -
      - -
      - - {{item.name}} - -
      {{displayCost item}}
      -
      {{item.slotsUsed}}
      - -
    4. - {{/each}} -
    - -
    - - -
    {{localize "SHADOWDARK.inventory.stashed_gear"}}
    -
      -
    1. -
      Stashed Item
      -
      Type
      -
      Slots
      -
      -
      -
    2. - - {{#each inventory.stashed as |item|}} -
    3. -
      - -
      - - {{item.name}} - {{#if item.lightSourceUsed}} - {{localize 'SHADOWDARK.inventory.item.light_used'}} - {{/if}} - -
      {{item.type}}
      -
      {{item.slotsUsed}}
      -
      - - - -
      -
    4. - {{/each}} -
    -
    + {{> actors/player/inventory/equipped-gear }} + {{> actors/player/inventory/carried-gear }} + {{> actors/player/inventory/stashed-gear }}
    +
    diff --git a/system/templates/actors/player/inventory/carried-gear.hbs b/system/templates/actors/player/inventory/carried-gear.hbs new file mode 100644 index 00000000..e79dfc38 --- /dev/null +++ b/system/templates/actors/player/inventory/carried-gear.hbs @@ -0,0 +1,35 @@ + +
    + {{localize "SHADOWDARK.inventory.carried_gear"}} +
    + +
      +
    1. +
      + + {{localize "SHADOWDARK.sheet.player.inventory.items.label"}} +
      +
      + {{localize "SHADOWDARK.sheet.player.inventory.quantity_short.label"}} +
      +
      + {{localize "SHADOWDARK.sheet.player.inventory.slots.label"}} +
      +
      +
    2. + + {{#each inventory.carried as |item|}} + {{> actors/player/inventory/item + item=item + owner=../owner + }} + {{/each}} +
    + +{{> actors/player/inventory/treasure }} + +
    diff --git a/system/templates/actors/player/inventory/equipped-gear.hbs b/system/templates/actors/player/inventory/equipped-gear.hbs new file mode 100644 index 00000000..ed34fbd8 --- /dev/null +++ b/system/templates/actors/player/inventory/equipped-gear.hbs @@ -0,0 +1,28 @@ + +
    + {{localize "SHADOWDARK.inventory.equipped_gear"}} +
    + +
      +
    1. +
      + {{localize "SHADOWDARK.sheet.player.inventory.gear.label"}} +
      +
      + {{localize "SHADOWDARK.sheet.player.inventory.quantity_short.label"}} +
      +
      + {{localize "SHADOWDARK.sheet.player.inventory.slots.label"}} +
      +
      +
    2. + + {{#each inventory.equipped as |item|}} + {{> actors/player/inventory/item + item=item + owner=../owner + }} + {{/each}} +
    + +
    diff --git a/system/templates/actors/player/inventory/item.hbs b/system/templates/actors/player/inventory/item.hbs new file mode 100644 index 00000000..d2027244 --- /dev/null +++ b/system/templates/actors/player/inventory/item.hbs @@ -0,0 +1,101 @@ +
  • + +
    + +
    + + {{item.name}} + {{#if item.lightSourceUsed}} + {{localize "SHADOWDARK.inventory.item.light_used"}} + {{/if}} + + {{#if item.lightSourceUsed}} +
    + {{item.lightSourceProgress}} +
    + {{/if}} + +
    + {{#if item.showQuantity}} + {{#if owner}} + + + + {{/if}} + + {{item.system.quantity}}/{{item.system.slots.per_slot}} + + {{#if owner}} + + + + {{/if}} + {{else}} +   + {{/if}} +
    + +
    + {{item.slotsUsed}} +
    + +
    + {{#if item.system.canBeEquipped}} + + {{#if item.system.equipped}} + + {{else}} + + {{/if}} + + {{/if}} + {{#if item.system.light.isSource}} + + + + {{/if}} + {{#ifEq item.type "Potion"}} + + + + {{/ifEq}} + {{#unless item.system.equipped}} + + + + {{/unless}} +
    +
  • diff --git a/system/templates/actors/player/inventory/stashed-gear.hbs b/system/templates/actors/player/inventory/stashed-gear.hbs new file mode 100644 index 00000000..9bc01c99 --- /dev/null +++ b/system/templates/actors/player/inventory/stashed-gear.hbs @@ -0,0 +1,57 @@ + +
    + {{localize "SHADOWDARK.inventory.stashed_gear"}} +
    +
      +
    1. +
      + {{localize "SHADOWDARK.sheet.player.inventory.stashed_item.label"}} +
      +
      + {{localize "SHADOWDARK.sheet.player.inventory.type.label"}} +
      +
      + {{localize "SHADOWDARK.sheet.player.inventory.slots.label"}} +
      +
      +
      +
    2. + + {{#each inventory.stashed as |item|}} +
    3. +
      + +
      + + {{item.name}} + {{#if item.lightSourceUsed}} + {{localize 'SHADOWDARK.inventory.item.light_used'}} + {{/if}} + + +
      + {{item.type}} +
      + +
      + {{item.slotsUsed}} +
      + +
      + + + +
      +
    4. + {{/each}} +
    + +
    diff --git a/system/templates/actors/player/inventory/treasure.hbs b/system/templates/actors/player/inventory/treasure.hbs new file mode 100644 index 00000000..e451a0c4 --- /dev/null +++ b/system/templates/actors/player/inventory/treasure.hbs @@ -0,0 +1,61 @@ + + +
      +
    1. +
      + + {{localize "SHADOWDARK.sheet.player.inventory.treasure.label"}} +
      +
      + {{localize "SHADOWDARK.sheet.player.inventory.value.label"}} +
      +
      + {{localize "SHADOWDARK.sheet.player.inventory.slots.label"}} +
      +
      +
    2. + + {{#each inventory.treasure as |item|}} +
    3. +
      + +
      + + {{item.name}} + + +
      + {{displayCost item}} +
      + +
      + {{item.slotsUsed}} +
      + + +
    4. + {{/each}} +
    diff --git a/system/templates/items/weapon/_partials/item-properties.hbs b/system/templates/items/weapon/_partials/item-properties.hbs index db45ef0c..a8dd85d4 100644 --- a/system/templates/items/weapon/_partials/item-properties.hbs +++ b/system/templates/items/weapon/_partials/item-properties.hbs @@ -3,6 +3,7 @@ header-class="light" }}
    + {{> items/_partials/item-properties/ammunition }} {{> items/_partials/item-properties/equipped }} {{> items/_partials/item-properties/magic-item }}
    From 7af9dadf091a1c9e896b31272ce31bc855043deb Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 3 Nov 2024 22:52:05 +0000 Subject: [PATCH 104/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index 5803701e..2a285dfe 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -710,6 +710,14 @@ SHADOWDARK.sheet.player.class.label: Класс SHADOWDARK.sheet.player.class.tooltip: Профессия вашего персонажа SHADOWDARK.sheet.player.deity.label: Божество SHADOWDARK.sheet.player.deity.tooltip: Космическая связь вашего персонажа с противоборствующими силами Закона и Хаоса или сбалансированного Нейтралитета. +SHADOWDARK.sheet.player.inventory.gear.label: Gear +SHADOWDARK.sheet.player.inventory.items.label: Items +SHADOWDARK.sheet.player.inventory.quantity_short.label: Qty +SHADOWDARK.sheet.player.inventory.slots.label: Slots +SHADOWDARK.sheet.player.inventory.stashed_item.label: Stashed Item +SHADOWDARK.sheet.player.inventory.treasure.label: Treasure +SHADOWDARK.sheet.player.inventory.type.label: Type +SHADOWDARK.sheet.player.inventory.value.label: Value SHADOWDARK.sheet.player.languages: Языки SHADOWDARK.sheet.player.luck: Удача SHADOWDARK.sheet.player.melee_attacks: Рукопашные атаки From 11502ed2ff000b1ca396506ee52b49352e045adb Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 3 Nov 2024 22:52:06 +0000 Subject: [PATCH 105/182] New translations en.yaml (French) --- i18n/fr.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/i18n/fr.yaml b/i18n/fr.yaml index 85e61082..ab696673 100644 --- a/i18n/fr.yaml +++ b/i18n/fr.yaml @@ -710,6 +710,14 @@ SHADOWDARK.sheet.player.class.label: Classe SHADOWDARK.sheet.player.class.tooltip: Le métier de votre personnage SHADOWDARK.sheet.player.deity.label: Divinité SHADOWDARK.sheet.player.deity.tooltip: Le lien cosmique de votre personnage avec les forces opposées de la Loi et du Chaos, ou la Neutralité équilibrée. +SHADOWDARK.sheet.player.inventory.gear.label: Gear +SHADOWDARK.sheet.player.inventory.items.label: Items +SHADOWDARK.sheet.player.inventory.quantity_short.label: Qty +SHADOWDARK.sheet.player.inventory.slots.label: Slots +SHADOWDARK.sheet.player.inventory.stashed_item.label: Stashed Item +SHADOWDARK.sheet.player.inventory.treasure.label: Treasure +SHADOWDARK.sheet.player.inventory.type.label: Type +SHADOWDARK.sheet.player.inventory.value.label: Value SHADOWDARK.sheet.player.languages: Langues SHADOWDARK.sheet.player.luck: Chance SHADOWDARK.sheet.player.melee_attacks: Attaque en Mêlée From 6361831d1bef5f6732d4b2b010834cb82bd95bec Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 3 Nov 2024 22:52:08 +0000 Subject: [PATCH 106/182] New translations en.yaml (Spanish) --- i18n/es.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/i18n/es.yaml b/i18n/es.yaml index 61e71332..8b205b95 100644 --- a/i18n/es.yaml +++ b/i18n/es.yaml @@ -710,6 +710,14 @@ SHADOWDARK.sheet.player.class.label: Clase SHADOWDARK.sheet.player.class.tooltip: El trabajo de tu personaje SHADOWDARK.sheet.player.deity.label: Deidad SHADOWDARK.sheet.player.deity.tooltip: El vínculo cósmico de tu personaje con las fuerzas contrarias de la Ley y el Caos, o con la Neutralidad equilibrada. +SHADOWDARK.sheet.player.inventory.gear.label: Gear +SHADOWDARK.sheet.player.inventory.items.label: Items +SHADOWDARK.sheet.player.inventory.quantity_short.label: Qty +SHADOWDARK.sheet.player.inventory.slots.label: Slots +SHADOWDARK.sheet.player.inventory.stashed_item.label: Stashed Item +SHADOWDARK.sheet.player.inventory.treasure.label: Treasure +SHADOWDARK.sheet.player.inventory.type.label: Type +SHADOWDARK.sheet.player.inventory.value.label: Value SHADOWDARK.sheet.player.languages: Idiomas SHADOWDARK.sheet.player.luck: Suerte SHADOWDARK.sheet.player.melee_attacks: Ataque cuerpo a cuerpo From 2d1471290d2423bb8947101909001f7239498d56 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 3 Nov 2024 22:52:09 +0000 Subject: [PATCH 107/182] New translations en.yaml (German) --- i18n/de.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/i18n/de.yaml b/i18n/de.yaml index 4ff6f2dc..469ac9f2 100644 --- a/i18n/de.yaml +++ b/i18n/de.yaml @@ -710,6 +710,14 @@ SHADOWDARK.sheet.player.class.label: Class SHADOWDARK.sheet.player.class.tooltip: Your character's job SHADOWDARK.sheet.player.deity.label: Deity SHADOWDARK.sheet.player.deity.tooltip: Your character’s cosmic link to the opposing forces of Law and Chaos, or balanced Neutrality. +SHADOWDARK.sheet.player.inventory.gear.label: Gear +SHADOWDARK.sheet.player.inventory.items.label: Items +SHADOWDARK.sheet.player.inventory.quantity_short.label: Qty +SHADOWDARK.sheet.player.inventory.slots.label: Slots +SHADOWDARK.sheet.player.inventory.stashed_item.label: Stashed Item +SHADOWDARK.sheet.player.inventory.treasure.label: Treasure +SHADOWDARK.sheet.player.inventory.type.label: Type +SHADOWDARK.sheet.player.inventory.value.label: Value SHADOWDARK.sheet.player.languages: Sprachen SHADOWDARK.sheet.player.luck: Glück SHADOWDARK.sheet.player.melee_attacks: Nahkampfattacken From 1ac810dff7365077fe606828d462d00dd45058cb Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 3 Nov 2024 22:52:10 +0000 Subject: [PATCH 108/182] New translations en.yaml (Finnish) --- i18n/fi.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/i18n/fi.yaml b/i18n/fi.yaml index 28b7acca..157166f4 100644 --- a/i18n/fi.yaml +++ b/i18n/fi.yaml @@ -710,6 +710,14 @@ SHADOWDARK.sheet.player.class.label: Hahmoluokka SHADOWDARK.sheet.player.class.tooltip: Hahmosi työnkuva SHADOWDARK.sheet.player.deity.label: Jumaluus SHADOWDARK.sheet.player.deity.tooltip: Hahmosi kosminen yhteys kaaoksen ja järjestyksen vastakkaisiin voimiin tai neutraaliin tasapainoon. +SHADOWDARK.sheet.player.inventory.gear.label: Gear +SHADOWDARK.sheet.player.inventory.items.label: Items +SHADOWDARK.sheet.player.inventory.quantity_short.label: Qty +SHADOWDARK.sheet.player.inventory.slots.label: Slots +SHADOWDARK.sheet.player.inventory.stashed_item.label: Stashed Item +SHADOWDARK.sheet.player.inventory.treasure.label: Treasure +SHADOWDARK.sheet.player.inventory.type.label: Type +SHADOWDARK.sheet.player.inventory.value.label: Value SHADOWDARK.sheet.player.languages: Kielet SHADOWDARK.sheet.player.luck: Tuuripiste SHADOWDARK.sheet.player.melee_attacks: Lähihyökkäys From 2e3871205c213da009a771ec576456620403f748 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 3 Nov 2024 22:52:11 +0000 Subject: [PATCH 109/182] New translations en.yaml (Korean) --- i18n/ko.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/i18n/ko.yaml b/i18n/ko.yaml index 2d78437d..50298f38 100644 --- a/i18n/ko.yaml +++ b/i18n/ko.yaml @@ -710,6 +710,14 @@ SHADOWDARK.sheet.player.class.label: 클래스 SHADOWDARK.sheet.player.class.tooltip: Your character's job SHADOWDARK.sheet.player.deity.label: 신격 SHADOWDARK.sheet.player.deity.tooltip: Your character’s cosmic link to the opposing forces of Law and Chaos, or balanced Neutrality. +SHADOWDARK.sheet.player.inventory.gear.label: Gear +SHADOWDARK.sheet.player.inventory.items.label: Items +SHADOWDARK.sheet.player.inventory.quantity_short.label: Qty +SHADOWDARK.sheet.player.inventory.slots.label: Slots +SHADOWDARK.sheet.player.inventory.stashed_item.label: Stashed Item +SHADOWDARK.sheet.player.inventory.treasure.label: Treasure +SHADOWDARK.sheet.player.inventory.type.label: Type +SHADOWDARK.sheet.player.inventory.value.label: Value SHADOWDARK.sheet.player.languages: 언어 SHADOWDARK.sheet.player.luck: 운 SHADOWDARK.sheet.player.melee_attacks: 근접 공격 From 68f3a6e5a5e600f79216f16ce9e9782481048276 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 3 Nov 2024 22:52:12 +0000 Subject: [PATCH 110/182] New translations en.yaml (Swedish) --- i18n/sv.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/i18n/sv.yaml b/i18n/sv.yaml index 86e2ce85..e16603da 100644 --- a/i18n/sv.yaml +++ b/i18n/sv.yaml @@ -710,6 +710,14 @@ SHADOWDARK.sheet.player.class.label: Klass SHADOWDARK.sheet.player.class.tooltip: Din karaktärs jobb SHADOWDARK.sheet.player.deity.label: Gud SHADOWDARK.sheet.player.deity.tooltip: Er karaktärs kosmiska länk till de motsatta krafterna av lag och kaos, eller balanserad neutralitet. +SHADOWDARK.sheet.player.inventory.gear.label: Gear +SHADOWDARK.sheet.player.inventory.items.label: Items +SHADOWDARK.sheet.player.inventory.quantity_short.label: Qty +SHADOWDARK.sheet.player.inventory.slots.label: Slots +SHADOWDARK.sheet.player.inventory.stashed_item.label: Stashed Item +SHADOWDARK.sheet.player.inventory.treasure.label: Treasure +SHADOWDARK.sheet.player.inventory.type.label: Type +SHADOWDARK.sheet.player.inventory.value.label: Value SHADOWDARK.sheet.player.languages: Språk SHADOWDARK.sheet.player.luck: Tur SHADOWDARK.sheet.player.melee_attacks: Närstridsattacker From 8005133b2cd244c90b392a12741c9c8daabbb3d2 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 3 Nov 2024 22:52:13 +0000 Subject: [PATCH 111/182] New translations en.yaml (Portuguese, Brazilian) --- i18n/pt_BR.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/i18n/pt_BR.yaml b/i18n/pt_BR.yaml index 6ba06f6f..8d995fe1 100644 --- a/i18n/pt_BR.yaml +++ b/i18n/pt_BR.yaml @@ -710,6 +710,14 @@ SHADOWDARK.sheet.player.class.label: Classe SHADOWDARK.sheet.player.class.tooltip: A ocupação do seu personagem SHADOWDARK.sheet.player.deity.label: Divindade SHADOWDARK.sheet.player.deity.tooltip: A ligação cósmica do seu personagem às forças opostas da ordem e do caos, ou neutralidade equilibrada. +SHADOWDARK.sheet.player.inventory.gear.label: Gear +SHADOWDARK.sheet.player.inventory.items.label: Items +SHADOWDARK.sheet.player.inventory.quantity_short.label: Qty +SHADOWDARK.sheet.player.inventory.slots.label: Slots +SHADOWDARK.sheet.player.inventory.stashed_item.label: Stashed Item +SHADOWDARK.sheet.player.inventory.treasure.label: Treasure +SHADOWDARK.sheet.player.inventory.type.label: Type +SHADOWDARK.sheet.player.inventory.value.label: Value SHADOWDARK.sheet.player.languages: Idiomas SHADOWDARK.sheet.player.luck: Sorte SHADOWDARK.sheet.player.melee_attacks: Ataques Corpo-a-Corpo From 9a5567fc2ca31e71183f8800f34adb8dfa811c01 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 9 Nov 2024 10:40:25 +0000 Subject: [PATCH 112/182] closes #936 --- RELEASE_NOTES.md | 1 + system/templates/apps/character-generator.hbs | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 3b916bef..3fac2169 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -17,6 +17,7 @@ * [#918] Actor and Item type names missing from i18n data * [#919] Class item template has incorrect default spellcasting class value * [#930] Class Abilities can't be used if they have no associated skill roll +* [#936] Character Generator: Don't display empty alignment for Deities that don't have one ## Chores * [#911] Replaced compendium art mapping with default Foundry method. diff --git a/system/templates/apps/character-generator.hbs b/system/templates/apps/character-generator.hbs index bb7d85f7..ccf3cb82 100644 --- a/system/templates/apps/character-generator.hbs +++ b/system/templates/apps/character-generator.hbs @@ -196,7 +196,16 @@ {{#select actor.system.deity}} {{#each deities as |value key|}} - + {{/each}} {{/select}} From ebbcc41fed78153b92ba85118b357754f04415ff Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 10 Nov 2024 02:15:24 +0000 Subject: [PATCH 113/182] update pack data --- .../gear.db/arrows__tDNafhuDDdiVNUMy.json | 45 +++++++++++++++++++ .../bastard_sword__1T8oUkfkBtYTLNF3.json | 1 + .../gear.db/blowgun__FkcwP4cmpdM5pcOm.json | 1 + .../gear.db/bolas__iMu2tHuqGfJ7XjsS.json | 1 + .../gear.db/chainmail__DeqtKQQzI6HTYvV0.json | 1 + .../packs/gear.db/club__JM2XN855QYNhgtre.json | 1 + .../gear.db/crossbow__eeVEJexfirwWzOVu.json | 1 + .../gear.db/curative__VjFsjhM6CZjZ04RT.json | 1 + .../gear.db/dagger__C3mc5OlKPSJNMrng.json | 1 + .../gear.db/foebane__FeoRamUTz5jakMJ8.json | 1 + .../gear.db/greataxe__9Pnhl6SOsbf6qDmt.json | 1 + .../gear.db/greatsword__eqUuf9OGupuGPsBM.json | 1 + .../gear.db/handaxe__3DxwBvjceq0FxcsC.json | 1 + .../gear.db/javelin__B3ZPeUtbChN8lrDm.json | 1 + .../leather_armor__EoTEHXApVDS7rHfw.json | 1 + .../gear.db/longbow__GzA5T0aewhouRsa3.json | 1 + .../gear.db/longsword__ZPUhNMmwXXrtbCXi.json | 1 + .../packs/gear.db/mace__jGZyVuFJnW7QcBFX.json | 1 + .../mithral_chainmail__UDyHeJCreIFZ9y2I.json | 1 + .../mithral_plate_mail__BAJQqFdkN9lGFAyZ.json | 1 + .../morningstar__BThyJ1NC6JcRXxeX.json | 1 + .../gear.db/oil__flask__80bCpXdZcj0Cz1fE.json | 2 +- .../packs/gear.db/pike__4nmzFv43ua8nZDS7.json | 1 + .../gear.db/plate_mail__o0261gnDqGC5hQB1.json | 1 + .../razor_chain__LW3MgxeOaEPPaiY2.json | 1 + .../restorative__QV93CYmgcgJ3UCPf.json | 1 + .../round_shield__RSNMsNqyV39N9C29.json | 1 + .../gear.db/salve__m857P6MI00wAONTp.json | 1 + .../gear.db/scimitar__DKBDkJ3LcRv8scLv.json | 1 + .../gear.db/shield__UWp4WkkiaBMSXYPE.json | 1 + .../gear.db/shortbow__UfHAWj5weH111Bea.json | 1 + .../gear.db/shortsword__KQTWQwznjK80gVEU.json | 1 + .../gear.db/shuriken__sDHZZx1xaCRPmhXY.json | 1 + .../gear.db/sling__FWgFPQDKkBiTMYhd.json | 1 + .../gear.db/spear__brIFMH0sOVmqX02N.json | 1 + .../gear.db/staff__9eTpsuEuzL3Vaxge.json | 1 + .../starting_gear__aDuF91SrY1z6oZoL.json | 10 +++++ .../gear.db/stave__P4aAkDkgwR9zcATw.json | 1 + .../gear.db/stimulant__dBQr9YPyhvwyPm0g.json | 1 + .../gear.db/warhammer__z98LNu4yOIe1B1eg.json | 1 + .../packs/gear.db/whip__GgSheZNm2cOQYpZP.json | 1 + ...character_generator__ZHeVKaoftxDw9ikn.json | 11 +++++ .../asterion__X5FwZjvgzeSXvNDQ.json | 1 + .../bloodlust__Mb7OBENXa5XnClS9.json | 1 + .../boots_of_the_cat__WB4r3ZgJ3TfRBEx5.json | 1 + .../bracers_of_defense__2Ht3xGj1QvHt3znG.json | 1 + .../gauntlets_of_might__FWQK9qFGagcEXCq5.json | 1 + .../ophidian_armor__MyHXrPewu36OmWB6.json | 1 + ...tsword_of_the_thief__98cxnRdtTLv0Onka.json | 1 + .../staff_of_healing__jEeDexWHYy7wKsfa.json | 1 + ...ord_of_the_ancients__ZamB6OED5J1EeU81.json | 1 + .../vigilant__iEbHLvRPWNXo32qm.json | 1 + ...and_of_blind_deafen__yyUwr6H9imWcJ9YS.json | 1 + ...he_scarlet_minotaur__0qbqDCsioL4HWVvW.json | 14 ++++++ .../bastard_sword__eZenY58xIvu8hp2e.json | 1 + .../chainmail__CQZJTP6wf96cvTyG.json | 1 + .../chainmail__WisBTz98q7sjJRkd.json | 1 + .../chainmail__g7Wl2Ad0bsJuSmVo.json | 1 + .../chainmail__nLo8dmIQPbQUk3Dz.json | 1 + .../crossbow__e04loDnEXhVPS9uK.json | 1 + .../crossbow__kJbjoRI9rKem1LGC.json | 1 + .../crossbow__mtW8WkUwBnpqlZ4h.json | 1 + .../dagger__15j8vdCGXCjRSxFw.json | 1 + .../dagger__AwSIYqqvkOthL8y6.json | 1 + .../dagger__HsowE8JPDwcXugdG.json | 1 + .../dagger__LRXImQ7OWk4vOjrl.json | 1 + .../dagger__x3r2C2HW9zycqkJf.json | 1 + .../greataxe__TAct2bpnAxoqzTwy.json | 1 + .../leather_armor__DdpVSB1lae5GxHPL.json | 1 + .../leather_armor__iW34N2oI9HFtVH7H.json | 1 + .../longbow__bKa5QTkhswSY7Aun.json | 1 + .../longsword__dnuYDVd7SgqrfKY9.json | 1 + .../mace__cHZjYo5oMf0HxWTy.json | 1 + .../shield__V5sHlwgAFiLTc8jy.json | 1 + .../shield__Y45CLxN8XbfaUuNo.json | 1 + .../shield__ladhlMWemkIksXHk.json | 1 + .../shield__xGRGAFd9S45a8hh3.json | 1 + .../spear__Q656geesxoWkZ84o.json | 1 + .../spear__veYd8eMEg9lTCHrj.json | 1 + .../staff__5xUXFKSnVONHeZ4N.json | 1 + ...lts!3158XkwQAHF20RJQ.2Jz1fWhg7q4wZ36K.json | 4 +- ...lts!3158XkwQAHF20RJQ.B8b2l91u8CPbWQt1.json | 4 +- ...lts!3158XkwQAHF20RJQ.EfwFok43qDHvPy1a.json | 2 +- ...lts!3158XkwQAHF20RJQ.kO1DsufGDcafDCNl.json | 4 +- ...lts!3158XkwQAHF20RJQ.o8B8hNVMHWYpd2L8.json | 4 +- ...lts!3158XkwQAHF20RJQ.obKp6AhLDL4H0uB5.json | 2 +- ...lts!EOr6HKQIQVuR35Ry.0IxfP0jcqbK9uvkC.json | 15 +++++++ ...lts!EOr6HKQIQVuR35Ry.1LobxByvvgQSx3WF.json | 15 +++++++ ...lts!EOr6HKQIQVuR35Ry.JfzXxuU3fqs2WXr2.json | 15 +++++++ ...lts!EOr6HKQIQVuR35Ry.Klg9RjgM9Lo25IiF.json | 15 +++++++ ...lts!EOr6HKQIQVuR35Ry.LAZiIX2IRAjnNrlc.json | 15 +++++++ ...lts!EOr6HKQIQVuR35Ry.SPRr5Jubauy8JlX1.json | 15 +++++++ ...lts!EOr6HKQIQVuR35Ry.XaDZvcrIQ6UAnFwq.json | 15 +++++++ ...lts!EOr6HKQIQVuR35Ry.iwnV4dX7QBCt94QW.json | 15 +++++++ ...lts!EOr6HKQIQVuR35Ry.mbuYiywUGKlxDlfL.json | 15 +++++++ ...lts!EOr6HKQIQVuR35Ry.plbajel7f7666OTh.json | 15 +++++++ ...lts!EOr6HKQIQVuR35Ry.uFBctEiObrgOv1EJ.json | 15 +++++++ ...lts!EOr6HKQIQVuR35Ry.xYt0fqKJvBue0VMQ.json | 15 +++++++ ...lts!EOr6HKQIQVuR35Ry.yc8Hdt0nbh6COpTk.json | 15 +++++++ ...lts!WKVfMaGkoXe3DGub.6f3Uvv4Q2RmydfBE.json | 15 +++++++ ...lts!WKVfMaGkoXe3DGub.AfLibZH2R2Cly3BH.json | 15 +++++++ ...lts!WKVfMaGkoXe3DGub.Wwce5chUrii2Tji3.json | 15 +++++++ ...lts!WKVfMaGkoXe3DGub.daG7xIVFbKgwTuvb.json | 15 +++++++ ...ll_random_character__IHpIMJy4xdXZnPFy.json | 4 +- ...ting_gear__level_0___EOr6HKQIQVuR35Ry.json | 26 +++++++++++ ...ear__level_0__rolls__WKVfMaGkoXe3DGub.json | 17 +++++++ 106 files changed, 466 insertions(+), 13 deletions(-) create mode 100644 data/packs/gear.db/arrows__tDNafhuDDdiVNUMy.json create mode 100644 data/packs/gear.db/starting_gear__aDuF91SrY1z6oZoL.json create mode 100644 data/packs/macros.db/open_character_generator__ZHeVKaoftxDw9ikn.json create mode 100644 data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.0IxfP0jcqbK9uvkC.json create mode 100644 data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.1LobxByvvgQSx3WF.json create mode 100644 data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.JfzXxuU3fqs2WXr2.json create mode 100644 data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.Klg9RjgM9Lo25IiF.json create mode 100644 data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.LAZiIX2IRAjnNrlc.json create mode 100644 data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.SPRr5Jubauy8JlX1.json create mode 100644 data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.XaDZvcrIQ6UAnFwq.json create mode 100644 data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.iwnV4dX7QBCt94QW.json create mode 100644 data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.mbuYiywUGKlxDlfL.json create mode 100644 data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.plbajel7f7666OTh.json create mode 100644 data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.uFBctEiObrgOv1EJ.json create mode 100644 data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.xYt0fqKJvBue0VMQ.json create mode 100644 data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.yc8Hdt0nbh6COpTk.json create mode 100644 data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.6f3Uvv4Q2RmydfBE.json create mode 100644 data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.AfLibZH2R2Cly3BH.json create mode 100644 data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.Wwce5chUrii2Tji3.json create mode 100644 data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.daG7xIVFbKgwTuvb.json create mode 100644 data/packs/rollable-tables.db/starting_gear__level_0___EOr6HKQIQVuR35Ry.json create mode 100644 data/packs/rollable-tables.db/starting_gear__level_0__rolls__WKVfMaGkoXe3DGub.json diff --git a/data/packs/gear.db/arrows__tDNafhuDDdiVNUMy.json b/data/packs/gear.db/arrows__tDNafhuDDdiVNUMy.json new file mode 100644 index 00000000..d832e9d6 --- /dev/null +++ b/data/packs/gear.db/arrows__tDNafhuDDdiVNUMy.json @@ -0,0 +1,45 @@ +{ + "_id": "tDNafhuDDdiVNUMy", + "_key": "!items!tDNafhuDDdiVNUMy", + "effects": [ + ], + "folder": "aDuF91SrY1z6oZoL", + "img": "icons/weapons/ammunition/arrows-barbed-white.webp", + "name": "Arrows", + "system": { + "broken": false, + "canBeEquipped": false, + "cost": { + "cp": 0, + "gp": 1, + "sp": 0 + }, + "description": "

    Ammunition for shortbows or longbows.

    ", + "equipped": false, + "isAmmunition": true, + "isPhysical": true, + "light": { + "active": false, + "hasBeenUsed": false, + "isSource": false, + "longevityMins": 60, + "remainingSecs": 3600, + "template": "torch" + }, + "magicItem": false, + "predefinedEffects": "", + "quantity": 5, + "scroll": false, + "slots": { + "free_carry": 0, + "per_slot": 20, + "slots_used": 1 + }, + "source": { + "title": "" + }, + "stashed": false, + "treasure": false + }, + "type": "Basic" +} diff --git a/data/packs/gear.db/bastard_sword__1T8oUkfkBtYTLNF3.json b/data/packs/gear.db/bastard_sword__1T8oUkfkBtYTLNF3.json index fe700517..c05bc083 100644 --- a/data/packs/gear.db/bastard_sword__1T8oUkfkBtYTLNF3.json +++ b/data/packs/gear.db/bastard_sword__1T8oUkfkBtYTLNF3.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/blowgun__FkcwP4cmpdM5pcOm.json b/data/packs/gear.db/blowgun__FkcwP4cmpdM5pcOm.json index 38c8803a..693c74a7 100644 --- a/data/packs/gear.db/blowgun__FkcwP4cmpdM5pcOm.json +++ b/data/packs/gear.db/blowgun__FkcwP4cmpdM5pcOm.json @@ -33,6 +33,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/bolas__iMu2tHuqGfJ7XjsS.json b/data/packs/gear.db/bolas__iMu2tHuqGfJ7XjsS.json index 320d7d7c..913b7a33 100644 --- a/data/packs/gear.db/bolas__iMu2tHuqGfJ7XjsS.json +++ b/data/packs/gear.db/bolas__iMu2tHuqGfJ7XjsS.json @@ -33,6 +33,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/chainmail__DeqtKQQzI6HTYvV0.json b/data/packs/gear.db/chainmail__DeqtKQQzI6HTYvV0.json index 7e3c0f78..13f184cc 100644 --- a/data/packs/gear.db/chainmail__DeqtKQQzI6HTYvV0.json +++ b/data/packs/gear.db/chainmail__DeqtKQQzI6HTYvV0.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/club__JM2XN855QYNhgtre.json b/data/packs/gear.db/club__JM2XN855QYNhgtre.json index 3156731b..40984698 100644 --- a/data/packs/gear.db/club__JM2XN855QYNhgtre.json +++ b/data/packs/gear.db/club__JM2XN855QYNhgtre.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/crossbow__eeVEJexfirwWzOVu.json b/data/packs/gear.db/crossbow__eeVEJexfirwWzOVu.json index b4ef1b6a..448b7a93 100644 --- a/data/packs/gear.db/crossbow__eeVEJexfirwWzOVu.json +++ b/data/packs/gear.db/crossbow__eeVEJexfirwWzOVu.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/curative__VjFsjhM6CZjZ04RT.json b/data/packs/gear.db/curative__VjFsjhM6CZjZ04RT.json index 2b2a9a8d..c5d63cbf 100644 --- a/data/packs/gear.db/curative__VjFsjhM6CZjZ04RT.json +++ b/data/packs/gear.db/curative__VjFsjhM6CZjZ04RT.json @@ -22,6 +22,7 @@ "value": "" }, "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/gear.db/dagger__C3mc5OlKPSJNMrng.json b/data/packs/gear.db/dagger__C3mc5OlKPSJNMrng.json index 0bec8b0d..f5ca8dd3 100644 --- a/data/packs/gear.db/dagger__C3mc5OlKPSJNMrng.json +++ b/data/packs/gear.db/dagger__C3mc5OlKPSJNMrng.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/foebane__FeoRamUTz5jakMJ8.json b/data/packs/gear.db/foebane__FeoRamUTz5jakMJ8.json index 445daf0a..8bd731ef 100644 --- a/data/packs/gear.db/foebane__FeoRamUTz5jakMJ8.json +++ b/data/packs/gear.db/foebane__FeoRamUTz5jakMJ8.json @@ -22,6 +22,7 @@ "value": "" }, "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/gear.db/greataxe__9Pnhl6SOsbf6qDmt.json b/data/packs/gear.db/greataxe__9Pnhl6SOsbf6qDmt.json index f1f4abd1..81772956 100644 --- a/data/packs/gear.db/greataxe__9Pnhl6SOsbf6qDmt.json +++ b/data/packs/gear.db/greataxe__9Pnhl6SOsbf6qDmt.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/greatsword__eqUuf9OGupuGPsBM.json b/data/packs/gear.db/greatsword__eqUuf9OGupuGPsBM.json index 066fa0a0..7fb06292 100644 --- a/data/packs/gear.db/greatsword__eqUuf9OGupuGPsBM.json +++ b/data/packs/gear.db/greatsword__eqUuf9OGupuGPsBM.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/handaxe__3DxwBvjceq0FxcsC.json b/data/packs/gear.db/handaxe__3DxwBvjceq0FxcsC.json index e75b6d50..a8134efa 100644 --- a/data/packs/gear.db/handaxe__3DxwBvjceq0FxcsC.json +++ b/data/packs/gear.db/handaxe__3DxwBvjceq0FxcsC.json @@ -33,6 +33,7 @@ }, "description": "

    Finesse (F). You can use your Strength or Dexterity when attacking with this weapon.

    Thrown (Th). You can throw this weapon to make a ranged attack with it using Strength.

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/javelin__B3ZPeUtbChN8lrDm.json b/data/packs/gear.db/javelin__B3ZPeUtbChN8lrDm.json index 857a917c..6eaf77b0 100644 --- a/data/packs/gear.db/javelin__B3ZPeUtbChN8lrDm.json +++ b/data/packs/gear.db/javelin__B3ZPeUtbChN8lrDm.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/leather_armor__EoTEHXApVDS7rHfw.json b/data/packs/gear.db/leather_armor__EoTEHXApVDS7rHfw.json index 7d776209..0acbe1cb 100644 --- a/data/packs/gear.db/leather_armor__EoTEHXApVDS7rHfw.json +++ b/data/packs/gear.db/leather_armor__EoTEHXApVDS7rHfw.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/longbow__GzA5T0aewhouRsa3.json b/data/packs/gear.db/longbow__GzA5T0aewhouRsa3.json index 6f599c5f..1ea7b813 100644 --- a/data/packs/gear.db/longbow__GzA5T0aewhouRsa3.json +++ b/data/packs/gear.db/longbow__GzA5T0aewhouRsa3.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/longsword__ZPUhNMmwXXrtbCXi.json b/data/packs/gear.db/longsword__ZPUhNMmwXXrtbCXi.json index a2f30efc..3ed3174b 100644 --- a/data/packs/gear.db/longsword__ZPUhNMmwXXrtbCXi.json +++ b/data/packs/gear.db/longsword__ZPUhNMmwXXrtbCXi.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/mace__jGZyVuFJnW7QcBFX.json b/data/packs/gear.db/mace__jGZyVuFJnW7QcBFX.json index 79226e6b..4206b1b8 100644 --- a/data/packs/gear.db/mace__jGZyVuFJnW7QcBFX.json +++ b/data/packs/gear.db/mace__jGZyVuFJnW7QcBFX.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/mithral_chainmail__UDyHeJCreIFZ9y2I.json b/data/packs/gear.db/mithral_chainmail__UDyHeJCreIFZ9y2I.json index a798340e..6b8c81bc 100644 --- a/data/packs/gear.db/mithral_chainmail__UDyHeJCreIFZ9y2I.json +++ b/data/packs/gear.db/mithral_chainmail__UDyHeJCreIFZ9y2I.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/mithral_plate_mail__BAJQqFdkN9lGFAyZ.json b/data/packs/gear.db/mithral_plate_mail__BAJQqFdkN9lGFAyZ.json index df8bba4e..928f0904 100644 --- a/data/packs/gear.db/mithral_plate_mail__BAJQqFdkN9lGFAyZ.json +++ b/data/packs/gear.db/mithral_plate_mail__BAJQqFdkN9lGFAyZ.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/morningstar__BThyJ1NC6JcRXxeX.json b/data/packs/gear.db/morningstar__BThyJ1NC6JcRXxeX.json index 6c970a1a..dfc435bb 100644 --- a/data/packs/gear.db/morningstar__BThyJ1NC6JcRXxeX.json +++ b/data/packs/gear.db/morningstar__BThyJ1NC6JcRXxeX.json @@ -33,6 +33,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/oil__flask__80bCpXdZcj0Cz1fE.json b/data/packs/gear.db/oil__flask__80bCpXdZcj0Cz1fE.json index 7fa1e2af..b9a60a8d 100644 --- a/data/packs/gear.db/oil__flask__80bCpXdZcj0Cz1fE.json +++ b/data/packs/gear.db/oil__flask__80bCpXdZcj0Cz1fE.json @@ -5,7 +5,7 @@ ], "folder": "0ws7y8D3IktigkiB", "img": "icons/consumables/potions/potion-bottle-corked-blue.webp", - "name": "Oil, Flask", + "name": "Oil, flask", "system": { "broken": false, "canBeEquipped": false, diff --git a/data/packs/gear.db/pike__4nmzFv43ua8nZDS7.json b/data/packs/gear.db/pike__4nmzFv43ua8nZDS7.json index a36d181b..79c2c3be 100644 --- a/data/packs/gear.db/pike__4nmzFv43ua8nZDS7.json +++ b/data/packs/gear.db/pike__4nmzFv43ua8nZDS7.json @@ -33,6 +33,7 @@ }, "description": "

    Range. 2x Close

    Requires 2 slots.

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/plate_mail__o0261gnDqGC5hQB1.json b/data/packs/gear.db/plate_mail__o0261gnDqGC5hQB1.json index a0df75c4..f79b2d92 100644 --- a/data/packs/gear.db/plate_mail__o0261gnDqGC5hQB1.json +++ b/data/packs/gear.db/plate_mail__o0261gnDqGC5hQB1.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/razor_chain__LW3MgxeOaEPPaiY2.json b/data/packs/gear.db/razor_chain__LW3MgxeOaEPPaiY2.json index c141477c..05d236f6 100644 --- a/data/packs/gear.db/razor_chain__LW3MgxeOaEPPaiY2.json +++ b/data/packs/gear.db/razor_chain__LW3MgxeOaEPPaiY2.json @@ -33,6 +33,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/restorative__QV93CYmgcgJ3UCPf.json b/data/packs/gear.db/restorative__QV93CYmgcgJ3UCPf.json index 9bedd51e..32d8d1a4 100644 --- a/data/packs/gear.db/restorative__QV93CYmgcgJ3UCPf.json +++ b/data/packs/gear.db/restorative__QV93CYmgcgJ3UCPf.json @@ -22,6 +22,7 @@ "value": "" }, "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/gear.db/round_shield__RSNMsNqyV39N9C29.json b/data/packs/gear.db/round_shield__RSNMsNqyV39N9C29.json index 883dca64..ead004e7 100644 --- a/data/packs/gear.db/round_shield__RSNMsNqyV39N9C29.json +++ b/data/packs/gear.db/round_shield__RSNMsNqyV39N9C29.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/salve__m857P6MI00wAONTp.json b/data/packs/gear.db/salve__m857P6MI00wAONTp.json index a0f1f651..30238830 100644 --- a/data/packs/gear.db/salve__m857P6MI00wAONTp.json +++ b/data/packs/gear.db/salve__m857P6MI00wAONTp.json @@ -22,6 +22,7 @@ "value": "" }, "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/gear.db/scimitar__DKBDkJ3LcRv8scLv.json b/data/packs/gear.db/scimitar__DKBDkJ3LcRv8scLv.json index 9fcdd48e..c7e2e1c7 100644 --- a/data/packs/gear.db/scimitar__DKBDkJ3LcRv8scLv.json +++ b/data/packs/gear.db/scimitar__DKBDkJ3LcRv8scLv.json @@ -33,6 +33,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/shield__UWp4WkkiaBMSXYPE.json b/data/packs/gear.db/shield__UWp4WkkiaBMSXYPE.json index eebe34f3..6e03c4fe 100644 --- a/data/packs/gear.db/shield__UWp4WkkiaBMSXYPE.json +++ b/data/packs/gear.db/shield__UWp4WkkiaBMSXYPE.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/shortbow__UfHAWj5weH111Bea.json b/data/packs/gear.db/shortbow__UfHAWj5weH111Bea.json index 303b3028..e7bc82f2 100644 --- a/data/packs/gear.db/shortbow__UfHAWj5weH111Bea.json +++ b/data/packs/gear.db/shortbow__UfHAWj5weH111Bea.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/shortsword__KQTWQwznjK80gVEU.json b/data/packs/gear.db/shortsword__KQTWQwznjK80gVEU.json index 4f13a54d..c0a7e2af 100644 --- a/data/packs/gear.db/shortsword__KQTWQwznjK80gVEU.json +++ b/data/packs/gear.db/shortsword__KQTWQwznjK80gVEU.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/shuriken__sDHZZx1xaCRPmhXY.json b/data/packs/gear.db/shuriken__sDHZZx1xaCRPmhXY.json index d1b8bc47..0660f0e7 100644 --- a/data/packs/gear.db/shuriken__sDHZZx1xaCRPmhXY.json +++ b/data/packs/gear.db/shuriken__sDHZZx1xaCRPmhXY.json @@ -33,6 +33,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/sling__FWgFPQDKkBiTMYhd.json b/data/packs/gear.db/sling__FWgFPQDKkBiTMYhd.json index 7fa40a15..1e4c833c 100644 --- a/data/packs/gear.db/sling__FWgFPQDKkBiTMYhd.json +++ b/data/packs/gear.db/sling__FWgFPQDKkBiTMYhd.json @@ -33,6 +33,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/spear__brIFMH0sOVmqX02N.json b/data/packs/gear.db/spear__brIFMH0sOVmqX02N.json index 1f9cb5fb..e6ac65ca 100644 --- a/data/packs/gear.db/spear__brIFMH0sOVmqX02N.json +++ b/data/packs/gear.db/spear__brIFMH0sOVmqX02N.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/staff__9eTpsuEuzL3Vaxge.json b/data/packs/gear.db/staff__9eTpsuEuzL3Vaxge.json index d5ef736b..0f39e930 100644 --- a/data/packs/gear.db/staff__9eTpsuEuzL3Vaxge.json +++ b/data/packs/gear.db/staff__9eTpsuEuzL3Vaxge.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/starting_gear__aDuF91SrY1z6oZoL.json b/data/packs/gear.db/starting_gear__aDuF91SrY1z6oZoL.json new file mode 100644 index 00000000..4621baf0 --- /dev/null +++ b/data/packs/gear.db/starting_gear__aDuF91SrY1z6oZoL.json @@ -0,0 +1,10 @@ +{ + "_id": "aDuF91SrY1z6oZoL", + "_key": "!folders!aDuF91SrY1z6oZoL", + "color": "#22252b", + "description": "", + "folder": null, + "name": "Starting Gear", + "sorting": "a", + "type": "Item" +} diff --git a/data/packs/gear.db/stave__P4aAkDkgwR9zcATw.json b/data/packs/gear.db/stave__P4aAkDkgwR9zcATw.json index c2edae97..9afe0c3f 100644 --- a/data/packs/gear.db/stave__P4aAkDkgwR9zcATw.json +++ b/data/packs/gear.db/stave__P4aAkDkgwR9zcATw.json @@ -33,6 +33,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/stimulant__dBQr9YPyhvwyPm0g.json b/data/packs/gear.db/stimulant__dBQr9YPyhvwyPm0g.json index 51a97c0e..541dede3 100644 --- a/data/packs/gear.db/stimulant__dBQr9YPyhvwyPm0g.json +++ b/data/packs/gear.db/stimulant__dBQr9YPyhvwyPm0g.json @@ -22,6 +22,7 @@ "value": "" }, "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/gear.db/warhammer__z98LNu4yOIe1B1eg.json b/data/packs/gear.db/warhammer__z98LNu4yOIe1B1eg.json index 293f0a64..14286191 100644 --- a/data/packs/gear.db/warhammer__z98LNu4yOIe1B1eg.json +++ b/data/packs/gear.db/warhammer__z98LNu4yOIe1B1eg.json @@ -35,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/whip__GgSheZNm2cOQYpZP.json b/data/packs/gear.db/whip__GgSheZNm2cOQYpZP.json index f161df5a..5f5f753c 100644 --- a/data/packs/gear.db/whip__GgSheZNm2cOQYpZP.json +++ b/data/packs/gear.db/whip__GgSheZNm2cOQYpZP.json @@ -33,6 +33,7 @@ }, "description": "

    Type: Melee or Ranged.

    Range: Close or Near

    Finesse (F). You may use your STR or DEX when attacking with this weapon.

    Lash (La). When you make a ranged attack with this weapon, it does not leave your grasp.

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/macros.db/open_character_generator__ZHeVKaoftxDw9ikn.json b/data/packs/macros.db/open_character_generator__ZHeVKaoftxDw9ikn.json new file mode 100644 index 00000000..63fe7dd4 --- /dev/null +++ b/data/packs/macros.db/open_character_generator__ZHeVKaoftxDw9ikn.json @@ -0,0 +1,11 @@ +{ + "_id": "ZHeVKaoftxDw9ikn", + "_key": "!macros!ZHeVKaoftxDw9ikn", + "author": "quIOb6ZrdKRqmDrf", + "command": "/**\n ****************************************************************\n * This macro can be used to open the Character Generator\n ***************************************************************/\n\nnew shadowdark.apps.CharacterGeneratorSD().render(true);", + "folder": null, + "img": "icons/environment/people/group.webp", + "name": "Open Character Generator", + "scope": "global", + "type": "script" +} diff --git a/data/packs/magic-items.db/asterion__X5FwZjvgzeSXvNDQ.json b/data/packs/magic-items.db/asterion__X5FwZjvgzeSXvNDQ.json index 433e7356..10e9805c 100644 --- a/data/packs/magic-items.db/asterion__X5FwZjvgzeSXvNDQ.json +++ b/data/packs/magic-items.db/asterion__X5FwZjvgzeSXvNDQ.json @@ -38,6 +38,7 @@ }, "description": "

    Benefit. A creature cannot move the wielder against their will.

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/magic-items.db/bloodlust__Mb7OBENXa5XnClS9.json b/data/packs/magic-items.db/bloodlust__Mb7OBENXa5XnClS9.json index 36f6fe25..2223e36b 100644 --- a/data/packs/magic-items.db/bloodlust__Mb7OBENXa5XnClS9.json +++ b/data/packs/magic-items.db/bloodlust__Mb7OBENXa5XnClS9.json @@ -39,6 +39,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/magic-items.db/boots_of_the_cat__WB4r3ZgJ3TfRBEx5.json b/data/packs/magic-items.db/boots_of_the_cat__WB4r3ZgJ3TfRBEx5.json index 2c1f6630..c4d41ac1 100644 --- a/data/packs/magic-items.db/boots_of_the_cat__WB4r3ZgJ3TfRBEx5.json +++ b/data/packs/magic-items.db/boots_of_the_cat__WB4r3ZgJ3TfRBEx5.json @@ -22,6 +22,7 @@ }, "description": "

    Grey, doeskin boots as thin and soft as slippers.

    Benefit. You can jump up to a near distance from a standstill. Your checks to move silently are always easy (DC 9).

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/magic-items.db/bracers_of_defense__2Ht3xGj1QvHt3znG.json b/data/packs/magic-items.db/bracers_of_defense__2Ht3xGj1QvHt3znG.json index bd60d75a..e91f2e79 100644 --- a/data/packs/magic-items.db/bracers_of_defense__2Ht3xGj1QvHt3znG.json +++ b/data/packs/magic-items.db/bracers_of_defense__2Ht3xGj1QvHt3znG.json @@ -25,6 +25,7 @@ }, "description": "

    Steel bracers traced with dwarvish runes of protection.

    Benefit. You get a +1 bonus to your armor class.

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/magic-items.db/gauntlets_of_might__FWQK9qFGagcEXCq5.json b/data/packs/magic-items.db/gauntlets_of_might__FWQK9qFGagcEXCq5.json index 7218f87b..1d91a3c8 100644 --- a/data/packs/magic-items.db/gauntlets_of_might__FWQK9qFGagcEXCq5.json +++ b/data/packs/magic-items.db/gauntlets_of_might__FWQK9qFGagcEXCq5.json @@ -29,6 +29,7 @@ }, "description": "

    Heavy, bronze gauntlets with engravings of Herculean giants.

    Benefit. Your Strength stat becomes 18 (+4) while wearing these gauntlets.

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/magic-items.db/ophidian_armor__MyHXrPewu36OmWB6.json b/data/packs/magic-items.db/ophidian_armor__MyHXrPewu36OmWB6.json index 78072a97..e1b36063 100644 --- a/data/packs/magic-items.db/ophidian_armor__MyHXrPewu36OmWB6.json +++ b/data/packs/magic-items.db/ophidian_armor__MyHXrPewu36OmWB6.json @@ -22,6 +22,7 @@ }, "description": "

    Glistening, smooth leather of dappled emerald scales.

    Bonus. +1 leather armor.

    Benefit. You have advantage on checks to avoid the effects of poison.

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/magic-items.db/shoftsword_of_the_thief__98cxnRdtTLv0Onka.json b/data/packs/magic-items.db/shoftsword_of_the_thief__98cxnRdtTLv0Onka.json index 18558c52..90328031 100644 --- a/data/packs/magic-items.db/shoftsword_of_the_thief__98cxnRdtTLv0Onka.json +++ b/data/packs/magic-items.db/shoftsword_of_the_thief__98cxnRdtTLv0Onka.json @@ -38,6 +38,7 @@ }, "description": "

    A stubby, grey blade riddled with notches and scars.

    Bonus. +1 shortsword. +2 if wielded by a halfling or thief.

    Benefit. Once per day, regain a luck token you just spent.

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/magic-items.db/staff_of_healing__jEeDexWHYy7wKsfa.json b/data/packs/magic-items.db/staff_of_healing__jEeDexWHYy7wKsfa.json index 761452ac..9298ef28 100644 --- a/data/packs/magic-items.db/staff_of_healing__jEeDexWHYy7wKsfa.json +++ b/data/packs/magic-items.db/staff_of_healing__jEeDexWHYy7wKsfa.json @@ -38,6 +38,7 @@ }, "description": "

    A knotted, oak stave with a heavy knurl on one end.

    Bonus. +1 staff.

    Benefit. Once per day, you can touch a creature with the staff to heal it for [[/r 1d6]] hit points.

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/magic-items.db/sword_of_the_ancients__ZamB6OED5J1EeU81.json b/data/packs/magic-items.db/sword_of_the_ancients__ZamB6OED5J1EeU81.json index e67aff02..df8bfd9d 100644 --- a/data/packs/magic-items.db/sword_of_the_ancients__ZamB6OED5J1EeU81.json +++ b/data/packs/magic-items.db/sword_of_the_ancients__ZamB6OED5J1EeU81.json @@ -38,6 +38,7 @@ }, "description": "

    A chipped and rusting blade with an oiled leather grip.

    Bonus. +2 longsword.

    Benefit. The sword is unbreakable and can carve through any material.

    The owner can summon the sword to their hand if it's on the same plane.

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/magic-items.db/vigilant__iEbHLvRPWNXo32qm.json b/data/packs/magic-items.db/vigilant__iEbHLvRPWNXo32qm.json index 2f0794ed..b8fda9c5 100644 --- a/data/packs/magic-items.db/vigilant__iEbHLvRPWNXo32qm.json +++ b/data/packs/magic-items.db/vigilant__iEbHLvRPWNXo32qm.json @@ -38,6 +38,7 @@ }, "description": "

    Benefit. The wielder cannot be surprised.

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/magic-items.db/wand_of_blind_deafen__yyUwr6H9imWcJ9YS.json b/data/packs/magic-items.db/wand_of_blind_deafen__yyUwr6H9imWcJ9YS.json index d7a164b7..500285f9 100644 --- a/data/packs/magic-items.db/wand_of_blind_deafen__yyUwr6H9imWcJ9YS.json +++ b/data/packs/magic-items.db/wand_of_blind_deafen__yyUwr6H9imWcJ9YS.json @@ -36,6 +36,7 @@ }, "description": "

    @UUID[Compendium.shadowdark.spells.ItoZZ0nli29N5d7G]{Blind/Deafen}

    DC 12

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", diff --git a/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json b/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json index 36dfc633..4fd20c7a 100644 --- a/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json +++ b/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json @@ -10057,6 +10057,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", @@ -10188,6 +10189,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "quantity": 1, @@ -10515,6 +10517,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "quantity": 1, @@ -10638,6 +10641,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "quantity": 1, @@ -10694,6 +10698,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "quantity": 1, @@ -10860,6 +10865,7 @@ }, "description": "

    Benefit. A creature cannot move the wielder against their will.

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "properties": [ @@ -10922,6 +10928,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", @@ -10979,6 +10986,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", @@ -11175,6 +11183,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "quantity": 1, @@ -11391,6 +11400,7 @@ }, "description": "

    Silvered longsword with half-moon pommel.

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ @@ -11461,6 +11471,7 @@ }, "description": "

    Scarred mithral shield carved with prowling tiger .

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ @@ -11698,6 +11709,7 @@ }, "description": "

    Benefit. The wielder cannot be surprised.

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "properties": [ @@ -11836,6 +11848,7 @@ }, "description": "

    Grey, doeskin boots as thin and soft as slippers.

    Benefit. You can jump up to a near distance from a standstill. Your checks to move silently are always easy (DC 9).

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ @@ -11914,6 +11927,7 @@ }, "description": "

    @UUID[Compendium.shadowdark.spells.ItoZZ0nli29N5d7G]{Blind/Deafen}

    DC 12

    ", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "properties": [ diff --git a/data/packs/quickstart-pregens.db/bastard_sword__eZenY58xIvu8hp2e.json b/data/packs/quickstart-pregens.db/bastard_sword__eZenY58xIvu8hp2e.json index f82f44fd..9d868b08 100644 --- a/data/packs/quickstart-pregens.db/bastard_sword__eZenY58xIvu8hp2e.json +++ b/data/packs/quickstart-pregens.db/bastard_sword__eZenY58xIvu8hp2e.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/chainmail__CQZJTP6wf96cvTyG.json b/data/packs/quickstart-pregens.db/chainmail__CQZJTP6wf96cvTyG.json index 2a6a44cd..8eb55d55 100644 --- a/data/packs/quickstart-pregens.db/chainmail__CQZJTP6wf96cvTyG.json +++ b/data/packs/quickstart-pregens.db/chainmail__CQZJTP6wf96cvTyG.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/chainmail__WisBTz98q7sjJRkd.json b/data/packs/quickstart-pregens.db/chainmail__WisBTz98q7sjJRkd.json index cb465667..47e0c7f8 100644 --- a/data/packs/quickstart-pregens.db/chainmail__WisBTz98q7sjJRkd.json +++ b/data/packs/quickstart-pregens.db/chainmail__WisBTz98q7sjJRkd.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/chainmail__g7Wl2Ad0bsJuSmVo.json b/data/packs/quickstart-pregens.db/chainmail__g7Wl2Ad0bsJuSmVo.json index b6fce5a7..d4fe6272 100644 --- a/data/packs/quickstart-pregens.db/chainmail__g7Wl2Ad0bsJuSmVo.json +++ b/data/packs/quickstart-pregens.db/chainmail__g7Wl2Ad0bsJuSmVo.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/chainmail__nLo8dmIQPbQUk3Dz.json b/data/packs/quickstart-pregens.db/chainmail__nLo8dmIQPbQUk3Dz.json index 8e3dded9..f46b34ce 100644 --- a/data/packs/quickstart-pregens.db/chainmail__nLo8dmIQPbQUk3Dz.json +++ b/data/packs/quickstart-pregens.db/chainmail__nLo8dmIQPbQUk3Dz.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/crossbow__e04loDnEXhVPS9uK.json b/data/packs/quickstart-pregens.db/crossbow__e04loDnEXhVPS9uK.json index d0067e28..4996eb9e 100644 --- a/data/packs/quickstart-pregens.db/crossbow__e04loDnEXhVPS9uK.json +++ b/data/packs/quickstart-pregens.db/crossbow__e04loDnEXhVPS9uK.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/quickstart-pregens.db/crossbow__kJbjoRI9rKem1LGC.json b/data/packs/quickstart-pregens.db/crossbow__kJbjoRI9rKem1LGC.json index c31c2f30..025f4879 100644 --- a/data/packs/quickstart-pregens.db/crossbow__kJbjoRI9rKem1LGC.json +++ b/data/packs/quickstart-pregens.db/crossbow__kJbjoRI9rKem1LGC.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/quickstart-pregens.db/crossbow__mtW8WkUwBnpqlZ4h.json b/data/packs/quickstart-pregens.db/crossbow__mtW8WkUwBnpqlZ4h.json index cd23dc6d..c9f674bd 100644 --- a/data/packs/quickstart-pregens.db/crossbow__mtW8WkUwBnpqlZ4h.json +++ b/data/packs/quickstart-pregens.db/crossbow__mtW8WkUwBnpqlZ4h.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/quickstart-pregens.db/dagger__15j8vdCGXCjRSxFw.json b/data/packs/quickstart-pregens.db/dagger__15j8vdCGXCjRSxFw.json index 0356b5c0..17c4636d 100644 --- a/data/packs/quickstart-pregens.db/dagger__15j8vdCGXCjRSxFw.json +++ b/data/packs/quickstart-pregens.db/dagger__15j8vdCGXCjRSxFw.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/dagger__AwSIYqqvkOthL8y6.json b/data/packs/quickstart-pregens.db/dagger__AwSIYqqvkOthL8y6.json index 207b4ec8..bcf4bfe8 100644 --- a/data/packs/quickstart-pregens.db/dagger__AwSIYqqvkOthL8y6.json +++ b/data/packs/quickstart-pregens.db/dagger__AwSIYqqvkOthL8y6.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/dagger__HsowE8JPDwcXugdG.json b/data/packs/quickstart-pregens.db/dagger__HsowE8JPDwcXugdG.json index b1adceef..4b0beaca 100644 --- a/data/packs/quickstart-pregens.db/dagger__HsowE8JPDwcXugdG.json +++ b/data/packs/quickstart-pregens.db/dagger__HsowE8JPDwcXugdG.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/dagger__LRXImQ7OWk4vOjrl.json b/data/packs/quickstart-pregens.db/dagger__LRXImQ7OWk4vOjrl.json index 4d1e1c4d..939a999b 100644 --- a/data/packs/quickstart-pregens.db/dagger__LRXImQ7OWk4vOjrl.json +++ b/data/packs/quickstart-pregens.db/dagger__LRXImQ7OWk4vOjrl.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/dagger__x3r2C2HW9zycqkJf.json b/data/packs/quickstart-pregens.db/dagger__x3r2C2HW9zycqkJf.json index 77c957cd..48487420 100644 --- a/data/packs/quickstart-pregens.db/dagger__x3r2C2HW9zycqkJf.json +++ b/data/packs/quickstart-pregens.db/dagger__x3r2C2HW9zycqkJf.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/greataxe__TAct2bpnAxoqzTwy.json b/data/packs/quickstart-pregens.db/greataxe__TAct2bpnAxoqzTwy.json index d3b7cc9a..c3555a80 100644 --- a/data/packs/quickstart-pregens.db/greataxe__TAct2bpnAxoqzTwy.json +++ b/data/packs/quickstart-pregens.db/greataxe__TAct2bpnAxoqzTwy.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/leather_armor__DdpVSB1lae5GxHPL.json b/data/packs/quickstart-pregens.db/leather_armor__DdpVSB1lae5GxHPL.json index b3c6e86c..28dc134f 100644 --- a/data/packs/quickstart-pregens.db/leather_armor__DdpVSB1lae5GxHPL.json +++ b/data/packs/quickstart-pregens.db/leather_armor__DdpVSB1lae5GxHPL.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/leather_armor__iW34N2oI9HFtVH7H.json b/data/packs/quickstart-pregens.db/leather_armor__iW34N2oI9HFtVH7H.json index 80a43662..2c057c60 100644 --- a/data/packs/quickstart-pregens.db/leather_armor__iW34N2oI9HFtVH7H.json +++ b/data/packs/quickstart-pregens.db/leather_armor__iW34N2oI9HFtVH7H.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/longbow__bKa5QTkhswSY7Aun.json b/data/packs/quickstart-pregens.db/longbow__bKa5QTkhswSY7Aun.json index 1ccb8c45..c9cd82ee 100644 --- a/data/packs/quickstart-pregens.db/longbow__bKa5QTkhswSY7Aun.json +++ b/data/packs/quickstart-pregens.db/longbow__bKa5QTkhswSY7Aun.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/quickstart-pregens.db/longsword__dnuYDVd7SgqrfKY9.json b/data/packs/quickstart-pregens.db/longsword__dnuYDVd7SgqrfKY9.json index ab51c16f..ecaec710 100644 --- a/data/packs/quickstart-pregens.db/longsword__dnuYDVd7SgqrfKY9.json +++ b/data/packs/quickstart-pregens.db/longsword__dnuYDVd7SgqrfKY9.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/mace__cHZjYo5oMf0HxWTy.json b/data/packs/quickstart-pregens.db/mace__cHZjYo5oMf0HxWTy.json index 99d92736..fd7d054a 100644 --- a/data/packs/quickstart-pregens.db/mace__cHZjYo5oMf0HxWTy.json +++ b/data/packs/quickstart-pregens.db/mace__cHZjYo5oMf0HxWTy.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/shield__V5sHlwgAFiLTc8jy.json b/data/packs/quickstart-pregens.db/shield__V5sHlwgAFiLTc8jy.json index c4b9619a..d44f4013 100644 --- a/data/packs/quickstart-pregens.db/shield__V5sHlwgAFiLTc8jy.json +++ b/data/packs/quickstart-pregens.db/shield__V5sHlwgAFiLTc8jy.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/shield__Y45CLxN8XbfaUuNo.json b/data/packs/quickstart-pregens.db/shield__Y45CLxN8XbfaUuNo.json index 287653f8..6e76656d 100644 --- a/data/packs/quickstart-pregens.db/shield__Y45CLxN8XbfaUuNo.json +++ b/data/packs/quickstart-pregens.db/shield__Y45CLxN8XbfaUuNo.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/shield__ladhlMWemkIksXHk.json b/data/packs/quickstart-pregens.db/shield__ladhlMWemkIksXHk.json index f18a035a..221b4b81 100644 --- a/data/packs/quickstart-pregens.db/shield__ladhlMWemkIksXHk.json +++ b/data/packs/quickstart-pregens.db/shield__ladhlMWemkIksXHk.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/shield__xGRGAFd9S45a8hh3.json b/data/packs/quickstart-pregens.db/shield__xGRGAFd9S45a8hh3.json index c62f420f..27b44d25 100644 --- a/data/packs/quickstart-pregens.db/shield__xGRGAFd9S45a8hh3.json +++ b/data/packs/quickstart-pregens.db/shield__xGRGAFd9S45a8hh3.json @@ -22,6 +22,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/spear__Q656geesxoWkZ84o.json b/data/packs/quickstart-pregens.db/spear__Q656geesxoWkZ84o.json index 6b50d0d7..a98b7214 100644 --- a/data/packs/quickstart-pregens.db/spear__Q656geesxoWkZ84o.json +++ b/data/packs/quickstart-pregens.db/spear__Q656geesxoWkZ84o.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/spear__veYd8eMEg9lTCHrj.json b/data/packs/quickstart-pregens.db/spear__veYd8eMEg9lTCHrj.json index c41ef021..ef6be069 100644 --- a/data/packs/quickstart-pregens.db/spear__veYd8eMEg9lTCHrj.json +++ b/data/packs/quickstart-pregens.db/spear__veYd8eMEg9lTCHrj.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/staff__5xUXFKSnVONHeZ4N.json b/data/packs/quickstart-pregens.db/staff__5xUXFKSnVONHeZ4N.json index e93780f3..dbd7cf51 100644 --- a/data/packs/quickstart-pregens.db/staff__5xUXFKSnVONHeZ4N.json +++ b/data/packs/quickstart-pregens.db/staff__5xUXFKSnVONHeZ4N.json @@ -36,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.2Jz1fWhg7q4wZ36K.json b/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.2Jz1fWhg7q4wZ36K.json index c4cc1e52..f65b23bd 100644 --- a/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.2Jz1fWhg7q4wZ36K.json +++ b/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.2Jz1fWhg7q4wZ36K.json @@ -6,8 +6,8 @@ "drawn": false, "img": "icons/environment/people/group.webp", "range": [ - 1, - 3 + 3, + 6 ], "text": "Random Gear", "type": "pack", diff --git a/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.B8b2l91u8CPbWQt1.json b/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.B8b2l91u8CPbWQt1.json index 604db858..8818206f 100644 --- a/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.B8b2l91u8CPbWQt1.json +++ b/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.B8b2l91u8CPbWQt1.json @@ -6,8 +6,8 @@ "drawn": false, "img": "icons/environment/people/group.webp", "range": [ - 1, - 5 + 5, + 6 ], "text": "Random Gear", "type": "pack", diff --git a/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.EfwFok43qDHvPy1a.json b/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.EfwFok43qDHvPy1a.json index 8f3d0e8c..6ffcb82a 100644 --- a/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.EfwFok43qDHvPy1a.json +++ b/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.EfwFok43qDHvPy1a.json @@ -7,7 +7,7 @@ "img": "icons/environment/people/group.webp", "range": [ 1, - 1 + 6 ], "text": "Random Gear", "type": "pack", diff --git a/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.kO1DsufGDcafDCNl.json b/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.kO1DsufGDcafDCNl.json index d13b60f3..37e18395 100644 --- a/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.kO1DsufGDcafDCNl.json +++ b/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.kO1DsufGDcafDCNl.json @@ -6,8 +6,8 @@ "drawn": false, "img": "icons/environment/people/group.webp", "range": [ - 1, - 4 + 4, + 6 ], "text": "Random Gear", "type": "pack", diff --git a/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.o8B8hNVMHWYpd2L8.json b/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.o8B8hNVMHWYpd2L8.json index c8341a34..f32cce51 100644 --- a/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.o8B8hNVMHWYpd2L8.json +++ b/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.o8B8hNVMHWYpd2L8.json @@ -6,8 +6,8 @@ "drawn": false, "img": "icons/environment/people/group.webp", "range": [ - 1, - 2 + 2, + 6 ], "text": "Random Gear", "type": "pack", diff --git a/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.obKp6AhLDL4H0uB5.json b/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.obKp6AhLDL4H0uB5.json index 850b2d82..41153fd5 100644 --- a/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.obKp6AhLDL4H0uB5.json +++ b/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.obKp6AhLDL4H0uB5.json @@ -6,7 +6,7 @@ "drawn": false, "img": "icons/environment/people/group.webp", "range": [ - 1, + 6, 6 ], "text": "Random Gear", diff --git a/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.0IxfP0jcqbK9uvkC.json b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.0IxfP0jcqbK9uvkC.json new file mode 100644 index 00000000..ece16cf0 --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.0IxfP0jcqbK9uvkC.json @@ -0,0 +1,15 @@ +{ + "_id": "0IxfP0jcqbK9uvkC", + "_key": "!tables.results!EOr6HKQIQVuR35Ry.0IxfP0jcqbK9uvkC", + "documentCollection": "shadowdark.gear", + "documentId": "JM2XN855QYNhgtre", + "drawn": false, + "img": "icons/weapons/clubs/club-banded-steel.webp", + "range": [ + 11, + 11 + ], + "text": "Club", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.1LobxByvvgQSx3WF.json b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.1LobxByvvgQSx3WF.json new file mode 100644 index 00000000..a612f4d8 --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.1LobxByvvgQSx3WF.json @@ -0,0 +1,15 @@ +{ + "_id": "1LobxByvvgQSx3WF", + "_key": "!tables.results!EOr6HKQIQVuR35Ry.1LobxByvvgQSx3WF", + "documentCollection": "shadowdark.gear", + "documentId": "80bCpXdZcj0Cz1fE", + "drawn": false, + "img": "icons/consumables/potions/potion-bottle-corked-blue.webp", + "range": [ + 6, + 6 + ], + "text": "Oil, Flask", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.JfzXxuU3fqs2WXr2.json b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.JfzXxuU3fqs2WXr2.json new file mode 100644 index 00000000..26d3e562 --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.JfzXxuU3fqs2WXr2.json @@ -0,0 +1,15 @@ +{ + "_id": "JfzXxuU3fqs2WXr2", + "_key": "!tables.results!EOr6HKQIQVuR35Ry.JfzXxuU3fqs2WXr2", + "documentCollection": "shadowdark.gear", + "documentId": "EPndk3DPOEOSvbga", + "drawn": false, + "img": "icons/tools/fasteners/pin-spiked.webp", + "range": [ + 8, + 8 + ], + "text": "Iron Spikes", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.Klg9RjgM9Lo25IiF.json b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.Klg9RjgM9Lo25IiF.json new file mode 100644 index 00000000..3a848dbb --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.Klg9RjgM9Lo25IiF.json @@ -0,0 +1,15 @@ +{ + "_id": "Klg9RjgM9Lo25IiF", + "_key": "!tables.results!EOr6HKQIQVuR35Ry.Klg9RjgM9Lo25IiF", + "documentCollection": "shadowdark.gear", + "documentId": "fqsLWV46NWH0L53l", + "drawn": false, + "img": "icons/tools/fishing/hook-multi-steel-brown.webp", + "range": [ + 10, + 10 + ], + "text": "Grappling Hook", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.LAZiIX2IRAjnNrlc.json b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.LAZiIX2IRAjnNrlc.json new file mode 100644 index 00000000..74b1c220 --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.LAZiIX2IRAjnNrlc.json @@ -0,0 +1,15 @@ +{ + "_id": "LAZiIX2IRAjnNrlc", + "_key": "!tables.results!EOr6HKQIQVuR35Ry.LAZiIX2IRAjnNrlc", + "documentCollection": "shadowdark.gear", + "documentId": "tDNafhuDDdiVNUMy", + "drawn": false, + "img": "icons/weapons/ammunition/arrows-barbed-white.webp", + "range": [ + 4, + 4 + ], + "text": "Arrows", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.SPRr5Jubauy8JlX1.json b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.SPRr5Jubauy8JlX1.json new file mode 100644 index 00000000..112dbf53 --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.SPRr5Jubauy8JlX1.json @@ -0,0 +1,15 @@ +{ + "_id": "SPRr5Jubauy8JlX1", + "_key": "!tables.results!EOr6HKQIQVuR35Ry.SPRr5Jubauy8JlX1", + "documentCollection": "shadowdark.gear", + "documentId": "15X5GTX96y339EKY", + "drawn": false, + "img": "icons/commodities/wood/wood-pole.webp", + "range": [ + 3, + 3 + ], + "text": "Pole", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.XaDZvcrIQ6UAnFwq.json b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.XaDZvcrIQ6UAnFwq.json new file mode 100644 index 00000000..26e62532 --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.XaDZvcrIQ6UAnFwq.json @@ -0,0 +1,15 @@ +{ + "_id": "XaDZvcrIQ6UAnFwq", + "_key": "!tables.results!EOr6HKQIQVuR35Ry.XaDZvcrIQ6UAnFwq", + "documentCollection": "shadowdark.gear", + "documentId": "z3xc7HGysC4ZCU8e", + "drawn": false, + "img": "icons/sundries/lights/torch-purple.webp", + "range": [ + 1, + 1 + ], + "text": "Torch", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.iwnV4dX7QBCt94QW.json b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.iwnV4dX7QBCt94QW.json new file mode 100644 index 00000000..b66d1624 --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.iwnV4dX7QBCt94QW.json @@ -0,0 +1,15 @@ +{ + "_id": "iwnV4dX7QBCt94QW", + "_key": "!tables.results!EOr6HKQIQVuR35Ry.iwnV4dX7QBCt94QW", + "documentCollection": "shadowdark.gear", + "documentId": "UfHAWj5weH111Bea", + "drawn": false, + "img": "icons/weapons/bows/shortbow-recurve-blue.webp", + "range": [ + 4, + 4 + ], + "text": "Shortbow", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.mbuYiywUGKlxDlfL.json b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.mbuYiywUGKlxDlfL.json new file mode 100644 index 00000000..e159d8f8 --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.mbuYiywUGKlxDlfL.json @@ -0,0 +1,15 @@ +{ + "_id": "mbuYiywUGKlxDlfL", + "_key": "!tables.results!EOr6HKQIQVuR35Ry.mbuYiywUGKlxDlfL", + "documentCollection": "shadowdark.gear", + "documentId": "6ZRwVHFlh5QiyZWC", + "drawn": false, + "img": "icons/sundries/survival/rope-wrapped-brown.webp", + "range": [ + 5, + 5 + ], + "text": "Rope, 60'", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.plbajel7f7666OTh.json b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.plbajel7f7666OTh.json new file mode 100644 index 00000000..c3f14b09 --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.plbajel7f7666OTh.json @@ -0,0 +1,15 @@ +{ + "_id": "plbajel7f7666OTh", + "_key": "!tables.results!EOr6HKQIQVuR35Ry.plbajel7f7666OTh", + "documentCollection": "shadowdark.gear", + "documentId": "ERprfuTIFRFEix9G", + "drawn": false, + "img": "icons/commodities/stone/paver-grey.webp", + "range": [ + 9, + 9 + ], + "text": "Flint and Steel", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.uFBctEiObrgOv1EJ.json b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.uFBctEiObrgOv1EJ.json new file mode 100644 index 00000000..b6b0eebc --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.uFBctEiObrgOv1EJ.json @@ -0,0 +1,15 @@ +{ + "_id": "uFBctEiObrgOv1EJ", + "_key": "!tables.results!EOr6HKQIQVuR35Ry.uFBctEiObrgOv1EJ", + "documentCollection": "shadowdark.gear", + "documentId": "C3mc5OlKPSJNMrng", + "drawn": false, + "img": "icons/weapons/daggers/dagger-jeweled-purple.webp", + "range": [ + 2, + 2 + ], + "text": "Dagger", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.xYt0fqKJvBue0VMQ.json b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.xYt0fqKJvBue0VMQ.json new file mode 100644 index 00000000..8aadea33 --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.xYt0fqKJvBue0VMQ.json @@ -0,0 +1,15 @@ +{ + "_id": "xYt0fqKJvBue0VMQ", + "_key": "!tables.results!EOr6HKQIQVuR35Ry.xYt0fqKJvBue0VMQ", + "documentCollection": "shadowdark.gear", + "documentId": "SzpjMuJrhF5nMJ7H", + "drawn": false, + "img": "icons/commodities/metal/fragments-steel-barbed.webp", + "range": [ + 12, + 12 + ], + "text": "Caltrops", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.yc8Hdt0nbh6COpTk.json b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.yc8Hdt0nbh6COpTk.json new file mode 100644 index 00000000..5a80666e --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!EOr6HKQIQVuR35Ry.yc8Hdt0nbh6COpTk.json @@ -0,0 +1,15 @@ +{ + "_id": "yc8Hdt0nbh6COpTk", + "_key": "!tables.results!EOr6HKQIQVuR35Ry.yc8Hdt0nbh6COpTk", + "documentCollection": "shadowdark.gear", + "documentId": "GbO6CggW71qMkgrG", + "drawn": false, + "img": "icons/tools/hand/wrench-steel-grey.webp", + "range": [ + 7, + 7 + ], + "text": "Crowbar", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.6f3Uvv4Q2RmydfBE.json b/data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.6f3Uvv4Q2RmydfBE.json new file mode 100644 index 00000000..c86e2b46 --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.6f3Uvv4Q2RmydfBE.json @@ -0,0 +1,15 @@ +{ + "_id": "6f3Uvv4Q2RmydfBE", + "_key": "!tables.results!WKVfMaGkoXe3DGub.6f3Uvv4Q2RmydfBE", + "documentCollection": "shadowdark.rollable-tables", + "documentId": "EOr6HKQIQVuR35Ry", + "drawn": false, + "img": "icons/environment/people/group.webp", + "range": [ + 1, + 4 + ], + "text": "Starting Gear (Level 0)", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.AfLibZH2R2Cly3BH.json b/data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.AfLibZH2R2Cly3BH.json new file mode 100644 index 00000000..bcebecc7 --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.AfLibZH2R2Cly3BH.json @@ -0,0 +1,15 @@ +{ + "_id": "AfLibZH2R2Cly3BH", + "_key": "!tables.results!WKVfMaGkoXe3DGub.AfLibZH2R2Cly3BH", + "documentCollection": "shadowdark.rollable-tables", + "documentId": "EOr6HKQIQVuR35Ry", + "drawn": false, + "img": "icons/environment/people/group.webp", + "range": [ + 2, + 4 + ], + "text": "Starting Gear (Level 0)", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.Wwce5chUrii2Tji3.json b/data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.Wwce5chUrii2Tji3.json new file mode 100644 index 00000000..340865f6 --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.Wwce5chUrii2Tji3.json @@ -0,0 +1,15 @@ +{ + "_id": "Wwce5chUrii2Tji3", + "_key": "!tables.results!WKVfMaGkoXe3DGub.Wwce5chUrii2Tji3", + "documentCollection": "shadowdark.rollable-tables", + "documentId": "EOr6HKQIQVuR35Ry", + "drawn": false, + "img": "icons/environment/people/group.webp", + "range": [ + 3, + 4 + ], + "text": "Starting Gear (Level 0)", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.daG7xIVFbKgwTuvb.json b/data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.daG7xIVFbKgwTuvb.json new file mode 100644 index 00000000..93bda9ca --- /dev/null +++ b/data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.daG7xIVFbKgwTuvb.json @@ -0,0 +1,15 @@ +{ + "_id": "daG7xIVFbKgwTuvb", + "_key": "!tables.results!WKVfMaGkoXe3DGub.daG7xIVFbKgwTuvb", + "documentCollection": "shadowdark.rollable-tables", + "documentId": "EOr6HKQIQVuR35Ry", + "drawn": false, + "img": "icons/environment/people/group.webp", + "range": [ + 4, + 4 + ], + "text": "Starting Gear (Level 0)", + "type": "pack", + "weight": 1 +} diff --git a/data/packs/rollable-tables.db/roll_random_character__IHpIMJy4xdXZnPFy.json b/data/packs/rollable-tables.db/roll_random_character__IHpIMJy4xdXZnPFy.json index 472d2c59..5bf2830c 100644 --- a/data/packs/rollable-tables.db/roll_random_character__IHpIMJy4xdXZnPFy.json +++ b/data/packs/rollable-tables.db/roll_random_character__IHpIMJy4xdXZnPFy.json @@ -1,13 +1,13 @@ { "_id": "IHpIMJy4xdXZnPFy", "_key": "!tables!IHpIMJy4xdXZnPFy", - "description": "- Pick one Weapon (See Weapons compendium)\n- Pick Leather Armor if you can wear it (See Armor compendium)", + "description": "

    - Pick one Weapon (See Weapons compendium) - Pick Leather Armor if you can wear it (See Armor compendium)

    ", "displayRoll": true, "folder": "dbU918S4CVYyoW7S", "formula": "1", "img": "icons/environment/people/group.webp", "name": "Roll Random Character", - "replacement": true, + "replacement": false, "results": [ "9GrvqyPrqFuLM46C", "EJSTyXp75GftHgdd", diff --git a/data/packs/rollable-tables.db/starting_gear__level_0___EOr6HKQIQVuR35Ry.json b/data/packs/rollable-tables.db/starting_gear__level_0___EOr6HKQIQVuR35Ry.json new file mode 100644 index 00000000..5570b764 --- /dev/null +++ b/data/packs/rollable-tables.db/starting_gear__level_0___EOr6HKQIQVuR35Ry.json @@ -0,0 +1,26 @@ +{ + "_id": "EOr6HKQIQVuR35Ry", + "_key": "!tables!EOr6HKQIQVuR35Ry", + "description": "", + "displayRoll": true, + "folder": "dbU918S4CVYyoW7S", + "formula": "1d12", + "img": "icons/environment/people/group.webp", + "name": "Starting Gear (Level 0)", + "replacement": true, + "results": [ + "XaDZvcrIQ6UAnFwq", + "uFBctEiObrgOv1EJ", + "SPRr5Jubauy8JlX1", + "iwnV4dX7QBCt94QW", + "LAZiIX2IRAjnNrlc", + "mbuYiywUGKlxDlfL", + "1LobxByvvgQSx3WF", + "yc8Hdt0nbh6COpTk", + "JfzXxuU3fqs2WXr2", + "plbajel7f7666OTh", + "Klg9RjgM9Lo25IiF", + "0IxfP0jcqbK9uvkC", + "xYt0fqKJvBue0VMQ" + ] +} diff --git a/data/packs/rollable-tables.db/starting_gear__level_0__rolls__WKVfMaGkoXe3DGub.json b/data/packs/rollable-tables.db/starting_gear__level_0__rolls__WKVfMaGkoXe3DGub.json new file mode 100644 index 00000000..86e5c3d8 --- /dev/null +++ b/data/packs/rollable-tables.db/starting_gear__level_0__rolls__WKVfMaGkoXe3DGub.json @@ -0,0 +1,17 @@ +{ + "_id": "WKVfMaGkoXe3DGub", + "_key": "!tables!WKVfMaGkoXe3DGub", + "description": "", + "displayRoll": false, + "folder": "dbU918S4CVYyoW7S", + "formula": "1d4", + "img": "icons/environment/people/group.webp", + "name": "Starting Gear (Level 0) Rolls", + "replacement": true, + "results": [ + "daG7xIVFbKgwTuvb", + "Wwce5chUrii2Tji3", + "AfLibZH2R2Cly3BH", + "6f3Uvv4Q2RmydfBE" + ] +} From 511e41afc4e636932b86d22ccdd738a5d8ccae75 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 10 Nov 2024 02:15:57 +0000 Subject: [PATCH 114/182] work on adding patron selector to character generator --- data/macros/open-character-generator.js | 6 + i18n/en.yaml | 2 + scss/mixins/_grid.scss | 31 +- system/src/apps/CharacterGeneratorSD.mjs | 1078 +++++++++-------- system/src/templates.mjs | 13 + system/src/utils/UtilitySD.mjs | 17 + system/templates/apps/character-generator.hbs | 26 +- .../_partials/ancestry-talents.hbs | 2 + .../ancestry-talents/choice-edit.hbs | 19 + .../ancestry-talents/choice-view.hbs | 12 + .../_partials/ancestry-talents/choice.hbs | 7 + .../_partials/ancestry-talents/fixed.hbs | 8 + .../character-generator/_partials/armor.hbs | 10 + .../_partials/class-description.hbs | 5 + .../_partials/languages.hbs | 5 + .../_partials/languages/edit.hbs | 52 + .../_partials/languages/language-choice.hbs | 45 + .../_partials/languages/view.hbs | 11 + .../character-generator/_partials/weapons.hbs | 10 + .../apps/character-generator/details.hbs | 66 + system/templates/apps/partials/cg-details.hbs | 165 --- .../apps/partials/cg-language-choice.hbs | 21 - 22 files changed, 905 insertions(+), 706 deletions(-) create mode 100644 data/macros/open-character-generator.js create mode 100644 system/templates/apps/character-generator/_partials/ancestry-talents.hbs create mode 100644 system/templates/apps/character-generator/_partials/ancestry-talents/choice-edit.hbs create mode 100644 system/templates/apps/character-generator/_partials/ancestry-talents/choice-view.hbs create mode 100644 system/templates/apps/character-generator/_partials/ancestry-talents/choice.hbs create mode 100644 system/templates/apps/character-generator/_partials/ancestry-talents/fixed.hbs create mode 100644 system/templates/apps/character-generator/_partials/armor.hbs create mode 100644 system/templates/apps/character-generator/_partials/class-description.hbs create mode 100644 system/templates/apps/character-generator/_partials/languages.hbs create mode 100644 system/templates/apps/character-generator/_partials/languages/edit.hbs create mode 100644 system/templates/apps/character-generator/_partials/languages/language-choice.hbs create mode 100644 system/templates/apps/character-generator/_partials/languages/view.hbs create mode 100644 system/templates/apps/character-generator/_partials/weapons.hbs create mode 100644 system/templates/apps/character-generator/details.hbs delete mode 100644 system/templates/apps/partials/cg-details.hbs delete mode 100644 system/templates/apps/partials/cg-language-choice.hbs diff --git a/data/macros/open-character-generator.js b/data/macros/open-character-generator.js new file mode 100644 index 00000000..3e7c905f --- /dev/null +++ b/data/macros/open-character-generator.js @@ -0,0 +1,6 @@ +/** + **************************************************************** + * This macro can be used to open the Character Generator + ***************************************************************/ + +new shadowdark.apps.CharacterGeneratorSD().render(true); diff --git a/i18n/en.yaml b/i18n/en.yaml index 3d145f45..e078ce77 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -46,6 +46,7 @@ SHADOWDARK.app.light-tracker.turn-out-the-lights: Turn Out the Lights SHADOWDARK.app.loading.body: Searching Distant Lands... SHADOWDARK.app.loading.title: Loading SHADOWDARK.app.npc_attack_ranges.title: Attack Ranges +SHADOWDARK.apps.character-generator.choose: Choose SHADOWDARK.apps.character-generator.create_character: Create Character SHADOWDARK.apps.character-generator.error.create: Failed to create player character {error} SHADOWDARK.apps.character-generator.error.name: Character name cannot be blank @@ -53,6 +54,7 @@ SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: Unable to roll a SHADOWDARK.apps.character-generator.gear: Gear SHADOWDARK.apps.character-generator.gold: Gold SHADOWDARK.apps.character-generator.name: Character Name +SHADOWDARK.apps.character-generator.starting_gear: Starting Gear SHADOWDARK.apps.character-generator.success: Character created SHADOWDARK.apps.character-generator.title: Character Generator SHADOWDARK.apps.character-generator.tooltip: Fully Random Character diff --git a/scss/mixins/_grid.scss b/scss/mixins/_grid.scss index aed32e10..c2f93242 100644 --- a/scss/mixins/_grid.scss +++ b/scss/mixins/_grid.scss @@ -1,4 +1,4 @@ -$columns: 6; +$count: 10; %grid-styles { margin: 0; @@ -9,30 +9,39 @@ $columns: 6; } @mixin grid-colspan { - @for $i from 1 through $columns { + @for $i from 1 through $count { .grid-colspan-#{$i} { grid-column: span #{$i}; } } } -@mixin grid-x-columns { - @for $i from 1 through $columns { - .grid-#{$i}-columns { - @extend %grid-styles; - grid-template-columns: repeat(#{$i}, 1fr); +@mixin grid-colstart { + @for $i from 1 through $count { + .grid-colstart-#{$i} { + grid-column-start: #{$i}; } } } -@mixin grid-colstart { - @for $i from 1 through $columns { - .grid-colstart-#{$i} { - grid-column-start: #{$i}; +@mixin grid-rowspan { + @for $i from 1 through $count { + .grid-rowspan-#{$i} { + grid-row: span #{$i}; + } + } +} + +@mixin grid-x-columns { + @for $i from 1 through $count { + .grid-#{$i}-columns { + @extend %grid-styles; + grid-template-columns: repeat(#{$i}, 1fr); } } } @include grid-colspan; @include grid-colstart; +@include grid-rowspan; @include grid-x-columns; diff --git a/system/src/apps/CharacterGeneratorSD.mjs b/system/src/apps/CharacterGeneratorSD.mjs index a0ce3e7b..7529427c 100644 --- a/system/src/apps/CharacterGeneratorSD.mjs +++ b/system/src/apps/CharacterGeneratorSD.mjs @@ -1,55 +1,43 @@ export default class CharacterGeneratorSD extends FormApplication { + + LEVEL_ZERO_GEAR_TABLE_UUID = "Compendium.shadowdark.rollable-tables.RollTable.WKVfMaGkoXe3DGub"; + + LEVEL_ONE_GEAR_TABLE_UUID = "Compendium.shadowdark.rollable-tables.RollTable.WKVfMaGkoXe3DGub"; + /** * Contains functions for building Shadowdark characters */ constructor(actorUid=null) { super(); - loadTemplates({ - "cg-details": "systems/shadowdark/templates/apps/partials/cg-details.hbs", - "cg-language-choice": "systems/shadowdark/templates/apps/partials/cg-language-choice.hbs", - }); - this.firstrun = true; + this.ancestry = null; this.class = null; + this.patron = null; - this.formData = {}; - this.formData.editing = false; - this.formData.level0 = true; - this.formData.level0Class = {}; - this.formData.classHP = "1"; - this.formData.armor = ["All armor"]; - this.formData.weapons =["All weapons"]; - this.formData.ancestryTalents = { - fixed: [], - choice: [], - selection: [], - }; - this.formData.classDesc = ""; - this.formData.classTalents = { - fixed: [], - choice: [], - selection: [], + this.formData = { + ancestryTalents: { + choice: [], + fixed: [], + selection: [], + }, + armor: ["All armor"], + classDesc: "", + classHP: "1", + classTalents: { + choice: [], + fixed: [], + selection: [], + }, + editing: false, + gearSelected: [], + level0: true, + level0Class: {}, + patronName: "", + weapons: ["All weapons"], }; - // TODO replace with the rolltable for this. Rolltable data needs fixing first. - this.gearTable = [ - {name: "Torch", uuid: "Compendium.shadowdark.gear.Item.z3xc7HGysC4ZCU8e"}, - {name: "Dagger", uuid: "Compendium.shadowdark.gear.Item.C3mc5OlKPSJNMrng"}, - {name: "Pole", uuid: "Compendium.shadowdark.gear.Item.15X5GTX96y339EKY"}, - {name: "Shortbow and 5 arrows", uuid: "Compendium.shadowdark.gear.Item.UfHAWj5weH111Bea"}, - {name: "Rope, 60'", uuid: "Compendium.shadowdark.gear.Item.6ZRwVHFlh5QiyZWC"}, - {name: "Oil, Flask", uuid: "Compendium.shadowdark.gear.Item.80bCpXdZcj0Cz1fE"}, - {name: "Crowbar", uuid: "Compendium.shadowdark.gear.Item.GbO6CggW71qMkgrG"}, - {name: "Iron Spikes (10)", uuid: "Compendium.shadowdark.gear.Item.EPndk3DPOEOSvbga"}, - {name: "Flint and Steel", uuid: "Compendium.shadowdark.gear.Item.ERprfuTIFRFEix9G"}, - {name: "Grappling Hook", uuid: "Compendium.shadowdark.gear.Item.fqsLWV46NWH0L53l"}, - {name: "Club", uuid: "Compendium.shadowdark.gear.Item.JM2XN855QYNhgtre"}, - {name: "Caltrops (one bag)", uuid: "Compendium.shadowdark.gear.Item.SzpjMuJrhF5nMJ7H"}, - ]; - this.formData.gearSelected = []; - // Setup a default actor template this.formData.actor = { name: "", @@ -97,6 +85,7 @@ export default class CharacterGeneratorSD extends FormApplication { deity: "", class: "", languages: [], + patron: "", coins: { gp: 0, sp: 0, @@ -113,6 +102,7 @@ export default class CharacterGeneratorSD extends FormApplication { } + /** @inheritdoc */ static get defaultOptions() { return foundry.utils.mergeObject(super.defaultOptions, { @@ -124,17 +114,20 @@ export default class CharacterGeneratorSD extends FormApplication { }); } + /** @inheritdoc */ get template() { return "systems/shadowdark/templates/apps/character-generator.hbs"; } + /** @inheritdoc */ get title() { const title = game.i18n.localize("SHADOWDARK.apps.character-generator.title"); return `${title}`; } + activateListeners(html) { super.activateListeners(html); @@ -168,61 +161,59 @@ export default class CharacterGeneratorSD extends FormApplication { } - /** @inheritdoc */ - async _updateObject(event, data) { - // expand incoming data for compatibility with formData - let expandedData = foundry.utils.expandObject(data); - // covert incoming stat data from string to int - if (expandedData.actor.system.abilities) { - CONFIG.SHADOWDARK.ABILITY_KEYS.forEach(x => { - let baseInt = parseInt(expandedData.actor.system.abilities[x].base); - expandedData.actor.system.abilities[x].base = baseInt; - }); + static async createActorFromData(characterData, characterItems, userId, level0) { + if (!shadowdark.utils.canCreateCharacter()) return; + + const newActor = await Actor.create(characterData); + + if (!newActor) { + return ui.notifications.error( + game.i18n.format("SHADOWDARK.apps.character-generator.error.create", {error: error}) + ); } - expandedData.level0 = (data.level0 === "true"); + await newActor.createEmbeddedDocuments("Item", characterItems); - // merge incoming data into the main formData object - this.formData = foundry.utils.mergeObject(this.formData, expandedData); + let maxHP = newActor.system.attributes.hp.base + newActor.system.attributes.hp.bonus; + let newHP = maxHP; - // if stats were changed, calculate new modifiers - if (event.target.id === "stat") { - this._calculateModifiers(); - } + await newActor.update({ + "system.attributes.hp.max": maxHP, + "system.attributes.hp.value": newHP, + }); - switch (event.target.name) { - // if class data was changed, load new data and roll hp - case "actor.system.class": - await this._loadClass(event.target.value); - break; + if (userId !== game.userId) { + const ownership = newActor.ownership; + ownership[userId] = CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER; - // if ancestry data was changed, load new data - case "actor.system.ancestry": - await this._loadAncestry(event.target.value); - break; + await newActor.update({ownership}); - // if ancestry talents where choosen, load new data - case "ancestryTalents.selected": - this._addAncestryTalent(event.target.value); - break; + const user = game.users.get(userId); - // if class talents where choosen, load new data - case "classTalents.selected": - this._addClassTalent(event.target.value); - break; + if (user && !user.character) { + // User doesn't have a character assigned, so assign this new + // one they just created + user.update({character: newActor.id}); + } - case "level0": - if (this.formData.level0) { - this.formData.actor.system.class = this.formData.level0Class.uuid; - this._loadClass(this.formData.level0Class.uuid); - } - break; + game.socket.emit("system.shadowdark", { + type: "openNewCharacter", + payload: {actorId: newActor.id, userId, level0}, + }); } + else { - this.render(); + newActor.sheet.render(true); + + return ui.notifications.info( + game.i18n.localize("SHADOWDARK.apps.character-generator.success"), + {permanent: false} + ); + } } + /** @override */ async getData(options) { if (this.firstrun) { @@ -250,6 +241,12 @@ export default class CharacterGeneratorSD extends FormApplication { this.formData.deities = await shadowdark.compendiums.deities(); this.formData.backgrounds = await shadowdark.compendiums.backgrounds(); this.formData.classes = await shadowdark.compendiums.classes(); + this.formData.patrons = await shadowdark.compendiums.patrons(); + + for (const deity of this.formData.deities) { + const alignment = deity.system.alignment === "" ? "?" : deity.system.alignment; + deity.displayName = `${deity.name} (${alignment})`; + } // load all languages in lookup table let languages = await shadowdark.compendiums.languages(); @@ -297,199 +294,217 @@ export default class CharacterGeneratorSD extends FormApplication { return this.formData; } - async _randomizeHandler(event) { - const eventStr = event.target.name; - let tempInt = 0; - - // randomize ancestry - if (eventStr === "randomize-ancestry" || eventStr === "randomize-all") { - // generate an array of ancestries values adding duplicates based on weights - const ancestryArray = []; - this.formData.ancestries.forEach(a => { - for (let i = 0; i < (a?.system.randomWeight || 1); i++) { - ancestryArray.push(a.uuid); - } - }); - // select random array value and load the ancestry - tempInt = this._getRandom(ancestryArray.length); - let ancestryID = ancestryArray[tempInt]; - this.formData.actor.system.ancestry = ancestryID; - await this._loadAncestry(ancestryID, true); - } - - // randomize background - if (eventStr === "randomize-background" || eventStr === "randomize-all") { - tempInt = this._getRandom(this.formData.backgrounds.size); - this.formData.actor.system.background = [...this.formData.backgrounds][tempInt].uuid; - } - - // randomize deities - if (eventStr === "randomize-deity" || eventStr === "randomize-all") { - tempInt = this._getRandom(this.formData.deities.size); - this.formData.actor.system.deity = [...this.formData.deities][tempInt].uuid; - } - - // randomize alignment - if (eventStr === "randomize-alignment" || eventStr === "randomize-all") { - switch (await this._roll("d6")) { - case 1: - case 2: - case 3: - this.formData.actor.system.alignment = "lawful"; - break; - case 4: - case 5: - this.formData.actor.system.alignment = "neutral"; - break; - default: - this.formData.actor.system.alignment = "chaotic"; - } - } - - // randomize class - if (!this.formData.level0 && (eventStr === "randomize-class" || eventStr === "randomize-all")) { - tempInt = this._getRandom(this.formData.classes.size); - let classID = [...this.formData.classes][tempInt].uuid; - this.formData.actor.system.class = classID; - await this._loadClass(classID, true); - } - - // randomize stats - if (eventStr === "randomize-stats" || eventStr === "randomize-all") { - for (const key of CONFIG.SHADOWDARK.ABILITY_KEYS) { - this.formData.actor.system.abilities[key].base = await this._roll("3d6"); - } - this._calculateModifiers(); - } - // randomize name - if (eventStr === "randomize-name" || eventStr === "randomize-all") { - await this._randomizeName(); - } + _addAncestryTalent(uuid) { + let talentObj = this.formData.ancestryTalents.choice.find(x => x.uuid === uuid); + this.formData.ancestryTalents.selection.push(talentObj); + } - // Roll starting gold - if (eventStr === "randomize-gold" || eventStr === "randomize-all") { - let startingGold = await this._roll("2d6")*5; - this.formData.actor.system.coins.gp = startingGold; - } - // Roll starting gear - if (eventStr === "randomize-gear" || eventStr === "randomize-all") { - await this._randomizeGear(); - } + _addClassTalent(uuid) { + let talentObj = this.formData.classTalents.choice.find(x => x.uuid === uuid); + this.formData.classTalents.selection.push(talentObj); + } - shadowdark.utils.diceSound(); - // update all changes - this.render(); + _calculateModifiers() { + CONFIG.SHADOWDARK.ABILITY_KEYS.forEach(x => { + let baseInt = this.formData.actor.system.abilities[x].base; + this.formData.actor.system.abilities[x].mod = Math.floor((baseInt - 10)/2); + }); } - /** - * loads linked class items when class is selected - * @param {string} Uuid - */ - async _loadClass(UuID, randomize) { - // find the class object - let classObj = await this._getClassObject(UuID); - let talentData = []; - // grab fixed talents from class item - if (classObj.system.talents) { - for (const talent of classObj.system.talents) { - let talentObj = await fromUuid(talent); - let fDesc = await this._formatDescription(talentObj.system.description); - talentObj.formattedDescription = fDesc; - talentData.push(talentObj); - } - } - // sort and save fixed talents - this.formData.classTalents.fixed = talentData.sort( - (a, b) => a.name < b.name ? -1 : 1); + _clearAncestryTalents() { + this.formData.ancestryTalents.selection = []; + this.render(); + } - talentData = []; - // grab choice talents from class item - if (classObj.system.talentChoices) { - for (const talent of classObj.system.talentChoices) { - let talentObj = await fromUuid(talent); - let fDesc = await this._formatDescription(talentObj.system.description); - talentObj.formattedDescription = fDesc; - talentData.push(talentObj); - } - } - this.formData.classTalents.choice = talentData; + _clearClassTalents() { this.formData.classTalents.selection = []; + this.render(); + } - if (randomize && (talentData.length > 0)) { - let tempInt = this._getRandom(talentData.length); - this.formData.classTalents.selection.push(talentData[tempInt]); - } - - // load hit dice information and randomize HP - if (classObj.system.hitPoints) { - this.formData.classHP = classObj.system.hitPoints; - } - else { - this.formData.classHP = "1"; - } - // get armor details - let armorData = []; - if (classObj.system.allArmor === true) { - armorData = ["All armor"]; - } - for (const armor of classObj.system.armor) { - armorData.push(fromUuidSync(armor).name); - } - this.formData.armor = armorData; + async _createCharacter() { - // get weapon details - let weaponData = []; - switch (true) { - case classObj.system.allWeapons: - case (classObj.system.allMeleeWeapons && classObj.system.allRangedWeapons): - weaponData = ["All weapons"]; - break; - case classObj.system.allMeleeWeapons: - weaponData = ["All Melee Weapons"]; - break; - case classObj.system.allRangedWeapons: - weaponData = ["All Ranged Weapons"]; - break; - } - for (const weapon of classObj.system.weapons) { - weaponData.push(fromUuidSync(weapon).name); + // sets initial totals on all stats + for (const key of CONFIG.SHADOWDARK.ABILITY_KEYS) { + this.formData.actor.system.abilities[key].total = + this.formData.actor.system.abilities[key].base; } - this.formData.weapons = weaponData; - this.class = classObj; - this.formData.classDesc = await this._formatDescription(classObj.system.description); - await this._loadLanguages(randomize); + const allItems = []; - } + // load all talents and promp player to choose effects + const allTalents = [ + ...this.formData.ancestryTalents.fixed, + ...this.formData.ancestryTalents.selection, + ...this.formData.classTalents.fixed, + ...this.formData.classTalents.selection, + ]; - async _loadAncestry(uuid, randomize) { - // grab static talents from ancestry item - let ancestryObj = await fromUuid(uuid); + // load talents with selection of options + for (const talentItem of allTalents) { + allItems.push(await shadowdark.utils.createItemWithEffect(talentItem)); + } - this.formData.ancestryTalents.selection = []; - this.formData.ancestryTalents.fixed = []; - this.formData.ancestryTalents.choice = []; + // Check for Name + if (this.formData.actor.name === "" ) { + ui.notifications.error( game.i18n.localize("SHADOWDARK.apps.character-generator.error.name")); + return; + } - if (ancestryObj) { - let talentData = []; + // make changes only for level 0 characters + if (this.formData.level0) { + this.formData.actor.system.coins.gp = 0; + this.formData.actor.system.showLevelUp = false; - if (ancestryObj.system.talents) { - for (const talent of ancestryObj.system.talents) { - let talentObj = await fromUuid(talent); - let fDesc = await this._formatDescription(talentObj.system.description); - talentObj.formattedDescription = fDesc; - talentData.push(talentObj); + // add gear to the items list + for (const item of this.formData.gearSelected) { + allItems.push(await fromUuid(item.uuid)); + // add arrows for the shortbow option + if (item.name === "Shortbow and 5 arrows") { + let arrows = await fromUuid("Compendium.shadowdark.gear.Item.XXwA9ZWajYEDmcea"); + let fiveArrows = {...arrows}; + fiveArrows.system.quantity = 5; + allItems.push(fiveArrows); } } + } - // fixed talent choice - if (talentData.length <= ancestryObj.system.talentChoiceCount) { + // Calculate initial HP + let hpConMod = this.formData.actor.system.abilities.con.mod; + if (hpConMod < 1) hpConMod = 1; + this.formData.actor.system.attributes.hp.base = hpConMod; + this.formData.actor.system.attributes.hp.value = hpConMod; + + // add auditlog data + const itemNames = []; + allItems.forEach(x => itemNames.push(x.name)); + let auditLog = {}; + auditLog[0] = { + startingStats: this.formData.actor.system.abilities, + baseHP: this.formData.actor.system.attributes.hp.base, + itemsGained: itemNames, + }; + this.formData.actor.system.auditLog = auditLog; + + // Create the new player character + // + if (shadowdark.utils.canCreateCharacter()) { + CharacterGeneratorSD.createActorFromData( + this.formData.actor, + allItems, + game.userId, + this.formData.level0 + ); + } + else { + game.socket.emit("system.shadowdark", { + type: "createCharacter", + payload: { + characterData: this.formData.actor, + characterItems: allItems, + userId: game.userId, + level0: this.formData.level0, + }, + }); + } + + this.close(); + } + + + _editLanguage() { + if (this.formData.langData.edit === false) { + this.formData.langData.edit = true; + } + else { + this.formData.langData.edit = false; + } + this.render(); + } + + + async _formatDescription(text) { + return await TextEditor.enrichHTML( + jQuery(text.replace(/

    <\/p>/g, " ")).text(), + { + async: false, + cache: false, + } + ); + } + + + async _getClassObject(uuid) { + // find the class object from uuid including looking at level0 + let classObj = {}; + if (uuid === this.formData.level0Class.uuid) { + classObj = this.formData.level0Class; + } + else { + classObj = await fromUuid(uuid); + } + return classObj ?? {}; + } + + + _getRandom(max) { + return Math.floor(Math.random() * max); + } + + + _getRandomizationTasks(eventStr) { + const randomizationTasks = { + "randomize-alignment": false, + "randomize-ancestry": false, + "randomize-background": false, + "randomize-class": false, + "randomize-deity": false, + "randomize-gear": false, + "randomize-gold": false, + "randomize-name": false, + "randomize-stats": false, + }; + + if (eventStr === "randomize-all") { + Object.keys(randomizationTasks).forEach( + key => randomizationTasks[key] = true + ); + } + else { + randomizationTasks[eventStr] = true; + } + + return randomizationTasks; + } + + + async _loadAncestry(uuid, randomize) { + // grab static talents from ancestry item + let ancestryObj = await fromUuid(uuid); + + this.formData.ancestryTalents.selection = []; + this.formData.ancestryTalents.fixed = []; + this.formData.ancestryTalents.choice = []; + + if (ancestryObj) { + let talentData = []; + + if (ancestryObj.system.talents) { + for (const talent of ancestryObj.system.talents) { + let talentObj = await fromUuid(talent); + let fDesc = await this._formatDescription(talentObj.system.description); + talentObj.formattedDescription = fDesc; + talentData.push(talentObj); + } + } + + // fixed talent choice + if (talentData.length <= ancestryObj.system.talentChoiceCount) { this.formData.ancestryTalents.fixed = talentData; } // multiple talent options. @@ -506,7 +521,94 @@ export default class CharacterGeneratorSD extends FormApplication { await this._loadLanguages(randomize); } - async _loadLanguages(randomize) { + + /** + * loads linked class items when class is selected + * @param {string} Uuid + */ + async _loadClass(UuID, randomize) { + // find the class object + let classObj = await this._getClassObject(UuID); + let talentData = []; + // grab fixed talents from class item + if (classObj.system.talents) { + for (const talent of classObj.system.talents) { + let talentObj = await fromUuid(talent); + let fDesc = await this._formatDescription(talentObj.system.description); + talentObj.formattedDescription = fDesc; + talentData.push(talentObj); + } + } + + // sort and save fixed talents + this.formData.classTalents.fixed = talentData.sort( + (a, b) => a.name < b.name ? -1 : 1); + + talentData = []; + + // grab choice talents from class item + if (classObj.system.talentChoices) { + for (const talent of classObj.system.talentChoices) { + let talentObj = await fromUuid(talent); + let fDesc = await this._formatDescription(talentObj.system.description); + talentObj.formattedDescription = fDesc; + talentData.push(talentObj); + } + } + this.formData.classTalents.choice = talentData; + this.formData.classTalents.selection = []; + + if (randomize && (talentData.length > 0)) { + let tempInt = this._getRandom(talentData.length); + this.formData.classTalents.selection.push(talentData[tempInt]); + } + + // load hit dice information and randomize HP + if (classObj.system.hitPoints) { + this.formData.classHP = classObj.system.hitPoints; + } + else { + this.formData.classHP = "1"; + } + + // get armor details + let armorData = []; + if (classObj.system.allArmor === true) { + armorData = ["All armor"]; + } + for (const armor of classObj.system.armor) { + armorData.push(fromUuidSync(armor).name); + } + this.formData.armor = armorData; + + // get weapon details + let weaponData = []; + switch (true) { + case classObj.system.allWeapons: + case (classObj.system.allMeleeWeapons && classObj.system.allRangedWeapons): + weaponData = ["All weapons"]; + break; + case classObj.system.allMeleeWeapons: + weaponData = ["All Melee Weapons"]; + break; + case classObj.system.allRangedWeapons: + weaponData = ["All Ranged Weapons"]; + break; + } + for (const weapon of classObj.system.weapons) { + weaponData.push(fromUuidSync(weapon).name); + } + this.formData.weapons = weaponData; + + this.class = classObj; + this.formData.classDesc = await this._formatDescription(classObj.system.description); + await this._loadLanguages(); + + await this._randomizePatron(); + } + + + async _loadLanguages() { let langData = { fixed: [], togglable: false, @@ -577,320 +679,217 @@ export default class CharacterGeneratorSD extends FormApplication { this.formData.langData.togglable = true; this._setRandomLanguage("rare", this.formData.langData.rare.select); } - } - _updateLangData() { - // adjust selected languages - // TODO figure out how to sort this - this.formData.actor.system.languages = [ - ...this.formData.langData.fixed, - ...this.formData.langData.ancestry.selected, - ...this.formData.langData.class.selected, - ...this.formData.langData.common.selected, - ...this.formData.langData.rare.selected, - ]; - // adjust ancestry choices - if (this.ancestry?.system?.languages) { - this.formData.langData.ancestry.unselected = - this.ancestry.system.languages.selectOptions.filter( - x => !this.formData.actor.system.languages.includes(x)); + async _randomizeAlignment() { + switch (await this._roll("d6")) { + case 1: + case 2: + case 3: + this.formData.actor.system.alignment = "lawful"; + break; + case 4: + case 5: + this.formData.actor.system.alignment = "neutral"; + break; + default: + this.formData.actor.system.alignment = "chaotic"; } + } - // adjust class choices - if (this.class?.system?.languages) { - this.formData.langData.class.unselected = - this.class.system.languages.selectOptions.filter( - x => !this.formData.actor.system.languages.includes(x)); - } - // adjust Common choices - this.formData.langData.common.unselected = this.formData.commonLanguages.filter( - x => !this.formData.actor.system.languages.includes(x)); + async _randomizeAncestry() { + // generate an array of ancestries values adding duplicates based on + // weights + const ancestryArray = []; + this.formData.ancestries.forEach(a => { + for (let i = 0; i < (a?.system.randomWeight || 1); i++) { + ancestryArray.push(a.uuid); + } + }); + // select random array value and load the ancestry + let tempInt = this._getRandom(ancestryArray.length); + let ancestryID = ancestryArray[tempInt]; + this.formData.actor.system.ancestry = ancestryID; + await this._loadAncestry(ancestryID, true); + } - // adjust Rares choices - this.formData.langData.rare.unselected = this.formData.rareLanguages.filter( - x => !this.formData.actor.system.languages.includes(x)); + _randomizeBackground() { + let tempInt = this._getRandom(this.formData.backgrounds.size); + this.formData.actor.system.background = [...this.formData.backgrounds][tempInt].uuid; } - _selectLanguage(uuid, key) { - // remove selected uuid if already in array - if (this.formData.langData[key].selected.includes(uuid)) { - this.formData.langData[key].selected = this.formData.langData[key].selected.filter( - i => i !== uuid); - this.formData.langData[key].full = false; - } - // add uuid to array - else { - this.formData.langData[key].selected.push(uuid); - if (this.formData.langData[key].selected.length >= this.formData.langData[key].select) { - this.formData.langData[key].full = true; - } - } - this._updateLangData(); - this.render(); + async _randomizeClass() { + if (this.formData.level0) return; + + let tempInt = this._getRandom(this.formData.classes.size); + let classID = [...this.formData.classes][tempInt].uuid; + this.formData.actor.system.class = classID; + await this._loadClass(classID, true); } - async _getClassObject(uuid) { - // find the class object from uuid including looking at level0 - let classObj = {}; - if (uuid === this.formData.level0Class.uuid) { - classObj = this.formData.level0Class; - } - else { - classObj = await fromUuid(uuid); - } - return classObj ?? {}; - } - _setRandomLanguage(key, count) { - for (let i = 0; i < count; i++) { - let randomInt = this._getRandom(this.formData.langData[key].unselected.length); - this.formData.langData[key].selected.push( - this.formData.langData[key].unselected[randomInt] - ); - this._updateLangData(); - } - this.formData.langData[key].full = true; + _randomizeDeity() { + let tempInt = this._getRandom(this.formData.deities.size); + this.formData.actor.system.deity = [...this.formData.deities][tempInt].uuid; } - async _randomizeName() { - // Looks up the name table from the ancestry and rolls a random name - if (!this.ancestry) return ui.notifications.warn( - game.i18n.localize("SHADOWDARK.apps.character-generator.error.no_ancestry_for_name"), - {permanent: false} - ); - - const table = await fromUuid(this.ancestry.system.nameTable); - if (table) { - const result = await table.draw({displayChat: false}); - this.formData.actor.name = result.results[0].text; - } - else { - this.formData.actor.name = `Unnamed ${this.ancestry.name}`; - } - } async _randomizeGear() { - this.formData.gearSelected = []; - let tempGearTable = [...this.gearTable]; - let gearCount = await this._roll("d4"); - // get an item from the temp table, then remove that item to prevent duplicates - for (let i = 0; i < gearCount; i++) { - let randomIndex = this._getRandom(12-i); - let gearItem = tempGearTable[randomIndex]; - this.formData.gearSelected.push(gearItem); - tempGearTable.splice(randomIndex, 1); + const table = await fromUuid(this.LEVEL_ZERO_GEAR_TABLE_UUID); + + if (!table) return; + + try { + const draw = await table.draw({displayChat: false}); + + this.formData.gearSelected = ( + await shadowdark.utils.getItemsFromRollResults(draw.results) + ).sort((a, b) => a.name.localeCompare(b.name)); + } + catch(error) { + shadowdark.error(error); } } - _getRandom(max) { - return Math.floor(Math.random() * max); - } - async _roll(formula) { - let roll = await new Roll(formula).evaluate(); - return roll._total; + async _randomizeGold() { + let startingGold = await this._roll("2d6") * 5; + this.formData.actor.system.coins.gp = startingGold; } - _calculateModifiers() { - CONFIG.SHADOWDARK.ABILITY_KEYS.forEach(x => { - let baseInt = this.formData.actor.system.abilities[x].base; - this.formData.actor.system.abilities[x].mod = Math.floor((baseInt - 10)/2); - }); - } - _removeParagraphs(value) { - return value.replace(/(]+?>|

    |<\/p>)/img, ""); - } + async _randomizeHandler(event) { + const eventStr = event.target.name; - async _formatDescription(text) { + const randomizationTasks = this._getRandomizationTasks(eventStr); - const description = await TextEditor.enrichHTML( - jQuery(text.replace(/

    <\/p>/g, " ")).text(), - { - async: false, - cache: false, - } - ); - return description; - } + if (randomizationTasks["randomize-alignment"]) await this._randomizeAlignment(); + if (randomizationTasks["randomize-ancestry"]) await this._randomizeAncestry(); + if (randomizationTasks["randomize-background"]) this._randomizeBackground(); + if (randomizationTasks["randomize-class"]) await this._randomizeClass(); + if (randomizationTasks["randomize-deity"]) this._randomizeDeity(); + if (randomizationTasks["randomize-gear"]) await this._randomizeGear(); + if (randomizationTasks["randomize-gold"]) await this._randomizeGold(); + if (randomizationTasks["randomize-name"]) await this._randomizeName(); + if (randomizationTasks["randomize-stats"]) await this._randomizeStats(); - _addAncestryTalent(uuid) { - let talentObj = this.formData.ancestryTalents.choice.find(x => x.uuid === uuid); - this.formData.ancestryTalents.selection.push(talentObj); - } + shadowdark.utils.diceSound(); - _clearAncestryTalents() { - this.formData.ancestryTalents.selection = []; this.render(); } - _addClassTalent(uuid) { - let talentObj = this.formData.classTalents.choice.find(x => x.uuid === uuid); - this.formData.classTalents.selection.push(talentObj); - } - _clearClassTalents() { - this.formData.classTalents.selection = []; - this.render(); - } + async _randomizeName() { + // Looks up the name table from the ancestry and rolls a random name + if (!this.ancestry) return ui.notifications.warn( + game.i18n.localize("SHADOWDARK.apps.character-generator.error.no_ancestry_for_name"), + {permanent: false} + ); - _editLanguage() { - if (this.formData.langData.edit === false) { - this.formData.langData.edit = true; + const table = await fromUuid(this.ancestry.system.nameTable); + if (table) { + const result = await table.draw({displayChat: false}); + this.formData.actor.name = result.results[0].text; } else { - this.formData.langData.edit = false; + this.formData.actor.name = `Unnamed ${this.ancestry.name}`; } - this.render(); } - static async createActorFromData(characterData, characterItems, userId, level0) { - if (!shadowdark.utils.canCreateCharacter()) return; - const newActor = await Actor.create(characterData); - - if (!newActor) { - return ui.notifications.error( - game.i18n.format("SHADOWDARK.apps.character-generator.error.create", {error: error}) - ); + async _randomizePatron() { + if (this.class.system.patron.required) { + let tempInt = this._getRandom(this.formData.patrons.size); + this.patron = [...this.formData.patrons][tempInt]; + this.formData.actor.system.patron = this.patron.uuid; + this.formData.patronName = this.patron.name; } + else { + this.patron = null; + this.formData.actor.system.patron = null; + this.formData.patronName = ""; + } + } - await newActor.createEmbeddedDocuments("Item", characterItems); - - let maxHP = newActor.system.attributes.hp.base + newActor.system.attributes.hp.bonus; - let newHP = maxHP; - - await newActor.update({ - "system.attributes.hp.max": maxHP, - "system.attributes.hp.value": newHP, - }); - if (userId !== game.userId) { - const ownership = newActor.ownership; - ownership[userId] = CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER; + async _randomizePatronBoons() { + if (!this.patron) return; - await newActor.update({ownership}); + const tableUuid = this.patron?.system?.boonTable ?? ""; + const table = await fromUuid(tableUuid); - const user = game.users.get(userId); + const boons = []; + if (table) { + const boonCount = this.class?.system?.patron?.startingBoons ?? 0; - if (user && !user.character) { - // User doesn't have a character assigned, so assign this new - // one they just created - user.update({character: newActor.id}); + for (let i = 0; i < boonCount; i++) { + const draw = await table.draw({displayChat: false}); + boons.push(await shadowdark.utils.getItemsFromRollResults( + draw.results + )); } - - game.socket.emit("system.shadowdark", { - type: "openNewCharacter", - payload: {actorId: newActor.id, userId, level0}, - }); } - else { - newActor.sheet.render(true); + this.formData.patronBoons = boons; + } - return ui.notifications.info( - game.i18n.localize("SHADOWDARK.apps.character-generator.success"), - {permanent: false} - ); - } + + _removeParagraphs(value) { + return value.replace(/(]+?>|

    |<\/p>)/img, ""); } - async _createCharacter() { - // sets initial totals on all stats + async _randomizeStats() { for (const key of CONFIG.SHADOWDARK.ABILITY_KEYS) { - this.formData.actor.system.abilities[key].total = - this.formData.actor.system.abilities[key].base; + this.formData.actor.system.abilities[key].base = await this._roll("3d6"); } + this._calculateModifiers(); + } - const allItems = []; - // load all talents and promp player to choose effects - const allTalents = [ - ...this.formData.ancestryTalents.fixed, - ...this.formData.ancestryTalents.selection, - ...this.formData.classTalents.fixed, - ...this.formData.classTalents.selection, - ]; + async _roll(formula) { + let roll = await new Roll(formula).evaluate(); + return roll._total; + } - // load talents with selection of options - for (const talentItem of allTalents) { - allItems.push(await shadowdark.utils.createItemWithEffect(talentItem)); - } - // Check for Name - if (this.formData.actor.name === "" ) { - ui.notifications.error( game.i18n.localize("SHADOWDARK.apps.character-generator.error.name")); - return; + _selectLanguage(uuid, key) { + // remove selected uuid if already in array + if (this.formData.langData[key].selected.includes(uuid)) { + this.formData.langData[key].selected = this.formData.langData[key].selected.filter( + i => i !== uuid); + this.formData.langData[key].full = false; } - - // make changes only for level 0 characters - if (this.formData.level0) { - this.formData.actor.system.coins.gp = 0; - this.formData.actor.system.showLevelUp = false; - - // add gear to the items list - for (const item of this.formData.gearSelected) { - allItems.push(await fromUuid(item.uuid)); - // add arrows for the shortbow option - if (item.name === "Shortbow and 5 arrows") { - let arrows = await fromUuid("Compendium.shadowdark.gear.Item.XXwA9ZWajYEDmcea"); - let fiveArrows = {...arrows}; - fiveArrows.system.quantity = 5; - allItems.push(fiveArrows); - } + // add uuid to array + else { + this.formData.langData[key].selected.push(uuid); + if (this.formData.langData[key].selected.length >= this.formData.langData[key].select) { + this.formData.langData[key].full = true; } } - // Calculate initial HP - let hpConMod = this.formData.actor.system.abilities.con.mod; - if (hpConMod < 1) hpConMod = 1; - this.formData.actor.system.attributes.hp.base = hpConMod; - this.formData.actor.system.attributes.hp.value = hpConMod; + this._updateLangData(); + this.render(); + } - // add auditlog data - const itemNames = []; - allItems.forEach(x => itemNames.push(x.name)); - let auditLog = {}; - auditLog[0] = { - startingStats: this.formData.actor.system.abilities, - baseHP: this.formData.actor.system.attributes.hp.base, - itemsGained: itemNames, - }; - this.formData.actor.system.auditLog = auditLog; - // Create the new player character - // - if (shadowdark.utils.canCreateCharacter()) { - CharacterGeneratorSD.createActorFromData( - this.formData.actor, - allItems, - game.userId, - this.formData.level0 + _setRandomLanguage(key, count) { + for (let i = 0; i < count; i++) { + let randomInt = this._getRandom(this.formData.langData[key].unselected.length); + this.formData.langData[key].selected.push( + this.formData.langData[key].unselected[randomInt] ); + this._updateLangData(); } - else { - game.socket.emit("system.shadowdark", { - type: "createCharacter", - payload: { - characterData: this.formData.actor, - characterItems: allItems, - userId: game.userId, - level0: this.formData.level0, - }, - }); - } - - this.close(); + this.formData.langData[key].full = true; } - async _updateCharacter() { + async _updateCharacter() { let actorRef = game.actors.get(this.actorUid); // set class, languages and starting gold @@ -921,4 +920,95 @@ export default class CharacterGeneratorSD extends FormApplication { actorRef.sheet.render(true); this.close(); } + + + _updateLangData() { + // adjust selected languages + // TODO figure out how to sort this + this.formData.actor.system.languages = [ + ...this.formData.langData.fixed, + ...this.formData.langData.ancestry.selected, + ...this.formData.langData.class.selected, + ...this.formData.langData.common.selected, + ...this.formData.langData.rare.selected, + ]; + + // adjust ancestry choices + if (this.ancestry?.system?.languages) { + this.formData.langData.ancestry.unselected = + this.ancestry.system.languages.selectOptions.filter( + x => !this.formData.actor.system.languages.includes(x)); + } + + // adjust class choices + if (this.class?.system?.languages) { + this.formData.langData.class.unselected = + this.class.system.languages.selectOptions.filter( + x => !this.formData.actor.system.languages.includes(x)); + } + + // adjust Common choices + this.formData.langData.common.unselected = this.formData.commonLanguages.filter( + x => !this.formData.actor.system.languages.includes(x)); + + // adjust Rares choices + this.formData.langData.rare.unselected = this.formData.rareLanguages.filter( + x => !this.formData.actor.system.languages.includes(x)); + } + + + /** @inheritdoc */ + async _updateObject(event, data) { + // expand incoming data for compatibility with formData + let expandedData = foundry.utils.expandObject(data); + + // covert incoming stat data from string to int + if (expandedData.actor.system.abilities) { + CONFIG.SHADOWDARK.ABILITY_KEYS.forEach(x => { + let baseInt = parseInt(expandedData.actor.system.abilities[x].base); + expandedData.actor.system.abilities[x].base = baseInt; + }); + } + + expandedData.level0 = (data.level0 === "true"); + + // merge incoming data into the main formData object + this.formData = foundry.utils.mergeObject(this.formData, expandedData); + + // if stats were changed, calculate new modifiers + if (event.target.id === "stat") { + this._calculateModifiers(); + } + + switch (event.target.name) { + // if class data was changed, load new data and roll hp + case "actor.system.class": + await this._loadClass(event.target.value); + break; + + // if ancestry data was changed, load new data + case "actor.system.ancestry": + await this._loadAncestry(event.target.value); + break; + + // if ancestry talents where choosen, load new data + case "ancestryTalents.selected": + this._addAncestryTalent(event.target.value); + break; + + // if class talents where choosen, load new data + case "classTalents.selected": + this._addClassTalent(event.target.value); + break; + + case "level0": + if (this.formData.level0) { + this.formData.actor.system.class = this.formData.level0Class.uuid; + this._loadClass(this.formData.level0Class.uuid); + } + break; + } + + this.render(); + } } diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 2cd682b7..50d0a2b7 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -42,6 +42,19 @@ export default function() { "systems/shadowdark/templates/actors/player/notes.hbs", "systems/shadowdark/templates/actors/player/spells.hbs", "systems/shadowdark/templates/actors/player/talents.hbs", + "systems/shadowdark/templates/apps/character-generator/_partials/ancestry-talents.hbs", + "systems/shadowdark/templates/apps/character-generator/_partials/ancestry-talents/choice-edit.hbs", + "systems/shadowdark/templates/apps/character-generator/_partials/ancestry-talents/choice-view.hbs", + "systems/shadowdark/templates/apps/character-generator/_partials/ancestry-talents/choice.hbs", + "systems/shadowdark/templates/apps/character-generator/_partials/ancestry-talents/fixed.hbs", + "systems/shadowdark/templates/apps/character-generator/_partials/armor.hbs", + "systems/shadowdark/templates/apps/character-generator/_partials/class-description.hbs", + "systems/shadowdark/templates/apps/character-generator/_partials/languages.hbs", + "systems/shadowdark/templates/apps/character-generator/_partials/languages/edit.hbs", + "systems/shadowdark/templates/apps/character-generator/_partials/languages/language-choice.hbs", + "systems/shadowdark/templates/apps/character-generator/_partials/languages/view.hbs", + "systems/shadowdark/templates/apps/character-generator/_partials/weapons.hbs", + "systems/shadowdark/templates/apps/character-generator/details.hbs", "systems/shadowdark/templates/items/_partials/choice-selector.hbs", "systems/shadowdark/templates/items/_partials/cost.hbs", "systems/shadowdark/templates/items/_partials/description-tab.hbs", diff --git a/system/src/utils/UtilitySD.mjs b/system/src/utils/UtilitySD.mjs index acfef4a9..de6a2ab6 100644 --- a/system/src/utils/UtilitySD.mjs +++ b/system/src/utils/UtilitySD.mjs @@ -107,6 +107,23 @@ export default class UtilitySD { } } + static async getItemsFromRollResults(results) { + const items = []; + + for (const result of results) { + const uuid = [ + "Compendium", + result.documentCollection, + result.documentId, + + ].join("."); + + items.push(await fromUuid(uuid)); + } + + return items; + } + static getMessageStyles() { const messageStyles = this.foundryMinVersion(12) ? CONST.CHAT_MESSAGE_STYLES diff --git a/system/templates/apps/character-generator.hbs b/system/templates/apps/character-generator.hbs index ccf3cb82..a3f45df9 100644 --- a/system/templates/apps/character-generator.hbs +++ b/system/templates/apps/character-generator.hbs @@ -7,15 +7,15 @@ {{#unless editing}} {{/unless}} {{!-- details --}} - {{> cg-details}} + {{> apps/character-generator/details }} {{!-- level type select --}}

    @@ -84,14 +84,13 @@
    @@ -192,22 +191,19 @@ {{#unless editing}}{{/unless}}
    - {{#each deities as |value key|}} {{/each}} - {{/select}}
    diff --git a/system/templates/apps/character-generator/_partials/ancestry-talents.hbs b/system/templates/apps/character-generator/_partials/ancestry-talents.hbs new file mode 100644 index 00000000..affba720 --- /dev/null +++ b/system/templates/apps/character-generator/_partials/ancestry-talents.hbs @@ -0,0 +1,2 @@ +{{> apps/character-generator/_partials/ancestry-talents/choice}} +{{> apps/character-generator/_partials/ancestry-talents/fixed}} diff --git a/system/templates/apps/character-generator/_partials/ancestry-talents/choice-edit.hbs b/system/templates/apps/character-generator/_partials/ancestry-talents/choice-edit.hbs new file mode 100644 index 00000000..5472561c --- /dev/null +++ b/system/templates/apps/character-generator/_partials/ancestry-talents/choice-edit.hbs @@ -0,0 +1,19 @@ +
    + + {{localize "SHADOWDARK.apps.character-generator.choose"}}: + + {{#each ancestryTalents.choice as |value key|}} + + + {{value.name}}. + + {{{value.formattedDescription}}} + {{#unless @last}} +
    + {{/unless}} + {{/each}} +
    diff --git a/system/templates/apps/character-generator/_partials/ancestry-talents/choice-view.hbs b/system/templates/apps/character-generator/_partials/ancestry-talents/choice-view.hbs new file mode 100644 index 00000000..f4256ddb --- /dev/null +++ b/system/templates/apps/character-generator/_partials/ancestry-talents/choice-view.hbs @@ -0,0 +1,12 @@ +

    + + {{#each ancestryTalents.selection as |value key|}} + + {{value.name}}. + + {{{value.formattedDescription}}} + {{/each}} +

    diff --git a/system/templates/apps/character-generator/_partials/ancestry-talents/choice.hbs b/system/templates/apps/character-generator/_partials/ancestry-talents/choice.hbs new file mode 100644 index 00000000..f82c83c1 --- /dev/null +++ b/system/templates/apps/character-generator/_partials/ancestry-talents/choice.hbs @@ -0,0 +1,7 @@ +{{#if ancestryTalents.choice}} + {{#if ancestryTalents.selection}} + {{> apps/character-generator/_partials/ancestry-talents/choice-view}} + {{else}} + {{> apps/character-generator/_partials/ancestry-talents/choice-edit}} + {{/if}} +{{/if}} diff --git a/system/templates/apps/character-generator/_partials/ancestry-talents/fixed.hbs b/system/templates/apps/character-generator/_partials/ancestry-talents/fixed.hbs new file mode 100644 index 00000000..8fe4aa43 --- /dev/null +++ b/system/templates/apps/character-generator/_partials/ancestry-talents/fixed.hbs @@ -0,0 +1,8 @@ +{{#if ancestryTalents.fixed}} +

    + {{#each ancestryTalents.fixed as |value key|}} + {{value.name}}. + {{{value.formattedDescription}}} + {{/each}} +

    +{{/if}} diff --git a/system/templates/apps/character-generator/_partials/armor.hbs b/system/templates/apps/character-generator/_partials/armor.hbs new file mode 100644 index 00000000..fb3a473b --- /dev/null +++ b/system/templates/apps/character-generator/_partials/armor.hbs @@ -0,0 +1,10 @@ +{{#if armor}} +

    + + {{localize "SHADOWDARK.item_type.armor"}}: + + {{#each armor as |name index|}} + {{name}}{{#unless @last}}, {{/unless}} + {{/each}} +

    +{{/if}} diff --git a/system/templates/apps/character-generator/_partials/class-description.hbs b/system/templates/apps/character-generator/_partials/class-description.hbs new file mode 100644 index 00000000..e5b8d114 --- /dev/null +++ b/system/templates/apps/character-generator/_partials/class-description.hbs @@ -0,0 +1,5 @@ +{{#if classDesc}} +

    + {{classDesc}} +

    +{{/if}} diff --git a/system/templates/apps/character-generator/_partials/languages.hbs b/system/templates/apps/character-generator/_partials/languages.hbs new file mode 100644 index 00000000..268e99c5 --- /dev/null +++ b/system/templates/apps/character-generator/_partials/languages.hbs @@ -0,0 +1,5 @@ +{{#if langData.edit}} + {{> apps/character-generator/_partials/languages/edit}} +{{else}} + {{> apps/character-generator/_partials/languages/view}} +{{/if}} diff --git a/system/templates/apps/character-generator/_partials/languages/edit.hbs b/system/templates/apps/character-generator/_partials/languages/edit.hbs new file mode 100644 index 00000000..407b8dfe --- /dev/null +++ b/system/templates/apps/character-generator/_partials/languages/edit.hbs @@ -0,0 +1,52 @@ +
    + + + + {{localize "SHADOWDARK.sheet.player.languages"}} + + + + {{#each langData.fixed as |value key|}} + {{lookup ../languages .}}{{#unless @last}}, {{/unless}} + {{/each}} + + {{#if langData.ancestry.select}} +
    + + {{> apps/character-generator/_partials/languages/language-choice + key="ancestry" + label="" + value=langData.ancestry + }} + {{/if}} + + {{#if langData.class.select}} +
    + + {{> apps/character-generator/_partials/languages/language-choice + key="class" + label="" + value=langData.class + }} + {{/if}} + + {{#if langData.common.select}} +
    + + {{> apps/character-generator/_partials/languages/language-choice + key="common" + label=(localize "SHADOWDARK.language.rarity.common") + value=langData.common + }} + {{/if}} + + {{#if langData.rare.select}} +
    + + {{> apps/character-generator/_partials/languages/language-choice + key="rare" + label=(localize "SHADOWDARK.language.rarity.rare") + value=langData.rare + }} + {{/if}} +
    diff --git a/system/templates/apps/character-generator/_partials/languages/language-choice.hbs b/system/templates/apps/character-generator/_partials/languages/language-choice.hbs new file mode 100644 index 00000000..2ac9bd6c --- /dev/null +++ b/system/templates/apps/character-generator/_partials/languages/language-choice.hbs @@ -0,0 +1,45 @@ +
    + +
    + + {{localize "SHADOWDARK.apps.character-generator.choose"}} + {{value.select}} + {{label}}: + +
    + {{#each value.selected}} + + {{lookup ../languages .}} + + {{#unless @last}} +
    + {{/unless}} + {{/each}} +
    + +
    + {{#each value.unselected}} + {{#unless ../value.full}} + + {{/unless}} + {{lookup ../languages .}}{{#unless @last}}, {{/unless}} + {{#unless ../value.full}} + + {{/unless}} + {{/each}} +
    + +
    diff --git a/system/templates/apps/character-generator/_partials/languages/view.hbs b/system/templates/apps/character-generator/_partials/languages/view.hbs new file mode 100644 index 00000000..6d2c1fe9 --- /dev/null +++ b/system/templates/apps/character-generator/_partials/languages/view.hbs @@ -0,0 +1,11 @@ +

    + {{#if langData.togglable}} + + {{/if}} + + {{localize "SHADOWDARK.form.section_header.languages.label"}}. + + {{#each actor.system.languages}} + {{lookup ../languages .}}{{#unless @last}}, {{/unless}} + {{/each}} +

    diff --git a/system/templates/apps/character-generator/_partials/weapons.hbs b/system/templates/apps/character-generator/_partials/weapons.hbs new file mode 100644 index 00000000..6486722a --- /dev/null +++ b/system/templates/apps/character-generator/_partials/weapons.hbs @@ -0,0 +1,10 @@ +{{#if weapons}} +

    + + {{localize "SHADOWDARK.class.weapons.label"}}: + + {{#each weapons as |name index|}} + {{name}}{{#unless @last}}, {{/unless}} + {{/each}} +

    +{{/if}} diff --git a/system/templates/apps/character-generator/details.hbs b/system/templates/apps/character-generator/details.hbs new file mode 100644 index 00000000..181d8cb9 --- /dev/null +++ b/system/templates/apps/character-generator/details.hbs @@ -0,0 +1,66 @@ +{{!-- Character Details --}} +
    +
    + + +
    + +
    + {{> apps/character-generator/_partials/class-description}} + {{> apps/character-generator/_partials/ancestry-talents}} + {{> apps/character-generator/_partials/weapons}} + {{> apps/character-generator/_partials/armor}} + {{> apps/character-generator/_partials/languages}} + + {{!-- Choice Class Talents --}} + {{#if classTalents.choice}} + {{#if classTalents.selection}} +

    + {{#each classTalents.selection as |value key|}} + {{value.name}}. + {{{value.formattedDescription}}} + {{/each}} +

    + {{/if}} + {{#unless classTalents.selection}} +
    + {{localize "SHADOWDARK.apps.character-generator.choose"}}: + {{#each classTalents.choice as |value key|}} + + {{value.name}}. + {{{value.formattedDescription}}} + {{#unless @last}}
    {{/unless}} + {{/each}} +
    + {{/unless}} + {{/if}} + + {{#if actor.system.patron}} +

    + + {{localize "SHADOWDARK.form.section_header.patron.label"}}. + {{patronName}} +

    + {{/if}} + + {{!-- Fixed Class Talents --}} + {{#each classTalents.fixed as |value key|}} +

    + {{value.name}}. + {{{value.formattedDescription}}} +

    + {{/each}} + + {{!-- Level 0 Gear --}} + {{#if level0}} +

    + {{localize "SHADOWDARK.apps.character-generator.starting_gear"}}: + {{#each gearSelected as |value key|}} + {{value.name}}{{#unless @last}}, {{/unless}} + {{/each}} +

    + {{/if}} +
    +
    diff --git a/system/templates/apps/partials/cg-details.hbs b/system/templates/apps/partials/cg-details.hbs deleted file mode 100644 index d5c65ec5..00000000 --- a/system/templates/apps/partials/cg-details.hbs +++ /dev/null @@ -1,165 +0,0 @@ -{{!-- Character Details --}} -
    -
    - - -
    -
    - - {{!-- Class --}} - {{#if classDesc}} -

    {{classDesc}}

    - {{/if}} - - {{!-- Choice Ancestry Talents --}} - {{#if ancestryTalents.choice}} - {{#if ancestryTalents.selection}} -

    - {{#each ancestryTalents.selection as |value key|}} - {{value.name}}. - {{{value.formattedDescription}}} - {{/each}} -

    - {{/if}} - {{#unless ancestryTalents.selection}} -
    - Choose: - {{#each ancestryTalents.choice as |value key|}} - - {{value.name}}. - {{{value.formattedDescription}}} - {{#unless @last}}
    {{/unless}} - {{/each}} -
    - {{/unless}} - {{/if}} - - {{!-- Fixed Ancestry Talents --}} - {{#if ancestryTalents.fixed}} -

    - {{#each ancestryTalents.fixed as |value key|}} - {{value.name}}. - {{{value.formattedDescription}}} - {{/each}} -

    - {{/if}} - - {{!-- Weapons --}} - {{#if weapons}} -

    Weapons: - {{#each weapons as |name index|}} - {{name}}{{#unless @last}}, {{/unless}} - {{/each}} -

    - {{/if}} - - {{!-- Armor --}} - {{#if armor}}

    Armor: - {{#each armor as |name index|}} - {{name}}{{#unless @last}}, {{/unless}} - {{/each}} -

    - {{/if}} - - {{!-- Languages --}} - {{#unless langData.edit}} -

    - {{#if langData.togglable}} - - {{/if}} - Languages. - {{#each actor.system.languages}} - {{lookup ../languages .}}{{#unless @last}}, {{/unless}} - {{/each}} -

    - {{/unless}} - {{#if langData.edit}} -
    - - - {{localize "SHADOWDARK.sheet.player.languages"}} - - {{#each langData.fixed as |value key|}} - {{lookup ../languages .}}{{#unless @last}}, {{/unless}} - {{/each}} - - {{#if langData.ancestry.select}} -
    - {{> cg-language-choice - value=langData.ancestry - label="" - key="ancestry" - }} - {{/if}} - - {{#if langData.class.select}} -
    - {{> cg-language-choice - value=langData.class - label="" - key="class" - }} - {{/if}} - - {{#if langData.common.select}} -
    - {{> cg-language-choice - value=langData.common - label="Common" - key="common" - }} - {{/if}} - - {{#if langData.rare.select}} -
    - {{> cg-language-choice - value=langData.rare - label="Rare" - key="rare" - }} - {{/if}} -
    - {{/if}} - - {{!-- Choice Class Talents --}} - {{#if classTalents.choice}} - {{#if classTalents.selection}} -

    - {{#each classTalents.selection as |value key|}} - {{value.name}}. - {{{value.formattedDescription}}} - {{/each}} -

    - {{/if}} - {{#unless classTalents.selection}} -
    - Choose: - {{#each classTalents.choice as |value key|}} - - {{value.name}}. - {{{value.formattedDescription}}} - {{#unless @last}}
    {{/unless}} - {{/each}} -
    - {{/unless}} - {{/if}} - - {{!-- Fixed Class Talents --}} - {{#each classTalents.fixed as |value key|}} -

    - {{value.name}}. - {{{value.formattedDescription}}} -

    - {{/each}} - - {{!-- Level 0 Gear --}} - {{#if level0}} -

    Starting Gear:
    - {{#each gearSelected as |value key|}} - {{value.name}} - {{#unless @last}}
    {{/unless}} - {{/each}} -

    - {{/if}} -
    -
    diff --git a/system/templates/apps/partials/cg-language-choice.hbs b/system/templates/apps/partials/cg-language-choice.hbs deleted file mode 100644 index e7f18720..00000000 --- a/system/templates/apps/partials/cg-language-choice.hbs +++ /dev/null @@ -1,21 +0,0 @@ -
    -
    - Choose {{value.select}} {{label}}:
    - {{#each value.selected}} - - {{lookup ../languages .}} - {{#unless @last}}
    {{/unless}} - {{/each}} -
    -
    - {{#each value.unselected}} - {{#unless ../value.full}} - - {{/unless}} - {{lookup ../languages .}}{{#unless @last}}, {{/unless}} - {{#unless ../value.full}} - - {{/unless}} - {{/each}} -
    -
    \ No newline at end of file From ef42ca5c086733f62bd2264fc4ca7df11d6d2865 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 10 Nov 2024 20:44:59 +0000 Subject: [PATCH 115/182] closes #938 --- RELEASE_NOTES.md | 1 + data/packs/talents.db/farsight__ranged___dTEZW21LUNoYL3JU.json | 2 +- data/packs/talents.db/farsight__spell___E3EcGGdGYuEWWj47.json | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 3fac2169..b4a23e45 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -18,6 +18,7 @@ * [#919] Class item template has incorrect default spellcasting class value * [#930] Class Abilities can't be used if they have no associated skill roll * [#936] Character Generator: Don't display empty alignment for Deities that don't have one +* [#938] Unecessary line breaks in Farsight talent descriptions ## Chores * [#911] Replaced compendium art mapping with default Foundry method. diff --git a/data/packs/talents.db/farsight__ranged___dTEZW21LUNoYL3JU.json b/data/packs/talents.db/farsight__ranged___dTEZW21LUNoYL3JU.json index 6633e56a..10590763 100644 --- a/data/packs/talents.db/farsight__ranged___dTEZW21LUNoYL3JU.json +++ b/data/packs/talents.db/farsight__ranged___dTEZW21LUNoYL3JU.json @@ -12,7 +12,7 @@ "rangedAttackBonus": "1", "spellcastingCheckBonus": "1" }, - "description": "

    You get a +1 bonus to attack rolls with ranged

    weapons or a +1 bonus to spellcasting checks.

    ", + "description": "

    You get a +1 bonus to attack rolls with ranged weapons or a +1 bonus to spellcasting checks.

    ", "level": 1, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/talents.db/farsight__spell___E3EcGGdGYuEWWj47.json b/data/packs/talents.db/farsight__spell___E3EcGGdGYuEWWj47.json index 7a93e9b6..8506ca09 100644 --- a/data/packs/talents.db/farsight__spell___E3EcGGdGYuEWWj47.json +++ b/data/packs/talents.db/farsight__spell___E3EcGGdGYuEWWj47.json @@ -12,7 +12,7 @@ "rangedAttackBonus": "1", "spellcastingCheckBonus": "1" }, - "description": "

    You get a +1 bonus to attack rolls with ranged

    weapons or a +1 bonus to spellcasting checks.

    ", + "description": "

    You get a +1 bonus to attack rolls with ranged weapons or a +1 bonus to spellcasting checks.

    ", "level": 1, "magicItem": false, "predefinedEffects": "", From fd89a0ac6edba8582b27121e78b3f67f600a9387 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 10 Nov 2024 20:46:57 +0000 Subject: [PATCH 116/182] closes #939 --- RELEASE_NOTES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index b4a23e45..801d16cd 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -7,6 +7,7 @@ * [#880] Create a new Patron Boon type for Talents * [#901] Added Russian as a partially complete system language. * [#920] Show tooltips on weapon and armor properties when showing expanded inline view in inventory +* [#939] Add macro for launching the character generator ## Bugfixes * [#894] Unnecessary "items not found" warning for "+2 Stats Points" from ShadowDarklings From cb4372f76c37e387776781cb930ae1a763756a76 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 10 Nov 2024 20:48:26 +0000 Subject: [PATCH 117/182] closes #937 --- RELEASE_NOTES.md | 1 + i18n/en.yaml | 1 + scss/apps/_character-generator.scss | 5 + system/src/apps/CharacterGeneratorSD.mjs | 103 ++++--- system/src/templates.mjs | 44 ++- system/templates/apps/character-generator.hbs | 260 +++--------------- .../_partials/ancestry-talents.hbs | 2 - .../_partials/ancestry-talents/choice.hbs | 7 - .../_partials/languages.hbs | 5 - .../apps/character-generator/alignment.hbs | 25 ++ .../apps/character-generator/ancestry.hbs | 35 +++ .../apps/character-generator/background.hbs | 40 +++ .../apps/character-generator/class.hbs | 46 ++++ .../apps/character-generator/deity.hbs | 37 +++ .../apps/character-generator/details.hbs | 65 +---- .../details/ancestry-talents.hbs | 2 + .../ancestry-talents/choice-edit.hbs | 0 .../ancestry-talents/choice-view.hbs | 0 .../details/ancestry-talents/choice.hbs | 7 + .../ancestry-talents/fixed.hbs | 0 .../{_partials => details}/armor.hbs | 0 .../class-description.hbs | 0 .../details/class-talents.hbs | 2 + .../details/class-talents/choice-edit.hbs | 22 ++ .../details/class-talents/choice-view.hbs | 9 + .../details/class-talents/choice.hbs | 7 + .../details/class-talents/fixed.hbs | 8 + .../apps/character-generator/details/gear.hbs | 10 + .../character-generator/details/languages.hbs | 5 + .../{_partials => details}/languages/edit.hbs | 8 +- .../languages/language-choice.hbs | 0 .../{_partials => details}/languages/view.hbs | 2 +- .../character-generator/details/patron.hbs | 7 + .../details/patron/edit.hbs | 23 ++ .../details/patron/view.hbs | 10 + .../{_partials => details}/weapons.hbs | 0 .../apps/character-generator/gear.hbs | 18 ++ .../apps/character-generator/gold.hbs | 24 ++ .../apps/character-generator/hit-points.hbs | 16 ++ .../apps/character-generator/name.hbs | 25 ++ .../apps/character-generator/stats.hbs | 51 ++++ .../apps/character-generator/type.hbs | 34 +++ 42 files changed, 627 insertions(+), 339 deletions(-) delete mode 100644 system/templates/apps/character-generator/_partials/ancestry-talents.hbs delete mode 100644 system/templates/apps/character-generator/_partials/ancestry-talents/choice.hbs delete mode 100644 system/templates/apps/character-generator/_partials/languages.hbs create mode 100644 system/templates/apps/character-generator/alignment.hbs create mode 100644 system/templates/apps/character-generator/ancestry.hbs create mode 100644 system/templates/apps/character-generator/background.hbs create mode 100644 system/templates/apps/character-generator/class.hbs create mode 100644 system/templates/apps/character-generator/deity.hbs create mode 100644 system/templates/apps/character-generator/details/ancestry-talents.hbs rename system/templates/apps/character-generator/{_partials => details}/ancestry-talents/choice-edit.hbs (100%) rename system/templates/apps/character-generator/{_partials => details}/ancestry-talents/choice-view.hbs (100%) create mode 100644 system/templates/apps/character-generator/details/ancestry-talents/choice.hbs rename system/templates/apps/character-generator/{_partials => details}/ancestry-talents/fixed.hbs (100%) rename system/templates/apps/character-generator/{_partials => details}/armor.hbs (100%) rename system/templates/apps/character-generator/{_partials => details}/class-description.hbs (100%) create mode 100644 system/templates/apps/character-generator/details/class-talents.hbs create mode 100644 system/templates/apps/character-generator/details/class-talents/choice-edit.hbs create mode 100644 system/templates/apps/character-generator/details/class-talents/choice-view.hbs create mode 100644 system/templates/apps/character-generator/details/class-talents/choice.hbs create mode 100644 system/templates/apps/character-generator/details/class-talents/fixed.hbs create mode 100644 system/templates/apps/character-generator/details/gear.hbs create mode 100644 system/templates/apps/character-generator/details/languages.hbs rename system/templates/apps/character-generator/{_partials => details}/languages/edit.hbs (74%) rename system/templates/apps/character-generator/{_partials => details}/languages/language-choice.hbs (100%) rename system/templates/apps/character-generator/{_partials => details}/languages/view.hbs (78%) create mode 100644 system/templates/apps/character-generator/details/patron.hbs create mode 100644 system/templates/apps/character-generator/details/patron/edit.hbs create mode 100644 system/templates/apps/character-generator/details/patron/view.hbs rename system/templates/apps/character-generator/{_partials => details}/weapons.hbs (100%) create mode 100644 system/templates/apps/character-generator/gear.hbs create mode 100644 system/templates/apps/character-generator/gold.hbs create mode 100644 system/templates/apps/character-generator/hit-points.hbs create mode 100644 system/templates/apps/character-generator/name.hbs create mode 100644 system/templates/apps/character-generator/stats.hbs create mode 100644 system/templates/apps/character-generator/type.hbs diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 801d16cd..4059dca2 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -7,6 +7,7 @@ * [#880] Create a new Patron Boon type for Talents * [#901] Added Russian as a partially complete system language. * [#920] Show tooltips on weapon and armor properties when showing expanded inline view in inventory +* [#937] Support selecting or rolling Patron in character generator * [#939] Add macro for launching the character generator ## Bugfixes diff --git a/i18n/en.yaml b/i18n/en.yaml index e078ce77..2c1cc746 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -54,6 +54,7 @@ SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: Unable to roll a SHADOWDARK.apps.character-generator.gear: Gear SHADOWDARK.apps.character-generator.gold: Gold SHADOWDARK.apps.character-generator.name: Character Name +SHADOWDARK.apps.character-generator.see_details: See Details SHADOWDARK.apps.character-generator.starting_gear: Starting Gear SHADOWDARK.apps.character-generator.success: Character created SHADOWDARK.apps.character-generator.title: Character Generator diff --git a/scss/apps/_character-generator.scss b/scss/apps/_character-generator.scss index fb88a33f..44f9bb6c 100644 --- a/scss/apps/_character-generator.scss +++ b/scss/apps/_character-generator.scss @@ -66,4 +66,9 @@ width: 3em; } } + + .title { + align-self: center; + text-align: center; + } } diff --git a/system/src/apps/CharacterGeneratorSD.mjs b/system/src/apps/CharacterGeneratorSD.mjs index 7529427c..aa83bac9 100644 --- a/system/src/apps/CharacterGeneratorSD.mjs +++ b/system/src/apps/CharacterGeneratorSD.mjs @@ -2,8 +2,6 @@ export default class CharacterGeneratorSD extends FormApplication { LEVEL_ZERO_GEAR_TABLE_UUID = "Compendium.shadowdark.rollable-tables.RollTable.WKVfMaGkoXe3DGub"; - LEVEL_ONE_GEAR_TABLE_UUID = "Compendium.shadowdark.rollable-tables.RollTable.WKVfMaGkoXe3DGub"; - /** * Contains functions for building Shadowdark characters */ @@ -34,7 +32,12 @@ export default class CharacterGeneratorSD extends FormApplication { gearSelected: [], level0: true, level0Class: {}, - patronName: "", + patron: { + formattedDescription: "", + name: "", + choose: false, + required: false, + }, weapons: ["All weapons"], }; @@ -151,6 +154,10 @@ export default class CharacterGeneratorSD extends FormApplication { event => this._clearClassTalents(event) ); + html.find("[data-action='clear-patron']").click( + event => this._clearPatron(event) + ); + html.find("[data-action='edit-languages']").click( event => this._editLanguage() ); @@ -248,6 +255,11 @@ export default class CharacterGeneratorSD extends FormApplication { deity.displayName = `${deity.name} (${alignment})`; } + for (const patron of this.formData.patrons) { + let fDesc = await this._formatDescription(patron.system.description); + patron.formattedDescription = fDesc; + } + // load all languages in lookup table let languages = await shadowdark.compendiums.languages(); this.formData.languages = {}; @@ -327,6 +339,24 @@ export default class CharacterGeneratorSD extends FormApplication { } + _clearPatron() { + this.patron = null; + this.formData.actor.system.patron = null; + + this.formData.patron.choose = false; + this.formData.patron.required = false; + this.formData.patron.name = ""; + this.formData.patron.formattedDescription = ""; + + if (this.class.system.patron.required) { + this.formData.patron.choose = true; + this.formData.patron.required = true; + } + + this.render(); + } + + async _createCharacter() { // sets initial totals on all stats @@ -604,7 +634,19 @@ export default class CharacterGeneratorSD extends FormApplication { this.formData.classDesc = await this._formatDescription(classObj.system.description); await this._loadLanguages(); - await this._randomizePatron(); + this.patron = null; + this.formData.patron.choose = false; + this.formData.patron.required = false; + this.formData.actor.system.patron = null; + this.formData.patron.name = ""; + + if (this.class.system.patron.required) { + this.formData.patron.choose = true; + this.formData.patron.required = true; + + if (randomize) await this._randomizePatron(); + } + } @@ -682,6 +724,19 @@ export default class CharacterGeneratorSD extends FormApplication { } + async _loadPatron(UuID) { + this.patron = await this._getClassObject(UuID); + + this.formData.patron.choose = false; + this.formData.patron.name = this.patron.name; + this.formData.patron.required = true; + + let fDesc = await this._formatDescription(this.patron.system.description); + this.formData.patron.formattedDescription = fDesc; + + } + + async _randomizeAlignment() { switch (await this._roll("d6")) { case 1: @@ -802,39 +857,11 @@ export default class CharacterGeneratorSD extends FormApplication { async _randomizePatron() { - if (this.class.system.patron.required) { - let tempInt = this._getRandom(this.formData.patrons.size); - this.patron = [...this.formData.patrons][tempInt]; - this.formData.actor.system.patron = this.patron.uuid; - this.formData.patronName = this.patron.name; - } - else { - this.patron = null; - this.formData.actor.system.patron = null; - this.formData.patronName = ""; - } - } + const tempInt = this._getRandom(this.formData.patrons.size); + const patronUuid = [...this.formData.patrons][tempInt].uuid; - - async _randomizePatronBoons() { - if (!this.patron) return; - - const tableUuid = this.patron?.system?.boonTable ?? ""; - const table = await fromUuid(tableUuid); - - const boons = []; - if (table) { - const boonCount = this.class?.system?.patron?.startingBoons ?? 0; - - for (let i = 0; i < boonCount; i++) { - const draw = await table.draw({displayChat: false}); - boons.push(await shadowdark.utils.getItemsFromRollResults( - draw.results - )); - } - } - - this.formData.patronBoons = boons; + this.formData.actor.system.patron = patronUuid; + await this._loadPatron(patronUuid, true); } @@ -986,6 +1013,10 @@ export default class CharacterGeneratorSD extends FormApplication { await this._loadClass(event.target.value); break; + case "actor.system.patron": + await this._loadPatron(event.target.value); + break; + // if ancestry data was changed, load new data case "actor.system.ancestry": await this._loadAncestry(event.target.value); diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 50d0a2b7..31ca8380 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -42,19 +42,39 @@ export default function() { "systems/shadowdark/templates/actors/player/notes.hbs", "systems/shadowdark/templates/actors/player/spells.hbs", "systems/shadowdark/templates/actors/player/talents.hbs", - "systems/shadowdark/templates/apps/character-generator/_partials/ancestry-talents.hbs", - "systems/shadowdark/templates/apps/character-generator/_partials/ancestry-talents/choice-edit.hbs", - "systems/shadowdark/templates/apps/character-generator/_partials/ancestry-talents/choice-view.hbs", - "systems/shadowdark/templates/apps/character-generator/_partials/ancestry-talents/choice.hbs", - "systems/shadowdark/templates/apps/character-generator/_partials/ancestry-talents/fixed.hbs", - "systems/shadowdark/templates/apps/character-generator/_partials/armor.hbs", - "systems/shadowdark/templates/apps/character-generator/_partials/class-description.hbs", - "systems/shadowdark/templates/apps/character-generator/_partials/languages.hbs", - "systems/shadowdark/templates/apps/character-generator/_partials/languages/edit.hbs", - "systems/shadowdark/templates/apps/character-generator/_partials/languages/language-choice.hbs", - "systems/shadowdark/templates/apps/character-generator/_partials/languages/view.hbs", - "systems/shadowdark/templates/apps/character-generator/_partials/weapons.hbs", + "systems/shadowdark/templates/apps/character-generator/alignment.hbs", + "systems/shadowdark/templates/apps/character-generator/ancestry.hbs", + "systems/shadowdark/templates/apps/character-generator/background.hbs", + "systems/shadowdark/templates/apps/character-generator/class.hbs", + "systems/shadowdark/templates/apps/character-generator/deity.hbs", "systems/shadowdark/templates/apps/character-generator/details.hbs", + "systems/shadowdark/templates/apps/character-generator/details/ancestry-talents.hbs", + "systems/shadowdark/templates/apps/character-generator/details/ancestry-talents/choice-edit.hbs", + "systems/shadowdark/templates/apps/character-generator/details/ancestry-talents/choice-view.hbs", + "systems/shadowdark/templates/apps/character-generator/details/ancestry-talents/choice.hbs", + "systems/shadowdark/templates/apps/character-generator/details/ancestry-talents/fixed.hbs", + "systems/shadowdark/templates/apps/character-generator/details/armor.hbs", + "systems/shadowdark/templates/apps/character-generator/details/class-description.hbs", + "systems/shadowdark/templates/apps/character-generator/details/class-talents.hbs", + "systems/shadowdark/templates/apps/character-generator/details/class-talents/choice-edit.hbs", + "systems/shadowdark/templates/apps/character-generator/details/class-talents/choice-view.hbs", + "systems/shadowdark/templates/apps/character-generator/details/class-talents/choice.hbs", + "systems/shadowdark/templates/apps/character-generator/details/class-talents/fixed.hbs", + "systems/shadowdark/templates/apps/character-generator/details/gear.hbs", + "systems/shadowdark/templates/apps/character-generator/details/languages.hbs", + "systems/shadowdark/templates/apps/character-generator/details/languages/edit.hbs", + "systems/shadowdark/templates/apps/character-generator/details/languages/language-choice.hbs", + "systems/shadowdark/templates/apps/character-generator/details/languages/view.hbs", + "systems/shadowdark/templates/apps/character-generator/details/patron.hbs", + "systems/shadowdark/templates/apps/character-generator/details/patron/view.hbs", + "systems/shadowdark/templates/apps/character-generator/details/patron/edit.hbs", + "systems/shadowdark/templates/apps/character-generator/details/weapons.hbs", + "systems/shadowdark/templates/apps/character-generator/gear.hbs", + "systems/shadowdark/templates/apps/character-generator/gold.hbs", + "systems/shadowdark/templates/apps/character-generator/hit-points.hbs", + "systems/shadowdark/templates/apps/character-generator/name.hbs", + "systems/shadowdark/templates/apps/character-generator/stats.hbs", + "systems/shadowdark/templates/apps/character-generator/type.hbs", "systems/shadowdark/templates/items/_partials/choice-selector.hbs", "systems/shadowdark/templates/items/_partials/cost.hbs", "systems/shadowdark/templates/items/_partials/description-tab.hbs", diff --git a/system/templates/apps/character-generator.hbs b/system/templates/apps/character-generator.hbs index a3f45df9..6f46d408 100644 --- a/system/templates/apps/character-generator.hbs +++ b/system/templates/apps/character-generator.hbs @@ -1,220 +1,46 @@
    -
    - - {{!-- title --}} -

    - {{localize "SHADOWDARK.apps.character-generator.title"}} - {{#unless editing}} - - {{/unless}} -

    - - {{!-- details --}} - {{> apps/character-generator/details }} - - {{!-- level type select --}} -
    -
    - - -
    -
    -
    - - {{localize "SHADOWDARK.talent.class.level"}} 0 -
    -
    - - {{localize "SHADOWDARK.talent.class.level"}} 1 -
    -
    -
    - - {{!-- Name --}} -
    -
    - - {{#unless editing}}{{/unless}} -
    -
    - -
    -
    - - {{!-- Stats --}} -
    -
    - - {{#unless editing}}{{/unless}} -
    -
    -
    - {{#each actor.system.abilities as |value key|}} -
    - -
    - - {{numberFormat value.mod decimals=0 sign=true}} -
    -
    - {{/each}} -
    -
    +
    + +

    + {{localize "SHADOWDARK.apps.character-generator.title"}} + {{#unless editing}} + + {{/unless}} +

    + + {{> apps/character-generator/details}} + {{> apps/character-generator/type}} + {{> apps/character-generator/name}} + {{> apps/character-generator/stats}} + {{> apps/character-generator/class}} + {{> apps/character-generator/ancestry}} + {{> apps/character-generator/background}} + {{> apps/character-generator/hit-points}} + {{> apps/character-generator/alignment}} + + {{#if level0}} + {{> apps/character-generator/gear}} + {{else}} + {{> apps/character-generator/gold}} + {{/if}} + + {{> apps/character-generator/deity}} +
    + +
    + {{#if editing}} + + {{else}} + + {{/if}}
    - - {{!-- Class --}} -
    -
    - - {{#unless level0}}{{/unless}} - -
    -
    - -
    -
    - - {{!-- Ancestry --}} -
    -
    - - {{#unless editing}}{{/unless}} -
    -
    - -
    -
    - - {{!-- Background --}} -
    -
    - - {{#unless editing}}{{/unless}} -
    -
    - -
    -
    - - {{!-- HP --}} -
    -
    - - -
    -
    - [{{classHP}}] - {{numberFormat actor.system.abilities.con.mod decimals=0 sign=true}} -
    -
    - - {{!-- Alignment --}} -
    -
    - - {{#unless editing}}{{/unless}} -
    -
    - -
    -
    - - {{!-- Gold --}} - {{#unless level0}} -
    -
    - - -
    -
    - - {{localize "SHADOWDARK.coins.gp"}} -
    -
    - {{/unless}} - - {{!-- Gear --}} - {{#if level0}} -
    -
    - - -
    -
    - See details -
    -
    - {{/if}} - - {{!-- Deity --}} -
    -
    - - {{#unless editing}}{{/unless}} -
    -
    - -
    -
    - -
    -
    - {{#unless editing}} - - {{/unless}} - {{#if editing}} - - {{/if}} -
    diff --git a/system/templates/apps/character-generator/_partials/ancestry-talents.hbs b/system/templates/apps/character-generator/_partials/ancestry-talents.hbs deleted file mode 100644 index affba720..00000000 --- a/system/templates/apps/character-generator/_partials/ancestry-talents.hbs +++ /dev/null @@ -1,2 +0,0 @@ -{{> apps/character-generator/_partials/ancestry-talents/choice}} -{{> apps/character-generator/_partials/ancestry-talents/fixed}} diff --git a/system/templates/apps/character-generator/_partials/ancestry-talents/choice.hbs b/system/templates/apps/character-generator/_partials/ancestry-talents/choice.hbs deleted file mode 100644 index f82c83c1..00000000 --- a/system/templates/apps/character-generator/_partials/ancestry-talents/choice.hbs +++ /dev/null @@ -1,7 +0,0 @@ -{{#if ancestryTalents.choice}} - {{#if ancestryTalents.selection}} - {{> apps/character-generator/_partials/ancestry-talents/choice-view}} - {{else}} - {{> apps/character-generator/_partials/ancestry-talents/choice-edit}} - {{/if}} -{{/if}} diff --git a/system/templates/apps/character-generator/_partials/languages.hbs b/system/templates/apps/character-generator/_partials/languages.hbs deleted file mode 100644 index 268e99c5..00000000 --- a/system/templates/apps/character-generator/_partials/languages.hbs +++ /dev/null @@ -1,5 +0,0 @@ -{{#if langData.edit}} - {{> apps/character-generator/_partials/languages/edit}} -{{else}} - {{> apps/character-generator/_partials/languages/view}} -{{/if}} diff --git a/system/templates/apps/character-generator/alignment.hbs b/system/templates/apps/character-generator/alignment.hbs new file mode 100644 index 00000000..3e15b029 --- /dev/null +++ b/system/templates/apps/character-generator/alignment.hbs @@ -0,0 +1,25 @@ +
    +
    + + + {{#unless editing}} + + {{/unless}} + +
    + +
    + +
    +
    diff --git a/system/templates/apps/character-generator/ancestry.hbs b/system/templates/apps/character-generator/ancestry.hbs new file mode 100644 index 00000000..ba198d31 --- /dev/null +++ b/system/templates/apps/character-generator/ancestry.hbs @@ -0,0 +1,35 @@ +
    +
    + + + {{#unless editing}} + {{/unless}} +
    + +
    + +
    +
    diff --git a/system/templates/apps/character-generator/background.hbs b/system/templates/apps/character-generator/background.hbs new file mode 100644 index 00000000..129a5108 --- /dev/null +++ b/system/templates/apps/character-generator/background.hbs @@ -0,0 +1,40 @@ +
    +
    + + + {{#unless editing}} + + {{/unless}} + +
    + +
    + +
    +
    diff --git a/system/templates/apps/character-generator/class.hbs b/system/templates/apps/character-generator/class.hbs new file mode 100644 index 00000000..9e8d87df --- /dev/null +++ b/system/templates/apps/character-generator/class.hbs @@ -0,0 +1,46 @@ +
    +
    + + + {{#unless level0}} + + {{/unless}} + +
    + +
    + +
    +
    diff --git a/system/templates/apps/character-generator/deity.hbs b/system/templates/apps/character-generator/deity.hbs new file mode 100644 index 00000000..29601f84 --- /dev/null +++ b/system/templates/apps/character-generator/deity.hbs @@ -0,0 +1,37 @@ +{{!-- Deity --}} +
    +
    + + + {{#unless editing}} + + {{/unless}} + +
    + +
    + +
    +
    diff --git a/system/templates/apps/character-generator/details.hbs b/system/templates/apps/character-generator/details.hbs index 181d8cb9..91b17a49 100644 --- a/system/templates/apps/character-generator/details.hbs +++ b/system/templates/apps/character-generator/details.hbs @@ -1,5 +1,5 @@ -{{!-- Character Details --}}
    +
    - {{> apps/character-generator/_partials/class-description}} - {{> apps/character-generator/_partials/ancestry-talents}} - {{> apps/character-generator/_partials/weapons}} - {{> apps/character-generator/_partials/armor}} - {{> apps/character-generator/_partials/languages}} - - {{!-- Choice Class Talents --}} - {{#if classTalents.choice}} - {{#if classTalents.selection}} -

    - {{#each classTalents.selection as |value key|}} - {{value.name}}. - {{{value.formattedDescription}}} - {{/each}} -

    - {{/if}} - {{#unless classTalents.selection}} -
    - {{localize "SHADOWDARK.apps.character-generator.choose"}}: - {{#each classTalents.choice as |value key|}} - - {{value.name}}. - {{{value.formattedDescription}}} - {{#unless @last}}
    {{/unless}} - {{/each}} -
    - {{/unless}} - {{/if}} - - {{#if actor.system.patron}} -

    - - {{localize "SHADOWDARK.form.section_header.patron.label"}}. - {{patronName}} -

    - {{/if}} - - {{!-- Fixed Class Talents --}} - {{#each classTalents.fixed as |value key|}} -

    - {{value.name}}. - {{{value.formattedDescription}}} -

    - {{/each}} - - {{!-- Level 0 Gear --}} - {{#if level0}} -

    - {{localize "SHADOWDARK.apps.character-generator.starting_gear"}}: - {{#each gearSelected as |value key|}} - {{value.name}}{{#unless @last}}, {{/unless}} - {{/each}} -

    - {{/if}} + {{> apps/character-generator/details/class-description}} + {{> apps/character-generator/details/ancestry-talents}} + {{> apps/character-generator/details/weapons}} + {{> apps/character-generator/details/armor}} + {{> apps/character-generator/details/languages}} + {{> apps/character-generator/details/patron}} + {{> apps/character-generator/details/class-talents}} + {{> apps/character-generator/details/gear}}
    +
    diff --git a/system/templates/apps/character-generator/details/ancestry-talents.hbs b/system/templates/apps/character-generator/details/ancestry-talents.hbs new file mode 100644 index 00000000..a876cb20 --- /dev/null +++ b/system/templates/apps/character-generator/details/ancestry-talents.hbs @@ -0,0 +1,2 @@ +{{> apps/character-generator/details/ancestry-talents/choice}} +{{> apps/character-generator/details/ancestry-talents/fixed}} diff --git a/system/templates/apps/character-generator/_partials/ancestry-talents/choice-edit.hbs b/system/templates/apps/character-generator/details/ancestry-talents/choice-edit.hbs similarity index 100% rename from system/templates/apps/character-generator/_partials/ancestry-talents/choice-edit.hbs rename to system/templates/apps/character-generator/details/ancestry-talents/choice-edit.hbs diff --git a/system/templates/apps/character-generator/_partials/ancestry-talents/choice-view.hbs b/system/templates/apps/character-generator/details/ancestry-talents/choice-view.hbs similarity index 100% rename from system/templates/apps/character-generator/_partials/ancestry-talents/choice-view.hbs rename to system/templates/apps/character-generator/details/ancestry-talents/choice-view.hbs diff --git a/system/templates/apps/character-generator/details/ancestry-talents/choice.hbs b/system/templates/apps/character-generator/details/ancestry-talents/choice.hbs new file mode 100644 index 00000000..c7d33015 --- /dev/null +++ b/system/templates/apps/character-generator/details/ancestry-talents/choice.hbs @@ -0,0 +1,7 @@ +{{#if ancestryTalents.choice}} + {{#if ancestryTalents.selection}} + {{> apps/character-generator/details/ancestry-talents/choice-view}} + {{else}} + {{> apps/character-generator/details/ancestry-talents/choice-edit}} + {{/if}} +{{/if}} diff --git a/system/templates/apps/character-generator/_partials/ancestry-talents/fixed.hbs b/system/templates/apps/character-generator/details/ancestry-talents/fixed.hbs similarity index 100% rename from system/templates/apps/character-generator/_partials/ancestry-talents/fixed.hbs rename to system/templates/apps/character-generator/details/ancestry-talents/fixed.hbs diff --git a/system/templates/apps/character-generator/_partials/armor.hbs b/system/templates/apps/character-generator/details/armor.hbs similarity index 100% rename from system/templates/apps/character-generator/_partials/armor.hbs rename to system/templates/apps/character-generator/details/armor.hbs diff --git a/system/templates/apps/character-generator/_partials/class-description.hbs b/system/templates/apps/character-generator/details/class-description.hbs similarity index 100% rename from system/templates/apps/character-generator/_partials/class-description.hbs rename to system/templates/apps/character-generator/details/class-description.hbs diff --git a/system/templates/apps/character-generator/details/class-talents.hbs b/system/templates/apps/character-generator/details/class-talents.hbs new file mode 100644 index 00000000..d4dfd27b --- /dev/null +++ b/system/templates/apps/character-generator/details/class-talents.hbs @@ -0,0 +1,2 @@ +{{> apps/character-generator/details/class-talents/choice}} +{{> apps/character-generator/details/class-talents/fixed}} diff --git a/system/templates/apps/character-generator/details/class-talents/choice-edit.hbs b/system/templates/apps/character-generator/details/class-talents/choice-edit.hbs new file mode 100644 index 00000000..901b93c4 --- /dev/null +++ b/system/templates/apps/character-generator/details/class-talents/choice-edit.hbs @@ -0,0 +1,22 @@ +
    + + {{localize "SHADOWDARK.apps.character-generator.choose"}}: + + {{#each classTalents.choice as |value key|}} + + + + {{value.name}}. + + + {{{value.formattedDescription}}} + + {{#unless @last}} +
    + {{/unless}} + {{/each}} +
    diff --git a/system/templates/apps/character-generator/details/class-talents/choice-view.hbs b/system/templates/apps/character-generator/details/class-talents/choice-view.hbs new file mode 100644 index 00000000..d648ca8e --- /dev/null +++ b/system/templates/apps/character-generator/details/class-talents/choice-view.hbs @@ -0,0 +1,9 @@ +

    + + {{#each classTalents.selection as |value key|}} + + {{value.name}}. + + {{{value.formattedDescription}}} + {{/each}} +

    diff --git a/system/templates/apps/character-generator/details/class-talents/choice.hbs b/system/templates/apps/character-generator/details/class-talents/choice.hbs new file mode 100644 index 00000000..cd1c9b7b --- /dev/null +++ b/system/templates/apps/character-generator/details/class-talents/choice.hbs @@ -0,0 +1,7 @@ +{{#if classTalents.choice}} + {{#if classTalents.selection}} + {{> apps/character-generator/details/class-talents/choice-view}} + {{else}} + {{> apps/character-generator/details/class-talents/choice-edit}} + {{/if}} +{{/if}} diff --git a/system/templates/apps/character-generator/details/class-talents/fixed.hbs b/system/templates/apps/character-generator/details/class-talents/fixed.hbs new file mode 100644 index 00000000..d28a4f53 --- /dev/null +++ b/system/templates/apps/character-generator/details/class-talents/fixed.hbs @@ -0,0 +1,8 @@ +{{#each classTalents.fixed as |value key|}} +

    + + {{value.name}}. + + {{{value.formattedDescription}}} +

    +{{/each}} diff --git a/system/templates/apps/character-generator/details/gear.hbs b/system/templates/apps/character-generator/details/gear.hbs new file mode 100644 index 00000000..0a7cf381 --- /dev/null +++ b/system/templates/apps/character-generator/details/gear.hbs @@ -0,0 +1,10 @@ +{{#if level0}} +

    + + {{localize "SHADOWDARK.apps.character-generator.starting_gear"}}: + + {{#each gearSelected as |value key|}} + {{value.name}}{{#unless @last}}, {{/unless}} + {{/each}} +

    +{{/if}} diff --git a/system/templates/apps/character-generator/details/languages.hbs b/system/templates/apps/character-generator/details/languages.hbs new file mode 100644 index 00000000..e5a5a866 --- /dev/null +++ b/system/templates/apps/character-generator/details/languages.hbs @@ -0,0 +1,5 @@ +{{#if langData.edit}} + {{> apps/character-generator/details/languages/edit}} +{{else}} + {{> apps/character-generator/details/languages/view}} +{{/if}} diff --git a/system/templates/apps/character-generator/_partials/languages/edit.hbs b/system/templates/apps/character-generator/details/languages/edit.hbs similarity index 74% rename from system/templates/apps/character-generator/_partials/languages/edit.hbs rename to system/templates/apps/character-generator/details/languages/edit.hbs index 407b8dfe..f3f76972 100644 --- a/system/templates/apps/character-generator/_partials/languages/edit.hbs +++ b/system/templates/apps/character-generator/details/languages/edit.hbs @@ -13,7 +13,7 @@ {{#if langData.ancestry.select}}
    - {{> apps/character-generator/_partials/languages/language-choice + {{> apps/character-generator/details/languages/language-choice key="ancestry" label="" value=langData.ancestry @@ -23,7 +23,7 @@ {{#if langData.class.select}}
    - {{> apps/character-generator/_partials/languages/language-choice + {{> apps/character-generator/details/languages/language-choice key="class" label="" value=langData.class @@ -33,7 +33,7 @@ {{#if langData.common.select}}
    - {{> apps/character-generator/_partials/languages/language-choice + {{> apps/character-generator/details/languages/language-choice key="common" label=(localize "SHADOWDARK.language.rarity.common") value=langData.common @@ -43,7 +43,7 @@ {{#if langData.rare.select}}
    - {{> apps/character-generator/_partials/languages/language-choice + {{> apps/character-generator/details/languages/language-choice key="rare" label=(localize "SHADOWDARK.language.rarity.rare") value=langData.rare diff --git a/system/templates/apps/character-generator/_partials/languages/language-choice.hbs b/system/templates/apps/character-generator/details/languages/language-choice.hbs similarity index 100% rename from system/templates/apps/character-generator/_partials/languages/language-choice.hbs rename to system/templates/apps/character-generator/details/languages/language-choice.hbs diff --git a/system/templates/apps/character-generator/_partials/languages/view.hbs b/system/templates/apps/character-generator/details/languages/view.hbs similarity index 78% rename from system/templates/apps/character-generator/_partials/languages/view.hbs rename to system/templates/apps/character-generator/details/languages/view.hbs index 6d2c1fe9..2f2fbc93 100644 --- a/system/templates/apps/character-generator/_partials/languages/view.hbs +++ b/system/templates/apps/character-generator/details/languages/view.hbs @@ -3,7 +3,7 @@ {{/if}} - {{localize "SHADOWDARK.form.section_header.languages.label"}}. + {{localize "SHADOWDARK.form.section_header.languages.label"}}: {{#each actor.system.languages}} {{lookup ../languages .}}{{#unless @last}}, {{/unless}} diff --git a/system/templates/apps/character-generator/details/patron.hbs b/system/templates/apps/character-generator/details/patron.hbs new file mode 100644 index 00000000..c4dab341 --- /dev/null +++ b/system/templates/apps/character-generator/details/patron.hbs @@ -0,0 +1,7 @@ +{{#if patron.required}} + {{#if patron.choose}} + {{> apps/character-generator/details/patron/edit}} + {{else}} + {{> apps/character-generator/details/patron/view}} + {{/if}} +{{/if}} diff --git a/system/templates/apps/character-generator/details/patron/edit.hbs b/system/templates/apps/character-generator/details/patron/edit.hbs new file mode 100644 index 00000000..6a81283a --- /dev/null +++ b/system/templates/apps/character-generator/details/patron/edit.hbs @@ -0,0 +1,23 @@ +
    + + {{localize "SHADOWDARK.apps.character-generator.choose"}} + {{localize "SHADOWDARK.form.section_header.patron.label"}}: + + {{#each patrons as |value key|}} + + + + {{value.name}}. + + + {{{value.formattedDescription}}} + + {{#unless @last}} +
    + {{/unless}} + {{/each}} +
    diff --git a/system/templates/apps/character-generator/details/patron/view.hbs b/system/templates/apps/character-generator/details/patron/view.hbs new file mode 100644 index 00000000..854730e1 --- /dev/null +++ b/system/templates/apps/character-generator/details/patron/view.hbs @@ -0,0 +1,10 @@ +

    + + + {{localize "SHADOWDARK.form.section_header.patron.label"}}: + + {{patron.name}} — + + {{patron.formattedDescription}} + +

    diff --git a/system/templates/apps/character-generator/_partials/weapons.hbs b/system/templates/apps/character-generator/details/weapons.hbs similarity index 100% rename from system/templates/apps/character-generator/_partials/weapons.hbs rename to system/templates/apps/character-generator/details/weapons.hbs diff --git a/system/templates/apps/character-generator/gear.hbs b/system/templates/apps/character-generator/gear.hbs new file mode 100644 index 00000000..a26f2730 --- /dev/null +++ b/system/templates/apps/character-generator/gear.hbs @@ -0,0 +1,18 @@ +
    +
    + + + + +
    + +
    + {{localize "SHADOWDARK.apps.character-generator.see_details"}} +
    +
    diff --git a/system/templates/apps/character-generator/gold.hbs b/system/templates/apps/character-generator/gold.hbs new file mode 100644 index 00000000..6a426757 --- /dev/null +++ b/system/templates/apps/character-generator/gold.hbs @@ -0,0 +1,24 @@ +
    +
    + + + + +
    + +
    + + {{localize "SHADOWDARK.coins.gp"}} +
    +
    diff --git a/system/templates/apps/character-generator/hit-points.hbs b/system/templates/apps/character-generator/hit-points.hbs new file mode 100644 index 00000000..b9a0a7f5 --- /dev/null +++ b/system/templates/apps/character-generator/hit-points.hbs @@ -0,0 +1,16 @@ +
    +
    + + +
    + +
    + [{{classHP}}] + {{numberFormat actor.system.abilities.con.mod + decimals=0 + sign=true + }} +
    +
    diff --git a/system/templates/apps/character-generator/name.hbs b/system/templates/apps/character-generator/name.hbs new file mode 100644 index 00000000..98329af2 --- /dev/null +++ b/system/templates/apps/character-generator/name.hbs @@ -0,0 +1,25 @@ +
    +
    + + + {{#unless editing}} + + {{/unless}} + +
    +
    + +
    +
    diff --git a/system/templates/apps/character-generator/stats.hbs b/system/templates/apps/character-generator/stats.hbs new file mode 100644 index 00000000..fa592bde --- /dev/null +++ b/system/templates/apps/character-generator/stats.hbs @@ -0,0 +1,51 @@ +{{!-- Stats --}} +
    +
    + + + {{#unless editing}} + + {{/unless}} + +
    + +
    +
    + {{#each actor.system.abilities as |value key|}} +
    + +
    + + + {{numberFormat value.mod + decimals=0 + sign=true + }} + +
    +
    + {{/each}} +
    +
    + +
    diff --git a/system/templates/apps/character-generator/type.hbs b/system/templates/apps/character-generator/type.hbs new file mode 100644 index 00000000..8574c3be --- /dev/null +++ b/system/templates/apps/character-generator/type.hbs @@ -0,0 +1,34 @@ +
    +
    + + +
    +
    +
    + + {{localize "SHADOWDARK.talent.class.level"}} 0 +
    +
    + + {{localize "SHADOWDARK.talent.class.level"}} 1 +
    +
    +
    From 310cf2a8a00d0ec0cf229926b84ea7119428f040 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 10 Nov 2024 21:37:10 +0000 Subject: [PATCH 118/182] closes #908 --- RELEASE_NOTES.md | 7 +++---- data/packs/spells.db/cure_wounds__N9NvonT0RL6PyiiV.json | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 4059dca2..07205448 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -6,6 +6,7 @@ * [#879] Add new Patron item class * [#880] Create a new Patron Boon type for Talents * [#901] Added Russian as a partially complete system language. +* [#908] Add rollable dice to Cure Wounds spell that includes the necessary calculations *(Many thanks to **nschoenwald** for contributing to this issue)* * [#920] Show tooltips on weapon and armor properties when showing expanded inline view in inventory * [#937] Support selecting or rolling Patron in character generator * [#939] Add macro for launching the character generator @@ -23,10 +24,7 @@ * [#938] Unecessary line breaks in Farsight talent descriptions ## Chores -* [#911] Replaced compendium art mapping with default Foundry method. - - - Settings for compendium art mapping are now found in *Settings > Core > Compendium Art* - +* [#911] Replaced compendium art mapping with default Foundry method. *(Settings for compendium art mapping are now found in *Settings > Core > Compendium Art*)* * [#917] Restructure Item sheet templates to make them a bit more manageable * [#924] Perform an audit of existing templates to ensure we don't have any raw strings that should be i18n-ified * [#927] Migration runner accessing globalThis.duplicate which must now be accessed via foundry.utils.duplicate @@ -35,6 +33,7 @@ *Many thanks to **AdamsGH** for contributing **Russian** translation data.* + --- # v3.1.3 diff --git a/data/packs/spells.db/cure_wounds__N9NvonT0RL6PyiiV.json b/data/packs/spells.db/cure_wounds__N9NvonT0RL6PyiiV.json index 9d66e15f..86fedfe8 100644 --- a/data/packs/spells.db/cure_wounds__N9NvonT0RL6PyiiV.json +++ b/data/packs/spells.db/cure_wounds__N9NvonT0RL6PyiiV.json @@ -10,7 +10,7 @@ "class": [ "Compendium.shadowdark.classes.Item.oZWzXx1WRLg286zD" ], - "description": "

    Your touch restores ebbing life.

    Roll a number of d6s equal to 1 + half your level (rounded down).

    One target you touch regains that many hit points.

    ", + "description": "

    Your touch restores ebbing life.

    Roll a number of d6s equal to [[/roll (1 + (floor(@level.value/2)))d6]]{1 + half your level (rounded down)}.

    One target you touch regains that many hit points.

    ", "duration": { "type": "instant", "value": -1 From 387c6b0dd4625abde0a96d41948beff04286d003 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 10 Nov 2024 22:20:58 +0000 Subject: [PATCH 119/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index 2a285dfe..81d59666 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -46,6 +46,7 @@ SHADOWDARK.app.light-tracker.turn-out-the-lights: Выключить свет SHADOWDARK.app.loading.body: Поиск в далёких землях... SHADOWDARK.app.loading.title: Загрузка SHADOWDARK.app.npc_attack_ranges.title: Диапазоны атак +SHADOWDARK.apps.character-generator.choose: Choose SHADOWDARK.apps.character-generator.create_character: Создать персонажа SHADOWDARK.apps.character-generator.error.create: Не удалось создать персонажа игрока {error} SHADOWDARK.apps.character-generator.error.name: Имя персонажа не может быть пустым @@ -53,6 +54,8 @@ SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: Невозмож SHADOWDARK.apps.character-generator.gear: Снаряжение SHADOWDARK.apps.character-generator.gold: Золото SHADOWDARK.apps.character-generator.name: Имя персонажа +SHADOWDARK.apps.character-generator.see_details: See Details +SHADOWDARK.apps.character-generator.starting_gear: Starting Gear SHADOWDARK.apps.character-generator.success: Персонаж создан SHADOWDARK.apps.character-generator.title: Генератор персонажей SHADOWDARK.apps.character-generator.tooltip: Полностью случайный персонаж From c49710c4cd2b968dfdb13d045b139de2efb0cbc3 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 10 Nov 2024 22:21:00 +0000 Subject: [PATCH 120/182] New translations en.yaml (French) --- i18n/fr.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/i18n/fr.yaml b/i18n/fr.yaml index ab696673..bb6429a9 100644 --- a/i18n/fr.yaml +++ b/i18n/fr.yaml @@ -46,6 +46,7 @@ SHADOWDARK.app.light-tracker.turn-out-the-lights: Éteindre les lumières SHADOWDARK.app.loading.body: Searching Distant Lands... SHADOWDARK.app.loading.title: Loading SHADOWDARK.app.npc_attack_ranges.title: Portées d'Attaque +SHADOWDARK.apps.character-generator.choose: Choose SHADOWDARK.apps.character-generator.create_character: Create Character SHADOWDARK.apps.character-generator.error.create: Failed to create player character {error} SHADOWDARK.apps.character-generator.error.name: Character name cannot be blank @@ -53,6 +54,8 @@ SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: Unable to roll a SHADOWDARK.apps.character-generator.gear: Gear SHADOWDARK.apps.character-generator.gold: Gold SHADOWDARK.apps.character-generator.name: Character Name +SHADOWDARK.apps.character-generator.see_details: See Details +SHADOWDARK.apps.character-generator.starting_gear: Starting Gear SHADOWDARK.apps.character-generator.success: Character created SHADOWDARK.apps.character-generator.title: Character Generator SHADOWDARK.apps.character-generator.tooltip: Fully Random Character From 55e038608e52defa112e359997fc7eed6a1adf13 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 10 Nov 2024 22:21:01 +0000 Subject: [PATCH 121/182] New translations en.yaml (Spanish) --- i18n/es.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/i18n/es.yaml b/i18n/es.yaml index 8b205b95..dd4bc9b4 100644 --- a/i18n/es.yaml +++ b/i18n/es.yaml @@ -46,6 +46,7 @@ SHADOWDARK.app.light-tracker.turn-out-the-lights: Apagar las luces SHADOWDARK.app.loading.body: Burcando en tierras lejanas... SHADOWDARK.app.loading.title: Cargando SHADOWDARK.app.npc_attack_ranges.title: Rangos de ataque +SHADOWDARK.apps.character-generator.choose: Choose SHADOWDARK.apps.character-generator.create_character: Crear personaje SHADOWDARK.apps.character-generator.error.create: Error al crear el personaje jugador {error} SHADOWDARK.apps.character-generator.error.name: El nombre del personaje no puede estar en blanco @@ -53,6 +54,8 @@ SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: No se puede gene SHADOWDARK.apps.character-generator.gear: Equipo SHADOWDARK.apps.character-generator.gold: Oro SHADOWDARK.apps.character-generator.name: Nombre del personaje +SHADOWDARK.apps.character-generator.see_details: See Details +SHADOWDARK.apps.character-generator.starting_gear: Starting Gear SHADOWDARK.apps.character-generator.success: Personaje creado SHADOWDARK.apps.character-generator.title: Generador de personaje SHADOWDARK.apps.character-generator.tooltip: Personaje aleatorio From 76304a8922ae674182016a460b9f7d375780a1f4 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 10 Nov 2024 22:21:02 +0000 Subject: [PATCH 122/182] New translations en.yaml (German) --- i18n/de.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/i18n/de.yaml b/i18n/de.yaml index 469ac9f2..e6aa21f8 100644 --- a/i18n/de.yaml +++ b/i18n/de.yaml @@ -46,6 +46,7 @@ SHADOWDARK.app.light-tracker.turn-out-the-lights: Licht ausschalten SHADOWDARK.app.loading.body: Searching Distant Lands... SHADOWDARK.app.loading.title: Loading SHADOWDARK.app.npc_attack_ranges.title: Angriffsreichweite +SHADOWDARK.apps.character-generator.choose: Choose SHADOWDARK.apps.character-generator.create_character: Create Character SHADOWDARK.apps.character-generator.error.create: Failed to create player character {error} SHADOWDARK.apps.character-generator.error.name: Character name cannot be blank @@ -53,6 +54,8 @@ SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: Unable to roll a SHADOWDARK.apps.character-generator.gear: Gear SHADOWDARK.apps.character-generator.gold: Gold SHADOWDARK.apps.character-generator.name: Character Name +SHADOWDARK.apps.character-generator.see_details: See Details +SHADOWDARK.apps.character-generator.starting_gear: Starting Gear SHADOWDARK.apps.character-generator.success: Character created SHADOWDARK.apps.character-generator.title: Character Generator SHADOWDARK.apps.character-generator.tooltip: Fully Random Character From 4ba6a3afe175aca1362b7835b1ea3009e99aece0 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 10 Nov 2024 22:21:03 +0000 Subject: [PATCH 123/182] New translations en.yaml (Finnish) --- i18n/fi.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/i18n/fi.yaml b/i18n/fi.yaml index 157166f4..69f4f00a 100644 --- a/i18n/fi.yaml +++ b/i18n/fi.yaml @@ -46,6 +46,7 @@ SHADOWDARK.app.light-tracker.turn-out-the-lights: Sammuta kaikki valonlähteet SHADOWDARK.app.loading.body: Etsitään kaukaisia maita... SHADOWDARK.app.loading.title: Ladataan SHADOWDARK.app.npc_attack_ranges.title: Kantamat +SHADOWDARK.apps.character-generator.choose: Choose SHADOWDARK.apps.character-generator.create_character: Luo uusi hahmo SHADOWDARK.apps.character-generator.error.create: Pelaajahahmon luonti epäonnistui {error} SHADOWDARK.apps.character-generator.error.name: Hahmon nimi ei voi olla tyhjä @@ -53,6 +54,8 @@ SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: Ei pystytä arpo SHADOWDARK.apps.character-generator.gear: Varusteet SHADOWDARK.apps.character-generator.gold: Kulta SHADOWDARK.apps.character-generator.name: Hahmon nimi +SHADOWDARK.apps.character-generator.see_details: See Details +SHADOWDARK.apps.character-generator.starting_gear: Starting Gear SHADOWDARK.apps.character-generator.success: Hahmo luotu SHADOWDARK.apps.character-generator.title: Hahmogeneraattori SHADOWDARK.apps.character-generator.tooltip: Täysin satunnainen hahmo From a1d8156d517cd0f579d3b10b34744079c7ebcb0e Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 10 Nov 2024 22:21:04 +0000 Subject: [PATCH 124/182] New translations en.yaml (Korean) --- i18n/ko.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/i18n/ko.yaml b/i18n/ko.yaml index 50298f38..1100069c 100644 --- a/i18n/ko.yaml +++ b/i18n/ko.yaml @@ -46,6 +46,7 @@ SHADOWDARK.app.light-tracker.turn-out-the-lights: 모든 불 끄기 SHADOWDARK.app.loading.body: Searching Distant Lands... SHADOWDARK.app.loading.title: Loading SHADOWDARK.app.npc_attack_ranges.title: 공격 범위 +SHADOWDARK.apps.character-generator.choose: Choose SHADOWDARK.apps.character-generator.create_character: Create Character SHADOWDARK.apps.character-generator.error.create: Failed to create player character {error} SHADOWDARK.apps.character-generator.error.name: Character name cannot be blank @@ -53,6 +54,8 @@ SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: Unable to roll a SHADOWDARK.apps.character-generator.gear: Gear SHADOWDARK.apps.character-generator.gold: Gold SHADOWDARK.apps.character-generator.name: Character Name +SHADOWDARK.apps.character-generator.see_details: See Details +SHADOWDARK.apps.character-generator.starting_gear: Starting Gear SHADOWDARK.apps.character-generator.success: Character created SHADOWDARK.apps.character-generator.title: Character Generator SHADOWDARK.apps.character-generator.tooltip: Fully Random Character From f9e0ca2cace4171707a4fac32428521ea9f9563c Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 10 Nov 2024 22:21:05 +0000 Subject: [PATCH 125/182] New translations en.yaml (Swedish) --- i18n/sv.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/i18n/sv.yaml b/i18n/sv.yaml index e16603da..dd4fc8c7 100644 --- a/i18n/sv.yaml +++ b/i18n/sv.yaml @@ -46,6 +46,7 @@ SHADOWDARK.app.light-tracker.turn-out-the-lights: Släck ljusen SHADOWDARK.app.loading.body: Searching Distant Lands... SHADOWDARK.app.loading.title: Loading SHADOWDARK.app.npc_attack_ranges.title: Attackavstånd +SHADOWDARK.apps.character-generator.choose: Choose SHADOWDARK.apps.character-generator.create_character: Create Character SHADOWDARK.apps.character-generator.error.create: Det gick inte att skapa spelarkaraktär {error} SHADOWDARK.apps.character-generator.error.name: Karaktärens namn får inte vara tomt @@ -53,6 +54,8 @@ SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: Det går inte at SHADOWDARK.apps.character-generator.gear: Gear SHADOWDARK.apps.character-generator.gold: Gold SHADOWDARK.apps.character-generator.name: Karaktärsnamn +SHADOWDARK.apps.character-generator.see_details: See Details +SHADOWDARK.apps.character-generator.starting_gear: Starting Gear SHADOWDARK.apps.character-generator.success: Character created SHADOWDARK.apps.character-generator.title: Karaktärsgenerator SHADOWDARK.apps.character-generator.tooltip: Fully Random Character From 99d1ddc2dcffbd12434badaf9ef632bc36196d5c Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sun, 10 Nov 2024 22:21:07 +0000 Subject: [PATCH 126/182] New translations en.yaml (Portuguese, Brazilian) --- i18n/pt_BR.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/i18n/pt_BR.yaml b/i18n/pt_BR.yaml index 8d995fe1..3f8834db 100644 --- a/i18n/pt_BR.yaml +++ b/i18n/pt_BR.yaml @@ -46,6 +46,7 @@ SHADOWDARK.app.light-tracker.turn-out-the-lights: Apagar Todas as Luzes SHADOWDARK.app.loading.body: Buscando por Terras Distantes... SHADOWDARK.app.loading.title: Carregando SHADOWDARK.app.npc_attack_ranges.title: Alcance de Ataque +SHADOWDARK.apps.character-generator.choose: Choose SHADOWDARK.apps.character-generator.create_character: Criar Personagem SHADOWDARK.apps.character-generator.error.create: Falha ao criar personagem {error} SHADOWDARK.apps.character-generator.error.name: O nome do personagem não pode estar em branco @@ -53,6 +54,8 @@ SHADOWDARK.apps.character-generator.error.no_ancestry_for_name: Não é possíve SHADOWDARK.apps.character-generator.gear: Equipamento SHADOWDARK.apps.character-generator.gold: Ouro SHADOWDARK.apps.character-generator.name: Nome do Personagem +SHADOWDARK.apps.character-generator.see_details: See Details +SHADOWDARK.apps.character-generator.starting_gear: Starting Gear SHADOWDARK.apps.character-generator.success: Personagem criado SHADOWDARK.apps.character-generator.title: Gerador de Personagem SHADOWDARK.apps.character-generator.tooltip: Personagem Aleatório From 8a4346ec970c2c7cf57be75a393a507132df7ab6 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Tue, 12 Nov 2024 18:58:12 +0000 Subject: [PATCH 127/182] closes #881 --- RELEASE_NOTES.md | 1 + i18n/en.yaml | 4 + system/src/apps/LevelUpSD.mjs | 65 ++++++++++- system/src/documents/ActorSD.mjs | 9 +- system/src/sheets/PlayerSheetSD.mjs | 2 +- system/src/templates.mjs | 5 +- system/templates/apps/level-up.hbs | 124 ++++----------------- system/templates/apps/level-up/hp.hbs | 32 ++++++ system/templates/apps/level-up/spells.hbs | 53 +++++++++ system/templates/apps/level-up/talents.hbs | 72 ++++++++++++ 10 files changed, 256 insertions(+), 111 deletions(-) create mode 100644 system/templates/apps/level-up/hp.hbs create mode 100644 system/templates/apps/level-up/spells.hbs create mode 100644 system/templates/apps/level-up/talents.hbs diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 07205448..7940748c 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -5,6 +5,7 @@ * [#847] Add support for Warlock class Boon which gives the ability to learn a Wizard spell * [#879] Add new Patron item class * [#880] Create a new Patron Boon type for Talents +* [#881] Support rolling on a character's Patron's Boon table if necessary in the Level Up app * [#901] Added Russian as a partially complete system language. * [#908] Add rollable dice to Cure Wounds spell that includes the necessary calculations *(Many thanks to **nschoenwald** for contributing to this issue)* * [#920] Show tooltips on weapon and armor properties when showing expanded inline view in inventory diff --git a/i18n/en.yaml b/i18n/en.yaml index 2c1cc746..60021263 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -89,12 +89,15 @@ SHADOWDARK.apps.item-importer.instruction2d: Features SHADOWDARK.apps.item-importer.instruction3: 3. Click Import Item. SHADOWDARK.apps.item-importer.title: Import Item SHADOWDARK.apps.level-up.dragdrop: Drag and Drop Here +SHADOWDARK.apps.level-up.errors.missing_boon_table: Unable to roll Patron Boon as the configured RollTable could not be loaded SHADOWDARK.apps.level-up.hit_points: Hit Points SHADOWDARK.apps.level-up.level_up: Level Up! SHADOWDARK.apps.level-up.leveling_to: Leveling up to level SHADOWDARK.apps.level-up.missing_selections: Missing Selections SHADOWDARK.apps.level-up.notalent: No talents gained at this level +SHADOWDARK.apps.level-up.or_boons: or Boons SHADOWDARK.apps.level-up.prompt: Not all required selections have been made. Continue with level up anyways? +SHADOWDARK.apps.level-up.roll_boon: Roll Boon SHADOWDARK.apps.level-up.roll_talent: Roll Talent SHADOWDARK.apps.level-up.title: Leveling Up SHADOWDARK.apps.monster-importer.import_button: Import Monster @@ -267,6 +270,7 @@ SHADOWDARK.dialog.general.no: "No" SHADOWDARK.dialog.general.select: Select SHADOWDARK.dialog.general.yes: "Yes" SHADOWDARK.dialog.gm: Gamemaster +SHADOWDARK.dialog.hp_re_roll.title: HP Re-roll SHADOWDARK.dialog.hp_roll.per_level: Roll HP for level {level} SHADOWDARK.dialog.hp_roll.previous_hp: "HP before rolling: {hp}" SHADOWDARK.dialog.hp_roll.roll_level_1: Rolled {hp} hp for level 1 (incl. con mod) diff --git a/system/src/apps/LevelUpSD.mjs b/system/src/apps/LevelUpSD.mjs index efd89c58..c5f32a87 100644 --- a/system/src/apps/LevelUpSD.mjs +++ b/system/src/apps/LevelUpSD.mjs @@ -57,9 +57,14 @@ export default class LevelUpSD extends FormApplication { event => this._onReRollHP(event) ); + html.find("[data-action='view-boon-table']").click( + event => this._viewBoonTable(event) + ); + html.find("[data-action='view-talent-table']").click( event => this._viewTalentTable(event) ); + html.find("[data-action='open-spellbook']").click( event => this._openSpellBook(event) ); @@ -72,6 +77,10 @@ export default class LevelUpSD extends FormApplication { event => this._onDeleteSpell(event) ); + html.find("[data-action='roll-boon']").click( + event => this._onRollBoon(event) + ); + html.find("[data-action='roll-talent']").click( event => this._onRollTalent(event) ); @@ -93,10 +102,27 @@ export default class LevelUpSD extends FormApplication { this.data.class = await fromUuid(this.data.actor.system.class); this.data.talentTable = await fromUuid(this.data.class.system.classTalentTable); this.data.currentLevel = this.data.actor.system.level.value; - this.data.targetLevel = this.data.currentLevel +1; + this.data.targetLevel = this.data.currentLevel + 1; this.data.talentGained = (this.data.targetLevel % 2 !== 0); this.data.totalSpellsToChoose = 0; + this.data.patron = await fromUuid(this.data.actor.system.patron); + + this.data.boonTable = this.data.patron + ? await fromUuid(this.data.patron.system.boonTable) + : undefined; + + this.data.startingBoons = 0; + const classData = this.data.class.system; + this.data.canRollBoons = classData.patron.required; + + const needsStartingBoons = classData.patron.required + && classData.patron.startingBoons > 0; + + if (this.data.targetLevel === 1 && needsStartingBoons) { + this.data.startingBoons = classData.patron.startingBoons; + } + if (await this.data.actor.isSpellCaster()) { this.data.spellcastingClass = this.data.class.system.spellcasting.class === "" @@ -129,6 +155,7 @@ export default class LevelUpSD extends FormApplication { } } + return this.data; } @@ -152,6 +179,10 @@ export default class LevelUpSD extends FormApplication { } } + async _viewBoonTable() { + this.data.boonTable.sheet.render(true); + } + async _viewTalentTable() { this.data.talentTable.sheet.render(true); } @@ -160,13 +191,17 @@ export default class LevelUpSD extends FormApplication { this.data.actor.openSpellBook(); } - async _onRollHP() { + async _onRollHP({isReroll = false}) { const data = { rollType: "hp", actor: this.data.actor, }; let options = {}; - options.title = game.i18n.localize("SHADOWDARK.dialog.hp_roll.title"); + + options.title = isReroll + ? game.i18n.localize("SHADOWDARK.dialog.hp_re_roll.title") + : game.i18n.localize("SHADOWDARK.dialog.hp_roll.title"); + options.flavor = options.title; options.chatCardTemplate = "systems/shadowdark/templates/chat/roll-hp.hbs"; options.fastForward = true; @@ -186,12 +221,30 @@ export default class LevelUpSD extends FormApplication { Dialog.confirm({ title: "Re-Roll HP", content: "Are you sure you want to re-roll hit points?", - yes: () => this._onRollHP(), + yes: () => this._onRollHP({isReroll: true}), no: () => null, defaultYes: false, }); } + async _onRollBoon() { + if (!this.data.boonTable) { + return ui.notifications.warn( + game.i18n.localize("SHADOWDARK.apps.level-up.errors.missing_boon_table") + ); + } + + await this.data.boonTable.draw(); + ui.sidebar.activateTab("chat"); + + if (this.data.targetLevel > 1) { + this.data.rolls.talent = true; + } + this.data.rolls.boon = true; + + this.render(); + } + async _onRollTalent() { await this.data.talentTable.draw(); ui.sidebar.activateTab("chat"); @@ -208,7 +261,11 @@ export default class LevelUpSD extends FormApplication { } } + if (this.data.targetLevel > 1) { + this.data.rolls.boon = true; + } this.data.rolls.talent = true; + this.render(); } diff --git a/system/src/documents/ActorSD.mjs b/system/src/documents/ActorSD.mjs index 2d1f0a75..1677002c 100644 --- a/system/src/documents/ActorSD.mjs +++ b/system/src/documents/ActorSD.mjs @@ -881,7 +881,14 @@ export default class ActorSD extends Actor { const spellcasterClasses = await shadowdark.compendiums.spellcastingBaseClasses(); - for (const bonusClass of this.system.bonuses.spellcastingClasses ?? []) { + // De-duplicate any bonus classes the Actor has + const bonusClasses = [ + ...new Set( + this.system.bonuses.spellcastingClasses ?? [] + ), + ]; + + for (const bonusClass of bonusClasses) { playerSpellClasses.push( spellcasterClasses.find(c => c.name.slugify() === bonusClass) ); diff --git a/system/src/sheets/PlayerSheetSD.mjs b/system/src/sheets/PlayerSheetSD.mjs index 56015a20..235b6efe 100644 --- a/system/src/sheets/PlayerSheetSD.mjs +++ b/system/src/sheets/PlayerSheetSD.mjs @@ -211,7 +211,7 @@ export default class PlayerSheetSD extends ActorSheetSD { ); context.characterClass = await this.actor.getClass(); - context.classHasPatron = context.characterClass.system.patron.required; + context.classHasPatron = context.characterClass?.system?.patron?.required ?? false; context.classTitle = await this.actor.getTitle(); context.characterPatron = await this.actor.getPatron(); diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 31ca8380..8805b736 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -66,8 +66,8 @@ export default function() { "systems/shadowdark/templates/apps/character-generator/details/languages/language-choice.hbs", "systems/shadowdark/templates/apps/character-generator/details/languages/view.hbs", "systems/shadowdark/templates/apps/character-generator/details/patron.hbs", - "systems/shadowdark/templates/apps/character-generator/details/patron/view.hbs", "systems/shadowdark/templates/apps/character-generator/details/patron/edit.hbs", + "systems/shadowdark/templates/apps/character-generator/details/patron/view.hbs", "systems/shadowdark/templates/apps/character-generator/details/weapons.hbs", "systems/shadowdark/templates/apps/character-generator/gear.hbs", "systems/shadowdark/templates/apps/character-generator/gold.hbs", @@ -75,6 +75,9 @@ export default function() { "systems/shadowdark/templates/apps/character-generator/name.hbs", "systems/shadowdark/templates/apps/character-generator/stats.hbs", "systems/shadowdark/templates/apps/character-generator/type.hbs", + "systems/shadowdark/templates/apps/level-up/hp.hbs", + "systems/shadowdark/templates/apps/level-up/spells.hbs", + "systems/shadowdark/templates/apps/level-up/talents.hbs", "systems/shadowdark/templates/items/_partials/choice-selector.hbs", "systems/shadowdark/templates/items/_partials/cost.hbs", "systems/shadowdark/templates/items/_partials/description-tab.hbs", diff --git a/system/templates/apps/level-up.hbs b/system/templates/apps/level-up.hbs index f463d7cc..7be86c23 100644 --- a/system/templates/apps/level-up.hbs +++ b/system/templates/apps/level-up.hbs @@ -1,109 +1,25 @@
    -
    -
    -

    {{actor.name}}

    -

    {{localize "SHADOWDARK.apps.level-up.leveling_to"}} {{targetLevel}}

    -
    - - {{!-- Hit Points --}} -
    -
    - - {{class.system.hitPoints}} - {{#if rolls.hp}} - - {{/if}} - -
    -
    - {{#if rolls.hp}} - {{rolls.hp}} - {{#ifEq targetLevel 1}} - ({{numberFormat actor.system.abilities.con.mod decimals=0 sign=true}}) - {{/ifEq}} - {{/if}} - {{#unless rolls.hp}} - - {{/unless}} +
    +
    +

    + {{actor.name}} +

    +

    + {{localize "SHADOWDARK.apps.level-up.leveling_to"}} + {{targetLevel}} +

    -
    - {{!-- Talents --}} -
    -
    - - -
    -
    - {{#unless talentGained}} - {{localize "SHADOWDARK.apps.level-up.notalent"}} - {{/unless}} - {{#if talentGained}} - {{#unless rolls.talent}} - - {{/unless}} - {{#if rolls.talent}} -
    - {{#unless talents}}
    {{localize "SHADOWDARK.apps.level-up.dragdrop"}}
    {{/unless}} - {{#each talents}} - - {{/each}} -
    - {{/if}} - {{/if}} -
    -
    + {{> apps/level-up/hp}} + {{> apps/level-up/talents}} + {{> apps/level-up/spells}} - {{!-- Spells --}} - {{#ifCond totalSpellsToChoose ">" 0}} -
    -
    - - -
    -
    - {{#each spells}} - {{#if this.max}} -
    -

    {{this.name}}

    -
    - {{#each (addEmptySlots this.objects this.max)}} -
    - {{#if this}} - - {{/if}} - {{#unless this}} -
    {{localize "SHADOWDARK.apps.level-up.dragdrop"}}
    - {{/unless}} -
    - {{/each}} -
    -
    - {{/if}} - {{/each}} -
    -
    - {{/ifCond}} - -
    + +
    diff --git a/system/templates/apps/level-up/hp.hbs b/system/templates/apps/level-up/hp.hbs new file mode 100644 index 00000000..f47209f0 --- /dev/null +++ b/system/templates/apps/level-up/hp.hbs @@ -0,0 +1,32 @@ +
    +
    + + + {{class.system.hitPoints}} + {{#if rolls.hp}} + + {{/if}} + +
    + +
    + {{#if rolls.hp}} + {{rolls.hp}} + {{#ifEq targetLevel 1}} + + ({{numberFormat actor.system.abilities.con.mod + decimals=0 + sign=true + }}) + + {{/ifEq}} + {{/if}} + {{#unless rolls.hp}} + + {{/unless}} +
    +
    diff --git a/system/templates/apps/level-up/spells.hbs b/system/templates/apps/level-up/spells.hbs new file mode 100644 index 00000000..965813e2 --- /dev/null +++ b/system/templates/apps/level-up/spells.hbs @@ -0,0 +1,53 @@ +{{#ifCond totalSpellsToChoose ">" 0}} +
    +
    + + + + +
    + +
    + {{#each spells}} + {{#if this.max}} +
    +

    + {{this.name}} +

    +
    + {{#each (addEmptySlots this.objects this.max)}} +
    + {{#if this}} + + {{/if}} + {{#unless this}} +
    + {{localize "SHADOWDARK.apps.level-up.dragdrop"}} +
    + {{/unless}} +
    + {{/each}} +
    +
    + {{/if}} + {{/each}} +
    +
    +{{/ifCond}} diff --git a/system/templates/apps/level-up/talents.hbs b/system/templates/apps/level-up/talents.hbs new file mode 100644 index 00000000..ba821ac8 --- /dev/null +++ b/system/templates/apps/level-up/talents.hbs @@ -0,0 +1,72 @@ +{{!-- Talents --}} +
    +
    + + + + {{#if canRollBoons}} + + {{/if}} + +
    + +
    + {{#unless talentGained}} + {{localize "SHADOWDARK.apps.level-up.notalent"}} + {{/unless}} + + {{#if talentGained}} + {{#unless rolls.talent}} + + {{/unless}} + {{#if canRollBoons}} + {{#unless rolls.boon}} + + {{/unless}} + {{/if}} + +
    + {{#unless talents}} +
    + {{localize "SHADOWDARK.apps.level-up.dragdrop"}} +
    + {{/unless}} + + {{#each talents}} + + {{/each}} +
    + {{/if}} +
    +
    From 27b2a7cfe5ece18c61ac5ac6c161c0f485f9b159 Mon Sep 17 00:00:00 2001 From: Prototype Date: Wed, 13 Nov 2024 22:42:40 -0800 Subject: [PATCH 128/182] Fully working --- i18n/en.yaml | 8 ++++ scss/shadowdark.scss | 8 ++++ system/src/apps/RequestCheckSD.mjs | 59 +++++++++++++++++++++++++ system/src/apps/_module.mjs | 1 + system/templates/apps/request-check.hbs | 32 ++++++++++++++ 5 files changed, 108 insertions(+) create mode 100644 system/src/apps/RequestCheckSD.mjs create mode 100644 system/templates/apps/request-check.hbs diff --git a/i18n/en.yaml b/i18n/en.yaml index 8f73f4c7..b724ded2 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -103,6 +103,14 @@ SHADOWDARK.apps.monster-importer.instruction2d: Main stat block SHADOWDARK.apps.monster-importer.instruction2e: Feature SHADOWDARK.apps.monster-importer.instruction3: 3. Click Import Monster. SHADOWDARK.apps.monster-importer.title: Import Monster +SHADOWDARK.apps.request-check.copied: Copied to Clipboard +SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard +SHADOWDARK.apps.request-check.custom: Custom +SHADOWDARK.apps.request-check.easy: Easy +SHADOWDARK.apps.request-check.hard: Hard +SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.normal: Normal +SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.import_button: Import diff --git a/scss/shadowdark.scss b/scss/shadowdark.scss index 752f9d9f..37219d9d 100644 --- a/scss/shadowdark.scss +++ b/scss/shadowdark.scss @@ -20,6 +20,10 @@ width: 100%; } + input[type=radio] { + width: auto; + } + hr { border: none; border-top: solid 1px #{$primary-color}; @@ -79,4 +83,8 @@ } } + .checkbox { + font-size:14px; + }; + } diff --git a/system/src/apps/RequestCheckSD.mjs b/system/src/apps/RequestCheckSD.mjs new file mode 100644 index 00000000..b32e93af --- /dev/null +++ b/system/src/apps/RequestCheckSD.mjs @@ -0,0 +1,59 @@ +export default class RequestCheckSD extends FormApplication { + + static get defaultOptions() { + return foundry.utils.mergeObject(super.defaultOptions, { + classes: ["shadowdark"], + template: "systems/shadowdark/templates/apps/request-check.hbs", + width: 400, + title: game.i18n.localize("SHADOWDARK.apps.request-check.title"), + closeOnSubmit: false, + }); + } + + activateListeners(html) { + super.activateListeners(html); + + html.find(".custom-dc").click( + event => { + $(event.target).siblings()[0].checked=true; + } + ); + } + + /** @override */ + async getData() { + return { + stats: CONFIG.SHADOWDARK.ABILITIES_LONG, + difficulty: { + 9: `9 (${game.i18n.localize("SHADOWDARK.apps.request-check.easy")})`, + 12: `12 (${game.i18n.localize("SHADOWDARK.apps.request-check.normal")})`, + 15: `15 (${game.i18n.localize("SHADOWDARK.apps.request-check.hard")})`, + 18: `18 (${game.i18n.localize("SHADOWDARK.apps.request-check.extreme")})`, + }, + }; + } + + /** @inheritdoc */ + async _updateObject(event, data) { + + if (data.custom) { + data.difficulty = data.custom; + } + data.difficulty = parseInt(data.difficulty); + + switch (event.submitter.name) { + case "request-copy": + let linkText = `[[request ${data.difficulty} ${data.stat}]]`; + await navigator.clipboard.writeText(linkText); + ui.notifications.info(game.i18n.localize("SHADOWDARK.apps.request-check.copied")); + break; + case "request-check": + shadowdark.checks.displayRequest(data.difficulty, data.stat); + this.close(); + break; + default: + shadowdark.log("Request Check Error"); + } + } + +} diff --git a/system/src/apps/_module.mjs b/system/src/apps/_module.mjs index d474c5c6..ee8f4533 100644 --- a/system/src/apps/_module.mjs +++ b/system/src/apps/_module.mjs @@ -8,6 +8,7 @@ export {default as LightSourceTrackerSD} from "./LightSourceTrackerSD.mjs"; export {default as LoadingSD} from "./LoadingSD.mjs"; export {default as MonsterImporterSD} from "./MonsterImporterSD.mjs"; export {default as NpcAttackRangesSD} from "./NpcAttackRangesSD.mjs"; +export {default as RequestCheckSD} from "./RequestCheckSD.mjs"; export {default as ShadowdarklingImporterSD} from "./ShadowdarklingImporterSD.mjs"; export {default as SpellBookSD} from "./SpellBookSD.mjs"; export {default as SpellImporterSD} from "./SpellImporterSD.mjs"; diff --git a/system/templates/apps/request-check.hbs b/system/templates/apps/request-check.hbs new file mode 100644 index 00000000..8a2816f9 --- /dev/null +++ b/system/templates/apps/request-check.hbs @@ -0,0 +1,32 @@ +
    +
    + {{#> ui/sd-box + header-label="Difficulty" + }} +
    + {{radioBoxes "difficulty" difficulty checked="12"}} +
    + +
    + {{/ui/sd-box}} + + {{#> ui/sd-box + header-label="Stat" + }} +
    + {{radioBoxes "stat" stats checked="str"}} +
    + {{/ui/sd-box}} + +
    + + + +
    +
    From abe904e88750c5a52b19ec0c73f52f25fa56b637 Mon Sep 17 00:00:00 2001 From: Prototype Date: Wed, 13 Nov 2024 22:54:36 -0800 Subject: [PATCH 129/182] Added a launch macro --- data/macros/request-a-check.js | 6 ++++++ .../macros.db/request_a_check__YOZcP9WGwie1dLIu.json | 11 +++++++++++ 2 files changed, 17 insertions(+) create mode 100644 data/macros/request-a-check.js create mode 100644 data/packs/macros.db/request_a_check__YOZcP9WGwie1dLIu.json diff --git a/data/macros/request-a-check.js b/data/macros/request-a-check.js new file mode 100644 index 00000000..f930ba26 --- /dev/null +++ b/data/macros/request-a-check.js @@ -0,0 +1,6 @@ +/** + ************************************************ + * This macro opens the request check dialog box + ************************************************/ + +new shadowdark.apps.RequestCheckSD().render(true); diff --git a/data/packs/macros.db/request_a_check__YOZcP9WGwie1dLIu.json b/data/packs/macros.db/request_a_check__YOZcP9WGwie1dLIu.json new file mode 100644 index 00000000..fb8efc00 --- /dev/null +++ b/data/packs/macros.db/request_a_check__YOZcP9WGwie1dLIu.json @@ -0,0 +1,11 @@ +{ + "_id": "YOZcP9WGwie1dLIu", + "_key": "!macros!YOZcP9WGwie1dLIu", + "author": "XOge3YaW9qcUJnuq", + "command": "/**\n ************************************************\n * This macro opens the request check dialog box\n ************************************************/\n\nnew shadowdark.apps.RequestCheckSD().render(true);", + "folder": null, + "img": "icons/sundries/gaming/dice-runed-brown.webp", + "name": "Request a Check", + "scope": "global", + "type": "script" +} From 4ba84d30402ebbd6c3f4c8796f68586de0e61e2d Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 13:56:12 +0000 Subject: [PATCH 130/182] closes #921 --- RELEASE_NOTES.md | 1 + i18n/en.yaml | 12 + scss/base/_components.scss | 7 +- scss/sheets/_actor.scss | 28 +- scss/sheets/_item.scss | 2 + scss/sheets/actors/_player.scss | 18 +- system/shadowdark.mjs | 2 + system/src/apps/CharacterGeneratorSD.mjs | 4 +- system/src/apps/LevelUpSD.mjs | 2 +- system/src/config.mjs | 80 +-- system/src/documents/ActorSD.mjs | 20 +- system/src/documents/ItemSD.mjs | 186 +------ system/src/effects.mjs | 480 ++++++++++++++++++ system/src/handlebars.mjs | 11 + system/src/sheets/ActorSheetSD.mjs | 66 +++ system/src/sheets/ItemSheetSD.mjs | 215 +------- system/src/sheets/PlayerSheetSD.mjs | 33 +- system/src/templates.mjs | 11 +- system/src/utils/UtilitySD.mjs | 211 +++----- .../{partials => _partials}/details/armor.hbs | 0 .../details/default.hbs | 0 .../details/effect.hbs | 0 .../{partials => _partials}/details/spell.hbs | 0 .../details/weapon.hbs | 0 .../{partials => _partials}/npc-attack.hbs | 0 .../npc-special-attack.hbs | 0 .../predefined-effects-selector.hbs} | 2 +- .../{partials => _partials}/weapon-attack.hbs | 0 system/templates/actors/_partials/effects.hbs | 5 + .../_partials/effects/active-effect.hbs | 59 +++ .../_partials/effects/active-effects.hbs | 42 ++ .../effects/effects-and-conditions.hbs | 42 ++ system/templates/actors/npc.hbs | 2 +- system/templates/actors/partials/effects.hbs | 30 -- system/templates/actors/player.hbs | 2 +- .../actors/player/details/ancestry.hbs | 2 +- .../actors/player/details/background.hbs | 2 +- .../templates/actors/player/details/boons.hbs | 100 ++-- .../templates/actors/player/details/class.hbs | 2 +- .../templates/actors/player/details/deity.hbs | 2 +- .../actors/player/details/patron.hbs | 2 +- .../actors/player/inventory/carried-gear.hbs | 61 +-- .../actors/player/inventory/equipped-gear.hbs | 50 +- .../actors/player/inventory/stashed-gear.hbs | 95 ++-- system/templates/actors/player/notes.hbs | 22 +- system/templates/actors/player/spells.hbs | 276 +++++----- system/templates/actors/player/talents.hbs | 72 +-- system/templates/apps/effect-panel.hbs | 2 +- system/templates/dialog/are-you-sure.hbs | 3 + .../templates/items/_partials/effects-tab.hbs | 4 +- .../items/_partials/effects/active-effect.hbs | 54 +- .../_partials/effects/active-effects-list.hbs | 8 +- system/templates/ui/sd-hideable-header.hbs | 21 + system/templates/ui/sd-hideable-section.hbs | 12 + 54 files changed, 1374 insertions(+), 989 deletions(-) create mode 100644 system/src/effects.mjs rename system/templates/{partials => _partials}/details/armor.hbs (100%) rename system/templates/{partials => _partials}/details/default.hbs (100%) rename system/templates/{partials => _partials}/details/effect.hbs (100%) rename system/templates/{partials => _partials}/details/spell.hbs (100%) rename system/templates/{partials => _partials}/details/weapon.hbs (100%) rename system/templates/{partials => _partials}/npc-attack.hbs (100%) rename system/templates/{partials => _partials}/npc-special-attack.hbs (100%) rename system/templates/{items/_partials/effects/predefined-selector.hbs => _partials/predefined-effects-selector.hbs} (92%) rename system/templates/{partials => _partials}/weapon-attack.hbs (100%) create mode 100644 system/templates/actors/_partials/effects.hbs create mode 100644 system/templates/actors/_partials/effects/active-effect.hbs create mode 100644 system/templates/actors/_partials/effects/active-effects.hbs create mode 100644 system/templates/actors/_partials/effects/effects-and-conditions.hbs delete mode 100644 system/templates/actors/partials/effects.hbs create mode 100644 system/templates/dialog/are-you-sure.hbs create mode 100644 system/templates/ui/sd-hideable-header.hbs create mode 100644 system/templates/ui/sd-hideable-section.hbs diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 07205448..d24eda88 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -8,6 +8,7 @@ * [#901] Added Russian as a partially complete system language. * [#908] Add rollable dice to Cure Wounds spell that includes the necessary calculations *(Many thanks to **nschoenwald** for contributing to this issue)* * [#920] Show tooltips on weapon and armor properties when showing expanded inline view in inventory +* [#921] Add way to view/manipulate current Active Effects to the player Effects tab * [#937] Support selecting or rolling Patron in character generator * [#939] Add macro for launching the character generator diff --git a/i18n/en.yaml b/i18n/en.yaml index 2c1cc746..c7f44589 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -343,6 +343,7 @@ SHADOWDARK.error.general.gm_required: You must have the Game Master role to do t SHADOWDARK.error.general.no_character_class: No character class has been selected SHADOWDARK.error.source.source_missing: Source missing or unknown... SHADOWDARK.error.spells.no_spellcasting_ability_set: No character spellcasting ability has been configured +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.form.section_header.equipment.label: Equipment SHADOWDARK.form.section_header.languages.label: Languages SHADOWDARK.form.section_header.names.label: Names @@ -667,6 +668,7 @@ SHADOWDARK.sheet.abilities.uses.decrement.tooltip: Decrease Available Uses SHADOWDARK.sheet.abilities.uses.increment.tooltip: Increase Available Uses SHADOWDARK.sheet.actor.ac: AC SHADOWDARK.sheet.actor.alignment: Alignment +SHADOWDARK.sheet.actor.character_notes: Character Notes SHADOWDARK.sheet.actor.hp_max: Max SHADOWDARK.sheet.actor.hp: HP SHADOWDARK.sheet.actor.level: Level @@ -674,10 +676,20 @@ SHADOWDARK.sheet.actor.placeholder.name: New Actor Name SHADOWDARK.sheet.class.item: Shadowdark Item Sheet SHADOWDARK.sheet.class.npc: Shadowdark NPC Sheet SHADOWDARK.sheet.class.player: Shadowdark Player Sheet +SHADOWDARK.sheet.general.active_effects.create_effect.title: Create Effect +SHADOWDARK.sheet.general.active_effects.delete_effect.tooltip: Delete Effect +SHADOWDARK.sheet.general.active_effects.duration.title: Duration +SHADOWDARK.sheet.general.active_effects.edit_effect.tooltip: Edit Effect +SHADOWDARK.sheet.general.active_effects.source.title: Source +SHADOWDARK.sheet.general.active_effects.toggle_effect.tooltip: Toggle Effect +SHADOWDARK.sheet.general.add: Add +SHADOWDARK.sheet.general.effects_and_conditions.title: Effects and Conditions SHADOWDARK.sheet.general.item_create.tooltip: Create {type} Item SHADOWDARK.sheet.general.item_delete.title: Delete Item SHADOWDARK.sheet.general.item_edit.title: Edit Item SHADOWDARK.sheet.general.roll_hp: Roll HP +SHADOWDARK.sheet.general.section.toggle_hide: Click to Hide Section +SHADOWDARK.sheet.general.section.toggle_show: Click to Show Section SHADOWDARK.sheet.item.tab.description: Description SHADOWDARK.sheet.item.tab.details: Details SHADOWDARK.sheet.item.tab.effects: Effects diff --git a/scss/base/_components.scss b/scss/base/_components.scss index ac2a02a2..4d4e4fb2 100644 --- a/scss/base/_components.scss +++ b/scss/base/_components.scss @@ -97,7 +97,8 @@ color: #{$primary-color}; } - .item-image { + .item-image, + .effect-image { display: inline-block; width: 24px; height: 24px; @@ -113,9 +114,11 @@ } } - .item-name { + .item-name, + .effect-name { flex:2; overflow: hidden; + align-items: center; } .item-details { diff --git a/scss/sheets/_actor.scss b/scss/sheets/_actor.scss index 0dc5f64a..d28e880a 100644 --- a/scss/sheets/_actor.scss +++ b/scss/sheets/_actor.scss @@ -5,14 +5,38 @@ .shadowdark.sheet.player, .shadowdark.sheet.npc { + min-width: 550px; + .editor-content { padding-top: 8px; padding-bottom: 8px; } - .item-image { + .effect-controls { + flex: 0 0 60px; + display: flex; + flex-direction: row; + justify-content: flex-end; + } + + .effect-duration { + flex: 0 0 120px; + display: flex; + flex-direction: row; + justify-content: center; + } + + .effect-source { + flex: 0 0 250px; + display: flex; + flex-direction: row; + justify-content: center; + } + + .item-image, + .effect-image { display: inline-block; - width: 24px; + max-width: 24px; height: 24px; background-size: contain; diff --git a/scss/sheets/_item.scss b/scss/sheets/_item.scss index 862b0099..1597a6fa 100644 --- a/scss/sheets/_item.scss +++ b/scss/sheets/_item.scss @@ -1,5 +1,7 @@ .shadowdark.item { + min-width: 550px; + .effect-list-changes { display: grid; grid-template-columns: 2fr 1fr; diff --git a/scss/sheets/actors/_player.scss b/scss/sheets/actors/_player.scss index 616fbc61..54a19422 100644 --- a/scss/sheets/actors/_player.scss +++ b/scss/sheets/actors/_player.scss @@ -32,25 +32,23 @@ } } - .background-grid-a, - .background-grid-b { + .background-grid-a { display: grid; grid-template-rows: 1fr; gap: 8px; font-size: 16px; - .content-link { - background: none; - border: none; - padding: 0px; - } } + .background-content-link { + background: none; + border: none; + padding: 0px; + font-size: 16px; + } + .background-grid-a { grid-template-columns: 1fr 2fr 2.5fr; } - .background-grid-b { - grid-template-columns: 1fr 1.5fr; - } .inventory-grid { display: grid; diff --git a/system/shadowdark.mjs b/system/shadowdark.mjs index 1723f33d..60d75d71 100644 --- a/system/shadowdark.mjs +++ b/system/shadowdark.mjs @@ -7,6 +7,7 @@ import registerSystemSettings from "./src/settings.mjs"; import SHADOWDARK from "./src/config.mjs"; import ShadowdarkMacro from "./src/macro.mjs"; import UtilitySD from "./src/utils/UtilitySD.mjs"; +import ActiveEffectsSD from "./src/effects.mjs"; import * as apps from "./src/apps/_module.mjs"; import * as chat from "./src/chat/_module.mjs"; @@ -34,6 +35,7 @@ globalThis.shadowdark = { defaults: SHADOWDARK.DEFAULTS, dice, documents, + effects: ActiveEffectsSD, error: Logger.error, log: Logger.log, macro: ShadowdarkMacro, diff --git a/system/src/apps/CharacterGeneratorSD.mjs b/system/src/apps/CharacterGeneratorSD.mjs index aa83bac9..30c15de6 100644 --- a/system/src/apps/CharacterGeneratorSD.mjs +++ b/system/src/apps/CharacterGeneratorSD.mjs @@ -377,7 +377,7 @@ export default class CharacterGeneratorSD extends FormApplication { // load talents with selection of options for (const talentItem of allTalents) { - allItems.push(await shadowdark.utils.createItemWithEffect(talentItem)); + allItems.push(await shadowdark.effects.createItemWithEffect(talentItem)); } // Check for Name @@ -938,7 +938,7 @@ export default class CharacterGeneratorSD extends FormApplication { // load talents with selection of options const allItems = []; for (const talentItem of allTalents) { - allItems.push(await shadowdark.utils.createItemWithEffect(talentItem)); + allItems.push(await shadowdark.effects.createItemWithEffect(talentItem)); } await actorRef.createEmbeddedDocuments("Item", allItems); diff --git a/system/src/apps/LevelUpSD.mjs b/system/src/apps/LevelUpSD.mjs index efd89c58..cdf102c6 100644 --- a/system/src/apps/LevelUpSD.mjs +++ b/system/src/apps/LevelUpSD.mjs @@ -216,7 +216,7 @@ export default class LevelUpSD extends FormApplication { if (this.data.talentGained) { // checks for effects on talent and prompts if needed - let talentObj = await shadowdark.utils.createItemWithEffect(talentItem); + let talentObj = await shadowdark.effects.createItemWithEffect(talentItem); talentObj.system.level = this.data.targetLevel; talentObj.uuid = talentItem.uuid; this.data.talents.push(talentObj); diff --git a/system/src/config.mjs b/system/src/config.mjs index 504bb1dd..30d120c1 100644 --- a/system/src/config.mjs +++ b/system/src/config.mjs @@ -225,98 +225,98 @@ SHADOWDARK.PREDEFINED_EFFECTS = { abilityImprovementCha: { defaultValue: 1, effectKey: "system.abilities.cha.bonus", - icon: "icons/skills/melee/hand-grip-staff-yellow-brown.webp", + img: "icons/skills/melee/hand-grip-staff-yellow-brown.webp", name: "SHADOWDARK.item.effect.predefined_effect.abilityImprovementCha", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, abilityImprovementCon: { defaultValue: 1, effectKey: "system.abilities.con.bonus", - icon: "icons/skills/melee/hand-grip-staff-yellow-brown.webp", + img: "icons/skills/melee/hand-grip-staff-yellow-brown.webp", name: "SHADOWDARK.item.effect.predefined_effect.abilityImprovementCon", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, abilityImprovementDex: { defaultValue: 1, effectKey: "system.abilities.dex.bonus", - icon: "icons/skills/melee/hand-grip-staff-yellow-brown.webp", + img: "icons/skills/melee/hand-grip-staff-yellow-brown.webp", name: "SHADOWDARK.item.effect.predefined_effect.abilityImprovementDex", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, abilityImprovementInt: { defaultValue: 1, effectKey: "system.abilities.int.bonus", - icon: "icons/skills/melee/hand-grip-staff-yellow-brown.webp", + img: "icons/skills/melee/hand-grip-staff-yellow-brown.webp", name: "SHADOWDARK.item.effect.predefined_effect.abilityImprovementInt", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, abilityImprovementStr: { defaultValue: 1, effectKey: "system.abilities.str.bonus", - icon: "icons/skills/melee/hand-grip-staff-yellow-brown.webp", + img: "icons/skills/melee/hand-grip-staff-yellow-brown.webp", name: "SHADOWDARK.item.effect.predefined_effect.abilityImprovementStr", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, abilityImprovementWis: { defaultValue: 1, effectKey: "system.abilities.wis.bonus", - icon: "icons/skills/melee/hand-grip-staff-yellow-brown.webp", + img: "icons/skills/melee/hand-grip-staff-yellow-brown.webp", name: "SHADOWDARK.item.effect.predefined_effect.abilityImprovementWis", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, acBonus: { defaultValue: 1, effectKey: "system.bonuses.acBonus", - icon: "icons/skills/melee/shield-block-gray-orange.webp", + img: "icons/skills/melee/shield-block-gray-orange.webp", name: "SHADOWDARK.item.effect.predefined_effect.acBonus", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, acBonusFromAttribute: { defaultValue: "REPLACEME", effectKey: "system.bonuses.acBonusFromAttribute", - icon: "icons/skills/melee/shield-block-gray-orange.webp", + img: "icons/skills/melee/shield-block-gray-orange.webp", name: "SHADOWDARK.item.effect.predefined_effect.acBonusFromAttribute", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, additionalGearSlots: { defaultValue: 1, effectKey: "system.bonuses.gearSlots", - icon: "icons/magic/defensive/shield-barrier-deflect-teal.webp", + img: "icons/magic/defensive/shield-barrier-deflect-teal.webp", name: "SHADOWDARK.item.effect.predefined_effect.additionalGearSlots", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, armorMastery: { defaultValue: "REPLACEME", effectKey: "system.bonuses.armorMastery", - icon: "icons/magic/defensive/shield-barrier-deflect-teal.webp", + img: "icons/magic/defensive/shield-barrier-deflect-teal.webp", name: "SHADOWDARK.item.effect.predefined_effect.armorMastery", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, backstabDie: { defaultValue: 1, effectKey: "system.bonuses.backstabDie", - icon: "icons/skills/melee/strike-dagger-white-orange.webp", + img: "icons/skills/melee/strike-dagger-white-orange.webp", name: "SHADOWDARK.item.effect.predefined_effect.backstabDie", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, criticalFailureThreshold: { defaultValue: 3, effectKey: "system.bonuses.critical.failureThreshold", - icon: "icons/magic/life/cross-area-circle-green-white.webp", + img: "icons/magic/life/cross-area-circle-green-white.webp", name: "SHADOWDARK.item.effect.predefined_effect.criticalFailureThreshold", mode: "CONST.ACTIVE_EFFECT_MODES.OVERRIDE", }, criticalSuccessThreshold: { defaultValue: 18, effectKey: "system.bonuses.critical.successThreshold", - icon: "icons/magic/fire/flame-burning-fist-strike.webp", + img: "icons/magic/fire/flame-burning-fist-strike.webp", name: "SHADOWDARK.item.effect.predefined_effect.criticalSuccessThreshold", mode: "CONST.ACTIVE_EFFECT_MODES.OVERRIDE", }, critMultiplier: { defaultValue: 4, effectKey: "system.bonuses.critical.multiplier", - icon: "icons/skills/melee/hand-grip-staff-yellow-brown.webp", + img: "icons/skills/melee/hand-grip-staff-yellow-brown.webp", name: "SHADOWDARK.item.effect.predefined_effect.critMultiplier", mode: "CONST.ACTIVE_EFFECT_MODES.OVERRIDE", transfer: false, @@ -324,133 +324,133 @@ SHADOWDARK.PREDEFINED_EFFECTS = { damageMultiplier: { defaultValue: 2, effectKey: "system.bonuses.damageMultiplier", - icon: "icons/skills/melee/strike-hammer-destructive-orange.webp", + img: "icons/skills/melee/strike-hammer-destructive-orange.webp", name: "SHADOWDARK.item.effect.predefined_effect.damageMultiplier", mode: "CONST.ACTIVE_EFFECT_MODES.OVERRIDE", }, hpAdvantage: { defaultValue: "hp", effectKey: "system.bonuses.advantage", - icon: "icons/magic/life/cross-area-circle-green-white.webp", + img: "icons/magic/life/cross-area-circle-green-white.webp", name: "SHADOWDARK.item.effect.predefined_effect.hpAdvantage", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, initAdvantage: { defaultValue: "initiative", effectKey: "system.bonuses.advantage", - icon: "icons/skills/movement/feet-winged-boots-glowing-yellow.webp", + img: "icons/skills/movement/feet-winged-boots-glowing-yellow.webp", name: "SHADOWDARK.item.effect.predefined_effect.initAdvantage", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, lightSource: { defaultValue: "REPLACEME", effectKey: "system.light.template", - icon: "icons/magic/light/torch-fire-orange.webp", + img: "icons/magic/light/torch-fire-orange.webp", name: "SHADOWDARK.item.effect.predefined_effect.lightSource", mode: "CONST.ACTIVE_EFFECT_MODES.OVERRIDE", }, meleeAttackBonus: { defaultValue: 1, effectKey: "system.bonuses.meleeAttackBonus", - icon: "icons/skills/melee/strike-polearm-glowing-white.webp", + img: "icons/skills/melee/strike-polearm-glowing-white.webp", name: "SHADOWDARK.item.effect.predefined_effect.meleeAttackBonus", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, meleeDamageBonus: { defaultValue: 1, effectKey: "system.bonuses.meleeDamageBonus", - icon: "icons/skills/melee/strike-axe-blood-red.webp", + img: "icons/skills/melee/strike-axe-blood-red.webp", name: "SHADOWDARK.item.effect.predefined_effect.meleeDamageBonus", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, permanentAbilityCha: { defaultValue: 18, effectKey: "system.abilities.cha.base", - icon: "icons/skills/melee/strike-axe-blood-red.webp", + img: "icons/skills/melee/strike-axe-blood-red.webp", name: "SHADOWDARK.item.effect.predefined_effect.permanentAbilityCha", mode: "CONST.ACTIVE_EFFECT_MODES.OVERRIDE", }, permanentAbilityCon: { defaultValue: 18, effectKey: "system.abilities.con.base", - icon: "icons/skills/melee/strike-axe-blood-red.webp", + img: "icons/skills/melee/strike-axe-blood-red.webp", name: "SHADOWDARK.item.effect.predefined_effect.permanentAbilityCon", mode: "CONST.ACTIVE_EFFECT_MODES.OVERRIDE", }, permanentAbilityDex: { defaultValue: 18, effectKey: "system.abilities.dex.base", - icon: "icons/skills/melee/strike-axe-blood-red.webp", + img: "icons/skills/melee/strike-axe-blood-red.webp", name: "SHADOWDARK.item.effect.predefined_effect.permanentAbilityDex", mode: "CONST.ACTIVE_EFFECT_MODES.OVERRIDE", }, permanentAbilityInt: { defaultValue: 18, effectKey: "system.abilities.int.base", - icon: "icons/skills/melee/strike-axe-blood-red.webp", + img: "icons/skills/melee/strike-axe-blood-red.webp", name: "SHADOWDARK.item.effect.predefined_effect.permanentAbilityInt", mode: "CONST.ACTIVE_EFFECT_MODES.OVERRIDE", }, permanentAbilityStr: { defaultValue: 18, effectKey: "system.abilities.str.base", - icon: "icons/skills/melee/strike-axe-blood-red.webp", + img: "icons/skills/melee/strike-axe-blood-red.webp", name: "SHADOWDARK.item.effect.predefined_effect.permanentAbilityStr", mode: "CONST.ACTIVE_EFFECT_MODES.OVERRIDE", }, permanentAbilityWis: { defaultValue: 18, effectKey: "system.abilities.wis.base", - icon: "icons/skills/melee/strike-axe-blood-red.webp", + img: "icons/skills/melee/strike-axe-blood-red.webp", name: "SHADOWDARK.item.effect.predefined_effect.permanentAbilityWis", mode: "CONST.ACTIVE_EFFECT_MODES.OVERRIDE", }, rangedAttackBonus: { defaultValue: 1, effectKey: "system.bonuses.rangedAttackBonus", - icon: "icons/weapons/ammunition/arrow-head-war-flight.webp", + img: "icons/weapons/ammunition/arrow-head-war-flight.webp", name: "SHADOWDARK.item.effect.predefined_effect.rangedAttackBonus", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, rangedDamageBonus: { defaultValue: 1, effectKey: "system.bonuses.rangedDamageBonus", - icon: "icons/skills/melee/strike-axe-blood-red.webp", + img: "icons/skills/melee/strike-axe-blood-red.webp", name: "SHADOWDARK.item.effect.predefined_effect.rangedDamageBonus", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, spellAdvantage: { defaultValue: "REPLACEME", effectKey: "system.bonuses.advantage", - icon: "icons/magic/air/air-smoke-casting.webp", + img: "icons/magic/air/air-smoke-casting.webp", name: "SHADOWDARK.item.effect.predefined_effect.spellAdvantage", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, spellCastingBonus: { defaultValue: 1, effectKey: "system.bonuses.spellcastingCheckBonus", - icon: "icons/magic/fire/flame-burning-fist-strike.webp", + img: "icons/magic/fire/flame-burning-fist-strike.webp", name: "SHADOWDARK.item.effect.predefined_effect.spellCastingBonus", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, spellcastingClasses: { defaultValue: "REPLACEME", effectKey: "system.bonuses.spellcastingClasses", - icon: "icons/sundries/documents/document-sealed-brown-red.webp", + img: "icons/sundries/documents/document-sealed-brown-red.webp", name: "SHADOWDARK.item.effect.predefined_effect.spellcastingClasses", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, unarmoredAcBonus: { defaultValue: 1, effectKey: "system.bonuses.unarmoredAcBonus", - icon: "icons/skills/melee/shield-block-gray-orange.webp", + img: "icons/skills/melee/shield-block-gray-orange.webp", name: "SHADOWDARK.item.effect.predefined_effect.unarmoredAcBonus", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, weaponAttackBonus: { defaultValue: 1, effectKey: "system.bonuses.attackBonus", - icon: "icons/skills/melee/strike-polearm-glowing-white.webp", + img: "icons/skills/melee/strike-polearm-glowing-white.webp", name: "SHADOWDARK.item.effect.predefined_effect.weaponAttackBonus", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", restriction: "Weapon", @@ -459,7 +459,7 @@ SHADOWDARK.PREDEFINED_EFFECTS = { weaponDamageBonus: { defaultValue: 1, effectKey: "system.bonuses.damageBonus", - icon: "icons/weapons/ammunition/arrow-head-war-flight.webp", + img: "icons/weapons/ammunition/arrow-head-war-flight.webp", name: "SHADOWDARK.item.effect.predefined_effect.weaponDamageBonus", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", restriction: "Weapon", @@ -468,35 +468,35 @@ SHADOWDARK.PREDEFINED_EFFECTS = { weaponDamageDieD12: { defaultValue: "REPLACEME", effectKey: "system.bonuses.weaponDamageDieD12", - icon: "icons/skills/ranged/arrows-flying-salvo-blue-light.webp", + img: "icons/skills/ranged/arrows-flying-salvo-blue-light.webp", name: "SHADOWDARK.item.effect.predefined_effect.weaponDamageDieD12", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, weaponDamageDieImprovementByProperty: { defaultValue: "REPLACEME", effectKey: "system.bonuses.weaponDamageDieImprovementByProperty", - icon: "icons/skills/ranged/arrows-flying-salvo-blue-light.webp", + img: "icons/skills/ranged/arrows-flying-salvo-blue-light.webp", name: "SHADOWDARK.item.effect.predefined_effect.weaponDamageDieImprovementByProperty", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, weaponDamageExtraDieByProperty: { defaultValue: "REPLACEME", effectKey: "system.bonuses.weaponDamageExtraDieByProperty", - icon: "icons/skills/ranged/arrows-flying-salvo-blue-light.webp", + img: "icons/skills/ranged/arrows-flying-salvo-blue-light.webp", name: "SHADOWDARK.item.effect.predefined_effect.weaponDamageExtraDieByProperty", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, weaponDamageExtraDieImprovementByProperty: { defaultValue: "REPLACEME", effectKey: "system.bonuses.weaponDamageExtraDieImprovementByProperty", - icon: "icons/skills/ranged/arrows-flying-salvo-blue-light.webp", + img: "icons/skills/ranged/arrows-flying-salvo-blue-light.webp", name: "SHADOWDARK.item.effect.predefined_effect.weaponDamageExtraDieImprovementByProperty", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, weaponDamageMultiplier: { defaultValue: 2, effectKey: "system.bonuses.damageMultiplier", - icon: "icons/skills/melee/strike-hammer-destructive-orange.webp", + img: "icons/skills/melee/strike-hammer-destructive-orange.webp", name: "SHADOWDARK.item.effect.predefined_effect.damageMultiplier", mode: "CONST.ACTIVE_EFFECT_MODES.OVERRIDE", transfer: false, @@ -504,7 +504,7 @@ SHADOWDARK.PREDEFINED_EFFECTS = { weaponMastery: { defaultValue: "REPLACEME", effectKey: "system.bonuses.weaponMastery", - icon: "icons/skills/melee/weapons-crossed-swords-white-blue.webp", + img: "icons/skills/melee/weapons-crossed-swords-white-blue.webp", name: "SHADOWDARK.item.effect.predefined_effect.weaponMastery", mode: "CONST.ACTIVE_EFFECT_MODES.ADD", }, diff --git a/system/src/documents/ActorSD.mjs b/system/src/documents/ActorSD.mjs index 2d1f0a75..e854f85f 100644 --- a/system/src/documents/ActorSD.mjs +++ b/system/src/documents/ActorSD.mjs @@ -248,6 +248,20 @@ export default class ActorSD extends Actor { } + async addPatron(item) { + const myClass = await this.getClass(); + + if (myClass && myClass.system.patron.required) { + this.update({"system.patron": item.uuid}); + } + else { + ui.notifications.error( + game.i18n.localize("SHADOWDARK.error.patron.no_supported_class") + ); + } + } + + async addToHpBase(hp) { const currentHpBase = this.system.attributes.hp.base; this.update({ @@ -330,7 +344,7 @@ export default class ActorSD extends Actor { ); return await renderTemplate( - "systems/shadowdark/templates/partials/npc-attack.hbs", + "systems/shadowdark/templates/_partials/npc-attack.hbs", attackOptions ); } @@ -363,7 +377,7 @@ export default class ActorSD extends Actor { ); return await renderTemplate( - "systems/shadowdark/templates/partials/npc-special-attack.hbs", + "systems/shadowdark/templates/_partials/npc-special-attack.hbs", attackOptions ); } @@ -371,7 +385,7 @@ export default class ActorSD extends Actor { async buildWeaponDisplay(options) { return await renderTemplate( - "systems/shadowdark/templates/partials/weapon-attack.hbs", + "systems/shadowdark/templates/_partials/weapon-attack.hbs", options ); } diff --git a/system/src/documents/ItemSD.mjs b/system/src/documents/ItemSD.mjs index bd406dd0..16303083 100644 --- a/system/src/documents/ItemSD.mjs +++ b/system/src/documents/ItemSD.mjs @@ -155,7 +155,7 @@ export default class ItemSD extends Item { } const templatePath = this.getItemTemplate( - "systems/shadowdark/templates/partials/details" + "systems/shadowdark/templates/_partials/details" ); return await renderTemplate(templatePath, data); @@ -355,189 +355,6 @@ export default class ItemSD extends Item { return ranges.join(", "); } - /* ---------- Effect Methods ---------- */ - - /** - * Creates a dialog that allows the user to pick from a list. Returns - * a slugified name to be used in effect values. - * @param {string} type - Type of input to ask about - * @param {Array} options - The list of options to choose from - * @returns {string} - */ - async _askEffectInput(effectParameters) { - // const effectParameters = [{key, type, options}, {key, type, options}]; - const parameters = Array.isArray(effectParameters) - ? effectParameters - : [effectParameters]; - for (const parameter of parameters) { - parameter.label = await game.i18n.localize( - `SHADOWDARK.dialog.effect.choice.${parameter.type}` - ); - parameter.uuid = foundry.utils.randomID(); - } - - const content = await renderTemplate( - "systems/shadowdark/templates/dialog/effect-list-choice.hbs", - { - effectParameters: parameters, - } - ); - - const data = { - title: await game.i18n.localize("SHADOWDARK.dialog.effect.choices.title"), - content, - classes: ["shadowdark-dialog"], - buttons: { - submit: { - label: game.i18n.localize("SHADOWDARK.dialog.submit"), - callback: html => { - const selected = {}; - - for (const parameter of parameters) { - // const formValue = html[0].querySelector("input")?.value ?? ""; - const selector = `#${parameter.type}-selection-${parameter.uuid}`; - const formValue = html[0].querySelector(selector)?.value ?? ""; - - let slug = false; - for (const [key, value] of Object.entries(parameter.options)) { - if (formValue === value) { - slug = key; - break; - } - } - - selected[parameter.type] = [slug, formValue] ?? null; - } - - return selected; - }, - }, - }, - close: () => false, - }; - - const result = await Dialog.wait(data); - return result; - } - - /** - * Handles special cases for predefined effect mappings - * - * @param {string} key - effectKey from mapping - * @param {Object} value - data value from mapping - * @param {Object} name - name value from mapping - * @returns {Object} - */ - async _handlePredefinedEffect(key, value, name=null) { - if (key === "acBonusFromAttribute") { - const type = "attribute"; - - const options = shadowdark.config.ABILITIES_LONG; - - const chosen = await this._askEffectInput({name, type, options}); - return chosen[type] ?? [value]; - } - else if (key === "armorMastery") { - const type = "armor"; - - const options = await shadowdark.utils.getSlugifiedItemList( - await shadowdark.compendiums.baseArmor() - ); - - const chosen = await this._askEffectInput({name, type, options}); - return chosen[type] ?? [value]; - } - else if (key === "lightSource") { - const type = "lightsource"; - - // TODO Need to move to light source objects to allow customisation - // - const lightSourceList = await foundry.utils.fetchJsonWithTimeout( - "systems/shadowdark/assets/mappings/map-light-sources.json" - ); - - const options = {}; - Object.keys(lightSourceList).map(i => { - return options[i] = game.i18n.localize(lightSourceList[i].lang); - }); - - const chosen = await this._askEffectInput({name, type, options}); - return chosen[type] ?? [value]; - } - else if (key === "spellAdvantage") { - const type = "spell"; - - const options = await shadowdark.utils.getSlugifiedItemList( - await shadowdark.compendiums.spells() - ); - - const chosen = await this._askEffectInput({name, type, options}); - return chosen[type] ?? [value]; - } - else if (key === "spellcastingClasses") { - const type = "class"; - - const options = await shadowdark.utils.getSlugifiedItemList( - await shadowdark.compendiums.spellcastingBaseClasses() - ); - - const chosen = await this._askEffectInput({name, type, options}); - return chosen[type] ?? [value]; - } - else if ( - [ - "weaponDamageDieImprovementByProperty", - "weaponDamageExtraDieImprovementByProperty", - ].includes(key) - ) { - const type = "weapon_property"; - - const options = await shadowdark.utils.getSlugifiedItemList( - await shadowdark.compendiums.weaponProperties() - ); - - const chosen = await this._askEffectInput({name, type, options}); - return chosen[type] ?? [value]; - } - else if (key === "weaponDamageExtraDieByProperty") { - const parameters = [ - { - key: key, - type: "damage_die", - options: shadowdark.config.DICE, - }, - { - key: key, - type: "weapon_property", - options: await shadowdark.utils.getSlugifiedItemList( - await shadowdark.compendiums.weaponProperties() - ), - }, - ]; - - const chosen = await this._askEffectInput(parameters); - - - if (chosen.damage_die && chosen.weapon_property) { - return [`${chosen.damage_die[0]}|${chosen.weapon_property[0]}`]; - } - else { - return [value]; - } - } - else if (["weaponMastery", "weaponDamageDieD12"].includes(key)) { - const type = "weapon"; - - const options = await shadowdark.utils.getSlugifiedItemList( - await shadowdark.compendiums.baseWeapons() - ); - - const chosen = await this._askEffectInput({name, type, options}); - return chosen[type] ?? [value]; - } - - return [value]; - } async propertyItems() { const propertyItems = []; @@ -570,6 +387,7 @@ export default class ItemSD extends Item { } } + /** * Calculates the remaining duration, if the Effect is expired, and * the progress of the effect (current vs total time). diff --git a/system/src/effects.mjs b/system/src/effects.mjs new file mode 100644 index 00000000..a46fe391 --- /dev/null +++ b/system/src/effects.mjs @@ -0,0 +1,480 @@ +export default class ActiveEffectsSD { + + /** + * Creates a dialog that allows the user to pick from a list. Returns + * a slugified name to be used in effect values. + * @param {string} type - Type of input to ask about + * @param {Array} options - The list of options to choose from + * @returns {string} + */ + static async askEffectInput(effectParameters) { + // const effectParameters = [{key, type, options}, {key, type, options}]; + const parameters = Array.isArray(effectParameters) + ? effectParameters + : [effectParameters]; + for (const parameter of parameters) { + parameter.label = await game.i18n.localize( + `SHADOWDARK.dialog.effect.choice.${parameter.type}` + ); + parameter.uuid = foundry.utils.randomID(); + } + + const content = await renderTemplate( + "systems/shadowdark/templates/dialog/effect-list-choice.hbs", + { + effectParameters: parameters, + } + ); + + const data = { + title: await game.i18n.localize("SHADOWDARK.dialog.effect.choices.title"), + content, + classes: ["shadowdark-dialog"], + buttons: { + submit: { + label: game.i18n.localize("SHADOWDARK.dialog.submit"), + callback: html => { + const selected = {}; + + for (const parameter of parameters) { + // const formValue = html[0].querySelector("input")?.value ?? ""; + const selector = `#${parameter.type}-selection-${parameter.uuid}`; + const formValue = html[0].querySelector(selector)?.value ?? ""; + + let slug = false; + for (const [key, value] of Object.entries(parameter.options)) { + if (formValue === value) { + slug = key; + break; + } + } + + selected[parameter.type] = [slug, formValue] ?? null; + } + + return selected; + }, + }, + }, + close: () => false, + }; + + const result = await Dialog.wait(data); + return result; + } + + + /** + * Contains logic that handles any complex effects, where the user + * needs to provide input to determine the effect. + * @param {Item} item - The item being created + */ + static async createItemWithEffect(item) { + let itemObj = item.toObject(); + await Promise.all(itemObj.effects?.map(async e => { + // If the item contains effects that require user input, + // ask and modify talent before creating + if ( + e.changes?.some(c => + CONFIG.SHADOWDARK.EFFECT_ASK_INPUT.includes(c.key) + ) + ) { + // Spell Advantage requires special handling as it uses the `advantage` bons + if (e.changes.some(c => c.key === "system.bonuses.advantage")) { + // If there is no value with REPLACME, it is another type of advantage talent + if (e.changes.some(c => c.value === "REPLACEME")) { + const key = "spellAdvantage"; + itemObj = await this.modifyEffectChangesWithInput(item, e, key); + } + } + else { + itemObj = await this.modifyEffectChangesWithInput(item, e); + } + } + })); + + // If any effects was created without a value, we don't create the item + if (itemObj.effects.some(e => e.changes.some(c => !c.value))) return ui.notifications.warn( + game.i18n.localize("SHADOWDARK.item.effect.warning.add_effect_without_value") + ); + + // Activate lightsource tracking + if (itemObj.effects.some(e => e.changes.some(c => c.key === "system.light.template"))) { + const duration = itemObj.totalDuration; + itemObj.system.light.isSource = true; + itemObj.system.light.longevitySecs = duration; + itemObj.system.light.remainingSecs = duration; + itemObj.system.light.longevityMins = duration / 60; + } + + return itemObj; + } + + + /** + * Creates effects based on predefined effect choices and the supplied + * predefined effect mappings. + * @param {string} key - Name of the predefined effect + * @param {Object} data - The item data of the item to be created + * @returns {ActiveEffect} + */ + static async createPredefinedEffect(owner, key) { + const data = CONFIG.SHADOWDARK.PREDEFINED_EFFECTS[key]; + + if (!data) return shadowdark.error(`No effect found (${key})`); + + let defaultValue = "REPLACEME"; + [defaultValue] = await shadowdark.effects.handlePredefinedEffect( + key, data.defaultValue, data.name + ); + + if (defaultValue === "REPLACEME") { + return shadowdark.warn("Can't create effect without selecting a value."); + } + + data.defaultValue = defaultValue; + + const effectMode = foundry.utils.getProperty( + CONST.ACTIVE_EFFECT_MODES, + data.mode.split(".")[2]); + + const value = (isNaN(parseInt(data.defaultValue, 10))) + ? data.defaultValue + : parseInt(data.defaultValue, 10); + + const effectData = [ + { + name: game.i18n.localize(`SHADOWDARK.item.effect.predefined_effect.${key}`), + label: game.i18n.localize(`SHADOWDARK.item.effect.predefined_effect.${key}`), + img: data.img, + changes: [{ + key: data.effectKey, + value, + mode: effectMode, + }], + disabled: false, + origin: owner.uuid, + transfer: (Object.keys(data).includes("transfer")) + ? data.transfer + : true, + }, + ]; + + // Create the effect + const [newActiveEffect] = await owner.createEmbeddedDocuments( + "ActiveEffect", + effectData + ); + + if (owner.documentName === "Actor") { + newActiveEffect.sheet.render(true); + } + } + + + /** + * Returns an object containing the effect key, and the + * translated name into the current language. + * @returns {Object} + */ + static async getPredefinedEffectsList() { + const effects = {}; + + for (const key in CONFIG.SHADOWDARK.PREDEFINED_EFFECTS) { + const effect = CONFIG.SHADOWDARK.PREDEFINED_EFFECTS[key]; + + effects[key] = { + key, + name: effect.name, + }; + } + + return effects; + } + + + /** + * Handles special cases for predefined effect mappings + * + * @param {string} key - effectKey from mapping + * @param {Object} value - data value from mapping + * @param {Object} name - name value from mapping + * @returns {Object} + */ + static async handlePredefinedEffect(key, value, name=null) { + if (key === "acBonusFromAttribute") { + const type = "attribute"; + + const options = shadowdark.config.ABILITIES_LONG; + + const chosen = await this.askEffectInput({name, type, options}); + return chosen[type] ?? [value]; + } + else if (key === "armorMastery") { + const type = "armor"; + + const options = await shadowdark.utils.getSlugifiedItemList( + await shadowdark.compendiums.baseArmor() + ); + + const chosen = await this.askEffectInput({name, type, options}); + return chosen[type] ?? [value]; + } + else if (key === "lightSource") { + const type = "lightsource"; + + // TODO Need to move to light source objects to allow customisation + // + const lightSourceList = await foundry.utils.fetchJsonWithTimeout( + "systems/shadowdark/assets/mappings/map-light-sources.json" + ); + + const options = {}; + Object.keys(lightSourceList).map(i => { + return options[i] = game.i18n.localize(lightSourceList[i].lang); + }); + + const chosen = await this.askEffectInput({name, type, options}); + return chosen[type] ?? [value]; + } + else if (key === "spellAdvantage") { + const type = "spell"; + + const options = await shadowdark.utils.getSlugifiedItemList( + await shadowdark.compendiums.spells() + ); + + const chosen = await this.askEffectInput({name, type, options}); + return chosen[type] ?? [value]; + } + else if (key === "spellcastingClasses") { + const type = "class"; + + const options = await shadowdark.utils.getSlugifiedItemList( + await shadowdark.compendiums.spellcastingBaseClasses() + ); + + const chosen = await this.askEffectInput({name, type, options}); + return chosen[type] ?? [value]; + } + else if ( + [ + "weaponDamageDieImprovementByProperty", + "weaponDamageExtraDieImprovementByProperty", + ].includes(key) + ) { + const type = "weapon_property"; + + const options = await shadowdark.utils.getSlugifiedItemList( + await shadowdark.compendiums.weaponProperties() + ); + + const chosen = await this.askEffectInput({name, type, options}); + return chosen[type] ?? [value]; + } + else if (key === "weaponDamageExtraDieByProperty") { + const parameters = [ + { + key: key, + type: "damage_die", + options: shadowdark.config.DICE, + }, + { + key: key, + type: "weapon_property", + options: await shadowdark.utils.getSlugifiedItemList( + await shadowdark.compendiums.weaponProperties() + ), + }, + ]; + + const chosen = await this.askEffectInput(parameters); + + + if (chosen.damage_die && chosen.weapon_property) { + return [`${chosen.damage_die[0]}|${chosen.weapon_property[0]}`]; + } + else { + return [value]; + } + } + else if (["weaponMastery", "weaponDamageDieD12"].includes(key)) { + const type = "weapon"; + + const options = await shadowdark.utils.getSlugifiedItemList( + await shadowdark.compendiums.baseWeapons() + ); + + const chosen = await this.askEffectInput({name, type, options}); + return chosen[type] ?? [value]; + } + + return [value]; + } + + + /** + * Asks the user for input if necessary for an effect that requires said input. + * @param {Item} item - Item that has the effects + * @param {*} effect - The effect being analyzed + * @param {*} key - Optional key if it isn't a unique system.bonuses.key + * @returns {Object} - Object updated with the changes + */ + static async modifyEffectChangesWithInput(item, effect, key = false) { + // Create an object out of the item to modify before creating + const itemObject = item.toObject(); + let name = itemObject.name; + + const changes = await Promise.all( + effect.changes.map(async c => { + if (CONFIG.SHADOWDARK.EFFECT_ASK_INPUT.includes(c.key)) { + const effectKey = (key) ? key : c.key.split(".")[2]; + + // Ask for user input + let linkedName; + [c.value, linkedName] = await this.handlePredefinedEffect( + effectKey, + null, + name + ); + + if (c.value) { + name += ` (${linkedName})`; + } + } + return c; + }) + ); + + // Modify the Effect object + itemObject.effects.map(e => { + if (e._id === effect._id) { + e.changes = changes; + itemObject.name = name; + } + return e; + }); + return itemObject; + } + + + /** + * Manage Active Effect instances through the Actor Sheet via effect control buttons. + * @param {MouseEvent} event The left-click event on the effect control + * @param {Actor|Item} owner The owning entity which manages this effect + */ + static async onManageActiveEffect(event, owner) { + event.preventDefault(); + + const a = event.currentTarget; + const li = a.closest("li"); + const effectId = li.dataset.effectId; + + let effect = null; + if (owner.documentName === "Actor") { + effect = effectId + ? owner.allApplicableEffects().find(effect => effect.id === effectId) + : null; + } + else if (owner.documentName === "Item") { + effect = effectId + ? owner.transferredEffects.find(effect => effect.id === effectId) + : null; + } + + switch (a.dataset.action) { + case "create": + const docs = await owner.createEmbeddedDocuments("ActiveEffect", [{ + disabled: li.dataset.effectType === "inactive", + img: "icons/commodities/tech/cog-steel-grey.webp", + label: "New Effect", + origin: owner.uuid, + }]); + + if (docs && docs[0]) docs[0].sheet.render(true); + break; + case "edit": + return effect.sheet.render(true); + case "delete": + return renderTemplate( + "systems/shadowdark/templates/dialog/are-you-sure.hbs" + ).then(html => { + new Dialog({ + title: `${game.i18n.localize("SHADOWDARK.sheet.general.active_effects.delete_effect.tooltip")}`, + content: html, + buttons: { + Yes: { + icon: '', + label: `${game.i18n.localize("SHADOWDARK.dialog.general.yes")}`, + callback: async () => { + effect.delete(); + }, + }, + Cancel: { + icon: '', + label: `${game.i18n.localize("SHADOWDARK.dialog.general.cancel")}`, + }, + }, + default: "Yes", + }).render(true); + }); + case "toggle": + return effect.update({disabled: !effect.disabled}); + } + } + + + /** + * Prepare the data structure for Active Effects which are currently applied + * to an Actor or Item. + * + * @param {ActiveEffect[]} effects The array of Active Effect instances + * to prepare sheet data for + * @return {object} Data for rendering + */ + static prepareActiveEffectCategories(effects) { + const categories = { + active: { + type: "active", + effects: [], + }, + inactive: { + type: "inactive", + effects: [], + }, + }; + + for (const effect of effects) { + const decoratedEffect = { + disabled: effect.disabled, + durationLabel: effect.duration.label, + id: effect.id, + img: effect.img, + name: effect.name, + sourceName: effect.parent?.name ?? "Unknown", + }; + + if (effect.disabled) { + categories.inactive.effects.push(decoratedEffect); + } + else { + categories.active.effects.push(decoratedEffect); + } + } + + categories.active.effects.sort( + (a, b) => a.name.localeCompare(b.name) + ).sort( + (a, b) => a.sourceName.localeCompare(b.sourceName) + ); + + categories.inactive.effects.sort( + (a, b) => a.name.localeCompare(b.name) + ).sort( + (a, b) => a.sourceName.localeCompare(b.sourceName) + ); + + return categories; + } + +} diff --git a/system/src/handlebars.mjs b/system/src/handlebars.mjs index 8ac733d0..44602c38 100644 --- a/system/src/handlebars.mjs +++ b/system/src/handlebars.mjs @@ -16,6 +16,16 @@ export default function registerHandlebarsHelpers() { return newOjects; }); + Handlebars.registerHelper("concat", function() { + let outStr = ""; + for (let arg in arguments) { + if (typeof arguments[arg] != "object") { + outStr += arguments[arg]; + } + } + return outStr; + }); + Handlebars.registerHelper("displayCost", item => { let costInGp = item.system.cost.gp + (item.system.cost.sp /10 ) @@ -205,4 +215,5 @@ export default function registerHandlebarsHelpers() { const html = options.fn(this); return html.replace(rgx, "$& selected"); }); + } diff --git a/system/src/sheets/ActorSheetSD.mjs b/system/src/sheets/ActorSheetSD.mjs index 9f170b6e..87b19422 100644 --- a/system/src/sheets/ActorSheetSD.mjs +++ b/system/src/sheets/ActorSheetSD.mjs @@ -2,8 +2,16 @@ import * as select from "../apps/CompendiumItemSelectors/_module.mjs"; export default class ActorSheetSD extends ActorSheet { + _hiddenSectionsLut = { + activeEffects: true, + }; + /** @inheritdoc */ activateListeners(html) { + html.find("[data-action='hide-section']").click( + event => this._onHideSection(event) + ); + html.find("[data-action='roll-ability-check']").click( event => this._onRollAbilityCheck(event) ); @@ -32,6 +40,10 @@ export default class ActorSheetSD extends ActorSheet { event => this._onItemCreate(event) ); + html.find(".effect-control").click(ev => { + shadowdark.effects.onManageActiveEffect(ev, this.actor); + }); + // Create context menu for items on both sheets this._itemContextMenu(html); @@ -54,15 +66,21 @@ export default class ActorSheetSD extends ActorSheet { config: CONFIG.SHADOWDARK, cssClass: this.actor.isOwner ? "editable" : "locked", editable: this.isEditable, + hiddenSections: this._hiddenSectionsLut, isNpc: this.actor.type === "NPC", isPlayer: this.actor.type === "Player", items: actorData.items, owner: this.actor.isOwner, + predefinedEffects: await shadowdark.effects.getPredefinedEffectsList(), rollData: this.actor.getRollData.bind(this.actor), source: source.system, system: actorData.system, }; + context.activeEffects = shadowdark.effects.prepareActiveEffectCategories( + this.actor.allApplicableEffects() + ); + context.notesHTML = await TextEditor.enrichHTML( context.system.notes, { @@ -138,12 +156,60 @@ export default class ActorSheetSD extends ActorSheet { return false; } + /** @inheritdoc */ + async _onChangeInput(event) { + // Test for Predefiend Effects + // Create effects when added through the predefined effects input + if (event.target?.name === "predefinedEffects") { + const key = event.target.value; + return shadowdark.effects.createPredefinedEffect(this.actor, key); + } + + await super._onChangeInput(event); + } + async _onDropItem(event, data) { if (await this._effectDropNotAllowed(data)) return false; return super._onDropItem(event, data); } + async _onHideSection(event) { + event.preventDefault(); + + const data = event.currentTarget.dataset; + const sectionId = data.sectionToHide; + + const hideableSection = $(this._element).find( + `[data-hideable-section-id="${sectionId}"]` + ); + + const iconElement = event.currentTarget.querySelector("i"); + + if (this._hiddenSectionsLut[sectionId]) { + this._hiddenSectionsLut[sectionId] = !this._hiddenSectionsLut[sectionId]; + } + else { + this._hiddenSectionsLut[sectionId] = true; + } + + if (this._hiddenSectionsLut[sectionId]) { + hideableSection.slideUp(200); + event.currentTarget.dataset.tooltip = game.i18n.localize( + "SHADOWDARK.sheet.general.section.toggle_show" + ); + } + else { + hideableSection.slideDown(200); + event.currentTarget.dataset.tooltip = game.i18n.localize( + "SHADOWDARK.sheet.general.section.toggle_hide" + ); + } + + iconElement.classList.toggle("fa-caret-down"); + iconElement.classList.toggle("fa-caret-right"); + } + _onItemDelete(itemId) { const itemData = this.actor.getEmbeddedDocument("Item", itemId); diff --git a/system/src/sheets/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index d4905223..75714033 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -67,31 +67,19 @@ export default class ItemSheetSD extends ItemSheet { event => this._onItemSelection(event) ); - // Effect listeners - html.find("[data-action=effect-create]").click( - event => this._onEffectCreate(event) - ); - - html.find("[data-action=effect-activate]").click( - event => this._onEffectActivate(event) - ); - - html.find("[data-action=effect-edit]").click( - event => this._onEffectEdit(event) - ); - - html.find("[data-action=effect-delete]").click( - event => this._onEffectDelete(event) - ); - html.find("[data-action=remove-name-table]").click( event => this._onRemoveTable(event) ); + html.find(".effect-control").click(event => { + shadowdark.effects.onManageActiveEffect(event, this.item); + }); + // Handle default listeners last so system listeners are triggered first super.activateListeners(html); } + async getAncestrySelectorConfigs(context) { const [fixedLanguages, availableFixedLanguages] = @@ -154,6 +142,7 @@ export default class ItemSheetSD extends ItemSheet { }; } + async getClassSelectorConfigs(context) { const [selectedArmor, availableArmor] = await shadowdark.utils.getDedupedSelectedItems( @@ -273,6 +262,7 @@ export default class ItemSheetSD extends ItemSheet { }; } + async getSources(context) { context.sources = await shadowdark.compendiums.sources(); @@ -285,6 +275,7 @@ export default class ItemSheetSD extends ItemSheet { : false; } + async getSpellSelectorConfigs(context) { const [selectedClasses, availableClasses] = await shadowdark.utils.getDedupedSelectedItems( @@ -321,7 +312,7 @@ export default class ItemSheetSD extends ItemSheet { config: CONFIG.SHADOWDARK, editable: this.isEditable, itemType: game.i18n.localize(`SHADOWDARK.item.type.${context.item.type}`), - predefinedEffects: await this._getPredefinedEffectsList(), + predefinedEffects: await shadowdark.effects.getPredefinedEffectsList(), system: context.item.system, }); @@ -365,6 +356,7 @@ export default class ItemSheetSD extends ItemSheet { await this.getAncestrySelectorConfigs(context); } + async getSheetDataForArmorItem(context) { context.propertyItems = await context.item.propertyItems(); @@ -377,6 +369,7 @@ export default class ItemSheetSD extends ItemSheet { delete context.baseArmor[mySlug]; } + async getSheetDataForBasicItem(context) { const item = context.item; @@ -401,6 +394,7 @@ export default class ItemSheetSD extends ItemSheet { } } + async getSheetDataForClassItem(context) { await this.getClassSelectorConfigs(context); @@ -408,24 +402,29 @@ export default class ItemSheetSD extends ItemSheet { context.item.system.spellcasting.class !== "__not_spellcaster__"; } + async getSheetDataForEffectItem(context) { context.variableDuration = CONFIG.SHADOWDARK.VARIABLE_DURATIONS .includes(context.item.system.duration.type); } + async getSheetDataForNPCAttackItem(context) { context.npcAttackRangesDisplay = context.item.npcAttackRangesDisplay(); } + async getSheetDataForNPCSpecialAttackItem(context) { context.npcAttackRangesDisplay = context.item.npcAttackRangesDisplay(); } + async getSheetDataForNPCSpellItem(context) { context.variableDuration = CONFIG.SHADOWDARK.VARIABLE_DURATIONS .includes(context.item.system.duration.type); } + async getSheetDataForPatronItem(context) { const patronBoonTables = await shadowdark.compendiums.patronBoonTables(); @@ -438,6 +437,7 @@ export default class ItemSheetSD extends ItemSheet { } } + async getSheetDataForScrollItem(context) { await this.getSpellSelectorConfigs(context); @@ -445,6 +445,7 @@ export default class ItemSheetSD extends ItemSheet { .includes(context.item.system.duration.type); } + async getSheetDataForSpellItem(context) { await this.getSpellSelectorConfigs(context); @@ -452,6 +453,7 @@ export default class ItemSheetSD extends ItemSheet { .includes(context.item.system.duration.type); } + async getSheetDataForTalentItem(context) { context.showsLevelInput = { ancestry: false, @@ -461,6 +463,7 @@ export default class ItemSheetSD extends ItemSheet { }; } + async getSheetDataForWandItem(context) { await this.getSpellSelectorConfigs(context); @@ -468,6 +471,7 @@ export default class ItemSheetSD extends ItemSheet { .includes(context.item.system.duration.type); } + async getSheetDataForWeaponItem(context) { context.propertyItems = await context.item.propertyItems(); @@ -484,9 +488,6 @@ export default class ItemSheetSD extends ItemSheet { delete context.baseWeapons[mySlug]; } - /* -------------------------------------------- */ - /* Event Handling */ - /* -------------------------------------------- */ /** @inheritdoc */ _canDragDrop(selector) { @@ -534,13 +535,9 @@ export default class ItemSheetSD extends ItemSheet { // Test for Predefiend Effects // Create effects when added through the predefined effects input - if (event.target?.name === "system.predefinedEffects") { + if (event.target?.name === "predefinedEffects") { const key = event.target.value; - let effectData = CONFIG.SHADOWDARK.PREDEFINED_EFFECTS[key]; - - if (!effectData) return console.error(`No effect found (${key})`); - - await this._createPredefinedEffect(key, effectData); + return shadowdark.effects.createPredefinedEffect(this.item, key); } // Test for Effect Duration Change @@ -870,102 +867,12 @@ export default class ItemSheetSD extends ItemSheet { ).render(true); } - /* ---------- Effect Event Handlers ---------- */ - /** - * Creates a new effect and renders the effect sheet. This is used - * for adding custom effects to an item with effects enabled. - * @param {Event} event - Event with information about the effect to create - * @returns {void} - */ - async _onEffectCreate(event) { - event.preventDefault(); - if (!this.isEditable) return; - shadowdark.log(`Creating a new effect on ${this.item.name}`); - const effectData = { - label: game.i18n.localize("SHADOWDARK.effect.new"), - icon: "icons/svg/aura.svg", - origin: this.item.uuid, - }; - const effect = await this._createEffect(effectData); - return effect[0]?.sheet.render(true); - } - - /** - * Toggles an ActiveEffect as active/inactive. - * @param {Event} event - Clicking event - * @returns {void} - */ - _onEffectActivate(event) { - event.preventDefault(); - if (!this.isEditable) return; - const effect = this._getEffectFromEvent(event); - shadowdark.log( - `${effect.disabled ? "A" : "Dea"}ctivating effect ${effect.name ?? effect.label}` - ); - return this._activateEffect(effect); - } - - /** - * Renders an ActiveEffect sheet for editing. - * @param {Event} event - Clicking event - * @returns {void} - */ - _onEffectEdit(event) { - event.preventDefault(); - if (!this.isEditable) return; - const effect = this._getEffectFromEvent(event); - shadowdark.log(`Editing effect ${effect.name ?? effect.label}`); - return effect.sheet.render(true); - } - - /** - * Deletes an ActiveEffect. - * @param {Event} event - Clicking event - * @returns {void} - */ - _onEffectDelete(event) { - event.preventDefault(); - if (!this.isEditable) return; - const effect = this._getEffectFromEvent(event); - shadowdark.log(`Deleting effect ${effect.name ?? effect.label}`); - return this._deleteEffect(effect); - } - async _onUpdateDurationEffect() { if (!this.isEditable) return; this.item.effects.map(e => e.update({duration: this._getDuration()})); } - /* -------------------------------------------- */ - /* Methods */ - /* -------------------------------------------- */ - - /* ---------- Effect Methods ---------- */ - - _getEffectFromEvent(event) { - const a = event.currentTarget; - const li = a.closest("li"); - const effect = li.dataset.effectId - ? this.item.effects.get(li.dataset.effectId) - : null; - return effect; - } - - _createEffect(data) { - // Add duration to the effect so it shows up as a token icon when applied - data.duration = this._getDuration(); - return this.item.createEmbeddedDocuments("ActiveEffect", [data]); - } - - _activateEffect(effect) { - return effect.update({disabled: !effect.disabled}); - } - - _deleteEffect(effect) { - return effect.delete(); - } - /** * Returns duration data for an active effect. This is used * to make sure the effect will show on a token icon. @@ -1008,78 +915,4 @@ export default class ItemSheetSD extends ItemSheet { return duration; } - - /* ---------- Predefined Effect Methods ---------- */ - - /** - * Returns an object containing the effect key, and the - * translated name into the current language. - * @returns {Object} - */ - async _getPredefinedEffectsList() { - const effects = {}; - - for (const key in CONFIG.SHADOWDARK.PREDEFINED_EFFECTS) { - const effect = CONFIG.SHADOWDARK.PREDEFINED_EFFECTS[key]; - - effects[key] = { - key, - name: effect.name, - }; - } - - return effects; - } - - - /** - * Creates effects based on predefined effect choices and the supplied - * predefined effect mappings. - * @param {string} key - Name of the predefined effect - * @param {Object} data - The item data of the item to be created - * @returns {ActiveEffect} - */ - async _createPredefinedEffect(key, data) { - const handledData = data; - - let defaultValue = "REPLACEME"; - [defaultValue] = await this.item._handlePredefinedEffect(key, data.defaultValue, data.name); - - if (defaultValue === "REPLACEME") { - return shadowdark.log("Can't create effect without selecting a value."); - } - - handledData.defaultValue = defaultValue; - - const effectMode = foundry.utils.getProperty( - CONST.ACTIVE_EFFECT_MODES, - data.mode.split(".")[2]); - - const value = (isNaN(parseInt(handledData.defaultValue, 10))) - ? handledData.defaultValue - : parseInt(handledData.defaultValue, 10); - - const effectData = [ - { - name: game.i18n.localize(`SHADOWDARK.item.effect.predefined_effect.${key}`), - label: game.i18n.localize(`SHADOWDARK.item.effect.predefined_effect.${key}`), - icon: handledData.icon, - changes: [{ - key: handledData.effectKey, - value, - mode: effectMode, - }], - disabled: false, - transfer: (Object.keys(handledData).includes("transfer")) - ? handledData.transfer - : true, - }, - ]; - - // Create the effect - await this.item.createEmbeddedDocuments( - "ActiveEffect", - effectData - ); - } } diff --git a/system/src/sheets/PlayerSheetSD.mjs b/system/src/sheets/PlayerSheetSD.mjs index 56015a20..ff08d716 100644 --- a/system/src/sheets/PlayerSheetSD.mjs +++ b/system/src/sheets/PlayerSheetSD.mjs @@ -211,7 +211,7 @@ export default class PlayerSheetSD extends ActorSheetSD { ); context.characterClass = await this.actor.getClass(); - context.classHasPatron = context.characterClass.system.patron.required; + context.classHasPatron = context.characterClass?.system?.patron?.required; context.classTitle = await this.actor.getTitle(); context.characterPatron = await this.actor.getPatron(); @@ -223,6 +223,7 @@ export default class PlayerSheetSD extends ActorSheetSD { // Update the Gem Bag, but don't render it unless it's already showing this.gemBag.render(false); + return context; } @@ -238,6 +239,8 @@ export default class PlayerSheetSD extends ActorSheetSD { return this.actor.addDeity(item); case "Language": return this.actor.addLanguage(item); + case "Patron": + return this.actor.addPatron(item); } } @@ -263,30 +266,34 @@ export default class PlayerSheetSD extends ActorSheetSD { if (await this._effectDropNotAllowed(data)) return false; - // Talents & Effects may need some user input - if (["Talent", "Effect"].includes(item.type)) { - let itemObj = await shadowdark.utils.createItemWithEffect(item); - - // add item to actor - const actorItem = await super._onDropItemCreate(itemObj); - if (itemObj.effects.some(e => e.changes.some(c => c.key === "system.light.template"))) { - this._toggleLightSource(actorItem[0]); - } - return; - } - + // Background items are handled differently currently const backgroundItems = [ "Ancestry", "Background", "Class", "Deity", "Language", + "Patron", ]; if (backgroundItems.includes(item.type)) { return this._onDropBackgroundItem(item); } + // Items with Effects may need some user input + if (item.effects.toObject().length > 0) { + let itemObj = await shadowdark.effects.createItemWithEffect(item); + + // add item to actor + const [newItem] = await super._onDropItem(event, data); + + if (itemObj.effects.some(e => e.changes.some(c => c.key === "system.light.template"))) { + this._toggleLightSource(newItem); + } + + return; + } + // Activate light spell if dropped onto the sheet if (CONFIG.SHADOWDARK.LIGHT_SOURCE_ITEM_IDS.includes(item.id)) { return this._dropActivateLightSource(item); diff --git a/system/src/templates.mjs b/system/src/templates.mjs index 31ca8380..bc2922c4 100644 --- a/system/src/templates.mjs +++ b/system/src/templates.mjs @@ -1,5 +1,10 @@ export default function() { const partials = [ + "systems/shadowdark/templates/_partials/predefined-effects-selector.hbs", + "systems/shadowdark/templates/actors/_partials/effects.hbs", + "systems/shadowdark/templates/actors/_partials/effects/active-effect.hbs", + "systems/shadowdark/templates/actors/_partials/effects/active-effects.hbs", + "systems/shadowdark/templates/actors/_partials/effects/effects-and-conditions.hbs", "systems/shadowdark/templates/actors/npc/abilities.hbs", "systems/shadowdark/templates/actors/npc/abilities/attacks.hbs", "systems/shadowdark/templates/actors/npc/abilities/features.hbs", @@ -10,7 +15,6 @@ export default function() { "systems/shadowdark/templates/actors/npc/partials/hp.hbs", "systems/shadowdark/templates/actors/npc/partials/level.hbs", "systems/shadowdark/templates/actors/npc/spells.hbs", - "systems/shadowdark/templates/actors/partials/effects.hbs", "systems/shadowdark/templates/actors/player/abilities.hbs", "systems/shadowdark/templates/actors/player/abilities/ac.hbs", "systems/shadowdark/templates/actors/player/abilities/attacks.hbs", @@ -66,8 +70,8 @@ export default function() { "systems/shadowdark/templates/apps/character-generator/details/languages/language-choice.hbs", "systems/shadowdark/templates/apps/character-generator/details/languages/view.hbs", "systems/shadowdark/templates/apps/character-generator/details/patron.hbs", - "systems/shadowdark/templates/apps/character-generator/details/patron/view.hbs", "systems/shadowdark/templates/apps/character-generator/details/patron/edit.hbs", + "systems/shadowdark/templates/apps/character-generator/details/patron/view.hbs", "systems/shadowdark/templates/apps/character-generator/details/weapons.hbs", "systems/shadowdark/templates/apps/character-generator/gear.hbs", "systems/shadowdark/templates/apps/character-generator/gold.hbs", @@ -82,7 +86,6 @@ export default function() { "systems/shadowdark/templates/items/_partials/effects-tab.hbs", "systems/shadowdark/templates/items/_partials/effects/active-effect.hbs", "systems/shadowdark/templates/items/_partials/effects/active-effects-list.hbs", - "systems/shadowdark/templates/items/_partials/effects/predefined-selector.hbs", "systems/shadowdark/templates/items/_partials/header.hbs", "systems/shadowdark/templates/items/_partials/item-properties/ammunition.hbs", "systems/shadowdark/templates/items/_partials/item-properties/equipped.hbs", @@ -140,6 +143,8 @@ export default function() { "systems/shadowdark/templates/items/weapon/_partials/weapon.hbs", "systems/shadowdark/templates/items/weapon/details-tab.hbs", "systems/shadowdark/templates/ui/sd-box.hbs", + "systems/shadowdark/templates/ui/sd-hideable-header.hbs", + "systems/shadowdark/templates/ui/sd-hideable-section.hbs", ]; const paths = {}; diff --git a/system/src/utils/UtilitySD.mjs b/system/src/utils/UtilitySD.mjs index de6a2ab6..35269435 100644 --- a/system/src/utils/UtilitySD.mjs +++ b/system/src/utils/UtilitySD.mjs @@ -6,8 +6,23 @@ export default class UtilitySD { return game.permissions.ACTOR_CREATE.includes(game.user.role); } - /* Create a roll Macro from an Item dropped on the hotbar. - * Get an existing item macro if one exists, otherwise create a new one. + + static combineCollection(map1, map2) { + map2.forEach(value => { + if (map1.has(value._id)) { + shadowdark.warn(`Map already contains an item with key ${key}`); + } + else { + map1.set(value._id, value); + } + }); + + return map1; + } + + + /** Create a roll Macro from an Item dropped on the hotbar. + * Get an existing item macro if one exists, otherwise create a new one. * * @param {object} data - The dropped data * @param {number} slot - The hotbar slot to use @@ -54,11 +69,20 @@ export default class UtilitySD { game.user.assignHotbarMacro(macro, slot); } + + static diceSound() { + const sounds = [CONFIG.sounds.dice]; + const src = sounds[0]; + game.audio.play(src, {volume: 1}); + } + + static foundryMinVersion(version) { const majorVersion = parseInt(game.version.split(".")[0]); return majorVersion >= version; } + /** * Creates de-duplicated lists of Selected and Unselected Items. * @@ -87,6 +111,7 @@ export default class UtilitySD { return [selectedItems, unselectedItems]; } + static async getFromUuid(uuid) { const itemObj = await fromUuid(uuid); if (itemObj) { @@ -97,6 +122,7 @@ export default class UtilitySD { } } + static getFromUuidSync(uuid) { const itemObj = fromUuidSync(uuid); if (itemObj) { @@ -107,6 +133,7 @@ export default class UtilitySD { } } + static async getItemsFromRollResults(results) { const items = []; @@ -124,6 +151,7 @@ export default class UtilitySD { return items; } + static getMessageStyles() { const messageStyles = this.foundryMinVersion(12) ? CONST.CHAT_MESSAGE_STYLES @@ -132,6 +160,7 @@ export default class UtilitySD { return messageStyles; } + static getNextDieInList(die, allDice) { if (die === false) return die; @@ -144,25 +173,55 @@ export default class UtilitySD { return die; } + static async getSlugifiedItemList(items) { const itemList = {}; items.map(i => itemList[i.name.slugify()] = i.name ); return itemList; } - static combineCollection(map1, map2) { - map2.forEach(value => { - if (map1.has(value._id)) { - shadowdark.warn(`Map already contains an item with key ${key}`); + + static isPrimaryGM() { + if (!game.user.isGM) return false; + + // if primaryGM flag is true, return + if (game.user.getFlag("shadowdark", "primaryGM")) { + return true; + } + else { + // locate the primary GM + const primaryGMs = game.users.filter(x => + x.active === true && x.flags.shadowdark.primaryGM === true + ); + if (primaryGMs.length === 0) { + // if no primary GM, set current user as primary GM + game.user.setFlag("shadowdark", "primaryGM", true); + shadowdark.log("Promoted to Primary GM"); + return true; } else { - map1.set(value._id, value); + return false; } - }); + } + } - return map1; + + static async loadLegacyArtMappings() { + // search modules for legacy art mappings and convert to new format + for (const module of game.modules) { + if (!module.active) continue; + const flags = module.flags?.[module.id]; + if (flags?.["shadowdark-art"]) { + module.flags.compendiumArtMappings = { + shadowdark: { + mapping: flags["shadowdark-art"], + }, + }; + } + } } + // If this is a new release, show the release notes to the GM the first time // they login static async showNewReleaseNotes() { @@ -183,125 +242,13 @@ export default class UtilitySD { } } + static async sleep(millisecs=1000) { return new Promise((resolve, reject) => { setTimeout(resolve, millisecs); }); } - /** - * Asks the user for input if necessary for an effect that requires said input. - * @param {Item} item - Item that has the effects - * @param {*} effect - The effect being analyzed - * @param {*} key - Optional key if it isn't a unique system.bonuses.key - * @returns {Object} - Object updated with the changes - */ - static async modifyEffectChangesWithInput(item, effect, key = false) { - // Create an object out of the item to modify before creating - const itemObject = item.toObject(); - let name = itemObject.name; - - const changes = await Promise.all( - effect.changes.map(async c => { - if (CONFIG.SHADOWDARK.EFFECT_ASK_INPUT.includes(c.key)) { - const effectKey = (key) ? key : c.key.split(".")[2]; - - // Ask for user input - let linkedName; - [c.value, linkedName] = await item._handlePredefinedEffect( - effectKey, - null, - name - ); - - if (c.value) { - name += ` (${linkedName})`; - } - } - return c; - }) - ); - - // Modify the Effect object - itemObject.effects.map(e => { - if (e._id === effect._id) { - e.changes = changes; - itemObject.name = name; - } - return e; - }); - return itemObject; - } - - /** - * Contains logic that handles any complex effects, where the user - * needs to provide input to determine the effect. - * @param {Item} item - The item being created - */ - static async createItemWithEffect(item) { - let itemObj = item.toObject(); - await Promise.all(itemObj.effects?.map(async e => { - - // If the item contains effects that require user input, - // ask and modify talent before creating - if ( - e.changes?.some(c => - CONFIG.SHADOWDARK.EFFECT_ASK_INPUT.includes(c.key) - ) - ) { - // Spell Advantage requires special handling as it uses the `advantage` bons - if (e.changes.some(c => c.key === "system.bonuses.advantage")) { - // If there is no value with REPLACME, it is another type of advantage talent - if (e.changes.some(c => c.value === "REPLACEME")) { - const key = "spellAdvantage"; - itemObj = await this.modifyEffectChangesWithInput(item, e, key); - } - } - else { - itemObj = await this.modifyEffectChangesWithInput(item, e); - } - } - })); - - // If any effects was created without a value, we don't create the item - if (itemObj.effects.some(e => e.changes.some(c => !c.value))) return ui.notifications.warn( - game.i18n.localize("SHADOWDARK.item.effect.warning.add_effect_without_value") - ); - - // Activate lightsource tracking - if (itemObj.effects.some(e => e.changes.some(c => c.key === "system.light.template"))) { - const duration = itemObj.totalDuration; - itemObj.system.light.isSource = true; - itemObj.system.light.longevitySecs = duration; - itemObj.system.light.remainingSecs = duration; - itemObj.system.light.longevityMins = duration / 60; - } - return itemObj; - } - - static isPrimaryGM() { - if (!game.user.isGM) return false; - - // if primaryGM flag is true, return - if (game.user.getFlag("shadowdark", "primaryGM")) { - return true; - } - else { - // locate the primary GM - const primaryGMs = game.users.filter(x => - x.active === true && x.flags.shadowdark.primaryGM === true - ); - if (primaryGMs.length === 0) { - // if no primary GM, set current user as primary GM - game.user.setFlag("shadowdark", "primaryGM", true); - shadowdark.log("Promoted to Primary GM"); - return true; - } - else { - return false; - } - } - } static async toggleItemDetails(target) { const listObj = $(target).parent(); @@ -332,24 +279,4 @@ export default class UtilitySD { listObj.toggleClass("expanded"); } - static diceSound() { - const sounds = [CONFIG.sounds.dice]; - const src = sounds[0]; - game.audio.play(src, {volume: 1}); - } - - static async loadLegacyArtMappings() { - // search modules for legacy art mappings and convert to new format - for (const module of game.modules) { - if (!module.active) continue; - const flags = module.flags?.[module.id]; - if (flags?.["shadowdark-art"]) { - module.flags.compendiumArtMappings = { - shadowdark: { - mapping: flags["shadowdark-art"], - }, - }; - } - } - } } diff --git a/system/templates/partials/details/armor.hbs b/system/templates/_partials/details/armor.hbs similarity index 100% rename from system/templates/partials/details/armor.hbs rename to system/templates/_partials/details/armor.hbs diff --git a/system/templates/partials/details/default.hbs b/system/templates/_partials/details/default.hbs similarity index 100% rename from system/templates/partials/details/default.hbs rename to system/templates/_partials/details/default.hbs diff --git a/system/templates/partials/details/effect.hbs b/system/templates/_partials/details/effect.hbs similarity index 100% rename from system/templates/partials/details/effect.hbs rename to system/templates/_partials/details/effect.hbs diff --git a/system/templates/partials/details/spell.hbs b/system/templates/_partials/details/spell.hbs similarity index 100% rename from system/templates/partials/details/spell.hbs rename to system/templates/_partials/details/spell.hbs diff --git a/system/templates/partials/details/weapon.hbs b/system/templates/_partials/details/weapon.hbs similarity index 100% rename from system/templates/partials/details/weapon.hbs rename to system/templates/_partials/details/weapon.hbs diff --git a/system/templates/partials/npc-attack.hbs b/system/templates/_partials/npc-attack.hbs similarity index 100% rename from system/templates/partials/npc-attack.hbs rename to system/templates/_partials/npc-attack.hbs diff --git a/system/templates/partials/npc-special-attack.hbs b/system/templates/_partials/npc-special-attack.hbs similarity index 100% rename from system/templates/partials/npc-special-attack.hbs rename to system/templates/_partials/npc-special-attack.hbs diff --git a/system/templates/items/_partials/effects/predefined-selector.hbs b/system/templates/_partials/predefined-effects-selector.hbs similarity index 92% rename from system/templates/items/_partials/effects/predefined-selector.hbs rename to system/templates/_partials/predefined-effects-selector.hbs index dbf6cacc..95d147e2 100644 --- a/system/templates/items/_partials/effects/predefined-selector.hbs +++ b/system/templates/_partials/predefined-effects-selector.hbs @@ -7,7 +7,7 @@ + {{> actors/_partials/effects/effects-and-conditions}} +
    + {{> actors/_partials/effects/active-effects}} +
    diff --git a/system/templates/actors/_partials/effects/active-effect.hbs b/system/templates/actors/_partials/effects/active-effect.hbs new file mode 100644 index 00000000..f16bda83 --- /dev/null +++ b/system/templates/actors/_partials/effects/active-effect.hbs @@ -0,0 +1,59 @@ +
  • +
    + +
    + +
    + {{effect.name}} +
    + +
    + {{effect.sourceName}} +
    + +
    + {{#ifEq effect.durationLabel "None" }} + + {{else}} + {{effect.durationLabel}} + {{/ifEq}} +
    + + +
  • diff --git a/system/templates/actors/_partials/effects/active-effects.hbs b/system/templates/actors/_partials/effects/active-effects.hbs new file mode 100644 index 00000000..0832e6dd --- /dev/null +++ b/system/templates/actors/_partials/effects/active-effects.hbs @@ -0,0 +1,42 @@ +{{#> ui/sd-hideable-section + sectionId="activeEffects" + sectionTitle=(localize "SHADOWDARK.app.active_effects.title") +}} + {{> _partials/predefined-effects-selector}} + +
      +
    1. + + + + +

      + {{localize "SHADOWDARK.item.effect.category.effect"}} +

      + +

      + {{localize "SHADOWDARK.sheet.general.active_effects.source.title"}} +

      + +

      + {{localize "SHADOWDARK.sheet.general.active_effects.duration.title"}} +

      + +
      +
    2. + + {{#each activeEffects as |section sid|}} + {{#each section.effects as |effect|}} + + {{> actors/_partials/effects/active-effect + effect=effect + }} + + {{/each}} + {{/each}} +
    +{{/ui/sd-hideable-section}} diff --git a/system/templates/actors/_partials/effects/effects-and-conditions.hbs b/system/templates/actors/_partials/effects/effects-and-conditions.hbs new file mode 100644 index 00000000..5ff0b11c --- /dev/null +++ b/system/templates/actors/_partials/effects/effects-and-conditions.hbs @@ -0,0 +1,42 @@ +{{#> ui/sd-hideable-section + sectionId="" + sectionTitle=(localize "SHADOWDARK.sheet.general.effects_and_conditions.title") +}} + {{#each effects as |section sid|}} +
      +
    1. +
      + {{section.label}} +
      + +
      + {{localize 'SHADOWDARK.item.npc_attack_type'}} +
      +
    2. + + {{#each section.items as |effect|}} +
    3. +
      + +
      + + + {{effect.name}} + + +
      + {{#ifEq effect.system.duration.type "unlimited" }} + + {{else}} + + {{/ifEq}} +
      +
    4. + {{/each}} +
    + {{/each}} +{{/ui/sd-hideable-section}} diff --git a/system/templates/actors/npc.hbs b/system/templates/actors/npc.hbs index 36a77502..d0735a5b 100644 --- a/system/templates/actors/npc.hbs +++ b/system/templates/actors/npc.hbs @@ -43,7 +43,7 @@ {{> actors/npc/abilities }} {{> actors/npc/spells }} - {{> actors/partials/effects }} + {{> actors/_partials/effects }} {{> actors/npc/description }}
    diff --git a/system/templates/actors/partials/effects.hbs b/system/templates/actors/partials/effects.hbs deleted file mode 100644 index d79cfc93..00000000 --- a/system/templates/actors/partials/effects.hbs +++ /dev/null @@ -1,30 +0,0 @@ -
    -
    Effects and Conditions
    - - {{#each effects as |section sid|}} -
      -
    1. -
      {{section.label}}
      -
      {{localize 'SHADOWDARK.item.npc_attack_type'}}
      -
    2. - {{#each section.items as |effect|}} -
    3. -
      - -
      - - {{effect.name}} - -
      - {{#ifEq effect.system.duration.type "unlimited" }} - - {{else}} - - {{/ifEq}} -
      -
    4. - {{/each}} -
    - {{/each}} - -
    diff --git a/system/templates/actors/player.hbs b/system/templates/actors/player.hbs index 10d20698..899d85a0 100644 --- a/system/templates/actors/player.hbs +++ b/system/templates/actors/player.hbs @@ -63,7 +63,7 @@ {{> actors/player/spells }} {{> actors/player/talents }} {{> actors/player/inventory }} - {{> actors/partials/effects }} + {{> actors/_partials/effects }} {{> actors/player/notes }}
    diff --git a/system/templates/actors/player/details/ancestry.hbs b/system/templates/actors/player/details/ancestry.hbs index 135a5eea..d0a8698a 100644 --- a/system/templates/actors/player/details/ancestry.hbs +++ b/system/templates/actors/player/details/ancestry.hbs @@ -16,7 +16,7 @@
    diff --git a/system/templates/actors/player/details/boons.hbs b/system/templates/actors/player/details/boons.hbs index b00707d2..7fe55ed7 100644 --- a/system/templates/actors/player/details/boons.hbs +++ b/system/templates/actors/player/details/boons.hbs @@ -1,58 +1,60 @@
    -
    - {{localize "SHADOWDARK.sheet.player.boons.label"}} -
    -
      -
    1. -
      - - {{localize "SHADOWDARK.sheet.player.boon.label"}} -
      -
      - {{localize "SHADOWDARK.boon.type.label"}} -
      -
      - {{localize "SHADOWDARK.talent.level_gained"}} -
      -
    2. + {{#> ui/sd-hideable-section + sectionId="" + sectionTitle=(localize "SHADOWDARK.sheet.player.boons.label") + }} +
        +
      1. +
        + + {{localize "SHADOWDARK.sheet.player.boon.label"}} +
        +
        + {{localize "SHADOWDARK.boon.type.label"}} +
        +
        + {{localize "SHADOWDARK.talent.level_gained"}} +
        +
      2. - {{#each boons as |boonType|}} - {{#each boonType.items as |boon|}} -
      3. -
        - -
        +
        + +
        - - {{boon.name}} - + + {{boon.name}} + -
        - {{boonType.label}} -
        +
        + {{boonType.label}} +
        -
        - {{#ifCond boon.system.level ">" 0}} - {{boon.system.level}} - {{/ifCond}} -
        -
      4. +
        + {{#ifCond boon.system.level ">" 0}} + {{boon.system.level}} + {{/ifCond}} +
        + + {{/each}} {{/each}} - {{/each}} -
      +
    + {{/ui/sd-hideable-section}}
    diff --git a/system/templates/actors/player/details/class.hbs b/system/templates/actors/player/details/class.hbs index 6a8f1e16..4c3f89e1 100644 --- a/system/templates/actors/player/details/class.hbs +++ b/system/templates/actors/player/details/class.hbs @@ -24,7 +24,7 @@ > {{/if}} diff --git a/system/templates/actors/player/details/deity.hbs b/system/templates/actors/player/details/deity.hbs index fdfb2ea6..a94279f9 100644 --- a/system/templates/actors/player/details/deity.hbs +++ b/system/templates/actors/player/details/deity.hbs @@ -16,7 +16,7 @@
    diff --git a/system/templates/actors/player/inventory/carried-gear.hbs b/system/templates/actors/player/inventory/carried-gear.hbs index e79dfc38..fe2219e6 100644 --- a/system/templates/actors/player/inventory/carried-gear.hbs +++ b/system/templates/actors/player/inventory/carried-gear.hbs @@ -1,35 +1,36 @@ - -
    - {{localize "SHADOWDARK.inventory.carried_gear"}} -
    +{{#> ui/sd-hideable-section + sectionId="" + sectionTitle=(localize "SHADOWDARK.inventory.carried_gear") +}} +
      +
    1. +
      + + {{localize "SHADOWDARK.sheet.player.inventory.items.label"}} +
      +
      + {{localize "SHADOWDARK.sheet.player.inventory.quantity_short.label"}} +
      +
      + {{localize "SHADOWDARK.sheet.player.inventory.slots.label"}} +
      +
      +
    2. -
        -
      1. -
        - - {{localize "SHADOWDARK.sheet.player.inventory.items.label"}} -
        -
        - {{localize "SHADOWDARK.sheet.player.inventory.quantity_short.label"}} -
        -
        - {{localize "SHADOWDARK.sheet.player.inventory.slots.label"}} -
        -
        -
      2. + {{#each inventory.carried as |item|}} + {{> actors/player/inventory/item + item=item + owner=../owner + }} + {{/each}} +
      - {{#each inventory.carried as |item|}} - {{> actors/player/inventory/item - item=item - owner=../owner - }} - {{/each}} -
    + {{> actors/player/inventory/treasure }} -{{> actors/player/inventory/treasure }} +{{/ui/sd-hideable-section}}
    diff --git a/system/templates/actors/player/inventory/equipped-gear.hbs b/system/templates/actors/player/inventory/equipped-gear.hbs index ed34fbd8..c4d77a83 100644 --- a/system/templates/actors/player/inventory/equipped-gear.hbs +++ b/system/templates/actors/player/inventory/equipped-gear.hbs @@ -1,28 +1,28 @@ - -
    - {{localize "SHADOWDARK.inventory.equipped_gear"}} -
    +{{#> ui/sd-hideable-section + sectionId="" + sectionTitle=(localize "SHADOWDARK.inventory.equipped_gear") +}} +
      +
    1. +
      + {{localize "SHADOWDARK.sheet.player.inventory.gear.label"}} +
      +
      + {{localize "SHADOWDARK.sheet.player.inventory.quantity_short.label"}} +
      +
      + {{localize "SHADOWDARK.sheet.player.inventory.slots.label"}} +
      +
      +
    2. -
        -
      1. -
        - {{localize "SHADOWDARK.sheet.player.inventory.gear.label"}} -
        -
        - {{localize "SHADOWDARK.sheet.player.inventory.quantity_short.label"}} -
        -
        - {{localize "SHADOWDARK.sheet.player.inventory.slots.label"}} -
        -
        -
      2. - - {{#each inventory.equipped as |item|}} - {{> actors/player/inventory/item - item=item - owner=../owner - }} - {{/each}} -
      + {{#each inventory.equipped as |item|}} + {{> actors/player/inventory/item + item=item + owner=../owner + }} + {{/each}} +
    +{{/ui/sd-hideable-section}}
    diff --git a/system/templates/actors/player/inventory/stashed-gear.hbs b/system/templates/actors/player/inventory/stashed-gear.hbs index 9bc01c99..463f6580 100644 --- a/system/templates/actors/player/inventory/stashed-gear.hbs +++ b/system/templates/actors/player/inventory/stashed-gear.hbs @@ -1,57 +1,58 @@ - -
    - {{localize "SHADOWDARK.inventory.stashed_gear"}} -
    -
      -
    1. -
      - {{localize "SHADOWDARK.sheet.player.inventory.stashed_item.label"}} -
      -
      - {{localize "SHADOWDARK.sheet.player.inventory.type.label"}} -
      -
      - {{localize "SHADOWDARK.sheet.player.inventory.slots.label"}} -
      -
      -
      -
    2. - - {{#each inventory.stashed as |item|}} -
    3. -
      - +{{#> ui/sd-hideable-section + sectionId="stashedGear" + sectionTitle=(localize "SHADOWDARK.inventory.stashed_gear") +}} +
        +
      1. +
        + {{localize "SHADOWDARK.sheet.player.inventory.stashed_item.label"}}
        - - {{item.name}} - {{#if item.lightSourceUsed}} - {{localize 'SHADOWDARK.inventory.item.light_used'}} - {{/if}} - -
        - {{item.type}} + {{localize "SHADOWDARK.sheet.player.inventory.type.label"}}
        -
        - {{item.slotsUsed}} + {{localize "SHADOWDARK.sheet.player.inventory.slots.label"}}
        -
      2. - {{/each}} -
      + + {{#each inventory.stashed as |item|}} +
    4. +
      + +
      + + {{item.name}} + {{#if item.lightSourceUsed}} + {{localize 'SHADOWDARK.inventory.item.light_used'}} + {{/if}} + + +
      + {{item.type}} +
      + +
      + {{item.slotsUsed}} +
      + +
      + + + +
      +
    5. + {{/each}} +
    +{{/ui/sd-hideable-section}}
    diff --git a/system/templates/actors/player/notes.hbs b/system/templates/actors/player/notes.hbs index 01b510da..c1792495 100644 --- a/system/templates/actors/player/notes.hbs +++ b/system/templates/actors/player/notes.hbs @@ -1,13 +1,15 @@
    -
    - Character Notes -
    - {{editor - notesHTML - target="system.notes" - button=true - editable=editable - engine="prosemirror" - collaborate=false + {{#> ui/sd-hideable-section + sectionId="" + sectionTitle=(localize "SHADOWDARK.sheet.actor.character_notes") }} + {{editor + notesHTML + target="system.notes" + button=true + editable=editable + engine="prosemirror" + collaborate=false + }} + {{/ui/sd-hideable-section}}
    diff --git a/system/templates/actors/player/spells.hbs b/system/templates/actors/player/spells.hbs index 03c88728..ee1b0a5f 100644 --- a/system/templates/actors/player/spells.hbs +++ b/system/templates/actors/player/spells.hbs @@ -1,165 +1,165 @@
    {{#if isSpellCaster}} -
    - {{localize "SHADOWDARK.sheet.item.tab.spellsknown"}} -   - -
    - {{#each spells as |tier tid|}} -
      -
    1. -
      {{localize 'SHADOWDARK.sheet.player.spells_tier'}} {{tid}}
      -
      {{localize 'SHADOWDARK.item.spell_duration'}}
      -
      {{localize 'SHADOWDARK.item.spell_range'}}
      -
      -
    2. - {{#each tier as |spell|}} -
    3. -
      - -
      - - {{this.name}} - -
      - {{getSpellDuration spell.system.duration.type spell.system.duration.value}} -
      -
      - {{fromConfig "SPELL_RANGES"spell.system.range}} -
      -
      - {{#unless spell.system.lost}} + {{#> ui/sd-hideable-section + sectionId="" + sectionTitle=(localize "SHADOWDARK.sheet.item.tab.spellsknown") + }} + {{#each spells as |tier tid|}} +
        +
      1. +
        {{localize 'SHADOWDARK.sheet.player.spells_tier'}} {{tid}}
        +
        {{localize 'SHADOWDARK.item.spell_duration'}}
        +
        {{localize 'SHADOWDARK.item.spell_range'}}
        +
        +
      2. + {{#each tier as |spell|}} +
      3. +
        + +
        + + {{this.name}} + +
        + {{getSpellDuration spell.system.duration.type spell.system.duration.value}} +
        +
        + {{fromConfig "SPELL_RANGES"spell.system.range}} +
        +
        + {{#unless spell.system.lost}} + + + + {{/unless}} + + {{#if spell.system.lost}} + + {{else}} + + {{/if}} + +
        +
      4. + {{/each}} +
      + {{/each}} +
      + {{/ui/sd-hideable-section}} + {{/if}} + + {{#if canUseMagicItems}} + {{#> ui/sd-hideable-section + sectionId="" + sectionTitle=(localize "SHADOWDARK.sheet.player.spells_from_items") + }} + {{#if spellitems.wands}} +
        +
      1. +
        {{localize "SHADOWDARK.item.wand.label"}}
        +
        {{localize 'SHADOWDARK.item.spell_duration'}}
        +
        {{localize 'SHADOWDARK.item.spell_range'}}
        +
        +
      2. + + {{#each spellitems.wands as |item|}} + +
      3. +
        + +
        + + {{item.system.spellName}} + +
        + {{getSpellDuration item.system.duration.type item.system.duration.value}} +
        +
        + {{fromConfig "SPELL_RANGES" item.system.range}} +
        + -
      4. - {{/each}} -
      - {{/each}} -
      - {{/if}} - - {{#if canUseMagicItems}} -
      {{localize "SHADOWDARK.sheet.player.spells_from_items"}}
      - {{#if spellitems.wands}} -
        -
      1. -
        {{localize "SHADOWDARK.item.wand.label"}}
        -
        {{localize 'SHADOWDARK.item.spell_duration'}}
        -
        {{localize 'SHADOWDARK.item.spell_range'}}
        -
        -
      2. +
      +
    4. + {{/each}} +
    + {{/if}} - {{#each spellitems.wands as |item|}} + {{#if spellitems.scrolls}} +
      +
    1. +
      {{localize "SHADOWDARK.item.scroll.label"}}
      +
      {{localize 'SHADOWDARK.item.spell_duration'}}
      +
      {{localize 'SHADOWDARK.item.spell_range'}}
      +
      +
    2. -
    3. -
      - -
      - - {{item.system.spellName}} - -
      - {{getSpellDuration item.system.duration.type item.system.duration.value}} -
      -
      - {{fromConfig "SPELL_RANGES" item.system.range}} -
      -
    4. +
      + +
      +
      + {{item.system.spellName}} -
    - - {{/each}} - - {{/if}} - - {{#if spellitems.scrolls}} -
      -
    1. -
      {{localize "SHADOWDARK.item.scroll.label"}}
      -
      {{localize 'SHADOWDARK.item.spell_duration'}}
      -
      {{localize 'SHADOWDARK.item.spell_range'}}
      -
      -
    2. - - {{#each spellitems.scrolls as |item|}} -
    3. -
      - -
      - - {{item.system.spellName}} - -
      - {{getSpellDuration item.system.duration.type item.system.duration.value}} -
      -
      - {{fromConfig "SPELL_RANGES" item.system.range}} -
      -
      - - - - {{#if ../isSpellCaster}} +
      + {{getSpellDuration item.system.duration.type item.system.duration.value}} +
      +
      + {{fromConfig "SPELL_RANGES" item.system.range}} +
      +
      - + - {{/if}} -
      -
    4. - {{/each}} -
    - {{/if}} + {{#if ../isSpellCaster}} + + + + {{/if}} +
    + + {{/each}} + + {{/if}} + {{/ui/sd-hideable-section}} {{/if}}
    diff --git a/system/templates/actors/player/talents.hbs b/system/templates/actors/player/talents.hbs index 2eb39661..1ef904d0 100644 --- a/system/templates/actors/player/talents.hbs +++ b/system/templates/actors/player/talents.hbs @@ -1,42 +1,53 @@
    -
    {{localize "SHADOWDARK.talent.class.ancestry"}} & {{localize "SHADOWDARK.talent.class.class"}}
    -
      -
    1. -
      {{localize "SHADOWDARK.item_type.talent"}}
      -
      Type
      -
    2. - - {{#each talents.ancestry.items}} -
    3. -
      - {{this.name}} -
      Ancestry
      + {{#> ui/sd-hideable-section + sectionId="" + sectionTitle=(concat + (localize "SHADOWDARK.talent.class.ancestry") + " & " + (localize "SHADOWDARK.talent.class.class") + ) + }} +
        +
      1. +
        {{localize "SHADOWDARK.item_type.talent"}}
        +
        Type
      2. - {{/each}} - {{#each talents.class.items}} -
      3. -
        - -
        - {{this.name}} -
        Class
        -
      4. - {{/each}} -
      + {{#each talents.ancestry.items}} +
    4. +
      + {{this.name}} +
      Ancestry
      +
    5. + {{/each}} + + {{#each talents.class.items}} +
    6. +
      + +
      + {{this.name}} +
      Class
      +
    7. + {{/each}} +
    + {{/ui/sd-hideable-section}}
    -
    {{localize "SHADOWDARK.item.level"}}
    + {{#> ui/sd-hideable-section + sectionId="" + sectionTitle=(localize "SHADOWDARK.item.level") + }}
    1. {{localize "SHADOWDARK.item_type.talent"}}
      @@ -61,5 +72,6 @@
    2. {{/each}}
    + {{/ui/sd-hideable-section}}
    diff --git a/system/templates/apps/effect-panel.hbs b/system/templates/apps/effect-panel.hbs index ea3b4e66..d6261a50 100644 --- a/system/templates/apps/effect-panel.hbs +++ b/system/templates/apps/effect-panel.hbs @@ -61,7 +61,7 @@
    {{#if effect.temporary}} diff --git a/system/templates/dialog/are-you-sure.hbs b/system/templates/dialog/are-you-sure.hbs new file mode 100644 index 00000000..3485562a --- /dev/null +++ b/system/templates/dialog/are-you-sure.hbs @@ -0,0 +1,3 @@ +
    +

    {{localize "SHADOWDARK.dialog.general.are_you_sure"}}

    +
    diff --git a/system/templates/items/_partials/effects-tab.hbs b/system/templates/items/_partials/effects-tab.hbs index ec3a21f5..fe979be8 100644 --- a/system/templates/items/_partials/effects-tab.hbs +++ b/system/templates/items/_partials/effects-tab.hbs @@ -1,6 +1,6 @@
    - {{> items/_partials/effects/predefined-selector }} - {{> items/_partials/effects/active-effects-list }} + {{> _partials/predefined-effects-selector}} + {{> items/_partials/effects/active-effects-list}}
    diff --git a/system/templates/items/_partials/effects/active-effect.hbs b/system/templates/items/_partials/effects/active-effect.hbs index b39b2c85..e4b3ffc1 100644 --- a/system/templates/items/_partials/effects/active-effect.hbs +++ b/system/templates/items/_partials/effects/active-effect.hbs @@ -1,14 +1,10 @@ -
  • -
    - +
  • +
    +
    - {{#unless effect.name}} - {{effect.label}} - {{else}} - {{effect.name}} - {{/unless}} + {{effect.name}}
    @@ -28,23 +24,35 @@
    + class="effect-control" + data-action="toggle" + data-tooltip="{{localize "SHADOWDARK.sheet.general.active_effects.toggle_effect.tooltip"}}" + > + {{#if effect.disabled}} + + {{else}} + + {{/if}} + + + class="effect-control" + data-action="edit" + data-tooltip="{{localize 'SHADOWDARK.sheet.general.active_effects.edit_effect.tooltip'}}" + > + + + + class="effect-control" + data-action="delete" + data-tooltip="{{localize 'SHADOWDARK.sheet.general.active_effects.delete_effect.tooltip'}}" + > + +
  • diff --git a/system/templates/items/_partials/effects/active-effects-list.hbs b/system/templates/items/_partials/effects/active-effects-list.hbs index 99f19759..3445ba13 100644 --- a/system/templates/items/_partials/effects/active-effects-list.hbs +++ b/system/templates/items/_partials/effects/active-effects-list.hbs @@ -5,10 +5,12 @@
    1. + > + +
      {{localize "SHADOWDARK.item.effect.category.effect"}}
      diff --git a/system/templates/ui/sd-hideable-header.hbs b/system/templates/ui/sd-hideable-header.hbs new file mode 100644 index 00000000..af088295 --- /dev/null +++ b/system/templates/ui/sd-hideable-header.hbs @@ -0,0 +1,21 @@ +
      + {{#if sectionId}} + {{#if (lookup hiddenSections sectionId)}} + + {{else}} + + {{/if}} + {{/if}} + {{sectionTitle}} +
      diff --git a/system/templates/ui/sd-hideable-section.hbs b/system/templates/ui/sd-hideable-section.hbs new file mode 100644 index 00000000..2cee9dd1 --- /dev/null +++ b/system/templates/ui/sd-hideable-section.hbs @@ -0,0 +1,12 @@ +{{> ui/sd-hideable-header + sectionTitle=sectionTitle + sectionId=sectionId +}} +
      + {{> @partial-block }} +
      From aacd68521ee65753574760e403b9214efcc801f0 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 14:08:02 +0000 Subject: [PATCH 131/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index 81d59666..17e9bc3f 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -106,6 +106,14 @@ SHADOWDARK.apps.monster-importer.instruction2d: Основной блок хар SHADOWDARK.apps.monster-importer.instruction2e: Особенность SHADOWDARK.apps.monster-importer.instruction3: 3. Нажмите "Импортировать монстра". SHADOWDARK.apps.monster-importer.title: Импорт монстра +SHADOWDARK.apps.request-check.copied: Copied to Clipboard +SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard +SHADOWDARK.apps.request-check.custom: Custom +SHADOWDARK.apps.request-check.easy: Easy +SHADOWDARK.apps.request-check.hard: Hard +SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.normal: Normal +SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Предметы не найдены SHADOWDARK.apps.shadowdarkling-importer.header: Импортер Shadowdarkling SHADOWDARK.apps.shadowdarkling-importer.import_button: Импортировать @@ -187,6 +195,7 @@ SHADOWDARK.chat.welcome_message.title_text: Добро пожаловать в S SHADOWDARK.chat.welcome_message.title: Shadowdark RPG для Foundry SHADOWDARK.chat.welcome_message.watch: Посмотрите видео-руководство SHADOWDARK.chatcard.default: Бросок +SHADOWDARK.check.requesting: Requesting a check SHADOWDARK.class-ability.ability.check: Проверка способности SHADOWDARK.class-ability.ability.label: Способность SHADOWDARK.class-ability.available.label: Доступно @@ -341,8 +350,10 @@ SHADOWDARK.effect.unavailable: Отключенные эффекты SHADOWDARK.error.class_ability.no-uses-remaining: Не осталось использований SHADOWDARK.error.general.gm_required: Для этого действия требуются права Мастера игры. SHADOWDARK.error.general.no_character_class: Класс персонажа не выбран +SHADOWDARK.error.general.no_character_selected: No character selected SHADOWDARK.error.source.source_missing: Источник отсутствует или неизвестен... SHADOWDARK.error.spells.no_spellcasting_ability_set: Способность к заклинаниям персонажа не настроена +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.form.section_header.equipment.label: Снаряжение SHADOWDARK.form.section_header.languages.label: Языки SHADOWDARK.form.section_header.names.label: Имена @@ -667,6 +678,7 @@ SHADOWDARK.sheet.abilities.uses.decrement.tooltip: Уменьшить досту SHADOWDARK.sheet.abilities.uses.increment.tooltip: Увеличить доступные использования SHADOWDARK.sheet.actor.ac: КЗ SHADOWDARK.sheet.actor.alignment: Мировоззрение +SHADOWDARK.sheet.actor.character_notes: Character Notes SHADOWDARK.sheet.actor.hp_max: Макс SHADOWDARK.sheet.actor.hp: ОЗ SHADOWDARK.sheet.actor.level: Уровень @@ -674,10 +686,20 @@ SHADOWDARK.sheet.actor.placeholder.name: Имя нового актора SHADOWDARK.sheet.class.item: Лист предмета Shadowdark SHADOWDARK.sheet.class.npc: Лист NPC Shadowdark SHADOWDARK.sheet.class.player: Лист игрока Shadowdark +SHADOWDARK.sheet.general.active_effects.create_effect.title: Create Effect +SHADOWDARK.sheet.general.active_effects.delete_effect.tooltip: Delete Effect +SHADOWDARK.sheet.general.active_effects.duration.title: Duration +SHADOWDARK.sheet.general.active_effects.edit_effect.tooltip: Edit Effect +SHADOWDARK.sheet.general.active_effects.source.title: Source +SHADOWDARK.sheet.general.active_effects.toggle_effect.tooltip: Toggle Effect +SHADOWDARK.sheet.general.add: Add +SHADOWDARK.sheet.general.effects_and_conditions.title: Effects and Conditions SHADOWDARK.sheet.general.item_create.tooltip: Создать предмет типа {type} SHADOWDARK.sheet.general.item_delete.title: Удалить предмет SHADOWDARK.sheet.general.item_edit.title: Редактировать предмет SHADOWDARK.sheet.general.roll_hp: Бросить ОЗ +SHADOWDARK.sheet.general.section.toggle_hide: Click to Hide Section +SHADOWDARK.sheet.general.section.toggle_show: Click to Show Section SHADOWDARK.sheet.item.tab.description: Описание SHADOWDARK.sheet.item.tab.details: Детали SHADOWDARK.sheet.item.tab.effects: Эффекты From 274f4842c4cae482494724c465919224f73aa6ec Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 14:08:03 +0000 Subject: [PATCH 132/182] New translations en.yaml (French) --- i18n/fr.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/i18n/fr.yaml b/i18n/fr.yaml index bb6429a9..d7d3b1c4 100644 --- a/i18n/fr.yaml +++ b/i18n/fr.yaml @@ -106,6 +106,14 @@ SHADOWDARK.apps.monster-importer.instruction2d: Bloc de statistiques principal SHADOWDARK.apps.monster-importer.instruction2e: Caractéristique SHADOWDARK.apps.monster-importer.instruction3: 3. Cliquez sur "Importer Monstre". SHADOWDARK.apps.monster-importer.title: Importer un monstre +SHADOWDARK.apps.request-check.copied: Copied to Clipboard +SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard +SHADOWDARK.apps.request-check.custom: Custom +SHADOWDARK.apps.request-check.easy: Easy +SHADOWDARK.apps.request-check.hard: Hard +SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.normal: Normal +SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.import_button: Import @@ -187,6 +195,7 @@ SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are SHADOWDARK.chat.welcome_message.title: Shadowdark RPG pour Foundry SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial SHADOWDARK.chatcard.default: Lancer +SHADOWDARK.check.requesting: Requesting a check SHADOWDARK.class-ability.ability.check: Ability Check SHADOWDARK.class-ability.ability.label: Capacité SHADOWDARK.class-ability.available.label: Disponible @@ -341,8 +350,10 @@ SHADOWDARK.effect.unavailable: Effets Désactivés SHADOWDARK.error.class_ability.no-uses-remaining: Aucune utilisation restante SHADOWDARK.error.general.gm_required: Vous devez avoir le rôle "Maître de jeu" pour faire cela. SHADOWDARK.error.general.no_character_class: Aucune classe de personnage n’a été sélectionnée +SHADOWDARK.error.general.no_character_selected: No character selected SHADOWDARK.error.source.source_missing: Source missing or unknown... SHADOWDARK.error.spells.no_spellcasting_ability_set: Aucune capacité de lancement de sorts n'a été configurée +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.form.section_header.equipment.label: Équipement SHADOWDARK.form.section_header.languages.label: Languages SHADOWDARK.form.section_header.names.label: Names @@ -667,6 +678,7 @@ SHADOWDARK.sheet.abilities.uses.decrement.tooltip: Decrease Available Uses SHADOWDARK.sheet.abilities.uses.increment.tooltip: Increase Available Uses SHADOWDARK.sheet.actor.ac: CA SHADOWDARK.sheet.actor.alignment: Alignement +SHADOWDARK.sheet.actor.character_notes: Character Notes SHADOWDARK.sheet.actor.hp_max: Max SHADOWDARK.sheet.actor.hp: PV SHADOWDARK.sheet.actor.level: Niveau @@ -674,10 +686,20 @@ SHADOWDARK.sheet.actor.placeholder.name: Nom de l'acteur SHADOWDARK.sheet.class.item: Fiche Shadowdark d'objet SHADOWDARK.sheet.class.npc: Fiche Shadowdark de PNJ SHADOWDARK.sheet.class.player: Fiche Shadowdark de joueur +SHADOWDARK.sheet.general.active_effects.create_effect.title: Create Effect +SHADOWDARK.sheet.general.active_effects.delete_effect.tooltip: Delete Effect +SHADOWDARK.sheet.general.active_effects.duration.title: Duration +SHADOWDARK.sheet.general.active_effects.edit_effect.tooltip: Edit Effect +SHADOWDARK.sheet.general.active_effects.source.title: Source +SHADOWDARK.sheet.general.active_effects.toggle_effect.tooltip: Toggle Effect +SHADOWDARK.sheet.general.add: Add +SHADOWDARK.sheet.general.effects_and_conditions.title: Effects and Conditions SHADOWDARK.sheet.general.item_create.tooltip: Create {type} Item SHADOWDARK.sheet.general.item_delete.title: Delete Item SHADOWDARK.sheet.general.item_edit.title: Edit Item SHADOWDARK.sheet.general.roll_hp: Roll HP +SHADOWDARK.sheet.general.section.toggle_hide: Click to Hide Section +SHADOWDARK.sheet.general.section.toggle_show: Click to Show Section SHADOWDARK.sheet.item.tab.description: Description SHADOWDARK.sheet.item.tab.details: Détails SHADOWDARK.sheet.item.tab.effects: Effets From c4f53fe2b3bfa78c448b4f3a7e6548405dca3308 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 14:08:05 +0000 Subject: [PATCH 133/182] New translations en.yaml (Spanish) --- i18n/es.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/i18n/es.yaml b/i18n/es.yaml index dd4bc9b4..7998d443 100644 --- a/i18n/es.yaml +++ b/i18n/es.yaml @@ -106,6 +106,14 @@ SHADOWDARK.apps.monster-importer.instruction2d: Perfil principal SHADOWDARK.apps.monster-importer.instruction2e: Característica SHADOWDARK.apps.monster-importer.instruction3: 3. Clic en importar monstruo. SHADOWDARK.apps.monster-importer.title: Importar monstruo +SHADOWDARK.apps.request-check.copied: Copied to Clipboard +SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard +SHADOWDARK.apps.request-check.custom: Custom +SHADOWDARK.apps.request-check.easy: Easy +SHADOWDARK.apps.request-check.hard: Hard +SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.normal: Normal +SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Elementos no encontrados SHADOWDARK.apps.shadowdarkling-importer.header: Importador de Shadowdarkling SHADOWDARK.apps.shadowdarkling-importer.import_button: Importar @@ -187,6 +195,7 @@ SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are SHADOWDARK.chat.welcome_message.title: Shadowdark RPG para Foundry SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial SHADOWDARK.chatcard.default: Tirada +SHADOWDARK.check.requesting: Requesting a check SHADOWDARK.class-ability.ability.check: Ability Check SHADOWDARK.class-ability.ability.label: Habilidad SHADOWDARK.class-ability.available.label: Disponible @@ -341,8 +350,10 @@ SHADOWDARK.effect.unavailable: Efectos desactivados SHADOWDARK.error.class_ability.no-uses-remaining: No uses remaining SHADOWDARK.error.general.gm_required: Debes tener el rol de Maestro de Juego para hacer eso. SHADOWDARK.error.general.no_character_class: Ninguna clase de personaje ha sido seleccionada +SHADOWDARK.error.general.no_character_selected: No character selected SHADOWDARK.error.source.source_missing: Source missing or unknown... SHADOWDARK.error.spells.no_spellcasting_ability_set: No character spellcasting ability has been configured +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.form.section_header.equipment.label: Equipment SHADOWDARK.form.section_header.languages.label: Idiomas SHADOWDARK.form.section_header.names.label: Names @@ -667,6 +678,7 @@ SHADOWDARK.sheet.abilities.uses.decrement.tooltip: Decrease Available Uses SHADOWDARK.sheet.abilities.uses.increment.tooltip: Increase Available Uses SHADOWDARK.sheet.actor.ac: CA SHADOWDARK.sheet.actor.alignment: Alineamiento +SHADOWDARK.sheet.actor.character_notes: Character Notes SHADOWDARK.sheet.actor.hp_max: Máx SHADOWDARK.sheet.actor.hp: PV SHADOWDARK.sheet.actor.level: Nivel @@ -674,10 +686,20 @@ SHADOWDARK.sheet.actor.placeholder.name: Nuevo nombre de actor SHADOWDARK.sheet.class.item: Ficha de ítem de Shadowdark SHADOWDARK.sheet.class.npc: Ficha de NPC de Shadowdark SHADOWDARK.sheet.class.player: Ficha de jugador de Shadowdark +SHADOWDARK.sheet.general.active_effects.create_effect.title: Create Effect +SHADOWDARK.sheet.general.active_effects.delete_effect.tooltip: Delete Effect +SHADOWDARK.sheet.general.active_effects.duration.title: Duration +SHADOWDARK.sheet.general.active_effects.edit_effect.tooltip: Edit Effect +SHADOWDARK.sheet.general.active_effects.source.title: Source +SHADOWDARK.sheet.general.active_effects.toggle_effect.tooltip: Toggle Effect +SHADOWDARK.sheet.general.add: Add +SHADOWDARK.sheet.general.effects_and_conditions.title: Effects and Conditions SHADOWDARK.sheet.general.item_create.tooltip: Crear {type} ítem SHADOWDARK.sheet.general.item_delete.title: Eliminar ítem SHADOWDARK.sheet.general.item_edit.title: Editar ítem SHADOWDARK.sheet.general.roll_hp: Tirar PV +SHADOWDARK.sheet.general.section.toggle_hide: Click to Hide Section +SHADOWDARK.sheet.general.section.toggle_show: Click to Show Section SHADOWDARK.sheet.item.tab.description: Descripción SHADOWDARK.sheet.item.tab.details: Detalles SHADOWDARK.sheet.item.tab.effects: Efectos From 4c9589f25f1202f4d6311d4160256b71abc5f519 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 14:08:06 +0000 Subject: [PATCH 134/182] New translations en.yaml (German) --- i18n/de.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/i18n/de.yaml b/i18n/de.yaml index e6aa21f8..3cd92373 100644 --- a/i18n/de.yaml +++ b/i18n/de.yaml @@ -106,6 +106,14 @@ SHADOWDARK.apps.monster-importer.instruction2d: Main stat block SHADOWDARK.apps.monster-importer.instruction2e: Feature SHADOWDARK.apps.monster-importer.instruction3: 3. Click Import Monster. SHADOWDARK.apps.monster-importer.title: Monster-Import +SHADOWDARK.apps.request-check.copied: Copied to Clipboard +SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard +SHADOWDARK.apps.request-check.custom: Custom +SHADOWDARK.apps.request-check.easy: Easy +SHADOWDARK.apps.request-check.hard: Hard +SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.normal: Normal +SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.import_button: Import @@ -187,6 +195,7 @@ SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are SHADOWDARK.chat.welcome_message.title: Shadowdark RPG für Foundry SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial SHADOWDARK.chatcard.default: Wurf +SHADOWDARK.check.requesting: Requesting a check SHADOWDARK.class-ability.ability.check: Ability Check SHADOWDARK.class-ability.ability.label: Ability SHADOWDARK.class-ability.available.label: Available @@ -341,8 +350,10 @@ SHADOWDARK.effect.unavailable: Deaktivierter Effekt SHADOWDARK.error.class_ability.no-uses-remaining: No uses remaining SHADOWDARK.error.general.gm_required: Dazu musst du die Rolle des Game Master haben. SHADOWDARK.error.general.no_character_class: No character class has been selected +SHADOWDARK.error.general.no_character_selected: No character selected SHADOWDARK.error.source.source_missing: Source missing or unknown... SHADOWDARK.error.spells.no_spellcasting_ability_set: No character spellcasting ability has been configured +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.form.section_header.equipment.label: Equipment SHADOWDARK.form.section_header.languages.label: Languages SHADOWDARK.form.section_header.names.label: Names @@ -667,6 +678,7 @@ SHADOWDARK.sheet.abilities.uses.decrement.tooltip: Decrease Available Uses SHADOWDARK.sheet.abilities.uses.increment.tooltip: Increase Available Uses SHADOWDARK.sheet.actor.ac: RK SHADOWDARK.sheet.actor.alignment: Gesinnung +SHADOWDARK.sheet.actor.character_notes: Character Notes SHADOWDARK.sheet.actor.hp_max: Max SHADOWDARK.sheet.actor.hp: TP SHADOWDARK.sheet.actor.level: Level @@ -674,10 +686,20 @@ SHADOWDARK.sheet.actor.placeholder.name: Neuer Charakter Name SHADOWDARK.sheet.class.item: Shadowdark Gegenstandsblatt SHADOWDARK.sheet.class.npc: Shadowdark NPC-Blatt SHADOWDARK.sheet.class.player: Shadowdark Spielerblatt +SHADOWDARK.sheet.general.active_effects.create_effect.title: Create Effect +SHADOWDARK.sheet.general.active_effects.delete_effect.tooltip: Delete Effect +SHADOWDARK.sheet.general.active_effects.duration.title: Duration +SHADOWDARK.sheet.general.active_effects.edit_effect.tooltip: Edit Effect +SHADOWDARK.sheet.general.active_effects.source.title: Source +SHADOWDARK.sheet.general.active_effects.toggle_effect.tooltip: Toggle Effect +SHADOWDARK.sheet.general.add: Add +SHADOWDARK.sheet.general.effects_and_conditions.title: Effects and Conditions SHADOWDARK.sheet.general.item_create.tooltip: Create {type} Item SHADOWDARK.sheet.general.item_delete.title: Gegenstand löschen SHADOWDARK.sheet.general.item_edit.title: Gegenstand bearbeiten SHADOWDARK.sheet.general.roll_hp: Roll HP +SHADOWDARK.sheet.general.section.toggle_hide: Click to Hide Section +SHADOWDARK.sheet.general.section.toggle_show: Click to Show Section SHADOWDARK.sheet.item.tab.description: Beschreibung SHADOWDARK.sheet.item.tab.details: Details SHADOWDARK.sheet.item.tab.effects: Effects From 9df30b76b08b434518b1540e1e5253ed3c0940a8 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 14:08:07 +0000 Subject: [PATCH 135/182] New translations en.yaml (Finnish) --- i18n/fi.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/i18n/fi.yaml b/i18n/fi.yaml index 69f4f00a..944a038a 100644 --- a/i18n/fi.yaml +++ b/i18n/fi.yaml @@ -106,6 +106,14 @@ SHADOWDARK.apps.monster-importer.instruction2d: Hirviön ominaisuudet SHADOWDARK.apps.monster-importer.instruction2e: Ominaisuus SHADOWDARK.apps.monster-importer.instruction3: 3. Paina "Tuo hirviö"-nappia. SHADOWDARK.apps.monster-importer.title: Tuo hirviö +SHADOWDARK.apps.request-check.copied: Copied to Clipboard +SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard +SHADOWDARK.apps.request-check.custom: Custom +SHADOWDARK.apps.request-check.easy: Easy +SHADOWDARK.apps.request-check.hard: Hard +SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.normal: Normal +SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Kohteita ei löytynyt SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling tuontityökalu SHADOWDARK.apps.shadowdarkling-importer.import_button: Tuo @@ -187,6 +195,7 @@ SHADOWDARK.chat.welcome_message.title_text: Tervetuloa Shadowdark roolipeliin. T SHADOWDARK.chat.welcome_message.title: Shadowdark RPG foundrylle SHADOWDARK.chat.welcome_message.watch: Katso opastusvideo SHADOWDARK.chatcard.default: Heitä noppaa +SHADOWDARK.check.requesting: Requesting a check SHADOWDARK.class-ability.ability.check: Kyvykkyysheitto SHADOWDARK.class-ability.ability.label: Kyky SHADOWDARK.class-ability.available.label: Käytettävissä @@ -341,8 +350,10 @@ SHADOWDARK.effect.unavailable: Poissaolevat efektit SHADOWDARK.error.class_ability.no-uses-remaining: Ei enempää käyttökertoja SHADOWDARK.error.general.gm_required: Tarvitset pelinjohtajan roolin tehdäksesi noin. SHADOWDARK.error.general.no_character_class: Hahmoluokka ei ole valittu +SHADOWDARK.error.general.no_character_selected: No character selected SHADOWDARK.error.source.source_missing: Lähdemateriaali puuttuu tai on tuntematon... SHADOWDARK.error.spells.no_spellcasting_ability_set: Hahmon loihtimiskyvykkyyttä ei ole asetettu +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.form.section_header.equipment.label: Varusteet SHADOWDARK.form.section_header.languages.label: Kielet SHADOWDARK.form.section_header.names.label: Nimet @@ -667,6 +678,7 @@ SHADOWDARK.sheet.abilities.uses.decrement.tooltip: Vähennä käyttökertoja SHADOWDARK.sheet.abilities.uses.increment.tooltip: Lisää käyttökertoja SHADOWDARK.sheet.actor.ac: Puolustuspisteet SHADOWDARK.sheet.actor.alignment: Vakaumus +SHADOWDARK.sheet.actor.character_notes: Character Notes SHADOWDARK.sheet.actor.hp_max: Max SHADOWDARK.sheet.actor.hp: Osumapisteet SHADOWDARK.sheet.actor.level: Taso @@ -674,10 +686,20 @@ SHADOWDARK.sheet.actor.placeholder.name: Uusi nimi SHADOWDARK.sheet.class.item: Shadowdark esineikkuna SHADOWDARK.sheet.class.npc: Shadowdark NPC ikkuna SHADOWDARK.sheet.class.player: Shadowdark hahmoikkuna +SHADOWDARK.sheet.general.active_effects.create_effect.title: Create Effect +SHADOWDARK.sheet.general.active_effects.delete_effect.tooltip: Delete Effect +SHADOWDARK.sheet.general.active_effects.duration.title: Duration +SHADOWDARK.sheet.general.active_effects.edit_effect.tooltip: Edit Effect +SHADOWDARK.sheet.general.active_effects.source.title: Source +SHADOWDARK.sheet.general.active_effects.toggle_effect.tooltip: Toggle Effect +SHADOWDARK.sheet.general.add: Add +SHADOWDARK.sheet.general.effects_and_conditions.title: Effects and Conditions SHADOWDARK.sheet.general.item_create.tooltip: Luo {type} esine SHADOWDARK.sheet.general.item_delete.title: Poista esine SHADOWDARK.sheet.general.item_edit.title: Muokkaa esinettä SHADOWDARK.sheet.general.roll_hp: Osumapisteheitto +SHADOWDARK.sheet.general.section.toggle_hide: Click to Hide Section +SHADOWDARK.sheet.general.section.toggle_show: Click to Show Section SHADOWDARK.sheet.item.tab.description: Kuvaus SHADOWDARK.sheet.item.tab.details: Yksityiskohdat SHADOWDARK.sheet.item.tab.effects: Efektit From e825e6a79c47c633521eb2e633ec3f6ee23fc0c9 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 14:08:08 +0000 Subject: [PATCH 136/182] New translations en.yaml (Korean) --- i18n/ko.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/i18n/ko.yaml b/i18n/ko.yaml index 1100069c..212bdf58 100644 --- a/i18n/ko.yaml +++ b/i18n/ko.yaml @@ -106,6 +106,14 @@ SHADOWDARK.apps.monster-importer.instruction2d: 주요 능력 블록 SHADOWDARK.apps.monster-importer.instruction2e: 재주 SHADOWDARK.apps.monster-importer.instruction3: 3. '몬스터 불러오기'를 누릅니다. SHADOWDARK.apps.monster-importer.title: 몬스터 불러오기 +SHADOWDARK.apps.request-check.copied: Copied to Clipboard +SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard +SHADOWDARK.apps.request-check.custom: Custom +SHADOWDARK.apps.request-check.easy: Easy +SHADOWDARK.apps.request-check.hard: Hard +SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.normal: Normal +SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.import_button: Import @@ -187,6 +195,7 @@ SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are SHADOWDARK.chat.welcome_message.title: 섀도다크 RPG 파운드리 시스템 SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial SHADOWDARK.chatcard.default: 굴림 +SHADOWDARK.check.requesting: Requesting a check SHADOWDARK.class-ability.ability.check: Ability Check SHADOWDARK.class-ability.ability.label: Ability SHADOWDARK.class-ability.available.label: Available @@ -341,8 +350,10 @@ SHADOWDARK.effect.unavailable: 비활성화된 효과 SHADOWDARK.error.class_ability.no-uses-remaining: No uses remaining SHADOWDARK.error.general.gm_required: 게임 마스터만 할 수 있습니다. SHADOWDARK.error.general.no_character_class: 캐릭터 클래스가 지정되지 않았습니다 +SHADOWDARK.error.general.no_character_selected: No character selected SHADOWDARK.error.source.source_missing: Source missing or unknown... SHADOWDARK.error.spells.no_spellcasting_ability_set: 캐릭터의 주문시전 능력이 설정되지 않았습니다 +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.form.section_header.equipment.label: Equipment SHADOWDARK.form.section_header.languages.label: Languages SHADOWDARK.form.section_header.names.label: Names @@ -667,6 +678,7 @@ SHADOWDARK.sheet.abilities.uses.decrement.tooltip: Decrease Available Uses SHADOWDARK.sheet.abilities.uses.increment.tooltip: Increase Available Uses SHADOWDARK.sheet.actor.ac: AC SHADOWDARK.sheet.actor.alignment: 성향 +SHADOWDARK.sheet.actor.character_notes: Character Notes SHADOWDARK.sheet.actor.hp_max: 최대 SHADOWDARK.sheet.actor.hp: HP SHADOWDARK.sheet.actor.level: 레벨 @@ -674,10 +686,20 @@ SHADOWDARK.sheet.actor.placeholder.name: 새 액터 이름 SHADOWDARK.sheet.class.item: 섀도다크 아이템 시트 SHADOWDARK.sheet.class.npc: 섀도다크 NPC 시트 SHADOWDARK.sheet.class.player: 섀도다크 플레이어 시트 +SHADOWDARK.sheet.general.active_effects.create_effect.title: Create Effect +SHADOWDARK.sheet.general.active_effects.delete_effect.tooltip: Delete Effect +SHADOWDARK.sheet.general.active_effects.duration.title: Duration +SHADOWDARK.sheet.general.active_effects.edit_effect.tooltip: Edit Effect +SHADOWDARK.sheet.general.active_effects.source.title: Source +SHADOWDARK.sheet.general.active_effects.toggle_effect.tooltip: Toggle Effect +SHADOWDARK.sheet.general.add: Add +SHADOWDARK.sheet.general.effects_and_conditions.title: Effects and Conditions SHADOWDARK.sheet.general.item_create.tooltip: '{type} 아이템 만들기' SHADOWDARK.sheet.general.item_delete.title: 아이템 삭제 SHADOWDARK.sheet.general.item_edit.title: 아이템 편집 SHADOWDARK.sheet.general.roll_hp: HP 굴리기 +SHADOWDARK.sheet.general.section.toggle_hide: Click to Hide Section +SHADOWDARK.sheet.general.section.toggle_show: Click to Show Section SHADOWDARK.sheet.item.tab.description: 설명 SHADOWDARK.sheet.item.tab.details: 세부 사항 SHADOWDARK.sheet.item.tab.effects: 효과 From bed636c3c58afeef60f895df3b65c3de66c29b79 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 14:08:09 +0000 Subject: [PATCH 137/182] New translations en.yaml (Swedish) --- i18n/sv.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/i18n/sv.yaml b/i18n/sv.yaml index dd4fc8c7..5dcb3154 100644 --- a/i18n/sv.yaml +++ b/i18n/sv.yaml @@ -106,6 +106,14 @@ SHADOWDARK.apps.monster-importer.instruction2d: Primärt statistikblock SHADOWDARK.apps.monster-importer.instruction2e: Egenskap SHADOWDARK.apps.monster-importer.instruction3: 3. Klicka på Importera Monster. SHADOWDARK.apps.monster-importer.title: Importera monster +SHADOWDARK.apps.request-check.copied: Copied to Clipboard +SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard +SHADOWDARK.apps.request-check.custom: Custom +SHADOWDARK.apps.request-check.easy: Easy +SHADOWDARK.apps.request-check.hard: Hard +SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.normal: Normal +SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found SHADOWDARK.apps.shadowdarkling-importer.header: Shadowdarkling Importer SHADOWDARK.apps.shadowdarkling-importer.import_button: Import @@ -187,6 +195,7 @@ SHADOWDARK.chat.welcome_message.title_text: Welceome to Shadowdark RPG. Here are SHADOWDARK.chat.welcome_message.title: Shadowdark RPG för Foundry SHADOWDARK.chat.welcome_message.watch: Watch the Video Tutorial SHADOWDARK.chatcard.default: Rulla +SHADOWDARK.check.requesting: Requesting a check SHADOWDARK.class-ability.ability.check: Ability Check SHADOWDARK.class-ability.ability.label: Förmåga SHADOWDARK.class-ability.available.label: Tillgänglig @@ -341,8 +350,10 @@ SHADOWDARK.effect.unavailable: Inaktiverade effekter SHADOWDARK.error.class_ability.no-uses-remaining: Inga användningar kvar SHADOWDARK.error.general.gm_required: Du måste vara spelledare för att göra det där. SHADOWDARK.error.general.no_character_class: Inget yrke har valts +SHADOWDARK.error.general.no_character_selected: No character selected SHADOWDARK.error.source.source_missing: Källa saknad eller okänd... SHADOWDARK.error.spells.no_spellcasting_ability_set: Magiförmåga har inte ställts in +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.form.section_header.equipment.label: Utrustning SHADOWDARK.form.section_header.languages.label: Språk SHADOWDARK.form.section_header.names.label: Namn @@ -667,6 +678,7 @@ SHADOWDARK.sheet.abilities.uses.decrement.tooltip: Minska tillgängliga användn SHADOWDARK.sheet.abilities.uses.increment.tooltip: Öka tillgängliga användningar SHADOWDARK.sheet.actor.ac: AC SHADOWDARK.sheet.actor.alignment: Moralisk Lutning +SHADOWDARK.sheet.actor.character_notes: Character Notes SHADOWDARK.sheet.actor.hp_max: Max SHADOWDARK.sheet.actor.hp: KP SHADOWDARK.sheet.actor.level: Nivå @@ -674,10 +686,20 @@ SHADOWDARK.sheet.actor.placeholder.name: Nytt aktörsnamn SHADOWDARK.sheet.class.item: Shadowdark Föremålsblad SHADOWDARK.sheet.class.npc: Shadowdark NPC Ark SHADOWDARK.sheet.class.player: Shadowdark Spelarblad +SHADOWDARK.sheet.general.active_effects.create_effect.title: Create Effect +SHADOWDARK.sheet.general.active_effects.delete_effect.tooltip: Delete Effect +SHADOWDARK.sheet.general.active_effects.duration.title: Duration +SHADOWDARK.sheet.general.active_effects.edit_effect.tooltip: Edit Effect +SHADOWDARK.sheet.general.active_effects.source.title: Source +SHADOWDARK.sheet.general.active_effects.toggle_effect.tooltip: Toggle Effect +SHADOWDARK.sheet.general.add: Add +SHADOWDARK.sheet.general.effects_and_conditions.title: Effects and Conditions SHADOWDARK.sheet.general.item_create.tooltip: Skapa {type} objekt SHADOWDARK.sheet.general.item_delete.title: Ta bort föremål SHADOWDARK.sheet.general.item_edit.title: Förändra föremål SHADOWDARK.sheet.general.roll_hp: Rulla KP +SHADOWDARK.sheet.general.section.toggle_hide: Click to Hide Section +SHADOWDARK.sheet.general.section.toggle_show: Click to Show Section SHADOWDARK.sheet.item.tab.description: Beskrivning SHADOWDARK.sheet.item.tab.details: Detaljer SHADOWDARK.sheet.item.tab.effects: Effekt From 90818dfa20c6f45ad5d2ba1cb9d5b5d6cd2f8e59 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 14:08:11 +0000 Subject: [PATCH 138/182] New translations en.yaml (Portuguese, Brazilian) --- i18n/pt_BR.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/i18n/pt_BR.yaml b/i18n/pt_BR.yaml index 3f8834db..15537657 100644 --- a/i18n/pt_BR.yaml +++ b/i18n/pt_BR.yaml @@ -106,6 +106,14 @@ SHADOWDARK.apps.monster-importer.instruction2d: Bloco principal de estatísticas SHADOWDARK.apps.monster-importer.instruction2e: Característica SHADOWDARK.apps.monster-importer.instruction3: 3. Clique em Importar Monstro. SHADOWDARK.apps.monster-importer.title: Importar Monstro +SHADOWDARK.apps.request-check.copied: Copied to Clipboard +SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard +SHADOWDARK.apps.request-check.custom: Custom +SHADOWDARK.apps.request-check.easy: Easy +SHADOWDARK.apps.request-check.hard: Hard +SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.normal: Normal +SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Itens Não Encontrado SHADOWDARK.apps.shadowdarkling-importer.header: Importador do Shadowdarkling SHADOWDARK.apps.shadowdarkling-importer.import_button: Importar @@ -187,6 +195,7 @@ SHADOWDARK.chat.welcome_message.title_text: Bem vindo ao RPG Shadowdark. Aqui es SHADOWDARK.chat.welcome_message.title: RPG Shadowdark para o Foundry SHADOWDARK.chat.welcome_message.watch: Assista ao Tutorial em Vídeo SHADOWDARK.chatcard.default: Rolar +SHADOWDARK.check.requesting: Requesting a check SHADOWDARK.class-ability.ability.check: Teste de Atributo SHADOWDARK.class-ability.ability.label: Atributo SHADOWDARK.class-ability.available.label: Disponível @@ -341,8 +350,10 @@ SHADOWDARK.effect.unavailable: Efeitos Desabilitados SHADOWDARK.error.class_ability.no-uses-remaining: Sem usos restantes SHADOWDARK.error.general.gm_required: Você precisa ter o cargo de Mestre do Jogo para fazer isso. SHADOWDARK.error.general.no_character_class: Nenhuma classe de personagem foi selecionada +SHADOWDARK.error.general.no_character_selected: No character selected SHADOWDARK.error.source.source_missing: Fonte ausente ou desconhecida... SHADOWDARK.error.spells.no_spellcasting_ability_set: Nenhum atributo de conjuração do personagem foi configurado +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.form.section_header.equipment.label: Equipamento SHADOWDARK.form.section_header.languages.label: Idiomas SHADOWDARK.form.section_header.names.label: Nomes @@ -667,6 +678,7 @@ SHADOWDARK.sheet.abilities.uses.decrement.tooltip: Diminuir Usos Disponíveis SHADOWDARK.sheet.abilities.uses.increment.tooltip: Aumentar Usos Disponíveis SHADOWDARK.sheet.actor.ac: CA SHADOWDARK.sheet.actor.alignment: Alinhamento +SHADOWDARK.sheet.actor.character_notes: Character Notes SHADOWDARK.sheet.actor.hp_max: Máx SHADOWDARK.sheet.actor.hp: PV SHADOWDARK.sheet.actor.level: Nível @@ -674,10 +686,20 @@ SHADOWDARK.sheet.actor.placeholder.name: Nome do Novo Ator SHADOWDARK.sheet.class.item: Ficha de Item Shadowdark SHADOWDARK.sheet.class.npc: Ficha de PDM Shadowdark SHADOWDARK.sheet.class.player: Ficha de Jogador Shadowdark +SHADOWDARK.sheet.general.active_effects.create_effect.title: Create Effect +SHADOWDARK.sheet.general.active_effects.delete_effect.tooltip: Delete Effect +SHADOWDARK.sheet.general.active_effects.duration.title: Duration +SHADOWDARK.sheet.general.active_effects.edit_effect.tooltip: Edit Effect +SHADOWDARK.sheet.general.active_effects.source.title: Source +SHADOWDARK.sheet.general.active_effects.toggle_effect.tooltip: Toggle Effect +SHADOWDARK.sheet.general.add: Add +SHADOWDARK.sheet.general.effects_and_conditions.title: Effects and Conditions SHADOWDARK.sheet.general.item_create.tooltip: Criar Item {type} SHADOWDARK.sheet.general.item_delete.title: Deletar Item SHADOWDARK.sheet.general.item_edit.title: Editar Item SHADOWDARK.sheet.general.roll_hp: Rolar PV +SHADOWDARK.sheet.general.section.toggle_hide: Click to Hide Section +SHADOWDARK.sheet.general.section.toggle_show: Click to Show Section SHADOWDARK.sheet.item.tab.description: Descrição SHADOWDARK.sheet.item.tab.details: Detalhes SHADOWDARK.sheet.item.tab.effects: Efeitos From f3acacc28928f5d92e2d54e4a54c9526f0d8e16a Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 17:55:58 +0000 Subject: [PATCH 139/182] slight restructure, and add release notes --- RELEASE_NOTES.md | 1 + i18n/en.yaml | 5 +- system/shadowdark.mjs | 9 +- system/src/apps/RequestCheckSD.mjs | 50 ++++++++++- system/src/enrichers.mjs | 44 ++++++++++ .../ActiveEffectsSD.mjs} | 0 system/src/system/ChatSD.mjs | 45 ++++++++++ system/src/utils/ChecksSD.mjs | 85 ------------------- system/src/utils/UtilitySD.mjs | 27 ++++++ system/templates/chat/general.hbs | 6 ++ system/templates/chat/roll-request.hbs | 8 ++ 11 files changed, 186 insertions(+), 94 deletions(-) create mode 100644 system/src/enrichers.mjs rename system/src/{effects.mjs => system/ActiveEffectsSD.mjs} (100%) create mode 100644 system/src/system/ChatSD.mjs delete mode 100644 system/src/utils/ChecksSD.mjs create mode 100644 system/templates/chat/general.hbs create mode 100644 system/templates/chat/roll-request.hbs diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index d24eda88..904cffd8 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -7,6 +7,7 @@ * [#880] Create a new Patron Boon type for Talents * [#901] Added Russian as a partially complete system language. * [#908] Add rollable dice to Cure Wounds spell that includes the necessary calculations *(Many thanks to **nschoenwald** for contributing to this issue)* +* [#910] Implement prompt for DC Checks * [#920] Show tooltips on weapon and armor properties when showing expanded inline view in inventory * [#921] Add way to view/manipulate current Active Effects to the player Effects tab * [#937] Support selecting or rolling Patron in character generator diff --git a/i18n/en.yaml b/i18n/en.yaml index 9fe9036f..3a81b028 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -110,8 +110,8 @@ SHADOWDARK.apps.request-check.copied: Copied to Clipboard SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard SHADOWDARK.apps.request-check.custom: Custom SHADOWDARK.apps.request-check.easy: Easy -SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.normal: Normal SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found @@ -351,9 +351,10 @@ SHADOWDARK.error.class_ability.no-uses-remaining: No uses remaining SHADOWDARK.error.general.gm_required: You must have the Game Master role to do that. SHADOWDARK.error.general.no_character_class: No character class has been selected SHADOWDARK.error.general.no_character_selected: No character selected +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.error.source.source_missing: Source missing or unknown... SHADOWDARK.error.spells.no_spellcasting_ability_set: No character spellcasting ability has been configured -SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it +SHADOWDARK.error.too_many_tokens_selected: Too many tokens selected SHADOWDARK.form.section_header.equipment.label: Equipment SHADOWDARK.form.section_header.languages.label: Languages SHADOWDARK.form.section_header.names.label: Names diff --git a/system/shadowdark.mjs b/system/shadowdark.mjs index 903fcc7d..3154bb6b 100644 --- a/system/shadowdark.mjs +++ b/system/shadowdark.mjs @@ -1,14 +1,15 @@ +import ActiveEffectsSD from "./src/system/ActiveEffectsSD.mjs"; +import ChatSD from "./src/system/ChatSD.mjs"; import CompendiumsSD from "./src/documents/CompendiumsSD.mjs"; import loadTemplates from "./src/templates.mjs"; import Logger from "./src/utils/Logger.mjs"; import performDataMigration from "./src/migration.mjs"; import registerHandlebarsHelpers from "./src/handlebars.mjs"; import registerSystemSettings from "./src/settings.mjs"; +import registerTextEditorEnrichers from "./src/enrichers.mjs"; import SHADOWDARK from "./src/config.mjs"; import ShadowdarkMacro from "./src/macro.mjs"; import UtilitySD from "./src/utils/UtilitySD.mjs"; -import ChecksSD from "./src/utils/ChecksSD.mjs"; -import ActiveEffectsSD from "./src/effects.mjs"; import * as apps from "./src/apps/_module.mjs"; import * as chat from "./src/chat/_module.mjs"; @@ -30,6 +31,7 @@ import listenOnSocket from "./src/socket.mjs"; globalThis.shadowdark = { apps, + chat: ChatSD, compendiums: CompendiumsSD, config: SHADOWDARK, debug: Logger.debug, @@ -41,7 +43,6 @@ globalThis.shadowdark = { log: Logger.log, macro: ShadowdarkMacro, sheets, - checks: ChecksSD, utils: UtilitySD, warn: Logger.warn, }; @@ -77,9 +78,9 @@ Hooks.once("init", () => { registerHandlebarsHelpers(); registerSystemSettings(); + registerTextEditorEnrichers(); loadTemplates(); - ChecksSD.registerEnrichers(); UtilitySD.loadLegacyArtMappings(); // Register sheet application classes diff --git a/system/src/apps/RequestCheckSD.mjs b/system/src/apps/RequestCheckSD.mjs index b32e93af..b355d519 100644 --- a/system/src/apps/RequestCheckSD.mjs +++ b/system/src/apps/RequestCheckSD.mjs @@ -10,6 +10,49 @@ export default class RequestCheckSD extends FormApplication { }); } + + static async checkHandler(event) { + const data = event.target?.dataset ?? {}; + + if (!data.command) return; + + switch (data.command) { + case "check": + const actor = await shadowdark.utils.getCurrentActor(); + if (!actor) { + return ui.notifications.error( + game.i18n.localize("SHADOWDARK.error.general.no_character_selected") + ); + } + + const options = { + target: data.dc, + stat: data.stat, + }; + + if (event.shiftKey) { + options.fastForward = true; + } + + return actor.rollAbility(data.stat.toLowerCase(), options); + case "request": + return RequestCheckSD.displayRequest(data.dc, data.stat); + } + } + + + static async displayRequest(dc, stat) { + shadowdark.chat.renderRollRequestMessage( + await shadowdark.utils.getCurrentActor(), + { + title: game.i18n.localize("SHADOWDARK.check.requesting"), + body: `[[check ${dc} ${stat}]]`, + }, + CONST.DICE_ROLL_MODES.PUBLIC + ); + } + + activateListeners(html) { super.activateListeners(html); @@ -20,6 +63,7 @@ export default class RequestCheckSD extends FormApplication { ); } + /** @override */ async getData() { return { @@ -33,9 +77,9 @@ export default class RequestCheckSD extends FormApplication { }; } + /** @inheritdoc */ async _updateObject(event, data) { - if (data.custom) { data.difficulty = data.custom; } @@ -48,11 +92,11 @@ export default class RequestCheckSD extends FormApplication { ui.notifications.info(game.i18n.localize("SHADOWDARK.apps.request-check.copied")); break; case "request-check": - shadowdark.checks.displayRequest(data.difficulty, data.stat); + RequestCheckSD.displayRequest(data.difficulty, data.stat); this.close(); break; default: - shadowdark.log("Request Check Error"); + shadowdark.error("Request Check Error"); } } diff --git a/system/src/enrichers.mjs b/system/src/enrichers.mjs new file mode 100644 index 00000000..0e399c05 --- /dev/null +++ b/system/src/enrichers.mjs @@ -0,0 +1,44 @@ +export default function registerTextEditorEnrichers() { + + CONFIG.TextEditor.enrichers.push({ + // [[check DC STAT]] + // [[request DC STAT]] + pattern: /\[\[(?check|request)\s(?\d+)\s(?\w{3})\]\]/g, + enricher: async (match, options) => { + let { command, dc, stat } = match.groups; + + // Check for invalid data + if (!parseInt(dc)) return; + if (CONFIG.SHADOWDARK.ABILITY_KEYS.includes(stat.toLowerCase())) { + stat = stat.toLowerCase(); + } + else { + return; + } + + // create replacement html + const link = document.createElement("a"); + link.className = "content-link"; + link.classList.add("skill-roll-request"); + link.dataset.command = command; + link.dataset.dc = dc; + link.dataset.stat = stat; + const linkText = `${game.i18n.localize("SHADOWDARK.class-ability.dc.label")} ${dc} ${game.i18n.localize(`SHADOWDARK.ability_${stat}`)}`.toUpperCase(); + switch (command) { + case "check": + link.innerHTML = `${linkText}`; + break; + case "request": + link.innerHTML = `${linkText}`; + break; + } + return link; + }, + }); + + $("body").on( + "click", "a.skill-roll-request", + shadowdark.apps.RequestCheckSD.checkHandler + ); + +} diff --git a/system/src/effects.mjs b/system/src/system/ActiveEffectsSD.mjs similarity index 100% rename from system/src/effects.mjs rename to system/src/system/ActiveEffectsSD.mjs diff --git a/system/src/system/ChatSD.mjs b/system/src/system/ChatSD.mjs new file mode 100644 index 00000000..998b044b --- /dev/null +++ b/system/src/system/ChatSD.mjs @@ -0,0 +1,45 @@ +export default class ChatSD { + + static async _renderChatMessage( + actor, + data, + template, + mode + ) { + const html = await renderTemplate(template, data); + + if (!mode) { + mode = game.settings.get("core", "rollMode"); + } + + const messageStyles = shadowdark.utils.getMessageStyles(); + + const chatData = { + user: game.user.id, + speaker: ChatMessage.getSpeaker({ + actor: actor, + }), + rollMode: mode, + content: html, + type: messageStyles.OTHER, + }; + + ChatMessage.applyRollMode(chatData, mode); + + await ChatMessage.create(chatData); + } + + static async renderGeneralMessage(actor, data, mode) { + this._renderChatMessage(actor, data, + "systems/shadowdark/templates/chat/general.hbs", + mode + ); + } + + static async renderRollRequestMessage(actor, data, mode) { + this._renderChatMessage(actor, data, + "systems/shadowdark/templates/chat/roll-request.hbs", + mode + ); + } +} diff --git a/system/src/utils/ChecksSD.mjs b/system/src/utils/ChecksSD.mjs deleted file mode 100644 index ee36dedc..00000000 --- a/system/src/utils/ChecksSD.mjs +++ /dev/null @@ -1,85 +0,0 @@ -export default class ChecksSD { - - static async registerEnrichers() { - // load custom text enrichers - // [[check DC STAT]] - // [[request DC STAT]] - CONFIG.TextEditor.enrichers.push({ - pattern: /\[\[(?check|request)\s(?\d+)\s(?\w{3})\]\]/g, - enricher: async (match, options) => { - let { command, dc, stat } = match.groups; - - // Check for invalid data - if (!parseInt(dc)) return; - if (CONFIG.SHADOWDARK.ABILITY_KEYS.includes(stat.toLowerCase())) { - stat = stat.toLowerCase(); - } - else { - return; - } - - // create replacement html - const link = document.createElement("a"); - link.className = "content-link"; - link.dataset.command = command; - link.dataset.dc = dc; - link.dataset.stat = stat; - const linkText = `${game.i18n.localize("SHADOWDARK.class-ability.dc.label")} ${dc} ${game.i18n.localize(`SHADOWDARK.ability_${stat}`)}`.toUpperCase(); - switch (command) { - case "check": - link.innerHTML = `${linkText}`; - break; - case "request": - link.innerHTML = `${linkText}`; - break; - } - return link; - }, - }); - - document.body.addEventListener("click", this.checkHandler); - } - - static async checkHandler(event) { - let data = event.target?.dataset; - if ( !data.command ) return; - - switch (data.command) { - case "check": - let options = {}; - if (event.shiftKey) { - options.fastForward = true; - } - shadowdark.checks.rollCheck(data.dc, data.stat, options); - break; - case "request": - shadowdark.checks.displayRequest(data.dc, data.stat); - break; - } - } - - static async rollCheck(dc, stat, options={}) { - let actor = game.user.character; - if (!actor) { - ui.notification.error( - game.i18n.localize("SHADOWDARK.error.general.no_character_selected") - ); - } - if (dc) { - options.target = dc; - } - actor.rollAbility(stat.toLowerCase(), options); - } - - - static async displayRequest(dc, stat) { - const HTML = `
      [[check ${dc} ${stat}]]
      `; - const chatData = { - user: game.user._id, - flavor: game.i18n.localize("SHADOWDARK.check.requesting"), - content: HTML, - }; - ChatMessage.create(chatData, {}); - } - -} diff --git a/system/src/utils/UtilitySD.mjs b/system/src/utils/UtilitySD.mjs index 35269435..3361777a 100644 --- a/system/src/utils/UtilitySD.mjs +++ b/system/src/utils/UtilitySD.mjs @@ -83,6 +83,33 @@ export default class UtilitySD { } + // Work out the current Actor. + // If the user is the GM then use the current token they have selected. + // + static async getCurrentActor() { + let actor = null; + + if (game.user.isGM) { + const controlledTokenCount = canvas.tokens.controlled.length; + if (controlledTokenCount > 0) { + if (controlledTokenCount !== 1) { + return ui.notifications.warn( + game.i18n.localize("SHADOWDARK.error.too_many_tokens_selected") + ); + } + else { + actor = canvas.tokens.controlled[0].actor; + } + } + } + else { + actor = game.user.character; + } + + return actor; + } + + /** * Creates de-duplicated lists of Selected and Unselected Items. * diff --git a/system/templates/chat/general.hbs b/system/templates/chat/general.hbs new file mode 100644 index 00000000..fac8fa8b --- /dev/null +++ b/system/templates/chat/general.hbs @@ -0,0 +1,6 @@ +
      +
      +

      {{title}}

      +

      {{body}}

      +
      +
      diff --git a/system/templates/chat/roll-request.hbs b/system/templates/chat/roll-request.hbs new file mode 100644 index 00000000..dfe5a99d --- /dev/null +++ b/system/templates/chat/roll-request.hbs @@ -0,0 +1,8 @@ +
      +
      +

      {{title}}

      +
      +

      {{body}}

      +
      +
      +
      From 2933c023b8255b436283f9427e6d856cc13eacc1 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 18:37:29 +0000 Subject: [PATCH 140/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index 17e9bc3f..87503b54 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -110,8 +110,8 @@ SHADOWDARK.apps.request-check.copied: Copied to Clipboard SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard SHADOWDARK.apps.request-check.custom: Custom SHADOWDARK.apps.request-check.easy: Easy -SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.normal: Normal SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Предметы не найдены @@ -351,9 +351,10 @@ SHADOWDARK.error.class_ability.no-uses-remaining: Не осталось испо SHADOWDARK.error.general.gm_required: Для этого действия требуются права Мастера игры. SHADOWDARK.error.general.no_character_class: Класс персонажа не выбран SHADOWDARK.error.general.no_character_selected: No character selected +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.error.source.source_missing: Источник отсутствует или неизвестен... SHADOWDARK.error.spells.no_spellcasting_ability_set: Способность к заклинаниям персонажа не настроена -SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it +SHADOWDARK.error.too_many_tokens_selected: Too many tokens selected SHADOWDARK.form.section_header.equipment.label: Снаряжение SHADOWDARK.form.section_header.languages.label: Языки SHADOWDARK.form.section_header.names.label: Имена From db7cb5653a15cea9b93908f8624ae5c866466d18 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 18:37:30 +0000 Subject: [PATCH 141/182] New translations en.yaml (French) --- i18n/fr.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/i18n/fr.yaml b/i18n/fr.yaml index d7d3b1c4..032b270a 100644 --- a/i18n/fr.yaml +++ b/i18n/fr.yaml @@ -110,8 +110,8 @@ SHADOWDARK.apps.request-check.copied: Copied to Clipboard SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard SHADOWDARK.apps.request-check.custom: Custom SHADOWDARK.apps.request-check.easy: Easy -SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.normal: Normal SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found @@ -351,9 +351,10 @@ SHADOWDARK.error.class_ability.no-uses-remaining: Aucune utilisation restante SHADOWDARK.error.general.gm_required: Vous devez avoir le rôle "Maître de jeu" pour faire cela. SHADOWDARK.error.general.no_character_class: Aucune classe de personnage n’a été sélectionnée SHADOWDARK.error.general.no_character_selected: No character selected +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.error.source.source_missing: Source missing or unknown... SHADOWDARK.error.spells.no_spellcasting_ability_set: Aucune capacité de lancement de sorts n'a été configurée -SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it +SHADOWDARK.error.too_many_tokens_selected: Too many tokens selected SHADOWDARK.form.section_header.equipment.label: Équipement SHADOWDARK.form.section_header.languages.label: Languages SHADOWDARK.form.section_header.names.label: Names From b5de2beea595bd1514fd8ad76b49144fe5222bd6 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 18:37:31 +0000 Subject: [PATCH 142/182] New translations en.yaml (Spanish) --- i18n/es.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/i18n/es.yaml b/i18n/es.yaml index 7998d443..65932c62 100644 --- a/i18n/es.yaml +++ b/i18n/es.yaml @@ -110,8 +110,8 @@ SHADOWDARK.apps.request-check.copied: Copied to Clipboard SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard SHADOWDARK.apps.request-check.custom: Custom SHADOWDARK.apps.request-check.easy: Easy -SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.normal: Normal SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Elementos no encontrados @@ -351,9 +351,10 @@ SHADOWDARK.error.class_ability.no-uses-remaining: No uses remaining SHADOWDARK.error.general.gm_required: Debes tener el rol de Maestro de Juego para hacer eso. SHADOWDARK.error.general.no_character_class: Ninguna clase de personaje ha sido seleccionada SHADOWDARK.error.general.no_character_selected: No character selected +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.error.source.source_missing: Source missing or unknown... SHADOWDARK.error.spells.no_spellcasting_ability_set: No character spellcasting ability has been configured -SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it +SHADOWDARK.error.too_many_tokens_selected: Too many tokens selected SHADOWDARK.form.section_header.equipment.label: Equipment SHADOWDARK.form.section_header.languages.label: Idiomas SHADOWDARK.form.section_header.names.label: Names From a4cf83c3ccee8530d3d1694b8ccc4208f6df44ee Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 18:37:32 +0000 Subject: [PATCH 143/182] New translations en.yaml (German) --- i18n/de.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/i18n/de.yaml b/i18n/de.yaml index 3cd92373..1d3619ac 100644 --- a/i18n/de.yaml +++ b/i18n/de.yaml @@ -110,8 +110,8 @@ SHADOWDARK.apps.request-check.copied: Copied to Clipboard SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard SHADOWDARK.apps.request-check.custom: Custom SHADOWDARK.apps.request-check.easy: Easy -SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.normal: Normal SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found @@ -351,9 +351,10 @@ SHADOWDARK.error.class_ability.no-uses-remaining: No uses remaining SHADOWDARK.error.general.gm_required: Dazu musst du die Rolle des Game Master haben. SHADOWDARK.error.general.no_character_class: No character class has been selected SHADOWDARK.error.general.no_character_selected: No character selected +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.error.source.source_missing: Source missing or unknown... SHADOWDARK.error.spells.no_spellcasting_ability_set: No character spellcasting ability has been configured -SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it +SHADOWDARK.error.too_many_tokens_selected: Too many tokens selected SHADOWDARK.form.section_header.equipment.label: Equipment SHADOWDARK.form.section_header.languages.label: Languages SHADOWDARK.form.section_header.names.label: Names From 824935f923eebcf2260036ca0dfb9c461746217c Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 18:37:33 +0000 Subject: [PATCH 144/182] New translations en.yaml (Finnish) --- i18n/fi.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/i18n/fi.yaml b/i18n/fi.yaml index 944a038a..85a98a77 100644 --- a/i18n/fi.yaml +++ b/i18n/fi.yaml @@ -110,8 +110,8 @@ SHADOWDARK.apps.request-check.copied: Copied to Clipboard SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard SHADOWDARK.apps.request-check.custom: Custom SHADOWDARK.apps.request-check.easy: Easy -SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.normal: Normal SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Kohteita ei löytynyt @@ -351,9 +351,10 @@ SHADOWDARK.error.class_ability.no-uses-remaining: Ei enempää käyttökertoja SHADOWDARK.error.general.gm_required: Tarvitset pelinjohtajan roolin tehdäksesi noin. SHADOWDARK.error.general.no_character_class: Hahmoluokka ei ole valittu SHADOWDARK.error.general.no_character_selected: No character selected +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.error.source.source_missing: Lähdemateriaali puuttuu tai on tuntematon... SHADOWDARK.error.spells.no_spellcasting_ability_set: Hahmon loihtimiskyvykkyyttä ei ole asetettu -SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it +SHADOWDARK.error.too_many_tokens_selected: Too many tokens selected SHADOWDARK.form.section_header.equipment.label: Varusteet SHADOWDARK.form.section_header.languages.label: Kielet SHADOWDARK.form.section_header.names.label: Nimet From bce044139743ff0161291a5ea5ea052a1d9a87b3 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 18:37:34 +0000 Subject: [PATCH 145/182] New translations en.yaml (Korean) --- i18n/ko.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/i18n/ko.yaml b/i18n/ko.yaml index 212bdf58..a4cd2504 100644 --- a/i18n/ko.yaml +++ b/i18n/ko.yaml @@ -110,8 +110,8 @@ SHADOWDARK.apps.request-check.copied: Copied to Clipboard SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard SHADOWDARK.apps.request-check.custom: Custom SHADOWDARK.apps.request-check.easy: Easy -SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.normal: Normal SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found @@ -351,9 +351,10 @@ SHADOWDARK.error.class_ability.no-uses-remaining: No uses remaining SHADOWDARK.error.general.gm_required: 게임 마스터만 할 수 있습니다. SHADOWDARK.error.general.no_character_class: 캐릭터 클래스가 지정되지 않았습니다 SHADOWDARK.error.general.no_character_selected: No character selected +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.error.source.source_missing: Source missing or unknown... SHADOWDARK.error.spells.no_spellcasting_ability_set: 캐릭터의 주문시전 능력이 설정되지 않았습니다 -SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it +SHADOWDARK.error.too_many_tokens_selected: Too many tokens selected SHADOWDARK.form.section_header.equipment.label: Equipment SHADOWDARK.form.section_header.languages.label: Languages SHADOWDARK.form.section_header.names.label: Names From 8e5aa859bf2001e782c1538c7f6e503251364980 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 18:37:35 +0000 Subject: [PATCH 146/182] New translations en.yaml (Swedish) --- i18n/sv.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/i18n/sv.yaml b/i18n/sv.yaml index 5dcb3154..5b3c60ef 100644 --- a/i18n/sv.yaml +++ b/i18n/sv.yaml @@ -110,8 +110,8 @@ SHADOWDARK.apps.request-check.copied: Copied to Clipboard SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard SHADOWDARK.apps.request-check.custom: Custom SHADOWDARK.apps.request-check.easy: Easy -SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.normal: Normal SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Items Not Found @@ -351,9 +351,10 @@ SHADOWDARK.error.class_ability.no-uses-remaining: Inga användningar kvar SHADOWDARK.error.general.gm_required: Du måste vara spelledare för att göra det där. SHADOWDARK.error.general.no_character_class: Inget yrke har valts SHADOWDARK.error.general.no_character_selected: No character selected +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.error.source.source_missing: Källa saknad eller okänd... SHADOWDARK.error.spells.no_spellcasting_ability_set: Magiförmåga har inte ställts in -SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it +SHADOWDARK.error.too_many_tokens_selected: Too many tokens selected SHADOWDARK.form.section_header.equipment.label: Utrustning SHADOWDARK.form.section_header.languages.label: Språk SHADOWDARK.form.section_header.names.label: Namn From 619bb1753c754f16054ddb787455e18ff732fe42 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 18:37:37 +0000 Subject: [PATCH 147/182] New translations en.yaml (Portuguese, Brazilian) --- i18n/pt_BR.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/i18n/pt_BR.yaml b/i18n/pt_BR.yaml index 15537657..97e67e8a 100644 --- a/i18n/pt_BR.yaml +++ b/i18n/pt_BR.yaml @@ -110,8 +110,8 @@ SHADOWDARK.apps.request-check.copied: Copied to Clipboard SHADOWDARK.apps.request-check.copy_to_clipboard: Copy to Clipboard SHADOWDARK.apps.request-check.custom: Custom SHADOWDARK.apps.request-check.easy: Easy -SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.extreme: Extreme +SHADOWDARK.apps.request-check.hard: Hard SHADOWDARK.apps.request-check.normal: Normal SHADOWDARK.apps.request-check.title: Request Check SHADOWDARK.apps.shadowdarkling-importer.errors: Itens Não Encontrado @@ -351,9 +351,10 @@ SHADOWDARK.error.class_ability.no-uses-remaining: Sem usos restantes SHADOWDARK.error.general.gm_required: Você precisa ter o cargo de Mestre do Jogo para fazer isso. SHADOWDARK.error.general.no_character_class: Nenhuma classe de personagem foi selecionada SHADOWDARK.error.general.no_character_selected: No character selected +SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it SHADOWDARK.error.source.source_missing: Fonte ausente ou desconhecida... SHADOWDARK.error.spells.no_spellcasting_ability_set: Nenhum atributo de conjuração do personagem foi configurado -SHADOWDARK.error.patron.no_supported_class: Unable to add Patron as the currently configured class does not allow it +SHADOWDARK.error.too_many_tokens_selected: Too many tokens selected SHADOWDARK.form.section_header.equipment.label: Equipamento SHADOWDARK.form.section_header.languages.label: Idiomas SHADOWDARK.form.section_header.names.label: Nomes From be9bba8b369afe30c6f378e4d55367afbdf3bfae Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 19:16:37 +0000 Subject: [PATCH 148/182] minor style/layout tweaks --- system/src/apps/RequestCheckSD.mjs | 1 - system/templates/apps/request-check.hbs | 22 +++++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/system/src/apps/RequestCheckSD.mjs b/system/src/apps/RequestCheckSD.mjs index b355d519..a55d7ccf 100644 --- a/system/src/apps/RequestCheckSD.mjs +++ b/system/src/apps/RequestCheckSD.mjs @@ -93,7 +93,6 @@ export default class RequestCheckSD extends FormApplication { break; case "request-check": RequestCheckSD.displayRequest(data.difficulty, data.stat); - this.close(); break; default: shadowdark.error("Request Check Error"); diff --git a/system/templates/apps/request-check.hbs b/system/templates/apps/request-check.hbs index 8a2816f9..82ce5112 100644 --- a/system/templates/apps/request-check.hbs +++ b/system/templates/apps/request-check.hbs @@ -1,9 +1,9 @@
      -
      +
      {{#> ui/sd-box header-label="Difficulty" }} -
      +
      {{radioBoxes "difficulty" difficulty checked="12"}}
      {{else}} -
      +
      {{> actors/player/details/alignment }} {{> actors/player/details/deity }}
      diff --git a/system/templates/apps/level-up.hbs b/system/templates/apps/level-up.hbs index 7be86c23..8d42cfa9 100644 --- a/system/templates/apps/level-up.hbs +++ b/system/templates/apps/level-up.hbs @@ -1,5 +1,5 @@ -
      +

      {{actor.name}} diff --git a/system/templates/apps/level-up/talents.hbs b/system/templates/apps/level-up/talents.hbs index ba821ac8..632b107c 100644 --- a/system/templates/apps/level-up/talents.hbs +++ b/system/templates/apps/level-up/talents.hbs @@ -23,11 +23,7 @@

      -
      - {{#unless talentGained}} - {{localize "SHADOWDARK.apps.level-up.notalent"}} - {{/unless}} - +
      {{#if talentGained}} {{#unless rolls.talent}}
      From 4e34961358ed89af426223ce471a920351540a52 Mon Sep 17 00:00:00 2001 From: Prototype Date: Sat, 16 Nov 2024 14:24:36 -0800 Subject: [PATCH 150/182] Initial Search and Replace --- .../omen__pRO1kFMnFkkcYOgC.json | 2 +- .../relentless__z5uKTDf4wtkipQ4s.json | 2 +- ...carab_of_protection__RPe1Y9rnhOq7Dl6p.json | 2 +- .../aboleth__sgVqRuCaadRK1P7R.json | 2 +- .../monsters.db/anchor__1Me11yy0xHkPBvhw.json | 2 +- .../angel__domini__63d5P0opwEQTdDIn.json | 2 +- .../animate_plants__1xKtKNYuACH6fb90.json | 2 +- .../archangel__GzjB5DsORxRuX2MV.json | 2 +- .../archdevil__OkhcwZ7JqJxTgkJo.json | 2 +- .../archmage__5NUw5FTgSVwAi0nL.json | 2 +- .../monsters.db/attach__0uCmZyA0xr44j1zl.json | 2 +- .../monsters.db/attach__pkDrcdZf3E0gcdiL.json | 2 +- .../avalanche__HRlATZjaxlE28txH.json | 2 +- .../avalanche__ubJYB4qCRVz2xkGz.json | 2 +- .../monsters.db/banish__8556VXHFPg2B1Bc2.json | 2 +- .../monsters.db/barb__GSEP18yzChIAQVx1.json | 2 +- .../basilisk__r9PchmCuVg1r9FOA.json | 2 +- .../bewilder__3tGrbD7V4Kzh69WJ.json | 2 +- .../bewilder__RAfF2wCNn0ey6xAT.json | 2 +- .../monsters.db/blind__dZwEa52FIWfTHOQH.json | 2 +- .../blood_drain__9ZDuyMeBgfqKzP1X.json | 2 +- .../blood_drain__EmPgirFQm4Hz79rt.json | 2 +- .../brain_eater__MnV9R6AbzWjLreaZ.json | 2 +- .../carrion_mist__SFc52S0b9ce6Xldl.json | 2 +- .../carrion_stench__SoMI4kNt66pdL5Ju.json | 2 +- .../cave_brute__nhKDBbnOnXXTzfBr.json | 2 +- .../cave_creeper__j7sQ6Km2jSx5twCC.json | 2 +- .../centipede__giant__W9n69R2FY4EIgBuQ.json | 2 +- .../centipede__swarm__lcqq47H1YVF0ABnp.json | 2 +- .../monsters.db/charm__6YCyLoLyW57jRgrB.json | 2 +- .../monsters.db/charm__NEI62ofA7ClbRoyM.json | 2 +- .../monsters.db/charm__O9alWxnUwP76u3cA.json | 2 +- .../monsters.db/charm__kOFFYAB50N6vLH8G.json | 2 +- .../monsters.db/charm__xii04KaH82Q3bOPv.json | 2 +- .../chimera__5SaVYhtOSTOUcHCV.json | 2 +- .../monsters.db/chuul__4v8PY6yOUcQOTWWo.json | 2 +- .../cloaker__SeY0lvD3U4pr6mXD.json | 2 +- .../cockatrice__xUxKG0CR6Elw1l7h.json | 2 +- .../command__UoZZ5KKZ8UdPcaM5.json | 2 +- .../monsters.db/couatl__ibQF9DMmu8sTLz4B.json | 2 +- .../crab__giant__2KRkhIG0f9YAnUHb.json | 2 +- .../monsters.db/crush__TOovftdtF5yJJyUx.json | 2 +- .../monsters.db/crush__XJljWfi71QkE1a00.json | 2 +- .../monsters.db/curse__GlEUmXQMesA6DeWE.json | 2 +- .../monsters.db/curse__mddDFLdkX8qzSfWS.json | 2 +- .../monsters.db/curse__tu5XMDakF2Ug0MLC.json | 2 +- .../death_bolt__53KWLSWRCJO2LXWj.json | 2 +- .../demon__balor__ju93VWtuoi9BRX5F.json | 2 +- .../demon__dretch__UzRHO1MCMmYDSVzo.json | 2 +- .../demon__glabrezu__CuwjaziXY6YoAg7O.json | 2 +- .../demon__vrock__0Q9d1621wpUEsuFC.json | 2 +- .../devil__barbed__n4liAI4qBGY4orA4.json | 2 +- .../devil__cubi__eytIJSxijnY4VZ3U.json | 2 +- .../devil__erinyes__8Lma2TIrsJc0IJzV.json | 2 +- .../devil__imp__qhy4sxYqEkl171L5.json | 2 +- .../disease__3VOXkeJzY2reIEhe.json | 2 +- .../disease__AZNEMB8L7e2rrkke.json | 2 +- .../disease__I287MxSjRkphGQE9.json | 2 +- .../disease__koPxZQBcecCwEm1z.json | 2 +- .../disease__ripTEs1d39eR75u3.json | 2 +- .../disease__uLy11VqjEV8UmaFR.json | 2 +- .../monsters.db/djinni__ytftI0motwEnF29v.json | 2 +- .../dragon__desert__3ao87kQaYih26b9q.json | 2 +- .../dragon__fire__8nKQ8hgoWY7vZHb4.json | 2 +- .../dragon__forest__GGiSjGtAWFwFT81z.json | 2 +- .../dragon__frost__CUMRox407hfN6Ho1.json | 2 +- .../dragon__sea__wGmyKKVD5P4oE4RD.json | 2 +- .../dragon__swamp__KKc8fESqPDECz0bL.json | 2 +- .../drink_pain__QrykkJoOY9SDNJTu.json | 2 +- .../monsters.db/drow__OQKt55SQZZUZhlNq.json | 2 +- .../drow__drider__DttbFgMrxQulVKEf.json | 2 +- .../drow__priestess__mLujryShxJUk5Jys.json | 2 +- .../monsters.db/dryad__vXaqgfDykZPdXnIm.json | 2 +- .../dung_beetle__giant__99s2guSyYKPWp1oy.json | 2 +- ...ntal__air__greater___adojju5DJl1iWEg4.json | 2 +- ...ental__air__lesser___XEFAKSOcCUd8G89y.json | 2 +- ...al__earth__greater___w14e0EzbGfvjkbes.json | 2 +- ...tal__earth__lesser___Puc0P5lO6IphdIQP.json | 2 +- ...tal__fire__greater___V1wcRoUEnIbaNjXN.json | 2 +- ...ntal__fire__lesser___vylW8UYkC5i9wAS7.json | 2 +- ...al__water__greater___Fb4nfQoOqplwmGHe.json | 2 +- ...tal__water__lesser___ZP1OsAWwqVppLts0.json | 2 +- .../monsters.db/engulf__Kl6o22ueMZ7VHhf0.json | 2 +- .../monsters.db/engulf__YT0lNfn2LRODcVHp.json | 2 +- .../enslave__aP6TqfdMClwS8SFU.json | 2 +- .../enslave__pgLNyD8buvs48X6G.json | 2 +- .../ettercap__fcgq7uwsJEMMdRNx.json | 2 +- .../explosion__uWVe3NFqqbRKVAg1.json | 2 +- ...yestalk_ray__cancel__23A0LdGxQHEHmNdO.json | 2 +- ...eyestalk_ray__charm__5x2hRPCnhDy0nDV3.json | 2 +- ...talk_ray__confusion__G93evk3hEwUNxylg.json | 2 +- ...eyestalk_ray__death__vLhl7A91sIiMkyeE.json | 2 +- ...k_ray__disintegrate__seKf4CaOLPWpC2EA.json | 2 +- .../eyestalk_ray__hold__d2W2N4x0D1wNuQ6U.json | 2 +- ...estalk_ray__petrify__O1GgVoaS9kzn159D.json | 2 +- ...talk_ray__polymorph__0LTXQefThT3VPPuT.json | 2 +- ...eyestalk_ray__sleep__lxWYSEWZsXu2MhNw.json | 2 +- ...lk_ray__telekinesis__VP5z272fOQdofJHJ.json | 2 +- .../monsters.db/fairy__RAEbIzHkREYWKvLh.json | 2 +- .../fire_breath__N76B4JFwQSdnpZkO.json | 2 +- .../fire_breath__PTrZA5vH3W1CU8DU.json | 2 +- .../fire_breath__yuGQTgdDmrDuBagY.json | 2 +- .../frog__giant__mpdnvoVyYfvu8yLP.json | 2 +- .../frost_breath__NJcQFvVH4OnN7Gml.json | 2 +- .../monsters.db/gas__g5tUfZrRzPhiKHqB.json | 2 +- .../gelatinous_cube__udRspLiTyURGmLav.json | 2 +- .../monsters.db/ghast__XNiuEhf8QpfOnVCJ.json | 2 +- .../monsters.db/ghoul__aJPxeuzZ597SWMES.json | 2 +- .../giant__storm__owL9cUM2LTVpMarQ.json | 2 +- .../gibbering__mRmdYRMpxZAf9bWH.json | 2 +- .../gibbering_mouther__8aDS9mPcNoxNc3Ha.json | 2 +- .../goblin__shaman__Ot77aKKqmML8yboF.json | 2 +- .../golem__iron__KZNQRwpG4DaN57zB.json | 2 +- .../golem__stone__zLDg6vIYEj4wB0lQ.json | 2 +- .../monsters.db/gorgon__c9n0i79sjiUWwkiV.json | 2 +- .../monsters.db/grab__4Lkf0XBALE0VF2fj.json | 2 +- .../monsters.db/grab__7QuhLVnledWbETj9.json | 2 +- .../monsters.db/grab__KE4OAoAaH7iT0ORR.json | 2 +- .../monsters.db/grab__MLJYdnU1x4ExRF6W.json | 2 +- .../monsters.db/grab__N8oyIsMpLptBAxbS.json | 2 +- .../monsters.db/grab__bxIItkpH2Cix9D0q.json | 2 +- .../monsters.db/grab__lgOTiUpoDRhYY7ED.json | 2 +- .../monsters.db/grab__mmUvkBu6yarcYl4c.json | 2 +- .../monsters.db/grab__pL0pj5NHWX85KO00.json | 2 +- .../monsters.db/grick__Jn5JjEPCUT86txAg.json | 2 +- .../grimlow__A6QrevZXpJ0SeiIv.json | 2 +- .../hag__night__hi47xC8rfvviBoOO.json | 2 +- .../hag__sea__vSA5WApOVd99itBh.json | 2 +- .../hag__weald__9q5O77FFFJ7pTjhL.json | 2 +- .../monsters.db/harpy__CsQXDNmBDfao8hij.json | 2 +- .../heat_aura__5YsUPEHykPlLmQJf.json | 2 +- .../heat_aura__qdYSq7BfKFsmWzQX.json | 2 +- .../hell_hound__PAb9czULqynbNnKj.json | 2 +- .../hellfire__NbUw02jTaenW8Vp6.json | 2 +- .../monsters.db/horn__li5WO5TO9K1JNurG.json | 2 +- .../ice_aura__J63TUijUBeGFhaCw.json | 2 +- .../ice_breath__gZbLx66mCcYtGmrA.json | 2 +- .../inferno__PPXVvb1maJzU52wR.json | 2 +- .../inferno__Y5R7txciv069WSAr.json | 2 +- .../jellyfish__uNah6fsgfkt4Aiet.json | 2 +- .../monsters.db/knock__FOpL4BeAdJcgriOe.json | 2 +- .../monsters.db/knock__weIDcJAt1hdml23N.json | 2 +- .../monsters.db/kraken__4A7ELy7Oj4YKRqTf.json | 2 +- .../monsters.db/latch__yleJaQMbBi2Nvj8z.json | 2 +- .../monsters.db/latch__zu47R0LLpuiqpW9b.json | 2 +- .../leech__giant__UGsq7I9Gyahgd0dG.json | 2 +- .../monsters.db/lich__sncxcSi6ziTStjAh.json | 2 +- .../lightning_bolt__2XX0WwozYVrkP5zc.json | 2 +- .../lightning_bolt__wj2rkGw3Kck44h4j.json | 2 +- .../lightning_breath__wauGopnTnoT0JIbU.json | 2 +- .../manta_ray__giant__QhFsevIc23TsTHZE.json | 2 +- .../monsters.db/medusa__u05UfQ9hKno0bwWj.json | 2 +- .../monsters.db/mimic__LFx9hb8JlEfGxDaI.json | 2 +- .../mind_blast__ZuKLfwSmv5cpZCpg.json | 2 +- .../mind_control__apnNTADkCWr7LQkl.json | 2 +- ...danticus_the_flayed__DP8n8iIiU1Qostjv.json | 2 +- .../monsters.db/mummy__kY87zSryGuQ963Ba.json | 2 +- .../monsters.db/naga__UDGXIj9pB0TdWPA6.json | 2 +- .../necrosis__KxSRbgsadxN6ZrkQ.json | 2 +- .../necrosis__NBwsuy6AhxrzAqER.json | 2 +- ...obe_ixx_of_azarumme__6ce2xr1QmjJFMe5P.json | 2 +- .../octopus__giant__h0NMkJj2DCJiQ9Zw.json | 2 +- .../monsters.db/otyugh__Crc6mFgLL9vNJuaS.json | 2 +- .../paralysis__8UNij07oLyQBRvyL.json | 2 +- .../paralyze__9ckwNCpCA6oSEH3b.json | 2 +- .../paralyze__TrBfO8XGlXuUpnSr.json | 2 +- .../petrify__617UZSUALr6E4Hea.json | 2 +- .../petrify__6C23GPZWkEYYbWEy.json | 2 +- .../petrify__93VamQFfuaigX2c3.json | 2 +- .../petrifying_breath__9BaW9Yx4WaDTJkZS.json | 2 +- .../phoenix__o3Yd8P0DavwDp21b.json | 2 +- .../monsters.db/poison__0FtLWIg3szpBpkyN.json | 2 +- .../monsters.db/poison__1XE8PcmIpaAqkomr.json | 2 +- .../monsters.db/poison__2gyf2II3CBFEwn6Q.json | 2 +- .../monsters.db/poison__7hjMPySm4qWz4GDS.json | 2 +- .../monsters.db/poison__901hYb94EwoahIbl.json | 2 +- .../monsters.db/poison__CL4glqsTNFyGsmYi.json | 2 +- .../monsters.db/poison__Fof8QrBz6KPdM1q0.json | 2 +- .../monsters.db/poison__GoJru22lBvz2AvLo.json | 2 +- .../monsters.db/poison__Hasw5gfZX6holt5r.json | 2 +- .../monsters.db/poison__LKgpINrjjQkySz1B.json | 2 +- .../monsters.db/poison__SJUIyMMybJsi5q9y.json | 2 +- .../monsters.db/poison__Vkn0UoU0SfpKb8sf.json | 2 +- .../monsters.db/poison__WV9T1ZeCx8ST8T9A.json | 2 +- .../monsters.db/poison__WiAMZ0XuHjA9q87t.json | 2 +- .../monsters.db/poison__c4CJ0wn1uBMe1tzu.json | 2 +- .../monsters.db/poison__gEx5t1IwHdBJNohL.json | 2 +- .../monsters.db/poison__qXpmoLrXbk8wThRu.json | 2 +- .../monsters.db/poison__qfIjIAkMmlWRYU0P.json | 2 +- .../monsters.db/poison__r6qkMau5LhjCN1gF.json | 2 +- .../monsters.db/poison__rNnV6lCVKtNYT6Sg.json | 2 +- .../monsters.db/poison__tYFIveeKgcPled6c.json | 2 +- .../monsters.db/poison__uFG1MG9lM3u3XZID.json | 2 +- .../monsters.db/poison__uLTUz0TZILHtQIMr.json | 2 +- .../monsters.db/poison__vW08jerBqWdAvzSq.json | 2 +- .../monsters.db/poison__zho5Ov2asKyXMHjU.json | 2 +- .../poison_breath__CybUrDfNy7AoO5Nn.json | 2 +- .../poison_breath__mWJwY1nRizgIXJXR.json | 2 +- .../poison_web__8ITOtBo5399EG3Fl.json | 2 +- .../poison_web__e020Tn4yv7Aj604M.json | 2 +- .../pterodactyl__xIitpxW19LP91JA3.json | 2 +- .../purple_worm__VxV56gRyhUJfXu83.json | 2 +- .../rat__dire__3jwLk7zEFiHk7kna.json | 2 +- .../rat__giant__OYtg4Ta4PIpvIZxq.json | 2 +- .../monsters.db/rat__kRjM8lPIVu1b5b3g.json | 2 +- .../rat__swarm__UxMr9qvyuIt9ZwM7.json | 2 +- .../rathgamnon__o5xhxniboMbTCMLk.json | 2 +- .../relentless__8rwGx2FJL0elVlM2.json | 2 +- .../monsters.db/riddle__0RjpLMB5cEacYtVS.json | 2 +- .../rime_walker__pWIrU2mRsvTe17Nh.json | 2 +- .../monsters.db/roar__5wuTo8S0MrSTs8ZC.json | 2 +- .../monsters.db/roar__rF8vHz3pjxVOhsDK.json | 2 +- .../monsters.db/roc__39kt1XjVZ4JZSdEj.json | 2 +- .../monsters.db/roper__C0CuPZJOFDmuplw8.json | 2 +- .../rot_flower__pE0tXsYluDmktWNv.json | 2 +- .../salamander__t3Wr5E8hsOs1xtfK.json | 2 +- .../scarecrow__Hdpcnnvyh69C4BnO.json | 2 +- .../scorpion__giant__TZGzGBYncOs3r9ZF.json | 2 +- .../scorpion__lDXLWTA4FLMpAblB.json | 2 +- .../monsters.db/scream__K8YmkKG0OeE5p3Ck.json | 2 +- .../screech__RHFDtIEwvYizX8Rz.json | 2 +- .../screech__tPJIWcQ8v5VtGOwO.json | 2 +- .../shambling_mound__uTmirbJfdHFTag2i.json | 2 +- .../sigil_of_doom__CG8OMH79DZarSIUG.json | 2 +- .../monsters.db/siren__iaP5JVmGCrkkTAzO.json | 2 +- .../monsters.db/slow__WCgeRKkVzpcLQ4h9.json | 2 +- .../monsters.db/slow__Xdqp9RpogEYCs7eT.json | 2 +- .../smog_breath__GoO4Pf1ZqGjiTmEC.json | 2 +- .../smog_breath__com7VSCQjyd2H2dH.json | 2 +- .../snake__cobra__anfsgfN2gFs72MHo.json | 2 +- .../snake__swarm__cUUnqWyaNDYghKxE.json | 2 +- .../monsters.db/song__4mlrXcRGjlZTjGad.json | 2 +- .../monsters.db/song__BpR7pjqEIyqP3cC5.json | 2 +- .../soulbind__zsKCU3we8eiou4Ou.json | 2 +- .../monsters.db/sphinx__JjJbKB1yomE7Ma8T.json | 2 +- .../spider__giant__p9PayU4K9nBZ8JRl.json | 2 +- .../monsters.db/spider__piZE4vxM1QjLxEt0.json | 2 +- .../spider__swarm__rwE58nsTLAG7pW1u.json | 2 +- .../steam_breath__duWZ4M8ncHp14V3w.json | 2 +- .../monsters.db/stick__YnXcKIFkw6Wrk5aq.json | 2 +- .../stingbat__bILTV7P0d55nACrQ.json | 2 +- .../stink_bomb__xBAlOQL2Aw6BtJat.json | 2 +- .../swallow__TJBmGc35yI8J1mmm.json | 2 +- .../terrify__2mavvptp3uwVGn7B.json | 2 +- .../the_tarrasque__NTRHmnsw7poR4rZ9.json | 2 +- ...the_ten_eyed_oracle__hiZvVJPOJWtOXV4m.json | 2 +- .../monsters.db/tongue__mEStu9pqn6uZL0XQ.json | 2 +- .../monsters.db/toxin__8ImR70ykjgRSTKdi.json | 2 +- .../monsters.db/toxin__9X7xB8QcvSmArvoR.json | 2 +- .../monsters.db/toxin__IWKGdw3vbV7Sq9BW.json | 2 +- .../monsters.db/toxin__Ui40uFcfnFFkJ0fu.json | 2 +- .../monsters.db/toxin__jjIo6W6eWnU2jog0.json | 2 +- .../monsters.db/toxin__pUxPYCv0hAN8uZm7.json | 2 +- .../monsters.db/toxin__wqSMhIHhQtIDwgpg.json | 2 +- .../vampire__ei53dGxj76xmqQty.json | 2 +- .../monsters.db/venom__BbK7mRUYw9HgTLCz.json | 2 +- .../monsters.db/venom__KxfcNf9Cicd0zvHs.json | 2 +- .../void_spawn__VvkJkRVLs6l9UaZy.json | 2 +- .../void_spider__QziiJsawKcGcS0QJ.json | 2 +- .../wasp__giant__K9M3BA8PlvYWFADe.json | 2 +- .../water_spout__jdgbSe8wKcxF4AKX.json | 2 +- .../monsters.db/web__mohcAqC1At1TVnFw.json | 2 +- .../whirlpool__Hk7ky7xkZ8ux7KEH.json | 2 +- .../whirlpool__K0jtx3NVgdu9RkOs.json | 2 +- .../whirlwind__G3qtuLQKRz336WuV.json | 2 +- .../whirlwind__gI68sEzZoll4507Y.json | 2 +- .../whirlwind__mMnML7YGLlmWxeow.json | 2 +- .../wolf__winter__nugxSBkw9LcUDPqF.json | 2 +- .../monsters.db/wyvern__IUN6KcvNGGJWTQCE.json | 2 +- .../monsters.db/zombie__Q89EgThYcungYTke.json | 2 +- .../bolas__98zYioBHqik74KBV.json | 2 +- ...he_scarlet_minotaur__0qbqDCsioL4HWVvW.json | 42 +++++++++---------- .../combat__MYaGXUcQtZ4b8xCI.json | 2 +- .../end_papers__sZ8VL88OjSsoYzRp.json | 2 +- .../resting__eESogCwLJ4JAwr7q.json | 2 +- .../running_the_game__PCojefwnROBvXzLy.json | 2 +- .../the_basics__oS18PtqDDic7mYJY.json | 2 +- .../wizard_class__xefGxARDmlj6O86Y.json | 2 +- .../wizard_mishaps__Rbfb9fZAQq7WZNiW.json | 2 +- ...lts!NiiJKAiBjpPAj5U1.75GJHt36EtuofTvq.json | 2 +- ...lts!q83PUKIAznuLpqSr.FL0DEM3DhRGbv4AG.json | 2 +- ...lts!q83PUKIAznuLpqSr.e3Y6IBqetlQqrwnw.json | 2 +- ...lts!tXhX6Iv3rOc6GlF6.75GJHt36EtuofTvq.json | 2 +- ...lts!tXhX6Iv3rOc6GlF6.M8VKYie0UBgGPGRB.json | 2 +- ...lts!tXhX6Iv3rOc6GlF6.e3Y6IBqetlQqrwnw.json | 2 +- ...ll_effect__anathema__vApjjHkL9nghvbQT.json | 2 +- ...l_effect__mistletoe__CFnP5fuBHsNZzrkY.json | 2 +- ...pell_effect__puppet__Cu3dona3PiHxO1lK.json | 2 +- ...shape__winter_wolf___cC4hF54uctVhvvCo.json | 2 +- .../spells.db/anathema__cjMeJWmom6jpB2JA.json | 2 +- .../spells.db/beguile__TDfCS0FVOPCogm4A.json | 2 +- .../hypnotize__Udd1so1LKvek6Z3P.json | 2 +- .../mistletoe__T8NL6GglkMi1FmVr.json | 2 +- .../spells.db/puppet__JuO97AW78TLywZKW.json | 2 +- .../hide_from_creature__qmK8gzmaAcowPP4f.json | 2 +- .../learning_spells__LFMT8qZ6ZL3LvYFM.json | 2 +- .../talents.db/mount__fXOG1tWCuBTQdgEl.json | 2 +- .../talents.db/omen__SsgeL6OKpvpltElv.json | 2 +- .../presence__J4KYu5M32T81yE1f.json | 2 +- .../relentless__bjZGm9FtinFh2ltV.json | 2 +- .../sleep_a_creature__279opQ7jDyCaRGAu.json | 2 +- 301 files changed, 321 insertions(+), 321 deletions(-) diff --git a/data/packs/class-abilities.db/omen__pRO1kFMnFkkcYOgC.json b/data/packs/class-abilities.db/omen__pRO1kFMnFkkcYOgC.json index 4723b6a2..7b2b130f 100644 --- a/data/packs/class-abilities.db/omen__pRO1kFMnFkkcYOgC.json +++ b/data/packs/class-abilities.db/omen__pRO1kFMnFkkcYOgC.json @@ -9,7 +9,7 @@ "system": { "ability": "wis", "dc": 9, - "description": "

      3/day, you can make a DC 9 WIS check. On a success, gain a luck token (you can't have more than one luck token at a time).

      ", + "description": "

      3/day, you can make a [[check 9 wis]] check. On a success, gain a luck token (you can't have more than one luck token at a time).

      ", "group": "", "limitedUses": true, "loseOnFailure": false, diff --git a/data/packs/class-abilities.db/relentless__z5uKTDf4wtkipQ4s.json b/data/packs/class-abilities.db/relentless__z5uKTDf4wtkipQ4s.json index b482fded..3d4deedb 100644 --- a/data/packs/class-abilities.db/relentless__z5uKTDf4wtkipQ4s.json +++ b/data/packs/class-abilities.db/relentless__z5uKTDf4wtkipQ4s.json @@ -9,7 +9,7 @@ "system": { "ability": "con", "dc": 18, - "description": "

      3/day, when you are reduced to 0 HP, make a DC 18 Constitution check (the Implacable talent applies to this roll). On a success, you instead go to 1 HP.

      ", + "description": "

      3/day, when you are reduced to 0 HP, make a [[check 18 con]] check (the Implacable talent applies to this roll). On a success, you instead go to 1 HP.

      ", "group": "Relentless", "limitedUses": true, "loseOnFailure": false, diff --git a/data/packs/magic-items.db/scarab_of_protection__RPe1Y9rnhOq7Dl6p.json b/data/packs/magic-items.db/scarab_of_protection__RPe1Y9rnhOq7Dl6p.json index f3b42668..84799230 100644 --- a/data/packs/magic-items.db/scarab_of_protection__RPe1Y9rnhOq7Dl6p.json +++ b/data/packs/magic-items.db/scarab_of_protection__RPe1Y9rnhOq7Dl6p.json @@ -14,7 +14,7 @@ "gp": 0, "sp": 0 }, - "description": "

      A brooch made from a horned scarab beetle dipped in gold.

      Benefit. If you die, make a DC 18 Constitution check. If you succeed, you are unconscious instead of dead.

      ", + "description": "

      A brooch made from a horned scarab beetle dipped in gold.

      Benefit. If you die, make a [[check 18 con]] check. If you succeed, you are unconscious instead of dead.

      ", "equipped": false, "isAmmunition": false, "isPhysical": true, diff --git a/data/packs/monsters.db/aboleth__sgVqRuCaadRK1P7R.json b/data/packs/monsters.db/aboleth__sgVqRuCaadRK1P7R.json index 11901034..9870956a 100644 --- a/data/packs/monsters.db/aboleth__sgVqRuCaadRK1P7R.json +++ b/data/packs/monsters.db/aboleth__sgVqRuCaadRK1P7R.json @@ -141,7 +141,7 @@ }, "move": "near", "moveNote": "swim", - "notes": "\n\t

      Enormous, antediluvian catfish covered in slime and tentacles. They hate all intelligent beings.

      \n\t

      \n\t

      AC 16, HP 39, ATK 2 tentacle (near) +5 (1d8 + curse) or 1 tail +5 (3d6), MV near (swim), S +4, D -1, C +3, I +4, W +2, Ch +2, AL C, LV 8

      \n\t

      Curse. DC 15 CON or target gains a magical curse, turning into a deep one over 2d10 days.

      Enslave. In place of attacks, one creature within far DC 15 WIS or aboleth controls for 1d4 rounds.

      Telepathic. Read the thoughts of all creatures within far.

      ", + "notes": "\n\t

      Enormous, antediluvian catfish covered in slime and tentacles. They hate all intelligent beings.

      \n\t

      \n\t

      AC 16, HP 39, ATK 2 tentacle (near) +5 (1d8 + curse) or 1 tail +5 (3d6), MV near (swim), S +4, D -1, C +3, I +4, W +2, Ch +2, AL C, LV 8

      \n\t

      Curse. [[check 15 con]] or target gains a magical curse, turning into a deep one over 2d10 days.

      Enslave. In place of attacks, one creature within far [[check 15 wis]] or aboleth controls for 1d4 rounds.

      Telepathic. Read the thoughts of all creatures within far.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/anchor__1Me11yy0xHkPBvhw.json b/data/packs/monsters.db/anchor__1Me11yy0xHkPBvhw.json index d1da40d0..ac387fff 100644 --- a/data/packs/monsters.db/anchor__1Me11yy0xHkPBvhw.json +++ b/data/packs/monsters.db/anchor__1Me11yy0xHkPBvhw.json @@ -8,7 +8,7 @@ "name": "Anchor", "system": { "dc": "14", - "description": "

      One target in far DC 18 STR or bound and anchored by chains of golden runes for [[/r 1d4]] rounds.

      ", + "description": "

      One target in far [[check 18 str]] or bound and anchored by chains of golden runes for [[/r 1d4]] rounds.

      ", "duration": { "type": "rounds", "value": "1d4" diff --git a/data/packs/monsters.db/angel__domini__63d5P0opwEQTdDIn.json b/data/packs/monsters.db/angel__domini__63d5P0opwEQTdDIn.json index bfa45499..9c194077 100644 --- a/data/packs/monsters.db/angel__domini__63d5P0opwEQTdDIn.json +++ b/data/packs/monsters.db/angel__domini__63d5P0opwEQTdDIn.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      Winged, flawless humans glowing with bronze sunlight.

      \n\t

      \n\t

      AC 17 (plate mail + shield), HP 42, ATK 3 bastard sword +7 (1d8) or 1 horn, MV near (fly), S +4, D +1, C +2, I +3, W +4, Ch +4, AL L, LV 9

      \n\t

      Horn. All enemies in near DC 15 CHA or paralyzed 1d4 rounds.

      ", + "notes": "\n\t

      Winged, flawless humans glowing with bronze sunlight.

      \n\t

      \n\t

      AC 17 (plate mail + shield), HP 42, ATK 3 bastard sword +7 (1d8) or 1 horn, MV near (fly), S +4, D +1, C +2, I +3, W +4, Ch +4, AL L, LV 9

      \n\t

      Horn. All enemies in near [[check 15 cha]] or paralyzed 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/animate_plants__1xKtKNYuACH6fb90.json b/data/packs/monsters.db/animate_plants__1xKtKNYuACH6fb90.json index 6ee87a14..0aea07c0 100644 --- a/data/packs/monsters.db/animate_plants__1xKtKNYuACH6fb90.json +++ b/data/packs/monsters.db/animate_plants__1xKtKNYuACH6fb90.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Animate Plants", "system": { - "description": "

      1/day, in place of attacks. Vines grab at all enemies within double near of dragon. DC 15 DEX or unable to move [[/r 1d4]] rounds.

      ", + "description": "

      1/day, in place of attacks. Vines grab at all enemies within double near of dragon. [[check 15 dex]] or unable to move [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/archangel__GzjB5DsORxRuX2MV.json b/data/packs/monsters.db/archangel__GzjB5DsORxRuX2MV.json index 0cfedaae..4b8dcbb4 100644 --- a/data/packs/monsters.db/archangel__GzjB5DsORxRuX2MV.json +++ b/data/packs/monsters.db/archangel__GzjB5DsORxRuX2MV.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      A radiant being with a crown of fire, snowy wings, golden armor, and a blazing greatsword.

      \n\t

      \n\t

      AC 18 ( +3 plate mail ), HP 76, ATK 3 flaming greatsword +10 (2d12), MV double near (fly), S +5, D +2, C +4, I +4, W +5, Ch +5, AL L, LV 16

      \n\t

      Command. DC 18 CHA to resist an archangel's command.

      Crown of Fire. Hostile spells targeting the archangel are extreme (DC 18) to cast.

      ", + "notes": "\n\t

      A radiant being with a crown of fire, snowy wings, golden armor, and a blazing greatsword.

      \n\t

      \n\t

      AC 18 ( +3 plate mail ), HP 76, ATK 3 flaming greatsword +10 (2d12), MV double near (fly), S +5, D +2, C +4, I +4, W +5, Ch +5, AL L, LV 16

      \n\t

      Command. [[check 18 cha]] to resist an archangel's command.

      Crown of Fire. Hostile spells targeting the archangel are extreme (DC 18) to cast.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/archdevil__OkhcwZ7JqJxTgkJo.json b/data/packs/monsters.db/archdevil__OkhcwZ7JqJxTgkJo.json index 22a8a415..c6091896 100644 --- a/data/packs/monsters.db/archdevil__OkhcwZ7JqJxTgkJo.json +++ b/data/packs/monsters.db/archdevil__OkhcwZ7JqJxTgkJo.json @@ -140,7 +140,7 @@ }, "move": "far", "moveNote": "teleport", - "notes": "\n\t

      A stunningly beautiful, horned human with burning, red eyes and a halo of seven black stars. Two stitched-up gashes weep blood from its shoulder blades.

      \n\t

      \n\t

      AC 19, HP 76, ATK 4 iron scepter +10 (3d10) or 1 soulbind, MV far (teleport), S +5, D +4, C +4, I +5, W +4, Ch +7, AL C, LV 16

      \n\t

      Impervious. Fire immune. Only damaged by magical sources.

      Crown of Darkness. All hostile spells are reflected at caster with a spellcasting check less than 20.

      Soulbind. All targets within near DC 20 CHA or fall under control of archdevil for 1d4 rounds. DC 20 CHA on turn to end the effect.

      ", + "notes": "\n\t

      A stunningly beautiful, horned human with burning, red eyes and a halo of seven black stars. Two stitched-up gashes weep blood from its shoulder blades.

      \n\t

      \n\t

      AC 19, HP 76, ATK 4 iron scepter +10 (3d10) or 1 soulbind, MV far (teleport), S +5, D +4, C +4, I +5, W +4, Ch +7, AL C, LV 16

      \n\t

      Impervious. Fire immune. Only damaged by magical sources.

      Crown of Darkness. All hostile spells are reflected at caster with a spellcasting check less than 20.

      Soulbind. All targets within near [[check 20 cha]] or fall under control of archdevil for 1d4 rounds. [[check 20 cha]] on turn to end the effect.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/archmage__5NUw5FTgSVwAi0nL.json b/data/packs/monsters.db/archmage__5NUw5FTgSVwAi0nL.json index aa7c0f13..dfbd758e 100644 --- a/data/packs/monsters.db/archmage__5NUw5FTgSVwAi0nL.json +++ b/data/packs/monsters.db/archmage__5NUw5FTgSVwAi0nL.json @@ -142,7 +142,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A wizened magic-user crackling with arcane power.

      \n\t

      \n\t

      AC 12, HP 44, ATK 2 spell +7, MV near, S -1, D +2, C -1, I +4, W +2, Ch +1, AL L, LV 10

      \n\t

      Death Bolt (INT Spell). DC 15. One target of LV 9 or less within near DC 15 CON or go to 0 HP.

      Enervate (INT Spell). DC 14. Focus. One target within near is stupefied for the duration.

      Fireblast (INT Spell). DC 14. 4d6 damage to all within a near-sized cube within far.

      Float (INT Spell). Self. DC 14. Fly double near for 5 rounds.

      Mithralskin (INT Spell). Self. DC 14. AC becomes 18 for 5 rounds.

      Void Step (INT Spell). Self and up to 4 willing targets. DC 15. Teleport up to 100 miles.

      ", + "notes": "\n\t

      A wizened magic-user crackling with arcane power.

      \n\t

      \n\t

      AC 12, HP 44, ATK 2 spell +7, MV near, S -1, D +2, C -1, I +4, W +2, Ch +1, AL L, LV 10

      \n\t

      Death Bolt (INT Spell). DC 15. One target of LV 9 or less within near [[check 15 con]] or go to 0 HP.

      Enervate (INT Spell). DC 14. Focus. One target within near is stupefied for the duration.

      Fireblast (INT Spell). DC 14. 4d6 damage to all within a near-sized cube within far.

      Float (INT Spell). Self. DC 14. Fly double near for 5 rounds.

      Mithralskin (INT Spell). Self. DC 14. AC becomes 18 for 5 rounds.

      Void Step (INT Spell). Self and up to 4 willing targets. DC 15. Teleport up to 100 miles.

      ", "spellcastingAbility": "int", "spellcastingAttackNum": 2, "spellcastingBonus": 7 diff --git a/data/packs/monsters.db/attach__0uCmZyA0xr44j1zl.json b/data/packs/monsters.db/attach__0uCmZyA0xr44j1zl.json index a083a4ab..58f1c369 100644 --- a/data/packs/monsters.db/attach__0uCmZyA0xr44j1zl.json +++ b/data/packs/monsters.db/attach__0uCmZyA0xr44j1zl.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Attach", "system": { - "description": "

      Attach to target; bite auto-hits next round. DC 12 STR on turn to tear off.

      ", + "description": "

      Attach to target; bite auto-hits next round. [[check 12 str]] on turn to tear off.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/attach__pkDrcdZf3E0gcdiL.json b/data/packs/monsters.db/attach__pkDrcdZf3E0gcdiL.json index ceaf092d..7234dfb5 100644 --- a/data/packs/monsters.db/attach__pkDrcdZf3E0gcdiL.json +++ b/data/packs/monsters.db/attach__pkDrcdZf3E0gcdiL.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Attach", "system": { - "description": "

      Attach to target; bite auto-hits next round. DC 12 STR on turn to tear off.

      ", + "description": "

      Attach to target; bite auto-hits next round. [[check 12 str]] on turn to tear off.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/avalanche__HRlATZjaxlE28txH.json b/data/packs/monsters.db/avalanche__HRlATZjaxlE28txH.json index 7b4feefb..f0ce6e89 100644 --- a/data/packs/monsters.db/avalanche__HRlATZjaxlE28txH.json +++ b/data/packs/monsters.db/avalanche__HRlATZjaxlE28txH.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      All within close DC 15 STR or entombed for [[/r 1d4]] rounds under mounds of earth.

      ", + "description": "

      All within close [[check 15 str]] or entombed for [[/r 1d4]] rounds under mounds of earth.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/avalanche__ubJYB4qCRVz2xkGz.json b/data/packs/monsters.db/avalanche__ubJYB4qCRVz2xkGz.json index c2338ca2..7f971523 100644 --- a/data/packs/monsters.db/avalanche__ubJYB4qCRVz2xkGz.json +++ b/data/packs/monsters.db/avalanche__ubJYB4qCRVz2xkGz.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      All within close DC 15 STR or entombed for [[/r 1d4]] rounds under mounds of earth.

      ", + "description": "

      All within close [[check 15 str]] or entombed for [[/r 1d4]] rounds under mounds of earth.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/banish__8556VXHFPg2B1Bc2.json b/data/packs/monsters.db/banish__8556VXHFPg2B1Bc2.json index 0cf89cd4..b53c3f06 100644 --- a/data/packs/monsters.db/banish__8556VXHFPg2B1Bc2.json +++ b/data/packs/monsters.db/banish__8556VXHFPg2B1Bc2.json @@ -8,7 +8,7 @@ "name": "Banish", "system": { "dc": 14, - "description": "

      All extradimensional creatures within near DC 15 CHA or sent back to their home planes.

      ", + "description": "

      All extradimensional creatures within near [[check 15 cha]] or sent back to their home planes.

      ", "duration": { "type": "instant", "value": -1 diff --git a/data/packs/monsters.db/barb__GSEP18yzChIAQVx1.json b/data/packs/monsters.db/barb__GSEP18yzChIAQVx1.json index bd9adbea..75a8df00 100644 --- a/data/packs/monsters.db/barb__GSEP18yzChIAQVx1.json +++ b/data/packs/monsters.db/barb__GSEP18yzChIAQVx1.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Barb", "system": { - "description": "

      Each spine sticks, dealing [[/r 1d4]] damage each round. DC 12 STR check on turn to remove.

      ", + "description": "

      Each spine sticks, dealing [[/r 1d4]] damage each round. [[check 12 str]] check on turn to remove.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/basilisk__r9PchmCuVg1r9FOA.json b/data/packs/monsters.db/basilisk__r9PchmCuVg1r9FOA.json index 79d02316..82a9009e 100644 --- a/data/packs/monsters.db/basilisk__r9PchmCuVg1r9FOA.json +++ b/data/packs/monsters.db/basilisk__r9PchmCuVg1r9FOA.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Massive, muscled lizards with six legs and gray, tough hide.

      \n\t

      \n\t

      AC 14, HP 25, ATK 2 bite +4 (2d6 + petrify), MV near, S +3, D +1, C +3, I -3, W +1, Ch -3, AL N, LV 5

      \n\t

      Petrify. Any creature that touches the basilisk or meets its gaze, DC 15 CON or petrified.

      ", + "notes": "\n\t

      Massive, muscled lizards with six legs and gray, tough hide.

      \n\t

      \n\t

      AC 14, HP 25, ATK 2 bite +4 (2d6 + petrify), MV near, S +3, D +1, C +3, I -3, W +1, Ch -3, AL N, LV 5

      \n\t

      Petrify. Any creature that touches the basilisk or meets its gaze, [[check 15 con]] or petrified.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/bewilder__3tGrbD7V4Kzh69WJ.json b/data/packs/monsters.db/bewilder__3tGrbD7V4Kzh69WJ.json index ab2b7dc1..6e2d643d 100644 --- a/data/packs/monsters.db/bewilder__3tGrbD7V4Kzh69WJ.json +++ b/data/packs/monsters.db/bewilder__3tGrbD7V4Kzh69WJ.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Bewilder", "system": { - "description": "

      Creatures within near that see the cave brute's eyes, DC 12 CHA at start of their turn or dazed and no action.

      ", + "description": "

      Creatures within near that see the cave brute's eyes, [[check 12 cha]] at start of their turn or dazed and no action.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/bewilder__RAfF2wCNn0ey6xAT.json b/data/packs/monsters.db/bewilder__RAfF2wCNn0ey6xAT.json index 037bd674..513a4d69 100644 --- a/data/packs/monsters.db/bewilder__RAfF2wCNn0ey6xAT.json +++ b/data/packs/monsters.db/bewilder__RAfF2wCNn0ey6xAT.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Bewilder", "system": { - "description": "

      Creatures within near that see the cave brute's eyes, DC 12 CHA at start of their turn or dazed and no action.

      ", + "description": "

      Creatures within near that see the cave brute's eyes, [[check 12 cha]] at start of their turn or dazed and no action.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/blind__dZwEa52FIWfTHOQH.json b/data/packs/monsters.db/blind__dZwEa52FIWfTHOQH.json index 50710705..5d21fb04 100644 --- a/data/packs/monsters.db/blind__dZwEa52FIWfTHOQH.json +++ b/data/packs/monsters.db/blind__dZwEa52FIWfTHOQH.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      One target within near DC 15 CHA or blinded for [[/r 1d4]] days.

      ", + "description": "

      One target within near [[check 15 cha]] or blinded for [[/r 1d4]] days.

      ", "predefinedEffects": "", "ranges": [ ], diff --git a/data/packs/monsters.db/blood_drain__9ZDuyMeBgfqKzP1X.json b/data/packs/monsters.db/blood_drain__9ZDuyMeBgfqKzP1X.json index 5ac9bd46..34cdd74a 100644 --- a/data/packs/monsters.db/blood_drain__9ZDuyMeBgfqKzP1X.json +++ b/data/packs/monsters.db/blood_drain__9ZDuyMeBgfqKzP1X.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Blood Drain", "system": { - "description": "

      Attach to bitten target; auto-hit the next round. DC 9 STR on turn to remove.

      ", + "description": "

      Attach to bitten target; auto-hit the next round. [[check 9 str]] on turn to remove.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/blood_drain__EmPgirFQm4Hz79rt.json b/data/packs/monsters.db/blood_drain__EmPgirFQm4Hz79rt.json index 3bd135c7..d1b95bc4 100644 --- a/data/packs/monsters.db/blood_drain__EmPgirFQm4Hz79rt.json +++ b/data/packs/monsters.db/blood_drain__EmPgirFQm4Hz79rt.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Blood Drain", "system": { - "description": "

      Attach to bitten target; auto-hit the next round. DC 9 STR on turn to remove.

      ", + "description": "

      Attach to bitten target; auto-hit the next round. [[check 9 str]] on turn to remove.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/brain_eater__MnV9R6AbzWjLreaZ.json b/data/packs/monsters.db/brain_eater__MnV9R6AbzWjLreaZ.json index 06c7c839..5201a187 100644 --- a/data/packs/monsters.db/brain_eater__MnV9R6AbzWjLreaZ.json +++ b/data/packs/monsters.db/brain_eater__MnV9R6AbzWjLreaZ.json @@ -141,7 +141,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Purple, gaunt humanoids with squidlike heads and four face tentacles. They live in complex, alien societies underground and eat humanoid brains.

      \n\t

      \n\t

      AC 14 (leather), HP 36, ATK 4 tentacle +5 (1d8 + latch) or 1 mind blast or 1 mind control, MV near, S +2, D +3, C +0, I +4, W +2, Ch +4, AL C, LV 8

      \n\t

      Hear Thoughts. Can hear the surface thoughts of all intelligent creatures within near.

      Latch. Tentacles attach to hit targets, automatically hitting the next round (DC 12 STR on turn to remove 1d4 tentacles). If all four remain latched onto the same humanoid target for 1 round, the target's brain is ripped out and devoured.

      Mind Blast. Fills a near-sized cube extending from brain eater. DC 15 INT or 3d6 damage and paralyzed 1d4 rounds.

      Mind Control. One target in near DC 15 CHA or brain eater controls for 1d4 rounds.

      ", + "notes": "\n\t

      Purple, gaunt humanoids with squidlike heads and four face tentacles. They live in complex, alien societies underground and eat humanoid brains.

      \n\t

      \n\t

      AC 14 (leather), HP 36, ATK 4 tentacle +5 (1d8 + latch) or 1 mind blast or 1 mind control, MV near, S +2, D +3, C +0, I +4, W +2, Ch +4, AL C, LV 8

      \n\t

      Hear Thoughts. Can hear the surface thoughts of all intelligent creatures within near.

      Latch. Tentacles attach to hit targets, automatically hitting the next round ([[check 12 str]] on turn to remove 1d4 tentacles). If all four remain latched onto the same humanoid target for 1 round, the target's brain is ripped out and devoured.

      Mind Blast. Fills a near-sized cube extending from brain eater. [[check 15 int]] or 3d6 damage and paralyzed 1d4 rounds.

      Mind Control. One target in near [[check 15 cha]] or brain eater controls for 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/carrion_mist__SFc52S0b9ce6Xldl.json b/data/packs/monsters.db/carrion_mist__SFc52S0b9ce6Xldl.json index 989453a9..82f3043e 100644 --- a/data/packs/monsters.db/carrion_mist__SFc52S0b9ce6Xldl.json +++ b/data/packs/monsters.db/carrion_mist__SFc52S0b9ce6Xldl.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Carrion Mist", "system": { - "description": "

      Each time vrock is hit, 3:6 chance of carrion mist in near-sized cube centered on vrock. All enemies DC 15 CON or violent vomiting [[/r 1d4]] rounds.

      ", + "description": "

      Each time vrock is hit, 3:6 chance of carrion mist in near-sized cube centered on vrock. All enemies [[check 15 con]] or violent vomiting [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/carrion_stench__SoMI4kNt66pdL5Ju.json b/data/packs/monsters.db/carrion_stench__SoMI4kNt66pdL5Ju.json index 1add8833..049d41b4 100644 --- a/data/packs/monsters.db/carrion_stench__SoMI4kNt66pdL5Ju.json +++ b/data/packs/monsters.db/carrion_stench__SoMI4kNt66pdL5Ju.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Carrion Stench", "system": { - "description": "

      Living creatures DC 12 CON the first time within near or DISADV on attacks and spellcasting for 5 rounds.

      ", + "description": "

      Living creatures [[check 12 con]] the first time within near or DISADV on attacks and spellcasting for 5 rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/cave_brute__nhKDBbnOnXXTzfBr.json b/data/packs/monsters.db/cave_brute__nhKDBbnOnXXTzfBr.json index c803f1bf..ea6367d6 100644 --- a/data/packs/monsters.db/cave_brute__nhKDBbnOnXXTzfBr.json +++ b/data/packs/monsters.db/cave_brute__nhKDBbnOnXXTzfBr.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "burrow", - "notes": "\n\t

      A hulking, insectoid beast with long mandibles, four eyes, and thick arms covered in bristles.

      \n\t

      \n\t

      AC 14, HP 28, ATK 2 claw +5 (1d8) and 1 mandible +5 (1d10), MV near (burrow), S +4, D +1, C +1, I -3, W +1, Ch -3, AL N, LV 6

      \n\t

      Bewilder. Creatures within near that see the cave brute's eyes, DC 12 CHA at start of their turn or dazed and no action.

      ", + "notes": "\n\t

      A hulking, insectoid beast with long mandibles, four eyes, and thick arms covered in bristles.

      \n\t

      \n\t

      AC 14, HP 28, ATK 2 claw +5 (1d8) and 1 mandible +5 (1d10), MV near (burrow), S +4, D +1, C +1, I -3, W +1, Ch -3, AL N, LV 6

      \n\t

      Bewilder. Creatures within near that see the cave brute's eyes, [[check 12 cha]] at start of their turn or dazed and no action.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/cave_creeper__j7sQ6Km2jSx5twCC.json b/data/packs/monsters.db/cave_creeper__j7sQ6Km2jSx5twCC.json index a5faf4fe..ba1a94b9 100644 --- a/data/packs/monsters.db/cave_creeper__j7sQ6Km2jSx5twCC.json +++ b/data/packs/monsters.db/cave_creeper__j7sQ6Km2jSx5twCC.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "climb", - "notes": "\n\t

      Chittering, green centipedes the size of horses. Their grasping tentacles are coated in a paralytic venom.

      \n\t

      \n\t

      AC 12, HP 18, ATK 1 bite +3 (1d6) and 1 tentacles +3 (1d8 + toxin), MV near (climb), S +2, D +2, C +0, I -3, W +1, Ch -3, AL N, LV 4

      \n\t

      Toxin. DC 12 CON or paralyzed 1d4 rounds.

      ", + "notes": "\n\t

      Chittering, green centipedes the size of horses. Their grasping tentacles are coated in a paralytic venom.

      \n\t

      \n\t

      AC 12, HP 18, ATK 1 bite +3 (1d6) and 1 tentacles +3 (1d8 + toxin), MV near (climb), S +2, D +2, C +0, I -3, W +1, Ch -3, AL N, LV 4

      \n\t

      Toxin. [[check 12 con]] or paralyzed 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/centipede__giant__W9n69R2FY4EIgBuQ.json b/data/packs/monsters.db/centipede__giant__W9n69R2FY4EIgBuQ.json index 8613d5b0..71614309 100644 --- a/data/packs/monsters.db/centipede__giant__W9n69R2FY4EIgBuQ.json +++ b/data/packs/monsters.db/centipede__giant__W9n69R2FY4EIgBuQ.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "climb", - "notes": "\n\t

      Blood-red, feathery centipedes the size of a human arm. Their bite injects a burning poison that cramps muscles.

      \n\t

      \n\t

      AC 11, HP 4, ATK 1 bite +1 (1d4 + poison), MV near (climb), S -3, D +1, C +0, I -4, W -3, Ch -4, AL N, LV 1

      \n\t

      Poison. DC 12 CON or paralyzed 1d4 rounds.

      ", + "notes": "\n\t

      Blood-red, feathery centipedes the size of a human arm. Their bite injects a burning poison that cramps muscles.

      \n\t

      \n\t

      AC 11, HP 4, ATK 1 bite +1 (1d4 + poison), MV near (climb), S -3, D +1, C +0, I -4, W -3, Ch -4, AL N, LV 1

      \n\t

      Poison. [[check 12 con]] or paralyzed 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/centipede__swarm__lcqq47H1YVF0ABnp.json b/data/packs/monsters.db/centipede__swarm__lcqq47H1YVF0ABnp.json index e4a7fdcf..f3e33882 100644 --- a/data/packs/monsters.db/centipede__swarm__lcqq47H1YVF0ABnp.json +++ b/data/packs/monsters.db/centipede__swarm__lcqq47H1YVF0ABnp.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "climb", - "notes": "\n\t

      A crawling mass of weaving, sinuous centipedes.

      \n\t

      \n\t

      AC 11, HP 18, ATK 3 bite +1 (1d4 + poison), MV near (climb), S -3, D +1, C +0, I -4, W -3, Ch -4, AL N, LV 4

      \n\t

      Poison. DC 12 CON or paralyzed 1d4 rounds.

      ", + "notes": "\n\t

      A crawling mass of weaving, sinuous centipedes.

      \n\t

      \n\t

      AC 11, HP 18, ATK 3 bite +1 (1d4 + poison), MV near (climb), S -3, D +1, C +0, I -4, W -3, Ch -4, AL N, LV 4

      \n\t

      Poison. [[check 12 con]] or paralyzed 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/charm__6YCyLoLyW57jRgrB.json b/data/packs/monsters.db/charm__6YCyLoLyW57jRgrB.json index 39d67bc4..97a24109 100644 --- a/data/packs/monsters.db/charm__6YCyLoLyW57jRgrB.json +++ b/data/packs/monsters.db/charm__6YCyLoLyW57jRgrB.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      One humanoid in near DC 15 CHA or bewitched by cubi for [[/r 1d6]] hours.

      ", + "description": "

      One humanoid in near [[check 15 cha]] or bewitched by cubi for [[/r 1d6]] hours.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/charm__NEI62ofA7ClbRoyM.json b/data/packs/monsters.db/charm__NEI62ofA7ClbRoyM.json index 46adbb41..8dc2f981 100644 --- a/data/packs/monsters.db/charm__NEI62ofA7ClbRoyM.json +++ b/data/packs/monsters.db/charm__NEI62ofA7ClbRoyM.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      One humanoid target who can see vampire within near, DC 15 CHA or under vampire's control for [[/r 1d4]] days.

      ", + "description": "

      One humanoid target who can see vampire within near, [[check 15 cha]] or under vampire's control for [[/r 1d4]] days.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/charm__O9alWxnUwP76u3cA.json b/data/packs/monsters.db/charm__O9alWxnUwP76u3cA.json index 620f7893..30fed289 100644 --- a/data/packs/monsters.db/charm__O9alWxnUwP76u3cA.json +++ b/data/packs/monsters.db/charm__O9alWxnUwP76u3cA.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      One humanoid target who can see Obe-Ixx within near, DC 15 CHA or under Obe-Ixx's control for [[/r 1d4]] days.

      ", + "description": "

      One humanoid target who can see Obe-Ixx within near, [[check 15 cha]] or under Obe-Ixx's control for [[/r 1d4]] days.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/charm__kOFFYAB50N6vLH8G.json b/data/packs/monsters.db/charm__kOFFYAB50N6vLH8G.json index 45b3e998..05adec04 100644 --- a/data/packs/monsters.db/charm__kOFFYAB50N6vLH8G.json +++ b/data/packs/monsters.db/charm__kOFFYAB50N6vLH8G.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Near, one creature, DC 14 CHA or friendship for [[/r 1d8]] days.

      ", + "description": "

      Near, one creature, [[check 14 cha]] or friendship for [[/r 1d8]] days.

      ", "predefinedEffects": "", "ranges": [ ], diff --git a/data/packs/monsters.db/charm__xii04KaH82Q3bOPv.json b/data/packs/monsters.db/charm__xii04KaH82Q3bOPv.json index 7e43195d..70a5d20d 100644 --- a/data/packs/monsters.db/charm__xii04KaH82Q3bOPv.json +++ b/data/packs/monsters.db/charm__xii04KaH82Q3bOPv.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Charm", "system": { - "description": "

      Near, one creature, DC 14 CHA or friendship for 1d8 days.

      ", + "description": "

      Near, one creature, [[check 14 cha]] or friendship for 1d8 days.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/chimera__5SaVYhtOSTOUcHCV.json b/data/packs/monsters.db/chimera__5SaVYhtOSTOUcHCV.json index e981dc9f..fcad4fe3 100644 --- a/data/packs/monsters.db/chimera__5SaVYhtOSTOUcHCV.json +++ b/data/packs/monsters.db/chimera__5SaVYhtOSTOUcHCV.json @@ -138,7 +138,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      A monstrous beast with a half-goat, half-lion body, wide dragon wings, and the heads of a goat, lion, and dragon.

      \n\t

      \n\t

      AC 16, HP 49, ATK 4 rend +7 (2d8) and 1 fire breath, MV double near (fly), S +5, D +4, C +4, I -3, W +2, Ch -1, AL C, LV 10

      \n\t

      Fire Breath. Fills a near-sized cube extending from chimera. DC 15 DEX or 4d6 damage.

      ", + "notes": "\n\t

      A monstrous beast with a half-goat, half-lion body, wide dragon wings, and the heads of a goat, lion, and dragon.

      \n\t

      \n\t

      AC 16, HP 49, ATK 4 rend +7 (2d8) and 1 fire breath, MV double near (fly), S +5, D +4, C +4, I -3, W +2, Ch -1, AL C, LV 10

      \n\t

      Fire Breath. Fills a near-sized cube extending from chimera. [[check 15 dex]] or 4d6 damage.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/chuul__4v8PY6yOUcQOTWWo.json b/data/packs/monsters.db/chuul__4v8PY6yOUcQOTWWo.json index af4ccf83..6b70ab5c 100644 --- a/data/packs/monsters.db/chuul__4v8PY6yOUcQOTWWo.json +++ b/data/packs/monsters.db/chuul__4v8PY6yOUcQOTWWo.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "swim", - "notes": "\n\t

      Brown, horse-sized lobster bugs with tentacles and pincers.

      \n\t

      \n\t

      AC 15, HP 25, ATK 2 pincer +4 (1d8 + grab), MV near (swim), S +3, D -1, C +3, I -1, W +1, Ch -2, AL C, LV 5

      \n\t

      Grab. DC 15 STR or held in pincer. DC 15 STR on turn to break free.

      ", + "notes": "\n\t

      Brown, horse-sized lobster bugs with tentacles and pincers.

      \n\t

      \n\t

      AC 15, HP 25, ATK 2 pincer +4 (1d8 + grab), MV near (swim), S +3, D -1, C +3, I -1, W +1, Ch -2, AL C, LV 5

      \n\t

      Grab. [[check 15 str]] or held in pincer. [[check 15 str]] on turn to break free.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/cloaker__SeY0lvD3U4pr6mXD.json b/data/packs/monsters.db/cloaker__SeY0lvD3U4pr6mXD.json index f6683f71..44b5ec0b 100644 --- a/data/packs/monsters.db/cloaker__SeY0lvD3U4pr6mXD.json +++ b/data/packs/monsters.db/cloaker__SeY0lvD3U4pr6mXD.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      A midnight blue manta ray with a bony tail and crescent-shaped maw above its belly. It swoops through deep, lightless caverns.

      \n\t

      \n\t

      AC 13, HP 28, ATK 3 lash +4 (1d8) or 1 screech, MV near (fly), S +2, D +3, C +1, I +1, W +1, Ch +0, AL C, LV 6

      \n\t

      Phantoms. 1/day, in place of attacks. Create 3 illusory duplicates that disappear when hit. Determine randomly if an attack hits cloaker or illusions.

      Screech. Enemies within double near DC 15 WIS or DISADV on attacks and checks 1d4 rounds.

      ", + "notes": "\n\t

      A midnight blue manta ray with a bony tail and crescent-shaped maw above its belly. It swoops through deep, lightless caverns.

      \n\t

      \n\t

      AC 13, HP 28, ATK 3 lash +4 (1d8) or 1 screech, MV near (fly), S +2, D +3, C +1, I +1, W +1, Ch +0, AL C, LV 6

      \n\t

      Phantoms. 1/day, in place of attacks. Create 3 illusory duplicates that disappear when hit. Determine randomly if an attack hits cloaker or illusions.

      Screech. Enemies within double near [[check 15 wis]] or DISADV on attacks and checks 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/cockatrice__xUxKG0CR6Elw1l7h.json b/data/packs/monsters.db/cockatrice__xUxKG0CR6Elw1l7h.json index 35df39bf..e3883820 100644 --- a/data/packs/monsters.db/cockatrice__xUxKG0CR6Elw1l7h.json +++ b/data/packs/monsters.db/cockatrice__xUxKG0CR6Elw1l7h.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      A molting, lizard-chicken hybrid with a crimson, razorlike crest.

      \n\t

      \n\t

      AC 11, HP 14, ATK 1 bite +1 (1d4 + petrify), MV near (fly), S -2, D +1, C +1, I -3, W +1, Ch -3, AL N, LV 3

      \n\t

      Petrify. DC 12 CON or petrified.

      ", + "notes": "\n\t

      A molting, lizard-chicken hybrid with a crimson, razorlike crest.

      \n\t

      \n\t

      AC 11, HP 14, ATK 1 bite +1 (1d4 + petrify), MV near (fly), S -2, D +1, C +1, I -3, W +1, Ch -3, AL N, LV 3

      \n\t

      Petrify. [[check 12 con]] or petrified.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/command__UoZZ5KKZ8UdPcaM5.json b/data/packs/monsters.db/command__UoZZ5KKZ8UdPcaM5.json index 4a5e0006..1a107617 100644 --- a/data/packs/monsters.db/command__UoZZ5KKZ8UdPcaM5.json +++ b/data/packs/monsters.db/command__UoZZ5KKZ8UdPcaM5.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Command", "system": { - "description": "

      DC 18 CHA to resist an archangel's command.

      ", + "description": "

      [[check 18 cha]] to resist an archangel's command.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/couatl__ibQF9DMmu8sTLz4B.json b/data/packs/monsters.db/couatl__ibQF9DMmu8sTLz4B.json index 4732f2e6..9e6ae3ea 100644 --- a/data/packs/monsters.db/couatl__ibQF9DMmu8sTLz4B.json +++ b/data/packs/monsters.db/couatl__ibQF9DMmu8sTLz4B.json @@ -140,7 +140,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      A human-sized snake with scales made of jewels and a corona of iridescent feathers.

      \n\t

      \n\t

      AC 16, HP 42, ATK 3 bite +6 (2d6 + poison), MV near (fly), S +2, D +3, C +2, I +4, W +4, Ch +5, AL L, LV 9

      \n\t

      Change Shape. In place of attacks, transform into any similarly-sized creature.

      Poison. DC 15 CON or fall into natural, deep sleep for 1d8 hours.

      Restore. In place of attacks, touch one creature to remove a curse, affliction, or heal 3d8 HP.

      ", + "notes": "\n\t

      A human-sized snake with scales made of jewels and a corona of iridescent feathers.

      \n\t

      \n\t

      AC 16, HP 42, ATK 3 bite +6 (2d6 + poison), MV near (fly), S +2, D +3, C +2, I +4, W +4, Ch +5, AL L, LV 9

      \n\t

      Change Shape. In place of attacks, transform into any similarly-sized creature.

      Poison. [[check 15 con]] or fall into natural, deep sleep for 1d8 hours.

      Restore. In place of attacks, touch one creature to remove a curse, affliction, or heal 3d8 HP.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/crab__giant__2KRkhIG0f9YAnUHb.json b/data/packs/monsters.db/crab__giant__2KRkhIG0f9YAnUHb.json index e465e958..6fd92bc9 100644 --- a/data/packs/monsters.db/crab__giant__2KRkhIG0f9YAnUHb.json +++ b/data/packs/monsters.db/crab__giant__2KRkhIG0f9YAnUHb.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "swim", - "notes": "\n\t

      A wagon-sized, armored crab with two crushing pincers.

      \n\t

      \n\t

      AC 15, HP 24, ATK 2 pincer +4 (1d8 + crush), MV near (swim), S +3, D +0, C +2, I -3, W +0, Ch -3, AL N, LV 5

      \n\t

      Crush. DC 15 STR or target takes 1d8 damage.

      ", + "notes": "\n\t

      A wagon-sized, armored crab with two crushing pincers.

      \n\t

      \n\t

      AC 15, HP 24, ATK 2 pincer +4 (1d8 + crush), MV near (swim), S +3, D +0, C +2, I -3, W +0, Ch -3, AL N, LV 5

      \n\t

      Crush. [[check 15 str]] or target takes 1d8 damage.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/crush__TOovftdtF5yJJyUx.json b/data/packs/monsters.db/crush__TOovftdtF5yJJyUx.json index 17b7c00c..8bb58ac5 100644 --- a/data/packs/monsters.db/crush__TOovftdtF5yJJyUx.json +++ b/data/packs/monsters.db/crush__TOovftdtF5yJJyUx.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Crush", "system": { - "description": "

      DC 15 STR or target takes [[/r 1d8]] damage.

      ", + "description": "

      [[check 15 str]] or target takes [[/r 1d8]] damage.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/crush__XJljWfi71QkE1a00.json b/data/packs/monsters.db/crush__XJljWfi71QkE1a00.json index c5f2ff79..c97e92ac 100644 --- a/data/packs/monsters.db/crush__XJljWfi71QkE1a00.json +++ b/data/packs/monsters.db/crush__XJljWfi71QkE1a00.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Crush", "system": { - "description": "

      DC 15 STR or target takes [[/r 2d8]] damage.

      ", + "description": "

      [[check 15 str]] or target takes [[/r 2d8]] damage.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/curse__GlEUmXQMesA6DeWE.json b/data/packs/monsters.db/curse__GlEUmXQMesA6DeWE.json index 58c92f8c..872e9efe 100644 --- a/data/packs/monsters.db/curse__GlEUmXQMesA6DeWE.json +++ b/data/packs/monsters.db/curse__GlEUmXQMesA6DeWE.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Curse", "system": { - "description": "

      DC 15 CON or target gains a magical curse, turning into a deep one over 2d10 days

      ", + "description": "

      [[check 15 con]] or target gains a magical curse, turning into a deep one over 2d10 days

      ", "magicItem": false, "predefinedEffects": "", "source": { diff --git a/data/packs/monsters.db/curse__mddDFLdkX8qzSfWS.json b/data/packs/monsters.db/curse__mddDFLdkX8qzSfWS.json index 2b0ce778..14a8d711 100644 --- a/data/packs/monsters.db/curse__mddDFLdkX8qzSfWS.json +++ b/data/packs/monsters.db/curse__mddDFLdkX8qzSfWS.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Curse", "system": { - "description": "

      DC 15 CON or target gains a magical curse, turning into a deep one over [[/r 2d10]] days.

      ", + "description": "

      [[check 15 con]] or target gains a magical curse, turning into a deep one over [[/r 2d10]] days.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/curse__tu5XMDakF2Ug0MLC.json b/data/packs/monsters.db/curse__tu5XMDakF2Ug0MLC.json index 68a9c546..dddce382 100644 --- a/data/packs/monsters.db/curse__tu5XMDakF2Ug0MLC.json +++ b/data/packs/monsters.db/curse__tu5XMDakF2Ug0MLC.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": null }, - "description": "

      DC 15 CON or target gains a magical curse, turning into a deep one over 2d10 days

      ", + "description": "

      [[check 15 con]] or target gains a magical curse, turning into a deep one over 2d10 days

      ", "predefinedEffects": "", "ranges": [ "close" diff --git a/data/packs/monsters.db/death_bolt__53KWLSWRCJO2LXWj.json b/data/packs/monsters.db/death_bolt__53KWLSWRCJO2LXWj.json index bb9d6233..36bcd5e9 100644 --- a/data/packs/monsters.db/death_bolt__53KWLSWRCJO2LXWj.json +++ b/data/packs/monsters.db/death_bolt__53KWLSWRCJO2LXWj.json @@ -8,7 +8,7 @@ "name": "Death Bolt", "system": { "dc": 15, - "description": "

      One target of LV 9 or less within near DC 15 CON or go to 0 HP.

      ", + "description": "

      One target of LV 9 or less within near [[check 15 con]] or go to 0 HP.

      ", "duration": { "type": "instant", "value": -1 diff --git a/data/packs/monsters.db/demon__balor__ju93VWtuoi9BRX5F.json b/data/packs/monsters.db/demon__balor__ju93VWtuoi9BRX5F.json index 27e4d77d..c7d87f94 100644 --- a/data/packs/monsters.db/demon__balor__ju93VWtuoi9BRX5F.json +++ b/data/packs/monsters.db/demon__balor__ju93VWtuoi9BRX5F.json @@ -141,7 +141,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      Colossal, horned bat-beasts wreathed in the flames of hell itself. Their mighty swords and cracking whips of fire can slice through stone.

      \n\t

      \n\t

      AC 19, HP 77, ATK 3 greatsword +10 (2d12 + hellfire) and 1 fire whip (near) +10 (2d6 + grab), MV double near (fly), S +6, D +2, C +5, I +4, W +3, Ch +4, AL C, LV 16

      \n\t

      Impervious. Fire immune. Only damaged by magical sources.

      Grab. DC 18 STR or target bound in whip. 2d6 damage per round held, DC 18 STR on turn to break free. In place of fire whip attack, balor can fling a grabbed target double near on its turn.

      Hellfire. DC 18 DEX or 2d8 damage per round until flames extinguished.

      ", + "notes": "\n\t

      Colossal, horned bat-beasts wreathed in the flames of hell itself. Their mighty swords and cracking whips of fire can slice through stone.

      \n\t

      \n\t

      AC 19, HP 77, ATK 3 greatsword +10 (2d12 + hellfire) and 1 fire whip (near) +10 (2d6 + grab), MV double near (fly), S +6, D +2, C +5, I +4, W +3, Ch +4, AL C, LV 16

      \n\t

      Impervious. Fire immune. Only damaged by magical sources.

      Grab. [[check 18 str]] or target bound in whip. 2d6 damage per round held, [[check 18 str]] on turn to break free. In place of fire whip attack, balor can fling a grabbed target double near on its turn.

      Hellfire. [[check 18 dex]] or 2d8 damage per round until flames extinguished.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/demon__dretch__UzRHO1MCMmYDSVzo.json b/data/packs/monsters.db/demon__dretch__UzRHO1MCMmYDSVzo.json index fd283ed4..f4bb1ef5 100644 --- a/data/packs/monsters.db/demon__dretch__UzRHO1MCMmYDSVzo.json +++ b/data/packs/monsters.db/demon__dretch__UzRHO1MCMmYDSVzo.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Green, pig-faced demons with thick claws and an oily stench.

      \n\t

      \n\t

      AC 12, HP 11, ATK 1 claw +2 (1d6) or 1 gas, MV near, S +2, D +0, C +2, I -2, W -1, Ch -3, AL C, LV 2

      \n\t

      Gas. All in near DC 12 CON or blinded for 1d4 rounds.

      ", + "notes": "\n\t

      Green, pig-faced demons with thick claws and an oily stench.

      \n\t

      \n\t

      AC 12, HP 11, ATK 1 claw +2 (1d6) or 1 gas, MV near, S +2, D +0, C +2, I -2, W -1, Ch -3, AL C, LV 2

      \n\t

      Gas. All in near [[check 12 con]] or blinded for 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/demon__glabrezu__CuwjaziXY6YoAg7O.json b/data/packs/monsters.db/demon__glabrezu__CuwjaziXY6YoAg7O.json index a9960337..a01637d0 100644 --- a/data/packs/monsters.db/demon__glabrezu__CuwjaziXY6YoAg7O.json +++ b/data/packs/monsters.db/demon__glabrezu__CuwjaziXY6YoAg7O.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Horse-headed, fanged creatures who walk upright and have four arms; two shriveled, and two ending in hulking pincers.

      \n\t

      \n\t

      AC 15, HP 40, ATK 2 pincer +7 (2d8 + crush), MV near, S +4, D +1, C +4, I +3, W +2, Ch +2, AL C, LV 8

      \n\t

      Crush. DC 15 STR or target takes 2d8 damage.

      ", + "notes": "\n\t

      Horse-headed, fanged creatures who walk upright and have four arms; two shriveled, and two ending in hulking pincers.

      \n\t

      \n\t

      AC 15, HP 40, ATK 2 pincer +7 (2d8 + crush), MV near, S +4, D +1, C +4, I +3, W +2, Ch +2, AL C, LV 8

      \n\t

      Crush. [[check 15 str]] or target takes 2d8 damage.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/demon__vrock__0Q9d1621wpUEsuFC.json b/data/packs/monsters.db/demon__vrock__0Q9d1621wpUEsuFC.json index a54f32af..40a3bb8b 100644 --- a/data/packs/monsters.db/demon__vrock__0Q9d1621wpUEsuFC.json +++ b/data/packs/monsters.db/demon__vrock__0Q9d1621wpUEsuFC.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      Wagon-sized, filthy vultures with four limbs, midnight-blue skin, and a rash of mangy feathers.

      \n\t

      \n\t

      AC 14, HP 24, ATK 2 talons +4 (1d8) or 1 screech, MV near (fly), S +2, D +2, C +2, I -1, W +1, Ch +0, AL C, LV 5

      \n\t

      Carrion Mist. Each time vrock is hit, 3:6 chance of carrion mist in near-sized cube centered on vrock. All enemies DC 15 CON or violent vomiting 1d4 rounds.

      Screech. All enemies in double near DC 12 WIS or DISADV on checks and attacks for 1d4 rounds.

      ", + "notes": "\n\t

      Wagon-sized, filthy vultures with four limbs, midnight-blue skin, and a rash of mangy feathers.

      \n\t

      \n\t

      AC 14, HP 24, ATK 2 talons +4 (1d8) or 1 screech, MV near (fly), S +2, D +2, C +2, I -1, W +1, Ch +0, AL C, LV 5

      \n\t

      Carrion Mist. Each time vrock is hit, 3:6 chance of carrion mist in near-sized cube centered on vrock. All enemies [[check 15 con]] or violent vomiting 1d4 rounds.

      Screech. All enemies in double near [[check 12 wis]] or DISADV on checks and attacks for 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/devil__barbed__n4liAI4qBGY4orA4.json b/data/packs/monsters.db/devil__barbed__n4liAI4qBGY4orA4.json index 5efa22ae..5d55955a 100644 --- a/data/packs/monsters.db/devil__barbed__n4liAI4qBGY4orA4.json +++ b/data/packs/monsters.db/devil__barbed__n4liAI4qBGY4orA4.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Lanky, green-mottled fiends bristling with hooked spines.

      \n\t

      \n\t

      AC 13, HP 14, ATK 2 spine (near) +3 (1d6 + barb) or 1 fire blast (far) +3 (1d8), MV near, S +2, D +3, C +1, I +1, W +1, Ch +1, AL C, LV 3

      \n\t

      Barb. Each spine sticks, dealing 1d4 damage each round. DC 12 STR check on turn to remove.

      ", + "notes": "\n\t

      Lanky, green-mottled fiends bristling with hooked spines.

      \n\t

      \n\t

      AC 13, HP 14, ATK 2 spine (near) +3 (1d6 + barb) or 1 fire blast (far) +3 (1d8), MV near, S +2, D +3, C +1, I +1, W +1, Ch +1, AL C, LV 3

      \n\t

      Barb. Each spine sticks, dealing 1d4 damage each round. [[check 12 str]] check on turn to remove.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/devil__cubi__eytIJSxijnY4VZ3U.json b/data/packs/monsters.db/devil__cubi__eytIJSxijnY4VZ3U.json index 90e992ef..9a50bc59 100644 --- a/data/packs/monsters.db/devil__cubi__eytIJSxijnY4VZ3U.json +++ b/data/packs/monsters.db/devil__cubi__eytIJSxijnY4VZ3U.json @@ -140,7 +140,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      Entrancing humanoids with bat wings and devilish charm.

      \n\t

      \n\t

      AC 14, HP 29, ATK 1 kiss +4 (1d6 + drain) or 1 charm, MV near (fly), S +2, D +4, C +2, I +3, W +2, Ch +5, AL C, LV 6

      \n\t

      Change Shape. In place of attacks, transform into any similarly-sized humanoid.

      Charm. One humanoid in near DC 15 CHA or bewitched by cubi for 1d6 hours.

      Drain. The target takes 1d6 WIS damage. A target reduced to 0 WIS this way swears its soul to an archdevil.

      ", + "notes": "\n\t

      Entrancing humanoids with bat wings and devilish charm.

      \n\t

      \n\t

      AC 14, HP 29, ATK 1 kiss +4 (1d6 + drain) or 1 charm, MV near (fly), S +2, D +4, C +2, I +3, W +2, Ch +5, AL C, LV 6

      \n\t

      Change Shape. In place of attacks, transform into any similarly-sized humanoid.

      Charm. One humanoid in near [[check 15 cha]] or bewitched by cubi for 1d6 hours.

      Drain. The target takes 1d6 WIS damage. A target reduced to 0 WIS this way swears its soul to an archdevil.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/devil__erinyes__8Lma2TIrsJc0IJzV.json b/data/packs/monsters.db/devil__erinyes__8Lma2TIrsJc0IJzV.json index f681a135..0069cbd7 100644 --- a/data/packs/monsters.db/devil__erinyes__8Lma2TIrsJc0IJzV.json +++ b/data/packs/monsters.db/devil__erinyes__8Lma2TIrsJc0IJzV.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      Raven-winged, resplendent beings in polished, black armor and helms with curved horns.

      \n\t

      \n\t

      AC 17 ( +1 plate mail ), HP 43, ATK 3 greatsword +8 (1d12) or 2 longbow (far) +8 (1d8 + poison), MV double near (fly), S +4, D +4, C +3, I +4, W +4, Ch +5, AL C, LV 9

      \n\t

      Poison. DC 15 CON or target's eyes go jet black and it turns on its allies for 1d4 rounds. DC 15 WIS on turn to end effect.

      ", + "notes": "\n\t

      Raven-winged, resplendent beings in polished, black armor and helms with curved horns.

      \n\t

      \n\t

      AC 17 ( +1 plate mail ), HP 43, ATK 3 greatsword +8 (1d12) or 2 longbow (far) +8 (1d8 + poison), MV double near (fly), S +4, D +4, C +3, I +4, W +4, Ch +5, AL C, LV 9

      \n\t

      Poison. [[check 15 con]] or target's eyes go jet black and it turns on its allies for 1d4 rounds. [[check 15 wis]] on turn to end effect.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/devil__imp__qhy4sxYqEkl171L5.json b/data/packs/monsters.db/devil__imp__qhy4sxYqEkl171L5.json index 344513b8..448a1bc0 100644 --- a/data/packs/monsters.db/devil__imp__qhy4sxYqEkl171L5.json +++ b/data/packs/monsters.db/devil__imp__qhy4sxYqEkl171L5.json @@ -140,7 +140,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      Cat-sized, red devils with oversized wings and tail, tiny horns, and cowardly demeanors.

      \n\t

      \n\t

      AC 13, HP 9, ATK 1 stinger +3 (1d4 + poison), MV near (fly), S -2, D +3, C +0, I +1, W +0, Ch +2, AL C, LV 2

      \n\t

      Impervious. Fire immune.

      Contract. Can grant mighty boons and patronage on behalf of an archdevil in exchange for a sworn soul. ADV on related Charisma checks.

      Poison. DC 12 CON or fitful sleep for 1d4 hours.

      ", + "notes": "\n\t

      Cat-sized, red devils with oversized wings and tail, tiny horns, and cowardly demeanors.

      \n\t

      \n\t

      AC 13, HP 9, ATK 1 stinger +3 (1d4 + poison), MV near (fly), S -2, D +3, C +0, I +1, W +0, Ch +2, AL C, LV 2

      \n\t

      Impervious. Fire immune.

      Contract. Can grant mighty boons and patronage on behalf of an archdevil in exchange for a sworn soul. ADV on related Charisma checks.

      Poison. [[check 12 con]] or fitful sleep for 1d4 hours.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/disease__3VOXkeJzY2reIEhe.json b/data/packs/monsters.db/disease__3VOXkeJzY2reIEhe.json index bb787efe..d4c07339 100644 --- a/data/packs/monsters.db/disease__3VOXkeJzY2reIEhe.json +++ b/data/packs/monsters.db/disease__3VOXkeJzY2reIEhe.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Disease", "system": { - "description": "

      DC 9 CON or [[/r 1d4]] CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", + "description": "

      [[check 9 con]] or [[/r 1d4]] CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/disease__AZNEMB8L7e2rrkke.json b/data/packs/monsters.db/disease__AZNEMB8L7e2rrkke.json index 1990373f..bc535eab 100644 --- a/data/packs/monsters.db/disease__AZNEMB8L7e2rrkke.json +++ b/data/packs/monsters.db/disease__AZNEMB8L7e2rrkke.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Disease", "system": { - "description": "

      DC 9 CON or [[/r 1d4]] CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", + "description": "

      [[check 9 con]] or [[/r 1d4]] CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/disease__I287MxSjRkphGQE9.json b/data/packs/monsters.db/disease__I287MxSjRkphGQE9.json index 5dc4c81a..e4b65780 100644 --- a/data/packs/monsters.db/disease__I287MxSjRkphGQE9.json +++ b/data/packs/monsters.db/disease__I287MxSjRkphGQE9.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Disease", "system": { - "description": "

      DC 12 CON or [[/r 1d4]] CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", + "description": "

      [[check 12 con]] or [[/r 1d4]] CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/disease__koPxZQBcecCwEm1z.json b/data/packs/monsters.db/disease__koPxZQBcecCwEm1z.json index 39ade63a..292dee3e 100644 --- a/data/packs/monsters.db/disease__koPxZQBcecCwEm1z.json +++ b/data/packs/monsters.db/disease__koPxZQBcecCwEm1z.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Disease", "system": { - "description": "

      DC 15 CON or infected. DC 15 CON each day or lose [[/r 1d6]] HP (can't heal). Ends on success.

      ", + "description": "

      [[check 15 con]] or infected. [[check 15 con]] each day or lose [[/r 1d6]] HP (can't heal). Ends on success.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/disease__ripTEs1d39eR75u3.json b/data/packs/monsters.db/disease__ripTEs1d39eR75u3.json index e97fa0e3..6e8b5188 100644 --- a/data/packs/monsters.db/disease__ripTEs1d39eR75u3.json +++ b/data/packs/monsters.db/disease__ripTEs1d39eR75u3.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Disease", "system": { - "description": "

      DC 12 CON or 1d4 CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", + "description": "

      [[check 12 con]] or 1d4 CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/disease__uLy11VqjEV8UmaFR.json b/data/packs/monsters.db/disease__uLy11VqjEV8UmaFR.json index bcf3d553..263a4f14 100644 --- a/data/packs/monsters.db/disease__uLy11VqjEV8UmaFR.json +++ b/data/packs/monsters.db/disease__uLy11VqjEV8UmaFR.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Disease", "system": { - "description": "

      DC 12 CON or [[/r 1d4]] CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", + "description": "

      [[check 12 con]] or [[/r 1d4]] CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/djinni__ytftI0motwEnF29v.json b/data/packs/monsters.db/djinni__ytftI0motwEnF29v.json index fd58a0cc..5e210610 100644 --- a/data/packs/monsters.db/djinni__ytftI0motwEnF29v.json +++ b/data/packs/monsters.db/djinni__ytftI0motwEnF29v.json @@ -140,7 +140,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      Azure-blue, jovial humanoids made of air and roiling wind. Infused with potent magic.

      \n\t

      \n\t

      AC 14, HP 48, ATK 3 scimitar +7 (1d12) or 1 whirlwind, MV double near (fly), S +4, D +4, C +3, I +4, W +3, Ch +3, AL N, LV 10

      \n\t

      Impervious. Only damaged by magical sources.

      Whirlwind. Transform into a lashing tornado. All enemies within near DC 18 DEX or thrown 2d100 feet in a random direction.

      Wish. Cast wish once a week for a mortal, no spellcasting check.

      ", + "notes": "\n\t

      Azure-blue, jovial humanoids made of air and roiling wind. Infused with potent magic.

      \n\t

      \n\t

      AC 14, HP 48, ATK 3 scimitar +7 (1d12) or 1 whirlwind, MV double near (fly), S +4, D +4, C +3, I +4, W +3, Ch +3, AL N, LV 10

      \n\t

      Impervious. Only damaged by magical sources.

      Whirlwind. Transform into a lashing tornado. All enemies within near [[check 18 dex]] or thrown 2d100 feet in a random direction.

      Wish. Cast wish once a week for a mortal, no spellcasting check.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/dragon__desert__3ao87kQaYih26b9q.json b/data/packs/monsters.db/dragon__desert__3ao87kQaYih26b9q.json index 2eb1281f..8bacf8b8 100644 --- a/data/packs/monsters.db/dragon__desert__3ao87kQaYih26b9q.json +++ b/data/packs/monsters.db/dragon__desert__3ao87kQaYih26b9q.json @@ -140,7 +140,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      The smell of ozone precedes this desert-dwelling dragon. Its dazzling scales of brass and lapis lazuli shimmer in the baking heat.

      \n\t

      \n\t

      AC 17, HP 61, ATK 3 rend +9 (2d10) or 1 lightning breath, MV double near (fly), S +5, D +3, C +3, I +4, W +5, Ch +5, AL L, LV 13

      \n\t

      Stormblood. Electricity immune.

      Lightning Breath. A straight line (5' wide) extending double near from dragon. DC 15 DEX or 4d8 damage (DISADV on check if wearing metal armor).

      Mirage. 1/day, in place of attacks. Create 3 illusory duplicates that disappear when hit. Determine randomly if an attack hits dragon or illusions.

      ", + "notes": "\n\t

      The smell of ozone precedes this desert-dwelling dragon. Its dazzling scales of brass and lapis lazuli shimmer in the baking heat.

      \n\t

      \n\t

      AC 17, HP 61, ATK 3 rend +9 (2d10) or 1 lightning breath, MV double near (fly), S +5, D +3, C +3, I +4, W +5, Ch +5, AL L, LV 13

      \n\t

      Stormblood. Electricity immune.

      Lightning Breath. A straight line (5' wide) extending double near from dragon. [[check 15 dex]] or 4d8 damage (DISADV on check if wearing metal armor).

      Mirage. 1/day, in place of attacks. Create 3 illusory duplicates that disappear when hit. Determine randomly if an attack hits dragon or illusions.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/dragon__fire__8nKQ8hgoWY7vZHb4.json b/data/packs/monsters.db/dragon__fire__8nKQ8hgoWY7vZHb4.json index 6f63c3d8..0a2aa728 100644 --- a/data/packs/monsters.db/dragon__fire__8nKQ8hgoWY7vZHb4.json +++ b/data/packs/monsters.db/dragon__fire__8nKQ8hgoWY7vZHb4.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      Blood-red scales cover the hide of this mighty, volcanic wyrm. Leaping flames glow at the back of its throat.

      \n\t

      \n\t

      AC 18, HP 80, ATK 4 rend +11 (2d12) or 1 fire breath, MV double near (fly), S +6, D +5, C +4, I +4, W +4, Ch +5, AL C, LV 17

      \n\t

      Fireblood. Fire immune.

      Fire Breath. Fills a double near- sized cube extending from dragon. DC 15 DEX or 6d10 damage.

      ", + "notes": "\n\t

      Blood-red scales cover the hide of this mighty, volcanic wyrm. Leaping flames glow at the back of its throat.

      \n\t

      \n\t

      AC 18, HP 80, ATK 4 rend +11 (2d12) or 1 fire breath, MV double near (fly), S +6, D +5, C +4, I +4, W +4, Ch +5, AL C, LV 17

      \n\t

      Fireblood. Fire immune.

      Fire Breath. Fills a double near- sized cube extending from dragon. [[check 15 dex]] or 6d10 damage.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/dragon__forest__GGiSjGtAWFwFT81z.json b/data/packs/monsters.db/dragon__forest__GGiSjGtAWFwFT81z.json index 524fce67..5c232226 100644 --- a/data/packs/monsters.db/dragon__forest__GGiSjGtAWFwFT81z.json +++ b/data/packs/monsters.db/dragon__forest__GGiSjGtAWFwFT81z.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      The smell of wet loam follows this dragon. Its jade scales bristle with barbed thorns.

      \n\t

      \n\t

      AC 16, HP 58, ATK 3 rend +8 (2d8) or 1 poison breath, MV double near (fly), S +4, D +3, C +4, I +3, W +3, Ch +4, AL N, LV 12

      \n\t

      Animate Plants. 1/day, in place of attacks. Vines grab at all enemies within double near of dragon. DC 15 DEX or unable to move 1d4 rounds.

      Poison Breath. Fills a near-sized cube extending from dragon. DC 15 CON or 3d8 damage.

      ", + "notes": "\n\t

      The smell of wet loam follows this dragon. Its jade scales bristle with barbed thorns.

      \n\t

      \n\t

      AC 16, HP 58, ATK 3 rend +8 (2d8) or 1 poison breath, MV double near (fly), S +4, D +3, C +4, I +3, W +3, Ch +4, AL N, LV 12

      \n\t

      Animate Plants. 1/day, in place of attacks. Vines grab at all enemies within double near of dragon. [[check 15 dex]] or unable to move 1d4 rounds.

      Poison Breath. Fills a near-sized cube extending from dragon. [[check 15 con]] or 3d8 damage.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/dragon__frost__CUMRox407hfN6Ho1.json b/data/packs/monsters.db/dragon__frost__CUMRox407hfN6Ho1.json index 43639d86..710f211f 100644 --- a/data/packs/monsters.db/dragon__frost__CUMRox407hfN6Ho1.json +++ b/data/packs/monsters.db/dragon__frost__CUMRox407hfN6Ho1.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      Prismatic ice lines the horns, spines, and wings of this pearly dragon. Clouds of steam hiss from its ice-rimed jaws.

      \n\t

      \n\t

      AC 17, HP 68, ATK 4 rend +9 (2d10) or 1 ice breath, MV double near (fly), S +4, D +3, C +5, I +3, W +4, Ch +3, AL N, LV 14

      \n\t

      Frostblood. Cold immune.

      Ice Breath. Fills a double near-sized cube extending from dragon. DC 15 DEX or 4d8 damage and frozen for 1 round.

      ", + "notes": "\n\t

      Prismatic ice lines the horns, spines, and wings of this pearly dragon. Clouds of steam hiss from its ice-rimed jaws.

      \n\t

      \n\t

      AC 17, HP 68, ATK 4 rend +9 (2d10) or 1 ice breath, MV double near (fly), S +4, D +3, C +5, I +3, W +4, Ch +3, AL N, LV 14

      \n\t

      Frostblood. Cold immune.

      Ice Breath. Fills a double near-sized cube extending from dragon. [[check 15 dex]] or 4d8 damage and frozen for 1 round.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/dragon__sea__wGmyKKVD5P4oE4RD.json b/data/packs/monsters.db/dragon__sea__wGmyKKVD5P4oE4RD.json index 85bcb7db..7a4f257f 100644 --- a/data/packs/monsters.db/dragon__sea__wGmyKKVD5P4oE4RD.json +++ b/data/packs/monsters.db/dragon__sea__wGmyKKVD5P4oE4RD.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "fly, swim", - "notes": "\n\t

      A warm sea breeze blows around this amphibious, gold- scaled wyrm. A beard of tendrils covers its snout, and a blue mane billows along its neck.

      \n\t

      \n\t

      AC 17, HP 76, ATK 4 rend +10 (2d10) or 1 steam breath or 1 water spout, MV double near (fly, swim), S +5, D +6, C +4, I +4, W +5, Ch +5, AL L, LV 16

      \n\t

      Steam Breath . Fills a double near-sized cube extending from dragon. DC 15 DEX or 4d12 damage.

      Water Spout. Fills a near-sized cube within far. DC 15 STR or creatures inside flung 2d100 feet in a random direction.

      ", + "notes": "\n\t

      A warm sea breeze blows around this amphibious, gold- scaled wyrm. A beard of tendrils covers its snout, and a blue mane billows along its neck.

      \n\t

      \n\t

      AC 17, HP 76, ATK 4 rend +10 (2d10) or 1 steam breath or 1 water spout, MV double near (fly, swim), S +5, D +6, C +4, I +4, W +5, Ch +5, AL L, LV 16

      \n\t

      Steam Breath . Fills a double near-sized cube extending from dragon. [[check 15 dex]] or 4d12 damage.

      Water Spout. Fills a near-sized cube within far. [[check 15 str]] or creatures inside flung 2d100 feet in a random direction.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/dragon__swamp__KKc8fESqPDECz0bL.json b/data/packs/monsters.db/dragon__swamp__KKc8fESqPDECz0bL.json index 7c62064d..1566a425 100644 --- a/data/packs/monsters.db/dragon__swamp__KKc8fESqPDECz0bL.json +++ b/data/packs/monsters.db/dragon__swamp__KKc8fESqPDECz0bL.json @@ -138,7 +138,7 @@ }, "move": "doubleNear", "moveNote": "burrow, swim", - "notes": "\n\t

      This black, wingless beast slithers through dank swamps.

      \n\t

      \n\t

      AC 16, HP 58, ATK 3 rend +8 (2d10) or 1 smog breath, MV double near (burrow, swim), S +5, D +3, C +4, I +4, W +3, Ch +3, AL C, LV 12

      \n\t

      Smog Breath. Fills a near-sized cube extending from dragon. DC 15 CON or 2d10 damage and blinded for 1 round.

      ", + "notes": "\n\t

      This black, wingless beast slithers through dank swamps.

      \n\t

      \n\t

      AC 16, HP 58, ATK 3 rend +8 (2d10) or 1 smog breath, MV double near (burrow, swim), S +5, D +3, C +4, I +4, W +3, Ch +3, AL C, LV 12

      \n\t

      Smog Breath. Fills a near-sized cube extending from dragon. [[check 15 con]] or 2d10 damage and blinded for 1 round.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/drink_pain__QrykkJoOY9SDNJTu.json b/data/packs/monsters.db/drink_pain__QrykkJoOY9SDNJTu.json index 175dc088..5bf5c629 100644 --- a/data/packs/monsters.db/drink_pain__QrykkJoOY9SDNJTu.json +++ b/data/packs/monsters.db/drink_pain__QrykkJoOY9SDNJTu.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Near range. DC 12 CHA to deal [[/r 2d4]] damage to a creature; regain that many HP.

      ", + "description": "

      Near range. [[check 12 cha]] to deal [[/r 2d4]] damage to a creature; regain that many HP.

      ", "predefinedEffects": "", "ranges": [ ], diff --git a/data/packs/monsters.db/drow__OQKt55SQZZUZhlNq.json b/data/packs/monsters.db/drow__OQKt55SQZZUZhlNq.json index ba3ae715..e2af6b9d 100644 --- a/data/packs/monsters.db/drow__OQKt55SQZZUZhlNq.json +++ b/data/packs/monsters.db/drow__OQKt55SQZZUZhlNq.json @@ -140,7 +140,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A graceful, shadowy elf that pounces like a spider.

      \n\t

      \n\t

      AC 16 (mithral chainmail), HP 9, ATK 1 poison dart (near) +3 (1d4 + poison) or 1 longsword +1 (1d8), MV near, S +0, D +3, C +0, I +1, W +1, Ch +1, AL C, LV 2

      \n\t

      Poison. DC 15 CON or sleep.

      Sunblind. Blinded in bright light.

      ", + "notes": "\n\t

      A graceful, shadowy elf that pounces like a spider.

      \n\t

      \n\t

      AC 16 (mithral chainmail), HP 9, ATK 1 poison dart (near) +3 (1d4 + poison) or 1 longsword +1 (1d8), MV near, S +0, D +3, C +0, I +1, W +1, Ch +1, AL C, LV 2

      \n\t

      Poison. [[check 15 con]] or sleep.

      Sunblind. Blinded in bright light.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/drow__drider__DttbFgMrxQulVKEf.json b/data/packs/monsters.db/drow__drider__DttbFgMrxQulVKEf.json index f3d65e57..7c216f7d 100644 --- a/data/packs/monsters.db/drow__drider__DttbFgMrxQulVKEf.json +++ b/data/packs/monsters.db/drow__drider__DttbFgMrxQulVKEf.json @@ -140,7 +140,7 @@ }, "move": "near", "moveNote": "climb", - "notes": "\n\t

      A monstrosity with the body of a giant spider and torso of a drow.

      \n\t

      \n\t

      AC 16 (mithral chainmail), HP 29, ATK 3 longsword +3 (1d8) or 2 longbow (far) +3 (1d8 + poison), MV near (climb), S +3, D +3, C +2, I +2, W +2, Ch +0, AL C, LV 6

      \n\t

      Poison. DC 15 CON or paralyzed 1d4 rounds.

      Sunblind. Blinded in bright light.

      ", + "notes": "\n\t

      A monstrosity with the body of a giant spider and torso of a drow.

      \n\t

      \n\t

      AC 16 (mithral chainmail), HP 29, ATK 3 longsword +3 (1d8) or 2 longbow (far) +3 (1d8 + poison), MV near (climb), S +3, D +3, C +2, I +2, W +2, Ch +0, AL C, LV 6

      \n\t

      Poison. [[check 15 con]] or paralyzed 1d4 rounds.

      Sunblind. Blinded in bright light.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/drow__priestess__mLujryShxJUk5Jys.json b/data/packs/monsters.db/drow__priestess__mLujryShxJUk5Jys.json index dbf9d278..3b5ebd5b 100644 --- a/data/packs/monsters.db/drow__priestess__mLujryShxJUk5Jys.json +++ b/data/packs/monsters.db/drow__priestess__mLujryShxJUk5Jys.json @@ -142,7 +142,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A statuesque female drow with a crown of metal spider webs and an imperious gaze.

      \n\t

      \n\t

      AC 16 (mithral chainmail), HP 28, ATK 3 snake whip (near) +4 (1d8 + poison) or 1 spell +4, MV near, S +2, D +3, C +1, I +3, W +4, Ch +3, AL C, LV 6

      \n\t

      Poison. DC 15 CON or paralyzed 1d4 rounds.

      Sunblind. Blinded in bright light.

      Snuff (WIS Spell). DC 12. Extinguish all light sources (even magical) within near.

      Summon Spiders (WIS Spell). DC 14. Summon 2d4 loyal giant spiders that appear within near. They stay for 5 rounds.

      Web (WIS Spell). DC 13. A near-sized cube of webs within far immobilizes all inside it for 5 rounds. DC 15 STR on turn to break free.

      ", + "notes": "\n\t

      A statuesque female drow with a crown of metal spider webs and an imperious gaze.

      \n\t

      \n\t

      AC 16 (mithral chainmail), HP 28, ATK 3 snake whip (near) +4 (1d8 + poison) or 1 spell +4, MV near, S +2, D +3, C +1, I +3, W +4, Ch +3, AL C, LV 6

      \n\t

      Poison. [[check 15 con]] or paralyzed 1d4 rounds.

      Sunblind. Blinded in bright light.

      Snuff (WIS Spell). DC 12. Extinguish all light sources (even magical) within near.

      Summon Spiders (WIS Spell). DC 14. Summon 2d4 loyal giant spiders that appear within near. They stay for 5 rounds.

      Web (WIS Spell). DC 13. A near-sized cube of webs within far immobilizes all inside it for 5 rounds. [[check 15 str]] on turn to break free.

      ", "spellcastingAbility": "wis", "spellcastingAttackNum": 1, "spellcastingBonus": 4 diff --git a/data/packs/monsters.db/dryad__vXaqgfDykZPdXnIm.json b/data/packs/monsters.db/dryad__vXaqgfDykZPdXnIm.json index 8e8cbc57..c08b64c0 100644 --- a/data/packs/monsters.db/dryad__vXaqgfDykZPdXnIm.json +++ b/data/packs/monsters.db/dryad__vXaqgfDykZPdXnIm.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A coy, emerald-skinned fey covered in leaves. It bonds with and protects a tree.

      \n\t

      \n\t

      AC 13, HP 19, ATK 1 staff -1 (1d4) or 1 charm, MV near, S -1, D +2, C +1, I +1, W +3, Ch +4, AL N, LV 4

      \n\t

      Charm. Near, one creature, DC 14 CHA or friendship for 1d8 days.

      Meld. Step inside bonded tree.

      ", + "notes": "\n\t

      A coy, emerald-skinned fey covered in leaves. It bonds with and protects a tree.

      \n\t

      \n\t

      AC 13, HP 19, ATK 1 staff -1 (1d4) or 1 charm, MV near, S -1, D +2, C +1, I +1, W +3, Ch +4, AL N, LV 4

      \n\t

      Charm. Near, one creature, [[check 14 cha]] or friendship for 1d8 days.

      Meld. Step inside bonded tree.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/dung_beetle__giant__99s2guSyYKPWp1oy.json b/data/packs/monsters.db/dung_beetle__giant__99s2guSyYKPWp1oy.json index 3d578498..d0afe419 100644 --- a/data/packs/monsters.db/dung_beetle__giant__99s2guSyYKPWp1oy.json +++ b/data/packs/monsters.db/dung_beetle__giant__99s2guSyYKPWp1oy.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A trundling, barrel-sized beetle with a T-shaped horn.

      \n\t

      \n\t

      AC 13, HP 10, ATK 1 horn +1 (1d4 + knock), MV near, S +1, D -1, C +1, I -3, W -1, Ch -3, AL N, LV 2

      \n\t

      Knock. DC 9 STR or pushed a close distance and fall down.

      ", + "notes": "\n\t

      A trundling, barrel-sized beetle with a T-shaped horn.

      \n\t

      \n\t

      AC 13, HP 10, ATK 1 horn +1 (1d4 + knock), MV near, S +1, D -1, C +1, I -3, W -1, Ch -3, AL N, LV 2

      \n\t

      Knock. [[check 9 str]] or pushed a close distance and fall down.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/elemental__air__greater___adojju5DJl1iWEg4.json b/data/packs/monsters.db/elemental__air__greater___adojju5DJl1iWEg4.json index 030ac3fd..9fd8750c 100644 --- a/data/packs/monsters.db/elemental__air__greater___adojju5DJl1iWEg4.json +++ b/data/packs/monsters.db/elemental__air__greater___adojju5DJl1iWEg4.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      A howling tornado of wind.

      \n\t

      \n\t

      AC 16, HP 42, ATK 3 slam +7 (3d6) or 1 whirlwind, MV double near (fly), S +3, D +5, C +2, I -2, W +1, Ch -2, AL N, LV 9

      \n\t

      Impervious. Only damaged by magical sources.

      Whirlwind. All within close DC 15 DEX or flung 2d20 feet in random direction.

      ", + "notes": "\n\t

      A howling tornado of wind.

      \n\t

      \n\t

      AC 16, HP 42, ATK 3 slam +7 (3d6) or 1 whirlwind, MV double near (fly), S +3, D +5, C +2, I -2, W +1, Ch -2, AL N, LV 9

      \n\t

      Impervious. Only damaged by magical sources.

      Whirlwind. All within close [[check 15 dex]] or flung 2d20 feet in random direction.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/elemental__air__lesser___XEFAKSOcCUd8G89y.json b/data/packs/monsters.db/elemental__air__lesser___XEFAKSOcCUd8G89y.json index ef7b21b9..dfd2a1b0 100644 --- a/data/packs/monsters.db/elemental__air__lesser___XEFAKSOcCUd8G89y.json +++ b/data/packs/monsters.db/elemental__air__lesser___XEFAKSOcCUd8G89y.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      A howling tornado of wind.

      \n\t

      \n\t

      AC 16, HP 29, ATK 3 slam +7 (2d6) or 1 whirlwind, MV double near (fly), S +3, D +5, C +2, I -2, W +1, Ch -2, AL N, LV 6

      \n\t

      Impervious. Only damaged by magical sources.

      Whirlwind. All within close DC 15 DEX or flung 2d20 feet in random direction.

      ", + "notes": "\n\t

      A howling tornado of wind.

      \n\t

      \n\t

      AC 16, HP 29, ATK 3 slam +7 (2d6) or 1 whirlwind, MV double near (fly), S +3, D +5, C +2, I -2, W +1, Ch -2, AL N, LV 6

      \n\t

      Impervious. Only damaged by magical sources.

      Whirlwind. All within close [[check 15 dex]] or flung 2d20 feet in random direction.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/elemental__earth__greater___w14e0EzbGfvjkbes.json b/data/packs/monsters.db/elemental__earth__greater___w14e0EzbGfvjkbes.json index be8fe4d6..80ca9b49 100644 --- a/data/packs/monsters.db/elemental__earth__greater___w14e0EzbGfvjkbes.json +++ b/data/packs/monsters.db/elemental__earth__greater___w14e0EzbGfvjkbes.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "burrow", - "notes": "\n\t

      A thundering pillar of earth.

      \n\t

      \n\t

      AC 17, HP 44, ATK 3 slam +7 (2d8/3d8) or 1 avalanche, MV near (burrow), S +5, D +0, C +4, I -2, W +1, Ch -2, AL N, LV 9

      \n\t

      Impervious. Only damaged by magical sources.

      Avalanche. All within close DC 15 STR or entombed for 1d4 rounds under mounds of earth.

      ", + "notes": "\n\t

      A thundering pillar of earth.

      \n\t

      \n\t

      AC 17, HP 44, ATK 3 slam +7 (2d8/3d8) or 1 avalanche, MV near (burrow), S +5, D +0, C +4, I -2, W +1, Ch -2, AL N, LV 9

      \n\t

      Impervious. Only damaged by magical sources.

      Avalanche. All within close [[check 15 str]] or entombed for 1d4 rounds under mounds of earth.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/elemental__earth__lesser___Puc0P5lO6IphdIQP.json b/data/packs/monsters.db/elemental__earth__lesser___Puc0P5lO6IphdIQP.json index 32ef831c..24e0c147 100644 --- a/data/packs/monsters.db/elemental__earth__lesser___Puc0P5lO6IphdIQP.json +++ b/data/packs/monsters.db/elemental__earth__lesser___Puc0P5lO6IphdIQP.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "burrow", - "notes": "\n\t

      A thundering pillar of earth.

      \n\t

      \n\t

      AC 17, HP 31, ATK 3 slam +7 (2d8/3d8) or 1 avalanche, MV near (burrow), S +5, D +0, C +4, I -2, W +1, Ch -2, AL N, LV 6

      \n\t

      Impervious. Only damaged by magical sources.

      Avalanche. All within close DC 15 STR or entombed for 1d4 rounds under mounds of earth.

      ", + "notes": "\n\t

      A thundering pillar of earth.

      \n\t

      \n\t

      AC 17, HP 31, ATK 3 slam +7 (2d8/3d8) or 1 avalanche, MV near (burrow), S +5, D +0, C +4, I -2, W +1, Ch -2, AL N, LV 6

      \n\t

      Impervious. Only damaged by magical sources.

      Avalanche. All within close [[check 15 str]] or entombed for 1d4 rounds under mounds of earth.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/elemental__fire__greater___V1wcRoUEnIbaNjXN.json b/data/packs/monsters.db/elemental__fire__greater___V1wcRoUEnIbaNjXN.json index f40d6cb4..b5d0fe18 100644 --- a/data/packs/monsters.db/elemental__fire__greater___V1wcRoUEnIbaNjXN.json +++ b/data/packs/monsters.db/elemental__fire__greater___V1wcRoUEnIbaNjXN.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      A roaring column of flames.

      \n\t

      \n\t

      AC 15, HP 43, ATK 3 slam +6 (2d10/3d10) or 1 inferno, MV near (fly), S +4, D +3, C +3, I -2, W +1, Ch -2, AL N, LV 9

      \n\t

      Impervious. Only damaged by magical sources. Fire immune.

      Inferno. All within near DC 15 DEX or 3d8 damage.

      ", + "notes": "\n\t

      A roaring column of flames.

      \n\t

      \n\t

      AC 15, HP 43, ATK 3 slam +6 (2d10/3d10) or 1 inferno, MV near (fly), S +4, D +3, C +3, I -2, W +1, Ch -2, AL N, LV 9

      \n\t

      Impervious. Only damaged by magical sources. Fire immune.

      Inferno. All within near [[check 15 dex]] or 3d8 damage.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/elemental__fire__lesser___vylW8UYkC5i9wAS7.json b/data/packs/monsters.db/elemental__fire__lesser___vylW8UYkC5i9wAS7.json index 79b6a44d..c0c7a07b 100644 --- a/data/packs/monsters.db/elemental__fire__lesser___vylW8UYkC5i9wAS7.json +++ b/data/packs/monsters.db/elemental__fire__lesser___vylW8UYkC5i9wAS7.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      A roaring column of flames.

      \n\t

      \n\t

      AC 15, HP 30, ATK 3 slam +6 (2d10/3d10) or 1 inferno, MV near (fly), S +4, D +3, C +3, I -2, W +1, Ch -2, AL N, LV 6

      \n\t

      Impervious. Only damaged by magical sources. Fire immune.

      Inferno. All within near DC 15 DEX or 3d8 damage.

      ", + "notes": "\n\t

      A roaring column of flames.

      \n\t

      \n\t

      AC 15, HP 30, ATK 3 slam +6 (2d10/3d10) or 1 inferno, MV near (fly), S +4, D +3, C +3, I -2, W +1, Ch -2, AL N, LV 6

      \n\t

      Impervious. Only damaged by magical sources. Fire immune.

      Inferno. All within near [[check 15 dex]] or 3d8 damage.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/elemental__water__greater___Fb4nfQoOqplwmGHe.json b/data/packs/monsters.db/elemental__water__greater___Fb4nfQoOqplwmGHe.json index ae777d2e..0e40615f 100644 --- a/data/packs/monsters.db/elemental__water__greater___Fb4nfQoOqplwmGHe.json +++ b/data/packs/monsters.db/elemental__water__greater___Fb4nfQoOqplwmGHe.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "swim", - "notes": "\n\t

      A crashing vortex of water.

      \n\t

      \n\t

      AC 15, HP 42, ATK 3 slam +6 (3d6) or 1 whirlpool, MV double near (swim), S +4, D +2, C +2, I -2, W +1, Ch -2, AL N, LV 9

      \n\t

      Impervious. Only damaged by magical sources.

      Whirlpool. All within close DC 15 STR or immobilized inside water elemental (treat as underwater). DC 15 STR on turn to escape.

      ", + "notes": "\n\t

      A crashing vortex of water.

      \n\t

      \n\t

      AC 15, HP 42, ATK 3 slam +6 (3d6) or 1 whirlpool, MV double near (swim), S +4, D +2, C +2, I -2, W +1, Ch -2, AL N, LV 9

      \n\t

      Impervious. Only damaged by magical sources.

      Whirlpool. All within close [[check 15 str]] or immobilized inside water elemental (treat as underwater). [[check 15 str]] on turn to escape.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/elemental__water__lesser___ZP1OsAWwqVppLts0.json b/data/packs/monsters.db/elemental__water__lesser___ZP1OsAWwqVppLts0.json index d4228cb7..9dc7dd30 100644 --- a/data/packs/monsters.db/elemental__water__lesser___ZP1OsAWwqVppLts0.json +++ b/data/packs/monsters.db/elemental__water__lesser___ZP1OsAWwqVppLts0.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "swim", - "notes": "\n\t

      A crashing vortex of water.

      \n\t

      \n\t

      AC 15, HP 29, ATK 3 slam +6 (2d6) or 1 whirlpool, MV double near (swim), S +4, D +2, C +2, I -2, W +1, Ch -2, AL N, LV 6

      \n\t

      Impervious. Only damaged by magical sources.

      Whirlpool. All within close DC 15 STR or immobilized inside water elemental (treat as underwater). DC 15 STR on turn to escape.

      ", + "notes": "\n\t

      A crashing vortex of water.

      \n\t

      \n\t

      AC 15, HP 29, ATK 3 slam +6 (2d6) or 1 whirlpool, MV double near (swim), S +4, D +2, C +2, I -2, W +1, Ch -2, AL N, LV 6

      \n\t

      Impervious. Only damaged by magical sources.

      Whirlpool. All within close [[check 15 str]] or immobilized inside water elemental (treat as underwater). [[check 15 str]] on turn to escape.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/engulf__Kl6o22ueMZ7VHhf0.json b/data/packs/monsters.db/engulf__Kl6o22ueMZ7VHhf0.json index dc50ad6e..0fd1c046 100644 --- a/data/packs/monsters.db/engulf__Kl6o22ueMZ7VHhf0.json +++ b/data/packs/monsters.db/engulf__Kl6o22ueMZ7VHhf0.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Engulf", "system": { - "description": "

      If a target is hit by both slams in same round, it is pulled into shambling mound's body and suffocates in [[/r 2d4]] rounds. DC 15 STR on turn to escape.

      ", + "description": "

      If a target is hit by both slams in same round, it is pulled into shambling mound's body and suffocates in [[/r 2d4]] rounds. [[check 15 str]] on turn to escape.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/engulf__YT0lNfn2LRODcVHp.json b/data/packs/monsters.db/engulf__YT0lNfn2LRODcVHp.json index d978d052..253d9470 100644 --- a/data/packs/monsters.db/engulf__YT0lNfn2LRODcVHp.json +++ b/data/packs/monsters.db/engulf__YT0lNfn2LRODcVHp.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Engulf", "system": { - "description": "

      DC 12 STR or trapped inside cube. Touch attack auto-hits engulfed targets each round. DC 12 STR on turn to escape. Fail checks if paralyzed.

      ", + "description": "

      [[check 12 str]] or trapped inside cube. Touch attack auto-hits engulfed targets each round. [[check 12 str]] on turn to escape. Fail checks if paralyzed.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/enslave__aP6TqfdMClwS8SFU.json b/data/packs/monsters.db/enslave__aP6TqfdMClwS8SFU.json index a5a5f2eb..26f14614 100644 --- a/data/packs/monsters.db/enslave__aP6TqfdMClwS8SFU.json +++ b/data/packs/monsters.db/enslave__aP6TqfdMClwS8SFU.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Enslave", "system": { - "description": "

      In place of attacks, one creature within far DC 15 WIS or aboleth controls for [[/r 1d4]] rounds.

      ", + "description": "

      In place of attacks, one creature within far [[check 15 wis]] or aboleth controls for [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/enslave__pgLNyD8buvs48X6G.json b/data/packs/monsters.db/enslave__pgLNyD8buvs48X6G.json index 0764799f..24ab58d2 100644 --- a/data/packs/monsters.db/enslave__pgLNyD8buvs48X6G.json +++ b/data/packs/monsters.db/enslave__pgLNyD8buvs48X6G.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Enslave", "system": { - "description": "

      In place of attacks, one creature within far DC 15 WIS or aboleth controls for 1d4 rounds.

      ", + "description": "

      In place of attacks, one creature within far [[check 15 wis]] or aboleth controls for 1d4 rounds.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/ettercap__fcgq7uwsJEMMdRNx.json b/data/packs/monsters.db/ettercap__fcgq7uwsJEMMdRNx.json index 1d4092df..685f5222 100644 --- a/data/packs/monsters.db/ettercap__fcgq7uwsJEMMdRNx.json +++ b/data/packs/monsters.db/ettercap__fcgq7uwsJEMMdRNx.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "climb", - "notes": "\n\t

      Bipedal, eight-eyed spiderfolk with spindly legs and purple fur.

      \n\t

      \n\t

      AC 12, HP 14, ATK 2 bite +2 (1d6) or 1 poison web (near) +2, MV near (climb), S +0, D +2, C +1, I +0, W +0, Ch -1, AL C, LV 3

      \n\t

      Poison Web. One target stuck in place and 1d4 damage/round. DC 12 DEX on turn to escape.

      ", + "notes": "\n\t

      Bipedal, eight-eyed spiderfolk with spindly legs and purple fur.

      \n\t

      \n\t

      AC 12, HP 14, ATK 2 bite +2 (1d6) or 1 poison web (near) +2, MV near (climb), S +0, D +2, C +1, I +0, W +0, Ch -1, AL C, LV 3

      \n\t

      Poison Web. One target stuck in place and 1d4 damage/round. [[check 12 dex]] on turn to escape.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/explosion__uWVe3NFqqbRKVAg1.json b/data/packs/monsters.db/explosion__uWVe3NFqqbRKVAg1.json index 17996eef..f2d46e57 100644 --- a/data/packs/monsters.db/explosion__uWVe3NFqqbRKVAg1.json +++ b/data/packs/monsters.db/explosion__uWVe3NFqqbRKVAg1.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Explosion", "system": { - "description": "

      Upon death, creatures within double near of phoenix DC 18 DEX or [[/r 10d6]] damage.

      ", + "description": "

      Upon death, creatures within double near of phoenix [[check 18 dex]] or [[/r 10d6]] damage.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/eyestalk_ray__cancel__23A0LdGxQHEHmNdO.json b/data/packs/monsters.db/eyestalk_ray__cancel__23A0LdGxQHEHmNdO.json index fb449f5c..45e099d6 100644 --- a/data/packs/monsters.db/eyestalk_ray__cancel__23A0LdGxQHEHmNdO.json +++ b/data/packs/monsters.db/eyestalk_ray__cancel__23A0LdGxQHEHmNdO.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Eyestalk Ray: Cancel", "system": { - "description": "

      DC 15 DEX or all magical effects on target end.

      ", + "description": "

      [[check 15 dex]] or all magical effects on target end.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/eyestalk_ray__charm__5x2hRPCnhDy0nDV3.json b/data/packs/monsters.db/eyestalk_ray__charm__5x2hRPCnhDy0nDV3.json index eab05d26..22c6efd4 100644 --- a/data/packs/monsters.db/eyestalk_ray__charm__5x2hRPCnhDy0nDV3.json +++ b/data/packs/monsters.db/eyestalk_ray__charm__5x2hRPCnhDy0nDV3.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Eyestalk Ray: Charm", "system": { - "description": "

      DC 15 CHA or become ally for [[/r 1d4]] rounds.

      ", + "description": "

      [[check 15 cha]] or become ally for [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/eyestalk_ray__confusion__G93evk3hEwUNxylg.json b/data/packs/monsters.db/eyestalk_ray__confusion__G93evk3hEwUNxylg.json index f59e4c66..08e22f26 100644 --- a/data/packs/monsters.db/eyestalk_ray__confusion__G93evk3hEwUNxylg.json +++ b/data/packs/monsters.db/eyestalk_ray__confusion__G93evk3hEwUNxylg.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Eyestalk Ray: Confusion", "system": { - "description": "

      DC 15 WIS or attack a random ally within near.

      ", + "description": "

      [[check 15 wis]] or attack a random ally within near.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/eyestalk_ray__death__vLhl7A91sIiMkyeE.json b/data/packs/monsters.db/eyestalk_ray__death__vLhl7A91sIiMkyeE.json index 229f3464..747ff34f 100644 --- a/data/packs/monsters.db/eyestalk_ray__death__vLhl7A91sIiMkyeE.json +++ b/data/packs/monsters.db/eyestalk_ray__death__vLhl7A91sIiMkyeE.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Eyestalk Ray: Death", "system": { - "description": "

      DC 15 CON or drop to 0 HP with a death timer of 1.

      ", + "description": "

      [[check 15 con]] or drop to 0 HP with a death timer of 1.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/eyestalk_ray__disintegrate__seKf4CaOLPWpC2EA.json b/data/packs/monsters.db/eyestalk_ray__disintegrate__seKf4CaOLPWpC2EA.json index 06b21ec8..f71665f5 100644 --- a/data/packs/monsters.db/eyestalk_ray__disintegrate__seKf4CaOLPWpC2EA.json +++ b/data/packs/monsters.db/eyestalk_ray__disintegrate__seKf4CaOLPWpC2EA.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Eyestalk Ray: Disintegrate", "system": { - "description": "

      DC 15 DEX or [[/r 5d8]] damage (object destroyed).

      ", + "description": "

      [[check 15 dex]] or [[/r 5d8]] damage (object destroyed).

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/eyestalk_ray__hold__d2W2N4x0D1wNuQ6U.json b/data/packs/monsters.db/eyestalk_ray__hold__d2W2N4x0D1wNuQ6U.json index 37fd9c1b..33ec5045 100644 --- a/data/packs/monsters.db/eyestalk_ray__hold__d2W2N4x0D1wNuQ6U.json +++ b/data/packs/monsters.db/eyestalk_ray__hold__d2W2N4x0D1wNuQ6U.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Eyestalk Ray: Hold", "system": { - "description": "

      DC 15 STR or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      [[check 15 str]] or paralyzed [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/eyestalk_ray__petrify__O1GgVoaS9kzn159D.json b/data/packs/monsters.db/eyestalk_ray__petrify__O1GgVoaS9kzn159D.json index 178e7ba4..5ac6c28b 100644 --- a/data/packs/monsters.db/eyestalk_ray__petrify__O1GgVoaS9kzn159D.json +++ b/data/packs/monsters.db/eyestalk_ray__petrify__O1GgVoaS9kzn159D.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Eyestalk Ray: Petrify", "system": { - "description": "

      DC 15 CON or petrified.

      ", + "description": "

      [[check 15 con]] or petrified.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/eyestalk_ray__polymorph__0LTXQefThT3VPPuT.json b/data/packs/monsters.db/eyestalk_ray__polymorph__0LTXQefThT3VPPuT.json index baf6c239..78a4864d 100644 --- a/data/packs/monsters.db/eyestalk_ray__polymorph__0LTXQefThT3VPPuT.json +++ b/data/packs/monsters.db/eyestalk_ray__polymorph__0LTXQefThT3VPPuT.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Eyestalk Ray: Polymorph", "system": { - "description": "

      DC 15 INT or turned into vermin for [[/r 1d4]] rounds.

      ", + "description": "

      [[check 15 int]] or turned into vermin for [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/eyestalk_ray__sleep__lxWYSEWZsXu2MhNw.json b/data/packs/monsters.db/eyestalk_ray__sleep__lxWYSEWZsXu2MhNw.json index 98721ee8..653f3af6 100644 --- a/data/packs/monsters.db/eyestalk_ray__sleep__lxWYSEWZsXu2MhNw.json +++ b/data/packs/monsters.db/eyestalk_ray__sleep__lxWYSEWZsXu2MhNw.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Eyestalk Ray: Sleep", "system": { - "description": "

      DC 15 WIS or asleep [[/r 1d4]] rounds.

      ", + "description": "

      [[check 15 wis]] or asleep [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/eyestalk_ray__telekinesis__VP5z272fOQdofJHJ.json b/data/packs/monsters.db/eyestalk_ray__telekinesis__VP5z272fOQdofJHJ.json index 09f5008e..25b420d8 100644 --- a/data/packs/monsters.db/eyestalk_ray__telekinesis__VP5z272fOQdofJHJ.json +++ b/data/packs/monsters.db/eyestalk_ray__telekinesis__VP5z272fOQdofJHJ.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Eyestalk Ray: Telekinesis", "system": { - "description": "

      DC 15 STR or hover target up to double near.

      ", + "description": "

      [[check 15 str]] or hover target up to double near.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/fairy__RAEbIzHkREYWKvLh.json b/data/packs/monsters.db/fairy__RAEbIzHkREYWKvLh.json index 2cdb56f8..5479be55 100644 --- a/data/packs/monsters.db/fairy__RAEbIzHkREYWKvLh.json +++ b/data/packs/monsters.db/fairy__RAEbIzHkREYWKvLh.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      Miniature fey folk with fluttering moth or butterfly wings.

      \n\t

      \n\t

      AC 13, HP 4, ATK 1 needle +3 (1 + poison), MV near (fly), S -2, D +3, C +0, I +1, W +0, Ch +1, AL N, LV 1

      \n\t

      Poison. DC 12 CON or fall into deep sleep for 1d4 hours.

      ", + "notes": "\n\t

      Miniature fey folk with fluttering moth or butterfly wings.

      \n\t

      \n\t

      AC 13, HP 4, ATK 1 needle +3 (1 + poison), MV near (fly), S -2, D +3, C +0, I +1, W +0, Ch +1, AL N, LV 1

      \n\t

      Poison. [[check 12 con]] or fall into deep sleep for 1d4 hours.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/fire_breath__N76B4JFwQSdnpZkO.json b/data/packs/monsters.db/fire_breath__N76B4JFwQSdnpZkO.json index fd85986f..1ffb32e9 100644 --- a/data/packs/monsters.db/fire_breath__N76B4JFwQSdnpZkO.json +++ b/data/packs/monsters.db/fire_breath__N76B4JFwQSdnpZkO.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Fills a double near- sized cube extending from dragon. DC 15 DEX or [[/r 6d10]] damage.

      ", + "description": "

      Fills a double near- sized cube extending from dragon. [[check 15 dex]] or [[/r 6d10]] damage.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/fire_breath__PTrZA5vH3W1CU8DU.json b/data/packs/monsters.db/fire_breath__PTrZA5vH3W1CU8DU.json index d38cb6bd..8b5ddd74 100644 --- a/data/packs/monsters.db/fire_breath__PTrZA5vH3W1CU8DU.json +++ b/data/packs/monsters.db/fire_breath__PTrZA5vH3W1CU8DU.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Fills a near-sized cube extending from hell hound. DC 15 DEX or [[/r 3d8]] damage. Cannot use again for [[/r 1d4]] rounds.

      ", + "description": "

      Fills a near-sized cube extending from hell hound. [[check 15 dex]] or [[/r 3d8]] damage. Cannot use again for [[/r 1d4]] rounds.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/fire_breath__yuGQTgdDmrDuBagY.json b/data/packs/monsters.db/fire_breath__yuGQTgdDmrDuBagY.json index d839e7c3..7d029f36 100644 --- a/data/packs/monsters.db/fire_breath__yuGQTgdDmrDuBagY.json +++ b/data/packs/monsters.db/fire_breath__yuGQTgdDmrDuBagY.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Fills a near-sized cube extending from chimera. DC 15 DEX or [[/r 4d6]] damage.

      ", + "description": "

      Fills a near-sized cube extending from chimera. [[check 15 dex]] or [[/r 4d6]] damage.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/frog__giant__mpdnvoVyYfvu8yLP.json b/data/packs/monsters.db/frog__giant__mpdnvoVyYfvu8yLP.json index a53985b2..e6fcd84a 100644 --- a/data/packs/monsters.db/frog__giant__mpdnvoVyYfvu8yLP.json +++ b/data/packs/monsters.db/frog__giant__mpdnvoVyYfvu8yLP.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "swim", - "notes": "\n\t

      Human-sized frogs with warty skin and long, sticky tongues.

      \n\t

      \n\t

      AC 12, HP 10, ATK 1 tongue and 1 bite +2 (1d6), MV near (swim), S +2, D +2, C +1, I -3, W +0, Ch -3, AL N, LV 2

      \n\t

      Tongue. 1 creature in near DC 12 DEX or pulled to close range.

      ", + "notes": "\n\t

      Human-sized frogs with warty skin and long, sticky tongues.

      \n\t

      \n\t

      AC 12, HP 10, ATK 1 tongue and 1 bite +2 (1d6), MV near (swim), S +2, D +2, C +1, I -3, W +0, Ch -3, AL N, LV 2

      \n\t

      Tongue. 1 creature in near [[check 12 dex]] or pulled to close range.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/frost_breath__NJcQFvVH4OnN7Gml.json b/data/packs/monsters.db/frost_breath__NJcQFvVH4OnN7Gml.json index df8b2703..5dfd40f2 100644 --- a/data/packs/monsters.db/frost_breath__NJcQFvVH4OnN7Gml.json +++ b/data/packs/monsters.db/frost_breath__NJcQFvVH4OnN7Gml.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Fills a near-sized cube extending from winter wolf. DC 15 DEX or [[/r 3d8]] damage. Cannot use again for [[/r 1d4]] rounds.

      ", + "description": "

      Fills a near-sized cube extending from winter wolf. [[check 15 dex]] or [[/r 3d8]] damage. Cannot use again for [[/r 1d4]] rounds.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/gas__g5tUfZrRzPhiKHqB.json b/data/packs/monsters.db/gas__g5tUfZrRzPhiKHqB.json index 6a7aeb23..c1ec85fd 100644 --- a/data/packs/monsters.db/gas__g5tUfZrRzPhiKHqB.json +++ b/data/packs/monsters.db/gas__g5tUfZrRzPhiKHqB.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      All in near DC 12 CON or blinded for [[/r 1d4]] rounds.

      ", + "description": "

      All in near [[check 12 con]] or blinded for [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "ranges": [ ], diff --git a/data/packs/monsters.db/gelatinous_cube__udRspLiTyURGmLav.json b/data/packs/monsters.db/gelatinous_cube__udRspLiTyURGmLav.json index 98381e64..d618eaaa 100644 --- a/data/packs/monsters.db/gelatinous_cube__udRspLiTyURGmLav.json +++ b/data/packs/monsters.db/gelatinous_cube__udRspLiTyURGmLav.json @@ -140,7 +140,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A translucent cube of slime that silently mows through tunnels.

      \n\t

      \n\t

      AC 11, HP 24, ATK 1 touch +4 (1d8 + toxin + engulf), MV near, S +3, D +1, C +2, I -4, W +1, Ch -4, AL N, LV 5

      \n\t

      Engulf. DC 12 STR or trapped inside cube. Touch attack auto-hits engulfed targets each round. DC 12 STR on turn to escape. Fail checks if paralyzed.

      Rubbery. Half damage from stabbing weapons.

      Toxin. DC 15 CON or paralyzed 1d4 rounds.

      ", + "notes": "\n\t

      A translucent cube of slime that silently mows through tunnels.

      \n\t

      \n\t

      AC 11, HP 24, ATK 1 touch +4 (1d8 + toxin + engulf), MV near, S +3, D +1, C +2, I -4, W +1, Ch -4, AL N, LV 5

      \n\t

      Engulf. [[check 12 str]] or trapped inside cube. Touch attack auto-hits engulfed targets each round. [[check 12 str]] on turn to escape. Fail checks if paralyzed.

      Rubbery. Half damage from stabbing weapons.

      Toxin. [[check 15 con]] or paralyzed 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/ghast__XNiuEhf8QpfOnVCJ.json b/data/packs/monsters.db/ghast__XNiuEhf8QpfOnVCJ.json index a532edeb..bbbe8447 100644 --- a/data/packs/monsters.db/ghast__XNiuEhf8QpfOnVCJ.json +++ b/data/packs/monsters.db/ghast__XNiuEhf8QpfOnVCJ.json @@ -140,7 +140,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Greater ghouls who retain the intelligence they had in life.

      \n\t

      \n\t

      AC 11, HP 20, ATK 2 claw +4 (1d8 + paralyze), MV near, S +3, D +1, C +2, I +0, W +0, Ch +2, AL C, LV 4

      \n\t

      Undead. Immune to morale checks.

      Carrion Stench. Living creatures DC 12 CON the first time within near or DISADV on attacks and spellcasting for 5 rounds.

      Paralyze. DC 12 CON or paralyzed 1d4 rounds.

      ", + "notes": "\n\t

      Greater ghouls who retain the intelligence they had in life.

      \n\t

      \n\t

      AC 11, HP 20, ATK 2 claw +4 (1d8 + paralyze), MV near, S +3, D +1, C +2, I +0, W +0, Ch +2, AL C, LV 4

      \n\t

      Undead. Immune to morale checks.

      Carrion Stench. Living creatures [[check 12 con]] the first time within near or DISADV on attacks and spellcasting for 5 rounds.

      Paralyze. [[check 12 con]] or paralyzed 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/ghoul__aJPxeuzZ597SWMES.json b/data/packs/monsters.db/ghoul__aJPxeuzZ597SWMES.json index eefddc63..96a52df3 100644 --- a/data/packs/monsters.db/ghoul__aJPxeuzZ597SWMES.json +++ b/data/packs/monsters.db/ghoul__aJPxeuzZ597SWMES.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Gray-skinned, slavering undead with whipping tongues and flat, reptilian faces.

      \n\t

      \n\t

      AC 11, HP 11, ATK 1 claw +2 (1d6 + paralyze), MV near, S +2, D +1, C +2, I -3, W -1, Ch +0, AL C, LV 2

      \n\t

      Undead. Immune to morale checks.

      Paralyze. DC 12 CON or paralyzed 1d4 rounds.

      ", + "notes": "\n\t

      Gray-skinned, slavering undead with whipping tongues and flat, reptilian faces.

      \n\t

      \n\t

      AC 11, HP 11, ATK 1 claw +2 (1d6 + paralyze), MV near, S +2, D +1, C +2, I -3, W -1, Ch +0, AL C, LV 2

      \n\t

      Undead. Immune to morale checks.

      Paralyze. [[check 12 con]] or paralyzed 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/giant__storm__owL9cUM2LTVpMarQ.json b/data/packs/monsters.db/giant__storm__owL9cUM2LTVpMarQ.json index 218eea45..79377ca3 100644 --- a/data/packs/monsters.db/giant__storm__owL9cUM2LTVpMarQ.json +++ b/data/packs/monsters.db/giant__storm__owL9cUM2LTVpMarQ.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "swim", - "notes": "\n\t

      Regal titans with sea-green skin, flowing white hair, and thundering voices. They breathe water as easily as air.

      \n\t

      \n\t

      AC 15 (mithral chainmail), HP 58, ATK 3 greatsword +10 (2d12) or 1 lightning bolt, MV double near (swim), S +6, D +2, C +4, I +3, W +4, Ch +4, AL L, LV 12

      \n\t

      Stormblood. Electricity immune.

      Lightning Bolt. 3/day, 5' wide line extending far from giant. All creatures in line DC 15 DEX or 5d10 damage. DISADV on check if in water.

      ", + "notes": "\n\t

      Regal titans with sea-green skin, flowing white hair, and thundering voices. They breathe water as easily as air.

      \n\t

      \n\t

      AC 15 (mithral chainmail), HP 58, ATK 3 greatsword +10 (2d12) or 1 lightning bolt, MV double near (swim), S +6, D +2, C +4, I +3, W +4, Ch +4, AL L, LV 12

      \n\t

      Stormblood. Electricity immune.

      Lightning Bolt. 3/day, 5' wide line extending far from giant. All creatures in line [[check 15 dex]] or 5d10 damage. DISADV on check if in water.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/gibbering__mRmdYRMpxZAf9bWH.json b/data/packs/monsters.db/gibbering__mRmdYRMpxZAf9bWH.json index 9cda5a7c..524f9329 100644 --- a/data/packs/monsters.db/gibbering__mRmdYRMpxZAf9bWH.json +++ b/data/packs/monsters.db/gibbering__mRmdYRMpxZAf9bWH.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Gibbering", "system": { - "description": "

      Creatures within near DC 12 WIS on turn or take a random action (d8): 1-3. do nothing, 4-5. move in random direction, 6-7. attack nearest creature, 8. flee.

      ", + "description": "

      Creatures within near [[check 12 wis]] on turn or take a random action (d8): 1-3. do nothing, 4-5. move in random direction, 6-7. attack nearest creature, 8. flee.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/gibbering_mouther__8aDS9mPcNoxNc3Ha.json b/data/packs/monsters.db/gibbering_mouther__8aDS9mPcNoxNc3Ha.json index ef00ebab..32da0545 100644 --- a/data/packs/monsters.db/gibbering_mouther__8aDS9mPcNoxNc3Ha.json +++ b/data/packs/monsters.db/gibbering_mouther__8aDS9mPcNoxNc3Ha.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Crawling masses of slime with dozens of screeching, lipless mouths and wet eyeballs.

      \n\t

      \n\t

      AC 8, HP 21, ATK 2 bite +3 (1d8 + latch), MV near (climb, swim), S +2, D -2, C +3, I -3, W +0, Ch -3, AL N, LV 4

      \n\t

      Gibbering. Creatures within near DC 12 WIS on turn or take a random action (d8): 1-3. do nothing, 4-5. move in random direction, 6-7. attack nearest creature, 8. flee.

      Latch. Attach to bitten target; bites auto-hit next round. DC 12 STR on turn to tear off.

      ", + "notes": "\n\t

      Crawling masses of slime with dozens of screeching, lipless mouths and wet eyeballs.

      \n\t

      \n\t

      AC 8, HP 21, ATK 2 bite +3 (1d8 + latch), MV near (climb, swim), S +2, D -2, C +3, I -3, W +0, Ch -3, AL N, LV 4

      \n\t

      Gibbering. Creatures within near [[check 12 wis]] on turn or take a random action (d8): 1-3. do nothing, 4-5. move in random direction, 6-7. attack nearest creature, 8. flee.

      Latch. Attach to bitten target; bites auto-hit next round. [[check 12 str]] on turn to tear off.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/goblin__shaman__Ot77aKKqmML8yboF.json b/data/packs/monsters.db/goblin__shaman__Ot77aKKqmML8yboF.json index 19a31e42..6966d386 100644 --- a/data/packs/monsters.db/goblin__shaman__Ot77aKKqmML8yboF.json +++ b/data/packs/monsters.db/goblin__shaman__Ot77aKKqmML8yboF.json @@ -141,7 +141,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A swaying, chanting goblin wearing necklaces of teeth and a robe of musty rat pelts.

      \n\t

      \n\t

      AC 12 (leather), HP 19, ATK 1 staff +0 (1d4) or 1 spell +3, MV near, S +0, D +1, C +1, I +0, W +2, Ch +1, AL C, LV 4

      \n\t

      Keen Senses. Can't be surprised.

      Bug Brain (WIS Spell). DC 13. Near range, one target. Target's INT drops to 1 for 1d4 rounds.

      Skitter (WIS Spell). DC 12. Self. Climb like a spider for 5 rounds.

      Stink Bomb (WIS Spell). DC 12. One target within far 2d4 damage and DC 12 CON or DISADV on next check/attack.

      ", + "notes": "\n\t

      A swaying, chanting goblin wearing necklaces of teeth and a robe of musty rat pelts.

      \n\t

      \n\t

      AC 12 (leather), HP 19, ATK 1 staff +0 (1d4) or 1 spell +3, MV near, S +0, D +1, C +1, I +0, W +2, Ch +1, AL C, LV 4

      \n\t

      Keen Senses. Can't be surprised.

      Bug Brain (WIS Spell). DC 13. Near range, one target. Target's INT drops to 1 for 1d4 rounds.

      Skitter (WIS Spell). DC 12. Self. Climb like a spider for 5 rounds.

      Stink Bomb (WIS Spell). DC 12. One target within far 2d4 damage and [[check 12 con]] or DISADV on next check/attack.

      ", "spellcastingAbility": "wis", "spellcastingAttackNum": 1, "spellcastingBonus": 3 diff --git a/data/packs/monsters.db/golem__iron__KZNQRwpG4DaN57zB.json b/data/packs/monsters.db/golem__iron__KZNQRwpG4DaN57zB.json index 8e61e23b..7b7dff67 100644 --- a/data/packs/monsters.db/golem__iron__KZNQRwpG4DaN57zB.json +++ b/data/packs/monsters.db/golem__iron__KZNQRwpG4DaN57zB.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A bulky iron suit that squeals and sparks with each step.

      \n\t

      \n\t

      AC 19, HP 49, ATK 3 slam +8 (2d8) or 1 poison breath, MV near, S +5, D -1, C +4, I -2, W +0, Ch -2, AL N, LV 10

      \n\t

      Golem. Immune to damage from cold or non-magical sources. Healed by fire.

      Poison Breath. All within near, DC 15 CON or 8d6 damage.

      ", + "notes": "\n\t

      A bulky iron suit that squeals and sparks with each step.

      \n\t

      \n\t

      AC 19, HP 49, ATK 3 slam +8 (2d8) or 1 poison breath, MV near, S +5, D -1, C +4, I -2, W +0, Ch -2, AL N, LV 10

      \n\t

      Golem. Immune to damage from cold or non-magical sources. Healed by fire.

      Poison Breath. All within near, [[check 15 con]] or 8d6 damage.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/golem__stone__zLDg6vIYEj4wB0lQ.json b/data/packs/monsters.db/golem__stone__zLDg6vIYEj4wB0lQ.json index 4a8d601c..328f6786 100644 --- a/data/packs/monsters.db/golem__stone__zLDg6vIYEj4wB0lQ.json +++ b/data/packs/monsters.db/golem__stone__zLDg6vIYEj4wB0lQ.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A wide-limbed, lumbering statue that shakes the ground.

      \n\t

      \n\t

      AC 18, HP 40, ATK 3 slam +6 (1d10) and 1 slow, MV near, S +4, D -1, C +4, I -2, W +0, Ch -2, AL N, LV 8

      \n\t

      Golem. Immune to damage from fire, cold, electricity, or non-magical sources.

      Slow. Far range, one target. DC 15 CON or speed halved 1d4 rds.

      ", + "notes": "\n\t

      A wide-limbed, lumbering statue that shakes the ground.

      \n\t

      \n\t

      AC 18, HP 40, ATK 3 slam +6 (1d10) and 1 slow, MV near, S +4, D -1, C +4, I -2, W +0, Ch -2, AL N, LV 8

      \n\t

      Golem. Immune to damage from fire, cold, electricity, or non-magical sources.

      Slow. Far range, one target. [[check 15 con]] or speed halved 1d4 rds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/gorgon__c9n0i79sjiUWwkiV.json b/data/packs/monsters.db/gorgon__c9n0i79sjiUWwkiV.json index 18d91a3b..dbb03d6a 100644 --- a/data/packs/monsters.db/gorgon__c9n0i79sjiUWwkiV.json +++ b/data/packs/monsters.db/gorgon__c9n0i79sjiUWwkiV.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "", - "notes": "\n\t

      A snorting bull made entirely of iron plating. A cloud of green fog billows from its nostrils.

      \n\t

      \n\t

      AC 18, HP 33, ATK 2 gore +6 (2d8) or 1 charge or 1 petrifying breath, MV double near, S +4, D +0, C +2, I -3, W +1, Ch -3, AL C, LV 7

      \n\t

      Charge. Move up to double near in straight line and make 1 gore attack. If hit, x3 damage.

      Petrifying Breath. Fills a near-sized cube extending from gorgon. DC 15 CON or petrified (gorgons immune).

      ", + "notes": "\n\t

      A snorting bull made entirely of iron plating. A cloud of green fog billows from its nostrils.

      \n\t

      \n\t

      AC 18, HP 33, ATK 2 gore +6 (2d8) or 1 charge or 1 petrifying breath, MV double near, S +4, D +0, C +2, I -3, W +1, Ch -3, AL C, LV 7

      \n\t

      Charge. Move up to double near in straight line and make 1 gore attack. If hit, x3 damage.

      Petrifying Breath. Fills a near-sized cube extending from gorgon. [[check 15 con]] or petrified (gorgons immune).

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/grab__4Lkf0XBALE0VF2fj.json b/data/packs/monsters.db/grab__4Lkf0XBALE0VF2fj.json index 6f80fe63..aa9b437a 100644 --- a/data/packs/monsters.db/grab__4Lkf0XBALE0VF2fj.json +++ b/data/packs/monsters.db/grab__4Lkf0XBALE0VF2fj.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Grab", "system": { - "description": "

      DC 18 STR or target held. DC 18 STR on turn to break free.

      ", + "description": "

      [[check 18 str]] or target held. [[check 18 str]] on turn to break free.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/grab__7QuhLVnledWbETj9.json b/data/packs/monsters.db/grab__7QuhLVnledWbETj9.json index 526455f5..76a14ea2 100644 --- a/data/packs/monsters.db/grab__7QuhLVnledWbETj9.json +++ b/data/packs/monsters.db/grab__7QuhLVnledWbETj9.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Grab", "system": { - "description": "

      DC 15 STR or held in pincer. DC 15 STR on turn to break free.

      ", + "description": "

      [[check 15 str]] or held in pincer. [[check 15 str]] on turn to break free.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/grab__KE4OAoAaH7iT0ORR.json b/data/packs/monsters.db/grab__KE4OAoAaH7iT0ORR.json index a2ac3ab7..407a7ab2 100644 --- a/data/packs/monsters.db/grab__KE4OAoAaH7iT0ORR.json +++ b/data/packs/monsters.db/grab__KE4OAoAaH7iT0ORR.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Grab", "system": { - "description": "

      DC 15 STR or held. DC 15 STR on turn to break free.

      ", + "description": "

      [[check 15 str]] or held. [[check 15 str]] on turn to break free.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/grab__MLJYdnU1x4ExRF6W.json b/data/packs/monsters.db/grab__MLJYdnU1x4ExRF6W.json index c276b1ab..b7daac0e 100644 --- a/data/packs/monsters.db/grab__MLJYdnU1x4ExRF6W.json +++ b/data/packs/monsters.db/grab__MLJYdnU1x4ExRF6W.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Grab", "system": { - "description": "

      DC 15 STR or immobilized. Tentacle auto-hits each round. DC 15 STR on turn to break free.

      ", + "description": "

      [[check 15 str]] or immobilized. Tentacle auto-hits each round. [[check 15 str]] on turn to break free.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/grab__N8oyIsMpLptBAxbS.json b/data/packs/monsters.db/grab__N8oyIsMpLptBAxbS.json index a31b01fc..f067f8b2 100644 --- a/data/packs/monsters.db/grab__N8oyIsMpLptBAxbS.json +++ b/data/packs/monsters.db/grab__N8oyIsMpLptBAxbS.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      One target in near DC 15 STR or wrapped in grimlow's tongue and pulled into its mouth. Bite attacks automatically hit the target. Can only grab 1 target at a time. DC 15 STR on turn to break free.

      ", + "description": "

      One target in near [[check 15 str]] or wrapped in grimlow's tongue and pulled into its mouth. Bite attacks automatically hit the target. Can only grab 1 target at a time. [[check 15 str]] on turn to break free.

      ", "predefinedEffects": "", "ranges": [ ], diff --git a/data/packs/monsters.db/grab__bxIItkpH2Cix9D0q.json b/data/packs/monsters.db/grab__bxIItkpH2Cix9D0q.json index 67c56a13..08c842c3 100644 --- a/data/packs/monsters.db/grab__bxIItkpH2Cix9D0q.json +++ b/data/packs/monsters.db/grab__bxIItkpH2Cix9D0q.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Grab", "system": { - "description": "

      DC 18 STR or target bound in whip. [[/r 2d6]] damage per round held, DC 18 STR on turn to break free. In place of fire whip attack, balor can fling a grabbed target double near on its turn.

      ", + "description": "

      [[check 18 str]] or target bound in whip. [[/r 2d6]] damage per round held, [[check 18 str]] on turn to break free. In place of fire whip attack, balor can fling a grabbed target double near on its turn.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/grab__lgOTiUpoDRhYY7ED.json b/data/packs/monsters.db/grab__lgOTiUpoDRhYY7ED.json index 6fb9048f..16aef724 100644 --- a/data/packs/monsters.db/grab__lgOTiUpoDRhYY7ED.json +++ b/data/packs/monsters.db/grab__lgOTiUpoDRhYY7ED.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Grab", "system": { - "description": "

      DC 12 STR or target held. DC 12 STR on turn to break free.

      ", + "description": "

      [[check 12 str]] or target held. [[check 12 str]] on turn to break free.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/grab__mmUvkBu6yarcYl4c.json b/data/packs/monsters.db/grab__mmUvkBu6yarcYl4c.json index 8c0c9d46..777eed6d 100644 --- a/data/packs/monsters.db/grab__mmUvkBu6yarcYl4c.json +++ b/data/packs/monsters.db/grab__mmUvkBu6yarcYl4c.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Grab", "system": { - "description": "

      Target is immobilized. DC 15 Strength check on turn to break free.

      ", + "description": "

      Target is immobilized. [[check 15 str]] check on turn to break free.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/grab__pL0pj5NHWX85KO00.json b/data/packs/monsters.db/grab__pL0pj5NHWX85KO00.json index 72b04972..db891a7e 100644 --- a/data/packs/monsters.db/grab__pL0pj5NHWX85KO00.json +++ b/data/packs/monsters.db/grab__pL0pj5NHWX85KO00.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Grab", "system": { - "description": "

      DC 15 STR or target trapped in tendril. Tendril auto-hits target next round. DC 15 STR on turn to break free.

      ", + "description": "

      [[check 15 str]] or target trapped in tendril. Tendril auto-hits target next round. [[check 15 str]] on turn to break free.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/grick__Jn5JjEPCUT86txAg.json b/data/packs/monsters.db/grick__Jn5JjEPCUT86txAg.json index f4b03e6a..689727ae 100644 --- a/data/packs/monsters.db/grick__Jn5JjEPCUT86txAg.json +++ b/data/packs/monsters.db/grick__Jn5JjEPCUT86txAg.json @@ -140,7 +140,7 @@ }, "move": "near", "moveNote": "climb", - "notes": "\n\t

      A huge worm with four suckered tentacles and a snapping beak.

      \n\t

      \n\t

      AC 14, HP 19, ATK 1 beak +3 (1d8) and 1 tentacle +3 (1d6 + grab), MV near (climb), S +3, D +2, C +1, I -3, W +1, Ch -3, AL N, LV 4

      \n\t

      Camouflage. Hard to see in cave terrain or rocks.

      Grab. Target is immobilized. DC 15 Strength check on turn to break free.

      ", + "notes": "\n\t

      A huge worm with four suckered tentacles and a snapping beak.

      \n\t

      \n\t

      AC 14, HP 19, ATK 1 beak +3 (1d8) and 1 tentacle +3 (1d6 + grab), MV near (climb), S +3, D +2, C +1, I -3, W +1, Ch -3, AL N, LV 4

      \n\t

      Camouflage. Hard to see in cave terrain or rocks.

      Grab. Target is immobilized. [[check 15 str]] check on turn to break free.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/grimlow__A6QrevZXpJ0SeiIv.json b/data/packs/monsters.db/grimlow__A6QrevZXpJ0SeiIv.json index d93f055a..f8ccabf4 100644 --- a/data/packs/monsters.db/grimlow__A6QrevZXpJ0SeiIv.json +++ b/data/packs/monsters.db/grimlow__A6QrevZXpJ0SeiIv.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A tall, oval-shaped mammal. A giant, half-moon maw hides on its belly beneath its gray fur.

      \n\t

      \n\t

      AC 12, HP 43, ATK 1 grab and 3 bite +6 (2d8), MV near, S +4, D +2, C +3, I -3, W +1, Ch -2, AL N, LV 9

      \n\t

      Grab. One target in near DC 15 STR or wrapped in grimlow's tongue and pulled into its mouth. Bite attacks automatically hit the target. Can only grab 1 target at a time. DC 15 STR on turn to break free.

      ", + "notes": "\n\t

      A tall, oval-shaped mammal. A giant, half-moon maw hides on its belly beneath its gray fur.

      \n\t

      \n\t

      AC 12, HP 43, ATK 1 grab and 3 bite +6 (2d8), MV near, S +4, D +2, C +3, I -3, W +1, Ch -2, AL N, LV 9

      \n\t

      Grab. One target in near [[check 15 str]] or wrapped in grimlow's tongue and pulled into its mouth. Bite attacks automatically hit the target. Can only grab 1 target at a time. [[check 15 str]] on turn to break free.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/hag__night__hi47xC8rfvviBoOO.json b/data/packs/monsters.db/hag__night__hi47xC8rfvviBoOO.json index 3540a7ee..fa9baeb5 100644 --- a/data/packs/monsters.db/hag__night__hi47xC8rfvviBoOO.json +++ b/data/packs/monsters.db/hag__night__hi47xC8rfvviBoOO.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A purple-skinned, stooped woman with stringy, white hair and a mouth full of iron teeth.

      \n\t

      \n\t

      AC 14, HP 37, ATK 2 bite +6 (1d10) and 1 blind, MV near, S +4, D +2, C +1, I +2, W +3, Ch +3, AL C, LV 8

      \n\t

      Blind. One target within near DC 15 CHA or blinded for 1d4 days.

      Shapechange. Instantly change to look like any other humanoid.

      ", + "notes": "\n\t

      A purple-skinned, stooped woman with stringy, white hair and a mouth full of iron teeth.

      \n\t

      \n\t

      AC 14, HP 37, ATK 2 bite +6 (1d10) and 1 blind, MV near, S +4, D +2, C +1, I +2, W +3, Ch +3, AL C, LV 8

      \n\t

      Blind. One target within near [[check 15 cha]] or blinded for 1d4 days.

      Shapechange. Instantly change to look like any other humanoid.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/hag__sea__vSA5WApOVd99itBh.json b/data/packs/monsters.db/hag__sea__vSA5WApOVd99itBh.json index 88cc53b7..e3cc042b 100644 --- a/data/packs/monsters.db/hag__sea__vSA5WApOVd99itBh.json +++ b/data/packs/monsters.db/hag__sea__vSA5WApOVd99itBh.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "swim", - "notes": "\n\t

      A green, sunken-faced woman. Seaweed hair and oozing flesh.

      \n\t

      \n\t

      AC 15, HP 28, ATK 2 claw +4 (1d8), MV near (swim), S +2, D +3, C +1, I +1, W +2, Ch +2, AL C, LV 6

      \n\t

      Shapechange. Instantly change to look like any other humanoid.

      Terrify. A creature who first sees her true form DC 15 CHA or DISADV on attacks 1d4 rounds.

      ", + "notes": "\n\t

      A green, sunken-faced woman. Seaweed hair and oozing flesh.

      \n\t

      \n\t

      AC 15, HP 28, ATK 2 claw +4 (1d8), MV near (swim), S +2, D +3, C +1, I +1, W +2, Ch +2, AL C, LV 6

      \n\t

      Shapechange. Instantly change to look like any other humanoid.

      Terrify. A creature who first sees her true form [[check 15 cha]] or DISADV on attacks 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/hag__weald__9q5O77FFFJ7pTjhL.json b/data/packs/monsters.db/hag__weald__9q5O77FFFJ7pTjhL.json index 9f0a7a23..db049df3 100644 --- a/data/packs/monsters.db/hag__weald__9q5O77FFFJ7pTjhL.json +++ b/data/packs/monsters.db/hag__weald__9q5O77FFFJ7pTjhL.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Eyes dark as moonless nights, skin made of rotting wood, hair of tangled roots and vines.

      \n\t

      \n\t

      AC 14, HP 28, ATK 2 claw +4 (1d8) or 1 drink pain, MV near, S +3, D +2, C +1, I +1, W +2, Ch +3, AL C, LV 6

      \n\t

      Drink Pain. Near range. DC 12 CHA to deal 2d4 damage to a creature; regain that many HP.

      Shapechange. Instantly change to look like any other humanoid.

      ", + "notes": "\n\t

      Eyes dark as moonless nights, skin made of rotting wood, hair of tangled roots and vines.

      \n\t

      \n\t

      AC 14, HP 28, ATK 2 claw +4 (1d8) or 1 drink pain, MV near, S +3, D +2, C +1, I +1, W +2, Ch +3, AL C, LV 6

      \n\t

      Drink Pain. Near range. [[check 12 cha]] to deal 2d4 damage to a creature; regain that many HP.

      Shapechange. Instantly change to look like any other humanoid.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/harpy__CsQXDNmBDfao8hij.json b/data/packs/monsters.db/harpy__CsQXDNmBDfao8hij.json index 8b006cb7..73d40299 100644 --- a/data/packs/monsters.db/harpy__CsQXDNmBDfao8hij.json +++ b/data/packs/monsters.db/harpy__CsQXDNmBDfao8hij.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      Horrific, winged women with vulture-like lower bodies. They keen a hypnotic song.

      \n\t

      \n\t

      AC 13, HP 14, ATK 2 claw +3 (1d6) or 1 song, MV near (fly), S +1, D +3, C +1, I +0, W +0, Ch +1, AL C, LV 3

      \n\t

      Song. Enemies who can hear within double near DC 12 CHA or dazed and drawn to harpy for 1d4 rounds. Immune for 1 day if passed check.

      ", + "notes": "\n\t

      Horrific, winged women with vulture-like lower bodies. They keen a hypnotic song.

      \n\t

      \n\t

      AC 13, HP 14, ATK 2 claw +3 (1d6) or 1 song, MV near (fly), S +1, D +3, C +1, I +0, W +0, Ch +1, AL C, LV 3

      \n\t

      Song. Enemies who can hear within double near [[check 12 cha]] or dazed and drawn to harpy for 1d4 rounds. Immune for 1 day if passed check.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/heat_aura__5YsUPEHykPlLmQJf.json b/data/packs/monsters.db/heat_aura__5YsUPEHykPlLmQJf.json index f2b1461d..7843fb24 100644 --- a/data/packs/monsters.db/heat_aura__5YsUPEHykPlLmQJf.json +++ b/data/packs/monsters.db/heat_aura__5YsUPEHykPlLmQJf.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Heat Aura", "system": { - "description": "

      Creatures within near of phoenix at start of turn DC 15 CON or [[/r 2d6]] damage.

      ", + "description": "

      Creatures within near of phoenix at start of turn [[check 15 con]] or [[/r 2d6]] damage.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/heat_aura__qdYSq7BfKFsmWzQX.json b/data/packs/monsters.db/heat_aura__qdYSq7BfKFsmWzQX.json index 54e35419..fded8958 100644 --- a/data/packs/monsters.db/heat_aura__qdYSq7BfKFsmWzQX.json +++ b/data/packs/monsters.db/heat_aura__qdYSq7BfKFsmWzQX.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Heat Aura", "system": { - "description": "

      Creatures in close DC 12 CON on turn or [[/r 1d8]] damage.

      ", + "description": "

      Creatures in close [[check 12 con]] on turn or [[/r 1d8]] damage.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/hell_hound__PAb9czULqynbNnKj.json b/data/packs/monsters.db/hell_hound__PAb9czULqynbNnKj.json index b0882c66..f38078bc 100644 --- a/data/packs/monsters.db/hell_hound__PAb9czULqynbNnKj.json +++ b/data/packs/monsters.db/hell_hound__PAb9czULqynbNnKj.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "", - "notes": "\n\t

      Black wolfhounds with red eyes and jaws dripping with flames.

      \n\t

      \n\t

      AC 13, HP 19, ATK 2 bite +4 (1d8) or 1 fire breath, MV double near, S +2, D +1, C +1, I -2, W +1, Ch -3, AL C, LV 4

      \n\t

      Impervious. Fire immune.

      Fire Breath. Fills a near-sized cube extending from hell hound. DC 15 DEX or 3d8 damage. Cannot use again for 1d4 rounds.

      ", + "notes": "\n\t

      Black wolfhounds with red eyes and jaws dripping with flames.

      \n\t

      \n\t

      AC 13, HP 19, ATK 2 bite +4 (1d8) or 1 fire breath, MV double near, S +2, D +1, C +1, I -2, W +1, Ch -3, AL C, LV 4

      \n\t

      Impervious. Fire immune.

      Fire Breath. Fills a near-sized cube extending from hell hound. [[check 15 dex]] or 3d8 damage. Cannot use again for 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/hellfire__NbUw02jTaenW8Vp6.json b/data/packs/monsters.db/hellfire__NbUw02jTaenW8Vp6.json index 9caf0231..fcbea471 100644 --- a/data/packs/monsters.db/hellfire__NbUw02jTaenW8Vp6.json +++ b/data/packs/monsters.db/hellfire__NbUw02jTaenW8Vp6.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Hellfire", "system": { - "description": "

      DC 18 DEX or [[/r 2d8]] damage per round until flames extinguished.

      ", + "description": "

      [[check 18 dex]] or [[/r 2d8]] damage per round until flames extinguished.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/horn__li5WO5TO9K1JNurG.json b/data/packs/monsters.db/horn__li5WO5TO9K1JNurG.json index ef577222..9c40d82d 100644 --- a/data/packs/monsters.db/horn__li5WO5TO9K1JNurG.json +++ b/data/packs/monsters.db/horn__li5WO5TO9K1JNurG.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      All enemies in near DC 15 CHA or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      All enemies in near [[check 15 cha]] or paralyzed [[/r 1d4]] rounds.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/ice_aura__J63TUijUBeGFhaCw.json b/data/packs/monsters.db/ice_aura__J63TUijUBeGFhaCw.json index c1752c94..ea574c3a 100644 --- a/data/packs/monsters.db/ice_aura__J63TUijUBeGFhaCw.json +++ b/data/packs/monsters.db/ice_aura__J63TUijUBeGFhaCw.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Ice Aura", "system": { - "description": "

      Enemies within near of rime walker DC 12 CON at start of turn or lose action.

      ", + "description": "

      Enemies within near of rime walker [[check 12 con]] at start of turn or lose action.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/ice_breath__gZbLx66mCcYtGmrA.json b/data/packs/monsters.db/ice_breath__gZbLx66mCcYtGmrA.json index e766ef28..a45ed2ba 100644 --- a/data/packs/monsters.db/ice_breath__gZbLx66mCcYtGmrA.json +++ b/data/packs/monsters.db/ice_breath__gZbLx66mCcYtGmrA.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Fills a double near-sized cube extending from dragon. DC 15 DEX or [[/r 4d8]] damage and frozen for 1 round.

      ", + "description": "

      Fills a double near-sized cube extending from dragon. [[check 15 dex]] or [[/r 4d8]] damage and frozen for 1 round.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/inferno__PPXVvb1maJzU52wR.json b/data/packs/monsters.db/inferno__PPXVvb1maJzU52wR.json index 54598e1f..2e014b14 100644 --- a/data/packs/monsters.db/inferno__PPXVvb1maJzU52wR.json +++ b/data/packs/monsters.db/inferno__PPXVvb1maJzU52wR.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      All within near DC 15 DEX or [[/r 3d8]] damage.

      ", + "description": "

      All within near [[check 15 dex]] or [[/r 3d8]] damage.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/inferno__Y5R7txciv069WSAr.json b/data/packs/monsters.db/inferno__Y5R7txciv069WSAr.json index 43df998d..f5d5b7e8 100644 --- a/data/packs/monsters.db/inferno__Y5R7txciv069WSAr.json +++ b/data/packs/monsters.db/inferno__Y5R7txciv069WSAr.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      All within near DC 15 DEX or [[/r 3d8]] damage.

      ", + "description": "

      All within near [[check 15 dex]] or [[/r 3d8]] damage.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/jellyfish__uNah6fsgfkt4Aiet.json b/data/packs/monsters.db/jellyfish__uNah6fsgfkt4Aiet.json index 6f5f47a8..122a1b91 100644 --- a/data/packs/monsters.db/jellyfish__uNah6fsgfkt4Aiet.json +++ b/data/packs/monsters.db/jellyfish__uNah6fsgfkt4Aiet.json @@ -138,7 +138,7 @@ }, "move": "close", "moveNote": "swim", - "notes": "\n\t

      Hand-sized, purple sea jellies with stinging tentacles.

      \n\t

      \n\t

      AC 11, HP 1, ATK 1 sting +1 (1 + toxin), MV close (swim), S -4, D +1, C +0, I -4, W +1, Ch -4, AL N, LV 0

      \n\t

      Toxin. DC 9 CON or paralyzed 1d4 rounds.

      ", + "notes": "\n\t

      Hand-sized, purple sea jellies with stinging tentacles.

      \n\t

      \n\t

      AC 11, HP 1, ATK 1 sting +1 (1 + toxin), MV close (swim), S -4, D +1, C +0, I -4, W +1, Ch -4, AL N, LV 0

      \n\t

      Toxin. [[check 9 con]] or paralyzed 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/knock__FOpL4BeAdJcgriOe.json b/data/packs/monsters.db/knock__FOpL4BeAdJcgriOe.json index 510b7dde..33e2724f 100644 --- a/data/packs/monsters.db/knock__FOpL4BeAdJcgriOe.json +++ b/data/packs/monsters.db/knock__FOpL4BeAdJcgriOe.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Knock", "system": { - "description": "

      DC 9 STR or pushed a close distance and fall down.

      ", + "description": "

      [[check 9 str]] or pushed a close distance and fall down.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/knock__weIDcJAt1hdml23N.json b/data/packs/monsters.db/knock__weIDcJAt1hdml23N.json index e4815829..31617288 100644 --- a/data/packs/monsters.db/knock__weIDcJAt1hdml23N.json +++ b/data/packs/monsters.db/knock__weIDcJAt1hdml23N.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Knock", "system": { - "description": "

      DC 9 STR or pushed a close distance and fall down.

      ", + "description": "

      [[check 9 str]] or pushed a close distance and fall down.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/kraken__4A7ELy7Oj4YKRqTf.json b/data/packs/monsters.db/kraken__4A7ELy7Oj4YKRqTf.json index de246a2e..4acd8e8f 100644 --- a/data/packs/monsters.db/kraken__4A7ELy7Oj4YKRqTf.json +++ b/data/packs/monsters.db/kraken__4A7ELy7Oj4YKRqTf.json @@ -141,7 +141,7 @@ }, "move": "doubleNear", "moveNote": "swim", - "notes": "\n\t

      Primordial, tentacled leviathans the size of war galleons. They live in the lightless depths of the deep ocean.

      \n\t

      \n\t

      AC 18, HP 80, ATK 4 tentacle (near) +9 (2d12) or 1 storm or 1d4 lightning bolt, MV double near (swim), S +6, D +3, C +4, I +4, W +3, Ch +4, AL C, LV 17

      \n\t

      Impervious. Electricity immune.

      Crush. Tentacle attacks deal double damage against objects.

      Lightning Bolt. Straight line (5' wide) extending far from kraken. DC 15 DEX or 6d6 damage.

      Storm. Seas become violently turbulent in 1 mile radius around kraken. Lasts 2d4 rounds. Seaborne vessels have a 1:6 chance of capsizing each round.

      ", + "notes": "\n\t

      Primordial, tentacled leviathans the size of war galleons. They live in the lightless depths of the deep ocean.

      \n\t

      \n\t

      AC 18, HP 80, ATK 4 tentacle (near) +9 (2d12) or 1 storm or 1d4 lightning bolt, MV double near (swim), S +6, D +3, C +4, I +4, W +3, Ch +4, AL C, LV 17

      \n\t

      Impervious. Electricity immune.

      Crush. Tentacle attacks deal double damage against objects.

      Lightning Bolt. Straight line (5' wide) extending far from kraken. [[check 15 dex]] or 6d6 damage.

      Storm. Seas become violently turbulent in 1 mile radius around kraken. Lasts 2d4 rounds. Seaborne vessels have a 1:6 chance of capsizing each round.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/latch__yleJaQMbBi2Nvj8z.json b/data/packs/monsters.db/latch__yleJaQMbBi2Nvj8z.json index bfb3dea2..46deb89f 100644 --- a/data/packs/monsters.db/latch__yleJaQMbBi2Nvj8z.json +++ b/data/packs/monsters.db/latch__yleJaQMbBi2Nvj8z.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Latch", "system": { - "description": "

      Tentacles attach to hit targets, automatically hitting the next round (DC 12 STR on turn to remove [[/r 1d4]] tentacles). If all four remain latched onto the same humanoid target for 1 round, the target's brain is ripped out and devoured.

      ", + "description": "

      Tentacles attach to hit targets, automatically hitting the next round ([[check 12 str]] on turn to remove [[/r 1d4]] tentacles). If all four remain latched onto the same humanoid target for 1 round, the target's brain is ripped out and devoured.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/latch__zu47R0LLpuiqpW9b.json b/data/packs/monsters.db/latch__zu47R0LLpuiqpW9b.json index f2b7445e..756e20de 100644 --- a/data/packs/monsters.db/latch__zu47R0LLpuiqpW9b.json +++ b/data/packs/monsters.db/latch__zu47R0LLpuiqpW9b.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Latch", "system": { - "description": "

      Attach to bitten target; bites auto-hit next round. DC 12 STR on turn to tear off.

      ", + "description": "

      Attach to bitten target; bites auto-hit next round. [[check 12 str]] on turn to tear off.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/leech__giant__UGsq7I9Gyahgd0dG.json b/data/packs/monsters.db/leech__giant__UGsq7I9Gyahgd0dG.json index d76c6491..9801553b 100644 --- a/data/packs/monsters.db/leech__giant__UGsq7I9Gyahgd0dG.json +++ b/data/packs/monsters.db/leech__giant__UGsq7I9Gyahgd0dG.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "swim", - "notes": "\n\t

      A glossy black, blood-drinking slug as large as a cat.

      \n\t

      \n\t

      AC 9, HP 10, ATK 1 bite +1 (1d4 + attach), MV near (swim), S +1, D -1, C +1, I -3, W -1, Ch -3, AL N, LV 2

      \n\t

      Attach. Attach to target; bite auto-hits next round. DC 12 STR on turn to tear off.

      ", + "notes": "\n\t

      A glossy black, blood-drinking slug as large as a cat.

      \n\t

      \n\t

      AC 9, HP 10, ATK 1 bite +1 (1d4 + attach), MV near (swim), S +1, D -1, C +1, I -3, W -1, Ch -3, AL N, LV 2

      \n\t

      Attach. Attach to target; bite auto-hits next round. [[check 12 str]] on turn to tear off.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/lich__sncxcSi6ziTStjAh.json b/data/packs/monsters.db/lich__sncxcSi6ziTStjAh.json index e6289f7b..3da2e4cc 100644 --- a/data/packs/monsters.db/lich__sncxcSi6ziTStjAh.json +++ b/data/packs/monsters.db/lich__sncxcSi6ziTStjAh.json @@ -145,7 +145,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A wizard who has completed a necromantic ritual to become a mighty, undead sorcerer. Its withered body is draped in moldering, silk robes, and red marshlights burn in its eyes.

      \n\t

      \n\t

      AC 16, HP 62, ATK 2 touch +6 (2d8 + paralysis) and 2 spell +7, MV near, S +3, D +1, C +4, I +4, W +3, Ch +3, AL C, LV 13

      \n\t

      Supreme Undead. Immune to morale checks. Only damaged by magical sources.

      Phylactery. Can't be killed while spirit vessel (an object) is intact.

      Paralysis. DC 15 CON or paralyzed 1d4 rounds.

      Flight (INT Spell). Self. DC 13. Fly double near for 5 rounds.

      Null (INT Spell). Self. DC 14. Hostile spells targeting lich are DC 18 to cast. Lasts 1d4 rounds.

      Shadow Leap (INT Spell). Self. DC 14. Teleport up to 100 miles.

      Sigil of Doom (INT Spell). DC 15. One target of LV 9 or less within near DC 15 CON or go to 0 HP.

      Wither (INT Spell). DC 14. 4d8 damage to enemies within a near-sized cube centered on lich.

      ", + "notes": "\n\t

      A wizard who has completed a necromantic ritual to become a mighty, undead sorcerer. Its withered body is draped in moldering, silk robes, and red marshlights burn in its eyes.

      \n\t

      \n\t

      AC 16, HP 62, ATK 2 touch +6 (2d8 + paralysis) and 2 spell +7, MV near, S +3, D +1, C +4, I +4, W +3, Ch +3, AL C, LV 13

      \n\t

      Supreme Undead. Immune to morale checks. Only damaged by magical sources.

      Phylactery. Can't be killed while spirit vessel (an object) is intact.

      Paralysis. [[check 15 con]] or paralyzed 1d4 rounds.

      Flight (INT Spell). Self. DC 13. Fly double near for 5 rounds.

      Null (INT Spell). Self. DC 14. Hostile spells targeting lich are DC 18 to cast. Lasts 1d4 rounds.

      Shadow Leap (INT Spell). Self. DC 14. Teleport up to 100 miles.

      Sigil of Doom (INT Spell). DC 15. One target of LV 9 or less within near [[check 15 con]] or go to 0 HP.

      Wither (INT Spell). DC 14. 4d8 damage to enemies within a near-sized cube centered on lich.

      ", "spellcastingAbility": "int", "spellcastingAttackNum": 2, "spellcastingBonus": 7 diff --git a/data/packs/monsters.db/lightning_bolt__2XX0WwozYVrkP5zc.json b/data/packs/monsters.db/lightning_bolt__2XX0WwozYVrkP5zc.json index 02fde33e..cecc0377 100644 --- a/data/packs/monsters.db/lightning_bolt__2XX0WwozYVrkP5zc.json +++ b/data/packs/monsters.db/lightning_bolt__2XX0WwozYVrkP5zc.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Straight line (5' wide) extending far from kraken. DC 15 DEX or [[/r 6d6]] damage.

      ", + "description": "

      Straight line (5' wide) extending far from kraken. [[check 15 dex]] or [[/r 6d6]] damage.

      ", "predefinedEffects": "", "ranges": [ ], diff --git a/data/packs/monsters.db/lightning_bolt__wj2rkGw3Kck44h4j.json b/data/packs/monsters.db/lightning_bolt__wj2rkGw3Kck44h4j.json index c5a5b321..14b50937 100644 --- a/data/packs/monsters.db/lightning_bolt__wj2rkGw3Kck44h4j.json +++ b/data/packs/monsters.db/lightning_bolt__wj2rkGw3Kck44h4j.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      3/day, 5' wide line extending far from giant. All creatures in line DC 15 DEX or [[/r 5d10]] damage. DISADV on check if in water.

      ", + "description": "

      3/day, 5' wide line extending far from giant. All creatures in line [[check 15 dex]] or [[/r 5d10]] damage. DISADV on check if in water.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/lightning_breath__wauGopnTnoT0JIbU.json b/data/packs/monsters.db/lightning_breath__wauGopnTnoT0JIbU.json index f6aaed13..ba1cfe37 100644 --- a/data/packs/monsters.db/lightning_breath__wauGopnTnoT0JIbU.json +++ b/data/packs/monsters.db/lightning_breath__wauGopnTnoT0JIbU.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      A straight line (5' wide) extending double near from dragon. DC 15 DEX or [[/r 4d8]] damage (DISADV on check if wearing metal armor).

      ", + "description": "

      A straight line (5' wide) extending double near from dragon. [[check 15 dex]] or [[/r 4d8]] damage (DISADV on check if wearing metal armor).

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/manta_ray__giant__QhFsevIc23TsTHZE.json b/data/packs/monsters.db/manta_ray__giant__QhFsevIc23TsTHZE.json index 0cb78c69..1b82a7f0 100644 --- a/data/packs/monsters.db/manta_ray__giant__QhFsevIc23TsTHZE.json +++ b/data/packs/monsters.db/manta_ray__giant__QhFsevIc23TsTHZE.json @@ -138,7 +138,7 @@ }, "move": "doubleNear", "moveNote": "swim", - "notes": "\n\t

      Swooping manta rays as large as longboats. Gentle and intelligent enough to be trained.

      \n\t

      \n\t

      AC 13, HP 37, ATK 2 sting +5 (1d12 + poison), MV double near (swim), S +3, D +3, C +1, I -2, W +1, Ch -3, AL N, LV 8

      \n\t

      Poison. DC 15 CON or drop to 0 hit points in 1d4 rounds.

      ", + "notes": "\n\t

      Swooping manta rays as large as longboats. Gentle and intelligent enough to be trained.

      \n\t

      \n\t

      AC 13, HP 37, ATK 2 sting +5 (1d12 + poison), MV double near (swim), S +3, D +3, C +1, I -2, W +1, Ch -3, AL N, LV 8

      \n\t

      Poison. [[check 15 con]] or drop to 0 hit points in 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/medusa__u05UfQ9hKno0bwWj.json b/data/packs/monsters.db/medusa__u05UfQ9hKno0bwWj.json index 8ca9e47e..cc1d0c82 100644 --- a/data/packs/monsters.db/medusa__u05UfQ9hKno0bwWj.json +++ b/data/packs/monsters.db/medusa__u05UfQ9hKno0bwWj.json @@ -140,7 +140,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Immortal women with coiling snakes for hair and scaled skin.

      \n\t

      \n\t

      AC 14, HP 38, ATK 1 snake bite +6 (1d6 + poison), MV near, S +2, D +1, C +2, I +2, W +3, Ch +4, AL C, LV 8

      \n\t

      Godborn. Hostile spells targeting the medusa are DC 15 to cast.

      Petrify. Any creature (including medusa) who looks directly at medusa, DC 15 CON or petrified.

      Poison. DC 15 CON or go to 0 HP.

      ", + "notes": "\n\t

      Immortal women with coiling snakes for hair and scaled skin.

      \n\t

      \n\t

      AC 14, HP 38, ATK 1 snake bite +6 (1d6 + poison), MV near, S +2, D +1, C +2, I +2, W +3, Ch +4, AL C, LV 8

      \n\t

      Godborn. Hostile spells targeting the medusa are DC 15 to cast.

      Petrify. Any creature (including medusa) who looks directly at medusa, [[check 15 con]] or petrified.

      Poison. [[check 15 con]] or go to 0 HP.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/mimic__LFx9hb8JlEfGxDaI.json b/data/packs/monsters.db/mimic__LFx9hb8JlEfGxDaI.json index 6a8a3b41..d494d230 100644 --- a/data/packs/monsters.db/mimic__LFx9hb8JlEfGxDaI.json +++ b/data/packs/monsters.db/mimic__LFx9hb8JlEfGxDaI.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Beasts that look like objects.

      \n\t

      \n\t

      AC 12, HP 23, ATK 2 bite +5 (1d8 + stick), MV near, S +2, D +0, C +1, I -2, W +0, Ch -3, AL N, LV 5

      \n\t

      Stick. DC 15 STR or adhere to target; auto-hit with bite. DC 15 STR on turn to remove.

      ", + "notes": "\n\t

      Beasts that look like objects.

      \n\t

      \n\t

      AC 12, HP 23, ATK 2 bite +5 (1d8 + stick), MV near, S +2, D +0, C +1, I -2, W +0, Ch -3, AL N, LV 5

      \n\t

      Stick. [[check 15 str]] or adhere to target; auto-hit with bite. [[check 15 str]] on turn to remove.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/mind_blast__ZuKLfwSmv5cpZCpg.json b/data/packs/monsters.db/mind_blast__ZuKLfwSmv5cpZCpg.json index 15bf007d..722f124e 100644 --- a/data/packs/monsters.db/mind_blast__ZuKLfwSmv5cpZCpg.json +++ b/data/packs/monsters.db/mind_blast__ZuKLfwSmv5cpZCpg.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Fills a near-sized cube extending from brain eater. DC 15 INT or [[/r 3d6]] damage and paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      Fills a near-sized cube extending from brain eater. [[check 15 int]] or [[/r 3d6]] damage and paralyzed [[/r 1d4]] rounds.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/mind_control__apnNTADkCWr7LQkl.json b/data/packs/monsters.db/mind_control__apnNTADkCWr7LQkl.json index 43fec91e..da89324a 100644 --- a/data/packs/monsters.db/mind_control__apnNTADkCWr7LQkl.json +++ b/data/packs/monsters.db/mind_control__apnNTADkCWr7LQkl.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      One target in near DC 15 CHA or brain eater controls for [[/r 1d4]] rounds.

      ", + "description": "

      One target in near [[check 15 cha]] or brain eater controls for [[/r 1d4]] rounds.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/mordanticus_the_flayed__DP8n8iIiU1Qostjv.json b/data/packs/monsters.db/mordanticus_the_flayed__DP8n8iIiU1Qostjv.json index dd3e1732..5332d588 100644 --- a/data/packs/monsters.db/mordanticus_the_flayed__DP8n8iIiU1Qostjv.json +++ b/data/packs/monsters.db/mordanticus_the_flayed__DP8n8iIiU1Qostjv.json @@ -147,7 +147,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A skinless mummy-lich wearing a crown set with nine bright gems. Once the head of the ancient, wizardly order of Gehemna, Mordanticus now lives in secret within the sanctum of Gehemna's reigning archmage. He has served as an advisor and historian for centuries, but an enduring enchantment prevents him from speaking of two topics: his origins, and The Ten-Eyed Oracle.

      \n\t

      \n\t

      AC 17, HP 89, ATK 1 rot touch +8 (1d10 + necrosis) and 3 spell +8, MV near, S +4, D +4, C +4, I +5, W +4, Ch +5, AL N, LV 19

      \n\t

      Legendary Undead. Immune to morale checks. Only damaged by magical sources. Hostile spells targeting Mordanticus are DC 18 to cast.

      Crown of Gehemna. 3/day, cause a spell being cast within far to fail.

      Necrosis. DC 15 CON or go to 0 HP. Healing spells are DC 15 to cast on target while at 0 HP due to this effect.

      Phylactery. Cannot be killed while spirit vessel (a diamond) is intact.

      Absorb (INT Spell). DC 13. Near, one target. Target loses the ability to cast one random spell until completing a rest, and Mordanticus regains a lost spell of the same tier or less.

      Banish (INT Spell). DC 14. All extradimensional creatures within near DC 15 CHA or sent back to their home planes.

      Bind (INT Spell). DC 12. One humanoid in far paralyzed 1d4 rounds.

      Blast (INT Spell). DC 14. One creature in near takes 5d8 damage.

      Phase (INT Spell). DC 13. Self. Teleport up to one mile.

      True Name (INT Spell). DC 15. Near. Learn the True Name of target.

      ", + "notes": "\n\t

      A skinless mummy-lich wearing a crown set with nine bright gems. Once the head of the ancient, wizardly order of Gehemna, Mordanticus now lives in secret within the sanctum of Gehemna's reigning archmage. He has served as an advisor and historian for centuries, but an enduring enchantment prevents him from speaking of two topics: his origins, and The Ten-Eyed Oracle.

      \n\t

      \n\t

      AC 17, HP 89, ATK 1 rot touch +8 (1d10 + necrosis) and 3 spell +8, MV near, S +4, D +4, C +4, I +5, W +4, Ch +5, AL N, LV 19

      \n\t

      Legendary Undead. Immune to morale checks. Only damaged by magical sources. Hostile spells targeting Mordanticus are DC 18 to cast.

      Crown of Gehemna. 3/day, cause a spell being cast within far to fail.

      Necrosis. [[check 15 con]] or go to 0 HP. Healing spells are DC 15 to cast on target while at 0 HP due to this effect.

      Phylactery. Cannot be killed while spirit vessel (a diamond) is intact.

      Absorb (INT Spell). DC 13. Near, one target. Target loses the ability to cast one random spell until completing a rest, and Mordanticus regains a lost spell of the same tier or less.

      Banish (INT Spell). DC 14. All extradimensional creatures within near [[check 15 cha]] or sent back to their home planes.

      Bind (INT Spell). DC 12. One humanoid in far paralyzed 1d4 rounds.

      Blast (INT Spell). DC 14. One creature in near takes 5d8 damage.

      Phase (INT Spell). DC 13. Self. Teleport up to one mile.

      True Name (INT Spell). DC 15. Near. Learn the True Name of target.

      ", "spellcastingAbility": "int", "spellcastingAttackNum": 3, "spellcastingBonus": 8 diff --git a/data/packs/monsters.db/mummy__kY87zSryGuQ963Ba.json b/data/packs/monsters.db/mummy__kY87zSryGuQ963Ba.json index 9219e72c..bb747623 100644 --- a/data/packs/monsters.db/mummy__kY87zSryGuQ963Ba.json +++ b/data/packs/monsters.db/mummy__kY87zSryGuQ963Ba.json @@ -140,7 +140,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A desiccated, linen-wrapped zombie. It was created with an intricate embalming ritual used only upon the most worthy warriors or rulers.

      \n\t

      \n\t

      AC 13, HP 47, ATK 3 rot touch +8 (1d10 + necrosis), MV near, S +3, D +0, C +2, I +3, W +2, Ch +3, AL C, LV 10

      \n\t

      Supreme Undead. Immune to morale checks. Only damaged by magical sources.

      Desiccated. Can be damaged by fire. Takes x2 damage from it.

      Necrosis. DC 15 CON or drop to 0 HP. Healing spells are DC 15 to cast on target while at 0 HP due to this effect.

      ", + "notes": "\n\t

      A desiccated, linen-wrapped zombie. It was created with an intricate embalming ritual used only upon the most worthy warriors or rulers.

      \n\t

      \n\t

      AC 13, HP 47, ATK 3 rot touch +8 (1d10 + necrosis), MV near, S +3, D +0, C +2, I +3, W +2, Ch +3, AL C, LV 10

      \n\t

      Supreme Undead. Immune to morale checks. Only damaged by magical sources.

      Desiccated. Can be damaged by fire. Takes x2 damage from it.

      Necrosis. [[check 15 con]] or drop to 0 HP. Healing spells are DC 15 to cast on target while at 0 HP due to this effect.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/naga__UDGXIj9pB0TdWPA6.json b/data/packs/monsters.db/naga__UDGXIj9pB0TdWPA6.json index f603a544..46a271b1 100644 --- a/data/packs/monsters.db/naga__UDGXIj9pB0TdWPA6.json +++ b/data/packs/monsters.db/naga__UDGXIj9pB0TdWPA6.json @@ -141,7 +141,7 @@ }, "move": "near", "moveNote": "climb", - "notes": "\n\t

      Magic-wielding cobras towering ten feet high. Once a dominant species, they are now rare and reclusive, bitter to the last.

      \n\t

      \n\t

      AC 16, HP 43, ATK 2 bite +7 (2d6 + poison) and 1 spell +7, MV near (climb), S +4, D +1, C +3, I +2, W +2, Ch +4, AL C, LV 9

      \n\t

      Poison. DC 15 CON or paralyzed 1d4 rounds.

      Agony (CHA Spell). DC 14. One target in near takes 3d8 damage.

      Hypnotize (CHA Spell). DC 13. Focus. One target in near range who can see naga is helplessly stupefied for duration.

      Whispers (CHA Spell). DC 12. Hostile spells cast on one target in near are DC 9 for 1d4 rounds.

      ", + "notes": "\n\t

      Magic-wielding cobras towering ten feet high. Once a dominant species, they are now rare and reclusive, bitter to the last.

      \n\t

      \n\t

      AC 16, HP 43, ATK 2 bite +7 (2d6 + poison) and 1 spell +7, MV near (climb), S +4, D +1, C +3, I +2, W +2, Ch +4, AL C, LV 9

      \n\t

      Poison. [[check 15 con]] or paralyzed 1d4 rounds.

      Agony (CHA Spell). DC 14. One target in near takes 3d8 damage.

      Hypnotize (CHA Spell). DC 13. Focus. One target in near range who can see naga is helplessly stupefied for duration.

      Whispers (CHA Spell). DC 12. Hostile spells cast on one target in near are DC 9 for 1d4 rounds.

      ", "spellcastingAbility": "cha", "spellcastingAttackNum": 1, "spellcastingBonus": 7 diff --git a/data/packs/monsters.db/necrosis__KxSRbgsadxN6ZrkQ.json b/data/packs/monsters.db/necrosis__KxSRbgsadxN6ZrkQ.json index 7e739751..e3f75e93 100644 --- a/data/packs/monsters.db/necrosis__KxSRbgsadxN6ZrkQ.json +++ b/data/packs/monsters.db/necrosis__KxSRbgsadxN6ZrkQ.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Necrosis", "system": { - "description": "

      DC 15 CON or drop to 0 HP. Healing spells are DC 15 to cast on target while at 0 HP due to this effect.

      ", + "description": "

      [[check 15 con]] or drop to 0 HP. Healing spells are DC 15 to cast on target while at 0 HP due to this effect.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/necrosis__NBwsuy6AhxrzAqER.json b/data/packs/monsters.db/necrosis__NBwsuy6AhxrzAqER.json index 9007b08f..14431079 100644 --- a/data/packs/monsters.db/necrosis__NBwsuy6AhxrzAqER.json +++ b/data/packs/monsters.db/necrosis__NBwsuy6AhxrzAqER.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Necrosis", "system": { - "description": "

      DC 15 CON or go to 0 HP. Healing spells are DC 15 to cast on target while at 0 HP due to this effect.

      ", + "description": "

      [[check 15 con]] or go to 0 HP. Healing spells are DC 15 to cast on target while at 0 HP due to this effect.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/obe_ixx_of_azarumme__6ce2xr1QmjJFMe5P.json b/data/packs/monsters.db/obe_ixx_of_azarumme__6ce2xr1QmjJFMe5P.json index 0a7e1594..47bd8afe 100644 --- a/data/packs/monsters.db/obe_ixx_of_azarumme__6ce2xr1QmjJFMe5P.json +++ b/data/packs/monsters.db/obe_ixx_of_azarumme__6ce2xr1QmjJFMe5P.json @@ -144,7 +144,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A pale, angular woman in translucent plate mail fashioned from giant scorpion chitin. Obe-Ixx, daughter of Azarumme, rose up from the prehistoric barbarian tribes of Tal-Yool to conquer all in her path. One day, she stood at the steps of an obsidian ziggurat deep within the trackless jungle. Forty nights later, Obe-Ixx emerged as the ur-vampire, bloodlust made flesh. Her dynasty would rise and fall again and again over the coming millennia.

      \n\t

      \n\t

      AC 18 ( +3 plate mail ), HP 76, ATK 4 greatsword (near) +11 (1d12 + 2 + Moonbite properties) and 1 bite +9 (1d8 + blood drain) and 1 charm, MV near (climb, fly), S +5, D +3, C +4, I +3, W +4, Ch +5, AL C, LV 16

      \n\t

      Legendary Undead. Immune to morale checks. Only damaged by magical sources. Hostile spells targeting Obe-Ixx are DC 18 to cast.

      Blood Drain. Obe-Ixx heals 2d8 HP, target permanently loses 1d6 CON. At 0 CON, target dies and rises as a loyal vampire or vampire spawn (Obe-Ixx chooses).

      Charm. One humanoid target who can see Obe-Ixx within near, DC 15 CHA or under Obe-Ixx's control for 1d4 days.

      Dire Shapechange. In place of attacks, turn into a giant bat, dire wolf, or back into regular form.

      Moonbite Properties. +2 greatsword , thrown weapon, returns after being thrown. Spells to heal damage it inflicts are DC 15 to cast.

      Ur-Vampire. Must sleep in sarcophagus at least once per moon cycle or loses 2d8 HP per day that cannot heal until sleeping in sarcophagus. Takes 3d8 damage each round while in direct sunlight. Cannot be killed unless pierced through heart while at 0 HP with a wooden stake carved from a tree from the Tal-Yool jungle.

      ", + "notes": "\n\t

      A pale, angular woman in translucent plate mail fashioned from giant scorpion chitin. Obe-Ixx, daughter of Azarumme, rose up from the prehistoric barbarian tribes of Tal-Yool to conquer all in her path. One day, she stood at the steps of an obsidian ziggurat deep within the trackless jungle. Forty nights later, Obe-Ixx emerged as the ur-vampire, bloodlust made flesh. Her dynasty would rise and fall again and again over the coming millennia.

      \n\t

      \n\t

      AC 18 ( +3 plate mail ), HP 76, ATK 4 greatsword (near) +11 (1d12 + 2 + Moonbite properties) and 1 bite +9 (1d8 + blood drain) and 1 charm, MV near (climb, fly), S +5, D +3, C +4, I +3, W +4, Ch +5, AL C, LV 16

      \n\t

      Legendary Undead. Immune to morale checks. Only damaged by magical sources. Hostile spells targeting Obe-Ixx are DC 18 to cast.

      Blood Drain. Obe-Ixx heals 2d8 HP, target permanently loses 1d6 CON. At 0 CON, target dies and rises as a loyal vampire or vampire spawn (Obe-Ixx chooses).

      Charm. One humanoid target who can see Obe-Ixx within near, [[check 15 cha]] or under Obe-Ixx's control for 1d4 days.

      Dire Shapechange. In place of attacks, turn into a giant bat, dire wolf, or back into regular form.

      Moonbite Properties. +2 greatsword , thrown weapon, returns after being thrown. Spells to heal damage it inflicts are DC 15 to cast.

      Ur-Vampire. Must sleep in sarcophagus at least once per moon cycle or loses 2d8 HP per day that cannot heal until sleeping in sarcophagus. Takes 3d8 damage each round while in direct sunlight. Cannot be killed unless pierced through heart while at 0 HP with a wooden stake carved from a tree from the Tal-Yool jungle.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/octopus__giant__h0NMkJj2DCJiQ9Zw.json b/data/packs/monsters.db/octopus__giant__h0NMkJj2DCJiQ9Zw.json index f8f17ed7..c81f8193 100644 --- a/data/packs/monsters.db/octopus__giant__h0NMkJj2DCJiQ9Zw.json +++ b/data/packs/monsters.db/octopus__giant__h0NMkJj2DCJiQ9Zw.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "swim", - "notes": "\n\t

      Octopi as large as sailing skiffs.

      \n\t

      \n\t

      AC 13, HP 23, ATK 2 tentacle (near) +4 (1d8 + grab), MV near (swim), S +3, D +3, C +1, I -2, W +1, Ch -3, AL N, LV 5

      \n\t

      Grab. DC 15 STR or immobilized. Tentacle auto-hits each round. DC 15 STR on turn to break free.

      Ink. In place of attacks, ink cloud blinds all in near for 1d4 rounds.

      ", + "notes": "\n\t

      Octopi as large as sailing skiffs.

      \n\t

      \n\t

      AC 13, HP 23, ATK 2 tentacle (near) +4 (1d8 + grab), MV near (swim), S +3, D +3, C +1, I -2, W +1, Ch -3, AL N, LV 5

      \n\t

      Grab. [[check 15 str]] or immobilized. Tentacle auto-hits each round. [[check 15 str]] on turn to break free.

      Ink. In place of attacks, ink cloud blinds all in near for 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/otyugh__Crc6mFgLL9vNJuaS.json b/data/packs/monsters.db/otyugh__Crc6mFgLL9vNJuaS.json index bf1079b1..9dcdae9e 100644 --- a/data/packs/monsters.db/otyugh__Crc6mFgLL9vNJuaS.json +++ b/data/packs/monsters.db/otyugh__Crc6mFgLL9vNJuaS.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Stumpy, three-legged beasts with barbed tentacles and vast mouths. Drawn by rot and filth.

      \n\t

      \n\t

      AC 13, HP 35, ATK 2 tentacle +5 (1d8) and 1 bite +5 (1d10 + disease), MV near, S +4, D -1, C +4, I -2, W +0, Ch -3, AL N, LV 7

      \n\t

      Disease. DC 15 CON or infected. DC 15 CON each day or lose 1d6 HP (can't heal). Ends on success.

      ", + "notes": "\n\t

      Stumpy, three-legged beasts with barbed tentacles and vast mouths. Drawn by rot and filth.

      \n\t

      \n\t

      AC 13, HP 35, ATK 2 tentacle +5 (1d8) and 1 bite +5 (1d10 + disease), MV near, S +4, D -1, C +4, I -2, W +0, Ch -3, AL N, LV 7

      \n\t

      Disease. [[check 15 con]] or infected. [[check 15 con]] each day or lose 1d6 HP (can't heal). Ends on success.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/paralysis__8UNij07oLyQBRvyL.json b/data/packs/monsters.db/paralysis__8UNij07oLyQBRvyL.json index 0273c3a7..c2202db7 100644 --- a/data/packs/monsters.db/paralysis__8UNij07oLyQBRvyL.json +++ b/data/packs/monsters.db/paralysis__8UNij07oLyQBRvyL.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Paralysis", "system": { - "description": "

      DC 15 CON or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      [[check 15 con]] or paralyzed [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/paralyze__9ckwNCpCA6oSEH3b.json b/data/packs/monsters.db/paralyze__9ckwNCpCA6oSEH3b.json index df1bccdb..5f9054c1 100644 --- a/data/packs/monsters.db/paralyze__9ckwNCpCA6oSEH3b.json +++ b/data/packs/monsters.db/paralyze__9ckwNCpCA6oSEH3b.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Paralyze", "system": { - "description": "

      DC 12 CON or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      [[check 12 con]] or paralyzed [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/paralyze__TrBfO8XGlXuUpnSr.json b/data/packs/monsters.db/paralyze__TrBfO8XGlXuUpnSr.json index 7de3ef98..7c523c2f 100644 --- a/data/packs/monsters.db/paralyze__TrBfO8XGlXuUpnSr.json +++ b/data/packs/monsters.db/paralyze__TrBfO8XGlXuUpnSr.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Paralyze", "system": { - "description": "

      DC 12 CON or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      [[check 12 con]] or paralyzed [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/petrify__617UZSUALr6E4Hea.json b/data/packs/monsters.db/petrify__617UZSUALr6E4Hea.json index 5a04d550..6990cdd9 100644 --- a/data/packs/monsters.db/petrify__617UZSUALr6E4Hea.json +++ b/data/packs/monsters.db/petrify__617UZSUALr6E4Hea.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Petrify", "system": { - "description": "

      DC 12 CON or petrified.

      ", + "description": "

      [[check 12 con]] or petrified.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/petrify__6C23GPZWkEYYbWEy.json b/data/packs/monsters.db/petrify__6C23GPZWkEYYbWEy.json index f4eb2e94..e40f5f0c 100644 --- a/data/packs/monsters.db/petrify__6C23GPZWkEYYbWEy.json +++ b/data/packs/monsters.db/petrify__6C23GPZWkEYYbWEy.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Petrify", "system": { - "description": "

      Any creature that touches the basilisk or meets its gaze, DC 15 CON or petrified.

      ", + "description": "

      Any creature that touches the basilisk or meets its gaze, [[check 15 con]] or petrified.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/petrify__93VamQFfuaigX2c3.json b/data/packs/monsters.db/petrify__93VamQFfuaigX2c3.json index 99b1c879..8a65f530 100644 --- a/data/packs/monsters.db/petrify__93VamQFfuaigX2c3.json +++ b/data/packs/monsters.db/petrify__93VamQFfuaigX2c3.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Petrify", "system": { - "description": "

      Any creature (including medusa) who looks directly at medusa, DC 15 CON or petrified.

      ", + "description": "

      Any creature (including medusa) who looks directly at medusa, [[check 15 con]] or petrified.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/petrifying_breath__9BaW9Yx4WaDTJkZS.json b/data/packs/monsters.db/petrifying_breath__9BaW9Yx4WaDTJkZS.json index d0a025ab..cbd3e5cd 100644 --- a/data/packs/monsters.db/petrifying_breath__9BaW9Yx4WaDTJkZS.json +++ b/data/packs/monsters.db/petrifying_breath__9BaW9Yx4WaDTJkZS.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Fills a near-sized cube extending from gorgon. DC 15 CON or petrified (gorgons immune).

      ", + "description": "

      Fills a near-sized cube extending from gorgon. [[check 15 con]] or petrified (gorgons immune).

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/phoenix__o3Yd8P0DavwDp21b.json b/data/packs/monsters.db/phoenix__o3Yd8P0DavwDp21b.json index b7f9a583..da4b1ca6 100644 --- a/data/packs/monsters.db/phoenix__o3Yd8P0DavwDp21b.json +++ b/data/packs/monsters.db/phoenix__o3Yd8P0DavwDp21b.json @@ -141,7 +141,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      Huge, soaring eagles made of searing flames. Intelligent and imbued with immortal magic.

      \n\t

      \n\t

      AC 16, HP 60, ATK 4 rend +8 (2d12), MV double near (fly), S +3, D +4, C +2, I +3, W +3, Ch +3, AL L, LV 13

      \n\t

      Impervious. Immune to fire. Only damaged by magical sources.

      Explosion. Upon death, creatures within double near of phoenix DC 18 DEX or 10d6 damage.

      Heat Aura. Creatures within near of phoenix at start of turn DC 15 CON or 2d6 damage.

      Rebirth. A red-hot egg remains after death. Phoenix hatches from it in 1d4 days.

      ", + "notes": "\n\t

      Huge, soaring eagles made of searing flames. Intelligent and imbued with immortal magic.

      \n\t

      \n\t

      AC 16, HP 60, ATK 4 rend +8 (2d12), MV double near (fly), S +3, D +4, C +2, I +3, W +3, Ch +3, AL L, LV 13

      \n\t

      Impervious. Immune to fire. Only damaged by magical sources.

      Explosion. Upon death, creatures within double near of phoenix [[check 18 dex]] or 10d6 damage.

      Heat Aura. Creatures within near of phoenix at start of turn [[check 15 con]] or 2d6 damage.

      Rebirth. A red-hot egg remains after death. Phoenix hatches from it in 1d4 days.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/poison__0FtLWIg3szpBpkyN.json b/data/packs/monsters.db/poison__0FtLWIg3szpBpkyN.json index da14d7d8..ff9389ec 100644 --- a/data/packs/monsters.db/poison__0FtLWIg3szpBpkyN.json +++ b/data/packs/monsters.db/poison__0FtLWIg3szpBpkyN.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 9 CON or go to 0 HP.

      ", + "description": "

      [[check 9 con]] or go to 0 HP.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__1XE8PcmIpaAqkomr.json b/data/packs/monsters.db/poison__1XE8PcmIpaAqkomr.json index 685bc45f..7c877bc7 100644 --- a/data/packs/monsters.db/poison__1XE8PcmIpaAqkomr.json +++ b/data/packs/monsters.db/poison__1XE8PcmIpaAqkomr.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 15 CON or sleep.

      ", + "description": "

      [[check 15 con]] or sleep.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__2gyf2II3CBFEwn6Q.json b/data/packs/monsters.db/poison__2gyf2II3CBFEwn6Q.json index 6de4a486..590e0ceb 100644 --- a/data/packs/monsters.db/poison__2gyf2II3CBFEwn6Q.json +++ b/data/packs/monsters.db/poison__2gyf2II3CBFEwn6Q.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 12 CON or go to 0 HP in [[/r 1d4]] rounds.

      ", + "description": "

      [[check 12 con]] or go to 0 HP in [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__7hjMPySm4qWz4GDS.json b/data/packs/monsters.db/poison__7hjMPySm4qWz4GDS.json index 9f9ef205..2e74e702 100644 --- a/data/packs/monsters.db/poison__7hjMPySm4qWz4GDS.json +++ b/data/packs/monsters.db/poison__7hjMPySm4qWz4GDS.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 12 CON or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      [[check 12 con]] or paralyzed [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__901hYb94EwoahIbl.json b/data/packs/monsters.db/poison__901hYb94EwoahIbl.json index e712248c..162acf8c 100644 --- a/data/packs/monsters.db/poison__901hYb94EwoahIbl.json +++ b/data/packs/monsters.db/poison__901hYb94EwoahIbl.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 15 CON or drop to 0 hit points in [[/r 1d4]] rounds.

      ", + "description": "

      [[check 15 con]] or drop to 0 hit points in [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__CL4glqsTNFyGsmYi.json b/data/packs/monsters.db/poison__CL4glqsTNFyGsmYi.json index 4a928275..515a0568 100644 --- a/data/packs/monsters.db/poison__CL4glqsTNFyGsmYi.json +++ b/data/packs/monsters.db/poison__CL4glqsTNFyGsmYi.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 15 CON or go to 0 HP.

      ", + "description": "

      [[check 15 con]] or go to 0 HP.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__Fof8QrBz6KPdM1q0.json b/data/packs/monsters.db/poison__Fof8QrBz6KPdM1q0.json index 3c57e3f5..80e8fc42 100644 --- a/data/packs/monsters.db/poison__Fof8QrBz6KPdM1q0.json +++ b/data/packs/monsters.db/poison__Fof8QrBz6KPdM1q0.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 12 CON or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      [[check 12 con]] or paralyzed [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__GoJru22lBvz2AvLo.json b/data/packs/monsters.db/poison__GoJru22lBvz2AvLo.json index 5d5959f1..8bb93979 100644 --- a/data/packs/monsters.db/poison__GoJru22lBvz2AvLo.json +++ b/data/packs/monsters.db/poison__GoJru22lBvz2AvLo.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 15 CON or go to 0 HP.

      ", + "description": "

      [[check 15 con]] or go to 0 HP.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__Hasw5gfZX6holt5r.json b/data/packs/monsters.db/poison__Hasw5gfZX6holt5r.json index 9cd877a5..45e0f207 100644 --- a/data/packs/monsters.db/poison__Hasw5gfZX6holt5r.json +++ b/data/packs/monsters.db/poison__Hasw5gfZX6holt5r.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Poison", "system": { - "description": "

      DC 12 CON or paralyzed 1d4 rounds.

      ", + "description": "

      [[check 12 con]] or paralyzed 1d4 rounds.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/poison__LKgpINrjjQkySz1B.json b/data/packs/monsters.db/poison__LKgpINrjjQkySz1B.json index 719217ec..c92ea0aa 100644 --- a/data/packs/monsters.db/poison__LKgpINrjjQkySz1B.json +++ b/data/packs/monsters.db/poison__LKgpINrjjQkySz1B.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 12 CON or go to 0 HP.

      ", + "description": "

      [[check 12 con]] or go to 0 HP.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__SJUIyMMybJsi5q9y.json b/data/packs/monsters.db/poison__SJUIyMMybJsi5q9y.json index 749e29e3..78bce192 100644 --- a/data/packs/monsters.db/poison__SJUIyMMybJsi5q9y.json +++ b/data/packs/monsters.db/poison__SJUIyMMybJsi5q9y.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 15 CON or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      [[check 15 con]] or paralyzed [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__Vkn0UoU0SfpKb8sf.json b/data/packs/monsters.db/poison__Vkn0UoU0SfpKb8sf.json index 41d04e64..176b7d44 100644 --- a/data/packs/monsters.db/poison__Vkn0UoU0SfpKb8sf.json +++ b/data/packs/monsters.db/poison__Vkn0UoU0SfpKb8sf.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 15 CON or fall into natural, deep sleep for [[/r 1d8]] hours.

      ", + "description": "

      [[check 15 con]] or fall into natural, deep sleep for [[/r 1d8]] hours.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__WV9T1ZeCx8ST8T9A.json b/data/packs/monsters.db/poison__WV9T1ZeCx8ST8T9A.json index 365ce55e..d5ea9d11 100644 --- a/data/packs/monsters.db/poison__WV9T1ZeCx8ST8T9A.json +++ b/data/packs/monsters.db/poison__WV9T1ZeCx8ST8T9A.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Poison", "system": { - "description": "

      DC 12 CON or paralyzed 1d4 hours.

      ", + "description": "

      [[check 12 con]] or paralyzed 1d4 hours.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/poison__WiAMZ0XuHjA9q87t.json b/data/packs/monsters.db/poison__WiAMZ0XuHjA9q87t.json index 06919982..8669d332 100644 --- a/data/packs/monsters.db/poison__WiAMZ0XuHjA9q87t.json +++ b/data/packs/monsters.db/poison__WiAMZ0XuHjA9q87t.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 15 CON or take [[/r 2d10]] damage.

      ", + "description": "

      [[check 15 con]] or take [[/r 2d10]] damage.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__c4CJ0wn1uBMe1tzu.json b/data/packs/monsters.db/poison__c4CJ0wn1uBMe1tzu.json index 8f939ad9..e832f315 100644 --- a/data/packs/monsters.db/poison__c4CJ0wn1uBMe1tzu.json +++ b/data/packs/monsters.db/poison__c4CJ0wn1uBMe1tzu.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 15 CON or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      [[check 15 con]] or paralyzed [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__gEx5t1IwHdBJNohL.json b/data/packs/monsters.db/poison__gEx5t1IwHdBJNohL.json index e4bed5c0..aaa04f35 100644 --- a/data/packs/monsters.db/poison__gEx5t1IwHdBJNohL.json +++ b/data/packs/monsters.db/poison__gEx5t1IwHdBJNohL.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 12 CON or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      [[check 12 con]] or paralyzed [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__qXpmoLrXbk8wThRu.json b/data/packs/monsters.db/poison__qXpmoLrXbk8wThRu.json index 8d905046..a119b926 100644 --- a/data/packs/monsters.db/poison__qXpmoLrXbk8wThRu.json +++ b/data/packs/monsters.db/poison__qXpmoLrXbk8wThRu.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 12 CON or drop to 0 HP in [[/r 1d4]] rounds.

      ", + "description": "

      [[check 12 con]] or drop to 0 HP in [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__qfIjIAkMmlWRYU0P.json b/data/packs/monsters.db/poison__qfIjIAkMmlWRYU0P.json index eb691d7e..52436f6b 100644 --- a/data/packs/monsters.db/poison__qfIjIAkMmlWRYU0P.json +++ b/data/packs/monsters.db/poison__qfIjIAkMmlWRYU0P.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 12 CON or paralyzed [[/r 1d4]] hours.

      ", + "description": "

      [[check 12 con]] or paralyzed [[/r 1d4]] hours.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__r6qkMau5LhjCN1gF.json b/data/packs/monsters.db/poison__r6qkMau5LhjCN1gF.json index d0d9d1e9..6e1bcd35 100644 --- a/data/packs/monsters.db/poison__r6qkMau5LhjCN1gF.json +++ b/data/packs/monsters.db/poison__r6qkMau5LhjCN1gF.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 12 CON or fall into deep sleep for [[/r 1d4]] hours.

      ", + "description": "

      [[check 12 con]] or fall into deep sleep for [[/r 1d4]] hours.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__rNnV6lCVKtNYT6Sg.json b/data/packs/monsters.db/poison__rNnV6lCVKtNYT6Sg.json index d919485a..85d9f55f 100644 --- a/data/packs/monsters.db/poison__rNnV6lCVKtNYT6Sg.json +++ b/data/packs/monsters.db/poison__rNnV6lCVKtNYT6Sg.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Poison", "system": { - "description": "

      DC 12 CON or fall into deep sleep for 1d4 hours.

      ", + "description": "

      [[check 12 con]] or fall into deep sleep for 1d4 hours.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/poison__tYFIveeKgcPled6c.json b/data/packs/monsters.db/poison__tYFIveeKgcPled6c.json index 23673806..22502435 100644 --- a/data/packs/monsters.db/poison__tYFIveeKgcPled6c.json +++ b/data/packs/monsters.db/poison__tYFIveeKgcPled6c.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 18 CON or go to 0 HP with a death timer of 1.

      ", + "description": "

      [[check 18 con]] or go to 0 HP with a death timer of 1.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__uFG1MG9lM3u3XZID.json b/data/packs/monsters.db/poison__uFG1MG9lM3u3XZID.json index fd48693d..4ab079f7 100644 --- a/data/packs/monsters.db/poison__uFG1MG9lM3u3XZID.json +++ b/data/packs/monsters.db/poison__uFG1MG9lM3u3XZID.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 12 CON or fitful sleep for [[/r 1d4]] hours.

      ", + "description": "

      [[check 12 con]] or fitful sleep for [[/r 1d4]] hours.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__uLTUz0TZILHtQIMr.json b/data/packs/monsters.db/poison__uLTUz0TZILHtQIMr.json index 448f8cf0..7b473f11 100644 --- a/data/packs/monsters.db/poison__uLTUz0TZILHtQIMr.json +++ b/data/packs/monsters.db/poison__uLTUz0TZILHtQIMr.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 9 CON or take [[/r 1d4]] damage.

      ", + "description": "

      [[check 9 con]] or take [[/r 1d4]] damage.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__vW08jerBqWdAvzSq.json b/data/packs/monsters.db/poison__vW08jerBqWdAvzSq.json index 2394d70f..8c64accb 100644 --- a/data/packs/monsters.db/poison__vW08jerBqWdAvzSq.json +++ b/data/packs/monsters.db/poison__vW08jerBqWdAvzSq.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 15 CON or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      [[check 15 con]] or paralyzed [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison__zho5Ov2asKyXMHjU.json b/data/packs/monsters.db/poison__zho5Ov2asKyXMHjU.json index 52a0dbb2..55b0b7c3 100644 --- a/data/packs/monsters.db/poison__zho5Ov2asKyXMHjU.json +++ b/data/packs/monsters.db/poison__zho5Ov2asKyXMHjU.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Poison", "system": { - "description": "

      DC 15 CON or target's eyes go jet black and it turns on its allies for [[/r 1d4]] rounds. DC 15 WIS on turn to end effect.

      ", + "description": "

      [[check 15 con]] or target's eyes go jet black and it turns on its allies for [[/r 1d4]] rounds. [[check 15 wis]] on turn to end effect.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/poison_breath__CybUrDfNy7AoO5Nn.json b/data/packs/monsters.db/poison_breath__CybUrDfNy7AoO5Nn.json index e456550d..e7461615 100644 --- a/data/packs/monsters.db/poison_breath__CybUrDfNy7AoO5Nn.json +++ b/data/packs/monsters.db/poison_breath__CybUrDfNy7AoO5Nn.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      All within near, DC 15 CON or [[/r 8d6]] damage.

      ", + "description": "

      All within near, [[check 15 con]] or [[/r 8d6]] damage.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/poison_breath__mWJwY1nRizgIXJXR.json b/data/packs/monsters.db/poison_breath__mWJwY1nRizgIXJXR.json index 36f7a86d..6820b2f2 100644 --- a/data/packs/monsters.db/poison_breath__mWJwY1nRizgIXJXR.json +++ b/data/packs/monsters.db/poison_breath__mWJwY1nRizgIXJXR.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Fills a near-sized cube extending from dragon. DC 15 CON or [[/r 3d8]] damage.

      ", + "description": "

      Fills a near-sized cube extending from dragon. [[check 15 con]] or [[/r 3d8]] damage.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/poison_web__8ITOtBo5399EG3Fl.json b/data/packs/monsters.db/poison_web__8ITOtBo5399EG3Fl.json index c3eedb0c..547ad20a 100644 --- a/data/packs/monsters.db/poison_web__8ITOtBo5399EG3Fl.json +++ b/data/packs/monsters.db/poison_web__8ITOtBo5399EG3Fl.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": null }, - "description": "

      One target stuck in place and [[/r 1d4]] damage/round. DC 12 DEX on turn to escape.

      ", + "description": "

      One target stuck in place and [[/r 1d4]] damage/round. [[check 12 dex]] on turn to escape.

      ", "predefinedEffects": "", "ranges": [ "near" diff --git a/data/packs/monsters.db/poison_web__e020Tn4yv7Aj604M.json b/data/packs/monsters.db/poison_web__e020Tn4yv7Aj604M.json index 1fe5a116..e86d134e 100644 --- a/data/packs/monsters.db/poison_web__e020Tn4yv7Aj604M.json +++ b/data/packs/monsters.db/poison_web__e020Tn4yv7Aj604M.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Poison Web", "system": { - "description": "

      One target stuck in place and 1d4 damage/round. DC 12 DEX to escape on turn.

      ", + "description": "

      One target stuck in place and 1d4 damage/round. [[check 12 dex]] to escape on turn.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/pterodactyl__xIitpxW19LP91JA3.json b/data/packs/monsters.db/pterodactyl__xIitpxW19LP91JA3.json index 243079e1..1eb0d58c 100644 --- a/data/packs/monsters.db/pterodactyl__xIitpxW19LP91JA3.json +++ b/data/packs/monsters.db/pterodactyl__xIitpxW19LP91JA3.json @@ -138,7 +138,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      Long-beaked beasts with wide, triangular wings. Large enough to carry off a human.

      \n\t

      \n\t

      AC 14, HP 20, ATK 2 beak +4 (1d8 + grab), MV double near (fly), S +2, D +4, C +2, I -2, W +1, Ch -3, AL N, LV 4

      \n\t

      Grab. DC 15 STR or held. DC 15 STR on turn to break free.

      ", + "notes": "\n\t

      Long-beaked beasts with wide, triangular wings. Large enough to carry off a human.

      \n\t

      \n\t

      AC 14, HP 20, ATK 2 beak +4 (1d8 + grab), MV double near (fly), S +2, D +4, C +2, I -2, W +1, Ch -3, AL N, LV 4

      \n\t

      Grab. [[check 15 str]] or held. [[check 15 str]] on turn to break free.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/purple_worm__VxV56gRyhUJfXu83.json b/data/packs/monsters.db/purple_worm__VxV56gRyhUJfXu83.json index fbc390ba..5f18cd29 100644 --- a/data/packs/monsters.db/purple_worm__VxV56gRyhUJfXu83.json +++ b/data/packs/monsters.db/purple_worm__VxV56gRyhUJfXu83.json @@ -140,7 +140,7 @@ }, "move": "doubleNear", "moveNote": "burrow", - "notes": "\n\t

      A massive worm as tall as a castle keep. Has a rotating maw and is covered in purple chitin.

      \n\t

      \n\t

      AC 18, HP 57, ATK 2 bite +9 (2d12 + swallow) and 1 sting +9 (1d10 + poison), MV double near (burrow), S +5, D +1, C +3, I -3, W +1, Ch -3, AL N, LV 12

      \n\t

      Poison. DC 15 CON or go to 0 HP.

      Swallow. On a natural attack roll of 18-20, target is swallowed. Total darkness inside and 2d10 damage per round. Worm regurgitates all swallowed if dealt at least 20 damage in one round to the inside of its gullet.

      ", + "notes": "\n\t

      A massive worm as tall as a castle keep. Has a rotating maw and is covered in purple chitin.

      \n\t

      \n\t

      AC 18, HP 57, ATK 2 bite +9 (2d12 + swallow) and 1 sting +9 (1d10 + poison), MV double near (burrow), S +5, D +1, C +3, I -3, W +1, Ch -3, AL N, LV 12

      \n\t

      Poison. [[check 15 con]] or go to 0 HP.

      Swallow. On a natural attack roll of 18-20, target is swallowed. Total darkness inside and 2d10 damage per round. Worm regurgitates all swallowed if dealt at least 20 damage in one round to the inside of its gullet.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/rat__dire__3jwLk7zEFiHk7kna.json b/data/packs/monsters.db/rat__dire__3jwLk7zEFiHk7kna.json index 054e9382..5a0f7b91 100644 --- a/data/packs/monsters.db/rat__dire__3jwLk7zEFiHk7kna.json +++ b/data/packs/monsters.db/rat__dire__3jwLk7zEFiHk7kna.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Child-sized, savage rats bristling with bony face and spine ridges.

      \n\t

      \n\t

      AC 12, HP 10, ATK 1 bite +2 (1d6 + disease), MV near, S +1, D +2, C +1, I -2, W +1, Ch -2, AL N, LV 2

      \n\t

      Disease. DC 12 CON or 1d4 CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", + "notes": "\n\t

      Child-sized, savage rats bristling with bony face and spine ridges.

      \n\t

      \n\t

      AC 12, HP 10, ATK 1 bite +2 (1d6 + disease), MV near, S +1, D +2, C +1, I -2, W +1, Ch -2, AL N, LV 2

      \n\t

      Disease. [[check 12 con]] or 1d4 CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/rat__giant__OYtg4Ta4PIpvIZxq.json b/data/packs/monsters.db/rat__giant__OYtg4Ta4PIpvIZxq.json index bcac8f5b..1aacd44e 100644 --- a/data/packs/monsters.db/rat__giant__OYtg4Ta4PIpvIZxq.json +++ b/data/packs/monsters.db/rat__giant__OYtg4Ta4PIpvIZxq.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Cunning rats as large as cats. Mangy fur and wormlike tails.

      \n\t

      \n\t

      AC 11, HP 5, ATK 1 bite +1 (1d4 + disease), MV near, S -2, D +1, C +1, I -2, W +1, Ch -2, AL N, LV 1

      \n\t

      Disease. DC 12 CON or 1d4 CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", + "notes": "\n\t

      Cunning rats as large as cats. Mangy fur and wormlike tails.

      \n\t

      \n\t

      AC 11, HP 5, ATK 1 bite +1 (1d4 + disease), MV near, S -2, D +1, C +1, I -2, W +1, Ch -2, AL N, LV 1

      \n\t

      Disease. [[check 12 con]] or 1d4 CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/rat__kRjM8lPIVu1b5b3g.json b/data/packs/monsters.db/rat__kRjM8lPIVu1b5b3g.json index 97743272..145cdb7a 100644 --- a/data/packs/monsters.db/rat__kRjM8lPIVu1b5b3g.json +++ b/data/packs/monsters.db/rat__kRjM8lPIVu1b5b3g.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Rangy, plague-carrying rodents that infest underground places.

      \n\t

      \n\t

      AC 10, HP 1, ATK 1 bite +0 (1 + disease), MV near, S -3, D +0, C +1, I -3, W +1, Ch -3, AL N, LV 0

      \n\t

      Disease. DC 9 CON or 1d4 CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", + "notes": "\n\t

      Rangy, plague-carrying rodents that infest underground places.

      \n\t

      \n\t

      AC 10, HP 1, ATK 1 bite +0 (1 + disease), MV near, S -3, D +0, C +1, I -3, W +1, Ch -3, AL N, LV 0

      \n\t

      Disease. [[check 9 con]] or 1d4 CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/rat__swarm__UxMr9qvyuIt9ZwM7.json b/data/packs/monsters.db/rat__swarm__UxMr9qvyuIt9ZwM7.json index b3cca266..546354eb 100644 --- a/data/packs/monsters.db/rat__swarm__UxMr9qvyuIt9ZwM7.json +++ b/data/packs/monsters.db/rat__swarm__UxMr9qvyuIt9ZwM7.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A screeching tidal wave of clawing and biting rats.

      \n\t

      \n\t

      AC 10, HP 28, ATK 4 bite +0 (1 + disease), MV near, S -3, D +0, C +1, I -3, W +1, Ch -3, AL N, LV 6

      \n\t

      Disease. DC 9 CON or 1d4 CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", + "notes": "\n\t

      A screeching tidal wave of clawing and biting rats.

      \n\t

      \n\t

      AC 10, HP 28, ATK 4 bite +0 (1 + disease), MV near, S -3, D +0, C +1, I -3, W +1, Ch -3, AL N, LV 6

      \n\t

      Disease. [[check 9 con]] or 1d4 CON damage (can't heal while ill). Repeat check once per day; ends on success. Die at 0 CON.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/rathgamnon__o5xhxniboMbTCMLk.json b/data/packs/monsters.db/rathgamnon__o5xhxniboMbTCMLk.json index 7f96ee7e..624b18ee 100644 --- a/data/packs/monsters.db/rathgamnon__o5xhxniboMbTCMLk.json +++ b/data/packs/monsters.db/rathgamnon__o5xhxniboMbTCMLk.json @@ -145,7 +145,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      A pearl-white lion with feathered wings that stands twenty feet tall. Rathgamnon is Madeera the Covenant's mightiest servant; his blank eyes see far into the depths of time and space. He spends all eternity watching the whirl of the stars from the highest mountain in the realm of mortals, waiting for the celestial alignments that prophesy epochs of weal and woe, titanic changes to the balance of power in the cosmos, or threats to the laws of reality itself.

      \n\t

      \n\t

      AC 17, HP 89, ATK 2 rend (near) +9 (2d10) and 2 spell +8, MV double near (fly), S +5, D +3, C +4, I +5, W +6, Ch +5, AL L, LV 19

      \n\t

      Legendary. Only damaged by magical sources. Hostile spells targeting Rathgamnon are DC 18 to cast.

      Roar. In place of attacks, all creatures who can hear within far DC 18 CHA or be rendered blind and speechless for 1d4 days.

      Abjure (WIS Spell). DC 13. Self. End any hostile magical effects affecting Rathgamnon.

      Abolish (WIS Spell). DC 13. One target in far takes 5d8 damage.

      Anchor (WIS Spell). DC 14. One target in far DC 18 STR or bound and anchored by chains of golden runes for 1d4 rounds.

      Gate (WIS Spell). DC 14. Open a portal at a point within near to another location on any plane. Lasts 1d6 rounds or until dismissed.

      Portent (WIS Spell). DC 14. Lasts 2d4 rounds. One target in near has advantage or disadvantage on all attack rolls and checks.

      Time Stop (WIS Spell). DC 15. Self. Time freezes for everyone except Rathgamnon for 1d4 rounds. Everything that occurs during the time freeze happens simultaneously when the spell ends.

      ", + "notes": "\n\t

      A pearl-white lion with feathered wings that stands twenty feet tall. Rathgamnon is Madeera the Covenant's mightiest servant; his blank eyes see far into the depths of time and space. He spends all eternity watching the whirl of the stars from the highest mountain in the realm of mortals, waiting for the celestial alignments that prophesy epochs of weal and woe, titanic changes to the balance of power in the cosmos, or threats to the laws of reality itself.

      \n\t

      \n\t

      AC 17, HP 89, ATK 2 rend (near) +9 (2d10) and 2 spell +8, MV double near (fly), S +5, D +3, C +4, I +5, W +6, Ch +5, AL L, LV 19

      \n\t

      Legendary. Only damaged by magical sources. Hostile spells targeting Rathgamnon are DC 18 to cast.

      Roar. In place of attacks, all creatures who can hear within far [[check 18 cha]] or be rendered blind and speechless for 1d4 days.

      Abjure (WIS Spell). DC 13. Self. End any hostile magical effects affecting Rathgamnon.

      Abolish (WIS Spell). DC 13. One target in far takes 5d8 damage.

      Anchor (WIS Spell). DC 14. One target in far [[check 18 str]] or bound and anchored by chains of golden runes for 1d4 rounds.

      Gate (WIS Spell). DC 14. Open a portal at a point within near to another location on any plane. Lasts 1d6 rounds or until dismissed.

      Portent (WIS Spell). DC 14. Lasts 2d4 rounds. One target in near has advantage or disadvantage on all attack rolls and checks.

      Time Stop (WIS Spell). DC 15. Self. Time freezes for everyone except Rathgamnon for 1d4 rounds. Everything that occurs during the time freeze happens simultaneously when the spell ends.

      ", "spellcastingAbility": "wis", "spellcastingAttackNum": 2, "spellcastingBonus": 8 diff --git a/data/packs/monsters.db/relentless__8rwGx2FJL0elVlM2.json b/data/packs/monsters.db/relentless__8rwGx2FJL0elVlM2.json index 8cf31a31..49cdf5a3 100644 --- a/data/packs/monsters.db/relentless__8rwGx2FJL0elVlM2.json +++ b/data/packs/monsters.db/relentless__8rwGx2FJL0elVlM2.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Relentless", "system": { - "description": "

      If zombie reduced to 0 HP by a non-magical source, DC 15 CON to go to 1 HP instead.

      ", + "description": "

      If zombie reduced to 0 HP by a non-magical source, [[check 15 con]] to go to 1 HP instead.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/riddle__0RjpLMB5cEacYtVS.json b/data/packs/monsters.db/riddle__0RjpLMB5cEacYtVS.json index da0dc5aa..dcfc7b3d 100644 --- a/data/packs/monsters.db/riddle__0RjpLMB5cEacYtVS.json +++ b/data/packs/monsters.db/riddle__0RjpLMB5cEacYtVS.json @@ -8,7 +8,7 @@ "name": "Riddle", "system": { "dc": "12", - "description": "

      One target in far DC 15 INT or stupefied [[/r 1d4]] rounds.

      ", + "description": "

      One target in far [[check 15 int]] or stupefied [[/r 1d4]] rounds.

      ", "duration": { "type": "rounds", "value": "1d4" diff --git a/data/packs/monsters.db/rime_walker__pWIrU2mRsvTe17Nh.json b/data/packs/monsters.db/rime_walker__pWIrU2mRsvTe17Nh.json index d8efab6e..e1a3ef2e 100644 --- a/data/packs/monsters.db/rime_walker__pWIrU2mRsvTe17Nh.json +++ b/data/packs/monsters.db/rime_walker__pWIrU2mRsvTe17Nh.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      Human-shaped beings formed from black space ice. Their eyes are two flickering, white lights.

      \n\t

      \n\t

      AC 16, HP 43, ATK 4 claw +8 (1d12), MV near (fly), S +4, D +4, C +3, I +2, W +2, Ch +2, AL C, LV 9

      \n\t

      Impervious. Immune to cold.

      Ice Aura. Enemies within near of rime walker DC 12 CON at start of turn or lose action.

      ", + "notes": "\n\t

      Human-shaped beings formed from black space ice. Their eyes are two flickering, white lights.

      \n\t

      \n\t

      AC 16, HP 43, ATK 4 claw +8 (1d12), MV near (fly), S +4, D +4, C +3, I +2, W +2, Ch +2, AL C, LV 9

      \n\t

      Impervious. Immune to cold.

      Ice Aura. Enemies within near of rime walker [[check 12 con]] at start of turn or lose action.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/roar__5wuTo8S0MrSTs8ZC.json b/data/packs/monsters.db/roar__5wuTo8S0MrSTs8ZC.json index 8d316370..373db289 100644 --- a/data/packs/monsters.db/roar__5wuTo8S0MrSTs8ZC.json +++ b/data/packs/monsters.db/roar__5wuTo8S0MrSTs8ZC.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Roar", "system": { - "description": "

      In place of attacks, all creatures who can hear within far DC 18 CHA or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      In place of attacks, all creatures who can hear within far [[check 18 cha]] or paralyzed [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/roar__rF8vHz3pjxVOhsDK.json b/data/packs/monsters.db/roar__rF8vHz3pjxVOhsDK.json index 4f44ce59..565cfb73 100644 --- a/data/packs/monsters.db/roar__rF8vHz3pjxVOhsDK.json +++ b/data/packs/monsters.db/roar__rF8vHz3pjxVOhsDK.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Roar", "system": { - "description": "

      In place of attacks, all creatures who can hear within far DC 18 CHA or be rendered blind and speechless for [[/r 1d4]] days.

      ", + "description": "

      In place of attacks, all creatures who can hear within far [[check 18 cha]] or be rendered blind and speechless for [[/r 1d4]] days.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/roc__39kt1XjVZ4JZSdEj.json b/data/packs/monsters.db/roc__39kt1XjVZ4JZSdEj.json index 28ebd44a..e2b00291 100644 --- a/data/packs/monsters.db/roc__39kt1XjVZ4JZSdEj.json +++ b/data/packs/monsters.db/roc__39kt1XjVZ4JZSdEj.json @@ -138,7 +138,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      Dragon-sized hawks that nest in remote mountains.

      \n\t

      \n\t

      AC 15, HP 69, ATK 4 rend +9 (2d10 + grab), MV double near (fly), S +5, D +3, C +2, I -2, W +2, Ch -2, AL N, LV 15

      \n\t

      Grab. DC 18 STR or target held. DC 18 STR on turn to break free.

      ", + "notes": "\n\t

      Dragon-sized hawks that nest in remote mountains.

      \n\t

      \n\t

      AC 15, HP 69, ATK 4 rend +9 (2d10 + grab), MV double near (fly), S +5, D +3, C +2, I -2, W +2, Ch -2, AL N, LV 15

      \n\t

      Grab. [[check 18 str]] or target held. [[check 18 str]] on turn to break free.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/roper__C0CuPZJOFDmuplw8.json b/data/packs/monsters.db/roper__C0CuPZJOFDmuplw8.json index caa6eb55..4fdfd4b6 100644 --- a/data/packs/monsters.db/roper__C0CuPZJOFDmuplw8.json +++ b/data/packs/monsters.db/roper__C0CuPZJOFDmuplw8.json @@ -142,7 +142,7 @@ }, "move": "close", "moveNote": "climb", - "notes": "\n\t

      Ravenous monstrosities that look like cave rocks when their single eye and maw are closed.

      \n\t

      \n\t

      AC 14, HP 31, ATK 4 tendril (double near) +4 (1d6 + grab) and 1 bite +4 (2d8), MV close (climb), S +3, D -2, C +4, I -1, W +2, Ch +1, AL N, LV 6

      \n\t

      Impervious. Can only be damaged by magical sources.

      Grab. DC 15 STR or target trapped in tendril. Tendril auto-hits target next round. DC 15 STR on turn to break free.

      Pull. In place of a tendril attack, pull a grabbed target a near distance.

      Tendrils. Four total. AC 18 each. 4+ damage to one severs it.

      ", + "notes": "\n\t

      Ravenous monstrosities that look like cave rocks when their single eye and maw are closed.

      \n\t

      \n\t

      AC 14, HP 31, ATK 4 tendril (double near) +4 (1d6 + grab) and 1 bite +4 (2d8), MV close (climb), S +3, D -2, C +4, I -1, W +2, Ch +1, AL N, LV 6

      \n\t

      Impervious. Can only be damaged by magical sources.

      Grab. [[check 15 str]] or target trapped in tendril. Tendril auto-hits target next round. [[check 15 str]] on turn to break free.

      Pull. In place of a tendril attack, pull a grabbed target a near distance.

      Tendrils. Four total. AC 18 each. 4+ damage to one severs it.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/rot_flower__pE0tXsYluDmktWNv.json b/data/packs/monsters.db/rot_flower__pE0tXsYluDmktWNv.json index 076f366e..1e771f5c 100644 --- a/data/packs/monsters.db/rot_flower__pE0tXsYluDmktWNv.json +++ b/data/packs/monsters.db/rot_flower__pE0tXsYluDmktWNv.json @@ -138,7 +138,7 @@ }, "move": "none", "moveNote": "", - "notes": "\n\t

      Carnivorous flowers as large as a human. They reek of carrion.

      \n\t

      \n\t

      AC 9, HP 10, ATK 1 bite +1 (1d4 + toxin), MV none, S +1, D -3, C +1, I -4, W -3, Ch -4, AL N, LV 2

      \n\t

      Toxin. DC 12 CON or unconscious for 1d4 rounds.

      ", + "notes": "\n\t

      Carnivorous flowers as large as a human. They reek of carrion.

      \n\t

      \n\t

      AC 9, HP 10, ATK 1 bite +1 (1d4 + toxin), MV none, S +1, D -3, C +1, I -4, W -3, Ch -4, AL N, LV 2

      \n\t

      Toxin. [[check 12 con]] or unconscious for 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/salamander__t3Wr5E8hsOs1xtfK.json b/data/packs/monsters.db/salamander__t3Wr5E8hsOs1xtfK.json index 6de4dff8..8881a0ab 100644 --- a/data/packs/monsters.db/salamander__t3Wr5E8hsOs1xtfK.json +++ b/data/packs/monsters.db/salamander__t3Wr5E8hsOs1xtfK.json @@ -140,7 +140,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Fire-colored lizardfolk with long tails. Flame-like frills run down their backs.

      \n\t

      \n\t

      AC 13, HP 24, ATK 2 flaming spear (close/near) +4 (1d6, ignites flammables) or 1 iron longbow (far) +2 (1d8), MV near, S +2, D +0, C +2, I -1, W +1, Ch -1, AL C, LV 5

      \n\t

      Impervious. Fire immune.

      Heat Aura. Creatures in close DC 12 CON on turn or 1d8 damage.

      ", + "notes": "\n\t

      Fire-colored lizardfolk with long tails. Flame-like frills run down their backs.

      \n\t

      \n\t

      AC 13, HP 24, ATK 2 flaming spear (close/near) +4 (1d6, ignites flammables) or 1 iron longbow (far) +2 (1d8), MV near, S +2, D +0, C +2, I -1, W +1, Ch -1, AL C, LV 5

      \n\t

      Impervious. Fire immune.

      Heat Aura. Creatures in close [[check 12 con]] on turn or 1d8 damage.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/scarecrow__Hdpcnnvyh69C4BnO.json b/data/packs/monsters.db/scarecrow__Hdpcnnvyh69C4BnO.json index ad3b21d9..a6c477ce 100644 --- a/data/packs/monsters.db/scarecrow__Hdpcnnvyh69C4BnO.json +++ b/data/packs/monsters.db/scarecrow__Hdpcnnvyh69C4BnO.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Ragged clothes and a painted burlap head stuffed with straw. Possessed by a malicious spirit.

      \n\t

      \n\t

      AC 12, HP 15, ATK 2 claws +2 (1d6) or 1 scream, MV near, S +2, D +2, C +2, I +0, W +0, Ch +2, AL C, LV 3

      \n\t

      Scream. Creatures who hear in double near DC 12 CHA or paralyzed for 1d4 rounds.

      ", + "notes": "\n\t

      Ragged clothes and a painted burlap head stuffed with straw. Possessed by a malicious spirit.

      \n\t

      \n\t

      AC 12, HP 15, ATK 2 claws +2 (1d6) or 1 scream, MV near, S +2, D +2, C +2, I +0, W +0, Ch +2, AL C, LV 3

      \n\t

      Scream. Creatures who hear in double near [[check 12 cha]] or paralyzed for 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/scorpion__giant__TZGzGBYncOs3r9ZF.json b/data/packs/monsters.db/scorpion__giant__TZGzGBYncOs3r9ZF.json index 81ad37fe..6f3a1532 100644 --- a/data/packs/monsters.db/scorpion__giant__TZGzGBYncOs3r9ZF.json +++ b/data/packs/monsters.db/scorpion__giant__TZGzGBYncOs3r9ZF.json @@ -140,7 +140,7 @@ }, "move": "near", "moveNote": "climb", - "notes": "\n\t

      Chitin-plated scorpions as big as camels.

      \n\t

      \n\t

      AC 14, HP 13, ATK 1 claw +2 (1d6 + grab) and 1 sting +2 (1d4 + poison), MV near (climb), S +2, D +2, C +0, I -4, W +0, Ch -4, AL N, LV 3

      \n\t

      Grab. DC 12 STR or target held. DC 12 STR on turn to break free.

      Poison. DC 12 CON or go to 0 HP.

      ", + "notes": "\n\t

      Chitin-plated scorpions as big as camels.

      \n\t

      \n\t

      AC 14, HP 13, ATK 1 claw +2 (1d6 + grab) and 1 sting +2 (1d4 + poison), MV near (climb), S +2, D +2, C +0, I -4, W +0, Ch -4, AL N, LV 3

      \n\t

      Grab. [[check 12 str]] or target held. [[check 12 str]] on turn to break free.

      Poison. [[check 12 con]] or go to 0 HP.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/scorpion__lDXLWTA4FLMpAblB.json b/data/packs/monsters.db/scorpion__lDXLWTA4FLMpAblB.json index 2face1a9..e0d3c8c4 100644 --- a/data/packs/monsters.db/scorpion__lDXLWTA4FLMpAblB.json +++ b/data/packs/monsters.db/scorpion__lDXLWTA4FLMpAblB.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "climb", - "notes": "\n\t

      Desert-dwelling arachnids with pincers and curved tail stingers.

      \n\t

      \n\t

      AC 11, HP 1, ATK 1 sting +1 (1 + poison), MV near (climb), S -4, D +1, C +0, I -4, W +0, Ch -4, AL N, LV 0

      \n\t

      Poison. DC 9 CON or go to 0 HP.

      ", + "notes": "\n\t

      Desert-dwelling arachnids with pincers and curved tail stingers.

      \n\t

      \n\t

      AC 11, HP 1, ATK 1 sting +1 (1 + poison), MV near (climb), S -4, D +1, C +0, I -4, W +0, Ch -4, AL N, LV 0

      \n\t

      Poison. [[check 9 con]] or go to 0 HP.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/scream__K8YmkKG0OeE5p3Ck.json b/data/packs/monsters.db/scream__K8YmkKG0OeE5p3Ck.json index dd24e300..119f761a 100644 --- a/data/packs/monsters.db/scream__K8YmkKG0OeE5p3Ck.json +++ b/data/packs/monsters.db/scream__K8YmkKG0OeE5p3Ck.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Scream", "system": { - "description": "

      Creatures who hear in double near DC 12 CHA or paralyzed for [[/r 1d4]] rounds.

      ", + "description": "

      Creatures who hear in double near [[check 12 cha]] or paralyzed for [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/screech__RHFDtIEwvYizX8Rz.json b/data/packs/monsters.db/screech__RHFDtIEwvYizX8Rz.json index 7f4a124c..09ecf62a 100644 --- a/data/packs/monsters.db/screech__RHFDtIEwvYizX8Rz.json +++ b/data/packs/monsters.db/screech__RHFDtIEwvYizX8Rz.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      All enemies in double near DC 12 WIS or DISADV on checks and attacks for [[/r 1d4]] rounds.

      ", + "description": "

      All enemies in double near [[check 12 wis]] or DISADV on checks and attacks for [[/r 1d4]] rounds.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/screech__tPJIWcQ8v5VtGOwO.json b/data/packs/monsters.db/screech__tPJIWcQ8v5VtGOwO.json index 336c3b8c..89448fbd 100644 --- a/data/packs/monsters.db/screech__tPJIWcQ8v5VtGOwO.json +++ b/data/packs/monsters.db/screech__tPJIWcQ8v5VtGOwO.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Enemies within double near DC 15 WIS or DISADV on attacks and checks [[/r 1d4]] rounds.

      ", + "description": "

      Enemies within double near [[check 15 wis]] or DISADV on attacks and checks [[/r 1d4]] rounds.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/shambling_mound__uTmirbJfdHFTag2i.json b/data/packs/monsters.db/shambling_mound__uTmirbJfdHFTag2i.json index 20bfb102..867bd65a 100644 --- a/data/packs/monsters.db/shambling_mound__uTmirbJfdHFTag2i.json +++ b/data/packs/monsters.db/shambling_mound__uTmirbJfdHFTag2i.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Fetid piles of slimy vegetation animated to life by lightning.

      \n\t

      \n\t

      AC 14, HP 20, ATK 2 slam +3 (1d6 + engulf), MV near, S +3, D -2, C +2, I -3, W +0, Ch -3, AL N, LV 4

      \n\t

      Impervious. Fire immune. Healed by electricity.

      Engulf. If a target is hit by both slams in same round, it is pulled into shambling mound's body and suffocates in 2d4 rounds. DC 15 STR on turn to escape.

      ", + "notes": "\n\t

      Fetid piles of slimy vegetation animated to life by lightning.

      \n\t

      \n\t

      AC 14, HP 20, ATK 2 slam +3 (1d6 + engulf), MV near, S +3, D -2, C +2, I -3, W +0, Ch -3, AL N, LV 4

      \n\t

      Impervious. Fire immune. Healed by electricity.

      Engulf. If a target is hit by both slams in same round, it is pulled into shambling mound's body and suffocates in 2d4 rounds. [[check 15 str]] on turn to escape.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/sigil_of_doom__CG8OMH79DZarSIUG.json b/data/packs/monsters.db/sigil_of_doom__CG8OMH79DZarSIUG.json index 5531f152..363f5b62 100644 --- a/data/packs/monsters.db/sigil_of_doom__CG8OMH79DZarSIUG.json +++ b/data/packs/monsters.db/sigil_of_doom__CG8OMH79DZarSIUG.json @@ -8,7 +8,7 @@ "name": "Sigil of Doom", "system": { "dc": 15, - "description": "

      One target of LV 9 or less within near DC 15 CON or go to 0 HP.

      ", + "description": "

      One target of LV 9 or less within near [[check 15 con]] or go to 0 HP.

      ", "duration": { "type": "instant", "value": -1 diff --git a/data/packs/monsters.db/siren__iaP5JVmGCrkkTAzO.json b/data/packs/monsters.db/siren__iaP5JVmGCrkkTAzO.json index af05e9be..ecfd2733 100644 --- a/data/packs/monsters.db/siren__iaP5JVmGCrkkTAzO.json +++ b/data/packs/monsters.db/siren__iaP5JVmGCrkkTAzO.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "swim, fly", - "notes": "\n\t

      Baleful fey with dove wings and iridescent fish scales. Their singing entrances listeners.

      \n\t

      \n\t

      AC 12, HP 18, ATK 2 claw +2 (1d6) or 1 song, MV near (swim, fly), S +0, D +2, C +0, I +2, W +2, Ch +4, AL C, LV 4

      \n\t

      Song. Enemies who can hear within double near DC 15 CHA or paralyzed 1d4 rounds. Immune for 1 day if passed check.

      ", + "notes": "\n\t

      Baleful fey with dove wings and iridescent fish scales. Their singing entrances listeners.

      \n\t

      \n\t

      AC 12, HP 18, ATK 2 claw +2 (1d6) or 1 song, MV near (swim, fly), S +0, D +2, C +0, I +2, W +2, Ch +4, AL C, LV 4

      \n\t

      Song. Enemies who can hear within double near [[check 15 cha]] or paralyzed 1d4 rounds. Immune for 1 day if passed check.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/slow__WCgeRKkVzpcLQ4h9.json b/data/packs/monsters.db/slow__WCgeRKkVzpcLQ4h9.json index 3c9f94ef..603fe508 100644 --- a/data/packs/monsters.db/slow__WCgeRKkVzpcLQ4h9.json +++ b/data/packs/monsters.db/slow__WCgeRKkVzpcLQ4h9.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Slow", "system": { - "description": "

      Far range, one target. DC 15 CON or speed halved 1d4 rounds.

      ", + "description": "

      Far range, one target. [[check 15 con]] or speed halved 1d4 rounds.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/slow__Xdqp9RpogEYCs7eT.json b/data/packs/monsters.db/slow__Xdqp9RpogEYCs7eT.json index 71368cd6..11ea6747 100644 --- a/data/packs/monsters.db/slow__Xdqp9RpogEYCs7eT.json +++ b/data/packs/monsters.db/slow__Xdqp9RpogEYCs7eT.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Far range, one target. DC 15 CON or speed halved [[/r 1d4]] rds.

      ", + "description": "

      Far range, one target. [[check 15 con]] or speed halved [[/r 1d4]] rds.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/smog_breath__GoO4Pf1ZqGjiTmEC.json b/data/packs/monsters.db/smog_breath__GoO4Pf1ZqGjiTmEC.json index 74a3c730..c66e5162 100644 --- a/data/packs/monsters.db/smog_breath__GoO4Pf1ZqGjiTmEC.json +++ b/data/packs/monsters.db/smog_breath__GoO4Pf1ZqGjiTmEC.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Smog Breath", "system": { - "description": "

      Fills a near-sized cube extending from dragon. DC 15 CON or 2d10 damage and blinded for 1 round.

      ", + "description": "

      Fills a near-sized cube extending from dragon. [[check 15 con]] or 2d10 damage and blinded for 1 round.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/smog_breath__com7VSCQjyd2H2dH.json b/data/packs/monsters.db/smog_breath__com7VSCQjyd2H2dH.json index 746912b6..1b400546 100644 --- a/data/packs/monsters.db/smog_breath__com7VSCQjyd2H2dH.json +++ b/data/packs/monsters.db/smog_breath__com7VSCQjyd2H2dH.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Fills a near-sized cube extending from dragon. DC 15 CON or [[/r 2d10]] damage and blinded for 1 round.

      ", + "description": "

      Fills a near-sized cube extending from dragon. [[check 15 con]] or [[/r 2d10]] damage and blinded for 1 round.

      ", "predefinedEffects": "", "ranges": [ ], diff --git a/data/packs/monsters.db/snake__cobra__anfsgfN2gFs72MHo.json b/data/packs/monsters.db/snake__cobra__anfsgfN2gFs72MHo.json index be8ee1bc..18f19376 100644 --- a/data/packs/monsters.db/snake__cobra__anfsgfN2gFs72MHo.json +++ b/data/packs/monsters.db/snake__cobra__anfsgfN2gFs72MHo.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A weaving serpent with a neck hood and lethal venom.

      \n\t

      \n\t

      AC 12, HP 4, ATK 1 bite +2 (1 + poison), MV near, S -3, D +2, C +0, I -3, W +0, Ch -3, AL N, LV 1

      \n\t

      Poison. DC 18 CON or go to 0 HP with a death timer of 1.

      ", + "notes": "\n\t

      A weaving serpent with a neck hood and lethal venom.

      \n\t

      \n\t

      AC 12, HP 4, ATK 1 bite +2 (1 + poison), MV near, S -3, D +2, C +0, I -3, W +0, Ch -3, AL N, LV 1

      \n\t

      Poison. [[check 18 con]] or go to 0 HP with a death timer of 1.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/snake__swarm__cUUnqWyaNDYghKxE.json b/data/packs/monsters.db/snake__swarm__cUUnqWyaNDYghKxE.json index cb18549f..af9ed1ba 100644 --- a/data/packs/monsters.db/snake__swarm__cUUnqWyaNDYghKxE.json +++ b/data/packs/monsters.db/snake__swarm__cUUnqWyaNDYghKxE.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      A roiling wave of snakes darting and flowing across the ground.

      \n\t

      \n\t

      AC 12, HP 19, ATK 3 bite +2 (1d4 + poison), MV near, S -3, D +2, C +1, I -3, W +0, Ch -3, AL N, LV 4

      \n\t

      Poison. DC 12 CON or go to 0 HP in 1d4 rounds.

      ", + "notes": "\n\t

      A roiling wave of snakes darting and flowing across the ground.

      \n\t

      \n\t

      AC 12, HP 19, ATK 3 bite +2 (1d4 + poison), MV near, S -3, D +2, C +1, I -3, W +0, Ch -3, AL N, LV 4

      \n\t

      Poison. [[check 12 con]] or go to 0 HP in 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/song__4mlrXcRGjlZTjGad.json b/data/packs/monsters.db/song__4mlrXcRGjlZTjGad.json index 6e27173a..c91efd80 100644 --- a/data/packs/monsters.db/song__4mlrXcRGjlZTjGad.json +++ b/data/packs/monsters.db/song__4mlrXcRGjlZTjGad.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Enemies who can hear within double near DC 12 CHA or dazed and drawn to harpy for [[/r 1d4]] rounds. Immune for 1 day if passed check.

      ", + "description": "

      Enemies who can hear within double near [[check 12 cha]] or dazed and drawn to harpy for [[/r 1d4]] rounds. Immune for 1 day if passed check.

      ", "predefinedEffects": "", "ranges": [ ], diff --git a/data/packs/monsters.db/song__BpR7pjqEIyqP3cC5.json b/data/packs/monsters.db/song__BpR7pjqEIyqP3cC5.json index c310245a..59c07480 100644 --- a/data/packs/monsters.db/song__BpR7pjqEIyqP3cC5.json +++ b/data/packs/monsters.db/song__BpR7pjqEIyqP3cC5.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Enemies who can hear within double near DC 15 CHA or paralyzed [[/r 1d4]] rounds. Immune for 1 day if passed check.

      ", + "description": "

      Enemies who can hear within double near [[check 15 cha]] or paralyzed [[/r 1d4]] rounds. Immune for 1 day if passed check.

      ", "predefinedEffects": "", "ranges": [ ], diff --git a/data/packs/monsters.db/soulbind__zsKCU3we8eiou4Ou.json b/data/packs/monsters.db/soulbind__zsKCU3we8eiou4Ou.json index 18290fa9..4e1a3c1f 100644 --- a/data/packs/monsters.db/soulbind__zsKCU3we8eiou4Ou.json +++ b/data/packs/monsters.db/soulbind__zsKCU3we8eiou4Ou.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      All targets within near DC 20 CHA or fall under control of archdevil for [[/r 1d4]] rounds. DC 20 CHA on turn to end the effect.

      ", + "description": "

      All targets within near [[check 20 cha]] or fall under control of archdevil for [[/r 1d4]] rounds. [[check 20 cha]] on turn to end the effect.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/sphinx__JjJbKB1yomE7Ma8T.json b/data/packs/monsters.db/sphinx__JjJbKB1yomE7Ma8T.json index 3f3cd662..4150d5ee 100644 --- a/data/packs/monsters.db/sphinx__JjJbKB1yomE7Ma8T.json +++ b/data/packs/monsters.db/sphinx__JjJbKB1yomE7Ma8T.json @@ -143,7 +143,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      A winged, leonine oracle who can see into time and space and often speaks in riddles. Lives in isolated mountains.

      \n\t

      \n\t

      AC 16, HP 42, ATK 3 claw +7 (1d10) or 2 spell +5, MV double near (fly), S +4, D +1, C +2, I +4, W +4, Ch +3, AL L, LV 9

      \n\t

      Roar. In place of attacks, all creatures who can hear within far DC 18 CHA or paralyzed 1d4 rounds.

      Gate (WIS Spell). DC 14. Open a portal at a point within near to another location on any plane. Lasts 1d6 rounds or until dismissed.

      Omens (WIS Spell). DC 12. Self. ADV on all actions for 1d4 rounds.

      Riddle (WIS Spell). DC 12. One target in far DC 15 INT or stupefied 1d4 rounds.

      Time Bend (WIS Spell). DC 14. One target in near frozen in time for 1d4 rounds.

      Unmake (WIS Spell). DC 13. One target in far takes 3d8 damage.

      ", + "notes": "\n\t

      A winged, leonine oracle who can see into time and space and often speaks in riddles. Lives in isolated mountains.

      \n\t

      \n\t

      AC 16, HP 42, ATK 3 claw +7 (1d10) or 2 spell +5, MV double near (fly), S +4, D +1, C +2, I +4, W +4, Ch +3, AL L, LV 9

      \n\t

      Roar. In place of attacks, all creatures who can hear within far [[check 18 cha]] or paralyzed 1d4 rounds.

      Gate (WIS Spell). DC 14. Open a portal at a point within near to another location on any plane. Lasts 1d6 rounds or until dismissed.

      Omens (WIS Spell). DC 12. Self. ADV on all actions for 1d4 rounds.

      Riddle (WIS Spell). DC 12. One target in far [[check 15 int]] or stupefied 1d4 rounds.

      Time Bend (WIS Spell). DC 14. One target in near frozen in time for 1d4 rounds.

      Unmake (WIS Spell). DC 13. One target in far takes 3d8 damage.

      ", "spellcastingAbility": "wis", "spellcastingAttackNum": 2, "spellcastingBonus": 5 diff --git a/data/packs/monsters.db/spider__giant__p9PayU4K9nBZ8JRl.json b/data/packs/monsters.db/spider__giant__p9PayU4K9nBZ8JRl.json index 0d7c08e4..ffd214a9 100644 --- a/data/packs/monsters.db/spider__giant__p9PayU4K9nBZ8JRl.json +++ b/data/packs/monsters.db/spider__giant__p9PayU4K9nBZ8JRl.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "climb", - "notes": "\n\t

      Bulbous abdomen and eight, spindly legs. Dwells high in trees or caves and ambushes prey, capturing them to eat later.

      \n\t

      \n\t

      AC 13, HP 13, ATK 1 bite +3 (1d4 + poison), MV near (climb), S +2, D +3, C +0, I -2, W +1, Ch -2, AL N, LV 3

      \n\t

      Poison. DC 12 CON or paralyzed 1d4 hours.

      ", + "notes": "\n\t

      Bulbous abdomen and eight, spindly legs. Dwells high in trees or caves and ambushes prey, capturing them to eat later.

      \n\t

      \n\t

      AC 13, HP 13, ATK 1 bite +3 (1d4 + poison), MV near (climb), S +2, D +3, C +0, I -2, W +1, Ch -2, AL N, LV 3

      \n\t

      Poison. [[check 12 con]] or paralyzed 1d4 hours.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/spider__piZE4vxM1QjLxEt0.json b/data/packs/monsters.db/spider__piZE4vxM1QjLxEt0.json index 605b6fca..0452da66 100644 --- a/data/packs/monsters.db/spider__piZE4vxM1QjLxEt0.json +++ b/data/packs/monsters.db/spider__piZE4vxM1QjLxEt0.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "climb", - "notes": "\n\t

      Silent, web-weaving arachnids with a flesh-dissolving venom.

      \n\t

      \n\t

      AC 11, HP 1, ATK 2 bite +1 (1 + poison), MV near (climb), S -4, D +1, C +0, I -4, W +0, Ch -4, AL N, LV 0

      \n\t

      Poison. DC 9 CON or take 1d4 damage.

      ", + "notes": "\n\t

      Silent, web-weaving arachnids with a flesh-dissolving venom.

      \n\t

      \n\t

      AC 11, HP 1, ATK 2 bite +1 (1 + poison), MV near (climb), S -4, D +1, C +0, I -4, W +0, Ch -4, AL N, LV 0

      \n\t

      Poison. [[check 9 con]] or take 1d4 damage.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/spider__swarm__rwE58nsTLAG7pW1u.json b/data/packs/monsters.db/spider__swarm__rwE58nsTLAG7pW1u.json index 7387c08e..cd3b5b65 100644 --- a/data/packs/monsters.db/spider__swarm__rwE58nsTLAG7pW1u.json +++ b/data/packs/monsters.db/spider__swarm__rwE58nsTLAG7pW1u.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "climb", - "notes": "\n\t

      A scurrying carpet of spiders.

      \n\t

      \n\t

      AC 13, HP 9, ATK 1 bite +3 (1d4 + poison), MV near (climb), S -1, D +3, C +0, I -3, W +1, Ch -3, AL N, LV 2

      \n\t

      Poison. DC 12 CON or paralyzed 1d4 rounds.

      ", + "notes": "\n\t

      A scurrying carpet of spiders.

      \n\t

      \n\t

      AC 13, HP 9, ATK 1 bite +3 (1d4 + poison), MV near (climb), S -1, D +3, C +0, I -3, W +1, Ch -3, AL N, LV 2

      \n\t

      Poison. [[check 12 con]] or paralyzed 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/steam_breath__duWZ4M8ncHp14V3w.json b/data/packs/monsters.db/steam_breath__duWZ4M8ncHp14V3w.json index f83961b0..65be6208 100644 --- a/data/packs/monsters.db/steam_breath__duWZ4M8ncHp14V3w.json +++ b/data/packs/monsters.db/steam_breath__duWZ4M8ncHp14V3w.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Fills a double near-sized cube extending from dragon. DC 15 DEX or [[/r 4d12]] damage.

      ", + "description": "

      Fills a double near-sized cube extending from dragon. [[check 15 dex]] or [[/r 4d12]] damage.

      ", "predefinedEffects": "", "ranges": [ ], diff --git a/data/packs/monsters.db/stick__YnXcKIFkw6Wrk5aq.json b/data/packs/monsters.db/stick__YnXcKIFkw6Wrk5aq.json index 2df373f9..c9e5e47c 100644 --- a/data/packs/monsters.db/stick__YnXcKIFkw6Wrk5aq.json +++ b/data/packs/monsters.db/stick__YnXcKIFkw6Wrk5aq.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Stick", "system": { - "description": "

      DC 15 STR or adhere to target; auto-hit with bite. DC 15 STR on turn to remove.

      ", + "description": "

      [[check 15 str]] or adhere to target; auto-hit with bite. [[check 15 str]] on turn to remove.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/stingbat__bILTV7P0d55nACrQ.json b/data/packs/monsters.db/stingbat__bILTV7P0d55nACrQ.json index d66dc0c4..54727c47 100644 --- a/data/packs/monsters.db/stingbat__bILTV7P0d55nACrQ.json +++ b/data/packs/monsters.db/stingbat__bILTV7P0d55nACrQ.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      Darting, orange insect-bat with four wings and needlelike beak.

      \n\t

      \n\t

      AC 12, HP 4, ATK 1 beak +2 (1d4 + blood drain), MV near (fly), S -2, D +2, C +0, I -2, W +0, Ch -2, AL N, LV 1

      \n\t

      Blood Drain. Attach to bitten target; auto-hit the next round. DC 9 STR on turn to remove.

      ", + "notes": "\n\t

      Darting, orange insect-bat with four wings and needlelike beak.

      \n\t

      \n\t

      AC 12, HP 4, ATK 1 beak +2 (1d4 + blood drain), MV near (fly), S -2, D +2, C +0, I -2, W +0, Ch -2, AL N, LV 1

      \n\t

      Blood Drain. Attach to bitten target; auto-hit the next round. [[check 9 str]] on turn to remove.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/stink_bomb__xBAlOQL2Aw6BtJat.json b/data/packs/monsters.db/stink_bomb__xBAlOQL2Aw6BtJat.json index 492809ac..6557f55e 100644 --- a/data/packs/monsters.db/stink_bomb__xBAlOQL2Aw6BtJat.json +++ b/data/packs/monsters.db/stink_bomb__xBAlOQL2Aw6BtJat.json @@ -8,7 +8,7 @@ "name": "Stink Bomb", "system": { "dc": "12", - "description": "

      One target within far [[/r 2d4]] damage and DC 12 CON or DISADV on next check/attack.

      ", + "description": "

      One target within far [[/r 2d4]] damage and [[check 12 con]] or DISADV on next check/attack.

      ", "duration": { "type": "", "value": -1 diff --git a/data/packs/monsters.db/swallow__TJBmGc35yI8J1mmm.json b/data/packs/monsters.db/swallow__TJBmGc35yI8J1mmm.json index 273d5063..6f3d8425 100644 --- a/data/packs/monsters.db/swallow__TJBmGc35yI8J1mmm.json +++ b/data/packs/monsters.db/swallow__TJBmGc35yI8J1mmm.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Swallow", "system": { - "description": "

      DC 18 STR or swallowed whole. Total darkness inside and [[/r 4d10]] damage per round. Tarrasque regurgitates all swallowed if dealt at least 30 damage in one round to the inside of its gullet.

      ", + "description": "

      [[check 18 str]] or swallowed whole. Total darkness inside and [[/r 4d10]] damage per round. Tarrasque regurgitates all swallowed if dealt at least 30 damage in one round to the inside of its gullet.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/terrify__2mavvptp3uwVGn7B.json b/data/packs/monsters.db/terrify__2mavvptp3uwVGn7B.json index b12e2f37..3c981383 100644 --- a/data/packs/monsters.db/terrify__2mavvptp3uwVGn7B.json +++ b/data/packs/monsters.db/terrify__2mavvptp3uwVGn7B.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Terrify", "system": { - "description": "

      A creature who first sees her true form DC 15 CHA or DISADV on attacks [[/r 1d4]] rounds.

      ", + "description": "

      A creature who first sees her true form [[check 15 cha]] or DISADV on attacks [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/the_tarrasque__NTRHmnsw7poR4rZ9.json b/data/packs/monsters.db/the_tarrasque__NTRHmnsw7poR4rZ9.json index 494e7f6b..8f734f38 100644 --- a/data/packs/monsters.db/the_tarrasque__NTRHmnsw7poR4rZ9.json +++ b/data/packs/monsters.db/the_tarrasque__NTRHmnsw7poR4rZ9.json @@ -146,7 +146,7 @@ }, "move": "tripleNear", "moveNote": "burrow, swim", - "notes": "\n\t

      A colossal, four-legged reptile with crocodilian jaws, amber scales, and a diamond-hard, spiked carapace. It towers overhead like a mountain, able to swallow entire villages in one gulp. The tarrasque hibernates deep in the earth or at the bottom of the sea for centuries, only awakening long enough to fill its vast belly in an indiscriminate rampage of terror and destruction. There is only one tarrasque, and it is the most dreaded creature to walk the earth.

      \n\t

      \n\t

      AC 22, HP 140, ATK 4 thrash (near) +13 (3d10 + sever) and 1 bite (near) +13 (5d10 + sever + swallow), MV triple near (burrow, swim), S +7, D +2, C +5, I -3, W +1, Ch -3, AL N, LV 30

      \n\t

      Legendary. Only damaged by magical sources. Hostile spells targeting the tarrasque are DC 18 to cast.

      Deep Dweller. Immune to harm from fire and cold. Amphibious.

      Permanent Death. Cannot be permanently killed unless a wish spell is cast on it while it is at 0 HP.

      Rampage. In place of attacks, move far in a straight line and make one bite attack. On a hit, triple damage.

      Reflective Carapace. Immune to rays, blasts, or bolts of energy. 1:6 chance these are reflected back at their originator.

      Regeneration. Regains 4d10 lost HP at the beginning of its turn.

      Sever. On a natural attack roll of 18+, the attack also severs a random limb. 1d6: 1. Head, 2-4. Arm, 5-6. Leg.

      Swallow. DC 18 STR or swallowed whole. Total darkness inside and 4d10 damage per round. Tarrasque regurgitates all swallowed if dealt at least 30 damage in one round to the inside of its gullet.

      ", + "notes": "\n\t

      A colossal, four-legged reptile with crocodilian jaws, amber scales, and a diamond-hard, spiked carapace. It towers overhead like a mountain, able to swallow entire villages in one gulp. The tarrasque hibernates deep in the earth or at the bottom of the sea for centuries, only awakening long enough to fill its vast belly in an indiscriminate rampage of terror and destruction. There is only one tarrasque, and it is the most dreaded creature to walk the earth.

      \n\t

      \n\t

      AC 22, HP 140, ATK 4 thrash (near) +13 (3d10 + sever) and 1 bite (near) +13 (5d10 + sever + swallow), MV triple near (burrow, swim), S +7, D +2, C +5, I -3, W +1, Ch -3, AL N, LV 30

      \n\t

      Legendary. Only damaged by magical sources. Hostile spells targeting the tarrasque are DC 18 to cast.

      Deep Dweller. Immune to harm from fire and cold. Amphibious.

      Permanent Death. Cannot be permanently killed unless a wish spell is cast on it while it is at 0 HP.

      Rampage. In place of attacks, move far in a straight line and make one bite attack. On a hit, triple damage.

      Reflective Carapace. Immune to rays, blasts, or bolts of energy. 1:6 chance these are reflected back at their originator.

      Regeneration. Regains 4d10 lost HP at the beginning of its turn.

      Sever. On a natural attack roll of 18+, the attack also severs a random limb. 1d6: 1. Head, 2-4. Arm, 5-6. Leg.

      Swallow. [[check 18 str]] or swallowed whole. Total darkness inside and 4d10 damage per round. Tarrasque regurgitates all swallowed if dealt at least 30 damage in one round to the inside of its gullet.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/the_ten_eyed_oracle__hiZvVJPOJWtOXV4m.json b/data/packs/monsters.db/the_ten_eyed_oracle__hiZvVJPOJWtOXV4m.json index 9581b507..e301ae73 100644 --- a/data/packs/monsters.db/the_ten_eyed_oracle__hiZvVJPOJWtOXV4m.json +++ b/data/packs/monsters.db/the_ten_eyed_oracle__hiZvVJPOJWtOXV4m.json @@ -148,7 +148,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      A floating mass of rubbery skin crusted with barnacles. Its ten eyestalks writhe like snakes, and a deep, circular scar mars its central body, blinding what was once a large eye above a lipless maw. The Ten-Eyed Oracle stalks the Shadowdark, burbling mad prophesies and somehow moving freely between the lightless fathoms of the earth. The keepers of the deep lore suspect The Ten-Eyed Oracle was once a benevolent ally of mankind, but an unknown calamity drove it to insanity and reckless hatred.

      \n\t

      \n\t

      AC 17, HP 85, ATK 2d4 eyestalk ray, MV near (fly), S +4, D +5, C +4, I +5, W +4, Ch +4, AL C, LV 18

      \n\t

      Legendary. Only damaged by magical sources. Hostile spells targeting The Ten-Eyed Oracle are DC 18 to cast.

      Eyestalk Ray. Each ray can shoot once per round and target one creature or an object up to 1,000 pounds (up to four on same target).

      Eyestalk Ray: Charm. DC 15 CHA or become ally for 1d4 rounds.

      Eyestalk Ray: Hold. DC 15 STR or paralyzed 1d4 rounds.

      Eyestalk Ray: Sleep. DC 15 WIS or asleep 1d4 rounds.

      Eyestalk Ray: Polymorph. DC 15 INT or turned into vermin for 1d4 rounds.

      Eyestalk Ray: Cancel. DC 15 DEX or all magical effects on target end.

      Eyestalk Ray: Confusion. DC 15 WIS or attack a random ally within near.

      Eyestalk Ray: Telekinesis. DC 15 STR or hover target up to double near.

      Eyestalk Ray: Disintegrate. DC 15 DEX or 5d8 damage (object destroyed).

      Eyestalk Ray: Petrify. DC 15 CON or petrified.

      Eyestalk Ray: Death. DC 15 CON or drop to 0 HP with a death timer of 1.

      ", + "notes": "\n\t

      A floating mass of rubbery skin crusted with barnacles. Its ten eyestalks writhe like snakes, and a deep, circular scar mars its central body, blinding what was once a large eye above a lipless maw. The Ten-Eyed Oracle stalks the Shadowdark, burbling mad prophesies and somehow moving freely between the lightless fathoms of the earth. The keepers of the deep lore suspect The Ten-Eyed Oracle was once a benevolent ally of mankind, but an unknown calamity drove it to insanity and reckless hatred.

      \n\t

      \n\t

      AC 17, HP 85, ATK 2d4 eyestalk ray, MV near (fly), S +4, D +5, C +4, I +5, W +4, Ch +4, AL C, LV 18

      \n\t

      Legendary. Only damaged by magical sources. Hostile spells targeting The Ten-Eyed Oracle are DC 18 to cast.

      Eyestalk Ray. Each ray can shoot once per round and target one creature or an object up to 1,000 pounds (up to four on same target).

      Eyestalk Ray: Charm. [[check 15 cha]] or become ally for 1d4 rounds.

      Eyestalk Ray: Hold. [[check 15 str]] or paralyzed 1d4 rounds.

      Eyestalk Ray: Sleep. [[check 15 wis]] or asleep 1d4 rounds.

      Eyestalk Ray: Polymorph. [[check 15 int]] or turned into vermin for 1d4 rounds.

      Eyestalk Ray: Cancel. [[check 15 dex]] or all magical effects on target end.

      Eyestalk Ray: Confusion. [[check 15 wis]] or attack a random ally within near.

      Eyestalk Ray: Telekinesis. [[check 15 str]] or hover target up to double near.

      Eyestalk Ray: Disintegrate. [[check 15 dex]] or 5d8 damage (object destroyed).

      Eyestalk Ray: Petrify. [[check 15 con]] or petrified.

      Eyestalk Ray: Death. [[check 15 con]] or drop to 0 HP with a death timer of 1.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/tongue__mEStu9pqn6uZL0XQ.json b/data/packs/monsters.db/tongue__mEStu9pqn6uZL0XQ.json index 31ef756e..87cf312d 100644 --- a/data/packs/monsters.db/tongue__mEStu9pqn6uZL0XQ.json +++ b/data/packs/monsters.db/tongue__mEStu9pqn6uZL0XQ.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      1 creature in near DC 12 DEX or pulled to close range.

      ", + "description": "

      1 creature in near [[check 12 dex]] or pulled to close range.

      ", "predefinedEffects": "", "ranges": [ ], diff --git a/data/packs/monsters.db/toxin__8ImR70ykjgRSTKdi.json b/data/packs/monsters.db/toxin__8ImR70ykjgRSTKdi.json index e3ec9f5c..067cbb61 100644 --- a/data/packs/monsters.db/toxin__8ImR70ykjgRSTKdi.json +++ b/data/packs/monsters.db/toxin__8ImR70ykjgRSTKdi.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Toxin", "system": { - "description": "

      DC 12 CON or unconscious for [[/r 1d4]] rounds.

      ", + "description": "

      [[check 12 con]] or unconscious for [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/toxin__9X7xB8QcvSmArvoR.json b/data/packs/monsters.db/toxin__9X7xB8QcvSmArvoR.json index 5f8bc22d..22407778 100644 --- a/data/packs/monsters.db/toxin__9X7xB8QcvSmArvoR.json +++ b/data/packs/monsters.db/toxin__9X7xB8QcvSmArvoR.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Toxin", "system": { - "description": "

      DC 12 CON or paralyzed for [[/r 1d4]] rounds.

      ", + "description": "

      [[check 12 con]] or paralyzed for [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/toxin__IWKGdw3vbV7Sq9BW.json b/data/packs/monsters.db/toxin__IWKGdw3vbV7Sq9BW.json index 0183824b..47e73ec8 100644 --- a/data/packs/monsters.db/toxin__IWKGdw3vbV7Sq9BW.json +++ b/data/packs/monsters.db/toxin__IWKGdw3vbV7Sq9BW.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Toxin", "system": { - "description": "

      DC 12 CON or paralyzed 1d4 rounds.

      ", + "description": "

      [[check 12 con]] or paralyzed 1d4 rounds.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/toxin__Ui40uFcfnFFkJ0fu.json b/data/packs/monsters.db/toxin__Ui40uFcfnFFkJ0fu.json index 1f26eb7c..932dafa4 100644 --- a/data/packs/monsters.db/toxin__Ui40uFcfnFFkJ0fu.json +++ b/data/packs/monsters.db/toxin__Ui40uFcfnFFkJ0fu.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Toxin", "system": { - "description": "

      DC 12 CON or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      [[check 12 con]] or paralyzed [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/toxin__jjIo6W6eWnU2jog0.json b/data/packs/monsters.db/toxin__jjIo6W6eWnU2jog0.json index 06f60f02..e52697b5 100644 --- a/data/packs/monsters.db/toxin__jjIo6W6eWnU2jog0.json +++ b/data/packs/monsters.db/toxin__jjIo6W6eWnU2jog0.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Toxin", "system": { - "description": "

      DC 15 CON or paralyzed 1d4 rounds.

      ", + "description": "

      [[check 15 con]] or paralyzed 1d4 rounds.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/toxin__pUxPYCv0hAN8uZm7.json b/data/packs/monsters.db/toxin__pUxPYCv0hAN8uZm7.json index 0ec93c99..00f763e9 100644 --- a/data/packs/monsters.db/toxin__pUxPYCv0hAN8uZm7.json +++ b/data/packs/monsters.db/toxin__pUxPYCv0hAN8uZm7.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Toxin", "system": { - "description": "

      DC 9 CON or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      [[check 9 con]] or paralyzed [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/toxin__wqSMhIHhQtIDwgpg.json b/data/packs/monsters.db/toxin__wqSMhIHhQtIDwgpg.json index c272a64a..e88091f9 100644 --- a/data/packs/monsters.db/toxin__wqSMhIHhQtIDwgpg.json +++ b/data/packs/monsters.db/toxin__wqSMhIHhQtIDwgpg.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Toxin", "system": { - "description": "

      DC 15 CON or paralyzed [[/r 1d4]] rounds.

      ", + "description": "

      [[check 15 con]] or paralyzed [[/r 1d4]] rounds.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/vampire__ei53dGxj76xmqQty.json b/data/packs/monsters.db/vampire__ei53dGxj76xmqQty.json index 77becf7c..e92a8472 100644 --- a/data/packs/monsters.db/vampire__ei53dGxj76xmqQty.json +++ b/data/packs/monsters.db/vampire__ei53dGxj76xmqQty.json @@ -142,7 +142,7 @@ }, "move": "near", "moveNote": "climb", - "notes": "\n\t

      Pale, blood-drinking undead of supreme power and wickedness. They loathe sunlight and protect their coffins at all costs.

      \n\t

      \n\t

      AC 15, HP 52, ATK 3 bite +7 (1d8 + blood drain) or 1 charm, MV near (climb), S +4, D +3, C +3, I +1, W +3, Ch +4, AL C, LV 11

      \n\t

      Supreme Undead. Immune to morale checks. Only damaged by magical sources.

      Blood Drain. Vampire heals 2d6 HP and target permanently loses 1d4 CON. At 0 CON, target dies and rises as vampire or vampire spawn (vampire chooses).

      Charm. One humanoid target who can see vampire within near, DC 15 CHA or under vampire's control for 1d4 days.

      Shapechange. In place of attacks, turn into a bat, wolf, or back into regular form.

      Vampire. Must sleep in a coffin daily or loses 2d6 HP each day that can't be healed until resting in coffin. Takes 3d8 damage each round while in direct sunlight. Cannot be killed unless pierced through heart with a wooden stake while at 0 HP.

      ", + "notes": "\n\t

      Pale, blood-drinking undead of supreme power and wickedness. They loathe sunlight and protect their coffins at all costs.

      \n\t

      \n\t

      AC 15, HP 52, ATK 3 bite +7 (1d8 + blood drain) or 1 charm, MV near (climb), S +4, D +3, C +3, I +1, W +3, Ch +4, AL C, LV 11

      \n\t

      Supreme Undead. Immune to morale checks. Only damaged by magical sources.

      Blood Drain. Vampire heals 2d6 HP and target permanently loses 1d4 CON. At 0 CON, target dies and rises as vampire or vampire spawn (vampire chooses).

      Charm. One humanoid target who can see vampire within near, [[check 15 cha]] or under vampire's control for 1d4 days.

      Shapechange. In place of attacks, turn into a bat, wolf, or back into regular form.

      Vampire. Must sleep in a coffin daily or loses 2d6 HP each day that can't be healed until resting in coffin. Takes 3d8 damage each round while in direct sunlight. Cannot be killed unless pierced through heart with a wooden stake while at 0 HP.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/venom__BbK7mRUYw9HgTLCz.json b/data/packs/monsters.db/venom__BbK7mRUYw9HgTLCz.json index d90dda43..ceec3dad 100644 --- a/data/packs/monsters.db/venom__BbK7mRUYw9HgTLCz.json +++ b/data/packs/monsters.db/venom__BbK7mRUYw9HgTLCz.json @@ -7,7 +7,7 @@ "img": "icons/svg/item-bag.svg", "name": "Venom", "system": { - "description": "

      DC 9 CON or go to 0 HP.

      ", + "description": "

      [[check 9 con]] or go to 0 HP.

      ", "magicItem": false, "source": { "page": 0, diff --git a/data/packs/monsters.db/venom__KxfcNf9Cicd0zvHs.json b/data/packs/monsters.db/venom__KxfcNf9Cicd0zvHs.json index 7db127de..083521e8 100644 --- a/data/packs/monsters.db/venom__KxfcNf9Cicd0zvHs.json +++ b/data/packs/monsters.db/venom__KxfcNf9Cicd0zvHs.json @@ -7,7 +7,7 @@ "img": "icons/creatures/abilities/dragon-breath-purple.webp", "name": "Venom", "system": { - "description": "

      DC 9 CON or go to 0 HP.

      ", + "description": "

      [[check 9 con]] or go to 0 HP.

      ", "predefinedEffects": "", "source": { "title": "" diff --git a/data/packs/monsters.db/void_spawn__VvkJkRVLs6l9UaZy.json b/data/packs/monsters.db/void_spawn__VvkJkRVLs6l9UaZy.json index 71db3763..dd3e4eee 100644 --- a/data/packs/monsters.db/void_spawn__VvkJkRVLs6l9UaZy.json +++ b/data/packs/monsters.db/void_spawn__VvkJkRVLs6l9UaZy.json @@ -140,7 +140,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      Scythe-like limbs jut from a purple bulb as big as an ogre. Its lower half is a nest of tentacles.

      \n\t

      \n\t

      AC 13, HP 34, ATK 2 scythe +6 (1d10) and 1 tentacles +6 (1d12 + toxin), MV near (fly), S +4, D +1, C +3, I +0, W +1, Ch -1, AL C, LV 7

      \n\t

      Impervious. Immune to cold.

      Toxin. DC 12 CON or paralyzed for 1d4 rounds.

      ", + "notes": "\n\t

      Scythe-like limbs jut from a purple bulb as big as an ogre. Its lower half is a nest of tentacles.

      \n\t

      \n\t

      AC 13, HP 34, ATK 2 scythe +6 (1d10) and 1 tentacles +6 (1d12 + toxin), MV near (fly), S +4, D +1, C +3, I +0, W +1, Ch -1, AL C, LV 7

      \n\t

      Impervious. Immune to cold.

      Toxin. [[check 12 con]] or paralyzed for 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/void_spider__QziiJsawKcGcS0QJ.json b/data/packs/monsters.db/void_spider__QziiJsawKcGcS0QJ.json index e470002d..81199e80 100644 --- a/data/packs/monsters.db/void_spider__QziiJsawKcGcS0QJ.json +++ b/data/packs/monsters.db/void_spider__QziiJsawKcGcS0QJ.json @@ -140,7 +140,7 @@ }, "move": "near", "moveNote": "climb", - "notes": "\n\t

      Pale, horse-sized arachnids that become ghostly and intangible.

      \n\t

      \n\t

      AC 13, HP 23, ATK 2 bite +4 (1d8 + poison), MV near (climb), S +3, D +3, C +1, I -1, W +1, Ch -2, AL C, LV 5

      \n\t

      Impervious. Immune to cold.

      Phase. Once per round, become corporeal or incorporeal.

      Poison. DC 12 CON or drop to 0 HP in 1d4 rounds.

      ", + "notes": "\n\t

      Pale, horse-sized arachnids that become ghostly and intangible.

      \n\t

      \n\t

      AC 13, HP 23, ATK 2 bite +4 (1d8 + poison), MV near (climb), S +3, D +3, C +1, I -1, W +1, Ch -2, AL C, LV 5

      \n\t

      Impervious. Immune to cold.

      Phase. Once per round, become corporeal or incorporeal.

      Poison. [[check 12 con]] or drop to 0 HP in 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/wasp__giant__K9M3BA8PlvYWFADe.json b/data/packs/monsters.db/wasp__giant__K9M3BA8PlvYWFADe.json index 3f1fe7a7..777a4405 100644 --- a/data/packs/monsters.db/wasp__giant__K9M3BA8PlvYWFADe.json +++ b/data/packs/monsters.db/wasp__giant__K9M3BA8PlvYWFADe.json @@ -138,7 +138,7 @@ }, "move": "near", "moveNote": "fly", - "notes": "\n\t

      Man-sized wasps with glossy, yellow-striped abdomens.

      \n\t

      \n\t

      AC 13, HP 9, ATK 1 sting +3 (1d6 + venom), MV near (fly), S +1, D +3, C +0, I -3, W +0, Ch -3, AL N, LV 2

      \n\t

      Venom. DC 9 CON or go to 0 HP.

      ", + "notes": "\n\t

      Man-sized wasps with glossy, yellow-striped abdomens.

      \n\t

      \n\t

      AC 13, HP 9, ATK 1 sting +3 (1d6 + venom), MV near (fly), S +1, D +3, C +0, I -3, W +0, Ch -3, AL N, LV 2

      \n\t

      Venom. [[check 9 con]] or go to 0 HP.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/water_spout__jdgbSe8wKcxF4AKX.json b/data/packs/monsters.db/water_spout__jdgbSe8wKcxF4AKX.json index 6efa109e..54517438 100644 --- a/data/packs/monsters.db/water_spout__jdgbSe8wKcxF4AKX.json +++ b/data/packs/monsters.db/water_spout__jdgbSe8wKcxF4AKX.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Fills a near-sized cube within far. DC 15 STR or creatures inside flung [[/r 2d100]] feet in a random direction.

      ", + "description": "

      Fills a near-sized cube within far. [[check 15 str]] or creatures inside flung [[/r 2d100]] feet in a random direction.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/web__mohcAqC1At1TVnFw.json b/data/packs/monsters.db/web__mohcAqC1At1TVnFw.json index 88df587e..752e054c 100644 --- a/data/packs/monsters.db/web__mohcAqC1At1TVnFw.json +++ b/data/packs/monsters.db/web__mohcAqC1At1TVnFw.json @@ -8,7 +8,7 @@ "name": "Web", "system": { "dc": "13", - "description": "

      A near-sized cube of webs within far immobilizes all inside it for 5 rounds. DC 15 STR on turn to break free.

      ", + "description": "

      A near-sized cube of webs within far immobilizes all inside it for 5 rounds. [[check 15 str]] on turn to break free.

      ", "duration": { "type": "rounds", "value": "5" diff --git a/data/packs/monsters.db/whirlpool__Hk7ky7xkZ8ux7KEH.json b/data/packs/monsters.db/whirlpool__Hk7ky7xkZ8ux7KEH.json index 4799d0fa..e2600a93 100644 --- a/data/packs/monsters.db/whirlpool__Hk7ky7xkZ8ux7KEH.json +++ b/data/packs/monsters.db/whirlpool__Hk7ky7xkZ8ux7KEH.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      All within close DC 15 STR or immobilized inside water elemental (treat as underwater). DC 15 STR on turn to escape.

      ", + "description": "

      All within close [[check 15 str]] or immobilized inside water elemental (treat as underwater). [[check 15 str]] on turn to escape.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/whirlpool__K0jtx3NVgdu9RkOs.json b/data/packs/monsters.db/whirlpool__K0jtx3NVgdu9RkOs.json index 34ad0ca4..e0ae047e 100644 --- a/data/packs/monsters.db/whirlpool__K0jtx3NVgdu9RkOs.json +++ b/data/packs/monsters.db/whirlpool__K0jtx3NVgdu9RkOs.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      All within close DC 15 STR or immobilized inside water elemental (treat as underwater). DC 15 STR on turn to escape.

      ", + "description": "

      All within close [[check 15 str]] or immobilized inside water elemental (treat as underwater). [[check 15 str]] on turn to escape.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/whirlwind__G3qtuLQKRz336WuV.json b/data/packs/monsters.db/whirlwind__G3qtuLQKRz336WuV.json index d80eca0c..038cc3f2 100644 --- a/data/packs/monsters.db/whirlwind__G3qtuLQKRz336WuV.json +++ b/data/packs/monsters.db/whirlwind__G3qtuLQKRz336WuV.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      All within close DC 15 DEX or flung [[/r 2d20]] feet in random direction.

      ", + "description": "

      All within close [[check 15 dex]] or flung [[/r 2d20]] feet in random direction.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/whirlwind__gI68sEzZoll4507Y.json b/data/packs/monsters.db/whirlwind__gI68sEzZoll4507Y.json index c2eda5de..944ebc06 100644 --- a/data/packs/monsters.db/whirlwind__gI68sEzZoll4507Y.json +++ b/data/packs/monsters.db/whirlwind__gI68sEzZoll4507Y.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      All within close DC 15 DEX or flung [[/r 2d20]] feet in random direction.

      ", + "description": "

      All within close [[check 15 dex]] or flung [[/r 2d20]] feet in random direction.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/whirlwind__mMnML7YGLlmWxeow.json b/data/packs/monsters.db/whirlwind__mMnML7YGLlmWxeow.json index a0313dd1..b984f5a9 100644 --- a/data/packs/monsters.db/whirlwind__mMnML7YGLlmWxeow.json +++ b/data/packs/monsters.db/whirlwind__mMnML7YGLlmWxeow.json @@ -13,7 +13,7 @@ "bonuses": { "attackBonus": 0 }, - "description": "

      Transform into a lashing tornado. All enemies within near DC 18 DEX or thrown [[/r 2d100]] feet in a random direction.

      ", + "description": "

      Transform into a lashing tornado. All enemies within near [[check 18 dex]] or thrown [[/r 2d100]] feet in a random direction.

      ", "ranges": [ ], "source": { diff --git a/data/packs/monsters.db/wolf__winter__nugxSBkw9LcUDPqF.json b/data/packs/monsters.db/wolf__winter__nugxSBkw9LcUDPqF.json index b22ea6df..d6a54878 100644 --- a/data/packs/monsters.db/wolf__winter__nugxSBkw9LcUDPqF.json +++ b/data/packs/monsters.db/wolf__winter__nugxSBkw9LcUDPqF.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "", - "notes": "\n\t

      Sinister, white-pelted wolves with piercing blue eyes. From the fey realms of eternal winter.

      \n\t

      \n\t

      AC 12, HP 23, ATK 2 bite +4 (1d6) or 1 frost breath, MV double near, S +3, D +2, C +1, I +0, W +1, Ch +0, AL C, LV 5

      \n\t

      Impervious. Cold immune.

      Frost Breath. Fills a near-sized cube extending from winter wolf. DC 15 DEX or 3d8 damage. Cannot use again for 1d4 rounds.

      ", + "notes": "\n\t

      Sinister, white-pelted wolves with piercing blue eyes. From the fey realms of eternal winter.

      \n\t

      \n\t

      AC 12, HP 23, ATK 2 bite +4 (1d6) or 1 frost breath, MV double near, S +3, D +2, C +1, I +0, W +1, Ch +0, AL C, LV 5

      \n\t

      Impervious. Cold immune.

      Frost Breath. Fills a near-sized cube extending from winter wolf. [[check 15 dex]] or 3d8 damage. Cannot use again for 1d4 rounds.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/wyvern__IUN6KcvNGGJWTQCE.json b/data/packs/monsters.db/wyvern__IUN6KcvNGGJWTQCE.json index 432d9999..9fe4b52a 100644 --- a/data/packs/monsters.db/wyvern__IUN6KcvNGGJWTQCE.json +++ b/data/packs/monsters.db/wyvern__IUN6KcvNGGJWTQCE.json @@ -139,7 +139,7 @@ }, "move": "doubleNear", "moveNote": "fly", - "notes": "\n\t

      Dragon-cousins with a large tail stinger, mottled lizard skin, and leathery wings.

      \n\t

      \n\t

      AC 15, HP 37, ATK 2 rend +6 (1d8) and 1 stinger +6 (1d6 + poison), MV double near (fly), S +4, D +2, C +1, I -3, W +1, Ch -3, AL N, LV 8

      \n\t

      Poison. DC 15 CON or take 2d10 damage.

      ", + "notes": "\n\t

      Dragon-cousins with a large tail stinger, mottled lizard skin, and leathery wings.

      \n\t

      \n\t

      AC 15, HP 37, ATK 2 rend +6 (1d8) and 1 stinger +6 (1d6 + poison), MV double near (fly), S +4, D +2, C +1, I -3, W +1, Ch -3, AL N, LV 8

      \n\t

      Poison. [[check 15 con]] or take 2d10 damage.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/monsters.db/zombie__Q89EgThYcungYTke.json b/data/packs/monsters.db/zombie__Q89EgThYcungYTke.json index 72c4e55c..84be25c3 100644 --- a/data/packs/monsters.db/zombie__Q89EgThYcungYTke.json +++ b/data/packs/monsters.db/zombie__Q89EgThYcungYTke.json @@ -139,7 +139,7 @@ }, "move": "near", "moveNote": "", - "notes": "\n\t

      Lurching and decomposed undead that hunt in mobs.

      \n\t

      \n\t

      AC 8, HP 11, ATK 1 slam +2 (1d6), MV near, S +2, D -2, C +2, I -2, W -2, Ch -3, AL C, LV 2

      \n\t

      Undead. Immune to morale checks.

      Relentless. If zombie reduced to 0 HP by a non-magical source, DC 15 CON to go to 1 HP instead.

      ", + "notes": "\n\t

      Lurching and decomposed undead that hunt in mobs.

      \n\t

      \n\t

      AC 8, HP 11, ATK 1 slam +2 (1d6), MV near, S +2, D -2, C +2, I -2, W -2, Ch -3, AL C, LV 2

      \n\t

      Undead. Immune to morale checks.

      Relentless. If zombie reduced to 0 HP by a non-magical source, [[check 15 con]] to go to 1 HP instead.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 diff --git a/data/packs/properties.db/bolas__98zYioBHqik74KBV.json b/data/packs/properties.db/bolas__98zYioBHqik74KBV.json index c4a567ef..f5a4196a 100644 --- a/data/packs/properties.db/bolas__98zYioBHqik74KBV.json +++ b/data/packs/properties.db/bolas__98zYioBHqik74KBV.json @@ -7,7 +7,7 @@ "img": "icons/sundries/documents/document-torn-diagram-tan.webp", "name": "Bolas", "system": { - "description": "

      When you hit a legged creature the size of a horse or smaller, the target's speed is reduced to close until it frees itself (DC 15 STR or DEX check).

      ", + "description": "

      When you hit a legged creature the size of a horse or smaller, the target's speed is reduced to close until it frees itself ([[check 15 str]] or DEX check).

      ", "itemType": "weapon", "predefinedEffects": "", "source": { diff --git a/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json b/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json index 4fd20c7a..68541d6d 100644 --- a/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json +++ b/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json @@ -583,7 +583,7 @@ }, "sort": 0, "system": { - "description": "

      One target stuck in place and 1d4 damage/round. DC 12 DEX to escape on turn.

      ", + "description": "

      One target stuck in place and 1d4 damage/round. [[check 12 dex]] to escape on turn.

      ", "source": { "title": "quickstart" } @@ -838,7 +838,7 @@ }, "move": "near", "moveNote": "Climb", - "notes": "

      Bipedal, eight-eyed spiderfolk with spindly legs and purple fur.

      AC 12, HP 14, ATK 2 bite +2 (1d6) or 1 poison web (near) +2, MV near (climb), S +0, D +2, C +1, I +0, W +0, Ch -1, AL C, LV 3

      Poison Web. One target stuck in place and 1d4 damage/round. DC 12 DEX to escape on turn.

      ", + "notes": "

      Bipedal, eight-eyed spiderfolk with spindly legs and purple fur.

      AC 12, HP 14, ATK 2 bite +2 (1d6) or 1 poison web (near) +2, MV near (climb), S +0, D +2, C +1, I +0, W +0, Ch -1, AL C, LV 3

      Poison Web. One target stuck in place and 1d4 damage/round. [[check 12 dex]] to escape on turn.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 @@ -892,7 +892,7 @@ }, "sort": 0, "system": { - "description": "

      One target stuck in place and 1d4 damage/round. DC 12 DEX to escape on turn.

      ", + "description": "

      One target stuck in place and 1d4 damage/round. [[check 12 dex]] to escape on turn.

      ", "source": { "title": "quickstart" } @@ -1147,7 +1147,7 @@ }, "move": "near", "moveNote": "Climb", - "notes": "

      Bipedal, eight-eyed spiderfolk with spindly legs and purple fur.

      AC 12, HP 14, ATK 2 bite +2 (1d6) or 1 poison web (near) +2, MV near (climb), S +0, D +2, C +1, I +0, W +0, Ch -1, AL C, LV 3

      Poison Web. One target stuck in place and 1d4 damage/round. DC 12 DEX to escape on turn.

      ", + "notes": "

      Bipedal, eight-eyed spiderfolk with spindly legs and purple fur.

      AC 12, HP 14, ATK 2 bite +2 (1d6) or 1 poison web (near) +2, MV near (climb), S +0, D +2, C +1, I +0, W +0, Ch -1, AL C, LV 3

      Poison Web. One target stuck in place and 1d4 damage/round. [[check 12 dex]] to escape on turn.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 @@ -1201,7 +1201,7 @@ }, "sort": 0, "system": { - "description": "

      One target stuck in place and 1d4 damage/round. DC 12 DEX to escape on turn.

      ", + "description": "

      One target stuck in place and 1d4 damage/round. [[check 12 dex]] to escape on turn.

      ", "source": { "title": "quickstart" } @@ -1456,7 +1456,7 @@ }, "move": "near", "moveNote": "Climb", - "notes": "

      Bipedal, eight-eyed spiderfolk with spindly legs and purple fur.

      AC 12, HP 14, ATK 2 bite +2 (1d6) or 1 poison web (near) +2, MV near (climb), S +0, D +2, C +1, I +0, W +0, Ch -1, AL C, LV 3

      Poison Web. One target stuck in place and 1d4 damage/round. DC 12 DEX to escape on turn.

      ", + "notes": "

      Bipedal, eight-eyed spiderfolk with spindly legs and purple fur.

      AC 12, HP 14, ATK 2 bite +2 (1d6) or 1 poison web (near) +2, MV near (climb), S +0, D +2, C +1, I +0, W +0, Ch -1, AL C, LV 3

      Poison Web. One target stuck in place and 1d4 damage/round. [[check 12 dex]] to escape on turn.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 @@ -1510,7 +1510,7 @@ }, "sort": 0, "system": { - "description": "

      One target stuck in place and 1d4 damage/round. DC 12 DEX to escape on turn.

      ", + "description": "

      One target stuck in place and 1d4 damage/round. [[check 12 dex]] to escape on turn.

      ", "source": { "title": "quickstart" } @@ -1765,7 +1765,7 @@ }, "move": "near", "moveNote": "Climb", - "notes": "

      Bipedal, eight-eyed spiderfolk with spindly legs and purple fur.

      AC 12, HP 14, ATK 2 bite +2 (1d6) or 1 poison web (near) +2, MV near (climb), S +0, D +2, C +1, I +0, W +0, Ch -1, AL C, LV 3

      Poison Web. One target stuck in place and 1d4 damage/round. DC 12 DEX to escape on turn.

      ", + "notes": "

      Bipedal, eight-eyed spiderfolk with spindly legs and purple fur.

      AC 12, HP 14, ATK 2 bite +2 (1d6) or 1 poison web (near) +2, MV near (climb), S +0, D +2, C +1, I +0, W +0, Ch -1, AL C, LV 3

      Poison Web. One target stuck in place and 1d4 damage/round. [[check 12 dex]] to escape on turn.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 @@ -1819,7 +1819,7 @@ }, "sort": 0, "system": { - "description": "

      One target stuck in place and 1d4 damage/round. DC 12 DEX to escape on turn.

      ", + "description": "

      One target stuck in place and 1d4 damage/round. [[check 12 dex]] to escape on turn.

      ", "source": { "title": "quickstart" } @@ -2074,7 +2074,7 @@ }, "move": "near", "moveNote": "Climb", - "notes": "

      Bipedal, eight-eyed spiderfolk with spindly legs and purple fur.

      AC 12, HP 14, ATK 2 bite +2 (1d6) or 1 poison web (near) +2, MV near (climb), S +0, D +2, C +1, I +0, W +0, Ch -1, AL C, LV 3

      Poison Web. One target stuck in place and 1d4 damage/round. DC 12 DEX to escape on turn.

      ", + "notes": "

      Bipedal, eight-eyed spiderfolk with spindly legs and purple fur.

      AC 12, HP 14, ATK 2 bite +2 (1d6) or 1 poison web (near) +2, MV near (climb), S +0, D +2, C +1, I +0, W +0, Ch -1, AL C, LV 3

      Poison Web. One target stuck in place and 1d4 damage/round. [[check 12 dex]] to escape on turn.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 @@ -2128,7 +2128,7 @@ }, "sort": 0, "system": { - "description": "

      One target stuck in place and 1d4 damage/round. DC 12 DEX to escape on turn.

      ", + "description": "

      One target stuck in place and 1d4 damage/round. [[check 12 dex]] to escape on turn.

      ", "source": { "title": "quickstart" } @@ -2383,7 +2383,7 @@ }, "move": "near", "moveNote": "Climb", - "notes": "

      Bipedal, eight-eyed spiderfolk with spindly legs and purple fur.

      AC 12, HP 14, ATK 2 bite +2 (1d6) or 1 poison web (near) +2, MV near (climb), S +0, D +2, C +1, I +0, W +0, Ch -1, AL C, LV 3

      Poison Web. One target stuck in place and 1d4 damage/round. DC 12 DEX to escape on turn.

      ", + "notes": "

      Bipedal, eight-eyed spiderfolk with spindly legs and purple fur.

      AC 12, HP 14, ATK 2 bite +2 (1d6) or 1 poison web (near) +2, MV near (climb), S +0, D +2, C +1, I +0, W +0, Ch -1, AL C, LV 3

      Poison Web. One target stuck in place and 1d4 damage/round. [[check 12 dex]] to escape on turn.

      ", "spellcastingAbility": "", "spellcastingAttackNum": 0, "spellcastingBonus": 0 @@ -11045,7 +11045,7 @@ "gp": 0, "sp": 0 }, - "description": "

      A brooch made from a horned scarab beetle dipped in gold.

      Benefit. If you die, make a DC 18 Constitution check. If you succeed, you are unconscious instead of dead.

      ", + "description": "

      A brooch made from a horned scarab beetle dipped in gold.

      Benefit. If you die, make a [[check 18 con]] check. If you succeed, you are unconscious instead of dead.

      ", "equipped": false, "isAmmunition": false, "isPhysical": true, @@ -12221,7 +12221,7 @@ "system": { }, "text": { - "content": "

      Walls: Flecked with countless, smooth shards of quartz. White Bundles: Man-sized, several stuffed into cave corners.

      • Ettercap Ambush. If Eska in Area 1 raised alarm, three hostile @UUID[Compendium.shadowdark.monsters.Actor.fcgq7uwsJEMMdRNx]{ettercaps} from Area 4 cling to 20' ceiling.

      • Walls. Dazzlingly reflective. DC 12 DEX when entering with bright light or blinded for [[/r 1d4]] rounds (ettercaps are unaffected).

        • Prying. Carefully extracted piece of cave wall serves as a mirror.

      • White Bundles. Five @UUID[Compendium.shadowdark.monsters.k8tAgECWIzPIStGU]{beastmen} wrapped in ettercap silk. 1:6 chance one still lives. @UUID[Item.7unKOF9uy9ECqkEy]{Pearl} (40 gp) hidden inside one's mouth.

      ", + "content": "

      Walls: Flecked with countless, smooth shards of quartz. White Bundles: Man-sized, several stuffed into cave corners.

      • Ettercap Ambush. If Eska in Area 1 raised alarm, three hostile @UUID[Compendium.shadowdark.monsters.Actor.fcgq7uwsJEMMdRNx]{ettercaps} from Area 4 cling to 20' ceiling.

      • Walls. Dazzlingly reflective. [[check 12 dex]] when entering with bright light or blinded for [[/r 1d4]] rounds (ettercaps are unaffected).

        • Prying. Carefully extracted piece of cave wall serves as a mirror.

      • White Bundles. Five @UUID[Compendium.shadowdark.monsters.k8tAgECWIzPIStGU]{beastmen} wrapped in ettercap silk. 1:6 chance one still lives. @UUID[Item.7unKOF9uy9ECqkEy]{Pearl} (40 gp) hidden inside one's mouth.

      ", "format": 1, "markdown": "" }, @@ -12263,7 +12263,7 @@ "system": { }, "text": { - "content": "

      Walls and Floor: Covered in thick, gauzy sheets of webbing.

      • Webs. Sticky. DC 12 STR to break free and move each turn. Highly flammable ([[/r 1d6]] damage to stuck creatures, burns [[/r 1d4]] rounds).

        • Rolled Parchment. Stuck in webs, 10' up.@UUID[Item.Jo88wNZQdCtvuuuS]{Scroll of Hold Portal} .

      • Secret Tunnel. Hidden by a wall of webs. Ettercaps reseal it each time they pass through.

        • Chittering. Listeners hear shrill, tittering whispers from Area 4.

      ", + "content": "

      Walls and Floor: Covered in thick, gauzy sheets of webbing.

      • Webs. Sticky. [[check 12 str]] to break free and move each turn. Highly flammable ([[/r 1d6]] damage to stuck creatures, burns [[/r 1d4]] rounds).

        • Rolled Parchment. Stuck in webs, 10' up.@UUID[Item.Jo88wNZQdCtvuuuS]{Scroll of Hold Portal} .

      • Secret Tunnel. Hidden by a wall of webs. Ettercaps reseal it each time they pass through.

        • Chittering. Listeners hear shrill, tittering whispers from Area 4.

      ", "format": 1, "markdown": "" }, @@ -12380,7 +12380,7 @@ "system": { }, "text": { - "content": "

      Statue: A life-sized, snake-haired woman with arms raised and mouth open in a scream. Stone Basins: Smooth, human-sized.

      • Statue. Turning the hinged arms down causes scalding water to spew from mouth (DC 12 DEX to leap aside or [[/r 1d4]] damage).

      • Basins. Six. Coiling snake carvings. Stone plugs wedged in drains.

        • Removing Plugs. Cumulative 1:6 to unleash a @UUID[Compendium.shadowdark.monsters.U9moCUg8DnL6C0Sq]{scarab swarm}.

      ", + "content": "

      Statue: A life-sized, snake-haired woman with arms raised and mouth open in a scream. Stone Basins: Smooth, human-sized.

      • Statue. Turning the hinged arms down causes scalding water to spew from mouth ([[check 12 dex]] to leap aside or [[/r 1d4]] damage).

      • Basins. Six. Coiling snake carvings. Stone plugs wedged in drains.

        • Removing Plugs. Cumulative 1:6 to unleash a @UUID[Compendium.shadowdark.monsters.U9moCUg8DnL6C0Sq]{scarab swarm}.

      ", "format": 1, "markdown": "" }, @@ -12419,7 +12419,7 @@ "system": { }, "text": { - "content": "

      Bull Statue: Towering (10'), bronze. Horns lowered for a charge. Hall: 15' high. Pairs of deep holes punched into wall opposite statue.

      • Statue. Motion-activated. 3:6 chance/round it animates and charges to end of hall (ignores Scarlet Minotaur). DC 15 DEX or [[/r 2d6]] damage and knocked flat. Trots back to position and resets.

        • @UUID[Item.ToSK7skdC9OPzmwZ]{Emerald.} (120 gp), embedded in statue's forehead. Shattering (AC 20, 1 HP) deactivates statue but reduces gem's value to 20 gp (@UUID[Item.hiVLFYBR666Zm29e]{Emerald (Shattered)}).

      ", + "content": "

      Bull Statue: Towering (10'), bronze. Horns lowered for a charge. Hall: 15' high. Pairs of deep holes punched into wall opposite statue.

      • Statue. Motion-activated. 3:6 chance/round it animates and charges to end of hall (ignores Scarlet Minotaur). [[check 15 dex]] or [[/r 2d6]] damage and knocked flat. Trots back to position and resets.

        • @UUID[Item.ToSK7skdC9OPzmwZ]{Emerald.} (120 gp), embedded in statue's forehead. Shattering (AC 20, 1 HP) deactivates statue but reduces gem's value to 20 gp (@UUID[Item.hiVLFYBR666Zm29e]{Emerald (Shattered)}).

      ", "format": 1, "markdown": "" }, @@ -12497,7 +12497,7 @@ "system": { }, "text": { - "content": "

      Pillars: Four pairs, painted rich jewel tones. Capped in black marble.

      Body: Purple, spindly humanoid lies facedown halfway across room.

      Greatsword: Bronze, brightly polished. Blade is sunken into a black marble altar beyond the pillars.

      • Pillars. Moving past each pair activates their effect. Returning past the pair ends it. In order, from north to south:

        • Red. Anything flammable on you ignites. [[/r 1d4]] damage/round.

        • Blue. Sea water fills your lungs. You drown in [[/r 1d6]] rounds.

        • Green. Poisoned. DC 12 CON on your turn or lose turn.

        • Purple. You go blind and move at half speed.

      • Body. Ettercap. Scorched fur. Mouth and chest matted with salt rime. Claw marks around eyes.

      • Greatsword. DC 12 STR to remove from altar. +1 greatsword called @UUID[Item.JpRmSUeNd7qwnXZa]{Asterion}. A creature cannot move the wielder against their will.

      ", + "content": "

      Pillars: Four pairs, painted rich jewel tones. Capped in black marble.

      Body: Purple, spindly humanoid lies facedown halfway across room.

      Greatsword: Bronze, brightly polished. Blade is sunken into a black marble altar beyond the pillars.

      • Pillars. Moving past each pair activates their effect. Returning past the pair ends it. In order, from north to south:

        • Red. Anything flammable on you ignites. [[/r 1d4]] damage/round.

        • Blue. Sea water fills your lungs. You drown in [[/r 1d6]] rounds.

        • Green. Poisoned. [[check 12 con]] on your turn or lose turn.

        • Purple. You go blind and move at half speed.

      • Body. Ettercap. Scorched fur. Mouth and chest matted with salt rime. Claw marks around eyes.

      • Greatsword. [[check 12 str]] to remove from altar. +1 greatsword called @UUID[Item.JpRmSUeNd7qwnXZa]{Asterion}. A creature cannot move the wielder against their will.

      ", "format": 1, "markdown": "" }, @@ -12575,7 +12575,7 @@ "system": { }, "text": { - "content": "

      Door: Hefty stone slab with keyhole. Cold and damp to the touch.

      • Door. Unlocked, barricaded from inside. DC 18 STR to force.

        • Listening. Faint metallic, clinking sound on other side.

        • Keyhole. Darkness with a few points of bobbing, red light.

      • Inside. Four @UUID[Compendium.shadowdark.monsters.cWzG0yEVgIk8ijk6]{skeletons} in tattered, red leather armor shuffle around, knocking into manacles anchored to floor. Four bronze-shod spears braced through handle (broken if door opened).

        • Walls. Scratched in ancient Common: \"Days since the Beast appeared.\" About 40 tally lines below it, gradually fainter.

      ", + "content": "

      Door: Hefty stone slab with keyhole. Cold and damp to the touch.

      • Door. Unlocked, barricaded from inside. [[check 18 str]] to force.

        • Listening. Faint metallic, clinking sound on other side.

        • Keyhole. Darkness with a few points of bobbing, red light.

      • Inside. Four @UUID[Compendium.shadowdark.monsters.cWzG0yEVgIk8ijk6]{skeletons} in tattered, red leather armor shuffle around, knocking into manacles anchored to floor. Four bronze-shod spears braced through handle (broken if door opened).

        • Walls. Scratched in ancient Common: \"Days since the Beast appeared.\" About 40 tally lines below it, gradually fainter.

      ", "format": 1, "markdown": "" }, @@ -12731,7 +12731,7 @@ "system": { }, "text": { - "content": "

      Terracotta Jars: Clustered in corners. Fat and rounded, various heights. Air: Sulfuric scent. Sound: Occasional faint squeak and hiss. South Door: White, jagged lines gouged into the stone.

      • Jars. 20 jars sealed with cork and wax. Stamped with images of people carving wheat with scythes. Sticky, black mush inside.

        • Explosive. Shaking/striking jar causes it to shatter from sulfuric gas buildup. DC 12 DEX or 1d4 damage. Possible chain reaction.

        • Treasure. Cumulative 1:20 chance of finding an @UUID[Item.R9rWEWg4biAMlj0U]{ivory egg} shot with grey veins inside one (40 gp). It's actually a cockatrice egg.

      • South Door. Carving in Common: \"R.I.P. Orwyn the Younger.\"

      ", + "content": "

      Terracotta Jars: Clustered in corners. Fat and rounded, various heights. Air: Sulfuric scent. Sound: Occasional faint squeak and hiss. South Door: White, jagged lines gouged into the stone.

      • Jars. 20 jars sealed with cork and wax. Stamped with images of people carving wheat with scythes. Sticky, black mush inside.

        • Explosive. Shaking/striking jar causes it to shatter from sulfuric gas buildup. [[check 12 dex]] or 1d4 damage. Possible chain reaction.

        • Treasure. Cumulative 1:20 chance of finding an @UUID[Item.R9rWEWg4biAMlj0U]{ivory egg} shot with grey veins inside one (40 gp). It's actually a cockatrice egg.

      • South Door. Carving in Common: \"R.I.P. Orwyn the Younger.\"

      ", "format": 1, "markdown": "" }, @@ -13199,7 +13199,7 @@ "system": { }, "text": { - "content": "

      Cave: Chilly and damp, high ceiling (30'). Dripping stalactites. Pool: Crimson water, murky and still. Smell: Coppery, metallic tang.

      • Spirits. Dozens of smoky, humanlike shadows flicker at the edge of darkness. If the light ever goes out, they descend with ghostly shrieks, dealing [[/r 1d8]] damage/round to each character.

      • Pool. 20' deep. Cursed water clouded with blood. DC 12 CON for each round of contact or temporarily lose 1 point of Wisdom (heals after rest). If 0 Wisdom, permanently become catatonic.

        • On Bottom. Graveyard of dozens of human and bull skeletons. Among them are 200 gp, a @UUID[Item.i3gSIEVGxXhlUkdn]{Wand of Blind/Deafen}, three @UUID[Item.cFi2Wtbwz3qkiJMx]{onyx bull statuettes} (15 gp each), @UUID[Item.ip1i9MpeJeyf7ayu]{Boots of the Cat}, and a tiny bottle that houses the soul of a mighty sorcerer named Malfune.

      ", + "content": "

      Cave: Chilly and damp, high ceiling (30'). Dripping stalactites. Pool: Crimson water, murky and still. Smell: Coppery, metallic tang.

      • Spirits. Dozens of smoky, humanlike shadows flicker at the edge of darkness. If the light ever goes out, they descend with ghostly shrieks, dealing [[/r 1d8]] damage/round to each character.

      • Pool. 20' deep. Cursed water clouded with blood. [[check 12 con]] for each round of contact or temporarily lose 1 point of Wisdom (heals after rest). If 0 Wisdom, permanently become catatonic.

        • On Bottom. Graveyard of dozens of human and bull skeletons. Among them are 200 gp, a @UUID[Item.i3gSIEVGxXhlUkdn]{Wand of Blind/Deafen}, three @UUID[Item.cFi2Wtbwz3qkiJMx]{onyx bull statuettes} (15 gp each), @UUID[Item.ip1i9MpeJeyf7ayu]{Boots of the Cat}, and a tiny bottle that houses the soul of a mighty sorcerer named Malfune.

      ", "format": 1, "markdown": "" }, diff --git a/data/packs/quickstart-guides.db/combat__MYaGXUcQtZ4b8xCI.json b/data/packs/quickstart-guides.db/combat__MYaGXUcQtZ4b8xCI.json index ec675eb3..312d7c32 100644 --- a/data/packs/quickstart-guides.db/combat__MYaGXUcQtZ4b8xCI.json +++ b/data/packs/quickstart-guides.db/combat__MYaGXUcQtZ4b8xCI.json @@ -8,7 +8,7 @@ "system": { }, "text": { - "content": "

      When a fight breaks out, combat rounds begin!

      Determine Surprise

      The GM determines if any creatures are unaware of each other. A creature who surprises another takes one turn before a new initiative order is rolled.

      Combat Initiative!

      After surprise turns, the GM calls for new initiative. Everyone makes a Dexterity check (the GM uses the highest Dexterity modifier of any monsters).

      The person with the highest result takes the first turn. Turns go clockwise from that person.

      Combat Turns

      Characters can take one action and move near on their turn, splitting up the movement however they want. Characters can move near again if they don't take an action.

      Actions

      Melee Attack. Melee attacks use melee weapons. Roll 1d20 + your Strength modifier + talent bonuses. You hit the target if your total is equal to or greater than its AC.

      Ranged Attack. Ranged attacks use ranged weapons. Roll 1d20 + your Dexterity modifier + talent bonuses. You hit the target if your total is equal to or greater than its AC.

      Cast A Spell. Casting a spell takes one action (see Spellcasting on pg. 52).

      Improvise. Do an improvised action, such as swinging across a ravine on a vine. The GM might determine it requires a check or attack roll.

      Multitask. Characters can do small, parallel tasks on their turns, such as standing up, speaking, activating a magic item, or quaffing a potion. This doesn't typically use their action.

      Damage

      When you hit a target with an attack or spell, you damage it. Roll your weapon or spell's damage dice + talent bonuses. The GM subtracts that amount from the target's hit points.

      Knockout. You can choose to knock a creature unconscious instead of killing it if you reduce it to 0 hit points.

      Critical Hit. You deal a critical hit if you roll a natural 20 on an attack roll or spellcasting check. For a weapon, double its damage dice on the attack. For a spell, you may double one of its numerical effects (see pg. 53).

      Terrain

      Attacking or casting a spell on a creature that is hiding at least half its body behind interposing terrain has disadvantage.

      If you can't see a creature at all due to terrain, you can't target it.

      Creatures can only move half the normal distance through terrain that hampers free movement, such as ice or deep mud.

      Morale

      Enemies who are reduced to half their ranks (or half their HP for a solo enemy) flee if they fail a DC 15 Wisdom check. For large groups, the GM makes one check with the leader's modifier.

      Death

      A character who goes to 0 HP falls unconscious and is dying. A character who goes above 0 HP wakes up and is no longer dying.

      Death Timer. A dying character rolls 1d4 + their CON modifier (minimum 1 total) on their turn. They die in that many rounds unless healed or stabilized.

      On each of the character's subsequent turns, that player rolls a d20. On a natural 20, the character rises with 1 hit point.

      Stabilize. An intelligent being can give first aid to a dying creature at close range. On a successful DC 15 Intelligence check, the target stops dying (but is still unconscious).

      Death. A character who perishes is retired from the game.

      ", + "content": "

      When a fight breaks out, combat rounds begin!

      Determine Surprise

      The GM determines if any creatures are unaware of each other. A creature who surprises another takes one turn before a new initiative order is rolled.

      Combat Initiative!

      After surprise turns, the GM calls for new initiative. Everyone makes a Dexterity check (the GM uses the highest Dexterity modifier of any monsters).

      The person with the highest result takes the first turn. Turns go clockwise from that person.

      Combat Turns

      Characters can take one action and move near on their turn, splitting up the movement however they want. Characters can move near again if they don't take an action.

      Actions

      Melee Attack. Melee attacks use melee weapons. Roll 1d20 + your Strength modifier + talent bonuses. You hit the target if your total is equal to or greater than its AC.

      Ranged Attack. Ranged attacks use ranged weapons. Roll 1d20 + your Dexterity modifier + talent bonuses. You hit the target if your total is equal to or greater than its AC.

      Cast A Spell. Casting a spell takes one action (see Spellcasting on pg. 52).

      Improvise. Do an improvised action, such as swinging across a ravine on a vine. The GM might determine it requires a check or attack roll.

      Multitask. Characters can do small, parallel tasks on their turns, such as standing up, speaking, activating a magic item, or quaffing a potion. This doesn't typically use their action.

      Damage

      When you hit a target with an attack or spell, you damage it. Roll your weapon or spell's damage dice + talent bonuses. The GM subtracts that amount from the target's hit points.

      Knockout. You can choose to knock a creature unconscious instead of killing it if you reduce it to 0 hit points.

      Critical Hit. You deal a critical hit if you roll a natural 20 on an attack roll or spellcasting check. For a weapon, double its damage dice on the attack. For a spell, you may double one of its numerical effects (see pg. 53).

      Terrain

      Attacking or casting a spell on a creature that is hiding at least half its body behind interposing terrain has disadvantage.

      If you can't see a creature at all due to terrain, you can't target it.

      Creatures can only move half the normal distance through terrain that hampers free movement, such as ice or deep mud.

      Morale

      Enemies who are reduced to half their ranks (or half their HP for a solo enemy) flee if they fail a [[check 15 wis]] check. For large groups, the GM makes one check with the leader's modifier.

      Death

      A character who goes to 0 HP falls unconscious and is dying. A character who goes above 0 HP wakes up and is no longer dying.

      Death Timer. A dying character rolls 1d4 + their CON modifier (minimum 1 total) on their turn. They die in that many rounds unless healed or stabilized.

      On each of the character's subsequent turns, that player rolls a d20. On a natural 20, the character rises with 1 hit point.

      Stabilize. An intelligent being can give first aid to a dying creature at close range. On a successful [[check 15 int]] check, the target stops dying (but is still unconscious).

      Death. A character who perishes is retired from the game.

      ", "format": 1, "markdown": "" }, diff --git a/data/packs/quickstart-guides.db/end_papers__sZ8VL88OjSsoYzRp.json b/data/packs/quickstart-guides.db/end_papers__sZ8VL88OjSsoYzRp.json index 6ccda7a3..b180f06e 100644 --- a/data/packs/quickstart-guides.db/end_papers__sZ8VL88OjSsoYzRp.json +++ b/data/packs/quickstart-guides.db/end_papers__sZ8VL88OjSsoYzRp.json @@ -8,7 +8,7 @@ "system": { }, "text": { - "content": "
      Basic Gear

      Item

      Cost

      Quantity Per Gear Slot

      Arrows (20)

      1 gp

      1-20

      Backpack

      2 gp

      1 (first one free to carry)

      Caltrops (one bag)

      5 sp

      1

      Coin

      Varies

      100 (first 100 free to carry)

      Crossbow bolts (20)

      1 gp

      1-20

      Crowbar

      5 sp

      1

      Flask or bottle

      3 sp

      1

      Flint and steel

      5 sp

      1

      Gem

      Varies

      1-10

      Grappling hook

      1 gp

      1

      Iron spikes (10)

      1 gp

      1-10

      Lantern

      5 gp

      1

      Mirror

      10 gp

      1

      Oil, flask

      5 sp

      1

      Pole

      5 sp

      1

      Rations (3)

      5 sp

      1-3

      Rope, 60'

      1 gp

      1

      Torch

      5 sp

      1

      Gear Slots

      Carry a number of items equal to your STR stat or 10.

      All gear besides typical clothing fills one gear slot.

      Gear that is hard to transport might fill more than one slot.

      Difficulty Class

      Easy, DC 9. Leaping a narrow chasm, sneaking up on an inattentive guard.

      Normal, DC 12. Kicking open a stuck door, picking a poor lock.

      Hard, DC 15. Swimming against a strong current, giving first aid to stop a character from dying.

      Extreme, DC 18. Climbing a slippery cliff one-handed, restraining a frenzied lion.

      Morale

      Enemies who are reduced to half their number (or half their hit points for a solo enemy) flee if they fail a DC 15 Wisdom check.

      Large Groups. Make one check using the leader's WIS modifier.

      Dying

      Death Timer. 1d4 + CON modifier rounds (min. 1). On turn, roll a d20. 20 = rise with 1 HP.

      Stabilize. Close range, DC 15 INT check. On success, target stops dying (but is still unconscious).

      Player Turn

      1. Count down timers for your spells and other effects.

      2. Take an action and move up to near (split up in any way). Move near again if skipping action.

      3. The GM describes the results.

      Distance/Movement

      Close = 5 feet. Near = up to 30 feet. Far = within sight.

      Climbing. DEX or STR check, half speed. Fall if fail by 5+ points.

      Falling. 1d6 damage every 10'.

      Moving Through. Move freely through allies. Pass a STR or DEX check to move through enemies.

      Swimming. Swim half speed (STR check in rough water). CON check if holding breath (fail = 1d6 damage/rd until exiting hazard).

      Spell Focus

      Can't cast other focus spells while focusing. Make a spellcasting check at the start of your turn for the spell.

      Success. The spell stays in effect until the start of your next turn.

      Failure. The spell ends. If you were focusing, you do not lose the ability to cast that spell.

      Distraction. Immediately make a spellcasting check to maintain focus.

      Random Character Generator for Shadowdark RPG

      Ancestry

      d12

      Ancestry

      1-4

      Human

      5-6

      Elf

      7-8

      Dwarf

      9-10

      Halfling

      11

      Half-orc

      12

      Goblin

      Class

      d4

      Class

      1

      Fighter

      2

      Priest

      3

      Thief

      4

      Wizard

      Class

      d6

      Alignment

      1-3

      Lawful

      4-5

      Neutral

      6

      Chaotic

      Gear

      Random 1st-level PCs have:

      • One weapon of choice

      • Leather armor (if they can wear it)

      • 1d6 of the following items:

      Random Gear

      d12

      Gear

      1

      Torch

      2

      Dagger

      3

      Pole

      4

      Rations (3)

      5

      Rope, 60'

      6

      Oil, flask

      7

      Crowbar

      8

      Iron spikes (10)

      9

      Flint and steel

      10

      Grappling hook

      11

      Shield

      12

      Caltrops (one bag)

      ", + "content": "
      Basic Gear

      Item

      Cost

      Quantity Per Gear Slot

      Arrows (20)

      1 gp

      1-20

      Backpack

      2 gp

      1 (first one free to carry)

      Caltrops (one bag)

      5 sp

      1

      Coin

      Varies

      100 (first 100 free to carry)

      Crossbow bolts (20)

      1 gp

      1-20

      Crowbar

      5 sp

      1

      Flask or bottle

      3 sp

      1

      Flint and steel

      5 sp

      1

      Gem

      Varies

      1-10

      Grappling hook

      1 gp

      1

      Iron spikes (10)

      1 gp

      1-10

      Lantern

      5 gp

      1

      Mirror

      10 gp

      1

      Oil, flask

      5 sp

      1

      Pole

      5 sp

      1

      Rations (3)

      5 sp

      1-3

      Rope, 60'

      1 gp

      1

      Torch

      5 sp

      1

      Gear Slots

      Carry a number of items equal to your STR stat or 10.

      All gear besides typical clothing fills one gear slot.

      Gear that is hard to transport might fill more than one slot.

      Difficulty Class

      Easy, DC 9. Leaping a narrow chasm, sneaking up on an inattentive guard.

      Normal, DC 12. Kicking open a stuck door, picking a poor lock.

      Hard, DC 15. Swimming against a strong current, giving first aid to stop a character from dying.

      Extreme, DC 18. Climbing a slippery cliff one-handed, restraining a frenzied lion.

      Morale

      Enemies who are reduced to half their number (or half their hit points for a solo enemy) flee if they fail a [[check 15 wis]] check.

      Large Groups. Make one check using the leader's WIS modifier.

      Dying

      Death Timer. 1d4 + CON modifier rounds (min. 1). On turn, roll a d20. 20 = rise with 1 HP.

      Stabilize. Close range, [[check 15 int]] check. On success, target stops dying (but is still unconscious).

      Player Turn

      1. Count down timers for your spells and other effects.

      2. Take an action and move up to near (split up in any way). Move near again if skipping action.

      3. The GM describes the results.

      Distance/Movement

      Close = 5 feet. Near = up to 30 feet. Far = within sight.

      Climbing. DEX or STR check, half speed. Fall if fail by 5+ points.

      Falling. 1d6 damage every 10'.

      Moving Through. Move freely through allies. Pass a STR or DEX check to move through enemies.

      Swimming. Swim half speed (STR check in rough water). CON check if holding breath (fail = 1d6 damage/rd until exiting hazard).

      Spell Focus

      Can't cast other focus spells while focusing. Make a spellcasting check at the start of your turn for the spell.

      Success. The spell stays in effect until the start of your next turn.

      Failure. The spell ends. If you were focusing, you do not lose the ability to cast that spell.

      Distraction. Immediately make a spellcasting check to maintain focus.

      Random Character Generator for Shadowdark RPG

      Ancestry

      d12

      Ancestry

      1-4

      Human

      5-6

      Elf

      7-8

      Dwarf

      9-10

      Halfling

      11

      Half-orc

      12

      Goblin

      Class

      d4

      Class

      1

      Fighter

      2

      Priest

      3

      Thief

      4

      Wizard

      Class

      d6

      Alignment

      1-3

      Lawful

      4-5

      Neutral

      6

      Chaotic

      Gear

      Random 1st-level PCs have:

      • One weapon of choice

      • Leather armor (if they can wear it)

      • 1d6 of the following items:

      Random Gear

      d12

      Gear

      1

      Torch

      2

      Dagger

      3

      Pole

      4

      Rations (3)

      5

      Rope, 60'

      6

      Oil, flask

      7

      Crowbar

      8

      Iron spikes (10)

      9

      Flint and steel

      10

      Grappling hook

      11

      Shield

      12

      Caltrops (one bag)

      ", "format": 1 }, "title": { diff --git a/data/packs/quickstart-guides.db/resting__eESogCwLJ4JAwr7q.json b/data/packs/quickstart-guides.db/resting__eESogCwLJ4JAwr7q.json index 5dca8836..36f0b2d4 100644 --- a/data/packs/quickstart-guides.db/resting__eESogCwLJ4JAwr7q.json +++ b/data/packs/quickstart-guides.db/resting__eESogCwLJ4JAwr7q.json @@ -8,7 +8,7 @@ "system": { }, "text": { - "content": "

      Resting

      Injured characters can rest to recover from their wounds. To rest, a character must consume a ration and sleep for 8 hours.

      Sleep can be broken up for light and routine tasks, such as taking a turn on watch.

      Interruption. Each stressful interruption of rest (including combat) requires an affected character to make a DC 12 Constitution check.

      On a failure, the character consumes a ration but gains no benefit from resting.

      Success. A character who successfully rests regains all lost hit points and recovers any stat damage that was not permanent.

      Additionally, some talents, spells, or items regain their ability to be used after a successful rest.

      Danger Level

      Characters can rest anywhere, but doing so inside a dungeon or perilous environment carries a high chance of failure due to the risk of a random encounter.

      While the characters are resting in a dangerous environment, the Game Master checks for random encounters using the overland travel cadence:

      Unsafe. Check every 3 hours.

      Risky. Check every 2 hours.

      Deadly. Check every hour.

      Campfire

      In many cases, adventurers need a light source while resting. Characters can combine three torches into a campfire that can't be moved once lit.

      A campfire lasts up to 8 hours while at least one character remains near to it, and it casts light out to a near distance.

      ", + "content": "

      Resting

      Injured characters can rest to recover from their wounds. To rest, a character must consume a ration and sleep for 8 hours.

      Sleep can be broken up for light and routine tasks, such as taking a turn on watch.

      Interruption. Each stressful interruption of rest (including combat) requires an affected character to make a [[check 12 con]] check.

      On a failure, the character consumes a ration but gains no benefit from resting.

      Success. A character who successfully rests regains all lost hit points and recovers any stat damage that was not permanent.

      Additionally, some talents, spells, or items regain their ability to be used after a successful rest.

      Danger Level

      Characters can rest anywhere, but doing so inside a dungeon or perilous environment carries a high chance of failure due to the risk of a random encounter.

      While the characters are resting in a dangerous environment, the Game Master checks for random encounters using the overland travel cadence:

      Unsafe. Check every 3 hours.

      Risky. Check every 2 hours.

      Deadly. Check every hour.

      Campfire

      In many cases, adventurers need a light source while resting. Characters can combine three torches into a campfire that can't be moved once lit.

      A campfire lasts up to 8 hours while at least one character remains near to it, and it casts light out to a near distance.

      ", "format": 1, "markdown": "" }, diff --git a/data/packs/quickstart-guides.db/running_the_game__PCojefwnROBvXzLy.json b/data/packs/quickstart-guides.db/running_the_game__PCojefwnROBvXzLy.json index 82631368..f8aa84ab 100644 --- a/data/packs/quickstart-guides.db/running_the_game__PCojefwnROBvXzLy.json +++ b/data/packs/quickstart-guides.db/running_the_game__PCojefwnROBvXzLy.json @@ -8,7 +8,7 @@ "system": { }, "text": { - "content": "

      The Game Master

      The Game Master is the world- spinner, the all-wise, the ventriloquist.

      You are the deadly pit trap and the assassin in the night. You are the storm. The army. The gods.

      You hold ultimate power.

      Yet you only want one thing: to see your players triumph.

      So you craft malevolent villains worth defeating. You sculpt marvelous treasures worth stealing. You fill the world with rot, darkness, and death so it can be driven back by sword, spell, and flame.

      Through this, you offer an invitation. You propose it loudly with roaring dragons, humbly with helpless villagers, secretly with hidden treasure maps.

      You call the players to adventure.

      And they answer.

      The Only Rule

      The Only Rule is that you make the rules.

      What's written in this book is a guide, not a constraint, and none of it takes precedence over your judgment.

      If something doesn't work at your table, change it or throw it out and don't look back.

      The Pact

      You and your players are gaming together to have fun, prop each other up, and strengthen bonds. This is The Pact.

      The Pact is often unspoken and unseen, but it is always felt.

      It is based on goodwill, respect, and fellowship.

      Its enemies are selfishness, antagonism, and arrogance.

      Decisions made to defend The Pact are always good ones.

      Setting DCs

      The four standard DCs of easy (9), normal (12), hard (15), and extreme (18) are universal and help you quickly decide a DC.

      When determining the difficulty of a task, take the creature into account. Finding a trail in a sunny field would be an easy task for a forest elf with tracking skills, but it would be a hard task for a sun-dazzled cave troll.

      When you ask players to make a check, state what kind of check it is. For example, an easy Charisma check or a DC 15 Dexterity check. That way, the players know what they need to roll to succeed.

      Challenge Variety

      The characters should face a multitude of challenges during an adventure, including combat, dealing with NPCs, or overcoming the environment.

      Each class excels at different tasks. Thieves love to scout and talk to NPCs, fighters and clerics shine in combat, and wizards dominate the environment.

      Character Skill vs. Player Skill

      Characters aren't the only ones who level up. Players also gain experience!

      For example, players will learn where to look for secret doors and what the \"tells\" are. As they go on more adventures, they become better at gameplay.

      Encourage this by giving players the opportunity to make decisions that rely on their creativity and wits, not on their dice rolls or stat bonuses.

      Rules vs. Rulings

      If there were a rule for every situation, we would be living inside the rulebook instead of the game world.

      As the GM, you have infinite power with only a handful of rules. Stat checks and the standard DCs can resolve any action. You need nothing more.

      Rather than pore through the book, adjudicate using what you already know. Make a ruling, roll the dice, and keep going!

      ", + "content": "

      The Game Master

      The Game Master is the world- spinner, the all-wise, the ventriloquist.

      You are the deadly pit trap and the assassin in the night. You are the storm. The army. The gods.

      You hold ultimate power.

      Yet you only want one thing: to see your players triumph.

      So you craft malevolent villains worth defeating. You sculpt marvelous treasures worth stealing. You fill the world with rot, darkness, and death so it can be driven back by sword, spell, and flame.

      Through this, you offer an invitation. You propose it loudly with roaring dragons, humbly with helpless villagers, secretly with hidden treasure maps.

      You call the players to adventure.

      And they answer.

      The Only Rule

      The Only Rule is that you make the rules.

      What's written in this book is a guide, not a constraint, and none of it takes precedence over your judgment.

      If something doesn't work at your table, change it or throw it out and don't look back.

      The Pact

      You and your players are gaming together to have fun, prop each other up, and strengthen bonds. This is The Pact.

      The Pact is often unspoken and unseen, but it is always felt.

      It is based on goodwill, respect, and fellowship.

      Its enemies are selfishness, antagonism, and arrogance.

      Decisions made to defend The Pact are always good ones.

      Setting DCs

      The four standard DCs of easy (9), normal (12), hard (15), and extreme (18) are universal and help you quickly decide a DC.

      When determining the difficulty of a task, take the creature into account. Finding a trail in a sunny field would be an easy task for a forest elf with tracking skills, but it would be a hard task for a sun-dazzled cave troll.

      When you ask players to make a check, state what kind of check it is. For example, an easy Charisma check or a [[check 15 dex]] check. That way, the players know what they need to roll to succeed.

      Challenge Variety

      The characters should face a multitude of challenges during an adventure, including combat, dealing with NPCs, or overcoming the environment.

      Each class excels at different tasks. Thieves love to scout and talk to NPCs, fighters and clerics shine in combat, and wizards dominate the environment.

      Character Skill vs. Player Skill

      Characters aren't the only ones who level up. Players also gain experience!

      For example, players will learn where to look for secret doors and what the \"tells\" are. As they go on more adventures, they become better at gameplay.

      Encourage this by giving players the opportunity to make decisions that rely on their creativity and wits, not on their dice rolls or stat bonuses.

      Rules vs. Rulings

      If there were a rule for every situation, we would be living inside the rulebook instead of the game world.

      As the GM, you have infinite power with only a handful of rules. Stat checks and the standard DCs can resolve any action. You need nothing more.

      Rather than pore through the book, adjudicate using what you already know. Make a ruling, roll the dice, and keep going!

      ", "format": 1, "markdown": "" }, diff --git a/data/packs/quickstart-guides.db/the_basics__oS18PtqDDic7mYJY.json b/data/packs/quickstart-guides.db/the_basics__oS18PtqDDic7mYJY.json index e75a6006..67c04305 100644 --- a/data/packs/quickstart-guides.db/the_basics__oS18PtqDDic7mYJY.json +++ b/data/packs/quickstart-guides.db/the_basics__oS18PtqDDic7mYJY.json @@ -8,7 +8,7 @@ "system": { }, "text": { - "content": "

      If this is your first time playing Shadowdark RPG, it’s helpful to start with a premade character. Several adventurers are included with this book.

      These quickstart rules cover beginner characters for their first few adventures. The full rules go much further; check them out at thearcanelibrary.com/pages/shadowdark

      Characters

      You decide your character’s actions and tell them to the referee, or Game Master (GM).

      The GM determines if your actions are successful and describes the results.

      This back-and-forth between you, the GM, and your adventuring companions grows and shapes the game world.

      Always ask yourself: If you were really your character, what would you do right now?

      Describe an Action

      On your turn, describe an action you want to do. For example, you could say you’re going to shoot your bow at a troll.

      The GM might ask you to make a check (see Checks) to determine whether your action succeeds.

      Movement

      During your turn, you can move up to near (roughly 30 feet). You can break this movement up in any way. If you don’t take an action, you can move near again.

      Rounds

      Each person takes a turn, starting with the GM and going clockwise. The GM controls the monsters and environment and narrates how everyone’s actions change the game world.

      Once everyone has taken a turn, that completes one round. Then, a new round begins.

      The Dice

      You'll need a four-sided (d4), six-sided (d6), eight-sided (d8), ten-sided (d10), twelve-sided (d12) and twenty-sided (d20) die.

      Multiples. 3d6 = three six-sided dice. Roll them together and add them.

      Advantage. Roll two times and use the higher result.

      Disadvantage. Roll two times and use the lower result.

      Stats

      Stats are your characteristics. Each stat goes from 3-18 and has a bonus or penalty (called a modifier, or MOD) from -4 to +4.

      Strength. Physical power.

      Dexterity. Agility, reflexes.

      Constitution. Endurance, resistance to injury.

      Intelligence. Logical ability.

      Wisdom. Instinct, willpower.

      Charisma. Appeal, presence.

      Checks

      When attempting a risky action, roll a d20 and add a modifier. That’s called making a check.

      The GM chooses the check's linked stat and a number called a difficulty class (DC). If the total of your d20 roll + stat modifier equals or beats the DC, your action succeeds.

      For example, the GM might say leaping over a narrow chasm requires a DC 9 Strength check.

      Hit Points

      Injuries cause you to take damage and lose hit points (HP). Typical weapons deal 1d6 damage to your HP. You regain lost HP after a night of rest.

      Characters at zero HP die in 1d4 + Constitution modifier (minimum 1) rounds. Dead characters are retired from play!

      What’s Next?

      You could play a whole game with just the basics. But once you're ready for more, the next chapters expand upon them.

      ", + "content": "

      If this is your first time playing Shadowdark RPG, it’s helpful to start with a premade character. Several adventurers are included with this book.

      These quickstart rules cover beginner characters for their first few adventures. The full rules go much further; check them out at thearcanelibrary.com/pages/shadowdark

      Characters

      You decide your character’s actions and tell them to the referee, or Game Master (GM).

      The GM determines if your actions are successful and describes the results.

      This back-and-forth between you, the GM, and your adventuring companions grows and shapes the game world.

      Always ask yourself: If you were really your character, what would you do right now?

      Describe an Action

      On your turn, describe an action you want to do. For example, you could say you’re going to shoot your bow at a troll.

      The GM might ask you to make a check (see Checks) to determine whether your action succeeds.

      Movement

      During your turn, you can move up to near (roughly 30 feet). You can break this movement up in any way. If you don’t take an action, you can move near again.

      Rounds

      Each person takes a turn, starting with the GM and going clockwise. The GM controls the monsters and environment and narrates how everyone’s actions change the game world.

      Once everyone has taken a turn, that completes one round. Then, a new round begins.

      The Dice

      You'll need a four-sided (d4), six-sided (d6), eight-sided (d8), ten-sided (d10), twelve-sided (d12) and twenty-sided (d20) die.

      Multiples. 3d6 = three six-sided dice. Roll them together and add them.

      Advantage. Roll two times and use the higher result.

      Disadvantage. Roll two times and use the lower result.

      Stats

      Stats are your characteristics. Each stat goes from 3-18 and has a bonus or penalty (called a modifier, or MOD) from -4 to +4.

      Strength. Physical power.

      Dexterity. Agility, reflexes.

      Constitution. Endurance, resistance to injury.

      Intelligence. Logical ability.

      Wisdom. Instinct, willpower.

      Charisma. Appeal, presence.

      Checks

      When attempting a risky action, roll a d20 and add a modifier. That’s called making a check.

      The GM chooses the check's linked stat and a number called a difficulty class (DC). If the total of your d20 roll + stat modifier equals or beats the DC, your action succeeds.

      For example, the GM might say leaping over a narrow chasm requires a [[check 9 str]] check.

      Hit Points

      Injuries cause you to take damage and lose hit points (HP). Typical weapons deal 1d6 damage to your HP. You regain lost HP after a night of rest.

      Characters at zero HP die in 1d4 + Constitution modifier (minimum 1) rounds. Dead characters are retired from play!

      What’s Next?

      You could play a whole game with just the basics. But once you're ready for more, the next chapters expand upon them.

      ", "format": 1, "markdown": "" }, diff --git a/data/packs/quickstart-guides.db/wizard_class__xefGxARDmlj6O86Y.json b/data/packs/quickstart-guides.db/wizard_class__xefGxARDmlj6O86Y.json index d54775d7..e9f23e4d 100644 --- a/data/packs/quickstart-guides.db/wizard_class__xefGxARDmlj6O86Y.json +++ b/data/packs/quickstart-guides.db/wizard_class__xefGxARDmlj6O86Y.json @@ -8,7 +8,7 @@ "system": { }, "text": { - "content": "

      Rune-tattooed adepts, bespectacled magi, and flame- conjuring witches who dare to manipulate the fell forces of magic.

      Weapons: Dagger, staff

      Armor: None

      Hit Points: 1d4 per level

      Languages. You know two additional common languages and two rare languages (see pg. 29).

      @UUID[Compendium.shadowdark.talents.Item.LFMT8qZ6ZL3LvYFM]{Learning Spells}. You can permanently learn a wizard spell from a spell scroll by studying it for a day and succeeding on a DC 15 Intelligence check.

      Whether you succeed or fail, you expend the spell scroll.

      Spells you learn in this way don't count toward your known spells.

      @UUID[Compendium.shadowdark.talents.Item.Td6iQW4hVJLZLVLi]{Spellcasting}. You can cast wizard spells you know.

      You know three tier 1 spells of your choice from the wizard spell list (see pg. 57).

      Each time you gain a level, you choose new wizard spells to learn according to the Wizard Spells Known table.

      For casting wizard spells, see Spellcasting on pg. 52.

      Wizard Spells Known

      Spells Known By Spell Tier

      Level

      1

      2

      3

      4

      5

      1

      3

      2

      4

      3

      4

      1

      4

      4

      2

      5

      4

      2

      1

      6

      4

      3

      2

      7

      4

      3

      2

      1

      8

      4

      4

      2

      2

      9

      4

      4

      3

      2

      1

      10

      4

      4

      4

      2

      2

      @UUID[Compendium.shadowdark.rollable-tables.RQ0vogfVtJGuT9oT]{Wizard Talents}

      Wizard Talents

      2d6

      Effect

      2

      Make one random magic item (see GM Quickstart Guide)

      3-7

      +2 to Intelligence stat or +1 to wizard spellcasting checks

      8-9

      Gain advantage on casting one spell you know

      10-11

      Learn one additional wizard spell of any tier you know

      12

      Choose a talent or +2 points to distribute to stats

      ", + "content": "

      Rune-tattooed adepts, bespectacled magi, and flame- conjuring witches who dare to manipulate the fell forces of magic.

      Weapons: Dagger, staff

      Armor: None

      Hit Points: 1d4 per level

      Languages. You know two additional common languages and two rare languages (see pg. 29).

      @UUID[Compendium.shadowdark.talents.Item.LFMT8qZ6ZL3LvYFM]{Learning Spells}. You can permanently learn a wizard spell from a spell scroll by studying it for a day and succeeding on a [[check 15 int]] check.

      Whether you succeed or fail, you expend the spell scroll.

      Spells you learn in this way don't count toward your known spells.

      @UUID[Compendium.shadowdark.talents.Item.Td6iQW4hVJLZLVLi]{Spellcasting}. You can cast wizard spells you know.

      You know three tier 1 spells of your choice from the wizard spell list (see pg. 57).

      Each time you gain a level, you choose new wizard spells to learn according to the Wizard Spells Known table.

      For casting wizard spells, see Spellcasting on pg. 52.

      Wizard Spells Known

      Spells Known By Spell Tier

      Level

      1

      2

      3

      4

      5

      1

      3

      2

      4

      3

      4

      1

      4

      4

      2

      5

      4

      2

      1

      6

      4

      3

      2

      7

      4

      3

      2

      1

      8

      4

      4

      2

      2

      9

      4

      4

      3

      2

      1

      10

      4

      4

      4

      2

      2

      @UUID[Compendium.shadowdark.rollable-tables.RQ0vogfVtJGuT9oT]{Wizard Talents}

      Wizard Talents

      2d6

      Effect

      2

      Make one random magic item (see GM Quickstart Guide)

      3-7

      +2 to Intelligence stat or +1 to wizard spellcasting checks

      8-9

      Gain advantage on casting one spell you know

      10-11

      Learn one additional wizard spell of any tier you know

      12

      Choose a talent or +2 points to distribute to stats

      ", "format": 1, "markdown": "" }, diff --git a/data/packs/quickstart-guides.db/wizard_mishaps__Rbfb9fZAQq7WZNiW.json b/data/packs/quickstart-guides.db/wizard_mishaps__Rbfb9fZAQq7WZNiW.json index ba6f3020..4b14ed09 100644 --- a/data/packs/quickstart-guides.db/wizard_mishaps__Rbfb9fZAQq7WZNiW.json +++ b/data/packs/quickstart-guides.db/wizard_mishaps__Rbfb9fZAQq7WZNiW.json @@ -8,7 +8,7 @@ "system": { }, "text": { - "content": "

      @UUID[Compendium.shadowdark.rollable-tables.NiiJKAiBjpPAj5U1]{Wizard Mishap Tier 1-2}

      Wizard Mishap Tier 1-2

      d12

      Effect

      1

      Devastation! Roll twice and combine both effects (reroll any further 1s)

      2

      Explosion! You take 1d8 damage

      3

      Refraction! You target yourself with the spell

      4

      Your hand slipped! You target a random ally with the spell

      5

      Mind wound! You can't cast this spell again for a week

      6

      Discorporation! One random piece of your gear disappears forever

      7

      Spell worm! You lose the ability to cast a random spell on each of your turns until you pass a DC 12 Constitution check. You regain the ability to cast those spells after completing a rest

      8

      Harmonic failure! You lose the ability to cast a random spell until you complete a rest

      9

      Poof! You suppress all light within a near distance from you, including sunlight and magical light, for 10 rounds

      10

      The horror! You scream uncontrollably for 3 rounds in Primordial, drawing lots of attention

      11

      Energy surge! You glow bright purple for 10 rounds, granting enemies advantage on attacks against you

      12

      Unstable conduit! You have disadvantage on casting spells of the same tier for 10 rounds

      ", + "content": "

      @UUID[Compendium.shadowdark.rollable-tables.NiiJKAiBjpPAj5U1]{Wizard Mishap Tier 1-2}

      Wizard Mishap Tier 1-2

      d12

      Effect

      1

      Devastation! Roll twice and combine both effects (reroll any further 1s)

      2

      Explosion! You take 1d8 damage

      3

      Refraction! You target yourself with the spell

      4

      Your hand slipped! You target a random ally with the spell

      5

      Mind wound! You can't cast this spell again for a week

      6

      Discorporation! One random piece of your gear disappears forever

      7

      Spell worm! You lose the ability to cast a random spell on each of your turns until you pass a [[check 12 con]] check. You regain the ability to cast those spells after completing a rest

      8

      Harmonic failure! You lose the ability to cast a random spell until you complete a rest

      9

      Poof! You suppress all light within a near distance from you, including sunlight and magical light, for 10 rounds

      10

      The horror! You scream uncontrollably for 3 rounds in Primordial, drawing lots of attention

      11

      Energy surge! You glow bright purple for 10 rounds, granting enemies advantage on attacks against you

      12

      Unstable conduit! You have disadvantage on casting spells of the same tier for 10 rounds

      ", "format": 1 }, "title": { diff --git a/data/packs/rollable-tables.db/!tables.results!NiiJKAiBjpPAj5U1.75GJHt36EtuofTvq.json b/data/packs/rollable-tables.db/!tables.results!NiiJKAiBjpPAj5U1.75GJHt36EtuofTvq.json index 39dd0d19..d9098eaa 100644 --- a/data/packs/rollable-tables.db/!tables.results!NiiJKAiBjpPAj5U1.75GJHt36EtuofTvq.json +++ b/data/packs/rollable-tables.db/!tables.results!NiiJKAiBjpPAj5U1.75GJHt36EtuofTvq.json @@ -9,7 +9,7 @@ 7, 7 ], - "text": "Spell worm! You lose the ability to cast a random spell on each of your turns until you pass a DC 12 Constitution check. You regain the ability to cast those spells after completing a rest", + "text": "Spell worm! You lose the ability to cast a random spell on each of your turns until you pass a [[check 12 con]] check. You regain the ability to cast those spells after completing a rest", "type": "text", "weight": 1 } diff --git a/data/packs/rollable-tables.db/!tables.results!q83PUKIAznuLpqSr.FL0DEM3DhRGbv4AG.json b/data/packs/rollable-tables.db/!tables.results!q83PUKIAznuLpqSr.FL0DEM3DhRGbv4AG.json index 1c23a450..f3a8e3a5 100644 --- a/data/packs/rollable-tables.db/!tables.results!q83PUKIAznuLpqSr.FL0DEM3DhRGbv4AG.json +++ b/data/packs/rollable-tables.db/!tables.results!q83PUKIAznuLpqSr.FL0DEM3DhRGbv4AG.json @@ -9,7 +9,7 @@ 9, 9 ], - "text": "What lurks beyond the veil! You must pass a DC 15 Wisdom check or fall into mad raving for [[/r 1d4]] hours", + "text": "What lurks beyond the veil! You must pass a [[check 15 wis]] check or fall into mad raving for [[/r 1d4]] hours", "type": "text", "weight": 1 } diff --git a/data/packs/rollable-tables.db/!tables.results!q83PUKIAznuLpqSr.e3Y6IBqetlQqrwnw.json b/data/packs/rollable-tables.db/!tables.results!q83PUKIAznuLpqSr.e3Y6IBqetlQqrwnw.json index 75804828..9d3fae21 100644 --- a/data/packs/rollable-tables.db/!tables.results!q83PUKIAznuLpqSr.e3Y6IBqetlQqrwnw.json +++ b/data/packs/rollable-tables.db/!tables.results!q83PUKIAznuLpqSr.e3Y6IBqetlQqrwnw.json @@ -9,7 +9,7 @@ 6, 6 ], - "text": "Gate! You open a magic portal to another location, whether on this plane or another. Something dreadful will come through in [[/r 1d4]] rounds unless you close it with a DC 18 Intelligence check on your turn", + "text": "Gate! You open a magic portal to another location, whether on this plane or another. Something dreadful will come through in [[/r 1d4]] rounds unless you close it with a [[check 18 int]] check on your turn", "type": "text", "weight": 1 } diff --git a/data/packs/rollable-tables.db/!tables.results!tXhX6Iv3rOc6GlF6.75GJHt36EtuofTvq.json b/data/packs/rollable-tables.db/!tables.results!tXhX6Iv3rOc6GlF6.75GJHt36EtuofTvq.json index ec1fa12d..8bc297a4 100644 --- a/data/packs/rollable-tables.db/!tables.results!tXhX6Iv3rOc6GlF6.75GJHt36EtuofTvq.json +++ b/data/packs/rollable-tables.db/!tables.results!tXhX6Iv3rOc6GlF6.75GJHt36EtuofTvq.json @@ -9,7 +9,7 @@ 7, 7 ], - "text": "Boom! You open a 30-foot deep sinkhole in the ground with you at the center. You and all near creatures must pass a DC 15 Dexterity check or fall in", + "text": "Boom! You open a 30-foot deep sinkhole in the ground with you at the center. You and all near creatures must pass a [[check 15 dex]] check or fall in", "type": "text", "weight": 1 } diff --git a/data/packs/rollable-tables.db/!tables.results!tXhX6Iv3rOc6GlF6.M8VKYie0UBgGPGRB.json b/data/packs/rollable-tables.db/!tables.results!tXhX6Iv3rOc6GlF6.M8VKYie0UBgGPGRB.json index 0127eb6d..0080e597 100644 --- a/data/packs/rollable-tables.db/!tables.results!tXhX6Iv3rOc6GlF6.M8VKYie0UBgGPGRB.json +++ b/data/packs/rollable-tables.db/!tables.results!tXhX6Iv3rOc6GlF6.M8VKYie0UBgGPGRB.json @@ -9,7 +9,7 @@ 10, 10 ], - "text": "It cannot be unseen! You must pass a DC 12 Wisdom check or descend into mad raving for [[/r 1d10]] rounds", + "text": "It cannot be unseen! You must pass a [[check 12 wis]] check or descend into mad raving for [[/r 1d10]] rounds", "type": "text", "weight": 1 } diff --git a/data/packs/rollable-tables.db/!tables.results!tXhX6Iv3rOc6GlF6.e3Y6IBqetlQqrwnw.json b/data/packs/rollable-tables.db/!tables.results!tXhX6Iv3rOc6GlF6.e3Y6IBqetlQqrwnw.json index 00428bae..2db69b36 100644 --- a/data/packs/rollable-tables.db/!tables.results!tXhX6Iv3rOc6GlF6.e3Y6IBqetlQqrwnw.json +++ b/data/packs/rollable-tables.db/!tables.results!tXhX6Iv3rOc6GlF6.e3Y6IBqetlQqrwnw.json @@ -9,7 +9,7 @@ 6, 6 ], - "text": "Arcano-mutagenesis! You must pass a DC 12 Constitution check or a random stat drops to 3 (-4) until you successfully complete a rest", + "text": "Arcano-mutagenesis! You must pass a [[check 12 con]] check or a random stat drops to 3 (-4) until you successfully complete a rest", "type": "text", "weight": 1 } diff --git a/data/packs/spell-effects.db/spell_effect__anathema__vApjjHkL9nghvbQT.json b/data/packs/spell-effects.db/spell_effect__anathema__vApjjHkL9nghvbQT.json index 14b511ee..6a990029 100644 --- a/data/packs/spell-effects.db/spell_effect__anathema__vApjjHkL9nghvbQT.json +++ b/data/packs/spell-effects.db/spell_effect__anathema__vApjjHkL9nghvbQT.json @@ -9,7 +9,7 @@ "name": "Spell Effect: Anathema", "system": { "category": "effect", - "description": "

      Enchanted with another creature.

      Each time one of the affected creatures takes damage, it may make a DC 15 Charisma check. On a success, the spell ends.

      ", + "description": "

      Enchanted with another creature.

      Each time one of the affected creatures takes damage, it may make a [[check 15 cha]] check. On a success, the spell ends.

      ", "duration": { "type": "days", "value": "1" diff --git a/data/packs/spell-effects.db/spell_effect__mistletoe__CFnP5fuBHsNZzrkY.json b/data/packs/spell-effects.db/spell_effect__mistletoe__CFnP5fuBHsNZzrkY.json index e038e25c..51cc87fb 100644 --- a/data/packs/spell-effects.db/spell_effect__mistletoe__CFnP5fuBHsNZzrkY.json +++ b/data/packs/spell-effects.db/spell_effect__mistletoe__CFnP5fuBHsNZzrkY.json @@ -9,7 +9,7 @@ "name": "Spell Effect: Mistletoe", "system": { "category": "effect", - "description": "

      Enchanted with another creature.

      Each time one of the affected creatures takes damage, it may make a DC 15 Charisma check. On a success, the spell ends.

      ", + "description": "

      Enchanted with another creature.

      Each time one of the affected creatures takes damage, it may make a [[check 15 cha]] check. On a success, the spell ends.

      ", "duration": { "type": "days", "value": "1" diff --git a/data/packs/spell-effects.db/spell_effect__puppet__Cu3dona3PiHxO1lK.json b/data/packs/spell-effects.db/spell_effect__puppet__Cu3dona3PiHxO1lK.json index 461f57e4..f154e1de 100644 --- a/data/packs/spell-effects.db/spell_effect__puppet__Cu3dona3PiHxO1lK.json +++ b/data/packs/spell-effects.db/spell_effect__puppet__Cu3dona3PiHxO1lK.json @@ -9,7 +9,7 @@ "name": "Spell Effect: Puppet", "system": { "category": "effect", - "description": "

      On your turn, the creature mimics all your movements.

      If mimicking you would cause the creature to directly harm itself or an ally, it can make a DC 15 Charisma check. On a success, it resists mimicking you.

      ", + "description": "

      On your turn, the creature mimics all your movements.

      If mimicking you would cause the creature to directly harm itself or an ally, it can make a [[check 15 cha]] check. On a success, it resists mimicking you.

      ", "duration": { "type": "focus", "value": -1 diff --git a/data/packs/spell-effects.db/spell_effect__wolfshape__winter_wolf___cC4hF54uctVhvvCo.json b/data/packs/spell-effects.db/spell_effect__wolfshape__winter_wolf___cC4hF54uctVhvvCo.json index e4aa4b90..4073ef25 100644 --- a/data/packs/spell-effects.db/spell_effect__wolfshape__winter_wolf___cC4hF54uctVhvvCo.json +++ b/data/packs/spell-effects.db/spell_effect__wolfshape__winter_wolf___cC4hF54uctVhvvCo.json @@ -43,7 +43,7 @@ } }, "category": "effect", - "description": "

      Winter Wolf

      AC 12, HP 23, ATK 2 bite [[/r 1d20+4]] ([[/r 1d6]]) or 1 frost breath, MV double near, S +3, D +2, C +1

      Impervious. Cold immune.

      Frost Breath. Fills a near-sized cube extending from winter wolf. DC 15 DEX or [[/r 3d8]] damage. Cannot use again for [[/r 1d4]] rounds.

      You assume the wolf's STR, DEX, CON, HP, AC, speed, attacks, and physical characteristics, but retain your INT, WIS, and CHA.

      You can cast spells in this form. If you go to 0 HP, you revert to your true shape at 0 HP.

      ", + "description": "

      Winter Wolf

      AC 12, HP 23, ATK 2 bite [[/r 1d20+4]] ([[/r 1d6]]) or 1 frost breath, MV double near, S +3, D +2, C +1

      Impervious. Cold immune.

      Frost Breath. Fills a near-sized cube extending from winter wolf. [[check 15 dex]] or [[/r 3d8]] damage. Cannot use again for [[/r 1d4]] rounds.

      You assume the wolf's STR, DEX, CON, HP, AC, speed, attacks, and physical characteristics, but retain your INT, WIS, and CHA.

      You can cast spells in this form. If you go to 0 HP, you revert to your true shape at 0 HP.

      ", "duration": { "type": "focus", "value": -1 diff --git a/data/packs/spells.db/anathema__cjMeJWmom6jpB2JA.json b/data/packs/spells.db/anathema__cjMeJWmom6jpB2JA.json index 4a3173ee..b4f9f3ec 100644 --- a/data/packs/spells.db/anathema__cjMeJWmom6jpB2JA.json +++ b/data/packs/spells.db/anathema__cjMeJWmom6jpB2JA.json @@ -10,7 +10,7 @@ "class": [ "Compendium.shadowdark.classes.Item.KGnBAFiTiLHZJUND" ], - "description": "

      All allies revile and abandon the creature you touch for 1 day.

      Each time you or your allies harm the target, its former allies may pass a DC 15 Wisdom check to end the effects of the spell.

      @UUID[Compendium.shadowdark.spell-effects.Item.vApjjHkL9nghvbQT]{Spell Effect: Anathema}

      ", + "description": "

      All allies revile and abandon the creature you touch for 1 day.

      Each time you or your allies harm the target, its former allies may pass a [[check 15 wis]] check to end the effects of the spell.

      @UUID[Compendium.shadowdark.spell-effects.Item.vApjjHkL9nghvbQT]{Spell Effect: Anathema}

      ", "duration": { "type": "instant", "value": -1 diff --git a/data/packs/spells.db/beguile__TDfCS0FVOPCogm4A.json b/data/packs/spells.db/beguile__TDfCS0FVOPCogm4A.json index 920507c4..01af7201 100644 --- a/data/packs/spells.db/beguile__TDfCS0FVOPCogm4A.json +++ b/data/packs/spells.db/beguile__TDfCS0FVOPCogm4A.json @@ -10,7 +10,7 @@ "class": [ "Compendium.shadowdark.classes.Item.KGnBAFiTiLHZJUND" ], - "description": "

      You conjure a convincing visible and audible illusion within range.

      Creatures who perceive the illusion react to it as though it were real, although it can't cause actual harm.

      Touching the illusion instantly reveals its false nature.

      You may force a creature who interacts with the illusion to make a DC 15 Wisdom check. If the creature fails, it is enchanted by the illusion for the spell's duration and seeks to protect it.

      ", + "description": "

      You conjure a convincing visible and audible illusion within range.

      Creatures who perceive the illusion react to it as though it were real, although it can't cause actual harm.

      Touching the illusion instantly reveals its false nature.

      You may force a creature who interacts with the illusion to make a [[check 15 wis]] check. If the creature fails, it is enchanted by the illusion for the spell's duration and seeks to protect it.

      ", "duration": { "type": "focus", "value": -1 diff --git a/data/packs/spells.db/hypnotize__Udd1so1LKvek6Z3P.json b/data/packs/spells.db/hypnotize__Udd1so1LKvek6Z3P.json index 46d7cba0..bd3873ee 100644 --- a/data/packs/spells.db/hypnotize__Udd1so1LKvek6Z3P.json +++ b/data/packs/spells.db/hypnotize__Udd1so1LKvek6Z3P.json @@ -10,7 +10,7 @@ "class": [ "Compendium.shadowdark.classes.Item.KGnBAFiTiLHZJUND" ], - "description": "

      One creature of LV 3 or less that can see you is rendered stupefied.

      Breaking the creature's line of sight to you allows it to make a DC 15 Charisma check. On a success, the spell ends.

      @UUID[Compendium.shadowdark.spell-effects.Item.6wfBZBYV85NQTcJz]{Spell Effect: Hypnotize}

      ", + "description": "

      One creature of LV 3 or less that can see you is rendered stupefied.

      Breaking the creature's line of sight to you allows it to make a [[check 15 cha]] check. On a success, the spell ends.

      @UUID[Compendium.shadowdark.spell-effects.Item.6wfBZBYV85NQTcJz]{Spell Effect: Hypnotize}

      ", "duration": { "type": "focus", "value": -1 diff --git a/data/packs/spells.db/mistletoe__T8NL6GglkMi1FmVr.json b/data/packs/spells.db/mistletoe__T8NL6GglkMi1FmVr.json index c980b651..525ceb44 100644 --- a/data/packs/spells.db/mistletoe__T8NL6GglkMi1FmVr.json +++ b/data/packs/spells.db/mistletoe__T8NL6GglkMi1FmVr.json @@ -10,7 +10,7 @@ "class": [ "Compendium.shadowdark.classes.Item.KGnBAFiTiLHZJUND" ], - "description": "

      Two creatures you can see within near of you become enchanted with each other for 1d8 days.

      Each time one of the affected creatures takes damage, it may make a DC 15 Charisma check. On a success, the spell ends.

      @UUID[Compendium.shadowdark.spell-effects.Item.CFnP5fuBHsNZzrkY]{Spell Effect: Mistletoe}

      ", + "description": "

      Two creatures you can see within near of you become enchanted with each other for 1d8 days.

      Each time one of the affected creatures takes damage, it may make a [[check 15 cha]] check. On a success, the spell ends.

      @UUID[Compendium.shadowdark.spell-effects.Item.CFnP5fuBHsNZzrkY]{Spell Effect: Mistletoe}

      ", "duration": { "type": "days", "value": "1d8" diff --git a/data/packs/spells.db/puppet__JuO97AW78TLywZKW.json b/data/packs/spells.db/puppet__JuO97AW78TLywZKW.json index 0ec3abbf..a01ae0b0 100644 --- a/data/packs/spells.db/puppet__JuO97AW78TLywZKW.json +++ b/data/packs/spells.db/puppet__JuO97AW78TLywZKW.json @@ -10,7 +10,7 @@ "class": [ "Compendium.shadowdark.classes.Item.KGnBAFiTiLHZJUND" ], - "description": "

      One humanoid creature of LV 2 or less you touch becomes ensnared by your movements. On your turn, the creature mimics all your movements.

      If mimicking you would cause the creature to directly harm itself or an ally, it can make a DC 15 Charisma check. On a success, it resists mimicking you.

      @UUID[Compendium.shadowdark.spell-effects.Item.Cu3dona3PiHxO1lK]{Spell Effect: Puppet}

      ", + "description": "

      One humanoid creature of LV 2 or less you touch becomes ensnared by your movements. On your turn, the creature mimics all your movements.

      If mimicking you would cause the creature to directly harm itself or an ally, it can make a [[check 15 cha]] check. On a success, it resists mimicking you.

      @UUID[Compendium.shadowdark.spell-effects.Item.Cu3dona3PiHxO1lK]{Spell Effect: Puppet}

      ", "duration": { "type": "focus", "value": -1 diff --git a/data/packs/talents.db/hide_from_creature__qmK8gzmaAcowPP4f.json b/data/packs/talents.db/hide_from_creature__qmK8gzmaAcowPP4f.json index 7d028a93..c792cac7 100644 --- a/data/packs/talents.db/hide_from_creature__qmK8gzmaAcowPP4f.json +++ b/data/packs/talents.db/hide_from_creature__qmK8gzmaAcowPP4f.json @@ -17,7 +17,7 @@ "meleeDamageBonus": "1", "rangedAttackBonus": "1" }, - "description": "

      1/day, choose a creature of LV 9 or less you can see; it must pass a DC 15 WIS check or it can't see or hear you for 1d4 rounds

      ", + "description": "

      1/day, choose a creature of LV 9 or less you can see; it must pass a [[check 15 wis]] check or it can't see or hear you for 1d4 rounds

      ", "level": 0, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/talents.db/learning_spells__LFMT8qZ6ZL3LvYFM.json b/data/packs/talents.db/learning_spells__LFMT8qZ6ZL3LvYFM.json index 424415b2..dcd8db49 100644 --- a/data/packs/talents.db/learning_spells__LFMT8qZ6ZL3LvYFM.json +++ b/data/packs/talents.db/learning_spells__LFMT8qZ6ZL3LvYFM.json @@ -7,7 +7,7 @@ "img": "icons/sundries/books/book-embossed-clasp-gold-brown.webp", "name": "Learning Spells", "system": { - "description": "

      Learning Spells. You can permanently learn a wizard spell from a spell scroll by studying it for a day and succeeding on a DC 15 Intelligence check.

      Whether you succeed or fail, you expend the spell scroll.

      Spells you learn in this way don't count toward your known spells.

      ", + "description": "

      Learning Spells. You can permanently learn a wizard spell from a spell scroll by studying it for a day and succeeding on a [[check 15 int]] check.

      Whether you succeed or fail, you expend the spell scroll.

      Spells you learn in this way don't count toward your known spells.

      ", "level": 1, "predefinedEffects": "", "source": { diff --git a/data/packs/talents.db/mount__fXOG1tWCuBTQdgEl.json b/data/packs/talents.db/mount__fXOG1tWCuBTQdgEl.json index 3c7f6c16..4ef711fb 100644 --- a/data/packs/talents.db/mount__fXOG1tWCuBTQdgEl.json +++ b/data/packs/talents.db/mount__fXOG1tWCuBTQdgEl.json @@ -7,7 +7,7 @@ "img": "icons/environment/creatures/horse-tan.webp", "name": "Mount", "system": { - "description": "

      You have a common camel or horse with a reliable or lovely demeanor (see pg. 29). It comes when you call and never spooks. You can only have one such mount at a time.

      While riding your mount, you both get a bonus to AC equal to half your level (round down). Your mount has additional levels equal to half your level (round down). You can freely leap on or off your mount once per round.

      If you lose your mount, you can use your downtime to acquire and train another. Pass a DC 15 CHA check for the new creature to become your mount. Lower the DC one step each attempt.

      ", + "description": "

      You have a common camel or horse with a reliable or lovely demeanor (see pg. 29). It comes when you call and never spooks. You can only have one such mount at a time.

      While riding your mount, you both get a bonus to AC equal to half your level (round down). Your mount has additional levels equal to half your level (round down). You can freely leap on or off your mount once per round.

      If you lose your mount, you can use your downtime to acquire and train another. Pass a [[check 15 cha]] check for the new creature to become your mount. Lower the DC one step each attempt.

      ", "level": 1, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/talents.db/omen__SsgeL6OKpvpltElv.json b/data/packs/talents.db/omen__SsgeL6OKpvpltElv.json index 3bdc4a16..b368c031 100644 --- a/data/packs/talents.db/omen__SsgeL6OKpvpltElv.json +++ b/data/packs/talents.db/omen__SsgeL6OKpvpltElv.json @@ -7,7 +7,7 @@ "img": "icons/magic/perception/orb-eye-scrying.webp", "name": "Omen", "system": { - "description": "

      @UUID[Compendium.shadowdark.class-abilities.Item.pRO1kFMnFkkcYOgC]

      3/day, you can make a DC 9 WIS check. On a success, gain a luck token (you can't have more than one luck token at a time).

      ", + "description": "

      @UUID[Compendium.shadowdark.class-abilities.Item.pRO1kFMnFkkcYOgC]

      3/day, you can make a [[check 9 wis]] check. On a success, gain a luck token (you can't have more than one luck token at a time).

      ", "level": 0, "predefinedEffects": "", "source": { diff --git a/data/packs/talents.db/presence__J4KYu5M32T81yE1f.json b/data/packs/talents.db/presence__J4KYu5M32T81yE1f.json index e8d0cb15..0d9328bf 100644 --- a/data/packs/talents.db/presence__J4KYu5M32T81yE1f.json +++ b/data/packs/talents.db/presence__J4KYu5M32T81yE1f.json @@ -7,7 +7,7 @@ "img": "icons/tools/instruments/lute-gold-brown.webp", "name": "Presence", "system": { - "description": "

      Make a DC 12 CHA check to enact one of the following effects. If you fail (excluding focus), you can't use that effect again until you rest.

      • @UUID[Compendium.shadowdark.class-abilities.Item.jg2sUC3nIAI8sT18]{Inspire} DC 12. One target in near gains a luck token.

      • @UUID[Compendium.shadowdark.class-abilities.Item.oCNpE6bnZjPIdOO1]{Fascinate} (Focus). You transfix all chosen targets of level 4 or less within near

      ", + "description": "

      Make a [[check 12 cha]] check to enact one of the following effects. If you fail (excluding focus), you can't use that effect again until you rest.

      • @UUID[Compendium.shadowdark.class-abilities.Item.jg2sUC3nIAI8sT18]{Inspire} DC 12. One target in near gains a luck token.

      • @UUID[Compendium.shadowdark.class-abilities.Item.oCNpE6bnZjPIdOO1]{Fascinate} (Focus). You transfix all chosen targets of level 4 or less within near

      ", "level": 1, "predefinedEffects": "", "source": { diff --git a/data/packs/talents.db/relentless__bjZGm9FtinFh2ltV.json b/data/packs/talents.db/relentless__bjZGm9FtinFh2ltV.json index b2d83f8b..88babbb1 100644 --- a/data/packs/talents.db/relentless__bjZGm9FtinFh2ltV.json +++ b/data/packs/talents.db/relentless__bjZGm9FtinFh2ltV.json @@ -7,7 +7,7 @@ "img": "icons/skills/wounds/injury-face-impact-orange.webp", "name": "Relentless", "system": { - "description": "

      3/day, when you are reduced to 0 HP, make a DC 18 Constitution check (the Implacable talent applies to this roll). On a success, you instead go to 1 HP.

      @UUID[Compendium.shadowdark.class-abilities.Item.z5uKTDf4wtkipQ4s]{Relentless}

      ", + "description": "

      3/day, when you are reduced to 0 HP, make a [[check 18 con]] check (the Implacable talent applies to this roll). On a success, you instead go to 1 HP.

      @UUID[Compendium.shadowdark.class-abilities.Item.z5uKTDf4wtkipQ4s]{Relentless}

      ", "level": 0, "predefinedEffects": "", "source": { diff --git a/data/packs/talents.db/sleep_a_creature__279opQ7jDyCaRGAu.json b/data/packs/talents.db/sleep_a_creature__279opQ7jDyCaRGAu.json index db1e8d84..dd162e8c 100644 --- a/data/packs/talents.db/sleep_a_creature__279opQ7jDyCaRGAu.json +++ b/data/packs/talents.db/sleep_a_creature__279opQ7jDyCaRGAu.json @@ -17,7 +17,7 @@ "meleeDamageBonus": "1", "rangedAttackBonus": "1" }, - "description": "

      1/day, choose a living creature of LV 5 or less you can see within near; it must pass a DC 15 CON check or fall asleep

      ", + "description": "

      1/day, choose a living creature of LV 5 or less you can see within near; it must pass a [[check 15 con]] check or fall asleep

      ", "level": 0, "magicItem": false, "predefinedEffects": "", From cdeff3c634098bfbed8d74e4f1de897463036397 Mon Sep 17 00:00:00 2001 From: Prototype Date: Sat, 16 Nov 2024 14:35:44 -0800 Subject: [PATCH 151/182] Changed checks to requests in the lost citadel guild --- ...he_scarlet_minotaur__0qbqDCsioL4HWVvW.json | 1078 +++++++++-------- 1 file changed, 577 insertions(+), 501 deletions(-) diff --git a/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json b/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json index 68541d6d..a755818f 100644 --- a/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json +++ b/data/packs/quickstart-adventures.db/the_lost_citadel_of_the_scarlet_minotaur__0qbqDCsioL4HWVvW.json @@ -7,12 +7,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.V75YwrR126oziTKk", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -34,7 +34,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -84,6 +84,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -232,12 +233,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.c3Nvj86e0Layz3NG", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -259,7 +260,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -291,7 +292,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -344,7 +345,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -393,6 +394,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -541,12 +543,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.fcgq7uwsJEMMdRNx", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -568,7 +570,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -600,7 +602,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -653,7 +655,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -702,6 +704,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -850,12 +853,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.fcgq7uwsJEMMdRNx", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -877,7 +880,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -909,7 +912,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -962,7 +965,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -1011,6 +1014,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -1159,12 +1163,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.fcgq7uwsJEMMdRNx", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -1186,7 +1190,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -1218,7 +1222,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -1271,7 +1275,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -1320,6 +1324,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -1468,12 +1473,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.fcgq7uwsJEMMdRNx", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -1495,7 +1500,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -1527,7 +1532,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -1580,7 +1585,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -1629,6 +1634,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -1777,12 +1783,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.fcgq7uwsJEMMdRNx", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -1804,7 +1810,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -1836,7 +1842,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -1889,7 +1895,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -1938,6 +1944,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -2086,12 +2093,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.fcgq7uwsJEMMdRNx", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -2113,7 +2120,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -2145,7 +2152,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -2198,7 +2205,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -2247,6 +2254,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -2395,12 +2403,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -2422,7 +2430,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -2476,7 +2484,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -2504,6 +2512,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -2652,12 +2661,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -2679,7 +2688,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -2733,7 +2742,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -2761,6 +2770,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -2909,12 +2919,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -2936,7 +2946,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -2990,7 +3000,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -3018,6 +3028,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -3166,12 +3177,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -3193,7 +3204,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -3247,7 +3258,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -3275,6 +3286,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -3423,12 +3435,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -3450,7 +3462,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -3504,7 +3516,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -3532,6 +3544,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -3680,12 +3693,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -3707,7 +3720,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -3761,7 +3774,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -3789,6 +3802,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -3937,12 +3951,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -3964,7 +3978,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -4018,7 +4032,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -4046,6 +4060,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -4194,12 +4209,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -4221,7 +4236,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -4275,7 +4290,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -4303,6 +4318,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -4451,12 +4467,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -4478,7 +4494,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -4532,7 +4548,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -4560,6 +4576,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -4708,12 +4725,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -4735,7 +4752,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -4789,7 +4806,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -4817,6 +4834,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -4965,12 +4983,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.U9moCUg8DnL6C0Sq", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -4992,7 +5010,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -5041,6 +5059,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -5189,12 +5208,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.cWzG0yEVgIk8ijk6", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -5216,7 +5235,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -5248,7 +5267,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -5301,7 +5320,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -5350,6 +5369,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -5498,12 +5518,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.cWzG0yEVgIk8ijk6", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -5525,7 +5545,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -5557,7 +5577,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -5610,7 +5630,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -5659,6 +5679,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -5807,12 +5828,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.cWzG0yEVgIk8ijk6", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -5834,7 +5855,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -5866,7 +5887,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -5919,7 +5940,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -5968,6 +5989,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -6116,12 +6138,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.cWzG0yEVgIk8ijk6", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -6143,7 +6165,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -6175,7 +6197,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -6228,7 +6250,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -6277,6 +6299,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -6425,12 +6448,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -6452,7 +6475,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -6506,7 +6529,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -6534,6 +6557,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -6682,12 +6706,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -6709,7 +6733,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -6763,7 +6787,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -6791,6 +6815,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -6939,12 +6964,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -6966,7 +6991,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -7020,7 +7045,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -7048,6 +7073,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -7196,12 +7222,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -7223,7 +7249,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -7277,7 +7303,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -7305,6 +7331,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -7453,12 +7480,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -7480,7 +7507,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -7534,7 +7561,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -7562,6 +7589,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -7710,12 +7738,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -7737,7 +7765,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -7791,7 +7819,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -7819,6 +7847,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -7967,12 +7996,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -7994,7 +8023,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -8048,7 +8077,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -8076,6 +8105,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -8224,12 +8254,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -8251,7 +8281,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -8305,7 +8335,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -8333,6 +8363,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -8481,12 +8512,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monster.k8tAgECWIzPIStGU", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -8508,7 +8539,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -8562,7 +8593,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -8590,6 +8621,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -8738,12 +8770,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monsters.Actor.qSeHWgP59WltutCz", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -8765,7 +8797,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -8817,7 +8849,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -8844,6 +8876,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -8990,12 +9023,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.monsters.Actor.QErMaMVIbddgk9MX", "coreVersion": "12.331", - "createdTime": 1724720580361, + "createdTime": 1731795284430, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580361, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284430, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -9017,7 +9050,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -9048,7 +9081,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -9096,6 +9129,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -9251,12 +9285,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1725307283271, + "createdTime": 1731795284947, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1725719358405, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284947, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": "#453249", "description": "", @@ -9276,12 +9310,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580826, + "createdTime": 1731795284947, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580826, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284947, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": "#453249", "description": "", @@ -9306,7 +9340,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9331,7 +9365,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9353,7 +9387,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9370,12 +9404,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580826, + "createdTime": 1731795284947, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580826, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284947, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": "#453249", "description": "", @@ -9400,7 +9434,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9422,7 +9456,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9444,7 +9478,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9466,7 +9500,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9488,7 +9522,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9510,7 +9544,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9532,7 +9566,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9554,7 +9588,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9576,7 +9610,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9598,7 +9632,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9620,7 +9654,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9642,7 +9676,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9664,7 +9698,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9686,7 +9720,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9708,7 +9742,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9730,7 +9764,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9747,12 +9781,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580826, + "createdTime": 1731795284947, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580826, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284947, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": "#453249", "description": "", @@ -9777,7 +9811,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9799,7 +9833,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": null, "description": "", @@ -9816,12 +9850,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580826, + "createdTime": 1731795284947, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580826, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284947, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": "#453249", "description": "", @@ -9838,12 +9872,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720422243, + "createdTime": 1731795284947, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580951, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284947, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "color": "#453249", "description": "", @@ -9866,12 +9900,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ { @@ -9884,7 +9918,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "changes": [ { @@ -9929,7 +9963,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "changes": [ { @@ -9974,7 +10008,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "changes": [ { @@ -10020,6 +10054,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -10085,12 +10120,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1725058892170, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -10103,6 +10138,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10153,12 +10189,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -10171,6 +10207,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10210,12 +10247,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -10229,6 +10266,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -10277,12 +10315,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -10295,6 +10333,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10344,12 +10383,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -10362,6 +10401,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10411,12 +10451,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -10429,6 +10469,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10478,12 +10519,12 @@ "_stats": { "compendiumSource": "Item.7unKOF9uy9ECqkEy", "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -10499,6 +10540,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10538,12 +10580,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -10556,6 +10598,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10605,12 +10648,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -10623,6 +10666,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10662,12 +10706,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -10680,6 +10724,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10719,12 +10764,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ { @@ -10737,7 +10782,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "changes": [ { @@ -10782,7 +10827,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "changes": [ { @@ -10828,6 +10873,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -10892,12 +10938,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1725058896231, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -10910,6 +10956,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10950,12 +10997,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1725058895921, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -10968,6 +11015,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11008,12 +11056,12 @@ "_stats": { "compendiumSource": "Item.Tyv0gXYaTmYJjHP1", "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1725058901225, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -11030,6 +11078,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -11079,12 +11128,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1725058904066, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -11097,6 +11146,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11147,12 +11197,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -11165,6 +11215,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11204,12 +11255,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -11222,6 +11273,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11271,12 +11323,12 @@ "_stats": { "compendiumSource": "Item.Jo88wNZQdCtvuuuS", "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -11293,6 +11345,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -11341,12 +11394,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.weapons.ZPUhNMmwXXrtbCXi", "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -11362,6 +11415,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11426,12 +11480,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.armor.UWp4WkkiaBMSXYPE", "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -11447,6 +11501,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11496,12 +11551,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -11514,6 +11569,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11563,12 +11619,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ { @@ -11581,7 +11637,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "changes": [ { @@ -11626,7 +11682,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "changes": [ { @@ -11672,6 +11728,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -11736,12 +11793,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -11754,6 +11811,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11803,12 +11861,12 @@ "_stats": { "compendiumSource": "Item.ew2ZoOaQVO1uDB8I", "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -11825,6 +11883,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -11871,12 +11930,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -11890,6 +11949,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -11953,12 +12013,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -11971,6 +12031,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -12020,12 +12081,12 @@ "_stats": { "compendiumSource": null, "coreVersion": "12.331", - "createdTime": 1724720580437, + "createdTime": 1731795284537, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580437, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284537, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "effects": [ ], @@ -12038,6 +12099,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -12089,12 +12151,12 @@ "_stats": { "compendiumSource": "JournalEntry.kC9OuLQOGZaI6gxk", "coreVersion": "12.331", - "createdTime": 1724720580477, + "createdTime": 1731795284565, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580477, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284565, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { "core": { @@ -12108,6 +12170,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -12122,10 +12185,10 @@ "coreVersion": "12.331", "createdTime": null, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1725720191626, + "lastModifiedBy": null, + "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12164,7 +12227,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { "core": { @@ -12203,10 +12266,10 @@ "coreVersion": "12.331", "createdTime": null, "duplicateSource": null, - "lastModifiedBy": null, - "modifiedTime": null, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795897434, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12221,7 +12284,7 @@ "system": { }, "text": { - "content": "

      Walls: Flecked with countless, smooth shards of quartz. White Bundles: Man-sized, several stuffed into cave corners.

      • Ettercap Ambush. If Eska in Area 1 raised alarm, three hostile @UUID[Compendium.shadowdark.monsters.Actor.fcgq7uwsJEMMdRNx]{ettercaps} from Area 4 cling to 20' ceiling.

      • Walls. Dazzlingly reflective. [[check 12 dex]] when entering with bright light or blinded for [[/r 1d4]] rounds (ettercaps are unaffected).

        • Prying. Carefully extracted piece of cave wall serves as a mirror.

      • White Bundles. Five @UUID[Compendium.shadowdark.monsters.k8tAgECWIzPIStGU]{beastmen} wrapped in ettercap silk. 1:6 chance one still lives. @UUID[Item.7unKOF9uy9ECqkEy]{Pearl} (40 gp) hidden inside one's mouth.

      ", + "content": "

      Walls: Flecked with countless, smooth shards of quartz. White Bundles: Man-sized, several stuffed into cave corners.

      • Ettercap Ambush. If Eska in Area 1 raised alarm, three hostile @UUID[Compendium.shadowdark.monsters.Actor.fcgq7uwsJEMMdRNx]{ettercaps} from Area 4 cling to 20' ceiling.

      • Walls. Dazzlingly reflective. [[request 12 dex]] when entering with bright light or blinded for [[/r 1d4]] rounds (ettercaps are unaffected).

        • Prying. Carefully extracted piece of cave wall serves as a mirror.

      • White Bundles. Five @UUID[Compendium.shadowdark.monsters.k8tAgECWIzPIStGU]{beastmen} wrapped in ettercap silk. 1:6 chance one still lives. @UUID[Item.7unKOF9uy9ECqkEy]{Pearl} (40 gp) hidden inside one's mouth.

      ", "format": 1, "markdown": "" }, @@ -12242,10 +12305,10 @@ "coreVersion": "12.331", "createdTime": null, "duplicateSource": null, - "lastModifiedBy": null, - "modifiedTime": null, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795915458, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { "core": { @@ -12263,7 +12326,7 @@ "system": { }, "text": { - "content": "

      Walls and Floor: Covered in thick, gauzy sheets of webbing.

      • Webs. Sticky. [[check 12 str]] to break free and move each turn. Highly flammable ([[/r 1d6]] damage to stuck creatures, burns [[/r 1d4]] rounds).

        • Rolled Parchment. Stuck in webs, 10' up.@UUID[Item.Jo88wNZQdCtvuuuS]{Scroll of Hold Portal} .

      • Secret Tunnel. Hidden by a wall of webs. Ettercaps reseal it each time they pass through.

        • Chittering. Listeners hear shrill, tittering whispers from Area 4.

      ", + "content": "

      Walls and Floor: Covered in thick, gauzy sheets of webbing.

      • Webs. Sticky. [[request 12 str]] to break free and move each turn. Highly flammable ([[/r 1d6]] damage to stuck creatures, burns [[/r 1d4]] rounds).

        • Rolled Parchment. Stuck in webs, 10' up.@UUID[Item.Jo88wNZQdCtvuuuS]{Scroll of Hold Portal} .

      • Secret Tunnel. Hidden by a wall of webs. Ettercaps reseal it each time they pass through.

        • Chittering. Listeners hear shrill, tittering whispers from Area 4.

      ", "format": 1, "markdown": "" }, @@ -12284,10 +12347,10 @@ "coreVersion": "12.331", "createdTime": null, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1725307470504, + "lastModifiedBy": null, + "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12326,7 +12389,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12362,10 +12425,10 @@ "coreVersion": "12.331", "createdTime": null, "duplicateSource": null, - "lastModifiedBy": null, - "modifiedTime": null, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795937549, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12380,7 +12443,7 @@ "system": { }, "text": { - "content": "

      Statue: A life-sized, snake-haired woman with arms raised and mouth open in a scream. Stone Basins: Smooth, human-sized.

      • Statue. Turning the hinged arms down causes scalding water to spew from mouth ([[check 12 dex]] to leap aside or [[/r 1d4]] damage).

      • Basins. Six. Coiling snake carvings. Stone plugs wedged in drains.

        • Removing Plugs. Cumulative 1:6 to unleash a @UUID[Compendium.shadowdark.monsters.U9moCUg8DnL6C0Sq]{scarab swarm}.

      ", + "content": "

      Statue: A life-sized, snake-haired woman with arms raised and mouth open in a scream. Stone Basins: Smooth, human-sized.

      • Statue. Turning the hinged arms down causes scalding water to spew from mouth ([[request 12 dex]] to leap aside or [[/r 1d4]] damage).

      • Basins. Six. Coiling snake carvings. Stone plugs wedged in drains.

        • Removing Plugs. Cumulative 1:6 to unleash a @UUID[Compendium.shadowdark.monsters.U9moCUg8DnL6C0Sq]{scarab swarm}.

      ", "format": 1, "markdown": "" }, @@ -12401,10 +12464,10 @@ "coreVersion": "12.331", "createdTime": null, "duplicateSource": null, - "lastModifiedBy": null, - "modifiedTime": null, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795950830, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12419,7 +12482,7 @@ "system": { }, "text": { - "content": "

      Bull Statue: Towering (10'), bronze. Horns lowered for a charge. Hall: 15' high. Pairs of deep holes punched into wall opposite statue.

      • Statue. Motion-activated. 3:6 chance/round it animates and charges to end of hall (ignores Scarlet Minotaur). [[check 15 dex]] or [[/r 2d6]] damage and knocked flat. Trots back to position and resets.

        • @UUID[Item.ToSK7skdC9OPzmwZ]{Emerald.} (120 gp), embedded in statue's forehead. Shattering (AC 20, 1 HP) deactivates statue but reduces gem's value to 20 gp (@UUID[Item.hiVLFYBR666Zm29e]{Emerald (Shattered)}).

      ", + "content": "

      Bull Statue: Towering (10'), bronze. Horns lowered for a charge. Hall: 15' high. Pairs of deep holes punched into wall opposite statue.

      • Statue. Motion-activated. 3:6 chance/round it animates and charges to end of hall (ignores Scarlet Minotaur). [[request 15 dex]] or [[/r 2d6]] damage and knocked flat. Trots back to position and resets.

        • @UUID[Item.ToSK7skdC9OPzmwZ]{Emerald.} (120 gp), embedded in statue's forehead. Shattering (AC 20, 1 HP) deactivates statue but reduces gem's value to 20 gp (@UUID[Item.hiVLFYBR666Zm29e]{Emerald (Shattered)}).

      ", "format": 1, "markdown": "" }, @@ -12443,7 +12506,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12479,10 +12542,10 @@ "coreVersion": "12.331", "createdTime": null, "duplicateSource": null, - "lastModifiedBy": null, - "modifiedTime": null, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795963085, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12497,7 +12560,7 @@ "system": { }, "text": { - "content": "

      Pillars: Four pairs, painted rich jewel tones. Capped in black marble.

      Body: Purple, spindly humanoid lies facedown halfway across room.

      Greatsword: Bronze, brightly polished. Blade is sunken into a black marble altar beyond the pillars.

      • Pillars. Moving past each pair activates their effect. Returning past the pair ends it. In order, from north to south:

        • Red. Anything flammable on you ignites. [[/r 1d4]] damage/round.

        • Blue. Sea water fills your lungs. You drown in [[/r 1d6]] rounds.

        • Green. Poisoned. [[check 12 con]] on your turn or lose turn.

        • Purple. You go blind and move at half speed.

      • Body. Ettercap. Scorched fur. Mouth and chest matted with salt rime. Claw marks around eyes.

      • Greatsword. [[check 12 str]] to remove from altar. +1 greatsword called @UUID[Item.JpRmSUeNd7qwnXZa]{Asterion}. A creature cannot move the wielder against their will.

      ", + "content": "

      Pillars: Four pairs, painted rich jewel tones. Capped in black marble.

      Body: Purple, spindly humanoid lies facedown halfway across room.

      Greatsword: Bronze, brightly polished. Blade is sunken into a black marble altar beyond the pillars.

      • Pillars. Moving past each pair activates their effect. Returning past the pair ends it. In order, from north to south:

        • Red. Anything flammable on you ignites. [[/r 1d4]] damage/round.

        • Blue. Sea water fills your lungs. You drown in [[/r 1d6]] rounds.

        • Green. Poisoned. [[request 12 con]] on your turn or lose turn.

        • Purple. You go blind and move at half speed.

      • Body. Ettercap. Scorched fur. Mouth and chest matted with salt rime. Claw marks around eyes.

      • Greatsword. [[request 12 str]] to remove from altar. +1 greatsword called @UUID[Item.JpRmSUeNd7qwnXZa]{Asterion}. A creature cannot move the wielder against their will.

      ", "format": 1, "markdown": "" }, @@ -12521,7 +12584,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12557,10 +12620,10 @@ "coreVersion": "12.331", "createdTime": null, "duplicateSource": null, - "lastModifiedBy": null, - "modifiedTime": null, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795973298, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12575,7 +12638,7 @@ "system": { }, "text": { - "content": "

      Door: Hefty stone slab with keyhole. Cold and damp to the touch.

      • Door. Unlocked, barricaded from inside. [[check 18 str]] to force.

        • Listening. Faint metallic, clinking sound on other side.

        • Keyhole. Darkness with a few points of bobbing, red light.

      • Inside. Four @UUID[Compendium.shadowdark.monsters.cWzG0yEVgIk8ijk6]{skeletons} in tattered, red leather armor shuffle around, knocking into manacles anchored to floor. Four bronze-shod spears braced through handle (broken if door opened).

        • Walls. Scratched in ancient Common: \"Days since the Beast appeared.\" About 40 tally lines below it, gradually fainter.

      ", + "content": "

      Door: Hefty stone slab with keyhole. Cold and damp to the touch.

      • Door. Unlocked, barricaded from inside. [[request 18 str]] to force.

        • Listening. Faint metallic, clinking sound on other side.

        • Keyhole. Darkness with a few points of bobbing, red light.

      • Inside. Four @UUID[Compendium.shadowdark.monsters.cWzG0yEVgIk8ijk6]{skeletons} in tattered, red leather armor shuffle around, knocking into manacles anchored to floor. Four bronze-shod spears braced through handle (broken if door opened).

        • Walls. Scratched in ancient Common: \"Days since the Beast appeared.\" About 40 tally lines below it, gradually fainter.

      ", "format": 1, "markdown": "" }, @@ -12599,7 +12662,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12638,7 +12701,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12677,7 +12740,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12713,10 +12776,10 @@ "coreVersion": "12.331", "createdTime": null, "duplicateSource": null, - "lastModifiedBy": null, - "modifiedTime": null, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795987719, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12731,7 +12794,7 @@ "system": { }, "text": { - "content": "

      Terracotta Jars: Clustered in corners. Fat and rounded, various heights. Air: Sulfuric scent. Sound: Occasional faint squeak and hiss. South Door: White, jagged lines gouged into the stone.

      • Jars. 20 jars sealed with cork and wax. Stamped with images of people carving wheat with scythes. Sticky, black mush inside.

        • Explosive. Shaking/striking jar causes it to shatter from sulfuric gas buildup. [[check 12 dex]] or 1d4 damage. Possible chain reaction.

        • Treasure. Cumulative 1:20 chance of finding an @UUID[Item.R9rWEWg4biAMlj0U]{ivory egg} shot with grey veins inside one (40 gp). It's actually a cockatrice egg.

      • South Door. Carving in Common: \"R.I.P. Orwyn the Younger.\"

      ", + "content": "

      Terracotta Jars: Clustered in corners. Fat and rounded, various heights. Air: Sulfuric scent. Sound: Occasional faint squeak and hiss. South Door: White, jagged lines gouged into the stone.

      • Jars. 20 jars sealed with cork and wax. Stamped with images of people carving wheat with scythes. Sticky, black mush inside.

        • Explosive. Shaking/striking jar causes it to shatter from sulfuric gas buildup. [[request 12 dex]] or 1d4 damage. Possible chain reaction.

        • Treasure. Cumulative 1:20 chance of finding an @UUID[Item.R9rWEWg4biAMlj0U]{ivory egg} shot with grey veins inside one (40 gp). It's actually a cockatrice egg.

      • South Door. Carving in Common: \"R.I.P. Orwyn the Younger.\"

      ", "format": 1, "markdown": "" }, @@ -12755,7 +12818,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12794,7 +12857,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12833,7 +12896,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12872,7 +12935,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12911,7 +12974,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12950,7 +13013,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12989,7 +13052,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -13028,7 +13091,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -13067,7 +13130,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -13106,7 +13169,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -13145,7 +13208,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -13181,10 +13244,10 @@ "coreVersion": "12.331", "createdTime": null, "duplicateSource": null, - "lastModifiedBy": null, - "modifiedTime": null, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731796020290, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -13199,7 +13262,7 @@ "system": { }, "text": { - "content": "

      Cave: Chilly and damp, high ceiling (30'). Dripping stalactites. Pool: Crimson water, murky and still. Smell: Coppery, metallic tang.

      • Spirits. Dozens of smoky, humanlike shadows flicker at the edge of darkness. If the light ever goes out, they descend with ghostly shrieks, dealing [[/r 1d8]] damage/round to each character.

      • Pool. 20' deep. Cursed water clouded with blood. [[check 12 con]] for each round of contact or temporarily lose 1 point of Wisdom (heals after rest). If 0 Wisdom, permanently become catatonic.

        • On Bottom. Graveyard of dozens of human and bull skeletons. Among them are 200 gp, a @UUID[Item.i3gSIEVGxXhlUkdn]{Wand of Blind/Deafen}, three @UUID[Item.cFi2Wtbwz3qkiJMx]{onyx bull statuettes} (15 gp each), @UUID[Item.ip1i9MpeJeyf7ayu]{Boots of the Cat}, and a tiny bottle that houses the soul of a mighty sorcerer named Malfune.

      ", + "content": "

      Cave: Chilly and damp, high ceiling (30'). Dripping stalactites. Pool: Crimson water, murky and still. Smell: Coppery, metallic tang.

      • Spirits. Dozens of smoky, humanlike shadows flicker at the edge of darkness. If the light ever goes out, they descend with ghostly shrieks, dealing [[/r 1d8]] damage/round to each character.

      • Pool. 20' deep. Cursed water clouded with blood. [[request 12 con]] for each round of contact or temporarily lose 1 point of Wisdom (heals after rest). If 0 Wisdom, permanently become catatonic.

        • On Bottom. Graveyard of dozens of human and bull skeletons. Among them are 200 gp, a @UUID[Item.i3gSIEVGxXhlUkdn]{Wand of Blind/Deafen}, three @UUID[Item.cFi2Wtbwz3qkiJMx]{onyx bull statuettes} (15 gp each), @UUID[Item.ip1i9MpeJeyf7ayu]{Boots of the Cat}, and a tiny bottle that houses the soul of a mighty sorcerer named Malfune.

      ", "format": 1, "markdown": "" }, @@ -13218,12 +13281,12 @@ "_stats": { "compendiumSource": "JournalEntry.Jd3mOMTNeoHyJ0o9.JournalEntryPage.WoT0LXffwbnbMAKW", "coreVersion": "12.331", - "createdTime": 1724720684058, + "createdTime": null, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1725118250378, + "lastModifiedBy": null, + "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -13257,12 +13320,12 @@ "_stats": { "compendiumSource": "JournalEntry.Jd3mOMTNeoHyJ0o9.JournalEntryPage.ji9paT4DbaYTmMPm", "coreVersion": "12.331", - "createdTime": 1725719489682, + "createdTime": null, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1725720110571, + "lastModifiedBy": null, + "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -13301,14 +13364,14 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.macros.Macro.zNYDtS7XcT3IaQ4t", "coreVersion": "12.331", - "createdTime": 1724720422186, + "createdTime": 1731795284933, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1725119453989, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284933, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, - "author": "fN4EvXwUx7iTYSyk", + "author": "XOge3YaW9qcUJnuq", "command": "// Macro to create a random NPC, being sent in a whisper to GMs on the server.\n\nconst namesTableID = game.tables.find(o => o.name === \"The Lost Citadel: Beastmen Names\")._id;\nconst namesTable = await game.tables.get(namesTableID);\nconst namesResult = await namesTable.draw({displayChat: false});\nconst names = namesResult.results.pop().getChatText();\n\nconst appearanceTableID = game.tables.find(o => o.name === \"The Lost Citadel: Beastmen Appearances\")._id;\nconst appearanceTable = await game.tables.get(appearanceTableID);\nconst appearanceResult = await appearanceTable.draw({displayChat: false});\nconst appearance = appearanceResult.results.pop().getChatText();\n\nconst behaviorTableID = game.tables.find(o => o.name === \"The Lost Citadel: Beastmen Behaviors\")._id;\nconst behaviorTable = await game.tables.get(behaviorTableID);\nconst behaviorResult = await behaviorTable.draw({displayChat: false});\nconst behavior = behaviorResult.results.pop().getChatText();\n\nconst message = `

      A ${appearance} @UUID[Compendium.shadowdark.monsters.Actor.k8tAgECWIzPIStGU]{Beastman} named ${names} \nis ${behavior}.

      `;\n\nconst chatData = {\n user: game.user._id,\n speaker: ChatMessage.getSpeaker(),\n content: message,\n whisper: game.users.filter(u => u.isGM).map(u => u._id),\n};\n\nChatMessage.create(chatData, {});", "flags": { "core": { @@ -13322,6 +13385,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3 }, @@ -13334,14 +13398,14 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.macros.Macro.EropDDFL0DKcW8I6", "coreVersion": "12.331", - "createdTime": 1724720422186, + "createdTime": 1731795284933, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1725119469879, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284933, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, - "author": "fN4EvXwUx7iTYSyk", + "author": "XOge3YaW9qcUJnuq", "command": "// Macro to create a random NPC, being sent in a whisper to GMs on the server.\n\nconst namesTableID = game.tables.find(o => o.name === \"The Lost Citadel: Ettercap Names\")._id;\nconst namesTable = await game.tables.get(namesTableID);\nconst namesResult = await namesTable.draw({displayChat: false});\nconst names = namesResult.results.pop().getChatText();\n\nconst appearanceTableID = game.tables.find(o => o.name === \"The Lost Citadel: Ettercap Appearances\")._id;\nconst appearanceTable = await game.tables.get(appearanceTableID);\nconst appearanceResult = await appearanceTable.draw({displayChat: false});\nconst appearance = appearanceResult.results.pop().getChatText();\n\nconst behaviorTableID = game.tables.find(o => o.name === \"The Lost Citadel: Ettercap Behaviors\")._id;\nconst behaviorTable = await game.tables.get(behaviorTableID);\nconst behaviorResult = await behaviorTable.draw({displayChat: false});\nconst behavior = behaviorResult.results.pop().getChatText();\n\nconst message = `

      A ${appearance} @UUID[Compendium.shadowdark.monsters.Actor.fcgq7uwsJEMMdRNx]{Ettercap} named ${names} \nis ${behavior}.

      `;\n\nconst chatData = {\n user: game.user._id,\n speaker: ChatMessage.getSpeaker(),\n content: message,\n whisper: game.users.filter(u => u.isGM).map(u => u._id),\n};\n\nChatMessage.create(chatData, {});", "flags": { "core": { @@ -13355,6 +13419,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3 }, @@ -13367,14 +13432,14 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.macros.Macro.C0TN1X2LOAPYWJmD", "coreVersion": "12.331", - "createdTime": 1724720422186, + "createdTime": 1731795284933, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580895, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284933, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, - "author": "fN4EvXwUx7iTYSyk", + "author": "XOge3YaW9qcUJnuq", "command": "// Macro to draw for encounter in The Lost Citadel and only show it to the GM.;\n\nconst tableID = game.tables.find(o => o.name === \"The Lost Citadel: Random Encounter Check\")._id;\nconst table = await game.tables.get(tableID);\nawait table.draw({ rollMode: CONST.DICE_ROLL_MODES.PRIVATE});", "flags": { "core": { @@ -13388,6 +13453,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3 }, @@ -13405,14 +13471,14 @@ "_stats": { "compendiumSource": "Scene.meMau7PRNLPMhWtA", "coreVersion": "12.331", - "createdTime": 1724720580600, + "createdTime": 1731795284677, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1725719365679, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284677, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, - "active": true, + "active": false, "background": { "alphaThreshold": 0, "anchorX": 0, @@ -14821,6 +14887,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -38742,12 +38809,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.rollable-tables.RollTable.8ZWuW34EAMWVBpz5", "coreVersion": "12.331", - "createdTime": 1724720580756, + "createdTime": 1731795284860, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580756, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284860, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "description": "", "displayRoll": false, @@ -38764,6 +38831,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -38939,12 +39007,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.rollable-tables.RollTable.9PJHNS0mKp3wQ0h8", "coreVersion": "12.331", - "createdTime": 1724720580756, + "createdTime": 1731795284860, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1725118100710, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284860, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "description": "", "displayRoll": false, @@ -38961,6 +39029,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -39104,12 +39173,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.rollable-tables.RollTable.IkysQwv0TS6SripN", "coreVersion": "12.331", - "createdTime": 1724720580756, + "createdTime": 1731795284860, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580756, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284860, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "description": "", "displayRoll": false, @@ -39126,6 +39195,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -39301,12 +39371,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.rollable-tables.RollTable.K3VLbRUdyBC65MOL", "coreVersion": "12.331", - "createdTime": 1724720580756, + "createdTime": 1731795284860, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580756, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284860, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "description": "", "displayRoll": false, @@ -39323,6 +39393,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -39498,12 +39569,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.rollable-tables.RollTable.VKT5qBn60tiWZWXL", "coreVersion": "12.331", - "createdTime": 1724720580756, + "createdTime": 1731795284860, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580756, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284860, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "description": "", "displayRoll": false, @@ -39520,6 +39591,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -39695,12 +39767,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.rollable-tables.RollTable.iFdrtN3kJk5yth9S", "coreVersion": "12.331", - "createdTime": 1724720580756, + "createdTime": 1731795284860, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720625297, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284860, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "description": "", "displayRoll": false, @@ -39717,6 +39789,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -39828,12 +39901,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.rollable-tables.RollTable.jDOXbODgNkT69ii5", "coreVersion": "12.331", - "createdTime": 1724720580756, + "createdTime": 1731795284860, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580756, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284860, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "description": "", "displayRoll": false, @@ -39850,6 +39923,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -40025,12 +40099,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.rollable-tables.RollTable.l251PEOpGq6Ss7Z9", "coreVersion": "12.331", - "createdTime": 1724720580756, + "createdTime": 1731795284860, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580756, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284860, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "description": "", "displayRoll": false, @@ -40047,6 +40121,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -40094,12 +40169,12 @@ "_stats": { "compendiumSource": "Compendium.shadowdark.rollable-tables.RollTable.m7Xv2zw1KGYxsuJG", "coreVersion": "12.331", - "createdTime": 1724720580756, + "createdTime": 1731795284860, "duplicateSource": null, - "lastModifiedBy": "fN4EvXwUx7iTYSyk", - "modifiedTime": 1724720580756, + "lastModifiedBy": "XOge3YaW9qcUJnuq", + "modifiedTime": 1731795284860, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "description": "", "displayRoll": false, @@ -40116,6 +40191,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, From 09ecd59c66f149641428dbdf67460baadffc70ca Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 22:35:49 +0000 Subject: [PATCH 152/182] fix NPC special attacks --- system/src/documents/ActorSD.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/src/documents/ActorSD.mjs b/system/src/documents/ActorSD.mjs index ce7184bf..8ff22178 100644 --- a/system/src/documents/ActorSD.mjs +++ b/system/src/documents/ActorSD.mjs @@ -1435,7 +1435,7 @@ export default class ActorSD extends Actor { title = game.i18n.localize("SHADOWDARK.chat.use_ability.title"); // does ability use on a roll check? - if (item.system.ability !== "") { + if (item.system.ability) { options = foundry.utils.mergeObject({target: item.system.dc}, options); const result = await this.rollAbility( item.system.ability, From 68512de0a55b1a43f23d8fac6c1e04d32d347aaf Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 22:37:23 +0000 Subject: [PATCH 153/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index 87503b54..d424643d 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -89,12 +89,15 @@ SHADOWDARK.apps.item-importer.instruction2d: Особенности SHADOWDARK.apps.item-importer.instruction3: 3. Нажмите "Импортировать предмет". SHADOWDARK.apps.item-importer.title: Импорт предмета SHADOWDARK.apps.level-up.dragdrop: Перетащите сюда +SHADOWDARK.apps.level-up.errors.missing_boon_table: Unable to roll Patron Boon as the configured RollTable could not be loaded SHADOWDARK.apps.level-up.hit_points: Очки здоровья SHADOWDARK.apps.level-up.level_up: Повышение уровня! SHADOWDARK.apps.level-up.leveling_to: Повышение до уровня SHADOWDARK.apps.level-up.missing_selections: Отсутствуют выборы SHADOWDARK.apps.level-up.notalent: На этом уровне не получено талантов +SHADOWDARK.apps.level-up.or_boons: or Boons SHADOWDARK.apps.level-up.prompt: Не все обязательные выборы сделаны. Продолжить повышение уровня в любом случае? +SHADOWDARK.apps.level-up.roll_boon: Roll Boon SHADOWDARK.apps.level-up.roll_talent: Бросить талант SHADOWDARK.apps.level-up.title: Повышение уровня SHADOWDARK.apps.monster-importer.import_button: Импортировать монстра @@ -276,6 +279,7 @@ SHADOWDARK.dialog.general.no: "Нет" SHADOWDARK.dialog.general.select: Выбрать SHADOWDARK.dialog.general.yes: "Да" SHADOWDARK.dialog.gm: Мастер игры +SHADOWDARK.dialog.hp_re_roll.title: HP Re-roll SHADOWDARK.dialog.hp_roll.per_level: Бросок ОЗ для уровня {level} SHADOWDARK.dialog.hp_roll.previous_hp: "ОЗ до броска: {hp}" SHADOWDARK.dialog.hp_roll.roll_level_1: Выпало {hp} ОЗ для 1 уровня (включая мод. телосложения) From 5e2380a2a35861e2f0538d7f409cc816a470b4ca Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 22:37:24 +0000 Subject: [PATCH 154/182] New translations en.yaml (French) --- i18n/fr.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/i18n/fr.yaml b/i18n/fr.yaml index 032b270a..64d0ed53 100644 --- a/i18n/fr.yaml +++ b/i18n/fr.yaml @@ -89,12 +89,15 @@ SHADOWDARK.apps.item-importer.instruction2d: Features SHADOWDARK.apps.item-importer.instruction3: 3. Click Import Item. SHADOWDARK.apps.item-importer.title: Import Item SHADOWDARK.apps.level-up.dragdrop: Drag and Drop Here +SHADOWDARK.apps.level-up.errors.missing_boon_table: Unable to roll Patron Boon as the configured RollTable could not be loaded SHADOWDARK.apps.level-up.hit_points: Hit Points SHADOWDARK.apps.level-up.level_up: Level Up! SHADOWDARK.apps.level-up.leveling_to: Leveling up to level SHADOWDARK.apps.level-up.missing_selections: Missing Selections SHADOWDARK.apps.level-up.notalent: No talents gained at this level +SHADOWDARK.apps.level-up.or_boons: or Boons SHADOWDARK.apps.level-up.prompt: Not all required selections have been made. Continue with level up anyways? +SHADOWDARK.apps.level-up.roll_boon: Roll Boon SHADOWDARK.apps.level-up.roll_talent: Roll Talent SHADOWDARK.apps.level-up.title: Leveling Up SHADOWDARK.apps.monster-importer.import_button: Importer Monstre @@ -276,6 +279,7 @@ SHADOWDARK.dialog.general.no: "Non" SHADOWDARK.dialog.general.select: Sélectionner SHADOWDARK.dialog.general.yes: "Oui" SHADOWDARK.dialog.gm: Maître de jeu +SHADOWDARK.dialog.hp_re_roll.title: HP Re-roll SHADOWDARK.dialog.hp_roll.per_level: Lancer les PV pour le niveau {level} SHADOWDARK.dialog.hp_roll.previous_hp: "PV avant de lancer : {hp}" SHADOWDARK.dialog.hp_roll.roll_level_1: Lancement de {hp} PV pour le niveau 1 (incluant le modificateur de constitution) From 9bad2e506cdc380e90927532349e56c589407761 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 22:37:25 +0000 Subject: [PATCH 155/182] New translations en.yaml (Spanish) --- i18n/es.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/i18n/es.yaml b/i18n/es.yaml index 65932c62..1a86f12b 100644 --- a/i18n/es.yaml +++ b/i18n/es.yaml @@ -89,12 +89,15 @@ SHADOWDARK.apps.item-importer.instruction2d: Características SHADOWDARK.apps.item-importer.instruction3: Clic en importar elemento. SHADOWDARK.apps.item-importer.title: Importar elemento SHADOWDARK.apps.level-up.dragdrop: Arrastrar y soltar aquí +SHADOWDARK.apps.level-up.errors.missing_boon_table: Unable to roll Patron Boon as the configured RollTable could not be loaded SHADOWDARK.apps.level-up.hit_points: Puntos de Vida SHADOWDARK.apps.level-up.level_up: '¡Subir nivel!' SHADOWDARK.apps.level-up.leveling_to: Subiendo nivel SHADOWDARK.apps.level-up.missing_selections: Faltan selecciones SHADOWDARK.apps.level-up.notalent: Sin talentos ganados en este nivel +SHADOWDARK.apps.level-up.or_boons: or Boons SHADOWDARK.apps.level-up.prompt: No se han realizado las selecciones requeridas. ¿Continuar con la subida de nivel? +SHADOWDARK.apps.level-up.roll_boon: Roll Boon SHADOWDARK.apps.level-up.roll_talent: Lanzar talento SHADOWDARK.apps.level-up.title: Subiendo nivel SHADOWDARK.apps.monster-importer.import_button: Importar monstruo @@ -276,6 +279,7 @@ SHADOWDARK.dialog.general.no: "No" SHADOWDARK.dialog.general.select: Seleccionar SHADOWDARK.dialog.general.yes: "Sí" SHADOWDARK.dialog.gm: Gamemaster +SHADOWDARK.dialog.hp_re_roll.title: HP Re-roll SHADOWDARK.dialog.hp_roll.per_level: Tirar PV por nivel {level} SHADOWDARK.dialog.hp_roll.previous_hp: "PV antes de tirar: {hp}" SHADOWDARK.dialog.hp_roll.roll_level_1: Obtienes {hp} PV por nivel 1 (incluido modificador) From 3c1aa338fc2dca61dd5120c696677936d497393d Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 22:37:27 +0000 Subject: [PATCH 156/182] New translations en.yaml (German) --- i18n/de.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/i18n/de.yaml b/i18n/de.yaml index 1d3619ac..8ddf50a3 100644 --- a/i18n/de.yaml +++ b/i18n/de.yaml @@ -89,12 +89,15 @@ SHADOWDARK.apps.item-importer.instruction2d: Features SHADOWDARK.apps.item-importer.instruction3: 3. Click Import Item. SHADOWDARK.apps.item-importer.title: Import Item SHADOWDARK.apps.level-up.dragdrop: Drag and Drop Here +SHADOWDARK.apps.level-up.errors.missing_boon_table: Unable to roll Patron Boon as the configured RollTable could not be loaded SHADOWDARK.apps.level-up.hit_points: Hit Points SHADOWDARK.apps.level-up.level_up: Level Up! SHADOWDARK.apps.level-up.leveling_to: Leveling up to level SHADOWDARK.apps.level-up.missing_selections: Missing Selections SHADOWDARK.apps.level-up.notalent: No talents gained at this level +SHADOWDARK.apps.level-up.or_boons: or Boons SHADOWDARK.apps.level-up.prompt: Not all required selections have been made. Continue with level up anyways? +SHADOWDARK.apps.level-up.roll_boon: Roll Boon SHADOWDARK.apps.level-up.roll_talent: Roll Talent SHADOWDARK.apps.level-up.title: Leveling Up SHADOWDARK.apps.monster-importer.import_button: Monster importieren @@ -276,6 +279,7 @@ SHADOWDARK.dialog.general.no: "Nein" SHADOWDARK.dialog.general.select: Select SHADOWDARK.dialog.general.yes: "Ja" SHADOWDARK.dialog.gm: Gamemaster +SHADOWDARK.dialog.hp_re_roll.title: HP Re-roll SHADOWDARK.dialog.hp_roll.per_level: Roll HP for level {level} SHADOWDARK.dialog.hp_roll.previous_hp: "HP before rolling: {hp}" SHADOWDARK.dialog.hp_roll.roll_level_1: Rolled {hp} hp for level 1 (incl. con mod) From 6e49c8700bd1c61c556fa611d5307012761b1904 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 22:37:28 +0000 Subject: [PATCH 157/182] New translations en.yaml (Finnish) --- i18n/fi.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/i18n/fi.yaml b/i18n/fi.yaml index 85a98a77..1f6f79f0 100644 --- a/i18n/fi.yaml +++ b/i18n/fi.yaml @@ -89,12 +89,15 @@ SHADOWDARK.apps.item-importer.instruction2d: Ominaisuudet SHADOWDARK.apps.item-importer.instruction3: 3. Paina "Tuo esine"-nappia. SHADOWDARK.apps.item-importer.title: Tuo esine SHADOWDARK.apps.level-up.dragdrop: Vedä ja tiputa tähän +SHADOWDARK.apps.level-up.errors.missing_boon_table: Unable to roll Patron Boon as the configured RollTable could not be loaded SHADOWDARK.apps.level-up.hit_points: Osumapisteet SHADOWDARK.apps.level-up.level_up: Hahmosi kehittyi seuraavalle tasolle! SHADOWDARK.apps.level-up.leveling_to: Kehitetään hahmoa tasolle SHADOWDARK.apps.level-up.missing_selections: Valintoja puuttuu SHADOWDARK.apps.level-up.notalent: Ei uusia lahjakkuuksia tällä tasolla +SHADOWDARK.apps.level-up.or_boons: or Boons SHADOWDARK.apps.level-up.prompt: Kaikkia vaadittuja valintoja ei ole tehty. Jatketaanko hahmotason kasvatusta kuitenkin? +SHADOWDARK.apps.level-up.roll_boon: Roll Boon SHADOWDARK.apps.level-up.roll_talent: Arvo uusi lahjakkuus SHADOWDARK.apps.level-up.title: Hahmon kehitys SHADOWDARK.apps.monster-importer.import_button: Tuo hirviö @@ -276,6 +279,7 @@ SHADOWDARK.dialog.general.no: "Ei" SHADOWDARK.dialog.general.select: Valitse SHADOWDARK.dialog.general.yes: "Kyllä" SHADOWDARK.dialog.gm: Pelinjohtaja +SHADOWDARK.dialog.hp_re_roll.title: HP Re-roll SHADOWDARK.dialog.hp_roll.per_level: Heitä osumapisteet tasolle {level} SHADOWDARK.dialog.hp_roll.previous_hp: "Osumapisteet ennen heittoa: {hp}" SHADOWDARK.dialog.hp_roll.roll_level_1: Heitetty {hp} osumapistettä tasolle 1 (sis. sitkeysbonuksen) From aeae2fff5c003a0e7ab2e165444bfec267bae481 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 22:37:29 +0000 Subject: [PATCH 158/182] New translations en.yaml (Korean) --- i18n/ko.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/i18n/ko.yaml b/i18n/ko.yaml index a4cd2504..866f2fae 100644 --- a/i18n/ko.yaml +++ b/i18n/ko.yaml @@ -89,12 +89,15 @@ SHADOWDARK.apps.item-importer.instruction2d: Features SHADOWDARK.apps.item-importer.instruction3: 3. Click Import Item. SHADOWDARK.apps.item-importer.title: Import Item SHADOWDARK.apps.level-up.dragdrop: Drag and Drop Here +SHADOWDARK.apps.level-up.errors.missing_boon_table: Unable to roll Patron Boon as the configured RollTable could not be loaded SHADOWDARK.apps.level-up.hit_points: Hit Points SHADOWDARK.apps.level-up.level_up: Level Up! SHADOWDARK.apps.level-up.leveling_to: Leveling up to level SHADOWDARK.apps.level-up.missing_selections: Missing Selections SHADOWDARK.apps.level-up.notalent: No talents gained at this level +SHADOWDARK.apps.level-up.or_boons: or Boons SHADOWDARK.apps.level-up.prompt: Not all required selections have been made. Continue with level up anyways? +SHADOWDARK.apps.level-up.roll_boon: Roll Boon SHADOWDARK.apps.level-up.roll_talent: Roll Talent SHADOWDARK.apps.level-up.title: Leveling Up SHADOWDARK.apps.monster-importer.import_button: 몬스터 불러오기 @@ -276,6 +279,7 @@ SHADOWDARK.dialog.general.no: "아니오" SHADOWDARK.dialog.general.select: 지정 SHADOWDARK.dialog.general.yes: "네" SHADOWDARK.dialog.gm: 게임마스터 +SHADOWDARK.dialog.hp_re_roll.title: HP Re-roll SHADOWDARK.dialog.hp_roll.per_level: '{level} 레벨 HP 굴림' SHADOWDARK.dialog.hp_roll.previous_hp: "굴리기 전 HP: {hp}" SHADOWDARK.dialog.hp_roll.roll_level_1: (건강 수정치 포함) 1 레벨 HP {hp} 를 굴렸습니다 From 76bc0fe56fd2c0606329e7dc8e1aa0d4dbf00426 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 22:37:30 +0000 Subject: [PATCH 159/182] New translations en.yaml (Swedish) --- i18n/sv.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/i18n/sv.yaml b/i18n/sv.yaml index 5b3c60ef..62fa3257 100644 --- a/i18n/sv.yaml +++ b/i18n/sv.yaml @@ -89,12 +89,15 @@ SHADOWDARK.apps.item-importer.instruction2d: Funktioner SHADOWDARK.apps.item-importer.instruction3: 3. Klicka på importera. SHADOWDARK.apps.item-importer.title: Importera föremål SHADOWDARK.apps.level-up.dragdrop: Drag and Drop Here +SHADOWDARK.apps.level-up.errors.missing_boon_table: Unable to roll Patron Boon as the configured RollTable could not be loaded SHADOWDARK.apps.level-up.hit_points: Hit Points SHADOWDARK.apps.level-up.level_up: Level Up! SHADOWDARK.apps.level-up.leveling_to: Leveling up to level SHADOWDARK.apps.level-up.missing_selections: Missing Selections SHADOWDARK.apps.level-up.notalent: No talents gained at this level +SHADOWDARK.apps.level-up.or_boons: or Boons SHADOWDARK.apps.level-up.prompt: Not all required selections have been made. Continue with level up anyways? +SHADOWDARK.apps.level-up.roll_boon: Roll Boon SHADOWDARK.apps.level-up.roll_talent: Roll Talent SHADOWDARK.apps.level-up.title: Leveling Up SHADOWDARK.apps.monster-importer.import_button: Importera monster @@ -276,6 +279,7 @@ SHADOWDARK.dialog.general.no: "Nej" SHADOWDARK.dialog.general.select: Välj SHADOWDARK.dialog.general.yes: "Ja" SHADOWDARK.dialog.gm: Spelmästare +SHADOWDARK.dialog.hp_re_roll.title: HP Re-roll SHADOWDARK.dialog.hp_roll.per_level: Rulla KP för nivå {level} SHADOWDARK.dialog.hp_roll.previous_hp: "KP innan rullning: {hp}" SHADOWDARK.dialog.hp_roll.roll_level_1: Rullade {hp} KP för nivå 1 (inkl. fys mod) From 8d77b4fccc3ca0646fa5c98117801fb8f71e687e Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Sat, 16 Nov 2024 22:37:31 +0000 Subject: [PATCH 160/182] New translations en.yaml (Portuguese, Brazilian) --- i18n/pt_BR.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/i18n/pt_BR.yaml b/i18n/pt_BR.yaml index 97e67e8a..1d0aca2e 100644 --- a/i18n/pt_BR.yaml +++ b/i18n/pt_BR.yaml @@ -89,12 +89,15 @@ SHADOWDARK.apps.item-importer.instruction2d: Características SHADOWDARK.apps.item-importer.instruction3: 3. Clique em Importar Item. SHADOWDARK.apps.item-importer.title: Importar Item SHADOWDARK.apps.level-up.dragdrop: Arraste e Solte Aqui +SHADOWDARK.apps.level-up.errors.missing_boon_table: Unable to roll Patron Boon as the configured RollTable could not be loaded SHADOWDARK.apps.level-up.hit_points: Pontos de Vida SHADOWDARK.apps.level-up.level_up: Subir de Nível! SHADOWDARK.apps.level-up.leveling_to: Subindo para o nível SHADOWDARK.apps.level-up.missing_selections: Faltando Seleções SHADOWDARK.apps.level-up.notalent: Nenhum talento ganho neste nível +SHADOWDARK.apps.level-up.or_boons: or Boons SHADOWDARK.apps.level-up.prompt: Nem todas as seleções necessárias foram feitas. Continuar subindo de nível mesmo assim? +SHADOWDARK.apps.level-up.roll_boon: Roll Boon SHADOWDARK.apps.level-up.roll_talent: Rolar Talento SHADOWDARK.apps.level-up.title: Subindo de nível SHADOWDARK.apps.monster-importer.import_button: Importar Monstro @@ -276,6 +279,7 @@ SHADOWDARK.dialog.general.no: "Não" SHADOWDARK.dialog.general.select: Selecionar SHADOWDARK.dialog.general.yes: "Sim" SHADOWDARK.dialog.gm: Mestre do Jogo +SHADOWDARK.dialog.hp_re_roll.title: HP Re-roll SHADOWDARK.dialog.hp_roll.per_level: Rolar PV para o nível {level} SHADOWDARK.dialog.hp_roll.previous_hp: "PV antes de rolar: {hp}" SHADOWDARK.dialog.hp_roll.roll_level_1: Rolou {hp} PV para o nível 1 (incluindo modificador) From 55758113eadd0661e098bf3b08b6fc5a9c3be2e8 Mon Sep 17 00:00:00 2001 From: Prototype Date: Sat, 16 Nov 2024 15:09:36 -0800 Subject: [PATCH 161/182] add release notes --- RELEASE_NOTES.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index cdeb4ab6..977c1e04 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -8,11 +8,13 @@ * [#881] Support rolling on a character's Patron's Boon table if necessary in the Level Up app * [#901] Added Russian as a partially complete system language. * [#908] Add rollable dice to Cure Wounds spell that includes the necessary calculations *(Many thanks to **nschoenwald** for contributing to this issue)* -* [#910] Implement prompt for DC Checks +* [#910] Implemented automatic check roll links and added new macro to launch the check request dialog. + * example syntax: `[[check 12 str]]` or `[[request 15 int]]` * [#920] Show tooltips on weapon and armor properties when showing expanded inline view in inventory * [#921] Add way to view/manipulate current Active Effects to the player Effects tab * [#937] Support selecting or rolling Patron in character generator * [#939] Add macro for launching the character generator +* [#947] Added new check syntax to text in monster abilities and the Lost Citadel dungeon guild. ## Bugfixes * [#894] Unnecessary "items not found" warning for "+2 Stats Points" from ShadowDarklings From 22683cf688e2d78aedca7bb62dc7901b887392a1 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 11:49:22 +0000 Subject: [PATCH 162/182] closes #953 --- system/src/dice/RollSD.mjs | 45 +++++++++++++++++++++++++++++--- system/src/documents/ActorSD.mjs | 8 ++---- system/src/documents/ItemSD.mjs | 6 ++--- system/src/system/ChatSD.mjs | 11 ++++---- system/src/utils/UtilitySD.mjs | 9 ------- 5 files changed, 50 insertions(+), 29 deletions(-) diff --git a/system/src/dice/RollSD.mjs b/system/src/dice/RollSD.mjs index 27ad9fc7..8cd12e69 100644 --- a/system/src/dice/RollSD.mjs +++ b/system/src/dice/RollSD.mjs @@ -715,20 +715,57 @@ export default class RollSD extends Roll { rollsToShow.push(rolls.secondaryDamage.roll); } - // TODO Make sure we honor the whisper and/or blind settings of the roll - // + const { whisper, blind } = this.getRollModeSettings(); + // Only await on the final dice roll of the sequence as it looks nicer // if all the dice roll before the chat message appears + // const numRolls = rollsToShow.length; let currentRoll = 1; for (const roll of rollsToShow) { if (currentRoll === numRolls) { - await game.dice3d.showForRoll(roll, game.user, true); + await game.dice3d.showForRoll(roll, game.user, true, whisper, blind); } else { - game.dice3d.showForRoll(roll, game.user, true); + game.dice3d.showForRoll(roll, game.user, true, whisper, blind); } currentRoll++; } } + + + static getRollModeSettings() { + const rollMode = game.settings.get("core", "rollMode"); + + let blind = false; + let whisper = null; + + switch (rollMode) { + case "blindroll": { + blind = true; + } + case "gmroll": { + const gmList = game.users.filter(user => user.isGM); + const gmIDList = []; + gmList.forEach(gm => gmIDList.push(gm.id)); + whisper = gmIDList; + break; + } + case "roll": { + const userList = game.users.filter(user => user.active); + const userIDList = []; + userList.forEach(user => userIDList.push(user.id)); + whisper = userIDList; + break; + } + case "selfroll": { + whisper = [game.user.id]; + break; + } + default: { + break; + } + } + return { whisper, blind }; + } } diff --git a/system/src/documents/ActorSD.mjs b/system/src/documents/ActorSD.mjs index 8ff22178..08368e69 100644 --- a/system/src/documents/ActorSD.mjs +++ b/system/src/documents/ActorSD.mjs @@ -70,15 +70,13 @@ export default class ActorSD extends Actor { const title = game.i18n.localize("SHADOWDARK.chat.spell_learn.title"); - const messageStyles = shadowdark.utils.getMessageStyles(); - await ChatMessage.create({ title, content, flags: { "core.canPopout": true }, flavor: title, speaker: ChatMessage.getSpeaker({ actor: this, token: this.token }), - type: messageStyles.OTHER, + type: CONST.CHAT_MESSAGE_STYLES.OTHER, user: game.user.id, }); @@ -1489,15 +1487,13 @@ export default class ActorSD extends Actor { const content = await renderTemplate(template, cardData); - const messageStyles = shadowdark.utils.getMessageStyles(); - await ChatMessage.create({ title, content, flags: { "core.canPopout": true }, flavor: title, speaker: ChatMessage.getSpeaker({actor: this, token: this.token}), - type: messageStyles.OTHER, + type: CONST.CHAT_MESSAGE_STYLES.OTHER, user: game.user.id, }); diff --git a/system/src/documents/ItemSD.mjs b/system/src/documents/ItemSD.mjs index 16303083..d113a514 100644 --- a/system/src/documents/ItemSD.mjs +++ b/system/src/documents/ItemSD.mjs @@ -97,13 +97,11 @@ export default class ItemSD extends Item { const html = await renderTemplate(template, templateData); - const messageStyles = shadowdark.utils.getMessageStyles(); - const chatData = { user: game.user.id, - type: messageStyles.OTHER, + type: CONST.CHAT_MESSAGE_STYLES.OTHER, content: html, - flavor: this.system.chatFlavor || this.name, + flavor: this.name, speaker: ChatMessage.getSpeaker({actor: this.actor, token}), flags: { "core.canPopout": true }, }; diff --git a/system/src/system/ChatSD.mjs b/system/src/system/ChatSD.mjs index 998b044b..292280e0 100644 --- a/system/src/system/ChatSD.mjs +++ b/system/src/system/ChatSD.mjs @@ -12,16 +12,15 @@ export default class ChatSD { mode = game.settings.get("core", "rollMode"); } - const messageStyles = shadowdark.utils.getMessageStyles(); - const chatData = { - user: game.user.id, + content: html, + flags: { "core.canPopout": true }, + rollMode: mode, speaker: ChatMessage.getSpeaker({ actor: actor, }), - rollMode: mode, - content: html, - type: messageStyles.OTHER, + type: CONST.CHAT_MESSAGE_STYLES.OTHER, + user: game.user.id, }; ChatMessage.applyRollMode(chatData, mode); diff --git a/system/src/utils/UtilitySD.mjs b/system/src/utils/UtilitySD.mjs index 3361777a..93792bd9 100644 --- a/system/src/utils/UtilitySD.mjs +++ b/system/src/utils/UtilitySD.mjs @@ -179,15 +179,6 @@ export default class UtilitySD { } - static getMessageStyles() { - const messageStyles = this.foundryMinVersion(12) - ? CONST.CHAT_MESSAGE_STYLES - : CONST.CHAT_MESSAGE_TYPES; - - return messageStyles; - } - - static getNextDieInList(die, allDice) { if (die === false) return die; From dcdf8c8088e4eaf4c52f96d0e932ba3a58516eda Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 11:50:14 +0000 Subject: [PATCH 163/182] update release notes --- RELEASE_NOTES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 977c1e04..3e6e96a3 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -27,6 +27,7 @@ * [#930] Class Abilities can't be used if they have no associated skill roll * [#936] Character Generator: Don't display empty alignment for Deities that don't have one * [#938] Unecessary line breaks in Farsight talent descriptions +* [#953] Dice So Nice not honouring roll modes in Shadowdark ## Chores * [#911] Replaced compendium art mapping with default Foundry method. *(Settings for compendium art mapping are now found in *Settings > Core > Compendium Art*)* From 674b6613723c6fdf42bad18a424e4022800907d6 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 14:44:44 +0000 Subject: [PATCH 164/182] closes #955 --- RELEASE_NOTES.md | 1 + system/templates/actors/player/talents.hbs | 55 +++++++++++++++++----- 2 files changed, 44 insertions(+), 12 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 3e6e96a3..fcec82a5 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -28,6 +28,7 @@ * [#936] Character Generator: Don't display empty alignment for Deities that don't have one * [#938] Unecessary line breaks in Farsight talent descriptions * [#953] Dice So Nice not honouring roll modes in Shadowdark +* [#955] Chat message icon missing on hovering over Ancestry and Level talents on character sheet ## Chores * [#911] Replaced compendium art mapping with default Foundry method. *(Settings for compendium art mapping are now found in *Settings > Core > Compendium Art*)* diff --git a/system/templates/actors/player/talents.hbs b/system/templates/actors/player/talents.hbs index 1ef904d0..4af4a4c0 100644 --- a/system/templates/actors/player/talents.hbs +++ b/system/templates/actors/player/talents.hbs @@ -11,18 +11,31 @@ }}
      1. -
        {{localize "SHADOWDARK.item_type.talent"}}
        -
        Type
        +
        + {{localize "SHADOWDARK.item_type.talent"}} +
        +
        + {{localize "SHADOWDARK.sheet.player.inventory.type.label"}} +
      2. {{#each talents.ancestry.items}}
      3. +
        -
        - {{this.name}} -
        Ancestry
        + +
        + + {{this.name}} + +
        + {{localize "SHADOWDARK.talent.class.ancestry"}} +
      4. {{/each}} @@ -30,12 +43,19 @@
      5. +
        -
        - {{this.name}} -
        Class
        + + {{this.name}} + +
        + {{localize "SHADOWDARK.talent.class.class"}} +
      6. {{/each}}
      @@ -50,15 +70,24 @@ }}
      1. -
        {{localize "SHADOWDARK.item_type.talent"}}
        -
        {{localize "SHADOWDARK.talent.level_gained"}}
        +
        + {{localize "SHADOWDARK.item_type.talent"}} +
        +
        + {{localize "SHADOWDARK.talent.level_gained"}} +
      2. {{#each talents.level.items}}
      3. -
        +
        + +
        {{this.name}} {{#ifEq this.system.talentClass "patronBoon"}} @@ -68,7 +97,9 @@ > {{/ifEq}} -
        {{this.system.level}}
        +
        + {{this.system.level}} +
      4. {{/each}}
      From 5dfffe48a9df21d454dc81bd913a1a8551ad5d27 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 16:38:48 +0000 Subject: [PATCH 165/182] closes #952 --- RELEASE_NOTES.md | 2 +- i18n/en.yaml | 2 +- system/src/apps/RequestCheckSD.mjs | 6 +- system/src/documents/ActorSD.mjs | 112 +++++++++----------------- system/src/documents/ItemSD.mjs | 62 ++++++-------- system/src/system/ChatSD.mjs | 16 +++- system/templates/chat/use-ability.hbs | 22 ++++- 7 files changed, 104 insertions(+), 118 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index fcec82a5..3481560c 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -27,6 +27,7 @@ * [#930] Class Abilities can't be used if they have no associated skill roll * [#936] Character Generator: Don't display empty alignment for Deities that don't have one * [#938] Unecessary line breaks in Farsight talent descriptions +* [#952] NPC Special Attacks always posted to chat in public * [#953] Dice So Nice not honouring roll modes in Shadowdark * [#955] Chat message icon missing on hovering over Ancestry and Level talents on character sheet @@ -40,7 +41,6 @@ *Many thanks to **AdamsGH** for contributing **Russian** translation data.* - --- # v3.1.3 diff --git a/i18n/en.yaml b/i18n/en.yaml index 57ea5607..c3d77544 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -185,7 +185,7 @@ SHADOWDARK.chat.spell_learn.failure: "{name} failed to learn anything from the s SHADOWDARK.chat.spell_learn.success: "{name} successfully learnt the {spellName} spell" SHADOWDARK.chat.spell_learn.title: Learning Spell SHADOWDARK.chat.spell_roll.title: "{name}, DC {spellDC}" -SHADOWDARK.chat.use_ability.failure: "{name} failed to used the {ability} ability" +SHADOWDARK.chat.use_ability.failure: "{name} failed to use the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} successfully used the {ability} ability" SHADOWDARK.chat.use_ability.title: "Using Ability" SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG diff --git a/system/src/apps/RequestCheckSD.mjs b/system/src/apps/RequestCheckSD.mjs index a55d7ccf..d48abaa4 100644 --- a/system/src/apps/RequestCheckSD.mjs +++ b/system/src/apps/RequestCheckSD.mjs @@ -45,8 +45,10 @@ export default class RequestCheckSD extends FormApplication { shadowdark.chat.renderRollRequestMessage( await shadowdark.utils.getCurrentActor(), { - title: game.i18n.localize("SHADOWDARK.check.requesting"), - body: `[[check ${dc} ${stat}]]`, + templateData: { + title: game.i18n.localize("SHADOWDARK.check.requesting"), + body: `[[check ${dc} ${stat}]]`, + }, }, CONST.DICE_ROLL_MODES.PUBLIC ); diff --git a/system/src/documents/ActorSD.mjs b/system/src/documents/ActorSD.mjs index 08368e69..b29987e7 100644 --- a/system/src/documents/ActorSD.mjs +++ b/system/src/documents/ActorSD.mjs @@ -1412,6 +1412,26 @@ export default class ActorSD extends Actor { async useAbility(itemId, options={}) { const item = this.items.get(itemId); + + if (item.type === "NPC Feature") item.displayCard(); + + // If the ability has limited uses, handle that first + if (item.system.limitedUses) { + if (item.system.uses.available <= 0) { + return ui.notifications.error( + game.i18n.format("SHADOWDARK.error.class_ability.no-uses-remaining"), + {permanent: false} + ); + } + else { + const newUsesAvailable = item.system.uses.available - 1; + + item.update({ + "system.uses.available": Math.max(0, newUsesAvailable), + }); + } + } + const abilityDescription = await TextEditor.enrichHTML( item.system.description, { @@ -1420,86 +1440,32 @@ export default class ActorSD extends Actor { relativeTo: this, } ); - // Default message values - let title = ""; - let message = ""; - let success = true; - - // NPC features - no title or checks required - if (item.type === "NPC Feature") { - message = `${abilityDescription}`; - } - else { - title = game.i18n.localize("SHADOWDARK.chat.use_ability.title"); - - // does ability use on a roll check? - if (item.system.ability) { - options = foundry.utils.mergeObject({target: item.system.dc}, options); - const result = await this.rollAbility( - item.system.ability, - options - ); - - success = result?.rolls?.main?.success ?? false; - } - - // does ability have limited uses? - if (item.system.limitedUses) { - if (item.system.uses.available > 0) { - item.update({ - "system.uses.available": item.system.uses.available - 1, - }); - } - else { - success = false; - ui.notifications.error( - game.i18n.format("SHADOWDARK.error.class_ability.no-uses-remaining"), - {permanent: false} - ); - } - } - - const messageType = success - ? "SHADOWDARK.chat.use_ability.success" - : "SHADOWDARK.chat.use_ability.failure"; - message = game.i18n.format( - messageType, - { - name: this.name, - ability: item.name, - } + let success = true; + // does ability use on a roll check? + if (item.system.ability) { + options = foundry.utils.mergeObject({target: item.system.dc}, options); + const result = await this.rollAbility( + item.system.ability, + options ); - if (success) { - message = `

      ${message}

      ${abilityDescription}`; + success = result?.rolls?.main?.success ?? false; + + if (!success && item.system.loseOnFailure) { + item.update({"system.lost": true}); } } - // construct and create chat message - const cardData = { - actor: this, - item: item, - message, - }; - - let template = "systems/shadowdark/templates/chat/use-ability.hbs"; - - const content = await renderTemplate(template, cardData); - - await ChatMessage.create({ - title, - content, - flags: { "core.canPopout": true }, - flavor: title, - speaker: ChatMessage.getSpeaker({actor: this, token: this.token}), - type: CONST.CHAT_MESSAGE_STYLES.OTHER, - user: game.user.id, + return shadowdark.chat.renderUseAbilityMessage(this.actor, { + flavor: game.i18n.localize("SHADOWDARK.chat.use_ability.title"), + templateData: { + abilityDescription, + actor: this, + item: item, + success, + }, }); - - if (!success && item.system.loseOnFailure) { - item.update({"system.lost": true}); - } } diff --git a/system/src/documents/ItemSD.mjs b/system/src/documents/ItemSD.mjs index d113a514..2eebbcf4 100644 --- a/system/src/documents/ItemSD.mjs +++ b/system/src/documents/ItemSD.mjs @@ -10,10 +10,12 @@ export default class ItemSD extends Item { ].includes(this.type); } + get typeSlug() { return this.type.slugify(); } + get usesAmmunition() { return (game.settings.get("shadowdark", "autoConsumeAmmunition") && this.isOwned @@ -55,12 +57,14 @@ export default class ItemSD extends Item { } } + availableAmmunition() { if (this.usesAmmunition) { return this.actor.ammunitionItems(this.system.ammoClass); } } + async getChatData(htmlOptions={}) { const description = await this.getEnrichedDescription(); @@ -87,33 +91,15 @@ export default class ItemSD extends Item { return data; } - async displayCard(options={}) { - // Render the chat card template - const token = this.actor.token; - - const templateData = await this.getChatData(); - - const template = this.getItemTemplate("systems/shadowdark/templates/chat/item"); - - const html = await renderTemplate(template, templateData); - - const chatData = { - user: game.user.id, - type: CONST.CHAT_MESSAGE_STYLES.OTHER, - content: html, - flavor: this.name, - speaker: ChatMessage.getSpeaker({actor: this.actor, token}), - flags: { "core.canPopout": true }, - }; - - ChatMessage.applyRollMode(chatData, options.rollMode ?? game.settings.get("core", "rollMode")); - - const card = (options.createMessage !== false) - ? await ChatMessage.create(chatData) : chatData; - return card; + async displayCard(options={}) { + shadowdark.chat.renderItemCardMessage(this.actor, { + template: this.getItemTemplate("systems/shadowdark/templates/chat/item"), + templateData: await this.getChatData(), + }); } + async getBaseItemName() { if (this.type === "Armor") { if (this.system.baseArmor === "") return ""; @@ -159,6 +145,7 @@ export default class ItemSD extends Item { return await renderTemplate(templatePath, data); } + async getEnrichedDescription() { return await TextEditor.enrichHTML( this.system.description, @@ -168,6 +155,7 @@ export default class ItemSD extends Item { ); } + getItemTemplate(basePath) { switch (this.type) { case "Armor": @@ -185,19 +173,20 @@ export default class ItemSD extends Item { } } + lightRemainingString() { if (this.type !== "Basic" && !this.system.light.isSource) return; - const timeRemaining = Math.ceil( - this.system.light.remainingSecs / 60 - ); - if (this.system.light.remainingSecs < 60) { this.lightSourceTimeRemaining = game.i18n.localize( "SHADOWDARK.inventory.item.light_seconds_remaining" ); } else { + const timeRemaining = Math.ceil( + this.system.light.remainingSecs / 60 + ); + this.lightSourceTimeRemaining = game.i18n.format( "SHADOWDARK.inventory.item.light_remaining", { timeRemaining } @@ -205,31 +194,36 @@ export default class ItemSD extends Item { } } + async reduceAmmunition(amount) { const newAmount = Math.max(0, this.system.quantity - amount); this.update({"system.quantity": newAmount}); } + setLightRemaining(remainingSeconds) { this.update({"system.light.remainingSecs": remainingSeconds}); } + /* -------------------------------------------- */ /* Roll Methods */ /* -------------------------------------------- */ - async rollNpcAttack(parts, data, options={}) { - options.dialogTemplate = "systems/shadowdark/templates/dialog/roll-npc-attack-dialog.hbs"; + async rollItem(parts, data, options={}) { + options.dialogTemplate = "systems/shadowdark/templates/dialog/roll-item-dialog.hbs"; options.chatCardTemplate = "systems/shadowdark/templates/chat/item-card.hbs"; await CONFIG.DiceSD.RollDialog(parts, data, options); } - async rollItem(parts, data, options={}) { - options.dialogTemplate = "systems/shadowdark/templates/dialog/roll-item-dialog.hbs"; + + async rollNpcAttack(parts, data, options={}) { + options.dialogTemplate = "systems/shadowdark/templates/dialog/roll-npc-attack-dialog.hbs"; options.chatCardTemplate = "systems/shadowdark/templates/chat/item-card.hbs"; await CONFIG.DiceSD.RollDialog(parts, data, options); } + async rollSpell(parts, data, options={}) { options.dialogTemplate = "systems/shadowdark/templates/dialog/roll-spell-dialog.hbs"; options.chatCardTemplate = "systems/shadowdark/templates/chat/item-card.hbs"; @@ -250,9 +244,6 @@ export default class ItemSD extends Item { return roll; } - /* -------------------------------------------- */ - /* Methods */ - /* -------------------------------------------- */ async hasProperty(property) { property = property.slugify(); @@ -364,7 +355,6 @@ export default class ItemSD extends Item { return propertyItems; } - // Duration getters /** * Returns the total duration depending on the type diff --git a/system/src/system/ChatSD.mjs b/system/src/system/ChatSD.mjs index 292280e0..ee215594 100644 --- a/system/src/system/ChatSD.mjs +++ b/system/src/system/ChatSD.mjs @@ -6,7 +6,7 @@ export default class ChatSD { template, mode ) { - const html = await renderTemplate(template, data); + const html = await renderTemplate(template, data.templateData); if (!mode) { mode = game.settings.get("core", "rollMode"); @@ -15,11 +15,12 @@ export default class ChatSD { const chatData = { content: html, flags: { "core.canPopout": true }, + flavor: data.flavor ?? undefined, rollMode: mode, speaker: ChatMessage.getSpeaker({ actor: actor, }), - type: CONST.CHAT_MESSAGE_STYLES.OTHER, + type: data.type ?? CONST.CHAT_MESSAGE_STYLES.OTHER, user: game.user.id, }; @@ -35,10 +36,21 @@ export default class ChatSD { ); } + static async renderItemCardMessage(actor, data, mode) { + this._renderChatMessage(actor, data, data.template, mode); + } + static async renderRollRequestMessage(actor, data, mode) { this._renderChatMessage(actor, data, "systems/shadowdark/templates/chat/roll-request.hbs", mode ); } + + static async renderUseAbilityMessage(actor, data, mode) { + this._renderChatMessage(actor, data, + "systems/shadowdark/templates/chat/use-ability.hbs", + mode + ); + } } diff --git a/system/templates/chat/use-ability.hbs b/system/templates/chat/use-ability.hbs index 4bcd4677..4b4ba67c 100644 --- a/system/templates/chat/use-ability.hbs +++ b/system/templates/chat/use-ability.hbs @@ -4,11 +4,27 @@ data-item-id="{{item._id}}" >
      - -

      {{item.name}}

      + +

      + {{item.name}} +

      - {{{message}}} + + {{#if success}} + {{localize "SHADOWDARK.chat.use_ability.success" + ability=item.name + name=actor.name + }} + {{else}} + {{localize "SHADOWDARK.chat.use_ability.failure" + ability=item.name + name=actor.name + }} + {{/if}} + + + {{{abilityDescription}}}
      From de94d34a672d58b114ca3869925ff5c5ef30b39d Mon Sep 17 00:00:00 2001 From: Prototype Date: Mon, 18 Nov 2024 09:30:58 -0800 Subject: [PATCH 166/182] Add check for characters without name --- system/src/apps/ShadowdarklingImporterSD.mjs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/system/src/apps/ShadowdarklingImporterSD.mjs b/system/src/apps/ShadowdarklingImporterSD.mjs index ecb9c1e8..67b19032 100644 --- a/system/src/apps/ShadowdarklingImporterSD.mjs +++ b/system/src/apps/ShadowdarklingImporterSD.mjs @@ -230,6 +230,9 @@ export default class ShadowdarklingImporterSD extends FormApplication { * @returns {ActorSD} */ async _importActor(json) { + // name is a required field + if (!json.name) json.name = "Unnamed"; + // set template for new actor this.importedActor = { name: json.name, From e19ec27afd2515fb79e568d9721224531a8e220b Mon Sep 17 00:00:00 2001 From: Prototype Date: Mon, 18 Nov 2024 09:34:05 -0800 Subject: [PATCH 167/182] Release Notes --- RELEASE_NOTES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 3481560c..7c35cff6 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -30,6 +30,7 @@ * [#952] NPC Special Attacks always posted to chat in public * [#953] Dice So Nice not honouring roll modes in Shadowdark * [#955] Chat message icon missing on hovering over Ancestry and Level talents on character sheet +* [#956] Can't import unnamed characters from Shadowdarklings ## Chores * [#911] Replaced compendium art mapping with default Foundry method. *(Settings for compendium art mapping are now found in *Settings > Core > Compendium Art*)* From a22729bbc4bf15c23b8420854ed8aff45f540d8b Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 18:02:18 +0000 Subject: [PATCH 168/182] New translations en.yaml (Russian) --- i18n/ru.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ru.yaml b/i18n/ru.yaml index d424643d..11b8d655 100644 --- a/i18n/ru.yaml +++ b/i18n/ru.yaml @@ -185,7 +185,7 @@ SHADOWDARK.chat.spell_learn.failure: "{name} не удалось ничему н SHADOWDARK.chat.spell_learn.success: "{name} успешно выучил заклинание {spellName}" SHADOWDARK.chat.spell_learn.title: Изучение заклинания SHADOWDARK.chat.spell_roll.title: "{name}, СЛ {spellDC}" -SHADOWDARK.chat.use_ability.failure: "{name} не удалось использовать способность {ability}" +SHADOWDARK.chat.use_ability.failure: "{name} failed to use the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} успешно использовал способность {ability}" SHADOWDARK.chat.use_ability.title: "Использование способности" SHADOWDARK.chat.welcome_message.arcane_library_button: Магазин Shadowdark RPG From b8e01291741dfa1a0789ace4cdd570acec1e4a9e Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 18:02:19 +0000 Subject: [PATCH 169/182] New translations en.yaml (French) --- i18n/fr.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr.yaml b/i18n/fr.yaml index 64d0ed53..482b3212 100644 --- a/i18n/fr.yaml +++ b/i18n/fr.yaml @@ -185,7 +185,7 @@ SHADOWDARK.chat.spell_learn.failure: "{name} n'a pas réussi à apprendre quoi q SHADOWDARK.chat.spell_learn.success: "{name} a bien appris le sort {spellName}" SHADOWDARK.chat.spell_learn.title: Apprentissage de Sort SHADOWDARK.chat.spell_roll.title: "Lancement de {name} au rang {tier} avec DD de sort {spellDC}" -SHADOWDARK.chat.use_ability.failure: "{name} a échoué à utiliser la capacité {ability}" +SHADOWDARK.chat.use_ability.failure: "{name} failed to use the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} a utilisé la capacité {ability} avec succès" SHADOWDARK.chat.use_ability.title: "Utiliser une capacité" SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG From d9961fa85378ca80833151c54b3eb3e9d71b473a Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 18:02:21 +0000 Subject: [PATCH 170/182] New translations en.yaml (Spanish) --- i18n/es.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/es.yaml b/i18n/es.yaml index 1a86f12b..977e54ef 100644 --- a/i18n/es.yaml +++ b/i18n/es.yaml @@ -185,7 +185,7 @@ SHADOWDARK.chat.spell_learn.failure: "{name} no ha podido aprender nada del perg SHADOWDARK.chat.spell_learn.success: "{name} aprendió correctamente el hechizo {spellName}" SHADOWDARK.chat.spell_learn.title: Aprender hechizo SHADOWDARK.chat.spell_roll.title: "{name}, CD {spellDC}" -SHADOWDARK.chat.use_ability.failure: "{name} failed to used the {ability} ability" +SHADOWDARK.chat.use_ability.failure: "{name} failed to use the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} successfully used the {ability} ability" SHADOWDARK.chat.use_ability.title: "Usando habilidad" SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG From 0f278993ff2809cc79ea7c601cd0d0065a190505 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 18:02:22 +0000 Subject: [PATCH 171/182] New translations en.yaml (German) --- i18n/de.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/de.yaml b/i18n/de.yaml index 8ddf50a3..50e3590a 100644 --- a/i18n/de.yaml +++ b/i18n/de.yaml @@ -185,7 +185,7 @@ SHADOWDARK.chat.spell_learn.failure: "{name} konnte nichts von der Schriftrolle SHADOWDARK.chat.spell_learn.success: "{name} hat den {spellName} Zauber erfolgreich gelernt" SHADOWDARK.chat.spell_learn.title: Lerne Zauber SHADOWDARK.chat.spell_roll.title: "Zaubere {name} auf Stufe {tier} mit Zauber-SK {spellDC}" -SHADOWDARK.chat.use_ability.failure: "{name} failed to used the {ability} ability" +SHADOWDARK.chat.use_ability.failure: "{name} failed to use the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} successfully used the {ability} ability" SHADOWDARK.chat.use_ability.title: "Using Ability" SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG From cecc51859b83f5162ceff1fae6d99875aee75837 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 18:02:23 +0000 Subject: [PATCH 172/182] New translations en.yaml (Finnish) --- i18n/fi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fi.yaml b/i18n/fi.yaml index 1f6f79f0..fbb097ed 100644 --- a/i18n/fi.yaml +++ b/i18n/fi.yaml @@ -185,7 +185,7 @@ SHADOWDARK.chat.spell_learn.failure: "{name} ei oppinut taikakääröstä mitä SHADOWDARK.chat.spell_learn.success: "{name} onnistuneesti oppi {spellName} loitsun" SHADOWDARK.chat.spell_learn.title: Opettelee loitsua SHADOWDARK.chat.spell_roll.title: "Loihditaan {name} tasolla {tier} jolloin vaikeusaste on {spellDC}" -SHADOWDARK.chat.use_ability.failure: "{name} epäonnistui käyttämään {ability} kykyä" +SHADOWDARK.chat.use_ability.failure: "{name} failed to use the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} onnistui {ability} kyvyssään" SHADOWDARK.chat.use_ability.title: "Kyvyn käyttö" SHADOWDARK.chat.welcome_message.arcane_library_button: Selaa Shadowdark RPG tuotteita From 8838c9a6a699ff50aafe387828545d4266409f7e Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 18:02:26 +0000 Subject: [PATCH 173/182] New translations en.yaml (Korean) --- i18n/ko.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ko.yaml b/i18n/ko.yaml index 866f2fae..4c2e9768 100644 --- a/i18n/ko.yaml +++ b/i18n/ko.yaml @@ -185,7 +185,7 @@ SHADOWDARK.chat.spell_learn.failure: "{name} 두루마리로 주문 배우기를 SHADOWDARK.chat.spell_learn.success: "{name} 성공적으로 {spellName} 주문을 배웠습니다" SHADOWDARK.chat.spell_learn.title: 주문 배우기 SHADOWDARK.chat.spell_roll.title: "{name}, DC {spellDC}" -SHADOWDARK.chat.use_ability.failure: "{name} failed to used the {ability} ability" +SHADOWDARK.chat.use_ability.failure: "{name} failed to use the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} successfully used the {ability} ability" SHADOWDARK.chat.use_ability.title: "Using Ability" SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG From 2edaee5e2f94cce0c70548d5f20d728979226f79 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 18:02:27 +0000 Subject: [PATCH 174/182] New translations en.yaml (Swedish) --- i18n/sv.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/sv.yaml b/i18n/sv.yaml index 62fa3257..3b021d8f 100644 --- a/i18n/sv.yaml +++ b/i18n/sv.yaml @@ -185,7 +185,7 @@ SHADOWDARK.chat.spell_learn.failure: "{name} misslyckades lära sig något från SHADOWDARK.chat.spell_learn.success: "{name} lärde sig besvärjelsen {spellName}" SHADOWDARK.chat.spell_learn.title: Lär sig besvärjelse SHADOWDARK.chat.spell_roll.title: "Kastar {name} som grad {tier} med svårighetsgrad {spellDC}" -SHADOWDARK.chat.use_ability.failure: "{name} misslyckades med att använda {ability} förmågan" +SHADOWDARK.chat.use_ability.failure: "{name} failed to use the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} lyckades med {ability} förmågan" SHADOWDARK.chat.use_ability.title: "Använder förmåga" SHADOWDARK.chat.welcome_message.arcane_library_button: Shop Shadowdark RPG From 41e5922a0c4ea73b68c126c90fa88a889496d663 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 18:02:29 +0000 Subject: [PATCH 175/182] New translations en.yaml (Portuguese, Brazilian) --- i18n/pt_BR.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/pt_BR.yaml b/i18n/pt_BR.yaml index 1d0aca2e..49d933ff 100644 --- a/i18n/pt_BR.yaml +++ b/i18n/pt_BR.yaml @@ -185,7 +185,7 @@ SHADOWDARK.chat.spell_learn.failure: "{name} não conseguiu aprender o pergaminh SHADOWDARK.chat.spell_learn.success: "{name} aprendeu com sucesso a magia {spellName}" SHADOWDARK.chat.spell_learn.title: Aprendendo Magia SHADOWDARK.chat.spell_roll.title: "{name}, CD {spellDC}" -SHADOWDARK.chat.use_ability.failure: "{name} falhou em usar a habilidade {ability}" +SHADOWDARK.chat.use_ability.failure: "{name} failed to use the {ability} ability" SHADOWDARK.chat.use_ability.success: "{name} usou a habilidade {ability} com sucesso" SHADOWDARK.chat.use_ability.title: "Usando Habilidade" SHADOWDARK.chat.welcome_message.arcane_library_button: Compre o RPG Shadowdark From d1af60da9d42238c0835794ae542786b4a60a331 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 18:57:19 +0000 Subject: [PATCH 176/182] closes #909 --- .../breakable__e5RpI0crHweCVt8B.json | 18 ---------- .../returning__R9rw4pKdIHfJJoyJ.json | 18 ---------- .../_1_ac_dual_wield__cGGttIknipaR4UIo.json | 33 +++++++++++++++++++ .../_1_ac_dual_wield__quYUUqTTAX3QlAGa.json | 4 ++- 4 files changed, 36 insertions(+), 37 deletions(-) delete mode 100644 data/packs/properties.db/breakable__e5RpI0crHweCVt8B.json delete mode 100644 data/packs/properties.db/returning__R9rw4pKdIHfJJoyJ.json create mode 100644 data/packs/talents.db/_1_ac_dual_wield__cGGttIknipaR4UIo.json diff --git a/data/packs/properties.db/breakable__e5RpI0crHweCVt8B.json b/data/packs/properties.db/breakable__e5RpI0crHweCVt8B.json deleted file mode 100644 index 4a0befeb..00000000 --- a/data/packs/properties.db/breakable__e5RpI0crHweCVt8B.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "_id": "e5RpI0crHweCVt8B", - "_key": "!items!e5RpI0crHweCVt8B", - "effects": [ - ], - "folder": "vFaoMFPGDGlKn4gF", - "img": "icons/sundries/documents/document-torn-diagram-tan.webp", - "name": "Breakable", - "system": { - "description": "

      This weapon breaks on a natural 1 attack roll.

      ", - "itemType": "weapon", - "predefinedEffects": "", - "source": { - "title": "cursed-scroll-4" - } - }, - "type": "Property" -} diff --git a/data/packs/properties.db/returning__R9rw4pKdIHfJJoyJ.json b/data/packs/properties.db/returning__R9rw4pKdIHfJJoyJ.json deleted file mode 100644 index fe054e1b..00000000 --- a/data/packs/properties.db/returning__R9rw4pKdIHfJJoyJ.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "_id": "R9rw4pKdIHfJJoyJ", - "_key": "!items!R9rw4pKdIHfJJoyJ", - "effects": [ - ], - "folder": "vFaoMFPGDGlKn4gF", - "img": "icons/sundries/documents/document-torn-diagram-tan.webp", - "name": "Returning", - "system": { - "description": "

      On a missed ranged attack, this weapon returns to the thrower.

      ", - "itemType": "weapon", - "predefinedEffects": "", - "source": { - "title": "cursed-scroll-4" - } - }, - "type": "Property" -} diff --git a/data/packs/talents.db/_1_ac_dual_wield__cGGttIknipaR4UIo.json b/data/packs/talents.db/_1_ac_dual_wield__cGGttIknipaR4UIo.json new file mode 100644 index 00000000..60eb45e8 --- /dev/null +++ b/data/packs/talents.db/_1_ac_dual_wield__cGGttIknipaR4UIo.json @@ -0,0 +1,33 @@ +{ + "_id": "cGGttIknipaR4UIo", + "_key": "!items.effects!quYUUqTTAX3QlAGa.cGGttIknipaR4UIo", + "changes": [ + { + "key": "system.bonuses.acBonus", + "mode": 2, + "priority": null, + "value": "1" + } + ], + "description": "", + "disabled": true, + "duration": { + "combat": null, + "rounds": null, + "seconds": null, + "startRound": null, + "startTime": null, + "startTurn": null, + "turns": null + }, + "img": "icons/skills/melee/swords-parry-block-blue.webp", + "name": "+1 AC Dual Wield", + "origin": "Compendium.shadowdark.talents.Item.quYUUqTTAX3QlAGa", + "statuses": [ + ], + "system": { + }, + "tint": "#ffffff", + "transfer": true, + "type": "base" +} diff --git a/data/packs/talents.db/_1_ac_dual_wield__quYUUqTTAX3QlAGa.json b/data/packs/talents.db/_1_ac_dual_wield__quYUUqTTAX3QlAGa.json index 3ae86315..68054ae2 100644 --- a/data/packs/talents.db/_1_ac_dual_wield__quYUUqTTAX3QlAGa.json +++ b/data/packs/talents.db/_1_ac_dual_wield__quYUUqTTAX3QlAGa.json @@ -2,12 +2,14 @@ "_id": "quYUUqTTAX3QlAGa", "_key": "!items!quYUUqTTAX3QlAGa", "effects": [ + "cGGttIknipaR4UIo" ], "folder": "Z4zDnZoxthjHXo5V", "img": "icons/skills/melee/swords-parry-block-blue.webp", "name": "+1 AC Dual Wield", "system": { "bonuses": { + "acBonus": "1", "critical": { "failureThreshold": 1, "multiplier": 2, @@ -17,7 +19,7 @@ "meleeDamageBonus": "1", "rangedAttackBonus": "1" }, - "description": "

      You gain +1 to your AC when wielding a melee weapon in each hand

      ", + "description": "

      You gain +1 to your AC when wielding a melee weapon in each hand.

      Note: Remember to toggle the +1 AC Dual Wield Active Effect on/off in the Effects tab of your character sheet when needed.

      ", "level": 0, "magicItem": false, "predefinedEffects": "", From d9b96feb316818730a8dcc884ac23d281ccbc026 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 19:00:21 +0000 Subject: [PATCH 177/182] closes #960 --- RELEASE_NOTES.md | 1 + .../class-abilities.db/sea_wolf__q7zkgCiSTr8Xxshe.json | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 data/packs/class-abilities.db/sea_wolf__q7zkgCiSTr8Xxshe.json diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 3481560c..b318c70a 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -30,6 +30,7 @@ * [#952] NPC Special Attacks always posted to chat in public * [#953] Dice So Nice not honouring roll modes in Shadowdark * [#955] Chat message icon missing on hovering over Ancestry and Level talents on character sheet +* [#960] Add missing Berzerk class ability for Sea Wolf class ## Chores * [#911] Replaced compendium art mapping with default Foundry method. *(Settings for compendium art mapping are now found in *Settings > Core > Compendium Art*)* diff --git a/data/packs/class-abilities.db/sea_wolf__q7zkgCiSTr8Xxshe.json b/data/packs/class-abilities.db/sea_wolf__q7zkgCiSTr8Xxshe.json new file mode 100644 index 00000000..7fee5857 --- /dev/null +++ b/data/packs/class-abilities.db/sea_wolf__q7zkgCiSTr8Xxshe.json @@ -0,0 +1,10 @@ +{ + "_id": "q7zkgCiSTr8Xxshe", + "_key": "!folders!q7zkgCiSTr8Xxshe", + "color": "#22252b", + "description": "", + "folder": null, + "name": "Sea Wolf", + "sorting": "a", + "type": "Item" +} From 297eb6471399c0c4bb866bc1a7932162a6801e1d Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 19:02:50 +0000 Subject: [PATCH 178/182] closes #960 --- RELEASE_NOTES.md | 1 + .../berserk__so8ytbZuqmNvppI7.json | 26 ++++++++++++++++++ .../berserk__kYzSScmkTg4o1DKM.json | 27 +++++++++++++++++++ ...ell_effect__berserk__sfeg7jRt0oW5qXO4.json | 1 + 4 files changed, 55 insertions(+) create mode 100644 data/packs/class-abilities.db/berserk__so8ytbZuqmNvppI7.json create mode 100644 data/packs/spell-effects.db/berserk__kYzSScmkTg4o1DKM.json diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index b318c70a..b2dac620 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -8,6 +8,7 @@ * [#881] Support rolling on a character's Patron's Boon table if necessary in the Level Up app * [#901] Added Russian as a partially complete system language. * [#908] Add rollable dice to Cure Wounds spell that includes the necessary calculations *(Many thanks to **nschoenwald** for contributing to this issue)* +* [#909] Added +1 AC Dual Wield active effect to talent of same name which can be toggled on/off as needed on the character sheet now * [#910] Implemented automatic check roll links and added new macro to launch the check request dialog. * example syntax: `[[check 12 str]]` or `[[request 15 int]]` * [#920] Show tooltips on weapon and armor properties when showing expanded inline view in inventory diff --git a/data/packs/class-abilities.db/berserk__so8ytbZuqmNvppI7.json b/data/packs/class-abilities.db/berserk__so8ytbZuqmNvppI7.json new file mode 100644 index 00000000..c6abb86b --- /dev/null +++ b/data/packs/class-abilities.db/berserk__so8ytbZuqmNvppI7.json @@ -0,0 +1,26 @@ +{ + "_id": "so8ytbZuqmNvppI7", + "_key": "!items!so8ytbZuqmNvppI7", + "effects": [ + ], + "folder": "q7zkgCiSTr8Xxshe", + "img": "icons/tools/navigation/map-chart-tan.webp", + "name": "Berserk", + "system": { + "ability": "", + "dc": 10, + "description": "

      1/day, go berserk: immune to damage for 3 rounds.

      ", + "group": "Sea Wolf", + "limitedUses": true, + "loseOnFailure": false, + "lost": false, + "source": { + "title": "" + }, + "uses": { + "available": 1, + "max": 1 + } + }, + "type": "Class Ability" +} diff --git a/data/packs/spell-effects.db/berserk__kYzSScmkTg4o1DKM.json b/data/packs/spell-effects.db/berserk__kYzSScmkTg4o1DKM.json new file mode 100644 index 00000000..8e44434f --- /dev/null +++ b/data/packs/spell-effects.db/berserk__kYzSScmkTg4o1DKM.json @@ -0,0 +1,27 @@ +{ + "_id": "kYzSScmkTg4o1DKM", + "_key": "!items.effects!sfeg7jRt0oW5qXO4.kYzSScmkTg4o1DKM", + "changes": [ + ], + "description": "", + "disabled": false, + "duration": { + "combat": null, + "rounds": null, + "seconds": null, + "startRound": null, + "startTime": null, + "startTurn": null, + "turns": null + }, + "img": "icons/magic/movement/abstract-ribbons-red-orange.webp", + "name": "Berserk", + "origin": "Compendium.shadowdark.spell-effects.Item.sfeg7jRt0oW5qXO4", + "statuses": [ + ], + "system": { + }, + "tint": "#ffffff", + "transfer": true, + "type": "base" +} diff --git a/data/packs/spell-effects.db/spell_effect__berserk__sfeg7jRt0oW5qXO4.json b/data/packs/spell-effects.db/spell_effect__berserk__sfeg7jRt0oW5qXO4.json index 150d434d..bf2f6410 100644 --- a/data/packs/spell-effects.db/spell_effect__berserk__sfeg7jRt0oW5qXO4.json +++ b/data/packs/spell-effects.db/spell_effect__berserk__sfeg7jRt0oW5qXO4.json @@ -2,6 +2,7 @@ "_id": "sfeg7jRt0oW5qXO4", "_key": "!items!sfeg7jRt0oW5qXO4", "effects": [ + "kYzSScmkTg4o1DKM" ], "folder": null, "img": "icons/magic/movement/abstract-ribbons-red-orange.webp", From 6f7006f2b1a811842b053a5a37a2257d7018af58 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 19:03:21 +0000 Subject: [PATCH 179/182] clean up dead Talent --- data/packs/talents.db/patron__TcpWrnecaN2k2gYr.json | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 data/packs/talents.db/patron__TcpWrnecaN2k2gYr.json diff --git a/data/packs/talents.db/patron__TcpWrnecaN2k2gYr.json b/data/packs/talents.db/patron__TcpWrnecaN2k2gYr.json deleted file mode 100644 index f383eae4..00000000 --- a/data/packs/talents.db/patron__TcpWrnecaN2k2gYr.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "_id": "TcpWrnecaN2k2gYr", - "_key": "!folders!TcpWrnecaN2k2gYr", - "color": "#22252b", - "folder": null, - "name": "Patron", - "sorting": "a", - "type": "Item" -} From d271adcb58badbfe161c2aacb7dd057629a94d18 Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 19:04:15 +0000 Subject: [PATCH 180/182] closes #959 --- RELEASE_NOTES.md | 1 + .../conditions.db/effect__stimulant__MUNwczWej0Bo8x4S.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index b2dac620..f52fcb35 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -31,6 +31,7 @@ * [#952] NPC Special Attacks always posted to chat in public * [#953] Dice So Nice not honouring roll modes in Shadowdark * [#955] Chat message icon missing on hovering over Ancestry and Level talents on character sheet +* [#959] Stimulent effect description has a broken link to a Ranger talent that was converted to a Class Ability * [#960] Add missing Berzerk class ability for Sea Wolf class ## Chores diff --git a/data/packs/conditions.db/effect__stimulant__MUNwczWej0Bo8x4S.json b/data/packs/conditions.db/effect__stimulant__MUNwczWej0Bo8x4S.json index 76d45efb..f8423c45 100644 --- a/data/packs/conditions.db/effect__stimulant__MUNwczWej0Bo8x4S.json +++ b/data/packs/conditions.db/effect__stimulant__MUNwczWej0Bo8x4S.json @@ -9,7 +9,7 @@ "name": "Effect: Stimulant", "system": { "category": "effect", - "description": "

      Source: @UUID[Compendium.shadowdark.talents.dBQr9YPyhvwyPm0g]{Stimulant}

      ", + "description": "

      @UUID[Compendium.shadowdark.class-abilities.Item.EhaA5tBROfrws1Kx]{Stimulant}

      ", "duration": { "type": "rounds", "value": "10" From 1c5c8afc72151bfff6ddff6c826ba0b1533e5a5c Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Mon, 18 Nov 2024 19:57:33 +0000 Subject: [PATCH 181/182] minor fix to useAbility, duplicated chat card --- system/src/documents/ActorSD.mjs | 2 +- system/system.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/system/src/documents/ActorSD.mjs b/system/src/documents/ActorSD.mjs index b29987e7..77b97953 100644 --- a/system/src/documents/ActorSD.mjs +++ b/system/src/documents/ActorSD.mjs @@ -1413,7 +1413,7 @@ export default class ActorSD extends Actor { async useAbility(itemId, options={}) { const item = this.items.get(itemId); - if (item.type === "NPC Feature") item.displayCard(); + if (item.type === "NPC Feature") return item.displayCard(); // If the ability has limited uses, handle that first if (item.system.limitedUses) { diff --git a/system/system.json b/system/system.json index 312093f9..0b3bafee 100644 --- a/system/system.json +++ b/system/system.json @@ -2,7 +2,7 @@ "id": "shadowdark", "title": "Shadowdark RPG", "description": "A system for playing the Shadowdark RPG from Arcane Library", - "version": "3.1.3", + "version": "3.2.0", "compatibility": { "minimum": "12", "verified": "12" From db02bfe6b6c73761a886ab66472a19be233547ca Mon Sep 17 00:00:00 2001 From: Paul Maskelyne Date: Tue, 19 Nov 2024 10:26:32 +0000 Subject: [PATCH 182/182] update release notes --- RELEASE_NOTES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 0899fcc5..0a7a9793 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,4 +1,4 @@ -# vX.X.X +# v3.2.0 ## Enhancements * [#657] Consume Ammunition When Attacking With Ranged Weapons if Required