A spell editor and DBC editor for AzerothCore (World of Warcraft 3.3.5a, build 12340), in one app. C# on .NET 10 with an Avalonia interface, for Windows and Linux. It shares its look with Urras, its twin.
Status: early development, first version.
- Try it
- Run it yourself
- First start
- Features
- The workflow
- Screenshots
- For maintainers: build types and releases
- Project layout and settings
- Contributing
- Credits
- License
The ▸ sections below open and close when you click their titles.
Download the latest release from the Releases page:
one file for Windows (.zip) or Linux (.tar.gz), with .NET included, so there's nothing else to install. Unzip
it and open Anarres.exe (Windows) or Anarres (Linux).
To hand a build to a tester before there's a release, see Build a standalone app to share.
| You need | Windows | Linux |
|---|---|---|
| .NET 10 SDK, to build | Download | Same download, or your package manager |
Clean 3.3.5a .dbc files |
AzerothCore's client data (its dbc folder), your server's dbc folder, or a 3.3.5a client |
Same |
| Optional: MySQL or MariaDB | Only to keep the project in a database instead of a file | Same |
Check the SDK is found by opening a terminal and running dotnet --version (10.0 or newer).
git clone https://github.com/TheSCREWEDSoftware/Anarres.git
cd Anarres
Windows, the easy way: double-click start.bat. It builds Anarres and opens it in its own window; if Anarres is
already open it asks to close it first (Enter means yes), and it shows the crash log if Anarres closes right after
starting.
Any system, from a terminal in the Anarres folder:
dotnet run --project src/Anarres.App
From an IDE: open Anarres.sln in Visual Studio or Rider and run Anarres.App.
The first build downloads Avalonia and the other packages from NuGet, so it needs an internet connection and takes a minute; later builds are quick.
Where the build goes
start.bat and dotnet build put the app in src/Anarres.App/bin/Release/net10.0/ (Anarres.exe and its
libraries). That folder only runs on a PC with the
.NET 10 Desktop Runtime installed. To give Anarres to someone
else, build the standalone app below instead.
To make one file you can send to someone, which runs without .NET installed:
Windows: double-click publish.bat. It builds publish\Anarres-win-x64.zip (Anarres and anarres-cli) and
opens the folder. Send the zip; they unzip it and open Anarres.exe.
Any system:
./publish.sh # linux-x64
./publish.sh win-x64 # a Windows build, from Linux
Or by hand:
dotnet publish src/Anarres.App -c Release -r win-x64 --self-contained -p:PublishSingleFile=true -o publish/win-x64
dotnet publish src/Anarres.App -c Release -r linux-x64 --self-contained -p:PublishSingleFile=true -o publish/linux-x64
The first standalone build downloads the .NET runtime for that system (about 70 MB), and the file is large because .NET comes inside it. Windows may warn about an unsigned app the first time: More info > Run anyway.
Windows: double-click test.bat to run every test and the coding standards check.
Any system:
./test.sh
More about the tests
tests/Anarres.Core.Tests: DBC reading and writing, MPQs, the SQLite and MySQL stores, export, Apply, spell text, the table cache and the coding standards. SetANARRES_TEST_DBCto a folder of real 3.3.5a.dbcfiles to also round-trip every one of them, andANARRES_TEST_MYSQL(host:port/database, useracore) to test against a real MySQL or MariaDB.tests/Anarres.App.Tests: opens the main window and every dialog without showing them (Avalonia headless), edits, saves, undoes, finds fields and toggles flags.
Both run in temporary folders, so they never touch your settings or projects.
Set up Anarres opens on first start, like Stoneharry's editor, and asks:
- Where your edits are kept: a SQLite project file (nothing to install) or a MySQL/MariaDB database (AzerothCore's
localhost:3306,acore/acorefilled in). - Where the clean files are: a folder of
.dbcfiles, or the WoW client. - Your server: its data folder, and whether Apply also updates
spell_dbcin the world database. - Whether to import right away.
It opens at every start until you tick Don't show this again; Tools > Setup brings it back. Everything in it is also in File > Project settings.
Spell Editor
Laid out after Stoneharry's WoW Spell Editor.
- Sort the spell list by ID, by name (A to Z or Z to A) or recently changed first, and show just the changed spells, the talents, or one class's, race's or profession's spells.
- A searchable spell list: by ID, name, or
effect:6,aura:3,family:3,trigger:,icon:... Normal rows show each spell's icon, ID and rank with a strip in its school's colour, and hovering one shows its tooltip; Compact rows fit more on screen (View > Options > Spell Editor). - The chosen spell in tabs: Base, Attributes, Effects, Targets and Requirements, Procs and Interrupts, Talents, Items and Reagents, Skill, Visual, 3D, Localisation and All fields.
- The header shows the icon (with a border in the game's debuff colour for its dispel type), a badge for the school in the game's colour, and how many talents change the spell.
- Base tab: the description and buff text beside a live preview. A level slider (or a typed level, within the spell's own levels) and a checkbox per talent show the tooltip as a character of that level with those talents would see it, as Wowhead does.
- Talents tab: every talent, glyph, set bonus and buff that changes the spell through its family masks, with what each one changes. Under each effect, Affected spells lists the spells that effect changes.
- Effects, auras, targets, mechanics, powers and the rest picked from named lists; misc values say what they mean for the chosen effect or aura (a stat, a power, a school mask, a creature entry...).
- Every bit mask (attributes, procs, interrupts, target flags, shapeshifts, item subclasses...) as switches in columns, each with its name, its bit value (1, 2, 4...) and a note, and the whole value beside them as a number and in hex. The school is a dropdown of its own.
- Lists read like AzerothCore's code, such as
13 - POTION, with Other value... for anything else. - Money fields (trainer costs...) as gold, silver and copper with the raw copper value beside them; items show in their quality's colour with their icon.
- Cast times, durations, ranges, radii, icons and other spells shown by what they mean, not just their index.
- Spell icons from the client's MPQs, in the header and in an icon picker.
- A Visual tab for the spell's SpellVisual row and its kits; "own copy" gives the spell its own visual or kit so other spells sharing it don't change.
- A live tooltip preview:
$s1,$d,$o1,$t1,${...}sums,$<variables>,$?s123[a][b],$lsingular:plural;and references to other spells. - New, Copy and Delete spells; Save, Revert, Undo and Redo (Ctrl+Z, Ctrl+Y).
- A Skill tab for the spell's SkillLineAbility rows, and the
trainer_spellSQL that lets a trainer teach it.
Items show in their quality's colour with their icon when the world database can be reached; these screenshots were taken without one.
![]() The Mage's spells, A to Z; Show also has talents, every race and every profession |
3D models and effects
Drawn from your client's own files (its patches and custom models included); nothing comes from the internet.
- The spell editor's 3D tab plays the spell's missile and the effects of its visual kits (precast, cast, channel, impact...), and shows what it summons, turns into, shapeshifts into, rides, places or makes. Creatures, game objects and items are looked up in the world database.
- Tools > Model viewer... browses every model in the client, or opens one by creature display, spell visual, item display or game object display ID.
- Display tables in the DBC editor (CreatureDisplayInfo, CreatureModelData, SpellVisual, SpellVisualEffectName, ItemDisplayInfo, GameObjectDisplayInfo, SpellShapeshiftForm) get a 3D preview of the selected row.
- Animations from the model (and its
.animfiles), animated textures and colours, and particle emitters: the sparks, smoke and glows that make up most spell effects. Drag to turn, use the wheel to zoom, double-click to reset. - Not drawn yet: ribbons (trails), buildings (WMO) and dressed character models.
No screenshot yet: the 3D view draws from a client's own models, and these screenshots were taken without a client.
Spell tools
All in the Spell... menu above the editor.
- Compare with clean: every field that differs from the clean Spell.dbc, old and new side by side, with Revert per field or for the whole spell.
- Used by: spells that trigger or teach this one, talents and auras that change it through their family masks, spells it triggers, and spells sharing its visual or icon.
- New from a template: a working direct damage, damage over time, heal, buff, proc, summon, teleport or passive spell, modelled on a real one, ready to change.
- Find and replace across spells: pick spells with the search syntax, then set, add, multiply, turn bits on or off, or replace text in one field. Preview first; it's one undo step.
- Check edited spells: indexes into tables that don't have them, missing trigger spells, auras with no aura type, periodic auras with no period, and fields set on an empty effect. Apply runs the same check and asks before going on when something looks wrong.
Notes on every field, and Ctrl+F
- Every field has a readable label and, like Keira3, a ! badge that
says what the column does ("the global cooldown group; 133 is the normal global cooldown...") and its
spell_dbcname. Every Spell.dbc column is described, and the lookup tables it uses; the DBC editor shows the same notes on its column headers. - SQL is shown with syntax colours.
- Ctrl+F in a spell finds a field or flag by its label, column, notes or AzerothCore name (
school,cooldown,range,passive,SPELL_ATTR0_PASSIVE), opens its tab and shows it. Ctrl+F again goes to the spell search.
![]() Ctrl+F finds "cooldown" across fields, flags and tabs |
![]() A ! beside every field says what the column does |
DBC Editor
In the spirit of WDBX Editor.
- Every table in the project, or any
.dbcopened straight from disk, in a grid that draws only what's on screen (Spell.dbc's 50,000 rows by 234 columns scroll smoothly). Search the table list by name. - The Spell Editor | DBC Editor switch in the title bar moves between them; Spell.dbc has an Open in Spell Editor button.
- Edit cells in place, add, copy and delete rows, undo and redo, filter by ID, text or
Column=value. - The editor switch in the title bar is a light switch: Spell Editor on one side, DBC Editor on the other.
- Several tables open at once in tabs (
*marks unsaved ones) and Close all. A single click opens a preview tab (in italics) that the next table replaces, as in VS Code; double-click or edit to keep it. Preview tabs can be turned off in Options. - Shift+click, Shift+arrows and Ctrl+A select rows; Ctrl+C copies them with a header line and Ctrl+V pastes them into any table with matching columns. A pasted row whose ID is taken gets the next free one.
- Click a header to sort; right-click it to hide the column, hide every empty column, or show them all again. Columns open sized to their contents; double-click a column's edge to fit it again.
- Rows show what changed: New (blue) and Changed (orange) aren't saved yet, Added (green) and Edited (pink) are saved and differ from the clean file. Changed cells are brighter, a legend explains the colours, and the table list marks tables with unsaved changes (orange) or edited since import (pink).
- Right-click a row to copy the cell, the selected rows or every shown row, paste rows at the bottom, add, copy or delete rows, hide rows, or show only rows with that cell's value. Ctrl+click picks single rows.
- Hover a column header for what it does, or a named cell for what its value means.
- Empty language cells show, in red, the text the client's other locale folders have there.
- Save to the project or back to the file, save as
.dbcor CSV, import CSV, and write the shown rows or the rows changed from the clean file as SQL. - See and rename a layout's columns, saved as a definition file that replaces the built-in one.
- 240 file layouts built in; anything else gets one guessed from its data.
- Tools > Table links... maps which tables point at which: the tables pointing at the chosen one on the left, the ones it points at on the right, each box naming the columns, with arrows along the links. The list shows each table's ins and outs, and only tables with links unless you untick it. Open any table, or save every link as a Mermaid diagram.
Import, export and Apply
- Import from a folder of
.dbcfiles (or a server's Data folder) or straight out of the client's MPQs. Each table is saved as it's imported, and a stopped import carries on where it left off. The window says what language the files are in, and the locale is picked from the client's own folders. A second bar follows the table being imported, so a big one such as Spell.dbc visibly moves; closing the window stops the import. - Locale All available reads every locale folder the client has and puts each language in its own column, so one Spell.dbc carries every language. It takes longer, and says so.
- The Localisation tab shows, in red, the client's own text for every empty language box; Import from the client copies it in for every spell.
- Apply (F6) in one click: save, write the edited tables, copy them to the worldserver (keeping its own copy
once), build the client patch MPQ, empty the client's cache, and put the changed rows in
acore_world'sspell_dbcand other_dbctables. - Only what changed: Export and Apply write the tables edited since import, so the patch holds just those, and
spell_dbcgets just the changed spells. - Save as SQL... and Update spell_dbc... write the shown spell, or every changed spell, as SQL or straight into the world database.
- Tools > Compare two .dbc files... lists every added, removed and changed row between two files, and saves it as a report.
- Tools > Write a changes report... writes every edited table against its clean file as Markdown: what you changed, field by field, for a changelog or a review.
- Tools > Client patches... shows the client's archives in the order it loads them, and warns when a later patch hides a file in yours.
anarres-clidoes all of it from scripts and build servers.
Where the data lives
- SQLite project file (
.anarres): one local file, nothing to run. - MySQL or MariaDB: work on a database directly, query and bulk-edit it with any SQL tool, and share it.
- DBC names (
Spell,SpellIcon...) for a database just for DBC data (acore_dbc_extractedby default), like Stoneharry's editor. If your user (acore) isn't allowed to create it, Anarres asks once for an admin account such as root, creates it and givesacoreevery right on it, as AzerothCore'screate_mysql.sqldoes foracore_world. - AzerothCore names (
spell_dbc...) to work inacore_world's own override tables.
- DBC names (
- Big tables such as Spell.dbc are kept on this PC between runs and open in about 0.2 seconds instead of 1 to 2; the copy is used only while the database still matches it.
![]() Project settings: SQLite or MySQL, the clean files, the client and the server |
![]() Options: the table cache, what clicking X does, and asking before exiting |
Look and options
- System, Dark or Light, with built-in colours, ready-made themes (Urras's GitHub, GitLab, SourceGit and Fork themes, and Urras, Frost, Fel, Horde, Alliance and Parchment) or your own, made in the theme editor and kept as files in Urras's format (docs/themes.md).
- Text size and font (any font on your system) for every theme or just one, with a button to give every theme the same size; the theme editor says which theme you're changing and restores a theme's original colours.
- The language spell names are shown in, which editor opens first, the spell list layout, preview tabs, confirmations, undo depth and more, in View > Options.
- Close to the tray instead of quitting, and confirm before exiting; both off by default.
- View > Write a performance log records how long loading, drawing and the 3D view take, for bug reports.
- Unexpected errors go to
crash.loginstead of closing Anarres.
- Import clean
.dbcfiles into the project. - Edit with either editor.
- Apply (F6), then restart the worldserver and the client.
The data lives in a database between import and export, as in Stoneharry's
DBC editing workflow: .dbc files are packed binary tables,
while SQL can be searched, compared with the clean files, bulk-edited and shared.
From the command line
anarres-cli import "C:\client-data\dbc" --only Spell,SpellIcon
anarres-cli apply
anarres-cli edited
anarres-cli export --edited --server --patch
anarres-cli sql Spell --ids 90000,90001 --out custom_spells.sql
anarres-cli sql Spell --changed --out changed_spells.sql
anarres-cli patch patch-A.MPQ Spell.dbc SpellIcon.dbc
anarres-cli diff old\Spell.dbc new\Spell.dbc --out spell-changes.md
anarres-cli help lists every command and option.
docs/workflow.md is the full guide: clean files, only-what-changed, spell_dbc, the cache and the layouts.
Show the screenshots
The screenshots are 1920 × 1080 and show a project imported from clean 3.3.5a .dbc files with no client, so
there are no spell icons; with your client's folder set, the list, header and talents show the game's icons.

The Base tab: Blizzard's description beside its live preview, with the level slider, a typed level and a checkbox
for each talent that changes it
Build types
Builds default to Release, which is optimised and still has full debug symbols, so breakpoints and stack traces
work (.NET's equivalent of CMake's RelWithDebInfo). Use -c Debug for an unoptimised build.
Publishing a release
Push a version tag; the Release workflow tests Anarres, builds the Windows and Linux downloads and publishes them with notes made from the changes since the last release:
git tag v0.1.0
git push origin v0.1.0
A tag with a hyphen, such as v0.2.0-beta.1, becomes a pre-release. The website in site/ is published to GitHub
Pages by the Website workflow (Settings > Pages > Source: GitHub Actions).
src/Anarres.Core/ DBC files, MPQs, the SQLite and MySQL stores, export, spells, settings. No UI.
src/Anarres.App/ Avalonia user interface.
src/Anarres.Cli/ anarres-cli, for scripts and build servers.
tests/Anarres.Core.Tests/ Tests for Anarres.Core, with a small built-in runner.
tests/Anarres.App.Tests/ Interface tests, run without showing any window.
tools/Anarres.Standards/ The coding standards check.
tools/*.py Generators for the built-in layouts.
site/ The website.
Settings are stored in %APPDATA%\Anarres on Windows and ~/.config/Anarres on Linux: settings.json (the
project), options.json (the look and behaviour), the default project.anarres, the Export folder, the table
cache and crash.log.
Read CONTRIBUTING.md before opening a pull request: it covers the coding standards, commit messages and tests.
- AzerothCore (GPL-2.0-or-later) for the DBC layouts, column names and spell names.
- Stoneharry's WoW Spell Editor and DBC Editing Workflow, and WDBX Editor, whose layout and workflow Anarres follows; Keira3 for the idea of notes on every field and for its local model viewer, whose approach (models from the client's own files instead of an online viewer) the 3D view follows. No code was taken from them.
- Urras for the look, the themes and the theme editor.
- Avalonia (MIT), MySqlConnector (MIT) and Microsoft.Data.Sqlite (MIT).
- PKWARE decompression is written from the format Mark Adler documented in
blast.c.
Copyright (C) 2026 TheSCREWEDSoftware
Anarres is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Anarres is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with Anarres, in LICENSE. If not, see https://www.gnu.org/licenses/.


































