Spell List

Version 2

Intro

SpellList is a utility app which lists spells from the Pathfinder® RPG with a semi-natural language filter. This is a ground up rewrite of version 1 with significant improvements. Version 1 information is here.

An iPad version will be coming eventually.

The application has three major parts.

This application assumes you are familiar with the Pathfinder RPG rules. It is not a teaching guide.

Contents

Spell List Window

spell window

You can open up to twelve of these windows via ⌘N. Each window will have a different background colour. The reason for this is so you know which window the Print Window and the Query Select window is associated with.

Left-hand list : list of spells after query filter has been applied.

Segment Control : spell colouring options.

School

Source


<<<, >>> : history. The history is not saved.

Print List shows the Print Window. Queries shows the Query Select Window.

How to create a query is explained in the appendix and also in the Query Editor window.

Top

Print Window

print window

The Print Window's background will be the same as the associated Spell List window.

Each spell will have the formatter applied to it. Formatter details are below.

Preview will display the output in the right hand pane. Copy will copy all formatted spells to the clipboard in the RTF format. This application is not a word processor, use TextEdit or a dedicated word processor for decent editing and printing.

PDF will open the PDF Window (detailed below).

Top

PDF Window

pdf window

This window is for outputting formatted spells as a PDF file with one spell per file. Existing files will be overwritten.

Pick a destination location and press save. Hundreds or thousands of individual files will be saved to the directory. The preview view will display the first spell in the filtered list.

Top

Query Editor Window

query editor window

This is where queries are managed.

The query language is a very simple, semi-natural language. The SpellList Window filter uses the same language. It can access the saved queries by entering #<query name># in the text entry.

The 'sl_' prefix for query names are reserved by the application.

When editing a query, the text colour will be black, red, purple or blue.

Everything is converted to lowercase when saved.

Test will test the query and list all spells which pass the query.

Copy is for convenience. Copies all names to the clipboard.

Details of the language are in the appendix.

Top

Spell Generator

spell generator window

This is the semi-random (user guided) spell generator.

A completely random generator is easy to create. But it is impractical for encounters: a wizard is not going to memorise fire spells for a Red Dragon.

So what this is is a Spell Volume editor. Each volume has X number of spell slots for each spell level. Each spell slot has a spell selection method. The selection method narrows the available spells for the randomiser to select.

Spell Volume

Spell volumes are auto saved whenever it is deselected or when SpellList quits.

Changes are not reversible, neither are deletions.

Under the hood a Volume is XML file. Do not edit it, if a Volume is corrupted, it will not be loaded.

Each spell level can have, in theory, an infinite number of slots. Practically speaking, doing so will cause performance issues and crashes. There is no enforced limit so use some common sense.

Any slot with the small info image symbol is the current slot being edited (right-hand column).

The class popup menu, level popup menu and stat text editor are convenience setters. Pressing Set will clear all slots and set it to the standard class slot count (including high stat modifiers). The stat is ignored for classes of the sorcerer style casting. All slots will have the specified class as the default spell selector.

No Changes check box, if checked, will prevent slot count changes. It does not prevent individual slot editing.

Generate generates the random spell list. The list will open a window shown below. Duplicates checkbox indicates whether or not duplicate spells are allowed. For sorcerer style casting, this is ignored.

Sometimes during generation, <no spell> will appear. This can occur if the slot generation method produces too few spells for selection or none at all.

For example, spell level 3 - slot 0 has the Quicken metamagic feat with 100% chance. This will always produce <no spell> as Quicken spell has a +4 spell level modifier.

The generator makes forty attempts at filling a slot with a spell, if that fails, it will tag it as empty.

generated spells window

Top

Slot Edit

slot editor

The top popup menu is the method generation. It is one of the following

Important: Slot changes are not auto-saved. You must press Apply before selecting another slot or you will lose your changes.

Metamagic

The slider under Use Metamagic are the odds (1-100%) of one or more metamagic feats being applied to that slot.

What metamagic feats that could be applied are in the list underneath. Do note, only sensical metamagic combinations with respect to a spell are allowed. For example a maximised Alarm spell cannot happen. The list allows multiple selection using the ⌘ key. Avoid too many selections per slot, it can stall SpellList.

Supported feats: aquatic, benthic, burning, concussive, consecrate, eclipsed, empower, enlarge, extend, familiar, flaring, maximize, merciful, piercing, quicken, reach_1*, reach_2*, reach_3*, silent, still, widen.

*The reach feat has been split into three different feats. Reach_1 increases spell range by one step, reach_2 by two steps and reach_3 by three steps.

You may notice Heighten is not present. It is a complicated feat to apply and will come in a future version.

There are sixty other metagmagic feats that I may support. They are all difficult to code for and I will roll them out gradually.

Spell Select Window

spell select window

Only used by the Spell Generator.

Query Select Window

query select window

The Query Select window background colour is the same as its associated window. In this case it is associated with the Spell Generator window.

Double-click to select.

Top

Appendix

Print Window Formatter

[0]prints [
[1]prints ]
[u]following character will be uppercase
[l]following character will be lowercase
[name]will print spell’s name
[sch]will print three character shortform of school
[school]will print full length form of school
[subs]will print subschool if it exists. Condition
[cls]will print spell’s class level in the form of ‘class X’ with ‘/‘ as a separator. Class name will be the three character shortform.
[class]will print spell’s class level in the form of ‘class X’ with ‘/‘ as a separator. Class name will be the full length form
[lvl-XXX]will print 'cls N' of the spell if it exists. Class name will be the three character shortform. Condition
[lvl+XXX]will print 'cls N' of the spell if it exists. Class name will be the full length form.
XXX is one of sor, wiz, clr, drd, rgr, brd, pal, alc, smn, wit, inq, orc, apl, mag, adp, brg, shm, psy, med, mes, occ, spr.
[comp]will print spell components using the single character form.
[components]will print spell components using full length form.
[v]will print spell component 'V' if it exists. Condition
[verbal]will print spell component 'verbal' if it exists
[s]will print spell component 'S' if it exists. Condition
[somatic]will print spell component 'somatic' if it exists
[m]will print spell component 'M' if it exists. Condition
[material]will print spell component 'material' if it exists
[f]will print spell component 'F' if it exists. Condition
[focus]will print spell component 'focus' if it exists
[df]will print spell component 'df' if it exists. Condition
[div]will print spell component 'divine focus' if it exists
[mythic]will print 'mythic' if the spell has a mythic version. Condition
[dismiss]will print 'dismissible' if the spell is dismissible. Condition
[shape]will print 'shapeable' if it exists. Condition
[save]will print full description of spell's save entry
[fort-]will print 'fort neg' if it exists. Condition
[fort/]will print 'fort half' if it exists. Condition
[fort%]will print 'fort partial' if it exists. Condition
[ref-]will print 'reflex negates' if it exists. Condition
[ref/]will print 'reflex half' if it exists. Condition
[ref%]will print 'reflex partial' if it exists. Condition
[will-]will print 'will negates' if it exists. Condition
[will/]will print 'will half' if it exists. Condition
[will%]will print 'will partial' if it exists. Condition
[will!]will print 'will disbelief' if it exists. Condition
[sr]will print full description of spell's SR entry
[sr-]will print 'no' if it exists. Condition
[sr+]will print 'yes' if it exists. Condition
[ct]will print full description of spell's casting time entry
[ct-i]will print 'immediate' if it exists. Condition
[ct-s]will print 'swift' if it exists. Condition
[ct-a]will print 'standard action' if it exists. Condition
[ct+a]will print 'std act' if it exists. Condition
[ct-f]will print 'full round' if it exists. Condition
[ct-m]will print 'minutes' if it exists. Condition
[ct-h]will print 'hours' if it exists. Condition
[rge]will print full description of spell's range entry
[rge-p]will print 'personal' if it exists. Condition
[rge-s]will print 'self' if it exists. Condition
[rge-t]will print 'touch' if it exists. Condition
[rge-c]will print 'close' if it exists. Condition
[rge-m]will print 'medium' if it exists. Condition
[rge-l]will print 'long' if it exists. Condition
[dur]will print full description of spell's duration entry
[dur-i]will print 'instantaneous' if it exists. Condition
[dur-r]will print 'rounds' if it exists. Condition
[dur-m]will print 'minutes' if it exists. Condition
[dur-h]will print 'hours' if it exists. Condition
[effect]will print full description of spell's effect entry
[eman]will print 'emanation' if it exists. Condition
[burst]will print 'burst' if it exists. Condition
[cone]will print 'cone' if it exists. Condition
[spread]will print 'spread' if it exists. Condition
[line]will print 'line' if it exists. Condition
[cylinder]will print 'cylinder' if it exists. Condition
[dmn-X]will print spell's domains (if they exists) using the separator 'X'
[bld-X]will print spell's bloodlines (if they exists) using the separator 'X'
[gold]will print spell's gold cost if > 0
[gold0]will print spell's gold cost
[source]will print spell's source book
[desc-X]will print all spell descriptors using separator 'X'. Condition
[desc-NNNN]will print descriptor NNNN if it exists.
NNNN is one of acid, air, chaotic, cold, darkness, death, earth, elec, evil, fear, fire, force, good, lang, lawful, light, mind, pain, shadow, sonic, water, curse, disease, emotion, poison

[if][NNN]...[endif]

[if!][NNN]...[endif]

Text between [if] & [endif] will only be printed if [NNN] exists or is true. [if!] is the not version, text will be printed the condition does not exist or is false.

NNN is any of the above which has the Condition at end of its description.

Example

[if][spread]Spell is a spread spell[endif]

Spells that have the Spread flag will output 'Spell is a spread spell'

Top

Query Editor

The query parser has differences from version 1 of SpellList and copying queries from that version to version 2 may result in syntax errors.

IMPORTANT. SL v1 uses 'and' & 'or', SL v2 uses '&' and '|'.

A query consists of one or more phrases, separated by '&' or '|'.

IMPORTANT. In SL v1, '&' and '|' have the same precedence, in SL v2, '&' has greater precedence than '|'.

Phrases can be bracketed. Example: 'name contains "A" & (school is abj | school is nec)'.


A phrase is usually one of the following forms:

Phrases can also reference named (saved) phrases using #...#.

Example
The saved phrase 'sl_wizard' query is 'is wizard'.
User creates a new query where they want all fire and cold wizard spells.
The query would be '(descriptor is fire | descriptor is cold) & #sl_wizard#'.

Top

Fields

Name
Phrase format
name contains | does not contain | is equal to | is not equal to | begins with | ends with "string"
The " " are required.

School
Phrase format
school is/is not abj | cnj | div | enc | evo | ill | nec | trn | unv | abjuration | conjuration | divination | enchantment | evocation | illusion | necromancy | transmutation | universal

Subschool
Phrase format
has/does not have calling | compulsion | creation | figment | glamour | healing | pattern | phantasm | polymorph | scry | scrying | shadow | summoning | teleporation

Source
Phrase format
source is/is not core | apg | arg | acg | ultimates | the rest

Components
Phrase format
is/is not verbal | somatic | material | focus | divine focus

Gold Cost
Phrase format
gold cost < ≤ <= = ≠ >= ≥ > positive integer

Dismissible
Phrase format
is/is not dismissible

Shapeable
Phrase format
iis/is not shapeable

Mythic
Phrase format
is/is not mythic

Casting Time
Phrase format
casting time contains "string"
casting time is/is not standard | immediate | swift | free | full round | minutes | hours

Classes
Phrase format
is/is not sorcerer | wizard | cleric | druid | ranger | bard | paladin | alchemist | summoner | witch | inquisitor | oracle | antipaladin | magus | adept | bloodrager | shaman | psychic | medium | mesmerist | occultist | spiritualist

sorcerer | wizard | cleric | druid | ranger | bard | paladin | alchemist | summoner | witch | inquisitor | oracle | antipaladin | magus | adept | bloodrager | shaman | psychic | medium | mesmerist | occultist | spiritualist level < ≤ <= = ≠ >= ≥ > 0 - 9
Example: sorcerer level = 3

Descriptors
Phrase format
descriptor is/is not acid | air | chaotic | cold | curse | darkness | death | disease | earth | electricity | emotion | evil | fear | fire | force | good | language dependent | lawful | light | mind affecting | pain | poison | shadow | sonic | water

Spell Resistance
Phrase format
sr contains "string"
sr is/is not no | yes | harmless
sr affects|does not affect object

Saves
Phrase format
saves contains "string"
save is/is not fort half | fort negate | fort partial | reflex half | reflex negate | reflex partial | will half | will negate | will partial | will disbelief | fort | reflex | will

Duration
Phrase format
duration contains "string"
duration is/is not instantaneous | rounds | minutes | hours

Range
Phrase format
range contains "string"
range is/is not personal | self | touch | close | medium | long
range in feet < ≤ <= = ≠ >= ≥ > positive integer

Target
Phrase format
target contains "string"
is/is not single target
has targets per caster level

Effect
Phrase format
effect contains "string"
effect is/is not burst | cone | spread | line | emanation

Domains
Phrase format
domains contains "string"
has/does not have domains

Bloodlines
Phrase format
bloodlines contains "string"
has/does not have bloodlines

Metamagic Feats
Phrase format
is/is not empowered | brisk | intensified | umbral | vast | widen | yai-mimic | hp damage spell* | authorative | benthic | blissful | brackish | burning | centered | concussive | consecrate | crypt | eclipsed | elemental | enlarge | fearsome | flaring | furious | latent curse | lingering | maximize | merciful | persistent | quicken | reach | rime | scarring | scouting | silent | solar | still | steam | tenebrous | threatening illusion | threnodic | thundering | toxic | traumatic | trick
* "hp damage spell" is not a metamagic feat but it is included for those who want spells that inflict HP damage.


Top