Missing Spells
A window that stays blank until something you rely on drops off — then names it. The gap in your defenses, reported instead of noticed.
What it’s for
Seeing what you have is easy. Seeing what you’re missing is the hard part, because you’re scanning for something that isn’t there — and a lapsed buff looks exactly like a screen with nothing wrong.
This window inverts that. You tell VellumFE which spells you care about, and it shows you only the ones that aren’t running. Most of the time it reads All spells up in green and you ignore it. The moment Spirit Warding falls off mid-hunt, an amber line appears where there was nothing — a change in the corner of your eye, which is the one thing peripheral vision is genuinely good at.
The watch list is yours, per character, and it survives restarts. Building it is one command.
Set it up
1. Add the window.
Click Windows in the top toolbar, expand Character, and tick missingspells. It arrives 8 rows by 28 columns, titled Missing Spells — small on purpose, since it is empty most of the time.
2. Spell up the way you’d want to hunt.
The next step snapshots what’s running right now, so get yourself fully covered first.
3. Build the watch list.
.spellwatch add all
VellumFE replies with something like Watching 9 active spells (9 new).
→ Expected result: the window reads All spells up in green. Let a watched buff expire
and that line is replaced by an amber 101 Spirit Warding I.
Common setups
The set-and-forget hunting watch
This is the whole feature in four steps, and it is worth doing once properly rather than tinkering with it later.
- Spell up completely in town, exactly the way you want to hunt.
- Type
.spellwatch add all. - Put a missingspells window somewhere your eye already passes — directly beside your vitals is the best spot, because that is where you look when something goes wrong anyway.
- Go hunt.
You’ll see: a small green All spells up for as long as everything holds. When a ward
falls, that green line is replaced by amber 101 Spirit Warding I. Re-cast it and the window
returns to green on its own — no command, no confirmation.
Trimming the list to what you actually re-cast
add all is a deliberately blunt start, and it will happily watch things you have no intention
of maintaining: a bard’s song you only run in town, a one-off somebody else cast on you.
-
Type
.spellwatchto see the list, each entry markedactiveorMISSING. -
Drop several at once:
.spellwatch rem [1605, 1617] -
Add anything the snapshot missed the same way:
.spellwatch add [503, 513].
You’ll see: the list shrinks to the spells you genuinely maintain, and the window stops
crying wolf about a buff you never intended to keep up. .spellwatch confirms each edit with a
running total — Removed 2 spells from the watch list (7 left).
Watching one specific thing before a hard fight
You do not have to watch everything. Watching one spell makes this a single-purpose alarm.
- Clear the list:
.spellwatch rem all. - Watch the one that matters:
.spellwatch add 414.
You’ll see: a window that is green until that one spell drops, then shows exactly one amber line. Nothing else can trigger it.
Tips & gotchas
⚠️
add allsnapshots what is running at that instant. Run it while half-spelled and you have codified being half-spelled — the window will cheerfully report All spells up while you stand there missing three wards. Spell up fully first, then snapshot.
⚠️ The type string is
missingspells, and a typo does not error. An unrecognized widget type silently falls back to a text window. If you typedmissing_spellsyou now have a text window that will never show anything, not a broken missing-spells window.
It watches two effect categories, not four. Your watch list is compared against Active Spells and Buffs only. Debuffs and Cooldowns are deliberately excluded — a cooldown that isn’t running is normal, and reporting it as “missing” would make the window useless. The consequence worth knowing: a watched number that only ever appears under Cooldowns reads as missing forever.
Absence is the test, not expiry. Nothing here counts down. The game clears and re-sends a whole category whenever it changes, so a spell vanishing from that feed is what marks it missing. That makes the window accurate even though the times shown in your Active Effects windows sit frozen.
Numbers, in bulk, all-or-nothing. .spellwatch add 606, .spellwatch add [101,103,107],
and .spellwatch add 101,103 all work — brackets are optional and spaces inside them are fine.
A single unparseable number rejects the entire command rather than applying half of it, so a
typo never leaves you with a partially-updated list. It prints the usage line and nothing
changes.
⚠️ There is no
.spellwatch clear. Clearing the list is.spellwatch rem all.removeworks anywhereremdoes.
Names come from a table first, the live feed second, and the number last. A watched spell
shows as 101 Spirit Warding I when VellumFE knows the number, as whatever name the game last
used for it this session when it doesn’t, and as a bare 64001 when it has never seen it named.
A row that is all digits means the number is real but unrecognized — usually a script-pushed
custom effect.
The rows ignore your spell colors. Missing-spells rows are always amber, whatever the spell color table says. Spell colors reach Active Effects windows; they do not reach this one.
Read the two empty states — they mean different things. All spells up in green means the
watch list is satisfied. .spellwatch add <n> to watch in gray means you have not built a list
yet: the window is working correctly and has nothing to do.
The list is per character and survives restarts. It rides that character’s session state, so each character keeps its own without you managing anything. Nothing needs saving.
The window is small by design. It ships 8 rows by 28 columns and floors at 3 by 14. If you watch twenty spells and twenty drop at once, the terminal’s title count still tells you the total even when only a few rows fit.
See also
- Spells — the login-time spell list this window’s gaps are measured against
- Active Effects — the live buff/debuff/cooldown feeds this window reads
- Hotbars — a re-cast button that restyles itself when a buff lapses
- Wire a hotbar for combat — turning a detected gap into one click
- Color Palette —
.spellcolorsand why they stop at this window - Creating Layouts — placing and saving the window
Config reference (TOML)
Written by the catalog and .addwindow. Hand-editing is for troubleshooting, not the normal
path.
[[windows]]
name = "missingspells"
widget_type = "missingspells"
row = 20
col = 80
rows = 8
cols = 28
show_border = true
title = "Missing Spells"
Widget fields
widget_type = "missingspells" — one word, no underscore. An unrecognized type does not
error; it quietly creates a text window.
The widget carries no fields of its own. Its content is derived: the per-character watch list minus everything currently present in the ActiveSpells and Buffs effect feeds.
Catalog preset
| Catalog row | Category | Title | Size | Game |
|---|---|---|---|---|
missingspells | Character | Missing Spells | 8 rows x 28 cols (floor: 3 x 14) | Both |
Ungated — it appears in the GUI Windows catalog and the bare-.addwindow picker for both
GemStone IV and DragonRealms characters.
.spellwatch
Usage: .spellwatch add|rem <number> | [n,n,...] | all.
| Form | What it does |
|---|---|
.spellwatch / .spellwatch list | Lists the watch list, each entry marked active or MISSING, headed Watched spells (N missing):. With an empty list it prints the usage hint instead. |
.spellwatch add <n> | Adds one spell number |
.spellwatch add [n,n,n] | Adds several. Brackets optional (101,103 works); spaces inside them are fine |
.spellwatch add all | Watches everything currently in ActiveSpells and Buffs, deduped and sorted ascending. Replies Watching N active spells (M new)., or Nothing active in ActiveSpells/Buffs to add. |
.spellwatch rem <n> / .spellwatch remove <n> | Removes spells; same number forms |
.spellwatch rem all | Clears the list, replying Cleared N watched spells. There is no clear subcommand. |
Numbers parse as whole numbers up to 65535. Anything outside that range, any non-numeric element,
and an empty or [] argument reject the entire command with the usage line. Entries keep
add order, and adding a number already on the list is a no-op that still reports the total.
Persistence
The watch list lives in that character’s session cache:
~/.vellum-fe/profiles/<Character>/session_cache.toml
(or the same path under $VELLUM_FE_DIR when that is set), in the [character] table as
watched_spells. It is written by autosave when it changes and restored at login. There is no
reason to edit it by hand.
Display
| State | Text | Color |
|---|---|---|
| Watched spell not active | <number> <name>, e.g. 101 Spirit Warding I | amber #d78700 |
| Watch list satisfied | All spells up | green #5f875f |
| No watch list yet | .spellwatch add <n> to watch | gray #666666 |
Rows appear in watch-list order (the order you added them), not sorted. The spell color
table does not apply. The terminal appends a count to the window title — Missing Spells (3) — and drops it when nothing is missing; the GUI never adds a count.
Where the settings live
| Setting | Desktop GUI | Terminal (TUI) |
|---|---|---|
| Widget settings | none — no widget section in the right-click menu | none — .editwindow shows base fields only |
| Title, border, colors, lock | Right-click ▸ Window / Appearance | .editwindow <name> |
Standard window keys — row, col, rows, cols, show_border, border_style, title,
locked — apply as they do to any window.