diff --git a/dnd5e.css b/dnd5e.css index 4a7c5b8dc5..3c5c8e3593 100644 --- a/dnd5e.css +++ b/dnd5e.css @@ -714,12 +714,12 @@ .dnd5e.sheet.actor .inventory-list .item .item-name h4 { margin: 0; } -.dnd5e.sheet.actor .inventory-list .item .item-name:hover .item-image { - background-image: url("/icons/svg/d20-grey.svg") !important; -} -.dnd5e.sheet.actor .inventory-list .item .item-name .item-image:hover { +.dnd5e.sheet.actor .inventory-list .item .item-name.rollable .item-image:hover { background-image: url("/icons/svg/d20-black.svg") !important; } +.dnd5e.sheet.actor .inventory-list .item .item-name.rollable:hover .item-image { + background-image: url("/icons/svg/d20-grey.svg") !important; +} .dnd5e.sheet.actor .inventory-list .item .item-name i.attuned { color: #7a7971; } @@ -856,6 +856,19 @@ text-align: center; border-right: 1px solid #c9c7b8; } +.dnd5e.sheet.actor .spell-component { + line-height: 14px; +} +.dnd5e.sheet.actor .spell-component.C, +.dnd5e.sheet.actor .spell-component.R { + display: inline-block; + padding-top: 1px; + width: 16px; + color: #c9c7b8; + background: rgba(0, 0, 0, 0.4); + border: 1px solid transparent; + border-radius: 8px; +} .dnd5e.sheet.actor .spellbook-empty .item-controls { flex: 1; } diff --git a/dnd5e.js b/dnd5e.js index 69db73f552..28ebad6bc6 100644 --- a/dnd5e.js +++ b/dnd5e.js @@ -74,7 +74,7 @@ Hooks.once("setup", function() { const toLocalize = [ "abilities", "alignments", "conditionTypes", "consumableTypes", "currencies", "damageTypes", "distanceUnits", "equipmentTypes", "healingTypes", "itemActionTypes", "limitedUsePeriods", "senses", "skills", "spellComponents", "spellLevels", "spellPreparationModes", - "spellSchools", "spellScalingModes", "targetTypes", "timePeriods", "weaponProperties", "weaponTypes", "languages" + "spellSchools", "spellScalingModes", "targetTypes", "timePeriods", "weaponProperties", "weaponTypes", "languages", "polymorphSettings" ]; for ( let o of toLocalize ) { CONFIG.DND5E[o] = Object.entries(CONFIG.DND5E[o]).reduce((obj, e) => { @@ -90,9 +90,21 @@ Hooks.once("setup", function() { * Once the entire VTT framework is initialized, check to see if we should perform a data migration */ Hooks.once("ready", function() { + + // Determine whether a system migration is required and feasible + const currentVersion = game.settings.get("dnd5e", "systemMigrationVersion"); const NEEDS_MIGRATION_VERSION = 0.84; - let needMigration = game.settings.get("dnd5e", "systemMigrationVersion") < NEEDS_MIGRATION_VERSION; - if ( needMigration && game.user.isGM ) migrations.migrateWorld(); + const COMPATIBLE_MIGRATION_VERSION = 0.80; + let needMigration = (currentVersion < NEEDS_MIGRATION_VERSION) || (currentVersion === null); + const canMigrate = currentVersion >= COMPATIBLE_MIGRATION_VERSION; + + // Perform the migration + if ( needMigration && game.user.isGM ) { + if ( !canMigrate ) { + ui.notifications.error(`Your D&D5E system data is from too old a Foundry version and cannot be reliably migrated to the latest version. The process will be attempted, but errors may occur.`, {permanent: true}); + } + migrations.migrateWorld(); + } // Wait to register hotbar drop hook on ready so that modules could register earlier if they want to Hooks.on("hotbarDrop", (bar, data, slot) => create5eMacro(data, slot)); diff --git a/less/actors.less b/less/actors.less index 244454b624..adcf6243a1 100644 --- a/less/actors.less +++ b/less/actors.less @@ -433,13 +433,12 @@ margin: 0; } - &:hover .item-image { - background-image: url("/icons/svg/d20-grey.svg") !important; - } - - .item-image:hover { + &.rollable .item-image:hover { background-image: url("/icons/svg/d20-black.svg") !important; } + &.rollable:hover .item-image { + background-image: url("/icons/svg/d20-grey.svg") !important; + } i.attuned { color: @colorTan; @@ -587,6 +586,19 @@ border-right: 1px solid @colorFaint; } + .spell-component { + line-height: 14px; + &.C, &.R { + display: inline-block; + padding-top: 1px; + width: 16px; + color: @colorFaint; + background: rgba(0, 0, 0, 0.4); + border: 1px solid transparent; + border-radius: 8px; + } + } + // Empty spellbook controls .spellbook-empty .item-controls { flex: 1; } diff --git a/module/actor/entity.js b/module/actor/entity.js index 3ebb0d491a..2725c71de3 100644 --- a/module/actor/entity.js +++ b/module/actor/entity.js @@ -731,40 +731,34 @@ export class Actor5e extends Actor { return ui.notifications.warn(`You are not allowed to polymorph this actor!`); } - // Get the original Actor data + // Get the original Actor data and the new source data const o = duplicate(this.data); o.flags.dnd5e = o.flags.dnd5e || {}; - - // Get the source Actor data const source = duplicate(target.data); - source.flags.dnd5e = source.flags.dnd5e || {}; - delete source.flags.dnd5e.isPolymorphed; - delete source.flags.dnd5e.originalActor; // Prepare new data to merge from the source const d = { - name: `${o.name} (${source.name})`, - data: source.data, - items: source.items, - token: source.token, - img: source.img, - flags: source.flags + type: o.type, // Remain the same actor type + name: `${o.name} (${source.name})`, // Append the new shape to your old name + data: source.data, // Get the data model of your new form + items: source.items, // Get the items of your new form + token: source.token, // New token configuration + img: source.img, // New appearance + permission: o.permission, // Use the original actor permissions + folder: o.folder, // Be displayed in the same sidebar folder + flags: o.flags // Use the original actor flags }; - delete d.data.resources; - delete d.data.currency; - delete d.data.bonuses; - delete d.token.actorId; - - // Merge original data - mergeObject(d, { - "type": o.type, // The new actor must be of the same type - "token.actorLink": o.token.actorLink, - "token.name": d.name, - "folder": o.folder, - "data.details.alignment": o.data.details.alignment, - "data.attributes.exhaustion": o.data.attributes.exhaustion, - "data.attributes.inspiration": o.data.attributes.inspiration - }); + + // Additional adjustments + delete d.data.resources; // Don't change your resource pools + delete d.data.currency; // Don't lose currency + delete d.data.bonuses; // Don't lose global bonuses + delete d.token.actorId; // Don't reference the old actor ID + d.token.actorLink = o.token.actorLink; // Keep your actor link + d.token.name = d.name; // Token name same as actor name + d.data.details.alignment = o.data.details.alignment; // Don't change alignment + d.data.attributes.exhaustion = o.data.attributes.exhaustion; // Keep your prior exhaustion level + d.data.attributes.inspiration = o.data.attributes.inspiration; // Keep inspiration // Keep Token configurations const tokenConfig = ["displayName", "vision", "actorLink", "disposition", "displayBars", "bar1", "bar2"]; @@ -809,9 +803,8 @@ export class Actor5e extends Actor { if (keepVision) d.data.traits.senses = o.data.traits.senses; // Set new data flags + if ( !this.isPolymorphed || !d.flags.dnd5e.originalActor ) d.flags.dnd5e.originalActor = this.id; d.flags.dnd5e.isPolymorphed = true; - if (o.flags.dnd5e.isPolymorphed) d.flags.dnd5e.originalActor = o.flags.dnd5e.originalActor; - else d.flags.dnd5e.originalActor = o._id; // Update unlinked Tokens in place since they can simply be re-dropped from the base actor if (this.isToken) { @@ -875,7 +868,7 @@ export class Actor5e extends Actor { // Delete the polymorphed Actor and maybe re-render the original sheet const isRendered = this.sheet.rendered; - await this.delete(); + if ( game.user.isGM ) await this.delete(); original.sheet.render(isRendered); return original; } diff --git a/module/actor/sheets/base.js b/module/actor/sheets/base.js index 79b37e35c2..473be0ac75 100644 --- a/module/actor/sheets/base.js +++ b/module/actor/sheets/base.js @@ -305,6 +305,11 @@ export class ActorSheet5e extends ActorSheet { html.find('.item .item-recharge').click(event => this._onItemRecharge(event)); } + // Otherwise remove rollable classes + else { + html.find(".rollable").each((i, el) => el.classList.remove("rollable")); + } + // Handle default listeners last so system listeners are triggered first super.activateListeners(html); } @@ -396,7 +401,7 @@ export class ActorSheet5e extends ActorSheet { // Handle a polymorph if (data && (data.type === "Actor")) { - if (game.user.isGM || (game.settings.get('dnd5e', 'allowPolymorphing') && this.owner)) { + if (game.user.isGM || (game.settings.get('dnd5e', 'allowPolymorphing') && this.actor.owner)) { return this._onDropPolymorph(event, data); } } diff --git a/module/actor/sheets/npc.js b/module/actor/sheets/npc.js index a471593a02..7df3f541a1 100644 --- a/module/actor/sheets/npc.js +++ b/module/actor/sheets/npc.js @@ -75,9 +75,7 @@ export class ActorSheet5eNPC extends ActorSheet5e { if ( item.data.activation.type ) features.actions.items.push(item); else features.passive.items.push(item); } - else if (["equipment", "consumable", "tool", "loot"].includes(item.type)) { - features.equipment.items.push(item); - } + else features.equipment.items.push(item); } // Assign and return diff --git a/module/apps/ability-use-dialog.js b/module/apps/ability-use-dialog.js index ca1283a6e8..8b5361244d 100644 --- a/module/apps/ability-use-dialog.js +++ b/module/apps/ability-use-dialog.js @@ -38,7 +38,7 @@ export class AbilityUseDialog extends Dialog { uses: uses, recharges: !!recharge.value, isCharged: recharge.charged, - hasPlaceableTemplate: game.user.isTrusted && item.hasAreaTarget, + hasPlaceableTemplate: game.user.can("TEMPLATE_CREATE") && item.hasAreaTarget, perLabel: CONFIG.DND5E.limitedUsePeriods[uses.per] }); diff --git a/module/apps/spell-cast-dialog.js b/module/apps/spell-cast-dialog.js index 45d2027632..2612bc4b36 100644 --- a/module/apps/spell-cast-dialog.js +++ b/module/apps/spell-cast-dialog.js @@ -63,7 +63,7 @@ export class SpellCastDialog extends Dialog { canCast: canCast, canUpcast: canUpcast, spellLevels, - hasPlaceableTemplate: game.user.isTrusted && item.hasAreaTarget + hasPlaceableTemplate: game.user.can("TEMPLATE_CREATE") && item.hasAreaTarget }); // Create the Dialog and return as a Promise diff --git a/module/item/entity.js b/module/item/entity.js index 58c874b124..a013bec6ff 100644 --- a/module/item/entity.js +++ b/module/item/entity.js @@ -139,9 +139,11 @@ export class Item5e extends Item { if ( itemData.type === "spell" ) { labels.level = C.spellLevels[data.level]; labels.school = C.spellSchools[data.school]; - labels.components = Object.entries(data.components).map(c => { - c[1] === true ? c[0].titleCase().slice(0,1) : null - }).filterJoin(","); + labels.components = Object.entries(data.components).reduce((arr, c) => { + if ( c[1] !== true ) return arr; + arr.push(c[0].titleCase().slice(0, 1)); + return arr; + }, []); } // Feat Items diff --git a/module/migration.js b/module/migration.js index b94464fb0a..0d2c41ee06 100644 --- a/module/migration.js +++ b/module/migration.js @@ -3,7 +3,7 @@ * @return {Promise} A Promise which resolves once the migration is completed */ export const migrateWorld = async function() { - ui.notifications.info(`Applying D&D5E System Migration for version ${game.system.data.version}. Please stand by.`); + ui.notifications.info(`Applying D&D5E System Migration for version ${game.system.data.version}. Please be patient and do not close your game or shut down your server.`, {permanent: true}); // Migrate World Actors for ( let a of game.actors.entities ) { @@ -54,7 +54,7 @@ export const migrateWorld = async function() { // Set the migration as complete game.settings.set("dnd5e", "systemMigrationVersion", game.system.data.version); - ui.notifications.info(`D&D5E System Migration to version ${game.system.data.version} succeeded!`); + ui.notifications.info(`D&D5E System Migration to version ${game.system.data.version} completed!`, {permanent: true}); }; /* -------------------------------------------- */ @@ -107,17 +107,9 @@ export const migrateActorData = function(actor) { // Actor Data Updates _migrateActorBonuses(actor, updateData); - _migrateActorTraits(actor, updateData); - // Flatten values and remove deprecated fields - const toFlatten = ["details.background", "details.trait", "details.ideal", "details.bond", "details.flaw", - "details.type", "details.environment", "details.cr", "details.source", "details.alignment", "details.race", - "attributes.exhaustion", "attributes.inspiration", "attributes.prof", "attributes.spellcasting", - "attributes.spellDC", "traits.size", "traits.senses", "currency.pp", "currency.gp", "currency.ep", "currency.sp", - "currency.cp" - ]; - _migrateFlattenValues(actor, updateData, toFlatten); - _migrateRemoveDeprecated(actor, updateData, toFlatten); + // Remove deprecated fields + _migrateRemoveDeprecated(actor, updateData); // Migrate Owned Items if ( !actor.items ) return updateData; @@ -153,47 +145,8 @@ export const migrateActorData = function(actor) { export const migrateItemData = function(item) { const updateData = {}; - // Migrate Spell items - if (item.type === "spell") { - _migrateSpellComponents(item, updateData); - _migrateSpellPreparation(item, updateData); - _migrateSpellAction(item, updateData); - } - - // Migrate Equipment items - else if ( item.type === "equipment" ) { - _migrateArmor(item, updateData); - } - - // Migrate Weapon Items - else if ( item.type === "weapon" ) { - _migrateWeaponProperties(item, updateData); - } - - // Migrate Consumable Items - else if ( item.type === "consumable" ) { - _migrateConsumableUsage(item, updateData); - } - - // Spell and Feat cast times - if (["spell", "feat"].includes(item.type)) { - _migrateCastTime(item, updateData); - _migrateTarget(item, updateData); - } - - // Migrate General Properties - _migrateRange(item, updateData); - _migrateDuration(item, updateData); - _migrateDamage(item, updateData); - _migrateRarity(item, updateData); - - // Flatten values and remove deprecated fields - const toFlatten = ["ability", "attuned", "consumableType", "equipped", "identified", "quantity", "levels", "price", - "proficient", "rarity", "requirements", "stealth", "strength", "source", "subclass", "weight", "weaponType", - "school", "level" - ]; - _migrateFlattenValues(item, updateData, toFlatten); - _migrateRemoveDeprecated(item, updateData, toFlatten); + // Remove deprecated fields + _migrateRemoveDeprecated(item, updateData); // Return the migrated update data return updateData; @@ -244,182 +197,6 @@ function _migrateActorBonuses(actor, updateData) { } } -/* -------------------------------------------- */ - -/** - * Migrate string format traits with a comma separator to an array of strings - * @private - */ -const _migrateActorTraits = function(actor, updateData) { - if ( !actor.data.traits ) return; - const dt = invertObject(CONFIG.DND5E.damageTypes); - const map = { - "dr": dt, - "di": dt, - "dv": dt, - "ci": invertObject(CONFIG.DND5E.conditionTypes), - "languages": invertObject(CONFIG.DND5E.languages) - }; - for ( let [t, choices] of Object.entries(map) ) { - const trait = actor.data.traits[t]; - if ( trait && (typeof trait.value === "string") ) { - updateData[`data.traits.${t}.value`] = trait.value.split(",").map(t => choices[t.trim()]).filter(t => !!t); - } - } -}; - -/* -------------------------------------------- */ - -/** - * Migrate consumable items to have - * @param item - * @param updateData - * @private - */ -const _migrateConsumableUsage = function(item, updateData) { - const data = item.data; - if ( data.hasOwnProperty("charges") ) { - updateData["data.uses.value"] = data.charges.value; - updateData["data.uses.max"] = data.charges.max; - updateData["data.uses.per"] = "charges"; - updateData["data.uses.autoUse"] = data.autoUse ? data.autoUse.value : false; - updateData["data.uses.autoDestroy"] = data.autoDestroy ? data.autoDestroy.value : false; - - // Set default activation mode for potions - updateData["data.activation"] = {type: "action", cost: 1}; - updateData["data.target.type"] = "self"; - } -}; - -/* -------------------------------------------- */ - -/** - * Migrate from a string based armor class like "14" and a separate string armorType to a single armor object which - * tracks both armor value and type. - * @private - */ -const _migrateArmor = function(item, updateData) { - const armor = item.data.armor; - if ( armor && item.data.armorType && item.data.armorType.value ) { - updateData["data.armor.type"] = item.data.armorType.value; - } -}; - -/* -------------------------------------------- */ - - -/** - * Flatten several attributes which currently have an unnecessarily nested {value} object - * @private - */ -const _migrateFlattenValues = function(ent, updateData, toFlatten) { - for ( let a of toFlatten ) { - const attr = getProperty(ent.data, a); - if ( attr instanceof Object && !updateData.hasOwnProperty("data."+a) ) { - updateData["data."+a] = attr.hasOwnProperty("value") ? attr.value : null; - } - } -}; - -/* -------------------------------------------- */ - -/** - * Migrate from a string spell casting time like "1 Bonus Action" to separate fields for activation type and numeric cost - * @private - */ -const _migrateCastTime = function(item, updateData) { - const value = getProperty(item.data, "time.value"); - if ( !value ) return; - const ATS = invertObject(CONFIG.DND5E.abilityActivationTypes); - let match = value.match(/([\d]+\s)?([\w\s]+)/); - if ( !match ) return; - let type = ATS[match[2]] || "none"; - let cost = match[1] ? Number(match[1]) : 0; - if ( type === "none" ) cost = 0; - updateData["data.activation"] = {type, cost}; -}; - -/* -------------------------------------------- */ -/* General Migrations */ -/* -------------------------------------------- */ - -/** - * Migrate from a string based damage formula like "2d6 + 4 + 1d4" and a single string damage type like "slash" to - * separated damage parts with associated damage type per part. - * @private - */ -const _migrateDamage = function(item, updateData) { - - // Regular Damage - let damage = item.data.damage; - if ( damage && damage.value ) { - let type = item.data.damageType ? item.data.damageType.value : ""; - const parts = damage.value.split("+").map(s => s.trim()).map(p => [p, type || null]); - if ( item.type === "weapon" && parts.length ) parts[0][0] += " + @mod"; - updateData["data.damage.parts"] = parts; - updateData["data.damage.-=value"] = null; - } - - // Versatile Damage - const d2 = item.data.damage2; - if ( d2 && d2.value ) { - let formula = d2.value.replace(/[\-\*\/]/g, "+"); - updateData["data.damage.versatile"] = formula.split("+").shift() + " + @mod"; - } -}; - -/* -------------------------------------------- */ - -/** - * Migrate from a string duration field like "1 Minute" to separate fields for duration units and numeric value - * @private - */ -const _migrateDuration = function(item, updateData) { - const TIME = invertObject(CONFIG.DND5E.timePeriods); - const dur = item.data.duration; - if ( dur && dur.value && !dur.units ) { - let match = dur.value.match(/([\d]+\s)?([\w\s]+)/); - if ( !match ) return; - let units = TIME[match[2]] || "inst"; - let value = units === "inst" ? "" : Number(match[1]) || ""; - updateData["data.duration"] = {units, value}; - } -}; - -/* -------------------------------------------- */ - -/** - * Migrate from a string range field like "150 ft." to separate fields for units and numeric distance value - * @private - */ -const _migrateRange = function(item, updateData) { - if ( updateData["data.range"] ) return; - const range = item.data.range; - if ( range && range.value && !range.units ) { - let match = range.value.match(/([\d\/]+)?(?:[\s]+)?([\w\s]+)?/); - if ( !match ) return; - let units = "none"; - if ( /ft/i.test(match[2]) ) units = "ft"; - else if ( /mi/i.test(match[2]) ) units = "mi"; - else if ( /touch/i.test(match[2]) ) units = "touch"; - updateData["data.range.units"] = units; - - // Range value - if ( match[1] ) { - let value = match[1].split("/").map(Number); - updateData["data.range.value"] = value[0]; - if ( value[1] ) updateData["data.range.long"] = value[1]; - } - } -}; - -/* -------------------------------------------- */ - -const _migrateRarity = function(item, updateData) { - const rar = item.data.rarity; - if ( (rar instanceof Object) && !rar.value ) updateData["data.rarity"] = "Common"; - else if ( (typeof rar === "string") && (rar === "") ) updateData["data.rarity"] = "Common"; -}; /* -------------------------------------------- */ @@ -428,155 +205,20 @@ const _migrateRarity = function(item, updateData) { * A general migration to remove all fields from the data model which are flagged with a _deprecated tag * @private */ -const _migrateRemoveDeprecated = function(ent, updateData, toFlatten) { +const _migrateRemoveDeprecated = function(ent, updateData) { const flat = flattenObject(ent.data); - // Deprecate entire objects + // Identify objects to deprecate const toDeprecate = Object.entries(flat).filter(e => e[0].endsWith("_deprecated") && (e[1] === true)).map(e => { let parent = e[0].split("."); parent.pop(); return parent.join("."); }); + + // Remove them for ( let k of toDeprecate ) { let parts = k.split("."); parts[parts.length-1] = "-=" + parts[parts.length-1]; updateData[`data.${parts.join(".")}`] = null; } }; - -/* -------------------------------------------- */ - -/** - * Migrate from a target string like "15 ft. Radius" to a more explicit data model with a value, units, and type - * @private - */ -const _migrateTarget = function(item, updateData) { - const target = item.data.target; - if ( target.value && !Number.isNumeric(target.value) ) { - - // Target Type - let type = null; - for ( let t of Object.keys(CONFIG.DND5E.targetTypes) ) { - let rgx = new RegExp(t, "i"); - if ( rgx.test(target.value) ) { - type = t; - continue; - } - } - - // Target Units - let units = null; - if ( /ft/i.test(target.value) ) units = "ft"; - else if ( /mi/i.test(target.value) ) units = "mi"; - else if ( /touch/i.test(target.value) ) units = "touch"; - - // Target Value - let value = null; - let match = target.value.match(/([\d]+)([\w\s]+)?/); - if ( match ) value = Number(match[1]); - else if ( /one/i.test(target.value) ) value = 1; - updateData["data.target"] = {type, units, value}; - } -}; - -/* -------------------------------------------- */ - -/** - * Migrate from string based components like "V,S,M" to boolean flags for each component - * Move concentration and ritual flags into the components object - * @private - */ -const _migrateSpellComponents = function(item, updateData) { - const components = item.data.components; - if ( !components.value ) return; - let comps = components.value.toUpperCase().replace(/\s/g, "").split(","); - updateData["data.components"] = { - value: "", - vocal: comps.includes("V"), - somatic: comps.includes("S"), - material: comps.includes("M"), - concentration: item.data.concentration.value === true, - ritual: item.data.ritual.value === true - }; -}; - -/* -------------------------------------------- */ - -/** - * Migrate from a simple object with save.value to an expanded object where the DC is also configured - * @deprecated in 0.5.2 - * @private - */ -const _migrateSpellAction = function(item, updateData) { - - // Set default action type for spells - if ( item.data.spellType && !item.data.actionType ) { - updateData["data.actionType"] = { - "attack": "rsak", - "save": "save", - "heal": "heal", - "utility": "util", - }[item.data.spellType.value] || "util"; - } - - // Spell saving throw - const save = item.data.save; - if ( !save.value ) return; - updateData["data.save"] = { - ability: save.value, - dc: null - }; - updateData["data.save.-=value"] = null; -}; - -/* -------------------------------------------- */ - -/** - * Migrate spell preparation data to the new preparation object - * @deprecated in 0.5.2 - * @private - */ -const _migrateSpellPreparation = function(item, updateData) { - const prep = item.data.preparation; - if ( prep && !prep.mode ) { - updateData["data.preparation.mode"] = "prepared"; - updateData["data.preparation.prepared"] = item.data.prepared ? Boolean(item.data.prepared.value) : false; - } -}; - -/* -------------------------------------------- */ - -/** - * Migrate from a string based weapon properties like "Heavy, Two-Handed" to an object of boolean flags - * @private - */ -const _migrateWeaponProperties = function(item, updateData) { - - // Set default activation mode for weapons - if ( !item.data.activation ) { - updateData["data.activation"] = {type: "action", cost: 1}; - } - - // Set default action type for weapons - if ( !item.data.actionType ) { - updateData["data.actionType"] = { - "simpleM": "mwak", - "simpleR": "rwak", - "martialM": "mwak", - "martialR": "rwak", - "natural": "mwak", - "improv": "mwak", - "ammo": "rwak" - }[item.data.weaponType.value] || "mwak"; - } - - // Map weapon property strings to boolean flags - const props = item.data.properties; - if ( props.value ) { - const labels = invertObject(CONFIG.DND5E.weaponProperties); - for (let k of props.value.split(",").map(p => p.trim())) { - if (labels[k]) updateData[`data.properties.${labels[k]}`] = true; - } - updateData["data.properties.-=value"] = null; - } -}; diff --git a/packs/spells.db b/packs/spells.db index f0e423b335..8180dbcbaa 100644 --- a/packs/spells.db +++ b/packs/spells.db @@ -128,7 +128,7 @@ {"_id":"MCEpGpvovcXagwQS","name":"Awaken","permission":{"default":0},"type":"spell","data":{"description":{"value":"

After spending the casting time tracing magical pathways within a precious gemstone, you touch a Huge or smaller beast or plant. The target must have either no Intelligence score or an Intelligence of 3 or less. The target gains an Intelligence of 10. The target also gains the ability to speak one language you know. If the target is a plant, it gains the ability to move its limbs, roots, vines, creepers, and so forth, and it gains senses similar to a human's. Your DM chooses statistics appropriate for the awakened plant, such as the statistics for the awakened shrub or the awakened tree.

\n

The awakened beast or plant is charmed by you for 30 days or until you or your companions do anything harmful to it. When the charmed condition ends, the awakened creature chooses whether to remain friendly to you, based on how you treated it while it was charmed.

","chat":"","unidentified":""},"source":"PHB pg. 216","activation":{"type":"hour","cost":8,"condition":""},"duration":{"value":30,"units":"day"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"util","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":5,"school":"trs","components":{"value":"","vocal":true,"somatic":true,"material":true,"ritual":false,"concentration":false},"materials":{"value":"An agate worth at least 1,000 gp, which the spell consumes","consumed":true,"cost":1000,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/leaf-royal-3.jpg"} {"_id":"MImfWCzEPRMYD3Xp","name":"Freezing Sphere","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A frigid globe of cold energy streaks from your fingertips to a point of your choice within range, where it explodes in a 60-foot-radius sphere. Each creature within the area must make a Constitution saving throw. On a failed save, a creature takes 10d6 cold damage. On a successful save, it takes half as much damage.

\n

If the globe strikes a body of water or a liquid that is principally water (not including water-based creatures), it freezes the liquid to a depth of 6 inches over an area 30 feet square. This ice lasts for 1 minute. Creatures that were swimming on the surface of frozen water are trapped in the ice. A trapped creature can use an action to make a Strength check against your spell save DC to break free.

\n

You can refrain from firing the globe after completing the spell, if you wish. A small globe about the size of a sling stone, cool to the touch, appears in your hand. At any time, you or a creature you give the globe to can throw the globe (to a range of 40 feet) or hurl it with a sling (to the sling’s normal range). It shatters on impact, with the same effect as the normal casting of the spell. You can also set the globe down without shattering it. After 1 minute, if the globe hasn’t already shattered, it explodes.

\n

At Higher Levels. When you cast this spell using a spell slot of 7th level or higher, the damage increases by 1d6 for each slot level above 6th.

","chat":"","unidentified":""},"source":"PHB pg. 242","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":60,"units":"ft","type":"sphere"},"range":{"value":300,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"save","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["10d6","cold"]],"versatile":""},"formula":"","save":{"ability":"str","dc":0,"scaling":"spell"},"level":6,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":true,"ritual":false,"concentration":false},"materials":{"value":"A small crystal sphere","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d6"}},"sort":100001,"flags":{"_sheetTab":"description"},"img":"systems/dnd5e/icons/spells/light-blue-3.jpg"} {"_id":"MK6gpQMeDFo0cP9f","name":"Continual Flame","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A flame, equivalent in brightness to a torch, springs forth from an object that you touch. The effect looks like a regular flame, but it creates no heat and doesn't use oxygen. A continual flame can be covered or hidden but not smothered or quenched.

","chat":"","unidentified":""},"source":"PHB pg. 227","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"perm"},"target":{"value":1,"units":"","type":"object"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"util","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":2,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":true,"ritual":false,"concentration":false},"materials":{"value":"Ruby dust worth 50 gp, which the spell consumes","consumed":true,"cost":50,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/explosion-orange-2.jpg"} -{"_id":"MOEmz9N0j0QPkKEE","name":"Prayer of Healing","permission":{"default":0},"type":"spell","data":{"description":{"value":"

Up to six creatures of your choice that you can see within range each regain Hit Points equal to 2d8 + your Spellcasting ability modifier. This spell has no effect on Undead or constructs.

\n

At Higher Levels. When you cast this spell using a spell slot of 3rd level or higher, the Healing increases by 1d8 for each slot level above 2nd.

","chat":"","unidentified":""},"source":"PHB pg. 267","activation":{"type":"minute","cost":10,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":6,"units":"","type":"creature"},"range":{"value":30,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["2d8","healing"],["@mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":2,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d8"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-2.jpg"} +{"_id":"MOEmz9N0j0QPkKEE","name":"Prayer of Healing","permission":{"default":0},"type":"spell","data":{"description":{"value":"

Up to six creatures of your choice that you can see within range each regain Hit Points equal to 2d8 + your Spellcasting ability modifier. This spell has no effect on Undead or constructs.

\n

At Higher Levels. When you cast this spell using a spell slot of 3rd level or higher, the Healing increases by 1d8 for each slot level above 2nd.

","chat":"","unidentified":""},"source":"PHB pg. 267","activation":{"type":"minute","cost":10,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":6,"units":"","type":"creature"},"range":{"value":30,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["2d8 + @mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":2,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d8"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-2.jpg"} {"_id":"MRxldJd6C4bsBo3O","name":"Levitate","permission":{"default":0},"type":"spell","data":{"description":{"value":"

One creature or object of your choice that you can see within range rises vertically, up to 20 feet, and remains suspended there for the duration. The spell can levitate a target that weighs up to 500 pounds. An unwilling creature that succeeds on a Constitution saving throw is unaffected.

\n

The target can move only by pushing or pulling against a fixed object or surface within reach (such as a wall or a ceiling), which allows it to move as if it were climbing. You can change the target’s altitude by up to 20 feet in either direction on your turn. If you are the target, you can move up or down as part of your move. Otherwise, you can use your action to move the target, which must remain within the spell’s range.

\n

When the spell ends, the target floats gently to the ground if it is still aloft.

","chat":"","unidentified":""},"source":"PHB pg. 255","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":10,"units":"minute"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"save","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"con","dc":0,"scaling":"spell"},"level":2,"school":"trs","components":{"value":"","vocal":true,"somatic":true,"material":true,"ritual":false,"concentration":true},"materials":{"value":"Either a small leather loop or a piece of golden wire bent into a cup shape with a long shank on one end","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/wind-grasp-magenta-2.jpg"} {"_id":"MUO1uYN7JR1hm4dR","name":"Thaumaturgy","permission":{"default":0},"type":"spell","data":{"description":{"value":"

You create one of the following magical effects within range:

\n\n

If you cast this spell multiple times, you can have up to three of its 1-minute effects active at a time, and you can dismiss such an effect as an action.

","chat":"","unidentified":""},"source":"PHB pg. 282","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"minute"},"target":{"value":0,"units":"","type":""},"range":{"value":30,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"util","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":0,"school":"trs","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/explosion-royal-1.jpg"} {"_id":"Mzh95utKDPIrjiH8","name":"Detect Evil and Good","permission":{"default":0},"type":"spell","data":{"description":{"value":"

For the duration, you know if there is an aberration, celestial, elemental, fey, fiend, or undead within 30 feet of you, as well as where the creature is located. Similarly, you know if there is a place or object within 30 feet of you that has been magically consecrated or desecrated.

The spell can penetrate most barriers, but it is blocked by 1 foot of stone, 1 inch of common metal, a thin sheet of lead, or 3 feet of wood or dirt.

","chat":"","unidentified":""},"source":"PHB pg. 231","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":10,"units":"minute"},"target":{"value":null,"units":null,"type":"self"},"range":{"value":null,"long":null,"units":"self"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"util","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":1,"school":"div","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/air-burst-sky-2.jpg"} @@ -142,7 +142,7 @@ {"_id":"P6f1PPKPd9BCb742","name":"Compulsion","permission":{"default":0},"type":"spell","data":{"description":{"value":"

Creatures of your choice that you can see within range and that can hear you must make a Wisdom saving throw. A target automatically succeeds on this saving throw if it can’t be charmed. On a failed save, a target is affected by this spell. Until the spell ends, you can use a bonus action on each of your turns to designate a direction that is horizontal to you. Each affected target must use as much of its movement as possible to move in that direction on its next turn. It can take any action before it moves. After moving in this way, it can make another Wisdom save to try to end the effect.

\n

A target isn’t compelled to move into an obviously deadly hazard, such as a fire or a pit, but it will provoke opportunity attacks to move in the designated direction.

","chat":"","unidentified":""},"source":"PHB pg. 224","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"minute"},"target":{"value":0,"units":"any","type":"creature"},"range":{"value":30,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"save","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"wis","dc":0,"scaling":"spell"},"level":4,"school":"enc","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/explosion-magenta-3.jpg"} {"_id":"P7mF2MxSuVJwHRRY","name":"Guidance","permission":{"default":0},"type":"spell","data":{"description":{"value":"

You touch one willing creature. Once before the spell ends, the target can roll a d4 and add the number rolled to one ability check of its choice. It can roll the die before or after making the ability check. The spell then ends.

","chat":"","unidentified":""},"source":"PHB pg. 248","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"minute"},"target":{"value":0,"units":"","type":""},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"util","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":0,"school":"div","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/haste-sky-1.jpg"} {"_id":"PQuEgKyCdovOvhqN","name":"Etherealness","permission":{"default":0},"type":"spell","data":{"description":{"value":"

You step into the border regions of the Ethereal Plane, in the area where it overlaps with your current plane. You remain in the Border Ethereal for the Duration or until you use your action to dismiss the spell. During this time, you can move in any direction. If you move up or down, every foot of Movement costs an extra foot. You can see and hear the plane you originated from, but everything there looks gray, and you can’t see anything more than 60 feet away.

\n

While on the Ethereal Plane, you can only affect and be affected by other creatures on that plane. Creatures that aren’t on the Ethereal Plane can’t perceive you and can’t interact with you, unless a sp⁠ecial ability or magic has given them the ability to do so.

\n

You ignore all Objects and Effects that aren’t on the Ethereal Plane, allowing you to move through obje⁠cts you perceive on the plane you originated from.

\n

When the spell ends, you immediately return to the plane you originated from in the spot you currently occupy. If you occupy the same spot as a solid object or creature when this happens, you are immediately shunted to the nearest unoccupied space that you can occupy and take force damage equal to twice the number of feet you are moved.

\n

This spell has no effect if you cast it while you are on the Ethereal Plane or a plane that doesn’t border it, such as one of the Outer Planes.

\n

At Higher Levels. When you cast this spell using a spell slot of 8th level or higher, you can target up to three willing creatures (including you) for each slot level above 7th. The creatures must be within 10 feet of you when you cast the spell.

","chat":"","unidentified":""},"source":"PHB pg. 238","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":8,"units":"hour"},"target":{"value":0,"units":"","type":""},"range":{"value":null,"long":null,"units":"self"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"util","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":7,"school":"trs","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/fog-sky-3.jpg"} -{"_id":"Pyzmm8R7rVsNAPsd","name":"Mass Cure Wounds","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A wave of Healing energy washes out from a point of your choice within range. Choose up to six creatures in a 30-foot-radius Sphere centered on that point. Each target regains Hit Points equal to 3d8 + your Spellcasting ability modifier. This spell has no effect on Undead or constructs.

\n

At Higher Levels. When you cast this spell using a spell slot of 6th level or higher, the Healing increases by 1d8 for each slot level above 5th.

","chat":"","unidentified":""},"source":"PHB pg. 258","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":30,"units":"ft","type":"sphere"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["3d8","healing"],["@mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":5,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d8"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-2.jpg"} +{"_id":"Pyzmm8R7rVsNAPsd","name":"Mass Cure Wounds","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A wave of Healing energy washes out from a point of your choice within range. Choose up to six creatures in a 30-foot-radius Sphere centered on that point. Each target regains Hit Points equal to 3d8 + your Spellcasting ability modifier. This spell has no effect on Undead or constructs.

\n

At Higher Levels. When you cast this spell using a spell slot of 6th level or higher, the Healing increases by 1d8 for each slot level above 5th.

","chat":"","unidentified":""},"source":"PHB pg. 258","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":30,"units":"ft","type":"sphere"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["3d8 + @mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":5,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d8"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-2.jpg"} {"_id":"QbQZKoXOgHWN06aa","name":"True Polymorph","permission":{"default":0},"type":"spell","data":{"description":{"value":"

Choose one creature or nonmagical object that you can see within range. You transform the creature into a different creature, the creature into a nonmagical object, or the object into a creature (the object must be neither worn nor carried by another creature). The transformation lasts for the d⁠uration, or until the target drops to 0 hit points⁠ or dies. If you concentrate on this spell for the full Duration, the transformation lasts until it is dispelled.

\n

This spell has no effect on a target with 0 Hit Points. An unwilling creature can make a Wisdom saving throw, and if it succeeds, it isn’t affected by this spell.

\n

Creature into Creature. If you turn a creature into another kind of creature, the new form can be any kind you choose whose c⁠hallenge rating is equal to or less than the target’s (or its level, if the target doesn’t have a Challenge rating). The target’s game statistics⁠, including mental Ability Scores, are replaced by the statistics⁠ of the new form. It retains its Alignment and personality.

\n

The target assumes the hit points⁠ of its new form, and when it reverts to its normal form, the creature returns to the number of Hit Points it had before it transformed. If it reverts as a result of dropping to 0 hit points⁠, any excess damage carries over to its normal form. As long as the excess damage doesn’t reduce the creature’s normal form to 0 hit points⁠, it isn’t knocked Unconscious.

\n

The creature is limited in the Actions it can perform by the nature⁠ of its new form, and it can’t speak, cast Spells, or take any other action that requires hands or speech⁠, unless its new form is capable of such Actions.

\n

The target’s gear melds into the new form. The creature can’t activate, use, wield, or otherwise benefit from any of its Equipment.

\n

Object into Creature. You can turn an object into any kind of creature, as long as the creature’s size is no larger than the object’s size and the creature’s Challenge rating is 9 or lower. The creature is friendly to you and your companions. It acts on each of your turns. You decide what action it takes and how it moves. The DM has the creature’s Statistics and resolves all of its Actions and Movement.

\n

If the spell becomes permanent, you no longer control the creature. It might remain friendly to you, depending on how you have treated it.

\n

Creature into Object. If you turn a creature into an object, it transforms along with whatever it is wearing and carrying into that form. The creature’s statistics⁠ become those of the object, and the creature has no memory of time spent in this form, after the spell ends and it returns to its normal form.

","chat":"","unidentified":""},"source":"PHB pg. 283","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"hour"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":30,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"save","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"wis","dc":0,"scaling":"spell"},"level":9,"school":"trs","components":{"value":"","vocal":true,"somatic":true,"material":true,"ritual":false,"concentration":true},"materials":{"value":"A drop of mercury, a dollop of gum arabic, and a wisp of smoke","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/wind-grasp-magenta-3.jpg"} {"_id":"QbTxN5dWIbYZ4jLU","name":"Chain Lightning","permission":{"default":0},"type":"spell","data":{"description":{"value":"

You create a bolt of lightning that arcs toward a target of your choice that you can see within range. Three bolts then leap from that target to as many as three other targets, each of which must be within 30 feet of the first target. A target can be a creature or an object and can be targeted by only one of the bolts.

\n

A target must make a Dexterity saving throw. The target takes 10d8 lightning damage on a failed save, or half as much damage on a successful one.

\n

Higher Levels. When you cast this spell using a spell slot of 7th level or higher, one additional bolt leaps from the first target to another target for each slot level above 6th.

","chat":"","unidentified":""},"source":"PHB pg. 221","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":150,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"save","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["10d8","lightning"]],"versatile":""},"formula":"","save":{"ability":"dex","dc":0,"scaling":"spell"},"level":6,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":true,"ritual":false,"concentration":false},"materials":{"value":"A bit of fur; a piece of amber, glass, or a crystal rod; and three silver pins","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/lightning-blue-1.jpg"} {"_id":"Qf6CAZkc7ms4ZY3e","name":"Goodberry","permission":{"default":0},"type":"spell","data":{"description":{"value":"

Up to ten berries appear in your hand and are infused with magic for the duration. A creature can use its action to eat one berry. Eating a berry restores 1 hit point, and the berry provides enough nourishment to sustain a creature for one day.

The berries lose their potency if they have not been consumed within 24 hours of the casting of this spell.

","chat":"","unidentified":""},"source":"PHB pg. 246","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":0,"units":"","type":""},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":1,"school":"trs","components":{"value":"","vocal":true,"somatic":true,"material":true,"ritual":false,"concentration":false},"materials":{"value":"A spring of mistletoe","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/leaf-acid-1.jpg"} @@ -271,7 +271,7 @@ {"_id":"n9pJzTDsAwQxJVRl","name":"Sacred Flame","permission":{"default":0},"type":"spell","data":{"description":{"value":"

Flame-like radiance descends on a creature that you can see within range. The target must succeed on a Dexterity saving throw or take 1d8 radiant damage. The target gains no benefit from cover for this saving throw.

\n

The spell’s damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).

","chat":"","unidentified":""},"source":"PHB pg. 272","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"save","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d8","radiant"]],"versatile":""},"formula":"","save":{"ability":"dex","dc":0,"scaling":"spell"},"level":0,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"cantrip","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/beam-orange-2.jpg"} {"_id":"nqBDWkVOfcGZt4YU","name":"Faerie Fire","permission":{"default":0},"type":"spell","data":{"description":{"value":"

Each object in a 20-foot cube within range is outlined in blue, green, or violet light (your choice). Any creature in the area when the spell is cast is also outlined in light if it fails a Dexterity saving throw. For the duration, objects and affected creatures shed dim light in a 10-foot radius.

\n

Any attack roll against an affected creature or object has advantage if the attacker can see it, and the affected creature or object can’t benefit from being invisible.

","chat":"","unidentified":""},"source":"PHB pg. 239","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"minute"},"target":{"value":20,"units":"ft","type":"cube"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"save","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"dex","dc":0,"scaling":"spell"},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/fire-arrows-jade-2.jpg"} {"_id":"nslx2nT3p4lNkmdp","name":"Major Image","permission":{"default":0},"type":"spell","data":{"description":{"value":"

You create the image of an object, a creature, or some other visible phenomenon that is no larger than a 20-foot cube. The image appears at a spot that you can see within range and lasts for the duration. It seems completely real, including sounds, smells, and temperature appropriate to the thing depicted. You can't create sufficient heat or cold to cause damage, a sound loud enough to deal thunder damage or deafen a creature, or a smell that might sicken a creature (like a troglodyte's stench).

As long as you are within range of the illusion, you can use your action to cause the image to move to any other spot within range. As the image changes location, you can alter its appearance so that its movements appear natural for the image. For example, if you create an image of a creature and move it, you can alter the image so that it appears to be walking. Similarly, you can cause the illusion to make different sounds at different times, even making it carry on a conversation, for example.

Physical interaction with the image reveals it to be an illusion, because things can pass through it. A creature that uses its action to examine the image can determine that it is an illusion with a successful Intelligence (Investigation) check against your spell save DC. If a creature discerns the illusion for what it is, the creature can see through the image, and its other sensory qualities become faint to the creature.

","chat":"","unidentified":""},"source":"PHB pg. 258","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":10,"units":"minute"},"target":{"value":20,"units":"ft","type":"cube"},"range":{"value":120,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"util","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":3,"school":"ill","components":{"value":"","vocal":true,"somatic":true,"material":true,"ritual":false,"concentration":true},"materials":{"value":"A bit of fleece","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/wind-grasp-magenta-2.jpg"} -{"_id":"o8Dh7fblk1d16tnO","name":"Healing Word","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature of your choice that you can see within range regains hit points equal to 1d4 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d4 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 250","activation":{"type":"bonus","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"rsak","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d4",""],["@mod",""]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d4"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} +{"_id":"o8Dh7fblk1d16tnO","name":"Healing Word","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature of your choice that you can see within range regains hit points equal to 1d4 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d4 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 250","activation":{"type":"bonus","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"rsak","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d4 + @mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d4"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} {"_id":"o9ZCvuD2B1OTcubb","name":"Wall of Force","permission":{"default":0},"type":"spell","data":{"description":{"value":"

An invisible⁠ wall of force springs into existence at a point you choose within range. The wall appears in any orientation you choose, as a horizontal or vertical barrier or at an angle. It can be free floating or resting⁠ on a solid surface. You can form it into a hemispherical dome or a sphere⁠ with a radius of up to 10 feet, or you can shape a flat surface made up of ten 10-foot-by-10-foot panels. Each panel must be contiguous with another panel. In any form, the wall is 1/4 inch thick. It lasts for the Duration. If the wall cuts through a creature’s space when it appears, the creature is pushed to one side of the wall (your choice which side).

\n

Nothing can physically pass through the wall. It is immune to all damage and can’t be dispelled by Dispel Magic. A Disintegrate spell destroys the wall instantly, however. The wall also extends into the Ethereal Plane, blocking ethereal travel through the wall.

","chat":"","unidentified":""},"source":"PHB pg. 285","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":10,"units":"minute"},"target":{"value":100,"units":"ft","type":"wall"},"range":{"value":120,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"util","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":5,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":true,"ritual":false,"concentration":true},"materials":{"value":"A pinch of powder made by crushing clear gemstone","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/beam-magenta-3.jpg"} {"_id":"oIzA2MEHwxhtQneU","name":"Minor Illusion","permission":{"default":0},"type":"spell","data":{"description":{"value":"

You create a sound or an image of an object within range that lasts for the duration. The illusion also ends if you dismiss it as an action or cast this spell again.

If you create a sound, its volume can range from a whisper to a scream. It can be your voice, someone else's voice, a lion's roar, a beating of drums, or any other sound you choose. The sound continues unabated throughout the duration, or you can make discrete sounds at different times before the spell ends.

If you create an image of an object—such as a chair, muddy footprints, or a small chest—it must be no larger than a 5-foot cube. The image can't create sound, light, smell, or any other sensory effect. Physical interaction with the image reveals it to be an illusion, because things can pass through it.

If a creature uses its action to examine the sound or image, the creature can determine that it is an illusion with a successful Intelligence (Investigation) check against your spell save DC. If a creature discerns the illusion for what it is, the illusion becomes faint to the creature.

","chat":"","unidentified":""},"source":"PHB pg. 260","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"minute"},"target":{"value":5,"units":"ft","type":"cube"},"range":{"value":30,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"save","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"int","dc":0,"scaling":"spell"},"level":0,"school":"ill","components":{"value":"","vocal":false,"somatic":true,"material":true,"ritual":false,"concentration":false},"materials":{"value":"A bit of fleece.","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/skills/shadow_12.jpg"} {"_id":"ohqAIBg6de989CIo","name":"Animal Shapes","permission":{"default":0},"type":"spell","data":{"description":{"value":"

Your magic turns others into beasts. Choose any number of willing creatures that you can see within range. You transform each target into the form of a Large or smaller beast with a challenge rating of 4 or lower. On subsequent turns, you can use your action to transform affected creatures into new forms.

\n

The transformation lasts for the duration for each target, or until the target drops to 0 hit points or dies. You can choose a different form for each target. A target's game statistics are replaced by the statistics of the chosen beast, though the target retains its alignment and Intelligence, Wisdom, and Charisma scores. The target assumes the hit points of its new form, and when it reverts to its normal form, it returns to the number of hit points it had before it transformed. If it reverts as a result of dropping to 0 hit points, any excess damage carries over to its normal form. As long as the excess damage doesn't reduce the creature's normal form to 0 hit points, it isn't knocked unconscious. The creature is limited in the actions it can perform by the nature of its new form, and it can't speak or cast spells.

\n

The target's gear melds into the new form. The target can't activate, wield, or otherwise benefit from any of its equipment.

","chat":"","unidentified":""},"source":"PHB pg. 212","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":24,"units":"hour"},"target":{"value":0,"units":"any","type":"creature"},"range":{"value":30,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"util","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":8,"school":"trs","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/wild-jade-3.jpg"} @@ -294,7 +294,7 @@ {"_id":"tMH6Ivn4GmE1naMj","name":"Harm","permission":{"default":0},"type":"spell","data":{"description":{"value":"

You unleash a virulent disease on a creature that you can see within range. The target must make a Constitution saving throw. On a failed save, it takes 14d6 necrotic damage, or half as much damage on a successful save. The damage can’t reduce the target’s Hit Points below 1. If the target fails the saving throw, its hit point maximum is reduced for 1 Hour by an amount equal to the necrotic damage it took. Any effect that removes a disease allows a creature’s hit point maximum to return to normal before that time passes.

","chat":"","unidentified":""},"source":"PHB pg. 249","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":0,"units":"","type":""},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"save","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["14d6","necrotic"]],"versatile":""},"formula":"","save":{"ability":"con","dc":0,"scaling":"spell"},"level":6,"school":"nec","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/rip-magenta-3.jpg"} {"_id":"uAwtVZkiSTyP6ORB","name":"Telepathic Bond","permission":{"default":0},"type":"spell","data":{"description":{"value":"

You forge a telepathic link among up to eight willing creatures of your choice within range, psychically linking each creature to all the others for the duration. Creatures with Intelligence scores of 2 or less aren’t affected by this spell.

\n

Until the spell ends, the targets can communicate telepathically through the bond whether or not they have a common language. The communication is possible over any distance, though it can’t extend to other planes of existence.

","chat":"","unidentified":""},"source":"","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"hour"},"target":{"value":8,"units":"","type":"creature"},"range":{"value":30,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"util","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":5,"school":"div","components":{"value":"","vocal":true,"somatic":true,"material":true,"ritual":true,"concentration":false},"materials":{"value":"Pieces of eggshell from two different kinds of creatures","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{"_sheetTab":"details"},"img":"systems/dnd5e/icons/spells/link-blue-1.jpg"} {"_id":"uCud2s4TjMfjiXUb","name":"Spirit Guardians","permission":{"default":0},"type":"spell","data":{"description":{"value":"

You call forth spirits to protect you. They flit around you to a distance of 15 feet for the duration. If you are good or neutral, their spectral form appears angelic or fey (your choice). If you are evil, they appear fiendish.

\n

When you cast this spell, you can designate any number of creatures you can see to be unaffected by it. An affected creature's speed is halved in the area, and when the creature enters the area for the first time on a turn or starts its turn there, it must make a Wisdom saving throw. On a failed save, the creature takes 3d8 radiant damage (if you are good or neutral) or 3d8 necrotic damage (if you are evil). On a successful save, the creature takes half as much damage.

\n

At Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d8 for each slot level above 3rd.

","chat":"","unidentified":""},"source":"PHB pg. 278","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":10,"units":"minute"},"target":{"value":15,"units":"ft","type":"radius"},"range":{"value":null,"long":null,"units":"self"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"save","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["3d8","radiant"]],"versatile":""},"formula":"","save":{"ability":"wis","dc":0,"scaling":"spell"},"level":3,"school":"con","components":{"value":"","vocal":true,"somatic":true,"material":true,"ritual":false,"concentration":true},"materials":{"value":"A holy symbol","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d8"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/needles-sky-2.jpg"} -{"_id":"uUWb1wZgtMou0TVP","name":"Cure Wounds","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature you touch regains a number of hit points equal to 1d8 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d8 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 230","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d8","healing"],["@mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} +{"_id":"uUWb1wZgtMou0TVP","name":"Cure Wounds","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature you touch regains a number of hit points equal to 1d8 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d8 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 230","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d8 + @mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} {"_id":"udsLtG0BugXHR2JQ","name":"Prestidigitation","permission":{"default":0},"type":"spell","data":{"description":{"value":"

This spell is a minor magical trick that novice spellcasters use for practice. You create one of the following magical effects within range:

\n\n

If you cast this spell multiple times, you can have up to three of its non-instantaneous effects active at a time, and you can dismiss such an effect as an action.

","chat":"","unidentified":""},"source":"PHB pg. 267","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"hour"},"target":{"value":0,"units":"","type":"object"},"range":{"value":10,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"util","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":0,"school":"trs","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/explosion-royal-1.jpg"} {"_id":"vrN18tbTw7io5MWd","name":"Chill Touch","permission":{"default":0},"type":"spell","data":{"description":{"value":"

You create a ghostly, skeletal hand in the space of a creature within range. Make a ranged spell attack against the creature to assail it with the chill of the grave. On a hit, the target takes 1d8 Necrotic damage, and it can't regain hit points until the start of your next turn. Until then, the hand clings to the target.

\n

If you hit an undead target, it also has disadvantage on attack rolls against you until the end of your next turn.

\n

This spell's damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).

","chat":"","unidentified":""},"source":"PHB pg. 221","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"round"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":120,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"rsak","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d8","necrotic"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":0,"school":"nec","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"cantrip","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/ice-blue-1.jpg"} {"_id":"wJKpSvSTbSkTjqyb","name":"Shatter","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A sudden loud ringing noise, painfully intense, erupts from a point of your choice within range. Each creature in a 10-foot-radius sphere centered on that point must make a Constitution saving throw. A creature takes 3d8 thunder damage on a failed save, or half as much damage on a successful one. A creature made of inorganic material such as stone, crystal, or metal has disadvantage on this saving throw.

\n

A nonmagical object that isn't being worn or carried also takes the damage if it's in the spell's area.

\n

Higher Levels. When you cast this spell using a 3 or higher level spell slot, the damage of the spell increases by 1d8 for each level of higher spell slot 2.

","chat":"","unidentified":""},"source":"PHB pg. 275","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":10,"units":"ft","type":"sphere"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"save","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["3d8","thunder"]],"versatile":""},"formula":"","save":{"ability":"con","dc":0,"scaling":"spell"},"level":2,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":true,"ritual":false,"concentration":false},"materials":{"value":"A burst of mica.","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d8"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/explosion-sky-2.jpg"} @@ -317,22 +317,3 @@ {"_id":"zPGohqJRir6MyQ3U","name":"Expeditious Retreat","permission":{"default":0},"type":"spell","data":{"description":{"value":"

This spell allows you to move at an incredible pace. When you cast this spell, and then as a bonus action on each of your turns until the spell ends, you can take the Dash action.

","chat":"","unidentified":""},"source":"PHB pg. 238","activation":{"type":"bonus","cost":1,"condition":""},"duration":{"value":10,"units":"minute"},"target":{"value":0,"units":"","type":""},"range":{"value":null,"long":null,"units":"self"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"util","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"","dc":null,"value":""},"level":1,"school":"trs","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/wind-sky-1.jpg"} {"_id":"ztgcdrWPshKRpFd0","name":"Fireball","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A bright streak flashes from your pointing finger to a point you choose within range and then blossoms with a low roar into an explosion of flame. Each creature in a 20-foot-radius sphere centered on that point must make a Dexterity saving throw. A target takes 8d6 fire damage on a failed save, or half as much damage on a successful one.

\n

The fire spreads around corners. It ignites flammable objects in the area that aren’t being worn or carried.

\n

Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 3rd.

","chat":"","unidentified":""},"source":"PHB pg. 241","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":20,"units":"ft","type":"sphere"},"range":{"value":150,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"save","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["8d6","fire"]],"versatile":""},"formula":"","save":{"ability":"dex","dc":0,"scaling":"spell"},"level":3,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":true,"ritual":false,"concentration":false},"materials":{"value":"A tiny ball of bat guano and sulfur","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d6"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/fireball-red-2.jpg"} {"_id":"zwGsAv6kmwzYGhh3","name":"Blindness/Deafness","permission":{"default":0},"type":"spell","data":{"description":{"value":"

You can blind or deafen a foe. Choose one creature that you can see within range to make a Constitution saving throw. If it fails, the target is either blinded or deafened (your choice) for the duration. At the end of each of its turns, the target can make a Constitution saving throw. On a success, the spell ends.

\n

At Higher Levels. When you cast this spell using a spell slot of 3rd level or higher, you can target one additional creature for each slot level above 2nd.

","chat":"","unidentified":""},"source":"PHB pg. 219","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"minute"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":30,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"save","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":"","value":""},"formula":"","save":{"ability":"con","dc":0,"scaling":"spell"},"level":2,"school":"nec","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/evil-eye-red-2.jpg"} -{"_id":"o8Dh7fblk1d16tnO","name":"Healing Word","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature of your choice that you can see within range regains hit points equal to 1d4 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d4 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 250","activation":{"type":"bonus","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"rsak","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d4 + @mod",""],["@mod",""]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d4"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} -{"_id":"o8Dh7fblk1d16tnO","name":"Healing Word","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature of your choice that you can see within range regains hit points equal to 1d4 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d4 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 250","activation":{"type":"bonus","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"rsak","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d4 + @mod",""],["@mod",""]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d4"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} -{"_id":"o8Dh7fblk1d16tnO","name":"Healing Word","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature of your choice that you can see within range regains hit points equal to 1d4 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d4 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 250","activation":{"type":"bonus","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"rsak","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d4 + @mod",""]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d4"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} -{"_id":"o8Dh7fblk1d16tnO","name":"Healing Word","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature of your choice that you can see within range regains hit points equal to 1d4 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d4 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 250","activation":{"type":"bonus","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"rsak","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d4 + @mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d4"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} -{"_id":"o8Dh7fblk1d16tnO","name":"Healing Word","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature of your choice that you can see within range regains hit points equal to 1d4 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d4 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 250","activation":{"type":"bonus","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"rsak","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d4 + @mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d4"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} -{"_id":"o8Dh7fblk1d16tnO","name":"Healing Word","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature of your choice that you can see within range regains hit points equal to 1d4 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d4 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 250","activation":{"type":"bonus","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"rsak","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d4 + @mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d4"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} -{"_id":"MOEmz9N0j0QPkKEE","name":"Prayer of Healing","permission":{"default":0},"type":"spell","data":{"description":{"value":"

Up to six creatures of your choice that you can see within range each regain Hit Points equal to 2d8 + your Spellcasting ability modifier. This spell has no effect on Undead or constructs.

\n

At Higher Levels. When you cast this spell using a spell slot of 3rd level or higher, the Healing increases by 1d8 for each slot level above 2nd.

","chat":"","unidentified":""},"source":"PHB pg. 267","activation":{"type":"minute","cost":10,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":6,"units":"","type":"creature"},"range":{"value":30,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["2d8 + @mod","healing"],["@mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":2,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d8"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-2.jpg"} -{"_id":"MOEmz9N0j0QPkKEE","name":"Prayer of Healing","permission":{"default":0},"type":"spell","data":{"description":{"value":"

Up to six creatures of your choice that you can see within range each regain Hit Points equal to 2d8 + your Spellcasting ability modifier. This spell has no effect on Undead or constructs.

\n

At Higher Levels. When you cast this spell using a spell slot of 3rd level or higher, the Healing increases by 1d8 for each slot level above 2nd.

","chat":"","unidentified":""},"source":"PHB pg. 267","activation":{"type":"minute","cost":10,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":6,"units":"","type":"creature"},"range":{"value":30,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["2d8 + @mod","healing"],["@mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":2,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d8"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-2.jpg"} -{"_id":"MOEmz9N0j0QPkKEE","name":"Prayer of Healing","permission":{"default":0},"type":"spell","data":{"description":{"value":"

Up to six creatures of your choice that you can see within range each regain Hit Points equal to 2d8 + your Spellcasting ability modifier. This spell has no effect on Undead or constructs.

\n

At Higher Levels. When you cast this spell using a spell slot of 3rd level or higher, the Healing increases by 1d8 for each slot level above 2nd.

","chat":"","unidentified":""},"source":"PHB pg. 267","activation":{"type":"minute","cost":10,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":6,"units":"","type":"creature"},"range":{"value":30,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["2d8 + @mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":2,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d8"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-2.jpg"} -{"_id":"MOEmz9N0j0QPkKEE","name":"Prayer of Healing","permission":{"default":0},"type":"spell","data":{"description":{"value":"

Up to six creatures of your choice that you can see within range each regain Hit Points equal to 2d8 + your Spellcasting ability modifier. This spell has no effect on Undead or constructs.

\n

At Higher Levels. When you cast this spell using a spell slot of 3rd level or higher, the Healing increases by 1d8 for each slot level above 2nd.

","chat":"","unidentified":""},"source":"PHB pg. 267","activation":{"type":"minute","cost":10,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":6,"units":"","type":"creature"},"range":{"value":30,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["2d8 + @mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":2,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d8"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-2.jpg"} -{"_id":"o8Dh7fblk1d16tnO","name":"Healing Word","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature of your choice that you can see within range regains hit points equal to 1d4 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d4 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 250","activation":{"type":"bonus","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"rsak","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d4 + @mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d4"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} -{"_id":"uUWb1wZgtMou0TVP","name":"Cure Wounds","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature you touch regains a number of hit points equal to 1d8 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d8 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 230","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d8 + @mod","healing"],["@mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} -{"_id":"uUWb1wZgtMou0TVP","name":"Cure Wounds","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature you touch regains a number of hit points equal to 1d8 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d8 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 230","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d8 + @mod","healing"],["@mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} -{"_id":"uUWb1wZgtMou0TVP","name":"Cure Wounds","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature you touch regains a number of hit points equal to 1d8 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d8 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 230","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d8 + @mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} -{"_id":"uUWb1wZgtMou0TVP","name":"Cure Wounds","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A creature you touch regains a number of hit points equal to 1d8 + your spellcasting ability modifier. This spell has no effect on undead or constructs.

\n

Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, the healing increases by 1d8 for each slot level above 1st.

","chat":"","unidentified":""},"source":"PHB pg. 230","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1d8 + @mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":1,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":""}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-1.jpg"} -{"_id":"Pyzmm8R7rVsNAPsd","name":"Mass Cure Wounds","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A wave of Healing energy washes out from a point of your choice within range. Choose up to six creatures in a 30-foot-radius Sphere centered on that point. Each target regains Hit Points equal to 3d8 + your Spellcasting ability modifier. This spell has no effect on Undead or constructs.

\n

At Higher Levels. When you cast this spell using a spell slot of 6th level or higher, the Healing increases by 1d8 for each slot level above 5th.

","chat":"","unidentified":""},"source":"PHB pg. 258","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":30,"units":"ft","type":"sphere"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["3d8 + @mod","healing"],["@mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":5,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d8"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-2.jpg"} -{"_id":"Pyzmm8R7rVsNAPsd","name":"Mass Cure Wounds","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A wave of Healing energy washes out from a point of your choice within range. Choose up to six creatures in a 30-foot-radius Sphere centered on that point. Each target regains Hit Points equal to 3d8 + your Spellcasting ability modifier. This spell has no effect on Undead or constructs.

\n

At Higher Levels. When you cast this spell using a spell slot of 6th level or higher, the Healing increases by 1d8 for each slot level above 5th.

","chat":"","unidentified":""},"source":"PHB pg. 258","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":30,"units":"ft","type":"sphere"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["3d8 + @mod","healing"],["@mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":5,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d8"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-2.jpg"} -{"_id":"Pyzmm8R7rVsNAPsd","name":"Mass Cure Wounds","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A wave of Healing energy washes out from a point of your choice within range. Choose up to six creatures in a 30-foot-radius Sphere centered on that point. Each target regains Hit Points equal to 3d8 + your Spellcasting ability modifier. This spell has no effect on Undead or constructs.

\n

At Higher Levels. When you cast this spell using a spell slot of 6th level or higher, the Healing increases by 1d8 for each slot level above 5th.

","chat":"","unidentified":""},"source":"PHB pg. 258","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":30,"units":"ft","type":"sphere"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["3d8 + @mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":5,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d8"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-2.jpg"} -{"_id":"Pyzmm8R7rVsNAPsd","name":"Mass Cure Wounds","permission":{"default":0},"type":"spell","data":{"description":{"value":"

A wave of Healing energy washes out from a point of your choice within range. Choose up to six creatures in a 30-foot-radius Sphere centered on that point. Each target regains Hit Points equal to 3d8 + your Spellcasting ability modifier. This spell has no effect on Undead or constructs.

\n

At Higher Levels. When you cast this spell using a spell slot of 6th level or higher, the Healing increases by 1d8 for each slot level above 5th.

","chat":"","unidentified":""},"source":"PHB pg. 258","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":"inst"},"target":{"value":30,"units":"ft","type":"sphere"},"range":{"value":60,"long":0,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["3d8 + @mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"value":"","scaling":"spell"},"level":5,"school":"evo","components":{"value":"","vocal":true,"somatic":true,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"level","formula":"1d8"}},"sort":100001,"flags":{},"img":"systems/dnd5e/icons/spells/heal-jade-2.jpg"} diff --git a/system.json b/system.json index 58bbb4e707..6dcaf6aeea 100644 --- a/system.json +++ b/system.json @@ -2,7 +2,7 @@ "name": "dnd5e", "title": "Dungeons & Dragons 5th Edition", "description": "A comprehensive game system for running games of Dungeons & Dragons 5th Edition in the Foundry VTT environment.", - "version": 0.85, + "version": 0.86, "author": "Atropos", "scripts": [], "esmodules": ["dnd5e.js"], diff --git a/templates/actors/parts/actor-spellbook.html b/templates/actors/parts/actor-spellbook.html index c80a5fff2e..d66c03f82c 100644 --- a/templates/actors/parts/actor-spellbook.html +++ b/templates/actors/parts/actor-spellbook.html @@ -71,7 +71,11 @@

{{item.name}}

{{/if}} -
{{labels.components}}
+
+ {{#each labels.components}} + {{this}} + {{/each}} +
{{labels.school}}
{{labels.activation}}
diff --git a/templates/apps/polymorph-prompt.html b/templates/apps/polymorph-prompt.html index ce56eb1c79..c43c043bf8 100644 --- a/templates/apps/polymorph-prompt.html +++ b/templates/apps/polymorph-prompt.html @@ -3,7 +3,7 @@
{{/each}}