Commit Graph

27 Commits

Author SHA1 Message Date
sindoring 2cbfd38aa8 Configure automatic agent model routing
Require ROADMAP-based execution profiles and provide explicit model and reasoning settings for implementation, architecture, UI and mechanical tasks.

Co-Authored-By: Codex <noreply@openai.com>
2026-11-10 21:36:00 +04:00
sindoring e2ccb3462e Document quest workflows and the full editor roadmap
Record item and chain acceptance evidence, remaining manual checks, isolated scenario requirements and creator deployment milestones. Keep the implementation status and publication preparation explicit.

Co-Authored-By: Codex <noreply@openai.com>
2026-11-10 21:35:43 +04:00
sindoring b85c370f55 Add quest items and project-owned quest chains
Preserve unfinished chain drafts and validate publication against NPC, patch and item constraints. Guard every published quest baseline and external incoming links before migration writes, and recover quest selection after Undo.

Co-Authored-By: Codex <noreply@openai.com>
2026-11-10 21:35:15 +04:00
sindoring 245d8ec6ed Pin Benilla to the current MoonWell engine revision
Update the exact engine revision to 1898518adeb70548db0ec5c5fb866933ace006b3.
Keep the dependency update separate from quest authoring changes.

Co-Authored-By: Codex <noreply@openai.com>
2026-11-10 21:28:50 +04:00
sindoring 5565858e35 Add quest authoring and scoped NPC questgiver migrations
Create and update quest drafts through shared Save, Undo, Export and Play workflows. Guard quest baselines and NPC references before generating content writes. Enable questgiver flags for an entire template or clone a simple template to isolate one selected spawn.

Validated on Windows x64: formatting, workspace Clippy, 53 passing tests, release build and UI capture. MariaDB temporary-table checks cover both scopes, drift rejection and idempotency; persistent table checksums remain unchanged. Manual in-game quest completion remains open.

Co-Authored-By: Codex <noreply@openai.com>
2026-11-04 21:22:56 +04:00
sindoring 8ddca16b39 Render the editor world into a shared panel-sized target
Compose the full world texture between egui panels so retained static geometry and terrain use the same raster bounds. Remap picking coordinates for panel offsets and DPI, retire images on resize, and add reproducible camera captures.

Validated on Windows x64: formatting, workspace Clippy, 45 tests, release build, same-camera comparison and orbital motion in Northshire.

Co-Authored-By: Codex <noreply@openai.com>
2026-11-04 19:31:59 +04:00
sindoring ce27f96247 Cancel NPC placement with Escape and an explicit selection control
Clear the active catalog brush even when search owns keyboard focus. Keep empty-ground clicks from placing spawns in selection mode and cover the place/cancel/select sequence with an input regression test.

Validated on Windows x64: formatting, workspace Clippy, 42 passing tests and release build.

Co-Authored-By: Codex <noreply@openai.com>
2026-11-04 16:45:57 +04:00
sindoring f8d242977d Make editor installation independent of the developer machine
Add a project launcher, per-user settings and Play state, explicit env import, pinned Git engine dependencies and a Windows distribution script.

Validated on Windows x64: formatting, workspace Clippy, 41 tests, local realm security test and release launches outside the repository with profile preservation.

Co-Authored-By: Codex <noreply@openai.com>
2026-11-04 16:39:47 +04:00
sindoring b41b3ab599 Update Benilla pin to current MoonWell main
Pin aa799a2c7dd88cbcb088ccc8ebf56e4ebf142174 from origin/main of moonwell-client-core. The sibling main checkout already matches the fetched commit.

Verified on Windows without BENILLA_PIN_ANY: fmt, clippy with warnings denied, 38 tests, editor build. Keep and Mage Tower floor deltas are +0.000267 and -0.083572 yards. Screenshots inspected; BLP decoding and missing-decoration errors are documented in STATUS and the retained diagnostic report.

Co-Authored-By: Codex <codex@openai.com>
2026-11-04 14:20:22 +04:00
sindoring e2953c8a0d Add local Play sessions and preserve creature spawn identities
Open an owned client with an isolated local GM account, export and apply content before Play, and place its arrival point in the world. Check effective realm permissions and retain allocated guids after deletion.

Verified on Windows: fmt, workspace clippy with warnings denied, 38 workspace tests; local account_access precedence test and live wolf placement/teleport probe. Checked against Benilla aa799a2c with BENILLA_PIN_ANY=1; the pinned revision is updated separately.

Co-Authored-By: Codex <codex@openai.com>
2026-11-04 14:16:01 +04:00
sindoring f1abf5133c Pick among a template's displays; confirm export and unsaved quit
- A template with several displays (display_id1..4) shows them as a choice for the brush in the
  catalog and for the spawn in the inspector. Preview only: the server rolls one per spawn by
  the template's probabilities.
- Export asks first, naming the counts and the folder.
- WindowPlugin::close_when_requested is off: the close button exits at once when nothing is
  unsaved, else asks to save and quit, quit without saving, or cancel. A failed save keeps the
  window open.

EDITOR_SHOT_DIALOG opens either question for a diagnostic frame.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 18:13:04 +04:00
sindoring f65039826c Pose previews in Stand, with weapons in hand
Each spawn of an animated display gets its own rig, as benilla's animated doodad host builds one:
a RigPose with an AnimationPlayer looping the model's loader idle (Stand), a RigSkin palette slot,
and the skinned forms on its parts. Items hang on the bone's RigPose anchor plus the
attachment's offset, as benilla-app's equipment/spawn.rs hangs them, so weapons and shields now
sit in hand. A full palette or a model without animations keeps the bind pose, where the hand
points stay at the model origin and nothing hangs there.

Stormwind's Trade District: 299 server spawns, all 175 displays posed, no palette denial.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 17:22:24 +04:00
sindoring c27ee7f660 Helms and shoulders on humanoid NPCs; read creature gear
A humanoid display wears its helm (per race and sex) and shoulders from ItemDisplayInfo, hung on
attachment points 11, 5 and 6 at the bind pose: each point is its bone's pivot plus the
attachment's offset. Item models build through the same preview pipeline, their object slot
taking the display's model texture.

The server's equipment for an entry is read too (creature_template.equipment_id →
creature_equip_template → item_template), for project spawns once per entry and for server
spawns with each cell, and handed to the spawn roots. Weapons and shields stay hidden for now:
their points ride bones that sit at the model origin at the bind pose (HumanMale's 212, 218,
219, with a zero attachment position) and only the animation carries them to the hand, so
they wait for a posed preview.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 17:15:39 +04:00
sindoring 101a3f371e Show the server's own spawns, read only
A worker thread on its own connection reads the creature rows a patch-10 server loads in
128-yard cells within 320 yards of the camera, leaving out the project's guid range; a frame never
waits on it. They draw in their display's model with a grey-blue ring. The status bar names the
spawn under the cursor, and a click opens it in the inspector read only instead of placing on top
of it. A checkbox switches the layer. At Northshire Abbey it reads 355 spawns, the count a direct
query over the same cells gives.

A world database that is down no longer stops the window: the catalog and the layer are off, and
switching the layer back on retries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 17:06:11 +04:00
sindoring a8f5f8217f Principles: dungeons and raids, boss mechanics an open question
The editor builds a dungeon's or raid's plain parts: map and entrance, mobs and packs, patrols,
loot, doors and objects, binding and reset. Boss mechanics are not built in it yet; how to author
them is the owner's open question, and the two mechanisms the core has (EventAI rows in the world
database, C++ scripts) are noted for it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 13:13:43 +04:00
sindoring ba33c09a44 Record the owner's principles for the editor
docs/PRINCIPLES.md: the editor is a game design tool for world content (locations, terrain,
NPCs and their routes, items, flight paths, transport, quests), while gameplay, QoL and client
features stay in the client. Its output is one of three artifacts: client MPQs in Blizzard's own
formats, world-database migrations, and server DBCs through S3 before a release build. The
interface is drag and drop with previews. AGENTS.md and STATUS.md read it first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 13:02:19 +04:00
sindoring 5e4d5ffa05 Hand-off notes: status, plan and working rules
docs/STATUS.md records what is done (R0, R1 so far), what is unverified (the in-game check, mouse
interaction in the window), and the plan from R1's remaining steps through R9. AGENTS.md (pulled
into CLAUDE.md) holds the checks, the diagnostic run, the pin and repository rules, and the
Windows/WSL pitfalls met so far.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 12:56:53 +04:00
sindoring eabfbb8a88 Editor panels: catalog, inspector, changes
egui panels (bevy_egui 0.39, the release for Bevy 0.18; its Ubuntu font carries Cyrillic) replace
the bevy_ui status text, whose font had none:

- Catalog: creature_template searched by Russian or English name or entry at patch 10; a row
  picks the brush.
- Inspector: the selected spawn's position, facing in degrees, respawn, movement, wander radius,
  patches and preview display. A drag or a typed value is one undo step. `.go xyz` copies.
- Changes: the pending rows, save, the server check, and export into EDITOR_EXPORT_DIR, refused
  while the server conflicts with the project.

The world's input leaves a click on a panel and a key typed into a field alone. Export and the
server check move into editor-vmangos::export, which the CLI now runs too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 12:52:05 +04:00
sindoring ad4cc80474 Box the humanoid look in a loading preview
clippy::large_enum_variant: the look made Preview::Loading several times the other variants.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 12:33:24 +04:00
sindoring 6e601ed8eb Preview humanoid NPCs
A CreatureDisplayInfoExtra display is the race model dressed from benilla_formats' public
tables, as benilla-app's char_skin.rs dresses it: the shipped BakedNpcTextures atlas on the body,
the CharSections hair sheet, the tauren fur sheet, and the geosets hair, beard and worn items
select. Checked on human, dwarf, night elf and tauren NPCs (McBride, Bolvar, Magni, Cairne, Kym
Wildmane, Jeen'ra, Tyrande): bodies, robes, hair and beards draw. Helm, shoulder and weapon models
are not attached yet.

EDITOR_SHOT_DIST sets the opening camera distance for a close diagnostic frame.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 12:32:31 +04:00
sindoring b116a37272 Move the benilla pin to 19457cb5 (main)
36 commits since d1961e79, 143 files in benilla-world, -assets and -formats. The editor builds
unchanged; tests and clippy pass; the WMO floor probes (Stormwind Keep, the Mage Quarter tower)
hit the same heights as before; every humanoid display now resolves its baked atlas (6984 of
6984, was 6980).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 12:27:36 +04:00
sindoring 6120ccc512 Log how many humanoid displays ship a baked atlas
On the 1.12.1 install: 10534 displays, 6984 humanoid, 6980 of them with a BakedNpcTextures
atlas. A humanoid preview needs the race model, that atlas, hair and the geoset set, not the
client's live skin composite.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 00:55:00 +04:00
sindoring e8fa8011a2 Release manifest schema 1
The contract between the editor, the server build and the launcher: the complete set of non-stock
artifacts a release runs with, each with its consumers and the release that introduced it, so a
server build fetches everything from one manifest and never a client-only file. Migrations are
pinned by hash in the core checkout; binaries live under releases/<introducedIn>/, never
rewritten. `manifest-check --previous` refuses a release that drops or rewrites an inherited DBC.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 00:53:25 +04:00
sindoring eb54acf727 Accept negative --at coordinates; probe the pick at given points
`--at -8445,320,135` failed: clap read the leading minus of the separate values as a flag. It is
now one x,y,z value that may start with a minus.

EDITOR_PROBES casts the cursor's walkable-surface ray down at WoW points beside EDITOR_SHOT. Run at
11 Stormwind spawns on WMO floors (the Keep, the Mage Quarter tower's top storey, the Trade
District), it hits 0 to 0.21 yd under the z the server stores, on the spawn's own storey.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 00:50:22 +04:00
sindoring 148692f796 Read local settings from .env
WOW_DATA and EDITOR_WORLD_DB come from a git-ignored .env at the repository root, so the database
password is not retyped per shell. Variables already set override it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 00:36:49 +04:00
sindoring 9ddc3acfeb Read the world database; hand out guids from the top of the range
The core gives `.npc add` and temporary creatures guids above MAX(creature.guid), so allocating
upward put the server's own spawns in the guids a project takes next. Counting down from the top
makes the range's last guid that maximum after the first export.

With EDITOR_WORLD_DB set, `check` and `export` compare the server's rows in the range with the
project and refuse on a conflict, and the editor takes the brush's display and name from
creature_template.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 00:09:04 +04:00
sindoring eda3124f1b Initial R0 prototype: project model, vMaNGOS migrations, CLI, editor window
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 23:49:53 +04:00