# EverQuest Legends spell data

`scripts/eql-spells` creates a local SQLite search index from the EQL client
files. The client installation remains the source of truth: neither the raw
files nor the generated database are tracked in this repository.

## Sources and cache

The command reads these files from the EQL game directory:

* `spells_us.txt` — spell ID, name, and client numeric fields.
* `spells_us_str.txt` — caster, target, and fade messages.
* `dbstr_us.txt` — spell descriptions (`type` `6`).

It resolves that directory in this order:

1. `--game-path PATH`
2. `EQL_GAME_PATH`
3. `/home/pleb/Games/EverQuestLegends`

The default generated index is
`$XDG_CACHE_HOME/eqclient-conf/eql-spells.sqlite`, or
`~/.cache/eqclient-conf/eql-spells.sqlite` when `XDG_CACHE_HOME` is unset.
Use `--db PATH` to use a different index, such as one for a test fixture.

Each query compares the client files' paths, sizes, nanosecond modification
times, and `:crc` sidecars (when supplied) with index metadata. It rebuilds
automatically after an EQL update. `build` always forces a rebuild.

## Commands

```bash
# Force an index build.
scripts/eql-spells build

# Exact lookup by numeric spell ID or case-insensitive exact name.
scripts/eql-spells get 4
scripts/eql-spells get 'Summon Waterstone'

# Include the complete original caret-delimited row and its fields.
scripts/eql-spells get 4 --raw

# Name substring lookup and full-text name/description search.
scripts/eql-spells find water --limit 10
scripts/eql-spells search 'underwater breathing'

# Use a different EQL installation or cache location.
scripts/eql-spells --game-path /path/to/EverQuestLegends --db /tmp/spells.sqlite search fire
```

Successful commands emit JSON on stdout. `get` returns `spell`; `find` and
`search` return `results`. All include source fingerprint metadata. Add
`--text` to query commands for compact human-readable output.

The first version intentionally exposes only reliably joined fields: ID, name,
description, cast messages, and (with `--raw`) the complete original row. The
numeric columns in `spells_us.txt` have no embedded schema, so class, level,
mana, and effect filters should be added only after their mapping has been
verified for this particular client build.
