diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 7161ad756..0a7a9793e 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,3 +1,52 @@ +# v3.2.0 + +## 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 +* [#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 +* [#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 +* [#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 +* [#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 +* [#956] Can't import unnamed characters from Shadowdarklings +* [#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 +* [#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 +* [#928] Migrate "Deities" to new "Patrons and Deities" compendium +* [#929] Merged Russian language updates from Crowdin + +*Many thanks to **AdamsGH** for contributing **Russian** translation data.* + +--- + # v3.1.3 ## Enhancements diff --git a/data/macros/open-character-generator.js b/data/macros/open-character-generator.js new file mode 100644 index 000000000..3e7c905f7 --- /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/data/macros/request-a-check.js b/data/macros/request-a-check.js new file mode 100644 index 000000000..f930ba26d --- /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/class-abilities.db/berserk__so8ytbZuqmNvppI7.json b/data/packs/class-abilities.db/berserk__so8ytbZuqmNvppI7.json new file mode 100644 index 000000000..c6abb86ba --- /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/class-abilities.db/omen__pRO1kFMnFkkcYOgC.json b/data/packs/class-abilities.db/omen__pRO1kFMnFkkcYOgC.json index 4723b6a26..7b2b130fa 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 b482fdeda..3d4deedbb 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/class-abilities.db/sea_wolf__q7zkgCiSTr8Xxshe.json b/data/packs/class-abilities.db/sea_wolf__q7zkgCiSTr8Xxshe.json new file mode 100644 index 000000000..7fee58571 --- /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" +} diff --git a/data/packs/classes.db/bard__112M28Tvi2ju06BE.json b/data/packs/classes.db/bard__112M28Tvi2ju06BE.json index 6cca77b0c..5d371f837 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 dcf52ac85..fc4572317 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 fb3bc3a15..ab5c920fd 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 5f6d9022f..74d36e293 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 d6ed807ee..03b280e2e 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 e462dfca6..12cf8d230 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 da9be68c5..05be77daf 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 ee31b66e1..9948ee929 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 1a748329b..d054e8d81 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 a62bc39b0..30f83f2e3 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 46376e019..ebc01b802 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 ec916495f..98e0fa04b 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 8b8a4f33b..9132459c9 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 51b6b6670..ca9361736 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 207519a01..b0f88b295 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/conditions.db/effect__stimulant__MUNwczWej0Bo8x4S.json b/data/packs/conditions.db/effect__stimulant__MUNwczWej0Bo8x4S.json index 76d45efba..f8423c453 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" 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 b98b0f2b3..000000000 --- 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/gear.db/armor__np4FRJ73NRBEQKnS.json b/data/packs/gear.db/armor__np4FRJ73NRBEQKnS.json index 68bb5c368..eec4d938a 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 975e41cf2..bd70971da 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/arrows__tDNafhuDDdiVNUMy.json b/data/packs/gear.db/arrows__tDNafhuDDdiVNUMy.json new file mode 100644 index 000000000..d832e9d6e --- /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/backpack__oSnfz4qcWlUL6cDZ.json b/data/packs/gear.db/backpack__oSnfz4qcWlUL6cDZ.json index 42fd54fca..cdaf7abda 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 44bfe8f29..045bbbbbe 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 545b2f65d..c05bc083a 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": { @@ -34,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 01ee7bb3e..693c74a76 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, @@ -32,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 23939aee2..913b7a33d 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, @@ -32,6 +33,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/bottle__bGrhQMkhE2qwjL4j.json b/data/packs/gear.db/bottle__bGrhQMkhE2qwjL4j.json index 020fc74cc..0864e119f 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 597797b98..e2630de39 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/chainmail__DeqtKQQzI6HTYvV0.json b/data/packs/gear.db/chainmail__DeqtKQQzI6HTYvV0.json index 7e3c0f78d..13f184cc6 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 9967d0ddc..409846983 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": { @@ -34,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/crawling_kit__fJHwwn6TEfbdr8CM.json b/data/packs/gear.db/crawling_kit__fJHwwn6TEfbdr8CM.json index c9da2b271..9f634d079 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.

", "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 a40d832e7..448b7a93f 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": { @@ -34,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/crossbow_bolts__iv8fMPiRYfsN8ICy.json b/data/packs/gear.db/crossbow_bolts__iv8fMPiRYfsN8ICy.json index b5c44e13a..83193b4fe 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 7cd848451..bab66b2ac 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/curative__VjFsjhM6CZjZ04RT.json b/data/packs/gear.db/curative__VjFsjhM6CZjZ04RT.json index 2b2a9a8d5..c5d63cbfc 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 d792d65a1..f5ca8dd32 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": { @@ -34,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/flask__W2fFimb0y85wmOMb.json b/data/packs/gear.db/flask__W2fFimb0y85wmOMb.json index 77e88c752..3f588103e 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 acd42c5e1..0145f4443 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/foebane__FeoRamUTz5jakMJ8.json b/data/packs/gear.db/foebane__FeoRamUTz5jakMJ8.json index 445daf0a0..8bd731ef0 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/grappling_hook__fqsLWV46NWH0L53l.json b/data/packs/gear.db/grappling_hook__fqsLWV46NWH0L53l.json index acd589122..b9a5a3681 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 6751bb8f4..817729568 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": { @@ -34,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 237a9140a..7fb06292a 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": { @@ -34,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 94cace2d8..a8134efa2 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, @@ -32,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/herbal_remedies__iHOSxtXRWKd2vx1U.json b/data/packs/gear.db/herbal_remedies__iHOSxtXRWKd2vx1U.json index 381adb5bd..8eafe91ff 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 663158192..b8f53db72 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 8f52ee19a..ff7c5456c 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 cbe307619..6eaf77b0c 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": { @@ -34,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/lantern__lCWOUkVp4N1geMRt.json b/data/packs/gear.db/lantern__lCWOUkVp4N1geMRt.json index 7876f8da2..b1b15adde 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/leather_armor__EoTEHXApVDS7rHfw.json b/data/packs/gear.db/leather_armor__EoTEHXApVDS7rHfw.json index 7d776209e..0acbe1cb0 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/light_spell__PkQXG3AaHNMVwGTc.json b/data/packs/gear.db/light_spell__PkQXG3AaHNMVwGTc.json index cf667bbae..0db3d4619 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 63f620b71..ffb738b1e 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 b53fd9cdc..3e49b6dbd 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 cf6a54b11..1ea7b8135 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": { @@ -34,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 cc84f03fb..3ed3174bc 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": { @@ -34,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 f2cc7f82f..4206b1b8e 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": { @@ -34,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/mirror__GUqtnSXkcytZnNiO.json b/data/packs/gear.db/mirror__GUqtnSXkcytZnNiO.json index fe1361dc8..8f3b02a9f 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/mithral_chainmail__UDyHeJCreIFZ9y2I.json b/data/packs/gear.db/mithral_chainmail__UDyHeJCreIFZ9y2I.json index a798340ef..6b8c81bc3 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 df8bba4ef..928f0904b 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 753cea92e..dfc435bb5 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, @@ -32,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 8248d6e66..b9a60a8d8 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, @@ -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 cccd3efe0..79c2c3be0 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, @@ -32,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 a0df75c49..f79b2d92f 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/pole__15X5GTX96y339EKY.json b/data/packs/gear.db/pole__15X5GTX96y339EKY.json index 58ed160f8..1a2f76cd6 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 126f68f2b..c5aefb3e8 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 465ebf3ba..05d236f64 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, @@ -32,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 9bedd51ea..32d8d1a4f 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/rope__60___6ZRwVHFlh5QiyZWC.json b/data/packs/gear.db/rope__60___6ZRwVHFlh5QiyZWC.json index d99b25a12..0ebe954e7 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/round_shield__RSNMsNqyV39N9C29.json b/data/packs/gear.db/round_shield__RSNMsNqyV39N9C29.json index 883dca646..ead004e75 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 a0f1f651e..30238830b 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 fece6eada..c7e2e1c72 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, @@ -32,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 eebe34f37..6e03c4fec 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 68322cd3d..e7bc82f2b 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": { @@ -34,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 1358fc49e..c0a7e2af5 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": { @@ -34,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 67bc81920..0660f0e73 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, @@ -32,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 37270cc91..1e4c833cb 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, @@ -32,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 aba63bd89..e6ac65cae 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": { @@ -34,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 7265ecdcb..0f39e9305 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": { @@ -34,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 000000000..4621baf08 --- /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 087035765..9afe0c3f1 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, @@ -32,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 51a97c0e1..541dede35 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/thieves__tools__mSDuPGnQZA8ArsVP.json b/data/packs/gear.db/thieves__tools__mSDuPGnQZA8ArsVP.json index d827ae8ed..b86546f01 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 48e82c5c9..3dfb9e48f 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 aea614f1d..142861911 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": { @@ -34,6 +35,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", diff --git a/data/packs/gear.db/weapons__LVzvIhYHieRT4O6q.json b/data/packs/gear.db/weapons__LVzvIhYHieRT4O6q.json index 24ae84ce6..e78018b41 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 0b70e5412..5f5f753c8 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, @@ -32,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 000000000..63fe7dd46 --- /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/macros.db/request_a_check__YOZcP9WGwie1dLIu.json b/data/packs/macros.db/request_a_check__YOZcP9WGwie1dLIu.json new file mode 100644 index 000000000..fb8efc004 --- /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" +} diff --git a/data/packs/magic-items.db/asterion__X5FwZjvgzeSXvNDQ.json b/data/packs/magic-items.db/asterion__X5FwZjvgzeSXvNDQ.json index 451d66191..10e9805c7 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": { @@ -37,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/bag_of_holding__vHwzxeO0sX9GlRbj.json b/data/packs/magic-items.db/bag_of_holding__vHwzxeO0sX9GlRbj.json index 0d1f91ca4..8108e87c0 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 8a4863dbe..2223e36b4 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": { @@ -38,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 2c1f6630c..c4d41ac1b 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 bd60d75a1..e91f2e79b 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/brak_s_cube_of_perfection__ZypO4jCOurSK2aOB.json b/data/packs/magic-items.db/brak_s_cube_of_perfection__ZypO4jCOurSK2aOB.json index 4c2c8b567..cedf26980 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 f44f0d2a0..1601b0b5d 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 6051d10c1..95794e07d 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 4c28cae75..6a4051930 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 fcc04875f..10da46e59 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 3cd5e1f75..3d8767c2f 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 985d26ff9..8e7c7a96c 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 1aeb15cc9..4e80c1b33 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/gauntlets_of_might__FWQK9qFGagcEXCq5.json b/data/packs/magic-items.db/gauntlets_of_might__FWQK9qFGagcEXCq5.json index 7218f87b6..1d91a3c81 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/immovable_rod__RQyOkC3sGAe5gsn2.json b/data/packs/magic-items.db/immovable_rod__RQyOkC3sGAe5gsn2.json index 433d5b22a..6d09eba27 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 d32dc8a75..de481f9ba 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 9bf60d713..7779ab27c 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/ophidian_armor__MyHXrPewu36OmWB6.json b/data/packs/magic-items.db/ophidian_armor__MyHXrPewu36OmWB6.json index 78072a97d..e1b36063b 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/pearl_of_power__t4RYKztP70zmAbGD.json b/data/packs/magic-items.db/pearl_of_power__t4RYKztP70zmAbGD.json index 27e3d71eb..a8b968812 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 001997321..c1d5afa16 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 eb5180806..10ee75464 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 b5c4848db..a5217353b 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 941029ec9..847992308 100644 --- a/data/packs/magic-items.db/scarab_of_protection__RPe1Y9rnhOq7Dl6p.json +++ b/data/packs/magic-items.db/scarab_of_protection__RPe1Y9rnhOq7Dl6p.json @@ -14,8 +14,9 @@ "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, "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 05e78f6bb..ddca6a53b 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 32f5e60b6..3e6d278dc 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 d240360b4..90328031d 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": { @@ -37,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 0e650af52..9298ef287 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": { @@ -37,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 96defef60..df8bfd9d6 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": { @@ -37,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/true_name__gNah418e2ykhDWDE.json b/data/packs/magic-items.db/true_name__gNah418e2ykhDWDE.json index 630c37721..a339d2a3a 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 cd96a3b03..b8fda9c50 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": { @@ -37,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 169cbcc6b..500285f9b 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": { @@ -35,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/monsters.db/aboleth__sgVqRuCaadRK1P7R.json b/data/packs/monsters.db/aboleth__sgVqRuCaadRK1P7R.json index 119010345..9870956a4 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 d1da40d03..ac387fff0 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 bfa454994..9c194077f 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 6ee87a14a..0aea07c05 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 0cfedaaea..4b8dcbb42 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 22a8a4150..c60918967 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 aa7c0f13d..dfbd758ea 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 a083a4ab6..58f1c369e 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 ceaf092d1..7234dfb50 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 7b4feefbe..f0ce6e895 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 c2338ca21..7f9715235 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 0cf89cd4d..b53c3f069 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 bd9adbea9..75a8df003 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 79d023161..82a9009ea 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 ab2b7dc1a..6e2d643d2 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 037bd6746..513a4d691 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 507107050..5d21fb046 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 5ac9bd46e..34cdd74af 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 3bd135c7d..d1b95bc40 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 06c7c839b..5201a1875 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 989453a92..82f3043e3 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 1add88334..049d41b45 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 c803f1bff..ea6367d6f 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 a5faf4fea..ba1a94b95 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 8613d5b0c..71614309d 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 e4a7fdcf0..f3e33882f 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 39d67bc45..97a241097 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 46adbb415..8dc2f9816 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 620f7893d..30fed2896 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 45b3e998b..05adec04d 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 7e43195d4..70a5d20d1 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 e981dc9f9..fcad4fe30 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 af4ccf83f..6b70ab5c0 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 f6683f719..44b5ec0b2 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 35df39bf0..e38838206 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 4a5e00063..1a1076177 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 4732f2e6e..9e6ae3eaa 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 e465e9581..6fd92bc96 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 17b7c00c7..8bb58ac5c 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 c5f2ff79c..c97e92ac1 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 58c92f8c8..872e9efe0 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 2b0ce778e..14a8d711f 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 68a9c5466..dddce382d 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 bb9d62338..36bcd5e90 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 27e4d77d5..c7d87f946 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 fd283ed46..f4bb1ef59 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 a99603374..a01637d0b 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 a54f32afd..40a3bb8b4 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 5efa22ae9..5d55955a3 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 90e992efc..9a50bc59c 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 f681a1359..0069cbd70 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 344513b8f..448a1bc05 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 bb787efe8..d4c07339a 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 1990373f6..bc535eabd 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 5dc4c81aa..e4b65780e 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 39ade63af..292dee3e9 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 e97fa0e3e..6e8b51884 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 bcf3d5534..263a4f149 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 fd58a0cc8..5e2106103 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 2eb1281fc..8bacf8b8f 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 6f63c3d8f..0a2aa7282 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 524fce676..5c2322264 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 43639d862..710f211f5 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 85bcb7dba..7a4f257f8 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 7c62064d0..1566a4256 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 175dc0887..5bf5c629a 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 ba3ae7159..e2af6b9d9 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 f3d65e573..7c216f7d3 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 dbf9d2784..3b5ebd5b0 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 8e8cbc572..c08b64c00 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 3d578498f..d0afe4195 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 030ac3fd8..9fd8750cf 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 ef7b21b94..dfd2a1b0c 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 be8fe4d68..80ca9b497 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 32ef831c0..24e0c147f 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 f40d6cb4f..b5d0fe187 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 79b6a44da..c0c7a07bb 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 ae777d2e5..0e40615f4 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 d4228cb76..9dc7dd30f 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 dc50ad6e6..0fd1c0460 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 d978d052c..253d94705 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 a5a5f2ebd..26f14614e 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 0764799fb..24ab58d27 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 1d4092df8..685f52223 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 17996eef8..f2d46e572 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 fb449f5ce..45e099d6d 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 eab05d260..22c6efd48 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 f59e4c664..08e22f266 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 229f34642..747ff34f0 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 06b21ec83..f71665f59 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 37fd9c1b9..33ec5045c 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 178e7ba49..5ac6c28bd 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 baf6c239c..78a4864de 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 98721ee8c..653f3af6e 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 09f5008eb..25b420d88 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 2cdb56f8a..5479be556 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 fd85986f1..1ffb32e99 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 d38cb6bd0..8b5ddd74b 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 d839e7c3a..7d029f361 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 a53985b2f..e6fcd84a3 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 df8b27039..5dfd40f26 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 6a7aeb23a..c1ec85fd2 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 98381e64d..d618eaaab 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 a532edebd..bbbe8447f 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 eefddc63f..96a52df3c 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 218eea456..79377ca33 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 9cda5a7c4..524f93293 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 ef00ebab7..32da05458 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 19a31e42e..6966d3866 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 8e61e23b9..7b7dff678 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 4a8d601c1..328f6786f 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 18d91a3b0..dbb03d6a4 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 6f80fe632..aa9b437a8 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 526455f5e..76a14ea20 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 a2ac3ab71..407a7ab27 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 c276b1ab8..b7daac0e8 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 a31b01fc8..f067f8b2d 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 67c56a131..08c842c34 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 6fb9048fc..16aef724a 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 8c0c9d461..777eed6d3 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 72b049720..db891a7ea 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 f4b03e6ae..689727ae6 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 d93f055a5..f8ccabf4c 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 3540a7eec..fa9baeb50 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 88cc53b73..e3cc042b9 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 9f0a7a231..db049df3f 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 8b006cb74..73d402993 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 f2b1461d8..7843fb248 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 54e35419e..fded8958e 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 b0882c665..f38078bcc 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 9caf02313..fcbea471e 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 ef5772221..9c40d82dc 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 c1752c94d..ea574c3a3 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 e766ef28b..a45ed2ba5 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 54598e1f4..2e014b145 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 43df998d7..f5d5b7e80 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 6f5f47a8a..122a1b912 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 510b7dde3..33e2724f8 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 e48158295..316172881 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 de246a2e8..4acd8e8f2 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 bfb3dea22..46deb89f0 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 f2b7445ef..756e20de2 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 d76c6491e..9801553bb 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 e6289f7bd..3da2e4cc9 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 02fde33e9..cecc03778 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 c5a5b321e..14b509375 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 f6aaed13d..ba1cfe377 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 0cb78c697..1b82a7f01 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 8ca9e47e1..cc1d0c822 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 6a8a3b417..d494d2307 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 15bf007d5..722f124ea 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 43fec91ee..da89324a5 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 dd3e1732e..5332d5887 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 9219e72c0..bb747623f 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 f603a5441..46a271b1e 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 7e7397518..e3f75e934 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 9007b08f8..14431079f 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 0a7e15946..47bd8afe0 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 f8f17ed74..c81f8193f 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 bf1079b14..9dcdae9ef 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 0273c3a7c..c2202db7f 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 df1bccdb7..5f9054c12 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 7de3ef982..7c523c2fd 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 5a04d550a..6990cdd99 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 f4eb2e94a..e40f5f0cd 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 99b1c8797..8a65f5302 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 d0a025ab7..cbd3e5cd2 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 b7f9a583f..da4b1ca65 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 da14d7d8b..ff9389ec4 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 685bc45f2..7c877bc7a 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 6de4a4864..590e0cebd 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 9f9ef2055..2e74e702d 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 e712248c4..162acf8c6 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 4a928275d..515a0568c 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 3c57e3f54..80e8fc424 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 5d5959f10..8bb939790 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 9cd877a5d..45e0f2078 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 719217ecc..c92ea0aa4 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 749e29e30..78bce1926 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 41d04e641..176b7d448 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 365ce55ec..d5ea9d11e 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 06919982e..8669d332b 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 8f939ad9e..e832f315e 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 e4bed5c04..aaa04f355 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 8d9050468..a119b9263 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 eb691d7e7..52436f6be 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 d0d9d1e9f..6e1bcd35c 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 d919485a0..85d9f55fc 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 236738067..225024354 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 fd48693d8..4ab079f75 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 448f8cf05..7b473f11e 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 2394d70f1..8c64accb1 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 52a0dbb25..55b0b7c3b 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 e456550d9..e74616159 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 36f7a86d8..6820b2f2c 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 c3eedb0c9..547ad20a2 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 1fe5a1160..e86d134e4 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 243079e13..1eb0d58c8 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 fbc390ba8..5f18cd29d 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 054e93826..5a0f7b917 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 bcac8f5b1..1aacd44ef 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 977432721..145cdb7a2 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 b3cca266a..546354eb4 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 7f96ee7e7..624b18eeb 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 8cf31a31d..49cdf5a31 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 da0dc5aa1..dcfc7b3dc 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 d8efab6e3..e1a3ef2e2 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 8d3163706..373db2899 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 4f44ce597..565cfb732 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 28ebd44ac..e2b00291c 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 caa6eb551..4fdfd4b64 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 076f366eb..1e771f5c9 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 6de4dff81..8881a0abc 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 ad3b21d91..a6c477ce2 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 81ad37fea..6f3a15326 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 2face1a93..e0d3c8c44 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 dd24e300c..119f761ac 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 7f4a124c4..09ecf62af 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 336c3b8cf..89448fbd9 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 20bfb102f..867bd65aa 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 5531f152c..363f5b625 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 af05e9be2..ecfd27330 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 3c9f94ef1..603fe508a 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 71368cd66..11ea6747f 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 74a3c7308..c66e51624 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 746912b67..1b4005460 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 be8ee1bc2..18f19376d 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 cb18549fc..af9ed1bad 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 6e27173a6..c91efd80b 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 c310245a4..59c07480e 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 18290fa90..4e1a3c1f0 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 3f3cd662c..4150d5ee6 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 0d7c08e42..ffd214a98 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 605b6fcaf..0452da668 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 7387c08e9..cd3b5b650 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 f83961b0e..65be62081 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 2df373f9c..c9e5e47c2 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 d66dc0c40..54727c478 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 492809ac3..6557f55e6 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 273d50634..6f3d8425e 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 b12e2f374..3c981383e 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 494e7f6bb..8f734f38b 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 9581b5074..e301ae73c 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 31ef756e8..87cf312d8 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 e3ec9f5c1..067cbb61e 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 5f8bc22d2..22407778a 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 0183824b6..47e73ec89 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 1f26eb7c1..932dafa44 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 06f60f02a..e52697b50 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 0ec93c995..00f763e9a 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 c272a64ad..e88091f94 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 77becf7c8..e92a84726 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 d90dda430..ceec3dad2 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 7db127dec..083521e80 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 71db37639..dd3e4eeed 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 e470002da..81199e80a 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 3f1fe7a72..777a4405e 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 6efa109e4..545174385 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 88df587e2..752e054c6 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 4799d0fa2..e2600a931 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 34ad0ca4e..e0ae047ed 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 d80eca0c5..038cc3f2e 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 c2eda5de4..944ebc061 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 a0313dd1d..b984f5a94 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 b22ea6df2..d6a548785 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 432d99995..9fe4b52a6 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 72c4e55c8..84be25c38 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/deities.db/all_nord_gods__7Ay6ImjgTQAMDc0M.json b/data/packs/patrons-and-deities.db/all_nord_gods__7Ay6ImjgTQAMDc0M.json similarity index 83% rename from data/packs/deities.db/all_nord_gods__7Ay6ImjgTQAMDc0M.json rename to data/packs/patrons-and-deities.db/all_nord_gods__7Ay6ImjgTQAMDc0M.json index f2cdfffd5..6cc5c9c3b 100644 --- a/data/packs/deities.db/all_nord_gods__7Ay6ImjgTQAMDc0M.json +++ b/data/packs/patrons-and-deities.db/all_nord_gods__7Ay6ImjgTQAMDc0M.json @@ -3,8 +3,8 @@ "_key": "!items!7Ay6ImjgTQAMDc0M", "effects": [ ], - "folder": null, - "img": "icons/magic/holy/angel-wings-gray.webp", + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", "name": "All Nord Gods", "system": { "alignment": "", 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 000000000..d9d26a5da --- /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 000000000..274558d36 --- /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/deities.db/freya__R6m1FzSnuw5OnSpB.json b/data/packs/patrons-and-deities.db/freya__R6m1FzSnuw5OnSpB.json similarity index 85% rename from data/packs/deities.db/freya__R6m1FzSnuw5OnSpB.json rename to data/packs/patrons-and-deities.db/freya__R6m1FzSnuw5OnSpB.json index d3f870729..c2a908731 100644 --- a/data/packs/deities.db/freya__R6m1FzSnuw5OnSpB.json +++ b/data/packs/patrons-and-deities.db/freya__R6m1FzSnuw5OnSpB.json @@ -3,8 +3,8 @@ "_key": "!items!R6m1FzSnuw5OnSpB", "effects": [ ], - "folder": null, - "img": "icons/magic/holy/angel-wings-gray.webp", + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", "name": "Freya", "system": { "alignment": "neutral", diff --git a/data/packs/deities.db/gede__FhDBOHUircue27aV.json b/data/packs/patrons-and-deities.db/gede__FhDBOHUircue27aV.json similarity index 93% rename from data/packs/deities.db/gede__FhDBOHUircue27aV.json rename to data/packs/patrons-and-deities.db/gede__FhDBOHUircue27aV.json index 2f8f4d150..cb308c686 100644 --- a/data/packs/deities.db/gede__FhDBOHUircue27aV.json +++ b/data/packs/patrons-and-deities.db/gede__FhDBOHUircue27aV.json @@ -3,7 +3,7 @@ "_key": "!items!FhDBOHUircue27aV", "effects": [ ], - "folder": null, + "folder": "DOr658CRB6xwzgeB", "img": "icons/magic/holy/yin-yang-balance-symbol.webp", "name": "Gede", "system": { 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 000000000..320473d80 --- /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/deities.db/loki__rlrWLhbyaJZNrbND.json b/data/packs/patrons-and-deities.db/loki__rlrWLhbyaJZNrbND.json similarity index 85% rename from data/packs/deities.db/loki__rlrWLhbyaJZNrbND.json rename to data/packs/patrons-and-deities.db/loki__rlrWLhbyaJZNrbND.json index 5d036c52e..cdb36aa5e 100644 --- a/data/packs/deities.db/loki__rlrWLhbyaJZNrbND.json +++ b/data/packs/patrons-and-deities.db/loki__rlrWLhbyaJZNrbND.json @@ -3,8 +3,8 @@ "_key": "!items!rlrWLhbyaJZNrbND", "effects": [ ], - "folder": null, - "img": "icons/magic/holy/angel-wings-gray.webp", + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", "name": "Loki", "system": { "alignment": "chaotic", diff --git a/data/packs/deities.db/madeera_the_covenant__p91vJhT8FXvb2mLj.json b/data/packs/patrons-and-deities.db/madeera_the_covenant__p91vJhT8FXvb2mLj.json similarity index 93% rename from data/packs/deities.db/madeera_the_covenant__p91vJhT8FXvb2mLj.json rename to data/packs/patrons-and-deities.db/madeera_the_covenant__p91vJhT8FXvb2mLj.json index cb2e9b853..734c78f63 100644 --- a/data/packs/deities.db/madeera_the_covenant__p91vJhT8FXvb2mLj.json +++ b/data/packs/patrons-and-deities.db/madeera_the_covenant__p91vJhT8FXvb2mLj.json @@ -3,7 +3,7 @@ "_key": "!items!p91vJhT8FXvb2mLj", "effects": [ ], - "folder": null, + "folder": "DOr658CRB6xwzgeB", "img": "icons/magic/holy/yin-yang-balance-symbol.webp", "name": "Madeera the Covenant", "system": { diff --git a/data/packs/deities.db/memnon__oT5Urxeq9eAeXJZf.json b/data/packs/patrons-and-deities.db/memnon__oT5Urxeq9eAeXJZf.json similarity index 93% rename from data/packs/deities.db/memnon__oT5Urxeq9eAeXJZf.json rename to data/packs/patrons-and-deities.db/memnon__oT5Urxeq9eAeXJZf.json index f13c24fe1..e991c743b 100644 --- a/data/packs/deities.db/memnon__oT5Urxeq9eAeXJZf.json +++ b/data/packs/patrons-and-deities.db/memnon__oT5Urxeq9eAeXJZf.json @@ -3,7 +3,7 @@ "_key": "!items!oT5Urxeq9eAeXJZf", "effects": [ ], - "folder": null, + "folder": "DOr658CRB6xwzgeB", "img": "icons/magic/holy/yin-yang-balance-symbol.webp", "name": "Memnon", "system": { 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 000000000..868b568a7 --- /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/deities.db/odin__iblZelXFcIZFbPFH.json b/data/packs/patrons-and-deities.db/odin__iblZelXFcIZFbPFH.json similarity index 85% rename from data/packs/deities.db/odin__iblZelXFcIZFbPFH.json rename to data/packs/patrons-and-deities.db/odin__iblZelXFcIZFbPFH.json index f68985817..f898c70be 100644 --- a/data/packs/deities.db/odin__iblZelXFcIZFbPFH.json +++ b/data/packs/patrons-and-deities.db/odin__iblZelXFcIZFbPFH.json @@ -3,8 +3,8 @@ "_key": "!items!iblZelXFcIZFbPFH", "effects": [ ], - "folder": null, - "img": "icons/magic/holy/angel-wings-gray.webp", + "folder": "DOr658CRB6xwzgeB", + "img": "icons/magic/holy/yin-yang-balance-symbol.webp", "name": "Odin", "system": { "alignment": "lawful", diff --git a/data/packs/deities.db/ord__w9GdZSr5XYNjIeeR.json b/data/packs/patrons-and-deities.db/ord__w9GdZSr5XYNjIeeR.json similarity index 93% rename from data/packs/deities.db/ord__w9GdZSr5XYNjIeeR.json rename to data/packs/patrons-and-deities.db/ord__w9GdZSr5XYNjIeeR.json index 2caa694ed..079c84391 100644 --- a/data/packs/deities.db/ord__w9GdZSr5XYNjIeeR.json +++ b/data/packs/patrons-and-deities.db/ord__w9GdZSr5XYNjIeeR.json @@ -3,7 +3,7 @@ "_key": "!items!w9GdZSr5XYNjIeeR", "effects": [ ], - "folder": null, + "folder": "DOr658CRB6xwzgeB", "img": "icons/magic/holy/yin-yang-balance-symbol.webp", "name": "Ord", "system": { 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 000000000..da7ed2e24 --- /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/deities.db/ramlaat__6qeBzYJUTgrMhUcW.json b/data/packs/patrons-and-deities.db/ramlaat__6qeBzYJUTgrMhUcW.json similarity index 94% rename from data/packs/deities.db/ramlaat__6qeBzYJUTgrMhUcW.json rename to data/packs/patrons-and-deities.db/ramlaat__6qeBzYJUTgrMhUcW.json index dfcf8aa22..9b398523a 100644 --- a/data/packs/deities.db/ramlaat__6qeBzYJUTgrMhUcW.json +++ b/data/packs/patrons-and-deities.db/ramlaat__6qeBzYJUTgrMhUcW.json @@ -3,7 +3,7 @@ "_key": "!items!6qeBzYJUTgrMhUcW", "effects": [ ], - "folder": null, + "folder": "DOr658CRB6xwzgeB", "img": "icons/magic/holy/yin-yang-balance-symbol.webp", "name": "Ramlaat", "system": { diff --git a/data/packs/deities.db/saint_terragnis__hNbUUJnD6HIda5tl.json b/data/packs/patrons-and-deities.db/saint_terragnis__hNbUUJnD6HIda5tl.json similarity index 93% rename from data/packs/deities.db/saint_terragnis__hNbUUJnD6HIda5tl.json rename to data/packs/patrons-and-deities.db/saint_terragnis__hNbUUJnD6HIda5tl.json index 1e81bb128..e855b7968 100644 --- a/data/packs/deities.db/saint_terragnis__hNbUUJnD6HIda5tl.json +++ b/data/packs/patrons-and-deities.db/saint_terragnis__hNbUUJnD6HIda5tl.json @@ -3,7 +3,7 @@ "_key": "!items!hNbUUJnD6HIda5tl", "effects": [ ], - "folder": null, + "folder": "DOr658CRB6xwzgeB", "img": "icons/magic/holy/yin-yang-balance-symbol.webp", "name": "Saint Terragnis", "system": { 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 000000000..91648d06c --- /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/deities.db/the_lost__r1j3fFsxwgxvIqxl.json b/data/packs/patrons-and-deities.db/the_lost__r1j3fFsxwgxvIqxl.json similarity index 94% rename from data/packs/deities.db/the_lost__r1j3fFsxwgxvIqxl.json rename to data/packs/patrons-and-deities.db/the_lost__r1j3fFsxwgxvIqxl.json index 727583938..144a7d085 100644 --- a/data/packs/deities.db/the_lost__r1j3fFsxwgxvIqxl.json +++ b/data/packs/patrons-and-deities.db/the_lost__r1j3fFsxwgxvIqxl.json @@ -3,7 +3,7 @@ "_key": "!items!r1j3fFsxwgxvIqxl", "effects": [ ], - "folder": null, + "folder": "DOr658CRB6xwzgeB", "img": "icons/magic/holy/yin-yang-balance-symbol.webp", "name": "The Lost", "system": { 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 000000000..ef5154774 --- /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 000000000..53c2b0f87 --- /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/properties.db/bolas__98zYioBHqik74KBV.json b/data/packs/properties.db/bolas__98zYioBHqik74KBV.json index c4a567ef8..f5a4196a3 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 88c7448b7..a755818f0 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": [ ], @@ -583,7 +585,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" } @@ -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, @@ -838,7 +841,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 @@ -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": [ ], @@ -892,7 +895,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" } @@ -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, @@ -1147,7 +1151,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 @@ -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": [ ], @@ -1201,7 +1205,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" } @@ -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, @@ -1456,7 +1461,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 @@ -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": [ ], @@ -1510,7 +1515,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" } @@ -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, @@ -1765,7 +1771,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 @@ -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": [ ], @@ -1819,7 +1825,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" } @@ -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, @@ -2074,7 +2081,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 @@ -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": [ ], @@ -2128,7 +2135,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" } @@ -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, @@ -2383,7 +2391,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 @@ -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, @@ -10028,6 +10063,7 @@ }, "sort": 100000, "system": { + "ammoClass": "", "attackBonus": "1", "baseWeapon": "greataxe", "bonuses": { @@ -10056,6 +10092,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "predefinedEffects": "", @@ -10083,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": [ ], @@ -10101,6 +10138,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10119,6 +10157,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -10150,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": [ ], @@ -10168,6 +10207,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10186,6 +10226,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "quantity": 1, @@ -10206,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": [ ], @@ -10225,6 +10266,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -10242,6 +10284,7 @@ }, "description": "

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

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -10272,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": [ ], @@ -10290,6 +10333,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10308,6 +10352,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -10338,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": [ ], @@ -10356,6 +10401,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10374,6 +10420,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -10404,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": [ ], @@ -10422,6 +10469,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10440,6 +10488,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -10470,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": [ ], @@ -10491,6 +10540,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10509,6 +10559,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "quantity": 1, @@ -10529,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": [ ], @@ -10547,6 +10598,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10565,6 +10617,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -10595,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": [ ], @@ -10613,6 +10666,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10631,6 +10685,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "quantity": 1, @@ -10651,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": [ ], @@ -10669,6 +10724,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10687,6 +10743,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "quantity": 1, @@ -10707,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": [ { @@ -10725,7 +10782,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "changes": [ { @@ -10770,7 +10827,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "changes": [ { @@ -10816,6 +10873,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -10824,6 +10882,7 @@ }, "sort": 100000, "system": { + "ammoClass": "", "attackBonus": "1", "baseWeapon": "", "bonuses": { @@ -10852,6 +10911,7 @@ }, "description": "

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

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "properties": [ @@ -10878,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": [ ], @@ -10896,6 +10956,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10914,6 +10975,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", @@ -10935,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": [ ], @@ -10953,6 +11015,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -10971,6 +11034,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "predefinedEffects": "", @@ -10992,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": [ ], @@ -11014,6 +11078,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -11029,8 +11094,9 @@ "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, "light": { "active": false, @@ -11062,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": [ ], @@ -11080,6 +11146,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11098,6 +11165,7 @@ }, "description": "

An ivory egg shot with grey veins inside.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -11129,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": [ ], @@ -11147,6 +11215,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11165,6 +11234,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "quantity": 1, @@ -11185,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": [ ], @@ -11203,6 +11273,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11221,6 +11292,7 @@ }, "description": "

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

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -11251,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": [ ], @@ -11273,6 +11345,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -11290,6 +11363,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, @@ -11320,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": [ ], @@ -11341,6 +11415,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11350,6 +11425,7 @@ }, "sort": 200000, "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { @@ -11378,6 +11454,7 @@ }, "description": "

Silvered longsword with half-moon pommel.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ @@ -11403,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": [ ], @@ -11424,6 +11501,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11448,6 +11526,7 @@ }, "description": "

Scarred mithral shield carved with prowling tiger .

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ @@ -11472,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": [ ], @@ -11490,6 +11569,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11508,6 +11588,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -11538,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": [ { @@ -11556,7 +11637,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "changes": [ { @@ -11601,7 +11682,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "changes": [ { @@ -11647,6 +11728,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -11655,6 +11737,7 @@ }, "sort": 100000, "system": { + "ammoClass": "", "attackBonus": "1", "baseWeapon": "", "bonuses": { @@ -11683,6 +11766,7 @@ }, "description": "

Benefit. The wielder cannot be surprised.

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "properties": [ @@ -11709,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": [ ], @@ -11727,6 +11811,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11745,6 +11830,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -11775,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": [ ], @@ -11797,6 +11883,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -11820,6 +11907,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": [ @@ -11842,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": [ ], @@ -11861,6 +11949,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -11869,6 +11958,7 @@ }, "sort": 200000, "system": { + "ammoClass": "", "attackBonus": 0, "baseWeapon": "", "bonuses": { @@ -11897,6 +11987,7 @@ }, "description": "

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

DC 12

", "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": true, "properties": [ @@ -11922,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": [ ], @@ -11940,6 +12031,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -11958,6 +12050,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -11988,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": [ ], @@ -12006,6 +12099,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "aUdswNccq2u0SxEP": 3, "default": 0, @@ -12024,6 +12118,7 @@ }, "description": "", "equipped": false, + "isAmmunition": false, "isPhysical": true, "light": { "active": false, @@ -12056,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": { @@ -12075,6 +12170,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -12089,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": { }, @@ -12131,7 +12227,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { "core": { @@ -12170,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": { }, @@ -12188,7 +12284,7 @@ "system": { }, "text": { - "content": "

Walls: Flecked with countless, smooth shards of quartz. White Bundles: Man-sized, several stuffed into cave corners.

", + "content": "

Walls: Flecked with countless, smooth shards of quartz. White Bundles: Man-sized, several stuffed into cave corners.

", "format": 1, "markdown": "" }, @@ -12209,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": { @@ -12230,7 +12326,7 @@ "system": { }, "text": { - "content": "

Walls and Floor: Covered in thick, gauzy sheets of webbing.

", + "content": "

Walls and Floor: Covered in thick, gauzy sheets of webbing.

", "format": 1, "markdown": "" }, @@ -12251,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": { }, @@ -12293,7 +12389,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12329,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": { }, @@ -12347,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.

", + "content": "

Statue: A life-sized, snake-haired woman with arms raised and mouth open in a scream. Stone Basins: Smooth, human-sized.

", "format": 1, "markdown": "" }, @@ -12368,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": { }, @@ -12386,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.

", + "content": "

Bull Statue: Towering (10'), bronze. Horns lowered for a charge. Hall: 15' high. Pairs of deep holes punched into wall opposite statue.

", "format": 1, "markdown": "" }, @@ -12410,7 +12506,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12446,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": { }, @@ -12464,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.

", + "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.

", "format": 1, "markdown": "" }, @@ -12488,7 +12584,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12524,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": { }, @@ -12542,7 +12638,7 @@ "system": { }, "text": { - "content": "

Door: Hefty stone slab with keyhole. Cold and damp to the touch.

", + "content": "

Door: Hefty stone slab with keyhole. Cold and damp to the touch.

", "format": 1, "markdown": "" }, @@ -12566,7 +12662,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12605,7 +12701,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12644,7 +12740,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12680,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": { }, @@ -12698,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.

", + "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.

", "format": 1, "markdown": "" }, @@ -12722,7 +12818,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12761,7 +12857,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12800,7 +12896,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12839,7 +12935,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12878,7 +12974,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12917,7 +13013,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12956,7 +13052,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -12995,7 +13091,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -13034,7 +13130,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -13073,7 +13169,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -13112,7 +13208,7 @@ "lastModifiedBy": null, "modifiedTime": null, "systemId": "shadowdark", - "systemVersion": "3.0.0" + "systemVersion": "3.1.3" }, "flags": { }, @@ -13148,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": { }, @@ -13166,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.

", + "content": "

Cave: Chilly and damp, high ceiling (30'). Dripping stalactites. Pool: Crimson water, murky and still. Smell: Coppery, metallic tang.

", "format": 1, "markdown": "" }, @@ -13185,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": { }, @@ -13224,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": { }, @@ -13268,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": { @@ -13289,6 +13385,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3 }, @@ -13301,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": { @@ -13322,6 +13419,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3 }, @@ -13334,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": { @@ -13355,6 +13453,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3 }, @@ -13372,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, @@ -14788,6 +14887,7 @@ "EKVggA45fx6fzkCK": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "ZuCcSt1GzdVhRDwH": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, @@ -38709,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, @@ -38731,6 +38831,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -38906,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, @@ -38928,6 +39029,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -39071,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, @@ -39093,6 +39195,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -39268,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, @@ -39290,6 +39393,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -39465,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, @@ -39487,6 +39591,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -39662,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, @@ -39684,6 +39789,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -39795,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, @@ -39817,6 +39923,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -39992,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, @@ -40014,6 +40121,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, @@ -40061,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, @@ -40083,6 +40191,7 @@ "6zjemStY2KktUVjE": 3, "OkK4h58aE2bS4yS7": 3, "PlRkeViQNpI8qZhv": 3, + "XOge3YaW9qcUJnuq": 3, "default": 0, "fN4EvXwUx7iTYSyk": 3, "mu8H7NbWc0seFWcA": 3, diff --git a/data/packs/quickstart-guides.db/combat__MYaGXUcQtZ4b8xCI.json b/data/packs/quickstart-guides.db/combat__MYaGXUcQtZ4b8xCI.json index ec675eb3d..312d7c326 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 6ccda7a39..b180f06ef 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:

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:

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 5dca88367..36f0b2d40 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 826313683..f8aa84abb 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 e75a6006c..67c043058 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 d54775d72..e9f23e4d8 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 ba6f3020d..4b14ed09a 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/quickstart-pregens.db/arrows__VpTCdbqTR9E598YZ.json b/data/packs/quickstart-pregens.db/arrows__VpTCdbqTR9E598YZ.json index 928d2f097..4cbf898c8 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 2f7768424..90be870e7 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 e007bfef6..b40f946cd 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 47d5885b8..fcc91a9c9 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 e6a18bf95..ee9071330 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 3c13ab4b8..5cb7e2e6e 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 eecc2ff61..8c134eb0e 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 ea0e9d36c..f0ebb202d 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 adb1d7670..048db69a3 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 33758c3d3..9d868b08e 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": { @@ -35,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/caltrops__GtncgMsIBndkotOc.json b/data/packs/quickstart-pregens.db/caltrops__GtncgMsIBndkotOc.json index 4561f272e..af3a6cd88 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/chainmail__CQZJTP6wf96cvTyG.json b/data/packs/quickstart-pregens.db/chainmail__CQZJTP6wf96cvTyG.json index 2a6a44cd8..8eb55d552 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 cb465667f..47e0c7f86 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 b6fce5a78..d4fe62722 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 8e3dded9a..f46b34ce5 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/creeg_greythorn__PTFsYZ8ni3MbSdw8.json b/data/packs/quickstart-pregens.db/creeg_greythorn__PTFsYZ8ni3MbSdw8.json index 4ff97dd18..56d4b5371 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/crossbow__e04loDnEXhVPS9uK.json b/data/packs/quickstart-pregens.db/crossbow__e04loDnEXhVPS9uK.json index d3acc51d7..4996eb9e1 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": { @@ -35,8 +36,10 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "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 2fe3ed4ff..025f48793 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": { @@ -35,8 +36,10 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "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 78c7e9cfb..c9f674bde 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": { @@ -35,8 +36,10 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "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 b26263a19..beea65357 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 9bfdb43c3..51cda543f 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 fa12956d7..ac5cbcca6 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 ea25a1331..17c4636dc 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": { @@ -35,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 39662b9e9..bcf4bfe85 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": { @@ -35,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 ffa975480..4b0beaca1 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": { @@ -35,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 15a8ebe8a..939a999bd 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": { @@ -35,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 6f2e445d2..48487420a 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": { @@ -35,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/elbin_grizzlegut__RfFy5Nq3izy5oVD6.json b/data/packs/quickstart-pregens.db/elbin_grizzlegut__RfFy5Nq3izy5oVD6.json index d98d2d6f6..608163055 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/flint_and_steel__5wPOo8V5whIcnh53.json b/data/packs/quickstart-pregens.db/flint_and_steel__5wPOo8V5whIcnh53.json index 04502afd8..bcef11998 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 673b50444..dd1a32c17 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 6c9ab4752..5fae7cdf2 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 b9f985898..3849f34ee 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 b30bed342..d547ed89e 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 156dacdbf..32c1eb6a3 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 0edfc74c0..696f1dc4a 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 a655d19a3..84072eeee 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 fad791f49..a579fcfdf 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 55a92663f..b45a9d0c5 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 aa3573042..2c8ded57d 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 daaf14f7e..7db9d1127 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 17c93b899..bd01175cb 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 aba9b06c5..6ac0bcb6e 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 dab49d0d8..a51d30965 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 c9db47ab3..456d3aace 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 e0ba96218..2d1b692e0 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 5aaaba822..c3555a804 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": { @@ -35,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/holy_symbol__DCoYkIeAIqHhwPSf.json b/data/packs/quickstart-pregens.db/holy_symbol__DCoYkIeAIqHhwPSf.json index 33e3df705..38670f588 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 e1f19a6f4..44e5631ec 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/iraga_draguul__CVFznZtBMmHG2w4a.json b/data/packs/quickstart-pregens.db/iraga_draguul__CVFznZtBMmHG2w4a.json index b7bf55ae4..ed84d3636 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/iron_spikes__6f2SlF0mXnQ51TED.json b/data/packs/quickstart-pregens.db/iron_spikes__6f2SlF0mXnQ51TED.json index 50124c362..cb62f78d3 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 ef5a18c93..0084bba99 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 43146369d..cdc3da037 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 74af8e87f..c8ec9f7b3 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 aa4b8ceed..9694c3b95 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 f70c23d88..91ea896e3 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/jorbin_ironhelm__wnjtoBC4k5dIiG8X.json b/data/packs/quickstart-pregens.db/jorbin_ironhelm__wnjtoBC4k5dIiG8X.json index 08afb11b3..8d229c33d 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/leather_armor__DdpVSB1lae5GxHPL.json b/data/packs/quickstart-pregens.db/leather_armor__DdpVSB1lae5GxHPL.json index b3c6e86cc..28dc134fe 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 80a436621..2c057c602 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 05d12fc98..c9cd82eeb 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": { @@ -35,8 +36,10 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "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 2cd590592..ecaec7102 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": { @@ -35,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 f556c1761..fd7d054a0 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": { @@ -35,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/martin_rast__uXk56wpEwdiTfAQN.json b/data/packs/quickstart-pregens.db/martin_rast__uXk56wpEwdiTfAQN.json index f1aaa2e73..92abbba87 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/mirror__8e9zdenZBp76oo5p.json b/data/packs/quickstart-pregens.db/mirror__8e9zdenZBp76oo5p.json index edb191824..e5d1185e9 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 457e99c24..8575072a5 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 701bcb7bb..12d0aedcc 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 6b563a0a3..f8aa1f6c4 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 6583b8a08..91b435eaa 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 1b977ef53..918a45f86 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 65d374932..8d1b44959 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/ralina_biggins__x3L0onniGSB97CU7.json b/data/packs/quickstart-pregens.db/ralina_biggins__x3L0onniGSB97CU7.json index be10ece64..987bfc936 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/rations__2Nlz8gpgw8GQBIQo.json b/data/packs/quickstart-pregens.db/rations__2Nlz8gpgw8GQBIQo.json index b5d4a77c3..61a842c47 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 5ebb63cff..f7b1791d7 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 96665f3b0..b8fa19339 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 437f2e973..031c3edff 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 02a85da1b..a4536ced9 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 a2ccdc543..c920c4d4b 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 c6c9c8555..82252df07 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 35e1710cb..7719eac00 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 fe38d7873..6889fc1cb 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 c1528acd2..c364d5ff1 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 3cd6ca837..e9acb3354 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 8a3b0dba9..b7da35e95 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 ebcf28220..658ea9f2f 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 6d29a3ba6..9d3b22823 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 97aeb58d4..288b885c7 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 2cb780a3e..4dbcdbb08 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/shield__V5sHlwgAFiLTc8jy.json b/data/packs/quickstart-pregens.db/shield__V5sHlwgAFiLTc8jy.json index c4b9619a4..d44f40131 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 287653f8b..6e76656df 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 f18a035ad..221b4b814 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 c62f420f9..27b44d254 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 dc70bc17e..a98b72144 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": { @@ -35,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 8ea0d0da2..ef6be0693 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": { @@ -35,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 bbb6e4062..dbd7cf516 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": { @@ -35,6 +36,7 @@ }, "description": "", "equipped": true, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "properties": [ diff --git a/data/packs/quickstart-pregens.db/thieves__tools__7PV3EnXdLwsYnEKn.json b/data/packs/quickstart-pregens.db/thieves__tools__7PV3EnXdLwsYnEKn.json index b142ea348..aa2e110ea 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 4dfe2bf13..d8ee01dab 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 801d7ab7a..73c99c005 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 99f6dc592..d70b73a9d 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 270c73677..d7f17e89f 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 221b502b9..476fd8c1a 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 787daa0fa..f4affd43b 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 bbb501f92..3ace60cc7 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 902b77272..e490834a1 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 c3aa67d2d..c5d35afca 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 5f1641a8c..b4f9af7b1 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, diff --git a/data/packs/quickstart-pregens.db/yriel_lirandar__4gxXdPgUd0ofz89A.json b/data/packs/quickstart-pregens.db/yriel_lirandar__4gxXdPgUd0ofz89A.json index 9070c4ac1..5fd7bdeac 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 0cf5f2904..bac2c8b1d 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/!tables.results!3158XkwQAHF20RJQ.2Jz1fWhg7q4wZ36K.json b/data/packs/rollable-tables.db/!tables.results!3158XkwQAHF20RJQ.2Jz1fWhg7q4wZ36K.json index c4cc1e528..f65b23bdd 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 604db8582..8818206f5 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 8f3d0e8c0..6ffcb82a5 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 d13b60f3f..37e183956 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 c8341a34a..f32cce51e 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 850b2d825..41153fd5b 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 000000000..ece16cf0b --- /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 000000000..a612f4d81 --- /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 000000000..26d3e5622 --- /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 000000000..3a848dbb7 --- /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 000000000..74b1c220d --- /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 000000000..112dbf53f --- /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 000000000..26e625328 --- /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 000000000..b66d16244 --- /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 000000000..e159d8f8e --- /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 000000000..c3f14b09f --- /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 000000000..b6b0eebc0 --- /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 000000000..8aadea339 --- /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 000000000..5a80666ed --- /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!NiiJKAiBjpPAj5U1.75GJHt36EtuofTvq.json b/data/packs/rollable-tables.db/!tables.results!NiiJKAiBjpPAj5U1.75GJHt36EtuofTvq.json index 39dd0d19e..d9098eaa7 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!WKVfMaGkoXe3DGub.6f3Uvv4Q2RmydfBE.json b/data/packs/rollable-tables.db/!tables.results!WKVfMaGkoXe3DGub.6f3Uvv4Q2RmydfBE.json new file mode 100644 index 000000000..c86e2b465 --- /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 000000000..bcebecc75 --- /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 000000000..340865f63 --- /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 000000000..93bda9ca1 --- /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/!tables.results!q83PUKIAznuLpqSr.FL0DEM3DhRGbv4AG.json b/data/packs/rollable-tables.db/!tables.results!q83PUKIAznuLpqSr.FL0DEM3DhRGbv4AG.json index 1c23a4501..f3a8e3a51 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 75804828b..9d3fae210 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 ec1fa12d4..8bc297a48 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 0127eb6da..0080e597d 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 00428bae2..2db69b36d 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/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 bf88aa9ec..29dd4181a 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 feb4e1fcc..fb6b4ffc7 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 1d6a46dfc..d0ec5dbe3 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 c32ac685d..e04257362 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 df37cf701..030e4af6d 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 02947e74e..4534a9bdd 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/rollable-tables.db/roll_random_character__IHpIMJy4xdXZnPFy.json b/data/packs/rollable-tables.db/roll_random_character__IHpIMJy4xdXZnPFy.json index 472d2c595..5bf2830c3 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 000000000..5570b764d --- /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 000000000..86e5c3d8d --- /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" + ] +} 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 000000000..8e44434fc --- /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__anathema__vApjjHkL9nghvbQT.json b/data/packs/spell-effects.db/spell_effect__anathema__vApjjHkL9nghvbQT.json index 14b511eee..6a9900290 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__berserk__sfeg7jRt0oW5qXO4.json b/data/packs/spell-effects.db/spell_effect__berserk__sfeg7jRt0oW5qXO4.json index 150d434dc..bf2f6410d 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", 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 e038e25ce..51cc87fbe 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 461f57e42..f154e1dea 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 e4aa4b904..4073ef25f 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 4a3173eed..b4f9f3ec4 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 920507c45..01af72015 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/cure_wounds__N9NvonT0RL6PyiiV.json b/data/packs/spells.db/cure_wounds__N9NvonT0RL6PyiiV.json index 9d66e15fe..86fedfe87 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 diff --git a/data/packs/spells.db/hypnotize__Udd1so1LKvek6Z3P.json b/data/packs/spells.db/hypnotize__Udd1so1LKvek6Z3P.json index 46d7cba08..bd3873ee7 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 c980b6512..525ceb442 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 0ec3abbf8..a01ae0b03 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/_1_ac_dual_wield__cGGttIknipaR4UIo.json b/data/packs/talents.db/_1_ac_dual_wield__cGGttIknipaR4UIo.json new file mode 100644 index 000000000..60eb45e82 --- /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 3ae86315c..68054ae2a 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": "", diff --git a/data/packs/talents.db/_1_to_ac__aFltU1eRz4bmIlbj.json b/data/packs/talents.db/_1_to_ac__aFltU1eRz4bmIlbj.json index 990773e0b..00a69b85d 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 9090c8ade..4b1a58a4b 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 dad1b9726..7bea09eee 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 2a6951736..3f7f1ed11 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/patron__P4y8Bovr14XbN0PO.json b/data/packs/talents.db/bonus_spellcasting_class__XlKUkXYPhdOGlU9v.json similarity index 55% rename from data/packs/talents.db/patron__P4y8Bovr14XbN0PO.json rename to data/packs/talents.db/bonus_spellcasting_class__XlKUkXYPhdOGlU9v.json index c80347c44..6376d45f8 100644 --- a/data/packs/talents.db/patron__P4y8Bovr14XbN0PO.json +++ b/data/packs/talents.db/bonus_spellcasting_class__XlKUkXYPhdOGlU9v.json @@ -1,12 +1,12 @@ { - "_id": "P4y8Bovr14XbN0PO", - "_key": "!items.effects!4pcEgD8oLA5euovK.P4y8Bovr14XbN0PO", + "_id": "XlKUkXYPhdOGlU9v", + "_key": "!items.effects!mgRrWET5MEaGLVNo.XlKUkXYPhdOGlU9v", "changes": [ { - "key": "", + "key": "system.bonuses.spellcastingClasses", "mode": 2, "priority": null, - "value": "REPLACEME" + "value": "wizard" } ], "description": "", @@ -20,9 +20,9 @@ "startTurn": null, "turns": null }, - "img": "icons/magic/unholy/silhouette-light-fire-blue.webp", - "name": "Patron", - "origin": "Compendium.shadowdark.talents.Item.4pcEgD8oLA5euovK", + "img": "icons/sundries/documents/document-sealed-brown-red.webp", + "name": "Bonus Spellcasting Class", + "origin": null, "statuses": [ ], "system": { diff --git a/data/packs/talents.db/farsight__ranged___dTEZW21LUNoYL3JU.json b/data/packs/talents.db/farsight__ranged___dTEZW21LUNoYL3JU.json index 6633e56ad..105907637 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 7a93e9b64..8506ca099 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": "", diff --git a/data/packs/talents.db/force_gm_reroll__vWtHRiL8lNiisrXy.json b/data/packs/talents.db/force_gm_reroll__vWtHRiL8lNiisrXy.json index 3d8339aaf..586b7aad1 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 4de7edda8..99e92f78d 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/hide_from_creature__qmK8gzmaAcowPP4f.json b/data/packs/talents.db/hide_from_creature__qmK8gzmaAcowPP4f.json index 7d028a93c..c792cac7c 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/hypnotize__rtCyEISzbgf6ZuJb.json b/data/packs/talents.db/hypnotize__rtCyEISzbgf6ZuJb.json index 48e7090f0..b8cd93b5f 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 2cb3694f3..8bc9a7e67 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 e7c827a36..35f8b583e 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 da65c1f84..6355f3544 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 de6263e10..b46238f3a 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 53d099850..72d28d276 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 e8dd5cc18..5eb0904a4 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/learning_spells__LFMT8qZ6ZL3LvYFM.json b/data/packs/talents.db/learning_spells__LFMT8qZ6ZL3LvYFM.json index 424415b2f..dcd8db49f 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/max_2_hp_rolls__8x1pq8tUSbf4UH8G.json b/data/packs/talents.db/max_2_hp_rolls__8x1pq8tUSbf4UH8G.json index 02c551a91..6c0a67595 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/mount__fXOG1tWCuBTQdgEl.json b/data/packs/talents.db/mount__fXOG1tWCuBTQdgEl.json index 3c7f6c163..4ef711fb2 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 3bdc4a169..b368c0319 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/patron__4pcEgD8oLA5euovK.json b/data/packs/talents.db/patron__4pcEgD8oLA5euovK.json index 0af7850b5..8be7f50c9 100644 --- a/data/packs/talents.db/patron__4pcEgD8oLA5euovK.json +++ b/data/packs/talents.db/patron__4pcEgD8oLA5euovK.json @@ -2,7 +2,6 @@ "_id": "4pcEgD8oLA5euovK", "_key": "!items!4pcEgD8oLA5euovK", "effects": [ - "P4y8Bovr14XbN0PO" ], "folder": "8t1Gmpgn1Q6HXJAz", "img": "icons/magic/unholy/silhouette-light-fire-blue.webp", diff --git a/data/packs/talents.db/patron__TcpWrnecaN2k2gYr.json b/data/packs/talents.db/patron_boon__TcpWrnecaN2k2gYr.json similarity index 76% rename from data/packs/talents.db/patron__TcpWrnecaN2k2gYr.json rename to data/packs/talents.db/patron_boon__TcpWrnecaN2k2gYr.json index f383eae47..2495a81eb 100644 --- a/data/packs/talents.db/patron__TcpWrnecaN2k2gYr.json +++ b/data/packs/talents.db/patron_boon__TcpWrnecaN2k2gYr.json @@ -2,8 +2,9 @@ "_id": "TcpWrnecaN2k2gYr", "_key": "!folders!TcpWrnecaN2k2gYr", "color": "#22252b", + "description": "", "folder": null, - "name": "Patron", + "name": "Patron Boon", "sorting": "a", "type": "Item" } diff --git a/data/packs/talents.db/perform__J4KYu5M32T81yE1f.json b/data/packs/talents.db/perform__J4KYu5M32T81yE1f.json deleted file mode 100644 index e8d0cb152..000000000 --- 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.

", - "level": 1, - "predefinedEffects": "", - "source": { - "title": "bard-and-ranger" - }, - "talentClass": "class" - }, - "type": "Talent" -} diff --git a/data/packs/talents.db/presence__J4KYu5M32T81yE1f.json b/data/packs/talents.db/presence__J4KYu5M32T81yE1f.json index e8d0cb152..0d9328bf1 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.

", + "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.

", "level": 1, "predefinedEffects": "", "source": { 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 63c1b55e0..9b7239999 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/relentless__bjZGm9FtinFh2ltV.json b/data/packs/talents.db/relentless__bjZGm9FtinFh2ltV.json index b2d83f8b3..88babbb1d 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 db1e8d84e..dd162e8cb 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": "", diff --git a/data/packs/talents.db/slime_form__A9nJ9MYVegFPDwva.json b/data/packs/talents.db/slime_form__A9nJ9MYVegFPDwva.json index 6bebaf618..8b532a37a 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 1794f0e08..86fa31f2e 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" } diff --git a/i18n/de.yaml b/i18n/de.yaml index 4eecce9d0..50e3590a5 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 @@ -86,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 @@ -103,14 +109,31 @@ 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.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 +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 +146,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 @@ -171,22 +185,24 @@ 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.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.check.requesting: Requesting a check 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? @@ -201,6 +217,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 @@ -211,6 +228,8 @@ 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.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... @@ -246,6 +265,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 @@ -259,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) @@ -298,12 +319,14 @@ 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 +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Drag and Drop Here SHADOWDARK.effect_duration.hours: Hours SHADOWDARK.effect_duration.minutes: Minutes @@ -331,11 +354,15 @@ 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.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.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 +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 @@ -380,10 +407,12 @@ SHADOWDARK.item_type.potion: Potion SHADOWDARK.item_type.spell: Zauber SHADOWDARK.item_type.talent: Talent SHADOWDARK.item_type.weapon: Waffe +SHADOWDARK.item.ammunition: Ammunition 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 @@ -400,7 +429,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) @@ -432,6 +461,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 @@ -447,6 +477,8 @@ 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: 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 @@ -476,7 +508,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 @@ -517,6 +549,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 @@ -568,6 +601,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 @@ -599,6 +633,8 @@ SHADOWDARK.roll.failure: Fehlschlag! ({value}) SHADOWDARK.roll.normal: Normal SHADOWDARK.roll.spell_casting_check: Zauberwurf SHADOWDARK.roll.success: Erfolg! ({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 @@ -647,6 +683,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 @@ -654,10 +691,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 @@ -693,10 +740,20 @@ 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 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 @@ -727,6 +784,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: Priester SHADOWDARK.spell_caster.wizard: Zauberer @@ -746,6 +806,8 @@ 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 SHADOWDARK.talent.type.advantage.initiative: Initiativvorteil @@ -754,6 +816,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 @@ -770,3 +833,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 diff --git a/i18n/en.yaml b/i18n/en.yaml index 31a51034c..c3d77544d 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,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 @@ -86,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 @@ -103,14 +109,31 @@ 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.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 +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 +146,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 @@ -171,22 +185,24 @@ 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.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.check.requesting: Requesting a check 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? @@ -201,6 +217,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 @@ -211,6 +228,8 @@ 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.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... @@ -246,6 +265,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 @@ -259,6 +279,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) @@ -298,12 +319,14 @@ 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 +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 +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Drag and Drop Here SHADOWDARK.effect_duration.hours: Hours SHADOWDARK.effect_duration.minutes: Minutes @@ -331,11 +354,15 @@ 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.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.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 +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 @@ -380,10 +407,12 @@ 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 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 @@ -400,7 +429,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) @@ -432,6 +461,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 @@ -447,6 +477,8 @@ 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.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 @@ -476,7 +508,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 @@ -517,6 +549,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 @@ -568,6 +601,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 @@ -599,6 +633,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 @@ -647,6 +683,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 @@ -654,10 +691,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 @@ -693,10 +740,20 @@ 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 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 @@ -727,6 +784,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 @@ -746,6 +806,8 @@ 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 SHADOWDARK.talent.type.advantage.initiative: Initiative Advantage @@ -754,6 +816,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 @@ -770,3 +833,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 diff --git a/i18n/es.yaml b/i18n/es.yaml index 40e9b97d4..977e54efd 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 @@ -86,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 @@ -103,14 +109,31 @@ 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.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 +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 +146,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 @@ -171,22 +185,24 @@ 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.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.check.requesting: Requesting a check 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?' @@ -201,6 +217,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 @@ -211,6 +228,8 @@ 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.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... @@ -246,6 +265,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 @@ -259,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) @@ -298,12 +319,14 @@ 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 +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Drag and Drop Here SHADOWDARK.effect_duration.hours: Horas SHADOWDARK.effect_duration.minutes: Minutos @@ -331,11 +354,15 @@ 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.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.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 +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 @@ -380,10 +407,12 @@ SHADOWDARK.item_type.potion: Potion SHADOWDARK.item_type.spell: Hechizo SHADOWDARK.item_type.talent: Talento SHADOWDARK.item_type.weapon: Arma +SHADOWDARK.item.ammunition: Ammunition 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 @@ -400,7 +429,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) @@ -432,6 +461,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 @@ -447,6 +477,8 @@ SHADOWDARK.item.effect.source.title: Fuente del ítem SHADOWDARK.item.effect.warning.add_effect_without_value: No se pueden añadir efectos sin seleccionar un valor cuando se le pregunte. 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 @@ -476,7 +508,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 @@ -517,6 +549,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 @@ -568,6 +601,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 @@ -599,6 +633,8 @@ SHADOWDARK.roll.failure: '¡Fallo! ({value})' SHADOWDARK.roll.normal: Normal SHADOWDARK.roll.spell_casting_check: Prueba de lanzamiento de hechizo SHADOWDARK.roll.success: '¡Éxito! ({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 @@ -647,6 +683,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 @@ -654,10 +691,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 @@ -693,10 +740,20 @@ 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 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 @@ -727,6 +784,9 @@ SHADOWDARK.source.core-rules: "Shadowdark RPG: Reglas Basicas" SHADOWDARK.source.cursed-scroll-1: Pergamino Maldito Vol.1, Diablerie! SHADOWDARK.source.cursed-scroll-2: Pergamino Maldito Vol.2, Arenas Rojas SHADOWDARK.source.cursed-scroll-3: Pergamino Maldito Vol.3, Sol Medianoche +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: Clérigo SHADOWDARK.spell_caster.wizard: Mago @@ -746,6 +806,8 @@ 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 SHADOWDARK.talent.type.advantage.initiative: Ventaja de iniciativa @@ -754,6 +816,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 @@ -770,3 +833,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 diff --git a/i18n/fi.yaml b/i18n/fi.yaml index d084ef2ca..fbb097edb 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 @@ -86,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ö @@ -103,14 +109,31 @@ 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.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 +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 +146,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 @@ -171,22 +185,24 @@ 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.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.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ä +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? @@ -201,6 +217,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 @@ -211,6 +228,8 @@ 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.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... @@ -246,6 +265,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 @@ -259,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) @@ -298,12 +319,14 @@ 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: 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 @@ -331,11 +354,15 @@ 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.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.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 +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 @@ -380,10 +407,12 @@ SHADOWDARK.item_type.potion: Rohto/Taikajuoma SHADOWDARK.item_type.spell: Loitsu SHADOWDARK.item_type.talent: Lahjakkuus SHADOWDARK.item_type.weapon: Ase +SHADOWDARK.item.ammunition: Ammunition 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 @@ -400,7 +429,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) @@ -432,6 +461,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 @@ -447,6 +477,8 @@ SHADOWDARK.item.effect.source.title: Lähde SHADOWDARK.item.effect.warning.add_effect_without_value: Ei voi lisätä efektejä valitsematta arvoa pyydettäessä. 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ä @@ -476,7 +508,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 @@ -517,6 +549,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 @@ -568,6 +601,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 @@ -599,6 +633,8 @@ SHADOWDARK.roll.failure: Epäonnistui! ({value}) SHADOWDARK.roll.normal: Normaali SHADOWDARK.roll.spell_casting_check: Loihtimisheitto SHADOWDARK.roll.success: Onnistui! ({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: Ota käyttöön tai poista käytöstä ylimääräinen debuggauksen lokitus SHADOWDARK.settings.debugEnabled.name: Debuggaus päälle/pois SHADOWDARK.settings.effect_panel.show_passive.hint: Jos valittu, efektipaneeli näyttää myös aktiivisia efektejä lahjakkuuksista ja esineistä @@ -647,6 +683,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 @@ -654,10 +691,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 @@ -693,10 +740,20 @@ 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 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 @@ -727,6 +784,9 @@ SHADOWDARK.source.core-rules: "Shadowdark RPG: Ydinsäännöt" 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: Pappi SHADOWDARK.spell_caster.wizard: Velho @@ -746,6 +806,8 @@ 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 SHADOWDARK.talent.type.advantage.initiative: Aloiteheitot edun kanssa @@ -754,6 +816,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 @@ -770,3 +833,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 diff --git a/i18n/fr.yaml b/i18n/fr.yaml index fbfb671ae..482b3212a 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 @@ -86,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 @@ -103,14 +109,31 @@ 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.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 +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 +146,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 @@ -171,22 +185,24 @@ 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.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.check.requesting: Requesting a check 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é ? @@ -201,6 +217,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 @@ -211,6 +228,8 @@ 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.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... @@ -246,6 +265,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é @@ -259,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) @@ -298,12 +319,14 @@ 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 +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Drag and Drop Here SHADOWDARK.effect_duration.hours: Heures SHADOWDARK.effect_duration.minutes: Minutes @@ -331,11 +354,15 @@ 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.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.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 +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 @@ -380,10 +407,12 @@ SHADOWDARK.item_type.potion: Potion SHADOWDARK.item_type.spell: Sort SHADOWDARK.item_type.talent: Talent SHADOWDARK.item_type.weapon: Arme +SHADOWDARK.item.ammunition: Ammunition 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 @@ -400,7 +429,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) @@ -432,6 +461,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 @@ -447,6 +477,8 @@ 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: É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é @@ -476,7 +508,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 @@ -517,6 +549,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 @@ -568,6 +601,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 @@ -599,6 +633,8 @@ SHADOWDARK.roll.failure: Échec! ({value}) SHADOWDARK.roll.normal: Normal SHADOWDARK.roll.spell_casting_check: Jet d'Incantation SHADOWDARK.roll.success: Succès ! ({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 @@ -647,6 +683,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 @@ -654,10 +691,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 @@ -693,10 +740,20 @@ 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 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 @@ -727,6 +784,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: Prêtre SHADOWDARK.spell_caster.wizard: Magicien @@ -746,6 +806,8 @@ 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 SHADOWDARK.talent.type.advantage.initiative: Initiative Advantage @@ -754,6 +816,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 @@ -770,3 +833,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 diff --git a/i18n/ko.yaml b/i18n/ko.yaml index e1cb060e8..4c2e9768f 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 @@ -86,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: 몬스터 불러오기 @@ -103,14 +109,31 @@ 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.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 +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 +146,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: 수영 못함 @@ -171,22 +185,24 @@ 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.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.check.requesting: Requesting a check 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? @@ -201,6 +217,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 @@ -211,6 +228,8 @@ 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.starting_boons.count.label: Starting Boons SHADOWDARK.class.talent_choices.count.label: 재능 카운트 SHADOWDARK.class.talent_choices.label: 재능 선택 SHADOWDARK.class.talent_choices.prompt: 재능을 지정하세요... @@ -246,6 +265,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 @@ -259,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} 를 굴렸습니다 @@ -298,12 +319,14 @@ 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 +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Drag and Drop Here SHADOWDARK.effect_duration.hours: 시간 SHADOWDARK.effect_duration.minutes: 분 @@ -331,11 +354,15 @@ 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.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.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 +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 @@ -380,10 +407,12 @@ SHADOWDARK.item_type.potion: 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: 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: 판금 갑옷 @@ -400,7 +429,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: 능력 점수 향상 (건강) @@ -432,6 +461,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: 무기 명중 피해 보너스 @@ -447,6 +477,8 @@ 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.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: 수량 @@ -476,7 +508,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 @@ -517,6 +549,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 @@ -568,6 +601,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 @@ -599,6 +633,8 @@ 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 @@ -647,6 +683,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: 레벨 @@ -654,10 +691,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: 효과 @@ -693,10 +740,20 @@ 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: 근접 공격 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: 등급 @@ -727,6 +784,9 @@ SHADOWDARK.source.core-rules: "섀도다크 RPG: 코어 룰북" SHADOWDARK.source.cursed-scroll-1: 커스드 스크롤 Vol.1, 다이어블러리! SHADOWDARK.source.cursed-scroll-2: 커스드 스크롤 Vol.2, 레드 샌드 SHADOWDARK.source.cursed-scroll-3: 커스드 스크롤 Vol.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: "섀도다크 RPG: 퀵스타트 세트" SHADOWDARK.spell_caster.priest: 성직자 SHADOWDARK.spell_caster.wizard: 마법사 @@ -746,6 +806,8 @@ 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 굴림 유리함 SHADOWDARK.talent.type.advantage.initiative: 우선권 유리함 @@ -754,6 +816,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: 근접 피해 굴림 보너스 @@ -770,3 +833,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 diff --git a/i18n/pt_BR.yaml b/i18n/pt_BR.yaml index fc394d93a..49d933ff9 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 @@ -86,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 @@ -103,14 +109,31 @@ 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.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 +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 +146,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 @@ -171,22 +185,24 @@ 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.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.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 +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? @@ -201,6 +217,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 @@ -211,6 +228,8 @@ 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.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... @@ -246,6 +265,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 @@ -259,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) @@ -298,12 +319,14 @@ 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: Escreva Aqui +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Arraste e Solte Aqui SHADOWDARK.effect_duration.hours: Horas SHADOWDARK.effect_duration.minutes: Minutos @@ -331,11 +354,15 @@ 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.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.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 +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 @@ -380,10 +407,12 @@ SHADOWDARK.item_type.potion: Poção SHADOWDARK.item_type.spell: Magia SHADOWDARK.item_type.talent: Talento SHADOWDARK.item_type.weapon: Arma +SHADOWDARK.item.ammunition: Ammunition 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 @@ -400,7 +429,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) @@ -432,6 +461,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 @@ -447,6 +477,8 @@ SHADOWDARK.item.effect.source.title: Fonte do Item SHADOWDARK.item.effect.warning.add_effect_without_value: Não é possível adicionar efeitos sem selecionar um valor quando pedido. 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 @@ -476,7 +508,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 @@ -517,6 +549,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 @@ -568,6 +601,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 @@ -599,6 +633,8 @@ SHADOWDARK.roll.failure: Falha! ({value}) SHADOWDARK.roll.normal: Normal SHADOWDARK.roll.spell_casting_check: Teste de Conjuração SHADOWDARK.roll.success: Sucesso! ({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: Ativar ou desativar o registro de depuração adicional SHADOWDARK.settings.debugEnabled.name: Ativar/Desativar Depuração SHADOWDARK.settings.effect_panel.show_passive.hint: Se marcado, o Painel de Efeitos também mostrará efeitos ativos de talentos e itens @@ -647,6 +683,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 @@ -654,10 +691,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 HP +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 @@ -693,10 +740,20 @@ 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 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 @@ -727,6 +784,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: Clérigo SHADOWDARK.spell_caster.wizard: Mago @@ -746,6 +806,8 @@ 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 SHADOWDARK.talent.type.advantage.initiative: Vantagem na Iniciativa @@ -754,6 +816,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 @@ -770,3 +833,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 diff --git a/i18n/ru.yaml b/i18n/ru.yaml new file mode 100644 index 000000000..11b8d6552 --- /dev/null +++ b/i18n/ru.yaml @@ -0,0 +1,861 @@ +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: Количество выборов +SHADOWDARK.ancestry.choice: Выбор +SHADOWDARK.ancestry.fixed: Фиксированный +SHADOWDARK.ancestry.languages.label: Языки предков +SHADOWDARK.ancestry.languages.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.total_value: Общая стоимость +SHADOWDARK.app.item_properties.armor.title: Свойства брони +SHADOWDARK.app.item_properties.languages.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.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: Погасить свет +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: Диапазоны атак +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: Имя персонажа не может быть пустым +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: Полностью случайный персонаж +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 раунд +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. Скопируйте текст предмета из исходного материала. +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.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: Импортировать монстра +SHADOWDARK.apps.monster-importer.instruction1: 1. Скопируйте текст монстра из исходного материала. +SHADOWDARK.apps.monster-importer.instruction2a: 2. Вставьте текст в текстовое поле, следуя формату монстра, показанному в основных правилах. Добавьте пустую строку между каждой способностью. +SHADOWDARK.apps.monster-importer.instruction2b: Название монстра +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.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.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: Предметы не найдены +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: Равные шансы +SHADOWDARK.apps.solodark.button3: Вероятно или определенно +SHADOWDARK.apps.solodark.oracle: Оракул +SHADOWDARK.apps.solodark.phrasing: Задавайте вопрос в утвердительной форме. Вместо "Нет ли орков в этой комнате?", спросите "Есть ли орки в этой комнате?" +SHADOWDARK.apps.solodark.question1: Какой вопрос? +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. Скопируйте текст заклинания из исходного материала. +SHADOWDARK.apps.spell-importer.instruction2a: 2. Вставьте текст в это поле, следуя формату заклинаний, показанному в основных правилах. +SHADOWDARK.apps.spell-importer.instruction2b: Название заклинания +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. Нажмите "Импортировать заклинание". +SHADOWDARK.apps.spell-importer.title: Импорт заклинания +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: Тип благословения +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: Использовать жезл +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: Поскольку {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: "{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.title: Изучение заклинания +SHADOWDARK.chat.spell_roll.title: "{name}, СЛ {spellDC}" +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 +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.check.requesting: Requesting a check +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: Ограниченное использование? +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: Количество выборов +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: Выбор языков +SHADOWDARK.class.language_choices.prompt: Выберите язык... +SHADOWDARK.class.languages.label: Языки класса +SHADOWDARK.class.priest: Жрец +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.starting_boons.count.label: Starting Boons +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.weapons.all.label: Всё оружие +SHADOWDARK.class.weapons.label: Оружие +SHADOWDARK.class.weapons.prompt: Выберите оружие... +SHADOWDARK.class.wizard: Волшебник +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: Изменить ОЗ +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: Выберите свойство +SHADOWDARK.dialog.effect.choice.spell: Выберите заклинание +SHADOWDARK.dialog.effect.choice.weapon_property: Выберите свойство оружия +SHADOWDARK.dialog.effect.choice.weapon: Выберите тип оружия +SHADOWDARK.dialog.effect.choices.title: Параметры эффекта +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: Мастер игры +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 уровня (включая мод. телосложения) +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: Вы можете выбрать максимум {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.delete: Удалить +SHADOWDARK.dialog.item.sell_all: Продать всё +SHADOWDARK.dialog.item.sell: Продать +SHADOWDARK.dialog.item.use: Использовать +SHADOWDARK.dialog.light_source.pick_up.title: Выберите персонажа, которому дать источник света +SHADOWDARK.dialog.roll_mode_label: Режим броска +SHADOWDARK.dialog.roll: Бросок +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_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: Введите здесь +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: Переключить активность +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: Не переносится +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.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.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: Имена +SHADOWDARK.form.section_header.patron.label: Patron +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: Носимое снаряжение +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: Складированное снаряжение +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.ammunition: Ammunition +SHADOWDARK.item.armor_ac_modifier: Модификатор +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: Кольчуга +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: Подавление света +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: Улучшение показателя характеристики (Хар) +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: Преимущество при броске ОЗ +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: Постоянная характеристика (Хар) +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.spellcastingClasses: Bonus Spellcasting Class +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.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: Количество +SHADOWDARK.item.inventory_slots: Слотов на предмет +SHADOWDARK.item.level: Уровень +SHADOWDARK.item.light.is_source: Источник света +SHADOWDARK.item.light.longevity: Долговечность (мин) +SHADOWDARK.item.light.remaining: Осталось (мин) +SHADOWDARK.item.light.template: Шаблон света +SHADOWDARK.item.magic_item.is_magic: Магический предмет +SHADOWDARK.item.magic_item.title: Эффект(ы) магического предмета +SHADOWDARK.item.magic_item.type.attackBonus: Бонус к атаке +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.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: Кол-во атак +SHADOWDARK.item.npc_attack_damage_formula: Формула урона +SHADOWDARK.item.npc_attack_special: Особенности атаки +SHADOWDARK.item.npc_attack_type: Тип +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: Тег источника +SHADOWDARK.item.source: Источник +SHADOWDARK.item.spell_caster_classes: Классы заклинателей +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: На хранении +SHADOWDARK.item.talent_class: Класс таланта +SHADOWDARK.item.treasure_name: Название сокровища +SHADOWDARK.item.treasure_value: Ценность сокровища +SHADOWDARK.item.treasure: Сокровище +SHADOWDARK.item.type: Тип предмета +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: Полуторный меч +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: Метательное Копьё +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: Боевой молот +SHADOWDARK.item.weapon.weapon_properties.label: Weapon Properties +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: Выронен {name} +SHADOWDARK.light-source.pick-up-lightsource.tooltip: Поднять источник света +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: "Макрос '{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.patron.boons_table.label: Patron Boons Table +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: Включить или отключить дополнительное ведение журнала отладки +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.character_notes: Character Notes +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.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: Эффекты +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.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: Рукопашные атаки +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: Уровень +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 НРИ: Набор для быстрого старта" +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.class.patronBoon: Patron Boon +SHADOWDARK.talent.level_gained: Level Gained +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.bonus_caster_classes: Bonus Spellcasting Class +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 +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 diff --git a/i18n/sv.yaml b/i18n/sv.yaml index 0a5c0c79e..3b021d8f3 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 @@ -86,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 @@ -103,14 +109,31 @@ 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.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 +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 +146,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 @@ -171,22 +185,24 @@ 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.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.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 +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? @@ -201,6 +217,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 @@ -211,6 +228,8 @@ 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.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... @@ -246,6 +265,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 @@ -259,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) @@ -298,12 +319,14 @@ 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 +SHADOWDARK.dialog.type_here: Type Here... SHADOWDARK.dragdrop: Drag and Drop Here SHADOWDARK.effect_duration.hours: Timmar SHADOWDARK.effect_duration.minutes: Minuter @@ -331,11 +354,15 @@ 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.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.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 +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 @@ -380,10 +407,12 @@ SHADOWDARK.item_type.potion: Potion SHADOWDARK.item_type.spell: Besvärjelse SHADOWDARK.item_type.talent: Talang SHADOWDARK.item_type.weapon: Vapen +SHADOWDARK.item.ammunition: Ammunition 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 @@ -400,7 +429,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) @@ -432,6 +461,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 @@ -447,6 +477,8 @@ SHADOWDARK.item.effect.source.title: Källa SHADOWDARK.item.effect.warning.add_effect_without_value: Kan inte lägga till effekter utan att välja ett värde när du blir tillfrågad. 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 @@ -476,7 +508,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 @@ -517,6 +549,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 @@ -568,6 +601,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 @@ -599,6 +633,8 @@ SHADOWDARK.roll.failure: Misslyckades! ({value}) SHADOWDARK.roll.normal: Normal SHADOWDARK.roll.spell_casting_check: Besvärjelse Check SHADOWDARK.roll.success: Lyckades! ({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: Aktivera eller inaktivera ytterligare felsökningsloggning SHADOWDARK.settings.debugEnabled.name: Aktivera/inaktivera felsökning SHADOWDARK.settings.effect_panel.show_passive.hint: If checked, the Effect Panel will also show active effects from talents and items @@ -647,6 +683,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å @@ -654,10 +691,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 @@ -693,10 +740,20 @@ 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 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 @@ -727,6 +784,9 @@ SHADOWDARK.source.core-rules: "Shadowdark RPG: Kärnregler" 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: Präst SHADOWDARK.spell_caster.wizard: Trollkarl @@ -746,6 +806,8 @@ 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 SHADOWDARK.talent.type.advantage.initiative: Fördel på Initiativ @@ -754,6 +816,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 @@ -770,3 +833,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 diff --git a/scss/apps/_character-generator.scss b/scss/apps/_character-generator.scss index fb88a33fe..44f9bb6cf 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/scss/apps/_level-up.scss b/scss/apps/_level-up.scss index 5dd774227..0d2a090db 100644 --- a/scss/apps/_level-up.scss +++ b/scss/apps/_level-up.scss @@ -20,13 +20,6 @@ line-height: 1.7; } - .level-up-grid { - display: grid; - gap: 8px; - grid-template-columns: 1fr; - grid-template-rows: auto 75px 105px auto; - } - .hit-points { text-align: center; font-size: 24px; diff --git a/scss/apps/_shadowdarkling-importer.scss b/scss/apps/_shadowdarkling-importer.scss index de985ccff..57b49d230 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/scss/base/_components.scss b/scss/base/_components.scss index ac2a02a25..4d4e4fb2b 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/base/_journal.scss b/scss/base/_journal.scss index 7e942cace..3b021358d 100644 --- a/scss/base/_journal.scss +++ b/scss/base/_journal.scss @@ -112,6 +112,8 @@ line-height: 1; padding-top: 20px; padding-bottom: 10px; + padding-left: 40px; + padding-right: 40px; p { font-family: "Old Newspaper Font"; diff --git a/scss/mixins/_grid.scss b/scss/mixins/_grid.scss index 00bfe1c12..c2f93242d 100644 --- a/scss/mixins/_grid.scss +++ b/scss/mixins/_grid.scss @@ -1,4 +1,4 @@ -$columns: 6; +$count: 10; %grid-styles { margin: 0; @@ -9,15 +9,31 @@ $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-colstart { + @for $i from 1 through $count { + .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 $columns { + @for $i from 1 through $count { .grid-#{$i}-columns { @extend %grid-styles; grid-template-columns: repeat(#{$i}, 1fr); @@ -26,4 +42,6 @@ $columns: 6; } @include grid-colspan; +@include grid-colstart; +@include grid-rowspan; @include grid-x-columns; diff --git a/scss/shadowdark.scss b/scss/shadowdark.scss index 752f9d9f6..37219d9de 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/scss/sheets/_actor.scss b/scss/sheets/_actor.scss index 0dc5f64ae..d28e880a3 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 df01b6f38..1597a6fa4 100644 --- a/scss/sheets/_item.scss +++ b/scss/sheets/_item.scss @@ -1,10 +1,11 @@ .shadowdark.item { + min-width: 550px; + .effect-list-changes { display: grid; grid-template-columns: 2fr 1fr; gap: 4px 8px; - text-align: center; font-size: 12px; flex: 2; diff --git a/scss/sheets/actors/_player.scss b/scss/sheets/actors/_player.scss index 616fbc610..54a194223 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/assets/mappings/map-shadowdarkling.json b/system/assets/mappings/map-shadowdarkling.json index b9d7bc62f..eb75b3520 100644 --- a/system/assets/mappings/map-shadowdarkling.json +++ b/system/assets/mappings/map-shadowdarkling.json @@ -124,7 +124,9 @@ "PlusTwoWISCHAOrPlus1SpellCasting", "GainTwoBlackLotusTalents", "Plus2INTDEXOrPlus1Elixir", - "BeastMasterAnimalType" + "BeastMasterAnimalType", + "Plus2INTOrPlus1Casting", + "+2 Stat Points" ], "weapon": { "Bastard sword": "Compendium.shadowdark.gear.Item.1T8oUkfkBtYTLNF3", diff --git a/system/shadowdark.mjs b/system/shadowdark.mjs index 4b95e28c8..3154bb6be 100644 --- a/system/shadowdark.mjs +++ b/system/shadowdark.mjs @@ -1,9 +1,12 @@ +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"; @@ -14,8 +17,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, @@ -30,12 +31,14 @@ import listenOnSocket from "./src/socket.mjs"; globalThis.shadowdark = { apps, + chat: ChatSD, compendiums: CompendiumsSD, config: SHADOWDARK, debug: Logger.debug, defaults: SHADOWDARK.DEFAULTS, dice, documents, + effects: ActiveEffectsSD, error: Logger.error, log: Logger.log, macro: ShadowdarkMacro, @@ -75,9 +78,10 @@ Hooks.once("init", () => { registerHandlebarsHelpers(); registerSystemSettings(); + registerTextEditorEnrichers(); loadTemplates(); - game.shadowdark.moduleArt = new ModuleArt(); + UtilitySD.loadLegacyArtMappings(); // Register sheet application classes Actors.unregisterSheet("core", ActorSheet); @@ -141,8 +145,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/apps/CharacterGeneratorSD.mjs b/system/src/apps/CharacterGeneratorSD.mjs index a0ce3e7b8..30c15de68 100644 --- a/system/src/apps/CharacterGeneratorSD.mjs +++ b/system/src/apps/CharacterGeneratorSD.mjs @@ -1,55 +1,46 @@ export default class CharacterGeneratorSD extends FormApplication { + + LEVEL_ZERO_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: {}, + patron: { + formattedDescription: "", + name: "", + choose: false, + required: false, + }, + 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 +88,7 @@ export default class CharacterGeneratorSD extends FormApplication { deity: "", class: "", languages: [], + patron: "", coins: { gp: 0, sp: 0, @@ -113,6 +105,7 @@ export default class CharacterGeneratorSD extends FormApplication { } + /** @inheritdoc */ static get defaultOptions() { return foundry.utils.mergeObject(super.defaultOptions, { @@ -124,17 +117,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); @@ -158,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() ); @@ -168,61 +168,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 +248,17 @@ 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})`; + } + + 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(); @@ -297,216 +306,351 @@ 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"; - } + _clearPatron() { + this.patron = null; + this.formData.actor.system.patron = null; - // 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; + this.formData.patron.choose = false; + this.formData.patron.required = false; + this.formData.patron.name = ""; + this.formData.patron.formattedDescription = ""; - // 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); + if (this.class.system.patron.required) { + this.formData.patron.choose = true; + this.formData.patron.required = true; } - this.formData.weapons = weaponData; - - this.class = classObj; - this.formData.classDesc = await this._formatDescription(classObj.system.description); - await this._loadLanguages(randomize); + this.render(); } - 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 = []; + async _createCharacter() { - if (ancestryObj) { - let talentData = []; + // 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; + } - 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); - } - } + const allItems = []; - // fixed talent choice - if (talentData.length <= ancestryObj.system.talentChoiceCount) { - this.formData.ancestryTalents.fixed = talentData; - } - // multiple talent options. - else { - this.formData.ancestryTalents.choice = talentData; - if (randomize) { - let tempInt = this._getRandom(talentData.length); - this.formData.ancestryTalents.selection.push(talentData[tempInt]); - } - } + // 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, + ]; + + // load talents with selection of options + for (const talentItem of allTalents) { + allItems.push(await shadowdark.effects.createItemWithEffect(talentItem)); } - this.ancestry = ancestryObj; - await this._loadLanguages(randomize); - } + // Check for Name + if (this.formData.actor.name === "" ) { + ui.notifications.error( game.i18n.localize("SHADOWDARK.apps.character-generator.error.name")); + return; + } + + // 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); + } + } + } + + // 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. + else { + this.formData.ancestryTalents.choice = talentData; + if (randomize) { + let tempInt = this._getRandom(talentData.length); + this.formData.ancestryTalents.selection.push(talentData[tempInt]); + } + } + } + + this.ancestry = ancestryObj; + await this._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(); + + 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(); + } + + } + - async _loadLanguages(randomize) { + async _loadLanguages() { let langData = { fixed: [], togglable: false, @@ -577,320 +721,202 @@ 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)); - } - - // 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)); - } + async _loadPatron(UuID) { + this.patron = await this._getClassObject(UuID); - // adjust Common choices - this.formData.langData.common.unselected = this.formData.commonLanguages.filter( - x => !this.formData.actor.system.languages.includes(x)); + this.formData.patron.choose = false; + this.formData.patron.name = this.patron.name; + this.formData.patron.required = true; - // adjust Rares choices - this.formData.langData.rare.unselected = this.formData.rareLanguages.filter( - x => !this.formData.actor.system.languages.includes(x)); + let fDesc = await this._formatDescription(this.patron.system.description); + this.formData.patron.formattedDescription = fDesc; } - _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 _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(); + 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"; } - this.formData.langData[key].full = true; } - 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 _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); } - 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); - } - } - _getRandom(max) { - return Math.floor(Math.random() * max); + _randomizeBackground() { + let tempInt = this._getRandom(this.formData.backgrounds.size); + this.formData.actor.system.background = [...this.formData.backgrounds][tempInt].uuid; } - async _roll(formula) { - let roll = await new Roll(formula).evaluate(); - return roll._total; - } - _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); - }); - } + async _randomizeClass() { + if (this.formData.level0) return; - _removeParagraphs(value) { - return value.replace(/(]+?>|

|<\/p>)/img, ""); + 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 _formatDescription(text) { - const description = await TextEditor.enrichHTML( - jQuery(text.replace(/

<\/p>/g, " ")).text(), - { - async: false, - cache: false, - } - ); - return description; + _randomizeDeity() { + let tempInt = this._getRandom(this.formData.deities.size); + this.formData.actor.system.deity = [...this.formData.deities][tempInt].uuid; } - _addAncestryTalent(uuid) { - let talentObj = this.formData.ancestryTalents.choice.find(x => x.uuid === uuid); - this.formData.ancestryTalents.selection.push(talentObj); - } - _clearAncestryTalents() { - this.formData.ancestryTalents.selection = []; - this.render(); - } + async _randomizeGear() { + const table = await fromUuid(this.LEVEL_ZERO_GEAR_TABLE_UUID); - _addClassTalent(uuid) { - let talentObj = this.formData.classTalents.choice.find(x => x.uuid === uuid); - this.formData.classTalents.selection.push(talentObj); - } + if (!table) return; - _clearClassTalents() { - this.formData.classTalents.selection = []; - this.render(); - } + try { + const draw = await table.draw({displayChat: false}); - _editLanguage() { - if (this.formData.langData.edit === false) { - this.formData.langData.edit = true; + this.formData.gearSelected = ( + await shadowdark.utils.getItemsFromRollResults(draw.results) + ).sort((a, b) => a.name.localeCompare(b.name)); } - else { - this.formData.langData.edit = false; + catch(error) { + shadowdark.error(error); } - this.render(); } - static async createActorFromData(characterData, characterItems, userId, level0) { - if (!shadowdark.utils.canCreateCharacter()) return; - const newActor = await Actor.create(characterData); + async _randomizeGold() { + let startingGold = await this._roll("2d6") * 5; + this.formData.actor.system.coins.gp = startingGold; + } - if (!newActor) { - return ui.notifications.error( - game.i18n.format("SHADOWDARK.apps.character-generator.error.create", {error: error}) - ); - } - await newActor.createEmbeddedDocuments("Item", characterItems); + async _randomizeHandler(event) { + const eventStr = event.target.name; - let maxHP = newActor.system.attributes.hp.base + newActor.system.attributes.hp.bonus; - let newHP = maxHP; + const randomizationTasks = this._getRandomizationTasks(eventStr); - await newActor.update({ - "system.attributes.hp.max": maxHP, - "system.attributes.hp.value": newHP, - }); + 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(); - if (userId !== game.userId) { - const ownership = newActor.ownership; - ownership[userId] = CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER; + shadowdark.utils.diceSound(); - await newActor.update({ownership}); + this.render(); + } - const user = game.users.get(userId); - if (user && !user.character) { - // User doesn't have a character assigned, so assign this new - // one they just created - user.update({character: newActor.id}); - } + 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} + ); - game.socket.emit("system.shadowdark", { - type: "openNewCharacter", - payload: {actorId: newActor.id, userId, level0}, - }); + 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}`; + } + } - newActor.sheet.render(true); - return ui.notifications.info( - game.i18n.localize("SHADOWDARK.apps.character-generator.success"), - {permanent: false} - ); - } + async _randomizePatron() { + const tempInt = this._getRandom(this.formData.patrons.size); + const patronUuid = [...this.formData.patrons][tempInt].uuid; + + this.formData.actor.system.patron = patronUuid; + await this._loadPatron(patronUuid, true); } - async _createCharacter() { - // sets initial totals on all stats + _removeParagraphs(value) { + return value.replace(/(]+?>|

|<\/p>)/img, ""); + } + + + 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 @@ -912,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); @@ -921,4 +947,99 @@ 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; + + 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); + 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/apps/CompendiumItemSelectors/PatronSelector.mjs b/system/src/apps/CompendiumItemSelectors/PatronSelector.mjs new file mode 100644 index 000000000..95b1fac3e --- /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 5884ddc29..ee15ada88 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"; diff --git a/system/src/apps/EffectPanelSD.mjs b/system/src/apps/EffectPanelSD.mjs index d723542ce..fd7531b4a 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, diff --git a/system/src/apps/LevelUpSD.mjs b/system/src/apps/LevelUpSD.mjs index 8f29c0206..8fd06a21c 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) { @@ -16,10 +8,13 @@ export default class LevelUpSD extends FormApplication { hp: 0, hpEdit: false, talent: false, + boon: false, }; this.data.actor = game.actors.get(uid); this.data.talents = []; this.data.spells = {}; + this.data.talentsRolled = false; + this.data.talentsChosen = false; for (let i = 1; i <= 5; i++) { this.data.spells[i] = { @@ -34,6 +29,7 @@ export default class LevelUpSD extends FormApplication { static get defaultOptions() { return foundry.utils.mergeObject(super.defaultOptions, { classes: ["shadowdark", "level-up"], + height: "auto", width: 300, resizable: false, closeOnSubmit: true, @@ -65,9 +61,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) ); @@ -80,6 +81,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) ); @@ -101,21 +106,33 @@ 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.isSpellCaster = (this.data.class.system.spellcasting.class !== "__not_spellcaster__"); + this.data.totalSpellsToChoose = 0; + + this.data.patron = await fromUuid(this.data.actor.system.patron); - if (this.data.isSpellCaster) { + 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 === "" ? 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 +150,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 { @@ -141,6 +159,9 @@ export default class LevelUpSD extends FormApplication { } } + this.data.talentsRolled = this.data.rolls.talent || this.data.rolls.boon; + this.data.talentsChosen = this.data.talents.length > 0; + return this.data; } @@ -164,21 +185,29 @@ export default class LevelUpSD extends FormApplication { } } + async _viewBoonTable() { + this.data.boonTable.sheet.render(true); + } + async _viewTalentTable() { this.data.talentTable.sheet.render(true); } async _openSpellBook() { - this.spellbook.render(true); + 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; @@ -198,12 +227,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"); @@ -220,7 +267,11 @@ export default class LevelUpSD extends FormApplication { } } + if (this.data.targetLevel > 1) { + this.data.rolls.boon = true; + } this.data.rolls.talent = true; + this.render(); } @@ -228,7 +279,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/apps/RequestCheckSD.mjs b/system/src/apps/RequestCheckSD.mjs new file mode 100644 index 000000000..d48abaa4a --- /dev/null +++ b/system/src/apps/RequestCheckSD.mjs @@ -0,0 +1,104 @@ +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, + }); + } + + + 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(), + { + templateData: { + title: game.i18n.localize("SHADOWDARK.check.requesting"), + body: `[[check ${dc} ${stat}]]`, + }, + }, + CONST.DICE_ROLL_MODES.PUBLIC + ); + } + + + 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": + RequestCheckSD.displayRequest(data.difficulty, data.stat); + break; + default: + shadowdark.error("Request Check Error"); + } + } + +} diff --git a/system/src/apps/ShadowdarklingImporterSD.mjs b/system/src/apps/ShadowdarklingImporterSD.mjs index 0047bc868..67b190328 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"); @@ -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, diff --git a/system/src/apps/_module.mjs b/system/src/apps/_module.mjs index d474c5c62..ee8f45335 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/src/config.mjs b/system/src/config.mjs index b13faf2d3..30d120c1c 100644 --- a/system/src/config.mjs +++ b/system/src/config.mjs @@ -48,9 +48,9 @@ SHADOWDARK.DAMAGE_DICE = [ ]; SHADOWDARK.BOON_TYPES = { + blessing: "SHADOWDARK.boons.blessing", oath: "SHADOWDARK.boons.oath", secret: "SHADOWDARK.boons.secret", - blessing: "SHADOWDARK.boons.blessing", }; SHADOWDARK.DEFAULTS = { @@ -73,9 +73,10 @@ SHADOWDARK.DEFAULTS = { "Gem": "icons/commodities/gems/gem-faceted-navette-red.webp", "Language": "icons/tools/scribal/ink-quill-pink.webp", "NPC Attack": "icons/skills/melee/weapons-crossed-swords-yellow.webp", + "NPC Feature": "icons/creatures/abilities/dragon-breath-purple.webp", "NPC Special Attack": "icons/magic/death/weapon-sword-skull-purple.webp", "NPC Spell": "icons/magic/symbols/runes-star-magenta.webp", - "NPC Feature": "icons/creatures/abilities/dragon-breath-purple.webp", + "Patron": "icons/magic/unholy/silhouette-light-fire-blue.webp", "Potion": "icons/consumables/potions/bottle-corked-red.webp", "Property": "icons/sundries/documents/document-torn-diagram-tan.webp", "Scroll": "icons/sundries/scrolls/scroll-runed-brown-purple.webp", @@ -139,12 +140,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 = { @@ -209,6 +213,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", }; @@ -220,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, @@ -319,126 +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", + 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", @@ -447,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", @@ -456,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, @@ -492,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", }, @@ -531,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/dice/RollSD.mjs b/system/src/dice/RollSD.mjs index a0437947c..8cd12e697 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; } @@ -709,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 9efb4fc4f..77b979533 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(); @@ -97,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, }); @@ -275,6 +246,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({ @@ -283,6 +268,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 @@ -344,7 +342,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 ); } @@ -377,7 +375,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 ); } @@ -385,7 +383,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 ); } @@ -849,6 +847,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); @@ -871,10 +875,64 @@ 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(); + + // 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) + ); + } + + return playerSpellClasses.sort((a, b) => a.name.localeCompare(b.name)); + } + + async getSpellcastingAbility() { - const characterClass = await this.getClass(); + const spellcasterClasses = await this.getSpellcasterClasses(); + + let chosenAbility = ""; + let chosenAbilityModifier = 0; - return characterClass?.system?.spellcasting?.ability ?? ""; + 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 chosenAbility; } async getTitle() { @@ -921,13 +979,19 @@ export default class ActorSD extends Actor { } - async isSpellcaster() { + async isSpellCaster() { const characterClass = await this.getClass(); 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; } @@ -1008,6 +1072,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(); @@ -1057,10 +1163,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; @@ -1152,6 +1267,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); } @@ -1290,6 +1412,26 @@ export default class ActorSD extends Actor { async useAbility(itemId, options={}) { const item = this.items.get(itemId); + + if (item.type === "NPC Feature") return 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, { @@ -1298,88 +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 (typeof item.system.ability !== "undefined") { - 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); - - 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, - 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/CompendiumsSD.mjs b/system/src/documents/CompendiumsSD.mjs index 750a00402..5483c195e 100644 --- a/system/src/documents/CompendiumsSD.mjs +++ b/system/src/documents/CompendiumsSD.mjs @@ -54,6 +54,17 @@ export default class CompendiumsSD { return this._collectionFromArray(docs); } + static async ammunition(filterSources=true) { + 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) + ); + } + static async ancestries(filterSources=true) { return CompendiumsSD._documents("Item", "Ancestry", filterSources); } @@ -194,6 +205,22 @@ 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 + ); + + return this._collectionFromArray( + documents.filter( + document => document.name.match(/patron\s+boons/i) + ) + ); + } + static async potions(filterSources=true) { return CompendiumsSD._documents("Item", "Potion", filterSources); } @@ -254,11 +281,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 322e301da..2eebbcf41 100644 --- a/system/src/documents/ItemSD.mjs +++ b/system/src/documents/ItemSD.mjs @@ -10,6 +10,21 @@ 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 + && 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 +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(); @@ -53,7 +76,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(); } @@ -68,35 +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 messageStyles = shadowdark.utils.getMessageStyles(); - - const chatData = { - user: game.user.id, - type: messageStyles.OTHER, - content: html, - flavor: this.system.chatFlavor || 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 ""; @@ -136,12 +139,13 @@ 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); } + async getEnrichedDescription() { return await TextEditor.enrichHTML( this.system.description, @@ -151,6 +155,7 @@ export default class ItemSD extends Item { ); } + getItemTemplate(basePath) { switch (this.type) { case "Armor": @@ -168,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 } @@ -188,26 +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"; @@ -228,9 +244,6 @@ export default class ItemSD extends Item { return roll; } - /* -------------------------------------------- */ - /* Methods */ - /* -------------------------------------------- */ async hasProperty(property) { property = property.slugify(); @@ -331,179 +344,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 ( - [ - "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 = []; @@ -515,7 +355,6 @@ export default class ItemSD extends Item { return propertyItems; } - // Duration getters /** * Returns the total duration depending on the type @@ -536,6 +375,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/enrichers.mjs b/system/src/enrichers.mjs new file mode 100644 index 000000000..0e399c05a --- /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/handlebars.mjs b/system/src/handlebars.mjs index 040c9c612..44602c38a 100644 --- a/system/src/handlebars.mjs +++ b/system/src/handlebars.mjs @@ -8,6 +8,42 @@ 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("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 ) + + (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 +83,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 +98,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 +132,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) { @@ -197,4 +215,5 @@ export default function registerHandlebarsHelpers() { const html = options.fn(this); return html.replace(rgx, "$& selected"); }); + } diff --git a/system/src/migrations/MigrationRunnerSD.mjs b/system/src/migrations/MigrationRunnerSD.mjs index 04962c86f..3e06a7319 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; 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 000000000..337b746ae --- /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/Update_241028_1.mjs b/system/src/migrations/updates/Update_241028_1.mjs new file mode 100644 index 000000000..d304ba32f --- /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 c9d8ae4e9..aa0713ee3 100644 --- a/system/src/migrations/updates/_module.mjs +++ b/system/src/migrations/updates/_module.mjs @@ -22,3 +22,5 @@ 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"; +export {default as Update_241028_1} from "./Update_241028_1.mjs"; diff --git a/system/src/settings.mjs b/system/src/settings.mjs index 10052aca9..f3c7b38c2 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", @@ -156,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/ActorSheetSD.mjs b/system/src/sheets/ActorSheetSD.mjs index f57825764..87b194225 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); @@ -199,6 +265,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/ItemSheetSD.mjs b/system/src/sheets/ItemSheetSD.mjs index b44ed5139..75714033e 100644 --- a/system/src/sheets/ItemSheetSD.mjs +++ b/system/src/sheets/ItemSheetSD.mjs @@ -28,7 +28,7 @@ export default class ItemSheetSD extends ItemSheet { /** @inheritdoc */ get template() { - return "systems/shadowdark/templates/items/item.hbs"; + return `systems/shadowdark/templates/items/${this.item.typeSlug}.hbs`; } /** @inheritdoc */ @@ -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] = @@ -99,6 +87,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(), @@ -153,6 +142,7 @@ export default class ItemSheetSD extends ItemSheet { }; } + async getClassSelectorConfigs(context) { const [selectedArmor, availableArmor] = await shadowdark.utils.getDedupedSelectedItems( @@ -246,7 +236,7 @@ export default class ItemSheetSD extends ItemSheet { }; const spellcastingClasses = - await shadowdark.compendiums.spellcastingClasses(); + await shadowdark.compendiums.spellcastingBaseClasses(); context.spellcastingClasses = {}; for (const spellcastingClass of spellcastingClasses) { @@ -272,10 +262,24 @@ 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( - await shadowdark.compendiums.spellcastingClasses(), + await shadowdark.compendiums.spellcastingBaseClasses(), this.item.system.class ?? [] ); @@ -290,6 +294,7 @@ export default class ItemSheetSD extends ItemSheet { }; } + /** @override */ async getData(options) { let loadingDialog; @@ -301,107 +306,74 @@ 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; - - if ((item.type === "Class") && (item.system.spellcasting.class !== "__not_spellcaster__")) { - this.spellsKnown = true; - } - else { - this.spellsKnown = false; - } - - const showTab = { - details: [ - "Ancestry", - "Armor", - "Basic", - "Boon", - "Class Ability", - "Class", - "Deity", - "Effect", - "Gem", - "Language", - "NPC Attack", - "NPC Special Attack", - "NPC Spell", - "Potion", - "Property", - "Scroll", - "Spell", - "Talent", - "Wand", - "Weapon", - ].includes(item.type), - - effects: ( - ["Boon", "Effect", "Talent"].includes(item.type) - || item.system.magicItem - ) ? true : false, - light: item.system.light?.isSource ?? false, - description: true, - titles: item.type === "Class", - spellsknown: this.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 shadowdark.effects.getPredefinedEffectsList(), + system: context.item.system, }); + context.descriptionHTML = await TextEditor.enrichHTML( + context.system.description, + { + secrets: context.item.isOwner, + async: true, + relativeTo: this.item, + } + ); + + // 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`; - if (["Ancestry"].includes(item.type)) { - await this.getAncestrySelectorConfigs(context); + if (typeof this[itemTypeFunctionName] === "function") { + shadowdark.debug(`Calling Item type-specific method ${itemTypeFunctionName}()`); + await this[itemTypeFunctionName](context); } - if (["Class"].includes(item.type)) { - await this.getClassSelectorConfigs(context); - } + if (loadingDialog) loadingDialog.close({force: true}); - if (["Scroll", "Spell", "Wand"].includes(item.type)) { - await this.getSpellSelectorConfigs(context); - } + return context; + } - if (["Armor", "Weapon"].includes(item.type)) { - context.propertyItems = await item.propertyItems(); - const mySlug = item.name.slugify(); + // ------------------------------------------------------------------------ + // 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 (item.type === "Armor") { - context.baseArmor = await shadowdark.utils.getSlugifiedItemList( - await shadowdark.compendiums.baseArmor() - ); + async getSheetDataForAncestryItem(context) { + await this.getAncestrySelectorConfigs(context); + } - delete context.baseArmor[mySlug]; - } - if (item.type === "Weapon") { - context.baseWeapons = await shadowdark.utils.getSlugifiedItemList( - await shadowdark.compendiums.baseWeapons() - ); - delete context.baseWeapons[mySlug]; - } - } + async getSheetDataForArmorItem(context) { + context.propertyItems = await context.item.propertyItems(); + + const mySlug = context.item.name.slugify(); + + context.baseArmor = await shadowdark.utils.getSlugifiedItemList( + await shadowdark.compendiums.baseArmor() + ); + + delete context.baseArmor[mySlug]; + } - if (item.type === "Basic" && item.system.light.isSource) { + + async getSheetDataForBasicItem(context) { + const item = context.item; + + if (item.system.light.isSource) { if (!item.system.light.hasBeenUsed) { // Unused light sources should always have their remaining time // at maximum @@ -420,55 +392,102 @@ export default class ItemSheetSD extends ItemSheet { ); } } + } - if (context.showMagicItemCheckbox || item.system.canBeEquipped - || item.type === "Basic" || item.type === "Effect") { - 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; - } - } - } + async getSheetDataForClassItem(context) { + await this.getClassSelectorConfigs(context); - if (item.type === "NPC Attack" || item.type === "NPC Special Attack") { - context.npcAttackRangesDisplay = item.npcAttackRangesDisplay(); - } + context.spellsKnown = + context.item.system.spellcasting.class !== "__not_spellcaster__"; + } - if (["Effect", "Potion", "Scroll", "Spell", "NPC Spell", "Wand"].includes(item.type)) { - context.variableDuration = CONFIG.SHADOWDARK.VARIABLE_DURATIONS - .includes(item.system.duration.type); - } + async getSheetDataForEffectItem(context) { + context.variableDuration = CONFIG.SHADOWDARK.VARIABLE_DURATIONS + .includes(context.item.system.duration.type); + } + + + async getSheetDataForNPCAttackItem(context) { + context.npcAttackRangesDisplay = context.item.npcAttackRangesDisplay(); + } + - if (context.showTab.effects) { - context.predefinedEffects = await this._getPredefinedEffectsList(); - context.effects = item.effects; + 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 = {}; + + 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 getSheetDataForTalentItem(context) { + context.showsLevelInput = { + ancestry: false, + class: false, + level: true, + patronBoon: true, + }; + } + + + 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]; } - /* -------------------------------------------- */ - /* Event Handling */ - /* -------------------------------------------- */ /** @inheritdoc */ _canDragDrop(selector) { @@ -516,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 @@ -852,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. @@ -990,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 17a6fde19..a53a164f2 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 ?? false; context.classTitle = await this.actor.getTitle(); + context.characterPatron = await this.actor.getPatron(); + context.usePulpMode = game.settings.get("shadowdark", "usePulpMode"); context.editingHp = this.editingHp; @@ -214,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; } @@ -229,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); } } @@ -254,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); @@ -433,7 +449,14 @@ export default class PlayerSheetSD extends ActorSheetSD { async _onCreateBoon(event) { new Dialog( { title: game.i18n.localize("SHADOWDARK.dialog.create_custom_item"), - content: await renderTemplate("systems/shadowdark/templates/dialog/create-new-boon.hbs"), + content: await renderTemplate( + "systems/shadowdark/templates/dialog/create-new-boon.hbs", + { + boonTypes: CONFIG.SHADOWDARK.BOON_TYPES, + default: "blessing", + level: this.actor?.system?.level?.value ?? 0, + } + ), buttons: { create: { label: game.i18n.localize("SHADOWDARK.dialog.create"), @@ -444,6 +467,7 @@ export default class PlayerSheetSD extends ActorSheetSD { type: "Boon", system: { boonType: html.find("#item-boonType").val(), + level: Number(html.find("#item-boonLevel").val()), }, }; const [newItem] = await this.actor.createEmbeddedDocuments("Item", [itemData]); @@ -578,17 +602,8 @@ 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; - } - - let spellbook = new shadowdark.apps.SpellBookSD( - spellClass, - this.actor.id - ); - spellbook.render(true); + event.preventDefault(); + this.actor.openSpellBook(); } async _onlevelUp(event) { @@ -769,20 +784,13 @@ export default class PlayerSheetSD extends ActorSheetSD { async _prepareItems(context) { const gems = []; - const boons = { - blessing: { - label: game.i18n.localize("SHADOWDARK.boons.blessing"), + const boons = {}; + for (const [key, label] of Object.entries(CONFIG.SHADOWDARK.BOON_TYPES)) { + boons[key] = { + label, items: [], - }, - oath: { - label: game.i18n.localize("SHADOWDARK.boons.oath"), - items: [], - }, - secret: { - label: game.i18n.localize("SHADOWDARK.boons.secret"), - items: [], - }, - }; + }; + } const inventory = { equipped: [], @@ -840,8 +848,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. @@ -952,7 +965,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/src/system/ActiveEffectsSD.mjs b/system/src/system/ActiveEffectsSD.mjs new file mode 100644 index 000000000..a46fe3917 --- /dev/null +++ b/system/src/system/ActiveEffectsSD.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/system/ChatSD.mjs b/system/src/system/ChatSD.mjs new file mode 100644 index 000000000..ee215594f --- /dev/null +++ b/system/src/system/ChatSD.mjs @@ -0,0 +1,56 @@ +export default class ChatSD { + + static async _renderChatMessage( + actor, + data, + template, + mode + ) { + const html = await renderTemplate(template, data.templateData); + + if (!mode) { + mode = game.settings.get("core", "rollMode"); + } + + const chatData = { + content: html, + flags: { "core.canPopout": true }, + flavor: data.flavor ?? undefined, + rollMode: mode, + speaker: ChatMessage.getSpeaker({ + actor: actor, + }), + type: data.type ?? CONST.CHAT_MESSAGE_STYLES.OTHER, + user: game.user.id, + }; + + 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 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/src/templates.mjs b/system/src/templates.mjs index d4a1f5b4a..050677eca 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", @@ -19,50 +23,131 @@ 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/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", - "systems/shadowdark/templates/items/partials/active-effects.hbs", - "systems/shadowdark/templates/items/partials/ancestry.hbs", - "systems/shadowdark/templates/items/partials/armor.hbs", - "systems/shadowdark/templates/items/partials/boon.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/duration.hbs", - "systems/shadowdark/templates/items/partials/effect.hbs", - "systems/shadowdark/templates/items/partials/item-category.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", - "systems/shadowdark/templates/items/partials/npc-spell.hbs", - "systems/shadowdark/templates/items/partials/properties.hbs", - "systems/shadowdark/templates/items/partials/property.hbs", - "systems/shadowdark/templates/items/partials/slots.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/tabs/description.hbs", - "systems/shadowdark/templates/items/tabs/details.hbs", - "systems/shadowdark/templates/items/tabs/effects.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", - "systems/shadowdark/templates/partials/details/weapon.hbs", - "systems/shadowdark/templates/partials/weapon-attack.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/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", + "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/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", + "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/header.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/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/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", + "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", + "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", + "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/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/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/scroll/details-tab.hbs", + "systems/shadowdark/templates/items/spell/details-tab.hbs", + "systems/shadowdark/templates/items/talent/details-tab.hbs", + "systems/shadowdark/templates/items/wand/details-tab.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", + "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 dc871a31b..93792bd9f 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,16 +69,52 @@ 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; } + + // 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. * - * @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 @@ -87,6 +138,7 @@ export default class UtilitySD { return [selectedItems, unselectedItems]; } + static async getFromUuid(uuid) { const itemObj = await fromUuid(uuid); if (itemObj) { @@ -97,6 +149,7 @@ export default class UtilitySD { } } + static getFromUuidSync(uuid) { const itemObj = fromUuidSync(uuid); if (itemObj) { @@ -107,14 +160,25 @@ export default class UtilitySD { } } - static getMessageStyles() { - const messageStyles = this.foundryMinVersion(12) - ? CONST.CHAT_MESSAGE_STYLES - : CONST.CHAT_MESSAGE_TYPES; - return messageStyles; + 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 getNextDieInList(die, allDice) { if (die === false) return die; @@ -127,12 +191,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 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 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() { @@ -153,125 +260,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(); @@ -302,9 +297,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}); - } } diff --git a/system/src/utils/module-art.mjs b/system/src/utils/module-art.mjs deleted file mode 100644 index 4471853f0..000000000 --- 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}); - } -} diff --git a/system/system.json b/system/system.json index 82cdb4ba2..0b3bafee4 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" @@ -69,6 +69,11 @@ "name": "Português (Brasil)", "path": "i18n/pt_BR.json" }, + { + "lang": "ru", + "name": "Russian", + "path": "i18n/ru.json" + }, { "lang": "sv", "name": "Svenska", @@ -122,15 +127,6 @@ "private": false, "flags": {} }, - { - "name": "deities", - "label": "Deities", - "system": "shadowdark", - "path": "packs/deities", - "type": "Item", - "private": false, - "flags": {} - }, { "name": "documentation", "label": "Documentation", @@ -185,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", @@ -293,8 +298,8 @@ "backgrounds", "class-abilities", "classes", - "deities", "languages", + "patrons-and-deities", "talents" ] }, diff --git a/system/template.json b/system/template.json index d75359455..f6f09f41d 100644 --- a/system/template.json +++ b/system/template.json @@ -115,6 +115,7 @@ "rangedAttackBonus": 0, "rangedDamageBonus": 0, "spellcastingCheckBonus": 0, + "spellcastingClasses": [], "unarmoredAcBonus": 0, "weaponDamageDieD12": [], "weaponDamageDieImprovementByProperty": [], @@ -137,6 +138,7 @@ "remaining": 0, "available": false }, + "patron": "", "slots": 10 } }, @@ -157,6 +159,7 @@ "NPC Special Attack", "NPC Spell", "NPC Feature", + "Patron", "Potion", "Property", "Scroll", @@ -209,6 +212,7 @@ "sp": 0 }, "equipped": false, + "isAmmunition": false, "isPhysical": true, "magicItem": false, "quantity": 1, @@ -261,7 +265,8 @@ "templates": [ "common" ], - "boonType": "oath" + "boonType": "oath", + "level": 0 }, "Class": { "templates": [ @@ -275,10 +280,86 @@ "armor": [], "classTalentTable": "", "hitPoints": "", + "patron": { + "required": false, + "startingBoons": 0 + }, "spellcasting": { "ability": "", "baseDifficulty": 10, - "class": "NONE" + "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": [], @@ -371,6 +452,9 @@ "close" ] }, + "NPC Feature": { + "templates": ["common"] + }, "NPC Special Attack": { "templates": ["common"], "attack": { @@ -381,9 +465,6 @@ }, "ranges": [] }, - "NPC Feature": { - "templates": ["common"] - }, "NPC Spell": { "templates": ["common"], "duration": { @@ -394,6 +475,12 @@ "dc": 10, "lost": false }, + "Patron": { + "templates": [ + "common" + ], + "boonTable": "" + }, "Potion": { "templates": ["common", "magic", "physical"], "magicItem": true, @@ -430,6 +517,7 @@ "common", "physical" ], + "ammoClass": "", "baseWeapon": "", "bonuses": { "attackBonus": 0, @@ -447,6 +535,7 @@ "oneHanded": "", "twoHanded": "" }, + "properties": [], "range": "close", "type": "melee", diff --git a/system/templates/_partials/details/armor.hbs b/system/templates/_partials/details/armor.hbs new file mode 100644 index 000000000..236396aba --- /dev/null +++ b/system/templates/_partials/details/armor.hbs @@ -0,0 +1,43 @@ +

+ + {{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}} + + {{/if}} +

+

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

+
+ {{{description}}} +
+
+
+ {{#each itemProperties}} + + {{this.name}} + + {{/each}} +
+
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 78% rename from system/templates/partials/details/effect.hbs rename to system/templates/_partials/details/effect.hbs index 795be705d..30e26a409 100644 --- a/system/templates/partials/details/effect.hbs +++ b/system/templates/_partials/details/effect.hbs @@ -1,7 +1,10 @@ {{{description}}}