Add files via upload

v0.2.0
Felix 2020-04-30 19:07:00 +02:00 committed by GitHub
parent 2f96862ed2
commit b8c45dea00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 262 additions and 233 deletions

View File

@ -50,6 +50,13 @@
padding-right: 5px; padding-right: 5px;
overflow: scroll; overflow: scroll;
} }
.compendium-browser .control-area button {
background: rgba(0, 0, 0, 0.05);
border: 1px solid #bbb;
border-radius: 5px;
margin-top: 5px;
padding: 2px;
}
.compendium-browser .control-area .filtercontainer { .compendium-browser .control-area .filtercontainer {
border: 1px solid #bbb; border: 1px solid #bbb;
border-radius: 5px; border-radius: 5px;
@ -93,7 +100,7 @@
.compendium-browser .control-area .filtercontainer .small-input { .compendium-browser .control-area .filtercontainer .small-input {
width: calc(100% - 44px); width: calc(100% - 44px);
height: 27px; height: 27px;
background: rgba(255, 255, 255, 0.8); background: rgba(0, 0, 0, 0.05);
border: 1px solid #444; border: 1px solid #444;
border-radius: 3px; border-radius: 3px;
padding: 0 3px; padding: 0 3px;

View File

@ -1,33 +1,28 @@
/** /**
* @author Felix Müller aka syl3r86 * @author Felix Müller aka syl3r86
* @version 0.1.11 * @version 0.2.0
*/ */
class SpellBrowser extends Application { class SpellBrowser extends Application {
constructor(app) { async initializeContent() {
super(app);
// load settings // load settings
Hooks.on('ready', e => { if (this.settings === undefined) {
if (this.settings === undefined) { this.initSettings();
this.initSettings(); }
} this.loadSpells().then(obj => {
this.spells = obj;
this.loadSpells().then(obj => {
this.spells = obj
});
this.loadNpcs().then(obj => {
this.npcs = obj
});
loadTemplates([
"modules/compendium-browser/template/spell-browser.html",
"modules/compendium-browser/template/npc-browser.html",
"modules/compendium-browser/template/filter-container.html",
"modules/compendium-browser/template/settings.html"
])
}); });
this.loadNpcs().then(obj => {
this.npcs = obj;
});
await loadTemplates([
"modules/compendium-browser/template/spell-browser.html",
"modules/compendium-browser/template/npc-browser.html",
"modules/compendium-browser/template/filter-container.html",
"modules/compendium-browser/template/settings.html"
]);
this.hookCompendiumList(); this.hookCompendiumList();
this.spellFilters = { this.spellFilters = {
@ -38,18 +33,20 @@ class SpellBrowser extends Application {
registeredFilterCategorys: {}, registeredFilterCategorys: {},
activeFilters: {} activeFilters: {}
}; };
} }
static get defaultOptions() { static get defaultOptions() {
const options = super.defaultOptions; const options = super.defaultOptions;
options.classes = options.classes.concat('compendium-browser'); mergeObject(options, {
options.template = "modules/compendium-browser/template/template.html"; tabs: [{ navSelector: ".tabs", contentSelector: ".content", initial: "spell" }],
options.width = 800; classes: options.classes.concat('compendium-browser'),
options.height = 700; template: "modules/compendium-browser/template/template.html",
options.resizable = true; width: 800,
options.minimizable = true; height: 700,
options.title = "Compendium Browser"; resizable: true,
minimizable: true,
title: "Compendium Browser"
});
return options; return options;
} }
@ -195,7 +192,7 @@ class SpellBrowser extends Application {
if (item.type == 'spell') { if (item.type == 'spell') {
npc.hasSpells = true; npc.hasSpells = true;
} }
if (item.data.damage && item.data.damage.parts.length > 0) { if (item.data.damage && item.data.damage.parts && item.data.damage.parts.length > 0) {
for (let part of item.data.damage.parts) { for (let part of item.data.damage.parts) {
let type = part[1]; let type = part[1];
if (npc.damageDealt.indexOf(type) === -1) { if (npc.damageDealt.indexOf(type) === -1) {
@ -215,19 +212,10 @@ class SpellBrowser extends Application {
} }
activateListeners(html) { activateListeners(html) {
super.activateListeners(html);
// localizing title // localizing title
$(html).parents('.app').find('.window-title')[0].innerText = game.i18n.localize("CMPBrowser.compendiumBrowser"); $(html).parents('.app').find('.window-title')[0].innerText = game.i18n.localize("CMPBrowser.compendiumBrowser");
// activating tabs/*
let nav = $('.tabs[data-group="toplvl"]');
new Tabs(nav, {
initial: this["activeTab"] || 'tab1',
callback: clicked => {
this["activeTab"] = clicked.data("tab");
}
});
// show entity sheet // show entity sheet
html.find('.item-edit').click(ev => { html.find('.item-edit').click(ev => {
let itemId = $(ev.currentTarget).parents("li").attr("data-entry-id"); let itemId = $(ev.currentTarget).parents("li").attr("data-entry-id");
@ -289,6 +277,17 @@ class SpellBrowser extends Application {
}); });
html.find('.npc-browser select[name=sortorder]').trigger('change') html.find('.npc-browser select[name=sortorder]').trigger('change')
// reset filters
html.find('#reset-spell-filter').click(ev => {
this.spellFilters.activeFilters = {};
this.render();
});
html.find('#reset-npc-filter').click(ev => {
this.npcFilters.activeFilters = {};
this.render();
});
// settings // settings
html.find('.settings input').on('change', ev => { html.find('.settings input').on('change', ev => {
let setting = ev.target.dataset.setting; let setting = ev.target.dataset.setting;
@ -738,13 +737,14 @@ class SpellBrowser extends Application {
} }
} }
Hooks.on('init', () => { Hooks.on('ready', async function() {
if (game.compendiumBrowser === undefined) { if (game.compendiumBrowser === undefined) {
game.compendiumBrowser = new SpellBrowser(); game.compendiumBrowser = new SpellBrowser();
await game.compendiumBrowser.initializeContent();
} }
});
Hooks.on('ready', () => { game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("DND5E.Source"), 'data.source', 'text');
game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.lvl"), 'data.level', 'multiSelect', [game.i18n.localize("CMPBrowser.cantip"), 1, 2, 3, 4, 5, 6, 7, 8, 9]); game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.lvl"), 'data.level', 'multiSelect', [game.i18n.localize("CMPBrowser.cantip"), 1, 2, 3, 4, 5, 6, 7, 8, 9]);
game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.school"), 'data.school', 'select', CONFIG.DND5E.spellSchools); game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.school"), 'data.school', 'select', CONFIG.DND5E.spellSchools);
game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.castingTime"), 'data.activation.type', 'select', game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.castingTime"), 'data.activation.type', 'select',
@ -760,6 +760,7 @@ Hooks.on('ready', () => {
game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.damageType"), 'damageTypes', 'select', CONFIG.DND5E.damageTypes); game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.damageType"), 'damageTypes', 'select', CONFIG.DND5E.damageTypes);
game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.class"), 'data.classes', 'select', game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.class"), 'data.classes', 'select',
{ {
artificer: game.i18n.localize("CMPBrowser.artificer"),
bard: game.i18n.localize("CMPBrowser.bard"), bard: game.i18n.localize("CMPBrowser.bard"),
cleric: game.i18n.localize("CMPBrowser.cleric"), cleric: game.i18n.localize("CMPBrowser.cleric"),
druid: game.i18n.localize("CMPBrowser.druid"), druid: game.i18n.localize("CMPBrowser.druid"),
@ -776,6 +777,7 @@ Hooks.on('ready', () => {
game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.components"), game.i18n.localize("CMPBrowser.somatic"), 'data.components.somatic', 'bool'); game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.components"), game.i18n.localize("CMPBrowser.somatic"), 'data.components.somatic', 'bool');
game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.components"), game.i18n.localize("CMPBrowser.material"), 'data.components.material', 'bool'); game.compendiumBrowser.addSpellFilter(game.i18n.localize("CMPBrowser.components"), game.i18n.localize("CMPBrowser.material"), 'data.components.material', 'bool');
game.compendiumBrowser.addNpcFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("DND5E.Source"), 'data.details.source', 'text');
game.compendiumBrowser.addNpcFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.size"), 'data.traits.size', 'select', CONFIG.DND5E.actorSizes); game.compendiumBrowser.addNpcFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.size"), 'data.traits.size', 'select', CONFIG.DND5E.actorSizes);
game.compendiumBrowser.addNpcFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.hasSpells"), 'hasSpells', 'bool'); game.compendiumBrowser.addNpcFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.hasSpells"), 'hasSpells', 'bool');
game.compendiumBrowser.addNpcFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.hasLegAct"), 'data.resources.legact.max', 'bool'); game.compendiumBrowser.addNpcFilter(game.i18n.localize("CMPBrowser.general"), game.i18n.localize("CMPBrowser.hasLegAct"), 'data.resources.legact.max', 'bool');

View File

@ -55,6 +55,14 @@
padding-right:5px; padding-right:5px;
overflow:scroll; overflow:scroll;
button {
background: rgba(0, 0, 0, 0.05);
border: 1px solid #bbb;
border-radius: 5px;
margin-top: 5px;
padding:2px;
}
.filtercontainer { .filtercontainer {
border: 1px solid #bbb; border: 1px solid #bbb;
border-radius: 5px; border-radius: 5px;
@ -102,7 +110,7 @@
.small-input { .small-input {
width: calc(100% - 44px); width: calc(100% - 44px);
height: 27px; height: 27px;
background: rgba(255, 255, 255, 0.8); background: rgba(0, 0, 0, 0.05);
border: 1px solid #444; border: 1px solid #444;
border-radius: 3px; border-radius: 3px;
padding: 0 3px; padding: 0 3px;
@ -248,4 +256,4 @@
} }
} }
} }
} }

View File

@ -22,6 +22,7 @@
"CMPBrowser.spellType":"Spell Type", "CMPBrowser.spellType":"Spell Type",
"CMPBrowser.damageType":"Damage Type", "CMPBrowser.damageType":"Damage Type",
"CMPBrowser.class":"Class", "CMPBrowser.class":"Class",
"CMPBrowser.artificer":"Artificer",
"CMPBrowser.bard":"Bard", "CMPBrowser.bard":"Bard",
"CMPBrowser.cleric":"Cleric", "CMPBrowser.cleric":"Cleric",
"CMPBrowser.druid":"Druid", "CMPBrowser.druid":"Druid",

View File

@ -2,7 +2,7 @@
"name": "compendium-browser", "name": "compendium-browser",
"title": "Compendium Browser", "title": "Compendium Browser",
"description": "A module to easily browse and filter spells as well as npcs loaded from compendie.", "description": "A module to easily browse and filter spells as well as npcs loaded from compendie.",
"version": "0.1.11", "version": "0.2.0",
"author": "Felix#6196", "author": "Felix#6196",
"systems": ["dnd5e"], "systems": ["dnd5e"],
"scripts": ["./compendium-browser.js"], "scripts": ["./compendium-browser.js"],

View File

@ -1,120 +1,24 @@
{ {
"abidalzimshorridwilting": "sorcerer,wizard", "abidalzimshorridwilting": "sorcerer,wizard",
"absorbelements": "druid,ranger,sorcerer,wizard", "absorbelements": "artificer,druid,ranger,sorcerer,wizard",
"aganazzarsscorcher": "sorcerer,wizard",
"beastbond": "druid,ranger",
"bonesoftheearth": "druid",
"catapult": "sorcerer,wizard",
"catnap": "bard,sorcerer,wizard",
"causefear": "warlock,wizard",
"ceremony": "cleric,paladin",
"chaosbolt": "sorcerer",
"charmmonster": "bard,druid,sorcerer,warlock,wizard",
"controlflames": "druid,sorcerer,wizard",
"controlwinds": "druid,sorcerer,wizard",
"createbonfire": "druid,sorcerer,warlock,wizard",
"createhomunculus": "wizard",
"crownofstars": "sorcerer,warlock,wizard",
"dansemacabre": "warlock,wizard",
"dawn": "cleric,wizard",
"dragonsbreath": "sorcerer,wizard",
"druidgrove": "druid",
"dustdevil": "druid,sorcerer,wizard",
"earthtremor": "bard,druid,sorcerer,wizard",
"earthbind": "druid,sorcerer,warlock,wizard",
"elementalbane": "druid,warlock,wizard",
"enemiesabound": "bard,sorcerer,warlock,wizard",
"enervation": "sorcerer,warlock,wizard",
"eruptingearth": "druid,sorcerer,wizard",
"farstep": "sorcerer,warlock,wizard",
"findgreatersteed": "paladin",
"flamearrows": "druid,ranger,sorcerer,wizard",
"frostbite": "druid,sorcerer,warlock,wizard",
"guardianofnature": "druid,ranger",
"gust": "druid,sorcerer,wizard",
"healingspirit": "druid,ranger",
"holyweapon": "cleric,paladin",
"iceknife": "druid,sorcerer,wizard",
"illusorydragon": "wizard",
"immolation": "sorcerer,wizard",
"infernalcalling": "warlock,wizard",
"infestation": "druid,sorcerer,warlock,wizard",
"investitureofflame": "druid,sorcerer,warlock,wizard",
"investitureofice": "druid,sorcerer,warlock,wizard",
"investitureofstone": "druid,sorcerer,warlock,wizard",
"investitureofwind": "druid,sorcerer,warlock,wizard",
"invulnerability": "wizard",
"lifetransference": "cleric,wizard",
"maddeningdarkness": "warlock,wizard",
"maelstrom": "druid",
"magicstone": "druid,warlock",
"masspolymorph": "bard,sorcerer,wizard",
"maximiliansearthengrasp": "sorcerer,wizard",
"melfsminutemeteors": "sorcerer,wizard",
"mentalprison": "sorcerer,warlock,wizard",
"mightyfortress": "wizard",
"mindspike": "sorcerer,warlock,wizard",
"moldearth": "druid,sorcerer,wizard",
"negativeenergyflood": "warlock,wizard",
"powerwordpain": "sorcerer,warlock,wizard",
"primalsavagery": "druid",
"primordialward": "druid",
"psychicscream": "bard,sorcerer,warlock,wizard",
"pyrotechnics": "bard,sorcerer,wizard",
"scatter": "sorcerer,warlock,wizard",
"shadowblade": "sorcerer,warlock,wizard",
"shadowofmoil": "warlock",
"shapewater": "druid,sorcerer,wizard",
"sickeningradiance": "sorcerer,warlock,wizard",
"skillempowerment": "bard,sorcerer,wizard",
"skywrite": "bard,druid,wizard",
"snare": "druid,ranger,wizard",
"snillocssnowballswarm": "sorcerer,wizard",
"soulcage": "warlock,wizard",
"steelwindstrike": "ranger,wizard",
"stormsphere": "sorcerer,wizard",
"summongreaterdemon": "warlock,wizard",
"summonlesserdemons": "warlock,wizard",
"synapticstatic": "bard,sorcerer,warlock,wizard",
"templeofthegods": "cleric",
"tenserstransformation": "wizard",
"thunderstep": "sorcerer,warlock,wizard",
"thunderclap": "bard,druid,sorcerer,warlock,wizard",
"tidalwave": "druid,sorcerer,wizard",
"tinyservant": "wizard",
"tollthedead": "cleric,warlock,wizard",
"transmuterock": "druid,wizard",
"vitriolicsphere": "sorcerer,wizard",
"walloflight": "sorcerer,warlock,wizard",
"wallofsand": "wizard",
"wallofwater": "druid,sorcerer,wizard",
"wardingwind": "bard,druid,sorcerer,wizard",
"waterysphere": "druid,sorcerer,wizard",
"whirlwind": "druid,sorcerer,wizard",
"wordofradiance": "cleric",
"wrathofnature": "druid,ranger",
"zephyrstrike": "ranger",
"boomingblade": "sorcerer,warlock,wizard",
"greenflameblade": "sorcerer,warlock,wizard",
"lightninglure": "sorcerer,warlock,wizard",
"swordburst": "sorcerer,warlock,wizard",
"arcaneweapon": "artificerrevisited", "arcaneweapon": "artificerrevisited",
"acidsplash": "sorcerer,wizard,artificerrevisited", "acidsplash": "artificer,sorcerer,wizard,artificerrevisited",
"aid": "cleric,paladin,artificer,artificerrevisited", "aganazzarsscorcher": "sorcerer,wizard",
"alarm": "ranger,wizard,artificer,artificerrevisited", "aid": "artificer,cleric,paladin,artificer,artificerrevisited",
"alterself": "sorcerer,wizard,artificer,artificerrevisited", "alarm": "artificer,ranger,wizard,artificer,artificerrevisited",
"alterself": "artificer,sorcerer,wizard,artificer,artificerrevisited",
"animalfriendship": "bard,druid,ranger", "animalfriendship": "bard,druid,ranger",
"animalmessenger": "bard,druid,ranger", "animalmessenger": "bard,druid,ranger",
"animalshapes": "druid", "animalshapes": "druid",
"animatedead": "cleric,wizard", "animatedead": "cleric,wizard",
"animateobjects": "bard,sorcerer,wizard,artificerrevisited", "animateobjects": "artificer,bard,sorcerer,wizard,artificerrevisited",
"antilifeshell": "druid", "antilifeshell": "druid",
"antimagicfield": "cleric,wizard", "antimagicfield": "cleric,wizard",
"antipathysympathy": "druid,wizard", "antipathysympathy": "druid,wizard",
"arcaneeye": "wizard,artificer,artificerrevisited", "arcaneeye": "artificer,wizard,artificer,artificerrevisited",
"arcanegate": "sorcerer,warlock,wizard", "arcanegate": "sorcerer,warlock,wizard",
"arcanelock": "wizard,artificer,artificerrevisited", "arcanelock": "artificer,wizard,artificer,artificerrevisited",
"armorofagathys": "warlock", "armorofagathys": "warlock",
"armsofhadar": "warlock", "armsofhadar": "warlock",
"astralprojection": "cleric,warlock,wizard", "astralprojection": "cleric,warlock,wizard",
@ -128,9 +32,10 @@
"banishment": "cleric,paladin,sorcerer,warlock,wizard", "banishment": "cleric,paladin,sorcerer,warlock,wizard",
"barkskin": "druid,ranger", "barkskin": "druid,ranger",
"beaconofhope": "cleric", "beaconofhope": "cleric",
"beastbond": "druid,ranger",
"beastsense": "druid,ranger", "beastsense": "druid,ranger",
"bestowcurse": "bard,cleric,wizard", "bestowcurse": "bard,cleric,wizard",
"bigbyshand": "wizard,artificerrevisited", "bigbyshand": "artificer,wizard,artificerrevisited",
"arcanehand": "wizard,artificerrevisited", "arcanehand": "wizard,artificerrevisited",
"bladebarrier": "cleric", "bladebarrier": "cleric",
"bladeward": "bard,sorcerer,warlock,wizard", "bladeward": "bard,sorcerer,warlock,wizard",
@ -138,13 +43,21 @@
"blight": "druid,sorcerer,warlock,wizard", "blight": "druid,sorcerer,warlock,wizard",
"blindingsmite": "paladin", "blindingsmite": "paladin",
"blindnessdeafness": "bard,cleric,sorcerer,wizard", "blindnessdeafness": "bard,cleric,sorcerer,wizard",
"blink": "sorcerer,wizard,artificer,artificerrevisited", "blink": "artificer,sorcerer,wizard,artificer,artificerrevisited",
"blur": "sorcerer,wizard,artificer,artificerrevisited", "blur": "artificer,sorcerer,wizard,artificer,artificerrevisited",
"bonesoftheearth": "druid",
"boomingblade": "sorcerer,warlock,wizard",
"brandingsmite": "paladin", "brandingsmite": "paladin",
"burninghands": "sorcerer,wizard", "burninghands": "sorcerer,wizard",
"calllightning": "druid", "calllightning": "druid",
"calmemotions": "bard,cleric", "calmemotions": "bard,cleric",
"catapult": "artificer,sorcerer,wizard",
"catnap": "artificer,bard,sorcerer,wizard",
"causefear": "warlock,wizard",
"ceremony": "cleric,paladin",
"chainlightning": "sorcerer,wizard", "chainlightning": "sorcerer,wizard",
"chaosbolt": "sorcerer",
"charmmonster": "bard,druid,sorcerer,warlock,wizard",
"charmperson": "bard,druid,sorcerer,warlock,wizard", "charmperson": "bard,druid,sorcerer,warlock,wizard",
"chilltouch": "sorcerer,warlock,wizard", "chilltouch": "sorcerer,warlock,wizard",
"chromaticorb": "sorcerer,wizard", "chromaticorb": "sorcerer,wizard",
@ -174,112 +87,139 @@
"contactotherplane": "warlock,wizard", "contactotherplane": "warlock,wizard",
"contagion": "cleric,druid", "contagion": "cleric,druid",
"contingency": "wizard", "contingency": "wizard",
"continualflame": "cleric,wizard,artificer,artificerrevisited", "continualflame": "artificer,cleric,wizard,artificer,artificerrevisited",
"controlflames": "druid,sorcerer,wizard",
"controlwater": "cleric,druid,wizard", "controlwater": "cleric,druid,wizard",
"controlweather": "cleric,druid,wizard", "controlweather": "cleric,druid,wizard",
"controlwinds": "druid,sorcerer,wizard",
"cordonofarrows": "ranger", "cordonofarrows": "ranger",
"counterspell": "sorcerer,warlock,wizard", "counterspell": "sorcerer,warlock,wizard",
"createfoodandwater": "cleric,paladin", "createbonfire": "artificer,druid,sorcerer,warlock,wizard",
"createfoodandwater": "artificer,cleric,paladin",
"createhomunculus": "wizard",
"createundead": "cleric,warlock,wizard", "createundead": "cleric,warlock,wizard",
"createordestroywater": "cleric,druid", "createordestroywater": "cleric,druid",
"creation": "sorcerer,wizard,artificerrevisited", "creation": "artificer,sorcerer,wizard,artificerrevisited",
"crownofmadness": "bard,sorcerer,warlock,wizard", "crownofmadness": "bard,sorcerer,warlock,wizard",
"crownofstars": "sorcerer,warlock,wizard",
"crusadersmantle": "paladin", "crusadersmantle": "paladin",
"curewounds": "bard,cleric,druid,paladin,ranger,artificer,artificerrevisited", "curewounds": "artificer,bard,cleric,druid,paladin,ranger,artificer,artificerrevisited",
"dancinglights": "bard,sorcerer,wizard,artificerrevisited", "dancinglights": "artificer,bard,sorcerer,wizard,artificerrevisited",
"dansemacabre": "warlock,wizard",
"darkness": "sorcerer,warlock,wizard", "darkness": "sorcerer,warlock,wizard",
"darkvision": "druid,ranger,sorcerer,wizard,artificer,artificerrevisited", "darkvision": "artificer,druid,ranger,sorcerer,wizard,artificer,artificerrevisited",
"dawn": "cleric,wizard",
"daylight": "cleric,druid,paladin,ranger,sorcerer", "daylight": "cleric,druid,paladin,ranger,sorcerer",
"deathward": "cleric,paladin,artificer", "deathward": "cleric,paladin,artificer",
"delayedblastfireball": "sorcerer,wizard", "delayedblastfireball": "sorcerer,wizard",
"demiplane": "warlock,wizard", "demiplane": "warlock,wizard",
"destructivewave": "paladin", "destructivewave": "paladin",
"detectevilandgood": "cleric,paladin", "detectevilandgood": "cleric,paladin",
"detectmagic": "bard,cleric,druid,paladin,ranger,sorcerer,wizard,artificerrevisited", "detectmagic": "artificer,bard,cleric,druid,paladin,ranger,sorcerer,wizard,artificerrevisited",
"detectpoisonanddisease": "cleric,druid,paladin,ranger", "detectpoisonanddisease": "cleric,druid,paladin,ranger",
"detectthoughts": "bard,sorcerer,wizard", "detectthoughts": "bard,sorcerer,wizard",
"dimensiondoor": "bard,sorcerer,warlock,wizard", "dimensiondoor": "bard,sorcerer,warlock,wizard",
"disguiseself": "bard,sorcerer,wizard,artificer,artificerrevisited", "disguiseself": "artificer,bard,sorcerer,wizard,artificer,artificerrevisited",
"disintegrate": "sorcerer,wizard", "disintegrate": "sorcerer,wizard",
"dispelevilandgood": "cleric,paladin", "dispelevilandgood": "cleric,paladin",
"dispelmagic": "bard,cleric,druid,paladin,sorcerer,warlock,wizard,artificerrevisited", "dispelmagic": "artificer,bard,cleric,druid,paladin,sorcerer,warlock,wizard,artificerrevisited",
"dissonantwhispers": "bard", "dissonantwhispers": "bard",
"distortvalue": "bard,sorcerer,warlock,wizard",
"divination": "cleric", "divination": "cleric",
"divinefavor": "paladin", "divinefavor": "paladin",
"divineword": "cleric", "divineword": "cleric",
"dominatebeast": "druid,sorcerer", "dominatebeast": "druid,sorcerer",
"dominatemonster": "bard,sorcerer,warlock,wizard", "dominatemonster": "bard,sorcerer,warlock,wizard",
"dominateperson": "bard,sorcerer,wizard", "dominateperson": "bard,sorcerer,wizard",
"dragonsbreath": "sorcerer,wizard",
"drawmijsinstantsummons": "wizard", "drawmijsinstantsummons": "wizard",
"instantsummons": "wizard", "instantsummons": "wizard",
"dream": "bard,warlock,wizard", "dream": "bard,warlock,wizard",
"druidgrove": "druid",
"druidcraft": "druid", "druidcraft": "druid",
"dustdevil": "druid,sorcerer,wizard",
"earthtremor": "bard,druid,sorcerer,wizard",
"earthbind": "druid,sorcerer,warlock,wizard",
"earthquake": "cleric,druid,sorcerer", "earthquake": "cleric,druid,sorcerer",
"eldritchblast": "warlock", "eldritchblast": "warlock",
"elementalweapon": "paladin,artificerrevisited", "elementalbane": "artificer,druid,warlock,wizard",
"enhanceability": "bard,cleric,druid,sorcerer,artificer,artificerrevisited", "elementalweapon": "artificer,paladin,artificerrevisited",
"enlargereduce": "sorcerer,wizard,artificer,artificerrevisited", "enemiesabound": "bard,sorcerer,warlock,wizard",
"enervation": "sorcerer,warlock,wizard",
"enhanceability": "artificer,bard,cleric,druid,sorcerer,artificer,artificerrevisited",
"enlargereduce": "artificer,sorcerer,wizard,artificer,artificerrevisited",
"ensnaringstrike": "ranger", "ensnaringstrike": "ranger",
"entangle": "druid", "entangle": "druid",
"enthrall": "bard,warlock", "enthrall": "bard,warlock",
"eruptingearth": "druid,sorcerer,wizard",
"etherealness": "bard,cleric,sorcerer,warlock,wizard", "etherealness": "bard,cleric,sorcerer,warlock,wizard",
"evardsblacktentacles": "wizard", "evardsblacktentacles": "wizard",
"blacktentacles": "wizard", "blacktentacles": "wizard",
"expeditiousretreat": "sorcerer,warlock,wizard,artificer,artificerrevisited", "expeditiousretreat": "artificer,sorcerer,warlock,wizard,artificer,artificerrevisited",
"eyebite": "bard,sorcerer,warlock,wizard", "eyebite": "bard,sorcerer,warlock,wizard",
"fabricate": "wizard,artificer,artificerrevisited", "fabricate": "artificer,wizard,artificer,artificerrevisited",
"faeriefire": "bard,druid", "faeriefire": "artificer,bard,druid",
"falselife": "sorcerer,wizard,artificer,artificerrevisited", "falselife": "artificer,sorcerer,wizard,artificer,artificerrevisited",
"farstep": "sorcerer,warlock,wizard",
"fastfriends": "bard,cleric,wizard",
"fear": "bard,sorcerer,warlock,wizard", "fear": "bard,sorcerer,warlock,wizard",
"featherfall": "bard,sorcerer,wizard", "featherfall": "artificer,bard,sorcerer,wizard",
"feeblemind": "bard,druid,warlock,wizard", "feeblemind": "bard,druid,warlock,wizard",
"feigndeath": "bard,cleric,druid,wizard", "feigndeath": "bard,cleric,druid,wizard",
"findfamiliar": "wizard", "findfamiliar": "wizard",
"findgreatersteed": "paladin",
"findsteed": "paladin", "findsteed": "paladin",
"findtraps": "cleric,druid,ranger", "findtraps": "cleric,druid,ranger",
"findthepath": "bard,cleric,druid", "findthepath": "bard,cleric,druid",
"fingerofdeath": "sorcerer,warlock,wizard", "fingerofdeath": "sorcerer,warlock,wizard",
"firebolt": "sorcerer,wizard,artificerrevisited", "firebolt": "artificer,sorcerer,wizard,artificerrevisited",
"fireshield": "wizard", "fireshield": "wizard",
"firestorm": "cleric,druid,sorcerer", "firestorm": "cleric,druid,sorcerer",
"fireball": "sorcerer,wizard", "fireball": "sorcerer,wizard",
"flamearrows": "artificer,druid,ranger,sorcerer,wizard",
"flameblade": "druid", "flameblade": "druid",
"flamestrike": "cleric", "flamestrike": "cleric",
"flamingsphere": "druid,wizard", "flamingsphere": "druid,wizard",
"fleshtostone": "warlock,wizard", "fleshtostone": "warlock,wizard",
"fly": "sorcerer,warlock,wizard,artificer,artificerrevisited", "fly": "artificer,sorcerer,warlock,wizard,artificer,artificerrevisited",
"fogcloud": "druid,ranger,sorcerer,wizard", "fogcloud": "druid,ranger,sorcerer,wizard",
"forbiddance": "cleric", "forbiddance": "cleric",
"forcecage": "bard,warlock,wizard", "forcecage": "bard,warlock,wizard",
"foresight": "bard,druid,warlock,wizard", "foresight": "bard,druid,warlock,wizard",
"freedomofmovement": "bard,cleric,druid,ranger,artificer,artificerrevisited", "freedomofmovement": "artificer,bard,cleric,druid,ranger,artificer,artificerrevisited",
"friends": "bard,sorcerer,warlock,wizard", "friends": "bard,sorcerer,warlock,wizard",
"frostbite": "artificer,druid,sorcerer,warlock,wizard",
"gaseousform": "sorcerer,warlock,wizard,artificer,artificerrevisited", "gaseousform": "sorcerer,warlock,wizard,artificer,artificerrevisited",
"gate": "cleric,sorcerer,wizard", "gate": "cleric,sorcerer,wizard",
"geas": "bard,cleric,druid,paladin,wizard", "geas": "bard,cleric,druid,paladin,wizard",
"gentlerepose": "cleric,wizard", "gentlerepose": "cleric,wizard",
"giantinsect": "druid", "giantinsect": "druid",
"giftofgab": "bard,wizard",
"glibness": "bard,warlock", "glibness": "bard,warlock",
"globeofinvulnerability": "sorcerer,wizard", "globeofinvulnerability": "sorcerer,wizard",
"glyphofwarding": "bard,cleric,wizard,artificer,artificerrevisited", "glyphofwarding": "artificer,bard,cleric,wizard,artificer,artificerrevisited",
"goodberry": "druid,ranger", "goodberry": "druid,ranger",
"graspingvine": "druid,ranger", "graspingvine": "druid,ranger",
"grease": "wizard,artificerrevisited", "grease": "artificer,wizard,artificerrevisited",
"greaterinvisibility": "bard,sorcerer,wizard", "greaterinvisibility": "bard,sorcerer,wizard",
"greaterrestoration": "bard,cleric,druid,artificerrevisited", "greaterrestoration": "artificer,bard,cleric,druid,artificerrevisited",
"greenflameblade": "sorcerer,warlock,wizard",
"guardianoffaith": "cleric", "guardianoffaith": "cleric",
"guardianofnature": "druid,ranger",
"guardsandwards": "bard,wizard", "guardsandwards": "bard,wizard",
"guidance": "cleric,druid,artificerrevisited", "guidance": "artificer,cleric,druid,artificerrevisited",
"guidingbolt": "cleric", "guidingbolt": "cleric",
"gust": "druid,sorcerer,wizard",
"gustofwind": "druid,sorcerer,wizard", "gustofwind": "druid,sorcerer,wizard",
"hailofthorns": "ranger", "hailofthorns": "ranger",
"hallow": "cleric", "hallow": "cleric",
"hallucinatoryterrain": "bard,druid,warlock,wizard", "hallucinatoryterrain": "bard,druid,warlock,wizard",
"harm": "cleric", "harm": "cleric",
"haste": "sorcerer,wizard,artificer,artificerrevisited", "haste": "artificer,sorcerer,wizard,artificer,artificerrevisited",
"heal": "cleric,druid", "heal": "cleric,druid",
"healingspirit": "druid,ranger",
"healingword": "bard,cleric,druid", "healingword": "bard,cleric,druid",
"heatmetal": "bard,druid,artificerrevisited", "heatmetal": "artificer,bard,druid,artificerrevisited",
"hellishrebuke": "warlock", "hellishrebuke": "warlock",
"heroesfeast": "cleric,druid", "heroesfeast": "cleric,druid",
"heroism": "bard,paladin", "heroism": "bard,paladin",
@ -287,71 +227,99 @@
"holdmonster": "bard,sorcerer,warlock,wizard", "holdmonster": "bard,sorcerer,warlock,wizard",
"holdperson": "bard,cleric,druid,sorcerer,warlock,wizard", "holdperson": "bard,cleric,druid,sorcerer,warlock,wizard",
"holyaura": "cleric", "holyaura": "cleric",
"holyweapon": "cleric,paladin",
"hungerofhadar": "warlock", "hungerofhadar": "warlock",
"huntersmark": "ranger", "huntersmark": "ranger",
"hypnoticpattern": "bard,sorcerer,warlock,wizard", "hypnoticpattern": "bard,sorcerer,warlock,wizard",
"iceknife": "druid,sorcerer,wizard",
"icestorm": "druid,sorcerer,wizard", "icestorm": "druid,sorcerer,wizard",
"identify": "bard,wizard,artificerrevisited", "identify": "artificer,bard,wizard,artificerrevisited",
"illusorydragon": "wizard",
"illusoryscript": "bard,warlock,wizard", "illusoryscript": "bard,warlock,wizard",
"immolation": "sorcerer,wizard",
"imprisonment": "warlock,wizard", "imprisonment": "warlock,wizard",
"incendiarycloud": "sorcerer,wizard", "incendiarycloud": "sorcerer,wizard",
"incitegreed": "cleric,warlock,wizard",
"infernalcalling": "warlock,wizard",
"infestation": "druid,sorcerer,warlock,wizard",
"inflictwounds": "cleric", "inflictwounds": "cleric",
"insectplague": "cleric,druid,sorcerer", "insectplague": "cleric,druid,sorcerer",
"invisibility": "bard,sorcerer,warlock,wizard,artificer,artificerrevisited", "investitureofflame": "druid,sorcerer,warlock,wizard",
"jump": "druid,ranger,sorcerer,wizard,artificer,artificerrevisited", "investitureofice": "druid,sorcerer,warlock,wizard",
"investitureofstone": "druid,sorcerer,warlock,wizard",
"investitureofwind": "druid,sorcerer,warlock,wizard",
"invisibility": "artificer,bard,sorcerer,warlock,wizard,artificer,artificerrevisited",
"invulnerability": "wizard",
"jimsglowingcoin": "wizard",
"jimsmagicmissile": "wizard",
"jump": "artificer,druid,ranger,sorcerer,wizard,artificer,artificerrevisited",
"knock": "bard,sorcerer,wizard", "knock": "bard,sorcerer,wizard",
"legendlore": "bard,cleric,wizard", "legendlore": "bard,cleric,wizard",
"leomundssecretchest": "wizard,artificer,artificerrevisited", "leomundssecretchest": "artificer,wizard,artificer,artificerrevisited",
"leomundstinyhut": "bard,wizard", "leomundstinyhut": "bard,wizard",
"lesserrestoration": "bard,cleric,druid,paladin,ranger,artificer,artificerrevisited", "lesserrestoration": "artificer,bard,cleric,druid,paladin,ranger,artificer,artificerrevisited",
"levitate": "sorcerer,wizard,artificerrevisited", "levitate": "artificer,sorcerer,wizard,artificerrevisited",
"light": "bard,cleric,sorcerer,wizard,artificerrevisited", "lifetransference": "cleric,wizard",
"light": "artificer,bard,cleric,sorcerer,wizard,artificerrevisited",
"lightningarrow": "ranger", "lightningarrow": "ranger",
"lightningbolt": "sorcerer,wizard", "lightningbolt": "sorcerer,wizard",
"lightninglure": "sorcerer,warlock,wizard",
"locateanimalsorplants": "bard,druid,ranger", "locateanimalsorplants": "bard,druid,ranger",
"locatecreature": "bard,cleric,druid,paladin,ranger,wizard", "locatecreature": "bard,cleric,druid,paladin,ranger,wizard",
"locateobject": "bard,cleric,druid,paladin,ranger,wizard", "locateobject": "bard,cleric,druid,paladin,ranger,wizard",
"longstrider": "bard,druid,ranger,wizard,artificer,artificerrevisited", "longstrider": "artificer,bard,druid,ranger,wizard,artificer,artificerrevisited",
"maddeningdarkness": "warlock,wizard",
"maelstrom": "druid",
"magearmor": "sorcerer,wizard", "magearmor": "sorcerer,wizard",
"magehand": "bard,sorcerer,warlock,wizard,artificerrevisited", "magehand": "artificer,bard,sorcerer,warlock,wizard,artificerrevisited",
"magiccircle": "cleric,paladin,warlock,wizard", "magiccircle": "cleric,paladin,warlock,wizard",
"magicjar": "wizard", "magicjar": "wizard",
"magicmissile": "sorcerer,wizard", "magicmissile": "sorcerer,wizard",
"magicmouth": "bard,wizard,artificerrevisited", "magicmouth": "artificer,bard,wizard,artificerrevisited",
"magicweapon": "paladin,wizard,artificer,artificerrevisited", "magicstone": "artificer,druid,warlock",
"magicweapon": "artificer,paladin,wizard,artificer,artificerrevisited",
"majorimage": "bard,sorcerer,warlock,wizard", "majorimage": "bard,sorcerer,warlock,wizard",
"masscurewounds": "bard,cleric,druid", "masscurewounds": "bard,cleric,druid",
"massheal": "cleric", "massheal": "cleric",
"masshealingword": "cleric", "masshealingword": "cleric",
"masspolymorph": "bard,sorcerer,wizard",
"masssuggestion": "bard,sorcerer,warlock,wizard", "masssuggestion": "bard,sorcerer,warlock,wizard",
"maximiliansearthengrasp": "sorcerer,wizard",
"maze": "wizard", "maze": "wizard",
"meldintostone": "cleric,druid", "meldintostone": "cleric,druid",
"melfsacidarrow": "wizard", "melfsacidarrow": "wizard",
"melfsminutemeteors": "sorcerer,wizard",
"acidarrow": "wizard", "acidarrow": "wizard",
"mending": "bard,cleric,druid,sorcerer,wizard,artificerrevisited", "mending": "artificer,bard,cleric,druid,sorcerer,wizard,artificerrevisited",
"message": "bard,sorcerer,wizard,artificerrevisited", "mentalprison": "sorcerer,warlock,wizard",
"message": "artificer,bard,sorcerer,wizard,artificerrevisited",
"meteorswarm": "sorcerer,wizard", "meteorswarm": "sorcerer,wizard",
"mightyfortress": "wizard",
"mindblank": "bard,wizard", "mindblank": "bard,wizard",
"mindspike": "sorcerer,warlock,wizard",
"minorillusion": "bard,sorcerer,warlock,wizard", "minorillusion": "bard,sorcerer,warlock,wizard",
"miragearcane": "bard,druid,wizard", "miragearcane": "bard,druid,wizard",
"mirrorimage": "sorcerer,warlock,wizard", "mirrorimage": "sorcerer,warlock,wizard",
"mislead": "bard,wizard", "mislead": "bard,wizard",
"mistystep": "sorcerer,warlock,wizard", "mistystep": "sorcerer,warlock,wizard",
"modifymemory": "bard,wizard", "modifymemory": "bard,wizard",
"moldearth": "druid,sorcerer,wizard",
"moonbeam": "druid", "moonbeam": "druid",
"mordenkainensfaithfulhound": "wizard,artificer,artificerrevisited", "mordenkainensfaithfulhound": "artificer,wizard,artificer,artificerrevisited",
"motivationalspeech": "bard,cleric",
"faithfulhound": "wizard,artificer,artificerrevisited", "faithfulhound": "wizard,artificer,artificerrevisited",
"mordenkainensmagnificentmansion": "bard,wizard", "mordenkainensmagnificentmansion": "bard,wizard",
"magnificentmansion": "bard,wizard", "magnificentmansion": "bard,wizard",
"mordenkainensprivatesanctum": "wizard,artificer,artificerrevisited", "mordenkainensprivatesanctum": "artificer,wizard,artificer,artificerrevisited",
"mordenkainenssword": "bard,wizard", "mordenkainenssword": "bard,wizard",
"arcanesword": "bard,wizard", "arcanesword": "bard,wizard",
"moveearth": "druid,sorcerer,wizard", "moveearth": "druid,sorcerer,wizard",
"negativeenergyflood": "warlock,wizard",
"nondetection": "bard,ranger,wizard", "nondetection": "bard,ranger,wizard",
"nystulsmagicaura": "wizard", "nystulsmagicaura": "wizard",
"arcanistsmagicaura": "wizard", "arcanistsmagicaura": "wizard",
"otilukesfreezingsphere": "wizard", "otilukesfreezingsphere": "wizard",
"otilukesresilientsphere": "wizard,artificer,artificerrevisited", "otilukesresilientsphere": "artificer,wizard,artificer,artificerrevisited",
"ottosirresistibledance": "bard,wizard", "ottosirresistibledance": "bard,wizard",
"passwithouttrace": "druid,ranger", "passwithouttrace": "druid,ranger",
"passwall": "wizard", "passwall": "wizard",
@ -362,73 +330,94 @@
"planarbinding": "bard,cleric,druid,wizard", "planarbinding": "bard,cleric,druid,wizard",
"planeshift": "cleric,druid,sorcerer,warlock,wizard", "planeshift": "cleric,druid,sorcerer,warlock,wizard",
"plantgrowth": "bard,druid,ranger", "plantgrowth": "bard,druid,ranger",
"poisonspray": "druid,sorcerer,warlock,wizard,artificerrevisited", "poisonspray": "artificer,druid,sorcerer,warlock,wizard,artificerrevisited",
"polymorph": "bard,druid,sorcerer,wizard", "polymorph": "bard,druid,sorcerer,wizard",
"powerwordheal": "bard", "powerwordheal": "bard",
"powerwordkill": "bard,sorcerer,warlock,wizard", "powerwordkill": "bard,sorcerer,warlock,wizard",
"powerwordpain": "sorcerer,warlock,wizard",
"powerwordstun": "bard,sorcerer,warlock,wizard", "powerwordstun": "bard,sorcerer,warlock,wizard",
"prayerofhealing": "cleric", "prayerofhealing": "cleric",
"prestidigitation": "bard,sorcerer,warlock,wizard,artificerrevisited", "prestidigitation": "artificer,bard,sorcerer,warlock,wizard,artificerrevisited",
"primalsavagery": "druid",
"primordialward": "druid",
"prismaticspray": "sorcerer,wizard", "prismaticspray": "sorcerer,wizard",
"prismaticwall": "wizard", "prismaticwall": "wizard",
"produceflame": "druid", "produceflame": "druid",
"programmedillusion": "bard,wizard", "programmedillusion": "bard,wizard",
"projectimage": "bard,wizard", "projectimage": "bard,wizard",
"protectionfromenergy": "cleric,druid,ranger,sorcerer,wizard,artificer,artificerrevisited", "protectionfromenergy": "artificer,cleric,druid,ranger,sorcerer,wizard,artificer,artificerrevisited",
"protectionfromevilandgood": "cleric,paladin,warlock,wizard", "protectionfromevilandgood": "cleric,paladin,warlock,wizard",
"protectionfrompoison": "cleric,druid,paladin,ranger,artificer,artificerrevisited", "protectionfrompoison": "artificer,cleric,druid,paladin,ranger,artificer,artificerrevisited",
"purifyfoodanddrink": "cleric,druid,paladin", "psychicscream": "bard,sorcerer,warlock,wizard",
"purifyfoodanddrink": "artificer,cleric,druid,paladin",
"pyrotechnics": "artificer,bard,sorcerer,wizard",
"raisedead": "bard,cleric,paladin", "raisedead": "bard,cleric,paladin",
"rarystelepathicbond": "wizard", "rarystelepathicbond": "wizard",
"rayofenfeeblement": "warlock,wizard", "rayofenfeeblement": "warlock,wizard",
"rayoffrost": "sorcerer,wizard,artificerrevisited", "rayoffrost": "artificer,sorcerer,wizard,artificerrevisited",
"rayofsickness": "sorcerer,wizard", "rayofsickness": "sorcerer,wizard",
"regenerate": "bard,cleric,druid", "regenerate": "bard,cleric,druid",
"reincarnate": "druid", "reincarnate": "druid",
"removecurse": "cleric,paladin,warlock,wizard", "removecurse": "cleric,paladin,warlock,wizard",
"resistance": "cleric,druid,artificerrevisited", "resistance": "artificer,cleric,druid,artificerrevisited",
"resurrection": "bard,cleric", "resurrection": "bard,cleric",
"reversegravity": "druid,sorcerer,wizard", "reversegravity": "druid,sorcerer,wizard",
"revivify": "cleric,paladin,artificer,artificerrevisited", "revivify": "artificer,cleric,paladin,artificer,artificerrevisited",
"ropetrick": "wizard,artificer,artificerrevisited", "ropetrick": "artificer,wizard,artificer,artificerrevisited",
"sacredflame": "cleric", "sacredflame": "cleric",
"sanctuary": "cleric,artificer,artificerrevisited", "sanctuary": "artificer,cleric,artificer,artificerrevisited",
"scatter": "sorcerer,warlock,wizard",
"scorchingray": "sorcerer,wizard", "scorchingray": "sorcerer,wizard",
"scrying": "bard,cleric,druid,warlock,wizard", "scrying": "bard,cleric,druid,warlock,wizard",
"searingsmite": "paladin", "searingsmite": "paladin",
"seeinvisibility": "bard,sorcerer,wizard,artificerrevisited", "seeinvisibility": "artificer,bard,sorcerer,wizard,artificerrevisited",
"seeming": "bard,sorcerer,wizard", "seeming": "bard,sorcerer,wizard",
"sending": "bard,cleric,wizard", "sending": "bard,cleric,wizard",
"sequester": "wizard", "sequester": "wizard",
"shadowblade": "sorcerer,warlock,wizard",
"shadowofmoil": "warlock",
"shapewater": "druid,sorcerer,wizard",
"shapechange": "druid,wizard", "shapechange": "druid,wizard",
"shatter": "bard,sorcerer,warlock,wizard", "shatter": "bard,sorcerer,warlock,wizard",
"shield": "sorcerer,wizard", "shield": "sorcerer,wizard",
"shieldoffaith": "cleric,paladin,artificer,artificerrevisited", "shieldoffaith": "cleric,paladin,artificer,artificerrevisited",
"shillelagh": "druid", "shillelagh": "druid",
"shockinggrasp": "sorcerer,wizard,artificerrevisited", "shockinggrasp": "artificer,sorcerer,wizard,artificerrevisited",
"sickeningradiance": "sorcerer,warlock,wizard",
"silence": "bard,cleric,ranger", "silence": "bard,cleric,ranger",
"silentimage": "bard,sorcerer,wizard", "silentimage": "bard,sorcerer,wizard",
"simulacrum": "wizard", "simulacrum": "wizard",
"skillempowerment": "artificer,bard,sorcerer,wizard",
"skywrite": "artificer,bard,druid,wizard",
"sleep": "bard,sorcerer,wizard", "sleep": "bard,sorcerer,wizard",
"sleetstorm": "druid,sorcerer,wizard", "sleetstorm": "druid,sorcerer,wizard",
"slow": "sorcerer,wizard", "slow": "sorcerer,wizard",
"sparethedying": "cleric,artificerrevisited", "snare": "artificer,druid,ranger,wizard",
"snillocssnowballswarm": "sorcerer,wizard",
"soulcage": "warlock,wizard",
"sparethedying": "artificer,cleric,artificerrevisited",
"speakwithanimals": "bard,druid,ranger", "speakwithanimals": "bard,druid,ranger",
"speakwithdead": "bard,cleric", "speakwithdead": "bard,cleric",
"speakwithplants": "bard,druid,ranger", "speakwithplants": "bard,druid,ranger",
"spiderclimb": "sorcerer,warlock,wizard,artificer,artificerrevisited", "spiderclimb": "artificer,sorcerer,warlock,wizard,artificer,artificerrevisited",
"spikegrowth": "druid,ranger", "spikegrowth": "druid,ranger",
"spiritguardians": "cleric", "spiritguardians": "cleric",
"spiritualweapon": "cleric", "spiritualweapon": "cleric",
"staggeringsmite": "paladin", "staggeringsmite": "paladin",
"steelwindstrike": "ranger,wizard",
"stinkingcloud": "bard,sorcerer,wizard", "stinkingcloud": "bard,sorcerer,wizard",
"stoneshape": "cleric,druid,wizard,artificer,artificerrevisited", "stoneshape": "artificer,cleric,druid,wizard,artificer,artificerrevisited",
"stoneskin": "druid,ranger,sorcerer,wizard,artificer,artificerrevisited", "stoneskin": "artificer,druid,ranger,sorcerer,wizard,artificer,artificerrevisited",
"stormofvengeance": "druid", "stormofvengeance": "druid",
"stormsphere": "sorcerer,wizard",
"suggestion": "bard,sorcerer,warlock,wizard", "suggestion": "bard,sorcerer,warlock,wizard",
"summongreaterdemon": "warlock,wizard",
"summonlesserdemons": "warlock,wizard",
"sunbeam": "druid,sorcerer,wizard", "sunbeam": "druid,sorcerer,wizard",
"sunburst": "druid,sorcerer,wizard", "sunburst": "druid,sorcerer,wizard",
"swiftquiver": "ranger", "swiftquiver": "ranger",
"swordburst": "sorcerer,warlock,wizard",
"synapticstatic": "bard,sorcerer,warlock,wizard",
"symbol": "bard,cleric,wizard", "symbol": "bard,cleric,wizard",
"tashashideouslaughter": "bard,wizard", "tashashideouslaughter": "bard,wizard",
"hideouslaughter": "bard,wizard", "hideouslaughter": "bard,wizard",
@ -436,15 +425,23 @@
"telepathy": "wizard", "telepathy": "wizard",
"teleport": "bard,sorcerer,wizard", "teleport": "bard,sorcerer,wizard",
"teleportationcircle": "bard,sorcerer,wizard", "teleportationcircle": "bard,sorcerer,wizard",
"templeofthegods": "cleric",
"tensersfloatingdisk": "wizard", "tensersfloatingdisk": "wizard",
"tensersfloatingdisc": "wizard", "tensersfloatingdisc": "wizard",
"tenserstransformation": "wizard",
"floatingdisc": "wizard", "floatingdisc": "wizard",
"thaumaturgy": "cleric", "thaumaturgy": "cleric",
"thornwhip": "druid,artificerrevisited", "thornwhip": "artificer,druid,artificerrevisited",
"thunderstep": "sorcerer,warlock,wizard",
"thunderclap": "artificer,bard,druid,sorcerer,warlock,wizard",
"thunderoussmite": "paladin", "thunderoussmite": "paladin",
"thunderwave": "bard,druid,sorcerer,wizard", "thunderwave": "bard,druid,sorcerer,wizard",
"tidalwave": "druid,sorcerer,wizard",
"timestop": "sorcerer,wizard", "timestop": "sorcerer,wizard",
"tinyservant": "artificer,wizard",
"tollthedead": "cleric,warlock,wizard",
"tongues": "bard,cleric,sorcerer,warlock,wizard", "tongues": "bard,cleric,sorcerer,warlock,wizard",
"transmuterock": "artificer,druid,wizard",
"transportviaplants": "druid", "transportviaplants": "druid",
"treestride": "druid,ranger", "treestride": "druid,ranger",
"truepolymorph": "bard,warlock,wizard", "truepolymorph": "bard,warlock,wizard",
@ -455,21 +452,31 @@
"unseenservant": "bard,warlock,wizard", "unseenservant": "bard,warlock,wizard",
"vampirictouch": "warlock,wizard", "vampirictouch": "warlock,wizard",
"viciousmockery": "bard", "viciousmockery": "bard",
"vitriolicsphere": "sorcerer,wizard",
"walloffire": "druid,sorcerer,wizard", "walloffire": "druid,sorcerer,wizard",
"wallofforce": "wizard", "wallofforce": "wizard",
"wallofice": "wizard", "wallofice": "wizard",
"wallofstone": "druid,sorcerer,wizard,artificerrevisited", "walloflight": "sorcerer,warlock,wizard",
"wallofsand": "wizard",
"wallofstone": "artificer,druid,sorcerer,wizard,artificerrevisited",
"wallofthorns": "druid", "wallofthorns": "druid",
"wallofwater": "druid,sorcerer,wizard",
"wardingbond": "cleric", "wardingbond": "cleric",
"waterbreathing": "druid,ranger,sorcerer,wizard,artificer,artificerrevisited", "wardingwind": "bard,druid,sorcerer,wizard",
"waterwalk": "cleric,druid,ranger,sorcerer,artificer,artificerrevisited", "waterbreathing": "artificer,druid,ranger,sorcerer,wizard,artificer,artificerrevisited",
"web": "sorcerer,wizard", "waterwalk": "artificer,cleric,druid,ranger,sorcerer,artificer,artificerrevisited",
"waterysphere": "druid,sorcerer,wizard",
"web": "artificer,sorcerer,wizard",
"weird": "wizard", "weird": "wizard",
"whirlwind": "druid,sorcerer,wizard",
"windwalk": "druid", "windwalk": "druid",
"windwall": "druid,ranger", "windwall": "druid,ranger",
"wish": "sorcerer,wizard", "wish": "sorcerer,wizard",
"witchbolt": "sorcerer,warlock,wizard", "witchbolt": "sorcerer,warlock,wizard",
"wordofradiance": "cleric",
"wordofrecall": "cleric", "wordofrecall": "cleric",
"wrathofnature": "druid,ranger",
"wrathfulsmite": "paladin", "wrathfulsmite": "paladin",
"zephyrstrike": "ranger",
"zoneoftruth": "bard,cleric,paladin" "zoneoftruth": "bard,cleric,paladin"
} }

View File

@ -1,4 +1,4 @@
<div class="npc-browser browser tab flexrow" data-tab="npc" data-group="toplvl"> <div class="npc-browser browser flexrow">
<div class="control-area"> <div class="control-area">
<div class="filtercontainer" id="tagfilter"> <div class="filtercontainer" id="tagfilter">
<div class="filter" data-type="text" data-path="name"> <div class="filter" data-type="text" data-path="name">
@ -12,6 +12,7 @@
<option value="size">{{localize "DND5E.Size"}}</option> <option value="size">{{localize "DND5E.Size"}}</option>
</select></dd> </select></dd>
</dl> </dl>
<button id="reset-npc-filter">Reset NPC Filters</button>
</div> </div>
{{> "modules/compendium-browser/template/filter-container.html" filters=npcFilters}} {{> "modules/compendium-browser/template/filter-container.html" filters=npcFilters}}
</div> </div>

View File

@ -1,4 +1,4 @@
<div class="settings tab" data-tab="setting" data-group="toplvl"> <div class="settings">
<div class="settings-group"> <div class="settings-group">
<h3>{{localize "CMPBrowser.generalSettings"}}</h3> <h3>{{localize "CMPBrowser.generalSettings"}}</h3>
<label> <label>

View File

@ -1,4 +1,4 @@
<div class="spell-browser browser tab flexrow" data-tab="spell" data-group="toplvl"> <div class="spell-browser browser flexrow">
<div class="control-area"> <div class="control-area">
<div class="filtercontainer" id="tagfilter"> <div class="filtercontainer" id="tagfilter">
<div class="filter" data-type="text" data-path="name"> <div class="filter" data-type="text" data-path="name">
@ -10,7 +10,8 @@
<option value="true" selected>{{localize "Name"}}</option> <option value="true" selected>{{localize "Name"}}</option>
<option value="false">{{localize "CMPBrowser.lvl"}}</option> <option value="false">{{localize "CMPBrowser.lvl"}}</option>
</select></dd> </select></dd>
</dl> </dl>
<button id="reset-spell-filter">Reset Spell Filters</button>
</div> </div>
{{> "modules/compendium-browser/template/filter-container.html" filters=spellFilters}} {{> "modules/compendium-browser/template/filter-container.html" filters=spellFilters}}
</div> </div>

View File

@ -1,11 +1,13 @@
<div class="tabs" data-group="toplvl"> <div>
{{#if showSpellBrowser}}<a class="item" data-tab="spell">{{localize "CMPBrowser.spellBrowser"}}</a>{{/if}} <div class="tabs">
{{#if showNpcBrowser}}<a class="item" data-tab="npc">{{localize "CMPBrowser.npcBrowser"}}</a>{{/if}} {{#if showSpellBrowser}}<a class="item" data-tab="spell">{{localize "CMPBrowser.spellBrowser"}}</a>{{/if}}
{{#if isGM}}<a class="item" data-tab="setting">{{localize "CMPBrowser.settings"}}</a>{{/if}} {{#if showNpcBrowser}}<a class="item" data-tab="npc">{{localize "CMPBrowser.npcBrowser"}}</a>{{/if}}
</div> {{#if isGM}}<a class="item" data-tab="setting">{{localize "CMPBrowser.settings"}}</a>{{/if}}
</div>
<div class="tabContainer"> <div class="content">
{{#if showSpellBrowser}}{{> "modules/compendium-browser/template/spell-browser.html"}}{{/if}} <div class="tab" data-tab="spell">{{#if showSpellBrowser}}{{> "modules/compendium-browser/template/spell-browser.html"}}{{/if}}</div>
{{#if showNpcBrowser}} {{> "modules/compendium-browser/template/npc-browser.html"}}{{/if}} <div class="tab" data-tab="npc">{{#if showNpcBrowser}} {{> "modules/compendium-browser/template/npc-browser.html"}}{{/if}}</div>
{{#if isGM}} {{> "modules/compendium-browser/template/settings.html"}}{{/if}} <div class="tab" data-tab="setting">{{#if isGM}} {{> "modules/compendium-browser/template/settings.html"}}{{/if}}</div>
</div>
</div> </div>