Week of August 31, 2026. This is an archive page; back to the current week.
2026-09-06 · 2 items
The New Britannia Herald
Twelve fixes proved on a Sunday when nobody wrote code
The Herald
- The New Britannia Herald for 2026-09-05 is up: Almost nothing was written on Saturday. Three changes went into the code, two of them about this show, and twenty-three tracker items still closed, every one of them a fix checked by a tester rather than by the person who wrote it. Nine were about houses, four were about the first ten minutes of a new character's life, and three were the game doing the right thing while refusing to mention it. Listen or read the transcript (12 min). Subscribe in any podcast app: /blog/podcast.xml
Community
- Filed a tracker bug for a terrain "hump" in the corner of a Player-Owned-Town lot at Celestis that blocks decoration placement there, from the nightly forum sweep (reported by Retlaw).
2026-09-05 · 2 items
The New Britannia Herald
A Saturday with no new code and twenty-three fixes proved by testers
The Herald
- The New Britannia Herald for 2026-09-04 is up: Almost no new code went in on Friday. Instead forty-three tracker items were closed, forty of them verification tasks proved by testers rather than by the people who wrote the fixes, and one of those checks failed and became a bug that closed the same day. Automatons learned to sound like machines, pets stopped being reset by zone lines, summons now follow you and cost focus to keep, and four separate crafting table irritations went away. Listen or read the transcript (13 min). Subscribe in any podcast app: /blog/podcast.xml
Community
- Filed two forum-sourced tracker items from the nightly sweep: saving a mirrored/flipped layout when a house update ships (requested by chrisjwhite), and a bug where a backpack container vanished from inventory after using a Teleport to Friend scroll.
2026-09-04 · 7 items
The New Britannia Herald
Forty-three items closed in a day and one verification came back failed
Headlines
- Mac testers were locked out of chaos for eight hours by a re-release of unchanged code; rolled back to 181, and the nightly now releases nothing on a quiet night and holds a release that is missing a platform.
- Eilliana in Blood River Outskirts can be talked to again. She had been unreachable since a rename, and the starting quest was stuck behind her.
The Herald
- The New Britannia Herald for 2026-09-03 is up: A fortress full of lava had been cooking the fire creatures that live in it, and the spell that puts you out was giving you a moment of grace it should never have given. Twenty-six tester verification tasks closed in a single day, covering roughly twenty-three separate fixes. Also a belt and a potion that would happily shrink you twice, dungeon reverb applied to your menu clicks, and a reset tool that had to decide where a character with no story belongs. Listen or read the transcript (13 min). Subscribe in any podcast app: /blog/podcast.xml
Tooling
- Chaos release: build 182 went out for Windows and Linux with no Mac build behind it. Nothing had been pushed since 181, so the nightly re-released the same code under a new number while the Mac build machine was away from the network; the shard moved to 182 and every Mac launcher was refused at login for about eight hours (reported in the tester Discord). Windows and Linux were rolled back to 181 and the shard re-paired, so all three platforms are on 181 again with nothing lost.
- Chaos release: two new rules in the nightly release job. A tip that every platform channel already serves now releases nothing (FORCE_RELEASE overrides), and a release missing its Mac build deploys nothing at all instead of moving the shard past the Mac channel; an offline Mac build agent stops the run before the four hours of Windows and Linux builds. REQUIRE_ALL_PLATFORMS is on by default and can be unticked for a deliberate two-platform release. The reseed also picked up a lone backslash in the itemization-catalog gate line that would have broken every job at startup.
- The work blog now publishes from the Mac under its off-network hostname as well, and the build-machine notes carry the Groovy 2.4 parse check to run on the Jenkins library before a reseed (a lone backslash in a script block passes the seed and fails every job at its next start).
Community
- Nightly forum sweep filed 3 tracker entries: pools/lakes for player-owned town plots, an oversized Hedge Archway collision box, and a tier-3 alchemy enchantment failure-rate inconsistency.
Content
- Eilliana, the elf scout who greets you on arrival in Blood River Outskirts, could not be talked to at all, which left the starting quest stuck. Her conversation record was renamed a few weeks ago and the scene still pointed at the old name, so the built game loaded nothing for her while the editor kept working from the same reference.
- Added an editor test over the Blood River Outskirts scene that checks every stored asset reference still resolves to the file it names, so a rename that only breaks the built game gets caught before it ships.
2026-09-03 · 2 items
The New Britannia Herald
The lava stopped burning fire elementals and testers proved twenty-six fixes
The Herald
- The New Britannia Herald for 2026-09-02 is up: A complaint about a planting bed tooltip uncovered forty-eight objects that had stopped taking clicks, dungeon entrances included. The crafting window's lot storage option now survives being reopened, three lot-sign lies got corrected, and fourteen dead leaderboards came back. A fourteen-hundred-item performance report was read properly instead of worked from the top. Listen or read the transcript (18 min). Subscribe in any podcast app: /blog/podcast.xml
Community
- Nightly forum sweep filed one wishlist idea (archer balance ask) and added a follow-up note to an existing cursor-art request.
2026-09-02 · 47 items
The New Britannia Herald
Forty-eight things stopped answering the mouse and one tooltip found them
Headlines
- Anais no longer says Of course I know your name's. and stops there. Two tutorial lines reworded so they survive the voice dropping your name, with new audio for both.
- The pet recall drops the pet on a random spot around you again, and repeating it moves the pet, requested by inuphet.
- Lot sale: a listing whose seller lost the lot now cleans itself up, and a bare lot no longer sells "with House"
- New characters train the Air skills they cast; the starting kit had been feeding Gust instead
- Every leaderboard in the game loads again: the service behind them had never been redeployed after the August 30 expansion, and the Achievements board fills in.
- Player dungeons no longer abort loading on a room with a missing link; the build 176 navmesh crash traced to a defective-CPU model rather than code
- Use lot storage works again after you reopen a crafting window. The window is reused between stations and only ever wired itself up once, so from the second open it stayed ticked with nothing behind it. Four reports over three builds traced back to that one line.
- A pet dying after its collar was tamed over or swapped no longer breaks the rest of the death handling
- The For Sale banner over a lot sign sits above the sign instead of half inside it. It measures the sign it stands over, so the tall hanging signs and the low stone markers each get a height that fits.
- A planting bed tooltip that named the bed instead of the plant led to a targeting bug that had quietly stopped 48 objects answering the mouse, planting spots, teleporter pads and dungeon entrances among them.
- A commit gate now refuses any new item asset that was not baked into the item catalog, after 61 Sundered Blade assets shipped invisible to every GM and tester picker.
- Boxing allocations. Triaged all 1,424 Project Auditor rows and fixed the ones on live paths: inbound message decode, NGUI input events, Lua per-frame globals, Beautify fades, terrain tree fading, and two UI labels that re-formatted every frame. The 44 System.Linq usages got the same triage; three per-frame ones became plain loops.
The Herald
- The New Britannia Herald for 2026-09-01 is up: The army besieging a town spent the whole siege attacking its own leader, who was standing inside a stone shrine. The book system grew a writing toolbar, two new lettering styles, a dressed-up reading window and an optional three dimensional book. Summons now follow you between scenes, small pets can keep up with a running player, and the Oracle has been persuaded to discuss Love. Listen or read the transcript (18 min). Subscribe in any podcast app: /blog/podcast.xml
Tooling
- JSON, XML and YAML files are now pinned to LF line endings. They were declared as text with no pin, so git checked them out CRLF while Unity, the NuGet plugin and the localization generators all write LF, and that mismatch left 12,914 tracked files liable to show as locally modified when nothing about them had changed.
- Added settle-line-endings to clear the stale entries a checkout is already carrying. A line-ending flip changes a file byte size, and git treats a size mismatch as proof of modification without ever reading the file, so status reported a change while diff showed none. The tool re-adds only files whose content it has verified still matches the last commit, and reports real edits rather than touching them.
- A new commit gate closes that hole for good. check-itemization-catalog reads the YAML head of every item asset added or renamed in a commit and refuses the commit if its guid is not among the catalog entries; a full scan of all 32,985 catalog-bearing assets runs nightly as the backstop and takes about a minute. Against the tree before the rebake it names all 61 missing assets.
- The tool that mirrors developer settings and working notes to the MacBook was still writing to a drive the working copy moved off in July, so the laptop had been running on two month old copies without anything reporting a problem. It now targets the live checkout and verifies both sides by checksum.
- That same sync now carries the wiki page id cache and the forum sweep state. Without the page id cache a wiki republish from a second machine creates duplicate pages instead of updating the existing ones, and without the sweep state the nightly forum pass re-reads every thread it has ever seen.
- The work blog can be published from the MacBook now, not just the Windows workstation. Bullets written away from the desk used to sit committed until a Windows session ran the publish.
- A one-shot script now sets up key-only SSH on a Windows dev machine and scopes it to the local network instead of leaving the stock rule open to everything. It also sets the key file permissions the SSH server silently requires, which is the step that is easy to miss and gives no error when it is wrong.
Community
- Filed a tracker bug from the forums: Kobold Expeditionary Camp wave-battle mobs that follow the player into the ring and leave unlootable corpses, a long-reported issue.
Crafting
- Fixed the crafting windows Use lot storage option going dead after the first crafting window of a session. The window object is reused when you close it and walk to another station, and its wiring was set up only on the first open while being torn down on every close, so from the second open the box stayed ticked with nothing behind it and materials in containers marked for crafting were counted as zero. Taking a container off the lot and placing it back appeared to fix it, which is why it read as intermittent.
- The same asymmetry had killed three more things on a reopened crafting window: the recipe category dropdown, the Only craftable filter, and the two item lists updating as things moved in and out of the backpack. Show and hide are now paired, so all four come back on every open.
- Crafting lot storage had no diagnostic surface at all: the counts reply carries no reason the client can read, nothing logged a failed or empty answer, and the server scan passed over containers without saying so. Four reports of the option doing nothing could not be told apart because of it. The client now warns when the reply fails or comes back empty, and the scene server writes one line per request giving the magazines and containers walked, how many it was allowed to read, and how many it skipped for each reason.
Housing
- The floating For Sale banner over a lot sign was placed by the middle of its text block at a fixed 2 m, so half the text hung below that point. The hanging sign prop tops out at 1.91 m, which left the lower half of the asking price inside the sign board, and a reserved-buyer line pushed it further down. The banner now measures the sign it stands over and sits above it: 2.26 m on the hanging sign, unchanged at 2.00 m on the low stone marker nearly every lot uses.
- Extra lines on the banner grow upward now, so a reserved buyer no longer drives the price line into the sign. The height rule moved into a file of its own with an EditMode test that pins its 2 m floor, since taking the height from the sign bounds alone would drop the banner over the ankle-high stone marker to about 0.6 m.
- The banner turned to face the camera on all three axes, so looking down at a lot pitched it forward and swung its lower edge back toward the sign it was meant to clear. It turns on the yaw axis only now.
Voice
- Anais repeats your name twice on the Isle of Storms, and her voice cannot say it, so those lines are spoken with the name left out. Both were written in a way that broke when it dropped: Of course I know your name's. and Your name's. They now read Of course I know your name, <name>. and Got it, <name>., which stay whole either way. Four clips regenerated, and the nine translated copies of each line were re-keyed so they do not fall back to English. Reported by Joe.
Editor
- Fixed the Editor compile break that came with adding the Project Auditor rules package. Package Manager offered 2.0.0 as latest, but that release targets the Unity 6.6 auditor module and failed with 12 errors against 6000.5. Pinned the package to 1.0.3, the newest release that matches the 6.5 module. The 1.x rules ship a domain-reload analyzer that added about 8,200 warnings to every compile, so those four warning codes are now suppressed in the project compiler flags. Compile is back to green with the same warning set as before.
Gathering
- Mousing over a plant in a planting bed named the bed instead of the plant. The plant art carries no collider and a planting spot is a box about 17cm tall down at the soil, so the cursor went through the leaves and landed on the bed underneath. Each growing plant now gets a collider sized from what it draws, and the tooltip reads Growing plant (Apple) with a Watered or Needs Water line under it.
- Chasing that report turned up a wider one from a targeting change the day before: 48 objects had stopped answering the mouse entirely. The rule skipped anything whose colliders were all triggers, but it measured only the colliders under the interactive component itself, and on these objects the solid body sits on a parent or a sibling. Planting beds, pots and barrels, the haunted galleon teleporter pads, the rowboat teleporters, the shogun lightstrings, the ignitable scarecrows, the DJ turntables and the giant statue dungeon entrances all take clicks again.
- The replacement rule asks what kind of object it is rather than guessing from collider shape, since a volume you walk into is always built as a switch. A new test walks every prefab in the project and fails if anything outside that family loses the cursor. Reverting the fix turns it red and lists all 38 prefabs by name.
Pets
- The pet recall (numpad 8, /pet teleport, or Teleport on the pet menu) lands the pet on a random spot about two metres from you again, and pressing it again moves the pet to a different spot each time, so you can shake it out of lava or off the line between you and your target. The 6 August recall fix had replaced that with a fixed spot directly behind you. The catch-up teleport a pet does on its own keeps the spot behind you. Requested by inuphet. Not on chaos yet.
- A pet no longer treats its own owner as something blocking its view of a target. A pet standing behind you that is told to attack what you are facing was refused on a line-of-sight check whenever the faction tables happened not to call you friendly that frame. Not on chaos yet.
Books
- Three fixes for the 3D book from a hands-on pass: the hotbar and deck strip now step aside while a book has the screen and come back on their own when it closes, the book opens already filling the frame instead of at a middle distance, and turning a page makes a sound. That last one turned out to be missing from the flat book too, where Back and Next had always been silent; both presentations now share the same page-turn foley.
Housing
- Lot sale: a listing whose seller no longer owns the lot now removes itself on the next deed sweep, the sign stops advertising it, and the lot's real owner can decorate again. On chaos, a Haven Ridge row house listed on 12 August kept its 222 gold banner under a new owner's name after the 17 August data refresh replaced the deeds underneath it, and buyers were told the lot was no longer for sale. The stale record was cleared by hand today, and the test-shard data refresh now drops the sale records along with the rest. Tracked as #6751; verify task #6758.
- A listed lot with no house on it no longer advertises For Sale with House. The floating label reads Lot For Sale, and the sign text and both confirmation dialogs say deed and decorations. Reported by KnightRider (#6737).
Combat
- New characters start with their skills' prerequisites at the required level. Since the 31 August build, casting Dash or Air's Embrace had been training Gust instead, because the starting kit handed out both skills next to a level 1 Gust and Gust must be 20 before they train themselves. Gust now starts at 20, Flame Fist at 20, and Stone Fist, Healing Touch and Light at 10, and a test checks the closure for every starting skill. Reported by blueeyes_2 (#6752).
Leaderboards
- The fourteen in-game leaderboards that had answered 404 since August 30 load again. The client half of that expansion shipped in chaos build 169, but the service that counts the boards had never been redeployed on the chaos host: it still ran the older collector and had no copy of the economy or progression modules, so Deaths, Anglers, Consumers, the three gold boards and the eight career boards did not exist on it. Redeployed the whole service set from git, and every board answers, empty ones as empty tables.
- The 30 Days window on the new boards was recounted for the last two weeks. The day rollup only recomputes today and yesterday, so a board new to the grid would have shown a 30-day total smaller than its 7-day total until mid-September. Deaths went from 13 rows to 48 on the monthly board after the re-bank; the recipe is in the pipeline doc, with a check that compares the modules on the host against the repo.
- The Achievements board published empty although 110 chaos accounts hold unlocks. Achievement points are not authored yet, so every unlock records zero points and the board, which kept only rows with points, kept nobody. It ranks on achievements earned until points exist; the Points column stays and reads 0 for everyone for now. Verify task #6761.
- Two name columns were shaped wrong for one of their two readers. Most Caught By on the public page showed the raw form the game window parses, a character id and name halves joined by commas; the page decodes every column of that shape now. The reverse on Dungeons: Best Time By went out as a plain name, which the page showed and the game window blanked. The holder is now looked up and published in the form the window expects, so the name appears in game.
Dungeons
- Fixed a player dungeon load that could stop part way through when a room had lost its link to a neighbour. The disconnected-room check now steps past the missing link instead of throwing, so the dungeon loads fully and the disconnected room still comes back to inventory (#6756, 7ebc9ab98f).
Stability
- Root-caused the build 176 native crash in the navmesh update from its minidump: the CPU resumed mid-instruction inside a function it had entered correctly, an illegal-instruction fault the code cannot produce. The machine is an Intel i9-14900KF, and 10 of the 16 native crash reports since mid-August with a readable CPU string come from that model. Marked #6757 as not a code defect.
Images
Tooling
- Wrote up the minidump recipe from the build 176 crash in the client symbolication doc: exception record and registers from the dump, the matching GameAssembly.dll pulled straight out of the client archive on the build box, and a disassembly check that the top frame sits on an instruction boundary. The crash-triage checklist now reads the CPU model before tracing any native crash.
- Removed the old M2H patcher toolchain from the Unity 6 client, along with the four build-menu entries and the build and publish paths that existed only to drive it. It produced the xdelta patch and torrent files for the 2018.4 client; the launcher has owned delivery since patcher v2, and nothing on the Unity 6 branch called into it.
- The Perforce side still builds the 2018.4 client with that toolchain, so the removal is scoped to the Unity 6 branch. The sync bridge now carries the exclusion in its own code instead of a machine-local config, and it learned to match a whole folder and a folder's companion file, neither of which it could do before.
- Dropped the deprecated Unity Analytics heatmap windows and their runtime renderer at the same time. Nothing referenced either and no scene held one. The in-house Heatmap tool is separate and stays.
- The zip library those folders happened to host was not dead: sheet music and book text compress through it. It moved to its own plugin folder first, and the client compile gate caught the gap while the editor still pointed at the old location.
Taming
- Fixed a pet death that hit an internal error when the collar had already moved on (a new creature tamed over it, the pet dismissed, or collars swapped). The error was cutting short the rest of the death handling for that creature. The death is now recorded on the collar the pet actually came from, and a collar that no longer names the pet is left alone (#1957, 967c750fc6).
Items
- The Songs of the Sundered Blade book, its thirty wax cylinders and their thirty drop bundles were missing from the item catalog every GM and tester picker reads, so none of them could be created from the tester window, even by exact name. The catalog is generated in the Editor and nothing regenerates it when an asset is added; the August 31 commits that added the 61 assets did not rebake it. Rebaked and committed.
Patch Notes
- Recorded the build ledger rows for chaos builds 167 through 180, across Windows, Linux and macOS. The rows existed but had never been committed, and the public patch notes are rendered from them, so those builds would have shown empty notes to anyone reading from a fresh checkout.
Client
- Worked through the Project Auditor boxing-allocation report: 1,424 rows, every one marked Major. Read the code behind each category rather than the list. About 650 rows are localization structs returned through an interface (a design-level box, left alone), 260 sit in log or throw branches that never run on a healthy client, and 120 are Photon parameter tables that box by design.
- Fixed the sites that allocate on real paths. The JSON decoder returns one shared box per true/false token on every inbound message, and the property bag gained a typed bool Add so every existing bag.Add(key, someBool) stops allocating. NGUI hover, press, select and tooltip notifications pass cached boxes (one allocation less per input event). The Lua per-frame globals go in as numbers without an object box. The Beautify fade blend uses cached boxes for its two per-frame bool writes.
- The terrain tree fader read the whole tree-instance array from the terrain several times per tree per frame and wrote it back per tree; it now reads the arrays once, writes back once, and indexes directly instead of boxing each tree. The character-stat label and the vendor window totals only re-format when their inputs change. The fishing loot matrix key compares without boxing. New EditMode test BoxedBoolReuseTests pins the shared-box behaviour.
- Same pass over the 44 System.Linq usages Project Auditor flags. Most run once per console command, encounter, cache build, or social push. Three ran on the frame path and now use plain loops with the same result: the sync-lock manager checked every island with Enumerable.All each frame, the view-subscription batcher built its name arrays through Select and ToArray from LateUpdate, and the guide wisp copied the whole location set into a new array every few seconds just to look for one entry. The location manager now answers that membership question directly.
- The plugin half of the same LINQ list. The decal system walked its projection pools with ElementAt inside a for loop every frame, boxing one dictionary enumerator per pool for the whole session; it now uses a plain foreach. In the Lua interpreter, every closure a script created resolved its upvalues through a lambda, a Select and a List, and every generic for over a table allocated a Select iterator plus a boxed list enumerator; both paths now use one sized array or one hand-written iterator. The MoonSharp type registry and debugger sites and the RFX4 demo prefabs were left as they were: one-time, debugger-only, or never loaded.
2026-09-01 · 152 items
The New Britannia Herald
A siege that fought itself, and books that finally have pages
Headlines
- A siege boss spent his siege standing inside a stone shrine. The walk goal was the prop's own centre, and Northwood's navigation mesh runs straight under the stone, so nothing ever objected. He now settles on clear ground beside it.
- A besieged town's army was killing its own Cabalist. Two monster factions in one army, and monsters attack across factions, so the bodyguard picked the boss the moment no player was closer. Fixed, with the faction list now pinned to the creatures a siege spawns.
- The loading screen now names every stage of the load rather than going quiet for the longest waits, and it finally has a progress bar. Underneath the real status, a second line rotates through thirty-four in-world asides. Feeding the dragons. Filing the lot deeds.
- A missing Move House button now explains itself with /verbose housing. It also found the real cause: not a rule about house size against lot size, but a measurement that counted a building's navigation helpers as part of the building. The roman temple, recorded at 81 by 87.4 metres instead of 32.2 by 52.8, moves again.
- Small pets can keep up with a running player. A tamed sheep moved at 2 m/s against a 5.5 m/s run and was dragged along by its tether; 71 pets, summons and companions were raised to the top-tier speed of 7.
- Houses that have been moved can be put back. A Reset Position button on the lot sign returns the house to the spot it started on, and it keeps working on lots where Move House no longer does.
- The Oracle can talk about the Virtues now. A new guide covers Truth, Love and Courage, the eight Virtues built on them, the Devotionals and the Cabalists who besiege them, and why your virtue score is hidden from you on purpose.
- Pet buffs survive a zone line. Feeding a pet a two hour food and walking into the next scene had been spending it for nothing, for a reason three earlier fixes all missed: the arriving pet was recorded as though it were being put away, wiping its own remembered buffs a moment before they were read back.
- The book system grew up in one day: player book formatting with a writing toolbar and live preview, two new lettering styles, a dressed-up reading window with bookmarks, an optional 3D book presentation, and the machinery to read every lore book aloud.
- Changing a player-owned town's governor or size no longer needs a build. Both moved onto the town's own record, and the whole of town management - roles, message of the day, spawn, orientation, claim policy, evictions, lot assignment - moved onto one dev-portal panel.
- Summons follow you between scenes. A summon used to be destroyed at the zone line and never re-created; it now travels like a tamed pet, keeping its wounds and its buffs. Holding one costs focus now, on the tamed pet scale, because the zone line was the only thing that had been limiting it.
- Perforce had 198 changelists git never got. kquinn's 56 are now reconciled: 13 imported, 43 documented as editor work the Unity 6 upgrade makes uncopyable.
- Bug pass. Closed 4 reported bugs from the tracker.
- The Magic Mirror on the Isle of Storms answers clicks again, and so do the lunar rift and the Boat to Novia rowboat.
The Herald
- The New Britannia Herald for 2026-08-31 is up: Moon Magic runs on a moon the game had never shown anyone, so it went on the buff bar, and then locked every skill button in the realm for a few hours. Vanish had been hiding players at half the strength its own tooltip promised, over a missing pair of brackets. Houses can now be moved around their own lot, Water Magic got its largest pass yet, and thirty songs written by a player are hidden across the world as wax cylinders. Listen or read the transcript (18 min). Subscribe in any podcast app: /blog/podcast.xml
UI
- Backpack Options: Show Locked Items and Show Lock Column now grey out inside a bag opened from your backpack, the same as they already did in the bank, chests, placed containers and loot corpses. A nested bag can no longer flip those two settings on your backpack without the backpack's own checkboxes moving (#6620).
- The original title screen is centred on the page now. The earlier fix put its proportions right; a tester on chaos then reported the artwork was drawn about forty units to the left with a black gap of the same width on the right, over the letterbox. The switch to the original art now nudges the widget back to centre and puts it back where the prefab had it when the new title returns.
- After switching characters on the same account, the catchphrase bar no longer showed the previous character’s slots until the Catchphrases window was opened. The bar now refreshes as soon as the new character logs in, and pressing a bar slot plays that character’s phrase.
- Window names were being drawn underneath the decorative corner art. On most themes the flourish in the top left covered the first letter, so Options opened with a curl of gold through the O. The name now starts clear of the art, by a distance measured from each ornament style's own sprite: 15px for Quill, 27px for Flourish, nothing for Rail. Ornaments turned off and the Classic theme are unchanged.
- Pointing at a row in a list painted it a near-white band, and row text is light, so the row under your cursor became the hardest one to read. Contrast measured 1.93:1. The theme had always specified a dark tint there; the rule carrying it was outranked by one of Unity's own, so only the text half of the rule was landing. A hovered row now reads at 12.06:1. This affected every list in the game and was reported from the keybindings list in Options.
- The note explaining that list highlight has been in our own documentation since a Crown Store bug on build 76, which was fixed for the Crown Store alone and left the general rule losing. New tests resolve row colours on a live panel rather than searching the stylesheet for the rule text, which is how a rule could sit there correct and outranked without a single test noticing.
- The loading screen no longer shows the aiming crosshair over the loading art. It appeared at around 85% of the bar and stayed until the world faded in. The crosshair lives on a piece of interface that survives every scene change, and the loading screen is drawn by a different system that never covered it, so the only thing keeping it hidden was a switch that had to be flipped at exactly the right moment. It is now checked every frame instead. Reported by Echondas.
- The loading screen now says what it is doing all the way down the bar. Five of the load stages named themselves and the rest wrote nothing, so the longest waits left the previous message sitting there. Six more stages report in: reading map data, reclaiming memory, finding an instance, waiting for scene data, waking the locals, final preparations. Reading map data carries the real percentage, since it is the one stretch of the bar measuring work rather than elapsed time.
- The loading screen also gained a progress bar along the bottom edge, next to the percentage it has always had, and a second dimmer line under the status line that rotates through short in-world asides while you wait. Feeding the dragons. Filing the lot deeds. Reminding the skeletons whose bones are whose. Thirty-four of them, one every three and a half seconds, never the same one twice in a row. The line above them is always the real status.
- One more thing that fell out of the loading screen work: the last loading tip in each pool has never been shown. The random pick asked for a number below the count and then subtracted one more, so the final entry of both the general and the scene-specific tip lists was unreachable for as long as the file has existed.
- The moon indicator on the buff bar no longer credits "You" as the caster in its tooltip. It is an automatic passive indicator applied to any character with Night Vision, so the tooltip now shows with no caster heading at all, the same way the scene hazards do.
- Shock Weapon buff on the player buff bar now lists the chance to stun on hit next to the extra damage line, and Frost Weapon and Ignite Weapon show their on-hit slow and burn on the same tooltip.
- The backpack, bank, and container windows now widen themselves when the display-options panel is open, so the Columns checkboxes on the right no longer clip against the edge of the window at the narrowest sizes (#6605). Folding the panel away walks the width back down to the same narrow limit as before.
- Root and Skewer now describe their immobilize as lasting up to a duration rather than for a flat one. The length depends on the target, so the number shown is the longest it can run. The eight other slow skills were corrected earlier and this brings the last two in line. The numbers themselves did not change.
- The bank window opens 600 wide instead of 420, which is the width the backpack already used. On a fresh install at 1920x1080 the old default cut item names to a few characters and pushed the Refresh button past the edge of the frame.
- Dragging a glyph out of a deck slot onto the deck list or the glyph list removes it again. Picking the glyph up already released the slot lock, and the removal step was treating that second release as a failure, so the glyph snapped back and the slot re-locked.
- On the Edit Deck window, the padlock hanging under a slot no longer wears a rectangular frame around it, and the small down-arrow that opens a slots full glyph listing no longer sits inside a dark box or on top of a semi-transparent panel. Both icons now read as bare art on the slots black area.
- The status effect tooltip for Revenant Stance says health is lost every tick and colours the line as harmful. The stance drains health using the same mechanism a heal over time uses, so the readout had been printing the heal wording in green over a stance that takes health away. Real heals over time are unchanged.
- The focus bars regeneration highlight paints in the authored light blue again instead of red, and the highlight for spent focus stays in its own darker blue. The health bars own colours are unchanged.
- Backpack "Show Lock Column" now carries a padlock icon in its heading, matching the row padlocks below. Turning the option off still removes the column and its heading together, and the heading only appears on your own root backpack, not bank/side/lot containers. (#6671)
- Your Backpack, the Bank and container windows can be made narrower again while the display options are showing. Opening the cog was setting the window's smallest allowed width to whatever width the window already had, so it could only ever grow until you folded the checkboxes away. Reported by Rinaldi.
- Three readability tweaks on the Combat Decks window: no more hover plate over each row hiding the reorder arrows and the options cog, a hairline divider between adjacent decks so the list no longer reads as one strip, and the small up and down arrows to the left of each deck are smaller and brighter so adjacent rows no longer meet at the arrow tips.
Combat
- The Cabalist holding a besieged town now stands beside the town shrine instead of inside it. He was walking to the exact centre of the devotional, which is solid stone, so he ended up sunk into the prop where he could not move and was awkward to hit with a melee weapon. He now stops on the nearest clear ground the town has around the shrine.
- A town with more than one devotional now sends the Cabalist to the shrine of the virtue he actually opposes. The test behind that choice had been 'carries any symbol at all', which every devotional in the game passes, so the two rungs that pick a shrine were doing the same thing.
- Fixed the army besieging a town fighting itself. The Ebon Dawn troops that fill the rings and the Cabalist they stand around are authored in two different monster factions, and every monster faction attacks every other one, so the bodyguard 8 metres from him took him as its nearest target whenever no player was closer. His health dropped with nobody fighting him, and he swung back at his own troops. Inside a siege the two factions are now one side, and everything else about those creatures is unchanged.
- The new test holds that faction list against the prefabs a siege actually spawns, so putting a creature from a third faction into a ring fails the test run instead of quietly bringing the infighting back.
- Elysian Illumination stops painting a pink box on every ally the aura heals. The heal effect was pointing at a material that had been missing from the project since the initial import, and yesterday it started playing on real targets. The soft glow the spell was meant to have is what shows now.
- The Water specialization chill that makes melee swings land harder now counts once. Ice Arrow, Ice Fist, Ice Field and Cone of Cold each wrote their own share of it, so a target holding several chills took 15% extra melee damage where one chill is worth 10%. The game now reads the strongest chill on a target and ignores the rest, and ranged weapons still get nothing from it.
- Revenant Stance stops blocking healing when the stance ends. Dismissing it, casting another stance over it and dying all removed the buff icon, but healing stayed refused: potions, food, heal spells and natural health regeneration did nothing, and the character sheet went on reading Healing Received as blocked, until the character changed scenes.
- Kobold Expeditionary Camp: the arena stopped counting as an enemy. An invisible zone sits over the arena floor to start the wave battle, and clicking anywhere on it selected that zone as your target. Nothing in the game could clear the selection, so the character kept swinging at empty air after the last kobold fell and combat never ended. Reported by ChristPallid, who first raised it in August.
- The same rule now covers about thirty-three other objects built the same way, including the ambient sound zones, the moving hazards and the invisible barriers. Levers, wall switches and anything else a bow can shoot have a solid shape and are unchanged.
- Bodies lying near the middle of the Kobold Expeditionary Camp arena can be looted again. The August fix stopped that zone blocking the cursor at long camera zoom but not at close range, which is where the fighting happens.
- A buff that was still running could be deleted rather than restored when the game rebuilt it after a scene load. Buffs built from a parent effect and its children were being measured against the wrong list and refused, and a refusal was read as the buff having run out, so it was dropped from your saved buffs for good. Deleting now only happens when the timer really has expired.
Community
- Filed 5 items from the overnight forum sweep: higher-res large-cursor art, recall-scroll binding to Player-Owned Town Signposts, a weapon-imbued elemental/school-effect proposal, unifying the Big Cat carcass variants into one stackable item, and a bug for sound effects breaking near a specific player-owned lot.
Client
- Lot and house sale mail now names its sender ("First Bank of Brittany"), reads a plain subject ("Your lot sold", "Your house sold", "Lot purchase refund", "House purchase refund", "Exchange purchase refund"), and labels the enclosed gold ("Lot sale proceeds (N)" and so on) instead of raw enum placeholders. A seller online at settlement also gets a chat line saying the sale went through, and the buyer of a stored house gets one when the house lands in their Property Manager.
- A besieged town starts its fight the same way on every players screen. The rules that decide which shrine, town crier or spawn point the Cabalist walks toward used to trust the order the scene happened to give them, so two players standing in the same town could see the boss arrive in different squares. All three rules now sort their candidates the same way on every client.
- Fixed a scene-load hang path where a destroyed NPC could throw during spawner cleanup and cause the rest of the scene load to skip its final setup pass.
- An NPC destroyed part way through a scene load could throw while its spawner link was being drained, which cancelled every remaining step of that load's finalize pass while the load still reported as finished. The write that threw now checks the NPC is still there first.
- Property Manager no longer offers to restore, rename or sell a storage row that belongs to someone else. Rows that surfaced only so you could recover your own items (from a lot another player unclaimed) now show a "Send to Bank" menu and nothing else, instead of ending in a red server error line when you tried to drop them onto your lot.
- Maximizing the game window no longer flips the saved Full Screen setting behind your back. Before, clicking the Windows Maximize button on a windowed session was silently remembered as Full Screen ON, so the next launch came up fullscreen. The Video tab Full Screen box also no longer shows itself as ticked while the game is only maximized-windowed. #6603
- A character in ghost form no longer plays a catchphrase voice line. Pressing a catchphrase while dead used to broadcast the clip to every player in range and play it locally. It is refused now, the same way chat lines are refused when dead, and the paired emote does not play either.
- A harvest node under the pointer past interact range now shows the too-far-to-use cursor, the same one every other interactable uses. The previous pass added the mapping but never routed the node through it, so the plain arrow still showed and the node read as bare ground from a step away (#3225).
- A
/afkyou type yourself now holds. The flag came back off the moment the mouse moved, because the Enter keystroke that submits the command cleared the one thing meant to protect it. Manual AFK now survives mouse movement and camera swings and comes off on a key or mouse button. The ten-minute idle timer is unchanged: anything at all still clears that one. /afkis a toggle now and tells you where you stand. It prints "You are now AFK." going on and "You are no longer AFK." coming off, including when the idle timer sets the flag for you. Returning also restarts the ten-minute clock, which used to leave you one frame from being flagged again the moment you stopped moving.- Moving a house no longer fires the custom keybinds for E or camera rotate. If Q was bound to Rotate Camera Left, spinning the ghost with Q spun the camera along with it; that stops now, the same way decoration placement already worked. (#6615)
- The exit and quit dialog now catches a network drop that happens during the logout countdown and closes the client within a few seconds instead of leaving it stuck on screen with no way out but Alt-F4.
Housing
- Selling a lot or a stored house now says so. The sale puts a line in your chat log naming the lot and the time, and the mail carrying the gold arrives with a real sender, subject and entry rather than placeholder text, with the buyer named on the entry the way a vendor sale names them. Purchases that could not complete and had to be refunded read the same way, for lots, stored houses and Exchange orders. The gold was always there and always collectable; nothing on the screen said what it was.
- A new /verbose housing command reports why the Move House button is not on your lot sign. It prints the rule that stopped it, the lot size, the measured size of your house, and the range of positions the house can legally take at each of the eight rotations. Until now a missing button left no trace anywhere, so the only way to answer the question was to read the lot out of the database.
- Checked every combination of a smaller house standing on a larger lot: 757 of 762 already offer the move. The five that do not come down to two houses whose measured footprint is wrong, the red barn at 67.6 by 155.6 metres and the roman temple at 81 by 87.4, both far bigger than the buildings themselves. A new test pins the whole grid so the next bad measurement fails a build instead of quietly removing somebody's button.
- The Options button on a lot sign now stays available to a developer account on every lot. It used to be gated on the lot having an owner, so evicting a resident took away the only menu that could do anything else with the lot that had just been cleared.
- That menu carries developer entries now: claim the lot, assign it to a named character, release it, and change its reservation. Each one is checked again on the server against the account flags and recorded as an admin action.
- The client and the server had two different copies of the rule that decides which deed is big enough for a lot, and they disagreed. The client refused a half-row deed on a row lot and a dev-mini deed on a dev-mini lot that the server would have accepted, so the Claim button stayed dark for claims that would have worked. Both sides read one table now.
- Moving a house no longer sets it down on top of decorations already standing in the yard. The placement check only measured the building against the lot, so a house could be parked over a garden or a bench and the items stayed underneath it. The marked spot and the items in the way now turn red, and pressing Enter says what is blocking instead of placing. Anything the house already stands over does not block the move, so a building authored over a flowerbed can still be slid and turned.
- Storing a moved house in the Property Manager and putting it back no longer leaves its furniture behind. A house always returns to its original spot when it comes out of storage, but everything that had travelled with the move stayed at the moved position and facing, so a house turned around and then stored came back facing front with its contents facing backwards, and each trip made it worse. The contents now come back with the house in the same step. Reported by inuphet.
- The measurement that decides whether a house has room to move was including its navigation helper geometry. The roman temple carries a walkable patch 43.7 metres off its own axis, so a 32.2 by 52.8 metre building was recorded as 81 by 87.4, wider than a castle lot, and it could not be moved on its own city lot. Now measured at its real size and movable on city, keep and castle lots.
- The red barn stays put for a different reason: its own collision meshes reach 143 metres down one axis, so no re-measurement helps and it needs an art pass. The test that guards this now records why, per house and lot size, instead of excusing the whole building.
- Fixed the new developer lot claim on the lot sign: it failed with an error for anyone holding no spare deed because the claim sent the deed item in the wrong wrapper, so the server could not read which deed type to mint.
- The lot sign got a Reset Position button. It appears whenever your house is off the spot it started on, and putting it back brings everything placed on the house along with it. Until now the only way home was pressing R while positioning the house in Move House mode.
- Reset Position runs a shorter set of checks than Move House on purpose. It ignores the placement feature switch, the movable-house list, the lot shape and extra land, because the original spot always fits. A house that has been moved can be put back even after any of those stop offering the move. Decorations standing on the ground where the house belongs still refuse the reset, and now turn red for six seconds so you can see which ones to shift.
Images
Quests
- At the end of the Solace Bridge escort, Charlotte's lines were attributed to her name upper-cased between question marks if she was not summoned when you reached Edvard. That is a marker meant for content authors and it was reaching players. A line spoken by someone who is not standing there now uses the plain name.
Server
- Reset Quest State from the character screen now sends the character to the overworld map tile that contains the scene they were standing in, instead of dropping them back into the same scene at its entrance. A player who was inside the Halls of Artifice can no longer reset back to the fawn and re-take the Path of Truth experience award.
- The QA shard now runs the whole stack on its own: its own login mirror, its own account database, and a sanitised copy of live game data. A test login went through the full chain and came back clean, with a character loading and real world data behind it.
- Bringing the shard up on a box that had never run one turned up three bugs in the setup scripts that had been hiding behind the existing server's working state: a start script that died silently on a missing directory, an Apache config block written in a form Apache rejects, and a file-copy rule ordered so that the database migrations never arrived. All three are fixed.
- The Set to Default button in the rename lot deed window works again on a renamed deed. The button reverts the deed to its built-in name, and the server was refusing the reset with an Invalid DisplayName error since a validator tightening earlier this year (#6665).
- Resetting quest state on a brand new character no longer warps them to the overland as a spirit. A character who has not yet visited the Magic Mirror on the Isle of Storms now stays there after a reset, so the mirror can still give them a body.
Content
- The plain cloth rugs place on interior and exterior walls again. An earlier pass turned them the right way round in the wall preview, and the game still refused the placement because the wall check was aiming its raycasts along the rugs own upward direction, which now runs vertically along the wall instead of into it. The check now aims along the walls own normal from the placement raycast. Covers the Rectangle, Square, Oval, Round, Octagon, Long, Huge and Small Rectangle rug families, including the Rectangle Rug (Purple Floral) that pinned this one down. Fix commit b47cffde93.
- Planting Barrels accept a seed again. The sowing check was reading the barrels own decoration proxy colliders as blocking overlaps and refusing every planting, so barrels sat empty while pots and beds worked. (#6660)
- The Isle of Storms deck swap step accepts a swap made with the deck hotkey. It only listened for the interface button before, so a player using the hotkey left Anais waiting.
- French players saw "Maîtrise de la Magie de l'Air" on the Earth Magic Mastery tooltip on the character sheet. It now reads "Maîtrise de la Magie de la Terre".
- Settled the journal id collision. The Helpful Automaton pointer takes 1479 to 1481, the numbering it already has on the other side, and the "Lock Your Gear" tutorial pair moved to 1482 and 1483. Moving the tutorial pair was the cheaper side: it was written here in July and has only ever existed on the test shard.
- The renumber carried the eight translated languages with it, so the German, Spanish, French, Italian, Japanese, Portuguese, Russian and Chinese gear-lock text stayed attached to the entry it was written for rather than to a number.
- No data fix-up goes with the journal renumber. Existing test-shard characters holding those two entries will see the wrong task title in their journal; test characters are disposable, and the numbering is correct for the live shard, which is where these entries land for the first time.
Sun Magic
- Judgments tooltip lists its numbers again. It was showing a bare effectiveness percentage and nothing else: no damage, no duration, no stored charge, no burst. It now reads the sun damage per second, how long the beam actually runs (capped at 12 seconds, which is what the spell does rather than what its formula works out to), how much your allies hits can bank on the target, and what the burst and its splash are worth. Reported by Olivia Rohan.
Server
- A second server box is being brought up as a QA shard. Release rehearsals and capacity tests currently have to run on the same shard testers are using, which means the two compete for it. The deploy tooling now takes the target shard as a parameter instead of only ever pointing at chaos.
- The new box was locked down before anything went onto it: key-only login, a firewall that denies what it does not need, and fail2ban, which banned its first probe within seconds of starting. Its MongoDB runs under a memory cap, and its replication log was pinned to 8 GB after it sized itself at 28 GB against an empty database.
Pets
- Small pets can now keep up when you run. A tamed sheep or chicken topped out at 2 m/s against a 5.5 m/s running player, so it ran flat out, lost ground every second, and was hauled back by its tether. Cats, dogs and pigs sat at 3, ducks 3.5, rabbits, squirrels, turkeys and frogs 4, and spiders, scorpions, crocodiles, the spell summons and every quest companion at 5. All 71 were raised to 7, the speed the game already gives its top-tier wolves and bears. Bears, stags, horses and wolves were already fast enough and are unchanged.
- A pet following you on a housing lot no longer runs at 65% speed. The lot slowdown exists to keep yard animals from tearing around a plot, but it was charged to every creature standing there while the owner paid nothing, so a pet trailed you across your own yard and got recovered by its tether instead of walking. A pet set to Follow is now exempt. Stay, Patrol and decoration animals still amble.
- A tamed pet keeps its buffs when it crosses a zone line. Feeding a pet a two hour food and then walking into the next scene spent the food for nothing. The pet arriving on the far side was being recorded as though it were being put away, which wrote an empty buff list over the remembered one moments before the restore read it. The pet's wounds came through the same trip untouched, which is why the last three attempts at this looked like they had worked.
- Three more ways the same trip could lose a buff are closed. A buff whose spell data did not resolve for a moment is kept and tried again instead of being deleted, the restore keeps asking until every remembered buff is actually on the pet rather than stopping as soon as the request was accepted, and the pet now reads its remembered buffs before it is handed to its owner so nothing in between can take them.
- Summoned creatures come with you through a zone line now. Cast an air elemental, walk into the next scene, and it is waiting for you at the health it had and still carrying its buffs. Before this a summon was gone the moment you crossed. Decoys from Chaotic Clone are the exception and stay behind, and there is still one pet slot, so whichever creature is out when you cross is the one that comes back.
- Summons now draw on your maximum focus while they are out, on the same scale a tamed pet of the same level does, and a stronger summon costs more. Holding one used to be free: the elementals, the phoenix, the wisp and the daemon had no upkeep and no decay, and the zone line was the only thing that ended them. The three undead summons are unchanged, because they already pay by losing health over time.
Content
- The Songs of the Sundered Blade book sold in the Ardoris bookstore opened empty. Book text comes from the localization database rather than the item itself, and the import step that fills it had never been run for this book. It now has its 91 pages, the longest book in the game.
- Walking into the kobold arena when the wave battle will not run now tells you so. The fight is part of the Path of Courage quest to free Sir Patrick, and before this it gave no message at all.
Engine
- Measured whether the client should adopt Unity.Mathematics, which Unity 6.5 turns into a built-in engine module. It is free to have, and slower to use: on identical data in ordinary managed code,
math.lengthtook 4.7x as long asVector3.magnitude,math.cross5.2x, a 4x4 matrix multiply 5.1x, and rotating a vector by a quaternion 7.8x. The SIMD those types are named for only arrives with Burst, which we do not use. Verdict: no conversion work. - The same benchmark checks how far the two math libraries disagree. Over 200,000 samples the scalar functions match to the bit, but
math.lengthdiffers fromVector3.magnitudeon 13% of samples andmath.normalizefromVector3.normalizedon 60%, by up to 3 representable floats. Client and server share their combat math on the promise that both sides compute identical numbers, so that library stays out of it. - Also settled the sibling question of whether to start compiling hot code with Burst. Not yet: the one measurement that would decide it, a profiler capture of where NPC combat spends its 19 to 23 ms in Tartarus, has never been taken. It is now filed on its own so the question does not get lost. The leading suspect is the creature steering code, which runs separation, cohesion and alignment as three separate passes over the whole flock per creature per tick.
Guilds & Towns
- Astoria moved up a tier, from Hamlet to Village. The town build allowance rose to 40 decorations, 15 lights, 6 town NPCs, 3 NPC buildings, 3 containers, 6 terrain levellers and 2 music broadcasters, and the dynamic plot budget went from 19,800 to 25,200 square feet.
/townslists it as a Village. - Swamp trees in player towns built on the Swamp 01a metropolis template now block movement. Four of the large swamp tree types had collision shapes the terrain system will not accept for trees painted with the terrain brush, so all 99 of those trees across the map had no collision at all and players walked through the trunks. They now stop you the way the rest of the trees already did. Twelve player towns use that template.
- Regenerated the navigation data for the Swamp 01a metropolis town map, which twelve player towns are built on. That is the data NPCs, hired workers and creatures use to route themselves around the map.
Documentation
- Corrected the Unity editor-automation setup doc. It still described the AI Game Developer plugin as a copy vendored in the repo at version 0.82.1; the repo carries no such copy, and the package resolves from the OpenUPM registry at 0.89.0. The editor version listed was also a few patch releases behind.
Movement
- Sprinting now has a second way in: hold Shift while moving forward. The old double-tap of the forward key is unchanged, and both cost Focus the same way. Releasing Shift ends a Shift sprint but leaves a double-tap sprint running. Works mounted, and there is a Hold Shift to Sprint checkbox on the Controls tab of the options window for anyone who wants Shift left alone during movement.
Oracle
- The Oracle has a guide to the Virtues. Truth, Love and Courage had fourteen lines inside her own help page and nothing else: no eight Virtues, no Devotionals, no Cabalists, and no answer to the question players actually ask, which is why they cannot see their own virtue score. The new guide is written from the devotional caretakers' own words, the Oracle judgement table, the Devotional items and the town blessing runes.
- It leads with the four answers that were easy to get wrong: only Truth, Love and Courage carry a score, the eight Virtues carry none; those three scores are concealed on purpose and /stats reports each as -1; the player-owned-town religion shrines are a different system from the Devotionals; and there is no karma stat, no mantras, and none of the old virtue-city names. It also covers what moves your standing, the recalibration kit and the kobold who uses it, the gear that reads your virtue, the twelve Devotionals and what each blesses, and the eight moons with the Cabalist who serves each one.
- Her recent-changes guides stopped at August 29 and several school guides described spells whose numbers had moved since. Extended the window to September 1 and folded the durable half into the evergreen guides: the cold vulnerability a specialist's chill now leaves on a target, Judgment, Revenant Stance and its healing block, the Moonlight indicator, Vanish's corrected concealment, Ward Rend, the Dexterity crit levelling, the subterfuge behind-crit, Move House and Reset Position, small-pet speed, Songs of the Sundered Blade, the Isle of Storms opening, and holding Shift to sprint.
- The Water guide had crossed the 24,000-character read limit, so its tail was being dropped whenever the Oracle read the whole page, and the corpus test was already failing on it. Split the per-spell reference into its own guide the way Subterfuge was split, leaving the parent as the overview.
- Live-firing the new guide caught the exact confusion it exists to prevent. Asked whether a virtue score was visible, she answered that Truth, Love and Courage appear on your character sheet. They do not. The section was rewritten to separate the two facts and re-verified against both wordings of the question.
- Two retrieval failures turned up in the acceptance run. The sprint note sat under a heading carrying no sprint signal and lost to a Light Armor page, and "what changed lately" stopped reaching the recent-changes guides once the intro wording moved. Both now have headings phrased the way a player asks. All 47 acceptance queries reach their intended guide, and the corpus is 58 guides and 809 sections.
- Asking the Oracle about Love gave nothing back, days after the Virtues guide went live. The guide was not the problem: it was deployed and it retrieved correctly. Her persona rules were answering over the top of it. They listed the virtues among the subjects answered purely in character, which skips the step where she looks something up, and the model went further and read a bare "what is love" as a real-world question, declining it as off-topic without opening the knowledge base at all. A bare "love" scored as nonsense. Two players hit this the same day.
- The rule was right when it was written a few days ago, when the only virtue text she had was four lines of flavour. A real guide turned the same rule into a gag. Virtue questions now go through the same look-it-up-and-cite-it path as any other question, with her voice kept, and the prompt now says plainly that a bare virtue name is a question about this game. Asking about Love returns the definition, the Candle of Love and Ardoris, with the source linked. Three tests pin it, since this would revert silently the next time anyone edits her character rules.
Tooling
- Upgraded the AI Game Developer editor plugin from 0.89.0 to 0.90.0 and its two bundled runtime libraries from 8.1.0 to 8.3.0. The upgrade also rewrote the plugin compile gate define across every build target; the project own define set came through unchanged.
- The A* Pathfinder inspector drew collapsed in Unity 6.5, squashing the component into about 40 pixels of overlapping section headers with the Add Component button painted across them. Its section wrapper ended a layout group only when that section was open, leaking one for every closed section, and animated section heights that Unity 6 measures once per layout pass. The component now renders 598 pixels tall with its graph section open and 258 closed, with an EditMode test on both.
- The Generate cache button on a scene NavMesh object threw instead of rebuilding the navmesh, on every scene. It reverted and checked out the cache asset through Unity version control, which was the Perforce integration; with the move to git no provider is connected, so the status query came back with an empty asset list that the code read the first entry of regardless. The provider work now runs only when a provider is connected. The same leftover made the batch navmesh rebuild report a failed check-in for every level it processed.
- The ID Manager was resolving duplicate scene IDs by editing the source prefabs. Its caches are built from every loaded object of the type, and the only filter was hide flags, so the components inside source prefabs landed in the list beside the scene's own instances. A prefab and an instance that does not override the ID always read the same ID, so each pair registered as a duplicate on a scene that was clean, and auto-resolve stamped a new ID onto whichever it reached first. When that was the prefab, the new ID went out to every instance of it in every scene, and the tool checked the prefab out and wrote it to disk. The caches now skip anything that lives on disk: in one open scene that dropped 20 phantom entries from a list of 105.
Books
- Players can format their written books: bold, italic, underline, strikethrough and colored ink render in published books, and {pagebreak} and {ch=Chapter Title} directives split pages and build a working Contents page. A publish-time sanitizer closes unfinished styles, strips link and invisible-ink markup, and keeps everything else exactly as typed; imported text files get the same treatment so the preview matches the published book.
- The book writing screen has a toolbar now: bold, italic, underline, strikethrough, seven ink colors, Page Break and Chapter buttons, and a Preview toggle that shows the finished book while you write. Toolbar edits go through the same path as typing, so the page counter and publish checks treat them identically.
- Written books offer two new lettering choices alongside Default and Runic: Flowing Script (a cursive hand) and Illuminated (an ornate face). The reading window also now draws each book in its chosen lettering; Runic books had been falling back to the standard interface face there.
- The written-book length limit rose from 8,000 to 12,000 characters, since formatting marks now count against it. Sheet music keeps its own 8,000 limit.
- The book reading window got a visual pass: a parchment grain on each page, a spine shadow between facing pages, deckled page edges, chapter headings in manuscript red with an illuminated first letter on authored books, a short page-turn transition, and a per-character bookmark so a book reopens where you left off. Printed copies of a player book share one reading position.
- Brought in the EndlessBook plugin, an animated 3D book with real page-turn physics, as the base for an optional immersive reading mode. Trimmed its demo scenes and duplicate packages before the first commit.
- Built the immersive 3D reading mode: with a new per-character option on, opening a book shows an animated 3D book over a dimmed world, pages turning with real page physics, fed by the same text pipeline as the flat window so formatting, lettering and illustrations carry over. Reading only; writing stays in the regular window. Ships off by default until it has had an in-game tuning pass.
- Built the read-aloud machinery for books: a narration audio cache, a chapter-by-chapter player on the voice volume slider that keeps reading while you adventure, a Read Aloud button that appears on narrated books, and the offline pipeline that turns a book's source text into per-chapter audio. All 703 authored books enumerated and castable; the first recordings wait on a listening pass, so nothing is audible in game yet.
- First try of the 3D book showed a green cover: the plugin ships placeholder cover and page-edge materials with flat colors and no textures, and the placeholder cover color is green. Those surfaces now render as a leather-brown cover and aged-paper page edges that look the same in every scene.
- Two more fixes from the first hands-on pass with the 3D book: page text stays on the paper (the page model shows only about 80 percent of its texture width, so the painter now keeps everything inside that zone), and the mouse wheel scales the book, remembered between sessions.
- The 3D book now looks like a book: the camera moved from a flat top-down view to a long lens at a reading angle so the cover thickness and page stack show, and the book wears its real cover art again, recovered from the plugin package with the vendor branding painted out. Pages, page edges and the filler all use a matching paper texture.
Player-owned towns
- A new Player-Owned Towns panel on the dev portal puts a town's whole state on one page: size tier and square-footage budget, the governor, stewards and residents with how long since each logged in, the message of the day, spawn, orientation and admin lock, and every claimed lot with its holder, taxes and claim policy. Read-only for now.
- The town list is built from the master deeds, the town records and the baked registry together rather than any one of them. The registry knows 479 towns and the shard has carried 770, so a list from the registry alone drops a third of them. Anything one source knows and another does not is shown with a note saying which.
- The panel flags the case it was built for: the deed that actually owns a town and the asset the build reads naming different accounts. The deed is the truth, the asset is the seed the build starts from, and until now nothing showed you when the two had come apart.
- Two supporting pieces landed with it. The roster the portal reads now carries each town's size tier and square footage, taken from the scene registry, and the panel can hand back an owner list in the same shape the database export tool writes, so the existing editor importer keeps working without anyone running that tool by hand.
- The Player-Owned Towns panel can now change a town, not just describe one: roles, the message of the day, the spawn, the town's orientation, a lot's claim policy, evicting or assigning a lot, and the lock, evict and unlock sequence for reclaiming a town.
- Every one of those is the same operation the governor uses in game, performed by a headless client that joins the town. Nothing writes to the database behind the game's back, so the server still decides what is allowed, and a locked town refuses the panel exactly as it refuses everyone else.
- Joining the town is also what starts it when it is not already running, which is why a change lands straight away instead of at the next start. Actions that take something away need a written reason and the town's name typed to confirm, and every attempt is recorded before it runs and again with its result.
- A town's governor and size are now fields on the town's own record rather than lines in a Unity asset. Changing an owner used to take a database export, an editor menu, a nightly job and a deploy; changing a size took a full client release for a one-line diff. Both are now a change on the panel.
- The old data is not thrown away, it becomes the starting point. A town writes its owner and size into its own record the first time it starts, the record wins from then on, and clearing it puts the town back to whatever the installed build says.
- A town that is already running picks the change up within two minutes, on a timer the server has always had and which until now only refreshed the owner's name. A town that is not running picks it up the next time it starts.
- A town missing from the shipped report used to set up with no houses and nothing in the log to say why. If the town's own record describes it, the server now starts it from that and warns instead. The loud error still fires when neither source can describe the town.
- One number had to be corrected first: the server's copy of the town-size table listed Devopolis at 166,800 square feet against the client's 250,000. It never mattered while nothing read the server's copy. It would have shrunk every town of that size by a third the first time one was resized, so the two tables are now the same and a test keeps them that way.
- The Player-Owned Towns panel is deployed and reading the shard. It lists 811 towns, which is every town the database or the registry knows about rather than only the 479 in the registry, and flags the 332 the registry has never heard of and the 20 where the deed and the asset name different owners.
- The change controls are wired end to end but wait on a server deploy: the running server was built before the two commits they need, so the game currently refuses them. That refusal is the permission gate working rather than a broken deploy, and the panel says which it is.
- The panel turned up something on its first real read: 316 of the 770 town records are flagged as locked by an admin. A locked town refuses every town and lot change for everyone, the governor included, so those are frozen until somebody unlocks them.
- Each town on the panel now shows its pledge id, the design submission it was sold as. Nothing in the game database has ever carried one, so it comes from the website submissions table and is matched on the town name, which lands cleanly on 398 of the 439 towns.
- Where the id is missing the panel says why rather than leaving a blank: no submission on record, or a name shared with another town. Four submissions share names with each other and are left out entirely, because a wrong pledge id on a town is worse than a missing one.
- The list said 811 towns, which was true of what it collected but wrong about what those rows are. Of them 439 are player-owned towns. 327 are empty shells - a scenario exists on several template variants, and any variant that ever started left behind a master plot and nothing else. 40 are not player-owned at all: the old Player Run Towns and village scenes, which hold lots but have no owner.
- The list defaults to player-owned towns now, with the rest one filter away rather than deleted, since a lot in an old village is still a lot somebody holds. Every row says which of the four it is.
Documentation
- Corrected drift the town work turned up: the editor menu is under Catnip Games rather than Portalarium in five places, the owner export takes no output-path argument, and the owner-refresh runbook now says out loud that changing a governor clears every steward and resident on that town.
Voice
- Added tts-api, a service that voices lines the game writes at runtime. Every voice clip until now was generated ahead of time, which works because the dialogue is known months in advance and leaves nothing for text that is authored on the fly, such as a generated NPC reply. The new service runs a local Kokoro model on the build machine, which had 8.6 GB of graphics memory idle beside the chat-moderation model already living there, so a clip costs machine time instead of money.
- The new clips ride the existing pipeline end to end: same audio format, same CDN, same fetch and cache path in the client, so nothing on the client side changed. A clip is addressed by a hash of its voice and its text, so the same line asked for twice is served from the first recording rather than made again, and the second ask reaches neither the GPU nor the network.
- This does not replace the paid voice service the game already uses. The local model offers 28 English voices against the current catalogue of 134, and moving the existing library across would invalidate every clip a player has bought, against a synthesis bill that comes to about $98 for the whole game so far. The two share the CDN, the audio format and the client, and nothing else.
Migration
- Perforce still had 198 changelists that git never received. The inbound bridge stopped importing on 20 July, and the depot kept taking submits from five people right through to today, so everything the team authored on that side since then was sitting outside the repo.
- Brought across kquinn's 56 changelists from 21 July to 26 August. 13 landed as commits: the player-owned town changes for Rajazel, Umbra, Cold Haven and Belly of the Snake, the Helpful Automaton pointer task, the Bloody Bones ambient lines, the Arabella quest logic, and shared prefab fixes from Obsidian Keep, Xenos, Dysborg Ruins and Elysium Mines.
- The other 43 could not be copied. They are almost all stuck-spot fixes, which are scene and terrain edits, and the Unity 6 upgrade rewrote those same files on our side - so both versions moved apart from a common ancestor neither still has. Every one is now listed with its scene and ticket so it can be redone in the editor.
- New tool for this, import-p4-changes, which takes one person's changelists rather than everything since a watermark. It checks each file before writing: if our copy is no longer the revision Perforce is about to change, it refuses rather than overwriting. That check is what stopped it reverting the Unity 6 scene work.
- One thing the import found and left alone: the new "Talk to Helpful Automaton" journal entry claims id 1479, and our side already gave 1479 to a different task. Journal ids are stored on your character, so renumbering either side is a content decision rather than a merge, and it is written up rather than guessed at.
- Filed two testing tasks for the four changes that came across whole: the Rajazel and Umbra town tier changes with Rajazel's new loading screen, and the new opening lines for Eilliana in Blood River Outskirts and Horatio in Highvale Outskirts.
- The rest of what imported landed incomplete, each missing a piece that lives in a scene file, so the write-up says per change what is absent rather than sending anyone to test something that cannot work yet.
- Checked whether the "Lock Your Gear" journal entry is on live, since it is one half of the id collision. It is not, and never was: that tutorial step was written on our side on 23 July, three days after the Perforce import stopped, and never went back the other way.
- That also made the collision bigger than first written up. The Helpful Automaton pointer needs three consecutive journal ids, one per guard who can start it, and two of those three are already spoken for on our side. Both ways out are costed in the migration notes.
- The conversation keyword check could not run on this machine, but it turns out nothing special is owed: it measures the whole body of conversations against a tracked baseline rather than the files in one commit, so the next run picks up today's imports along with everything else.
- The half of that check which runs inside the editor did run: 97 parity tests driving the real conversation loader over sampled NPC and language pairs, all green after the import.
Onboarding
- The Magic Mirror on the Isle of Storms answers clicks again. A targeting change earlier the same day skipped every interactive whose colliders are all triggers, which took the prompt and the click away from the mirror, both lunar rifts and the Boat to Novia rowboat along with the arena volume it was aimed at. The rule now asks for an interact prompt as well as the collider shape, so 33 walk-in volumes stay ignored and 5 clickable objects came back.
2026-08-31 · 149 items
The New Britannia Herald
A moon on your buff bar and the morning it broke everything
Headlines
- Water Specialization got its first group benefit: chilled targets take extra melee damage from every attacker, 0.1 percent per specialization point, capped at 15 percent and tunable live.
- The Oracle speaks with one voice now. Her voice vote closed with Candidate B, the Ethereal Chamber, and it is live across the whole game, replacing five different voices. The old recorded greeting that spoke over her lines on the Isle of Storms is gone too.
- The moon is finally on your screen. Moon magic's whole mechanic is a moon that rises and sets on its own seven-hour cycle, and the game has never shown it anywhere. Any character with Night Vision training now carries a Moonlight buff whose tooltip says whether the moon is up and counts down the minutes to the next moonrise or moonset.
- Vanish was hiding you at half strength, and had been for years. One missing pair of brackets in its formula meant the division at the end caught the whole sum: the spell read 90 percent hidden and computed 50. It now hides you at 90 percent under a dark sky and fully under the moon, and Shadow Form's duration grows with training instead of sitting at 30 seconds forever.
- Correction: Douse is party-only, and always was. Sunday's bullet saying it now landed on any friendly player was wrong, and the code has been changed so the rule cannot be misread again.
- The first tester walk of the restored Isle of Storms start produced seven fixes in a day: a tutorial step that could not be finished, an empty first hotbar slot in all three starting decks, and NPC dialogue drowned by the music.
- The skill bar stopped answering for Night Vision characters this morning, and is fixed. Every glyph, consumable and object menu answered "You are already performing another action.", and neither zoning nor relogging cleared it. This morning's moon indicator was marked as a spell you hold until you cancel, so the game never counted it as finished. A test now names the one spell allowed to work that way, so the next one cannot be added by accident.
- Build 172 was rolled back to 171 across Windows, Linux and Mac after a game-breaking bug, client and server together. Build 173, carrying the fixes, went live the same evening with client and server verified on one code line.
- Lava stopped burning you for up to 40 seconds after a Douse, standing in it the whole time. Fire hazards now ask whether their effect is still on you rather than only how long ago they last fired.
- Catchphrases now belong to your account, not to one character. Every character shares the list, re-buying a phrase you already own is refused before cotos are taken, and deleting a character no longer destroys what it paid for.
- Thirty songs a player wrote for us went in as collectible wax cylinders, credited to the Avatar's Reliquarian Choir. The audio streams on demand instead of shipping in the client, so a two hour album costs the download nothing. A printed songbook of the whole cycle, with riddle notes pointing at where each cylinder is found, went on the bookseller's shelf in Ardoris.
- House moving works now: the first tester pass caught moves that only moved the furniture, houses that could never be placed, and a placement key that did nothing. All three fixed, 131 of 197 houses genuinely movable, and every refusal explains itself.
The Herald
- The New Britannia Herald for 2026-08-30 is up: The child who teaches the opening lessons on the Isle of Storms had a different voice at every stop, kept vanishing, and could not spell her own name. The startup freeze at the end of the loading bar is fixed, and the launcher now cleans up after a bad exit without being asked. Sun Magic gained a beam you plant your feet for, Death Magic gained a capstone that raises the dead around you when you fall, and choosing your two specializations is finally its own decision. Listen or read the transcript (18 min). Subscribe in any podcast app: /blog/podcast.xml
Community
- Filed 8 items from the nightly forum sweep: a friends-list portal shortcut, a music/SFX bitrate bump, POT NPC voice picking, a frog voice option, a Chaos Shard housing-lot duration bug, a broken /translate command, a Catch Phrase preview voice bug, and an Ice Field tooltip mismatch.
Combat
- Slow and root tooltips that depend on how strong the target is now read "up to N seconds" instead of a flat "N seconds". Ice Field claimed 37.8 seconds of slow where a real enemy took about ten, because the tooltip is written before you have a target and read the target as having no Strength at all. Reported by Barugon. Ice Fist, Ice Arrow, Icy Thrust, Icy Puncture, Glacial Glissade, Disabling Shot, Root and Skewer carry the same wording now; the numbers and the spells themselves are unchanged.
- The Elf War Commander at Blood River Massacre broke off mid fight, walked back to the wooden floor it stands on and forgot the player. Its spawn could see ten metres but was only allowed to chase eight, so a few steps of movement ended the fight; it now chases as far as it can see, matching the other elves in that camp.
- Water Specialization gains a group benefit: a new Melee Damage Taken stat that a specialist's chills will write onto their targets. This commit adds the stat, its character sheet display (percent, colored as a debuff), and the enum fence update.
- Added the live tunable that caps the chill melee vulnerability at 15 percent however many cold effects sit on one target. Setting it to 0 turns the mechanic off shard wide without a patch.
- Wired the chill vulnerability into melee damage: swings on a chilled target now multiply by the debuff after mitigation, ranged weapons excluded. Damage tooltips against a chilled target show the boosted number. Pinned by a new EditMode suite.
- Ice Arrow, Ice Fist, Ice Field, and Cone of Cold now write the melee vulnerability onto their targets for Water specialists, riding the same chance and duration as each spell's own chill. Non specialists and creatures write zero.
- Updated the five skill descriptions, the balance change log, and the tunables catalog for the chill vulnerability. Filed tester verification as #6498.
- Water magic now answers to water. Ice Arrow, Ice Fist, Cone of Cold, Ice Field, Frost Weapon, the cold halves of the two icy combos and Soothing Rain's healing all gain 20 percent while it is raining where you stand, or while you are standing in water. Requested by Jack Knyfe.
- Standing in shallow water used to refuse every spell, because the game counted wading as swimming. Water spells can now be cast while wading. Other schools are still refused there, and deep water where you are actually swimming still refuses everything.
- Spell tooltips say what the weather is worth. The damage range is quoted for a dry caster and the wet bonus gets its own line, so the same 20 percent is not counted twice.
- Cone of Colds cooldown now answers Water Magic Specialization properly. The stat was divided by 1.5 before it reached the formula, so a character 120 levels into the specialization still waited 30 seconds. It is 60 seconds untrained, 40 at specialization 40, 30 at 80 and 24 at 120, half of each from an unlocked deck. The base minute is unchanged and the cast time was left alone. Requested by Violet Ronso.
- Cone of Cold needed four times the experience per level of every other water spell, on the schools capstone. It now needs what Ice Arrow, Ice Field and the rest need. Existing levels and banked experience are untouched. Requested by Ysold.
- Cone of Cold can be re-aimed while it casts. Movement and turning shared one permission and the spell roots the caster, so the rotate keys did nothing for the whole two seconds and cancelling was the only way to face a new target. A rune can now keep its facing free while it roots, and Cone of Cold is the only one that does. Walking or strafing still cancels the cast.
- First Editor test run caught the chill vulnerability stat pointing past the end of the stat table (a miscounted ordinal, 590 where the compiled enum says 583). Fixed in the four rune assets and the test pins before it ever reached chaos; all three suites green.
- Fixed the Sun spell Judgment: once the cast animation was over, nothing could put the beam out, so walking away or taking a hit left it burning to the end. Moving or being hit now ends the beam at any point in the channel, and a beam broken that way pays out nothing.
- Judgment's closing burst was playing at the moment the beam started rather than when it finished, and a beam held to a clean finish with nobody helping showed no burst at all. The burst now plays only at the end, and it plays whether or not anyone fed the light; what it deals is still only the physical damage other people landed on the target during the channel.
- The Alchemist's Firebomb and the Caustic Acid Bomb now fly to the spot you aimed at and burst there. Both were leaving the flask hanging at the thrower's shoulder and dealing no damage at all, because the two rows that carry them had a thrown effect but no speed to travel at.
- A food or drink buff taken in the last second or two before a zone line was dropped. The buff list goes to the server on a timer, and a zone change landing between the buff and the next send left nothing to restore on the far side. It now sends before the scene starts unloading.
- World buffs and hazards no longer claim You cast them. The earlier fix was lost on the trip through the server and again when a blessing survived a scene change; the flag now rides both, so the tooltip stays clean online and after zoning.
- The rule behind that correction is now written into the code and pinned by a test: whether a spell can be cast with your weapon away has nothing to do with who it may be cast on. The friendly-target gate is keyed on the flag that actually decides party scope, and Douse plus four of its neighbours are pinned as party-only so the next reader cannot make the same mistake.
- A knocked-back creature now travels away from whoever hit it. The push could be worked out from the direction your camera happened to face instead, sending the creature along a fixed compass direction with nothing to do with the fight. A tester hit a spider on the Isle of Storms and watched it go twelve feet due west. Creatures marked as unmovable are properly unmovable now too.
- The skill bar stopped answering glyph presses for characters with Night Vision training. Every press, every consumable and every object menu answered "You are already performing another action.", and neither zoning nor relogging cleared it. This morning's moon indicator was marked as a spell you hold until you cancel it, the way Dig In is, so the game never counted it as finished and treated you as busy for the rest of the session. Nothing cancelled it because the indicator is passive, and it came back at every login.
- Standing in lava and casting Douse cleared the burning, and then the lava failed to set it again for the rest of its cycle: 6 seconds in the Hilt Fortress forge fire, 40 seconds in a real lava pool, with the player standing in it the whole time. Fire pits, lava and traps now check whether their effect is still on you instead of only how long ago they last fired, so the burn comes back on the next pulse about a third of a second later. Walking out of the fire and back in used to keep the same gap and no longer does.
- The same hazard timer was armed whether or not the effect had actually landed. That half had no teeth until yesterday, when Douse gained a charge that soaks up one incoming fire effect: the charge would have bought a whole hazard cycle rather than the single tick it is worth, taking the lava gap to 80 seconds and 120 for a Water specialist. Both halves came from the same missing check and went away together.
- The Fire Elementals in the lava at the bottom of Hilt Fortress spawned carrying a burning effect. They are immune to fire, so it did no damage, but the lava put it back on them every time the forty seconds ran out. A damage field now leaves alone a target its damage cannot touch, so the elementals stand in the lava with nothing on them, and an undead creature standing in poison is left alone the same way. This only applies when a field does nothing but damage the target is fully immune to: a field that also slows or roots still lands on everything, and anything that takes even a little damage still takes it. Off switch on the Live Tunables page (
fields.skipImmuneTargets).
UI
- The /translate chat command works again. The translation service had started refusing the requests the game was sending, so every attempt answered "Translation error." for about three days. The game now asks in a form the service accepts and falls back to the older form if that one is ever refused. A multi-line /translate also returns all of the lines now rather than the first sentence. Reported by Isabel Ayin.
- Fixed the catchphrase list jumping to the middle of itself. A library large enough that the game sends it in several parts was redrawn once per part while it was still arriving, and each redraw against a shorter list pulled the scrollbar up with it, so creating a phrase dropped you halfway down however far you had scrolled. The list is now drawn once, when the whole library has arrived. Bar slots holding a phrase from a later part no longer blank out while the library loads.
- The inventory window can be dragged much shorter. Its minimum height was a flat 440 pixels, which always kept about ten rows of items on screen; it now stops at 260, which is four rows of items under the search box, the column headings and the buttons along the bottom. The same floor covers the bank, loot bags and the containers you open in the world.
- Unfolding the category filter on a short inventory window now grows the window to fit the tabs. The tab strip is about 148 pixels of buttons that cannot shrink, so at the new minimum height it would otherwise have pushed the item list and the bottom row of buttons off the panel. Folding it away hands the height back.
- The original title screen keeps its proportions. Switching to it while the game was running drew the artwork about a third too wide, because the background kept the width it had worked out for the other image and never recalculated.
- A blocked glyph now gives its reason at most once every few seconds instead of once per press, so a client stuck on one refusal no longer buries the chat log under a single repeated line.
Server
- Built a test tool that points several buyers at the same item at the same instant, to prove the crowns-for-gold Exchange can only ever sell one bundle once. Six buyers racing a single bundle produced exactly one sale and five refunds, with every losing buyer's gold back to the coin.
- Ran the Exchange's safety checks against the Chaos shard: nine purchases reconcile against nine bundles sold, 900 crowns handed out and 404,000 gold destroyed, with no bundle sold twice and no order left half-finished.
- Tested the Exchange's off switch three ways: switching it off, and removing its settings file entirely, both stop purchases within about two seconds and refuse them at the server rather than just hiding the button. Putting the file back resumed trading, byte for byte identical.
- The crafting window's "Use lot storage" option now reaches containers in a lot's attached basement and dungeon. Chests marked "use this container for crafting" downstairs were being left out of both the ingredient counts and the craft; only containers standing on the lot itself counted.
Tools
- The Crown Exchange dashboard is live for the team at /crown-auction/, showing what is on the shelf, what each bundle is asking, what has sold, and alarms for refunds going wrong or one buyer taking everything.
Water Magic
- Water's slows stopped deleting each other. Every slow in the game used to share one slot, newest wins, so casting Ice Fist and then Ice Arrow left you with only the arrow's chill, and an archer's shot erased both. Water slows now sit on their own channel that holds three at once, so up to three different water slows hold on a target together. Requested by Garfunkel Humperdinck, first raised by Lord Baldrith in 2016 and championed by Violet Ronso since.
- Each water slow was trimmed by about a quarter now that three of them stack: one slow leaves a target at 78% speed, two at 56%, three at 26%. Two smaller finds came out of the same pass. Ice Field's slow was never on the shared channel at all, and the channel entry its placement spell did carry worked against the caster, so a slow landing on you could make your own Ice Field disappear. Both are fixed.
- Soothing Rain became the school's cleanse. With Water Magic Specialization trained, fire damage over time now comes off everyone standing in the rain on every tick instead of about one tick in eight, and the rain rolls a separate chance each tick to remove one other harmful effect of any school, about 10% at specialization skill 100 and 20% at skill 200. Requested by Waxillium and Curt.
- The rain's general cleanse waits 12 seconds before it will take a second effect off the same person, and that wait is shared by every rain falling on them, so overlapping rains give relief without giving immunity. The wait is a live tunable, so it moves without a build.
- At Soothing Rain skill 100 the rain also grants 10 points of Fire Resistance to everyone standing in it while it falls.
- What a cleanse is allowed to remove is now one rule in one place for every school: any damage over time, any stat pushed the wrong way for its owner, any resistance debuff, and never anything cast on a friend. The fire and life pages were both waiting on that answer.
- Douse now leaves a charge behind. While you hold it, the next fire effect an enemy lands on you is swallowed and does nothing at all, and the charge is spent. You get one charge, or two with Water Specialization, lasting as long as the fire resistance the spell already granted. It answers any hostile fire, so a Douse cast before a fight can take a fire mage's opening spell off the board rather than only cleaning up afterwards. Everything Douse did before is unchanged: it still strips fire that has already caught, and it still grants the resistance. Recasting refreshes the charge rather than stacking a second one, and friendly spells that happen to be fire pass through it untouched.
- Correction: Douse is party-only, and always was. A bullet from Sunday said it had stopped being party-only and now landed on any friendly player; that came from a misreading of the targeting code and was never true in the game. Douse is cast on yourself, your own pet and people in your party, and so is the rest of the healing line. The Utility Hotbar change it shipped alongside stands.
NPCs
- Wrote the dialogue for the Crown Exchange clerk in Central Brittany, who will sell crowns for gold once she is placed in the world. She answers to "exchange", "crowns" and "trade" alongside the usual greetings.
Content
- A wagon in Central Brittany drew its close-up model and its distant model about eight meters apart and turned at different angles, so the wagon appeared to jump sideways and spin as you backed away and the game swapped between them. Both now stand in the same place, and walking into the wagon blocks you where it always did. Added an editor check that fails if another wagon placement in that scene moves one detail level without the others.
- Each of the thirty cylinders is seeded into loot in the place its song is about: the Desolis song under Desolis, Opalis in the Opalis ruins, the Midras songs at Midras and Hilt. The first pass gated them to scene names the server did not use, so none of them could drop. All thirty are now verified reachable in their own scene against the server's loot allow-list, most of them in exactly one place.
- The thirty songs now exist in print. Songs of the Sundered Blade collects the full lyrics of the cylinder cycle with the choirs introduction at the front, and the bookseller in Ardoris sells it for 50 gold.
- Before each song the choir left a short note about where that songs cylinder was hidden. The notes are riddles, but honest ones. Each points at the real place where that cylinder drops, so the book doubles as the treasure map for the collection.
Crafting
- A chest piece enchanted with a sapphire socketed can now roll Cone of Cold Power, which raises the spells damage. It carries the same magnitude, proficiency and tier scaling, and durability cost as the Solar Flare enchant sun mages have had for years. All four chest materials can roll it.
Life magic
- Locked in the rule that every Life heal answers Life Magic Specialization. Healing Burst was the one that did not, fixed back in July; a new test now checks all five heals (Touch, Ray, Grace, Blast, Burst) carry the attunement term and that each formula's parsed tokens match its own written text, so re-authoring one of them cannot quietly drop it again.
- The nine Life spells stopped charging up the same way. Resurrection gathers in pale gold over 2.2 seconds instead of 1.5, Purify and Purify Burst charge cyan because they clean rather than heal, and Healing Burst charges brighter and across a wider light. The five single-target heals keep one shared charge on purpose, since they do the same thing.
- Healing Blast had been opening with Healing Ray's effect, so the school's biggest heal announced itself like a much smaller one. It has its own now, heavier and slower. Four finished effects that nothing in the game referenced are also wired up: an arrival flash for Healing Touch and Healing Ray, a closing effect for both Purifies, and the heal glow authored for Elysian Illumination.
- Healing Ray and Healing Blast were drawing their beam to the ground under the target rather than to the target, roughly half a body height low. Neither spell declared that its effect draws a line, which is the flag Death Ray has always set. Both declare it now.
- Purify Burst cast with nobody in range played no failure effect at all, and it was the only Life spell with no fizzle effect authored. It has one, and a cast that reaches nobody now plays it. The trigger is opt-in per spell and Purify Burst is the only spell that sets it.
- Purify's tooltip now says what Purify cures. The list of ailments it removes was buried in the code, so it printed nothing: it reads plague, corruption, confusion and focus drain now, plus the damage over time the spell covers. Purify Burst and the cure potions carry the same effect and gained the same line.
- Fixed two faults in that same cleanse list. Confusion was counted twice, which wasted one of the spell's removals. Fire resistance was on it, so Purify cured a fire vulnerability while leaving cold, water, air and earth vulnerabilities alone; it is off the list now. Purify still removes fire damage over time exactly as before.
- The hold-to-self-cast key can be rebound. Holding Alt and clicking a glyph casts it on yourself, and that Alt was fixed in place, the one key in the game you could not change. It is a normal action now in Options under Controls, still on Alt by default, and it can be moved to Ctrl or to any ordinary key. Existing key settings are untouched.
- Brought back the in-range colour on a selected ally. There have always been two border colours for a friendly target, a brighter one for in range and a darker one for out of range, and only the darker one was ever drawn. A party member now shows the brighter border while they are close enough to reach.
- Heal numbers scale with the heal now, the same way damage numbers have always scaled with the hit, and a heal too small to round up reads 1 instead of showing nothing.
- Wasted healing is shown instead of discarded. The number is the health actually restored, with the part that went over the target's maximum dimmed in brackets behind it, so a heal of 180 on someone missing 142 reads 142 (38). Healing someone already at full health used to produce no feedback at all. New Interface option, Show Wasted Healing, on by default.
Testing
- The tester hub leaderboard was not counting everyone. Fourteen of its 49 rows showed 0 hours on Chaos, and 150 of the 873 bug reports that carry a reporter stamp were credited to nobody. The board keys each row on the hub login, and for testers whose game login changed at the 20 August account cutover it was still looking for the old one. Their hours were never lost: roughly 475 hours were sitting in the sample history behind a zero. Nine of those rows got their totals back, and 29 more bug reports found an owner.
- Testers who report bugs under more than one name now have them counted on one row. The roster gained an also-known-as list for a second game login or a spelling that differs from the hub account, folded into bug credit only. Play time still comes from a single account, because the game counts it per account and two of them cannot be added together.
- The leaderboard collector and its roster now ship together in one command, and the stats file records whether the roster loaded. The alias fix behind the missing hours had been correct in the repository for eleven days while the server ran the older collector with no roster on disk. The only sign was a log line nobody reads.
- Twenty-three people had been reporting bugs from inside the game without a tester hub account, so the leaderboard had no row to put their work on and about 100 reports were credited to nobody. They now have hub accounts and their past reports are counted. They were given the hub grant only, not the in-game tester tools, and their game passwords were left untouched.
- Bug reports that reach a named tester went from 723 of 873 to 864 of 874. The ten still unattached are reports stamped with a name that does not resolve to one account.
- Recovered the Chaos hours the leaderboard could not have known about. A row only counts play from the moment the collector first saw the account, so the newly onboarded testers all read zero. The server had been logging the same play-time counter on every scene entry, so their hours were reconstructed from the log history instead, checked against two testers the collector has tracked all along and landing within 3 to 10 percent.
- The reconstruction reports what it had to throw away. A play-time reading that flaps between two accounts sharing a name, or a shared account in use by several people at once, produces a total that looks reasonable and is not, so the tool prints the discarded minutes next to the answer and the rows it was built for discard between zero and three.
- The reconstructed hours are on the board. Twenty-two rows that read zero now carry between 0.4 and 22.6 hours, and the six still at zero are people who have not played on the test shard inside the window the logs cover. Fresh play is adding on top correctly: one row moved from 11.7 to 12.0 hours on the first refresh after the numbers landed.
- Two more players joined the chaos tester group. Both already had live accounts, so they keep their existing game password and got a separate hub password for the tester site and the tracker; the roster file now lists 86 entries, 75 with hub access and 46 with the in-game tester tools.
Housing
- Free house placement is underway: the goal is letting owners shift and rotate their house anywhere on their lot instead of one fixed spot. The first slice landed dark: the lot record can carry a house pose, the server validates a requested pose fits the lot (a reserved strip along the front edge keeps the sign, mailbox and arrival spot clear), and furniture placed on the house moves with it in the same write. Nothing is enabled yet; navigation work and the placement controls come next.
- Evaluated and rejected the quick route of treating houses as big decoration items: pets and vendors would lose indoor pathing, indoor items would count as outdoors against the wrong limits, friends with decoration permissions could move or even bank the building, and eviction would pack the house into a bank box. The house stays a house; the only new data is its pose on the lot.
- Free house placement, navigation groundwork: the house bake tool gained a solo mode that bakes each house's walkable interior as its own file at the house's own pivot, one per house instead of one per house-and-lot-size pair, and records the house's footprint in a manifest the server checks before accepting a move. No house is baked yet; the feature stays off.
- Free house placement, the rest of the code path: a lot whose house has been moved now loads two walkable surfaces (the empty-yard one plus the house's own, at its new spot) stitched by crossing points at the house edges, pets and vendors are taught both surfaces count as the lot, and furniture placed indoors carves the indoor surface. Also built the placement mode itself: a Move House button on the lot sign shows a ghost copy that follows the cursor, turns in 45 degree steps, and glows green or red for a legal or illegal spot before asking to confirm. Everything stays off until the per-house preparation work and pathing checks pass.
- Baked the first two houses for free placement: two row houses now carry their own walkable-interior files and footprint records, proven by reading the baked data back (76 and 124 walkable points covering both storeys of each). The bake tool also reports why a bake was refused instead of failing silently. The feature itself stays switched off until the pathing checks pass.
- Free house placement is switched on for the next tester build. Twenty-two houses can be moved so far (the first pass covers row houses up through city and castle class); the Move House button hides itself on lots where the house has no room to go anywhere; and a step-by-step verification task is waiting for testers. The remaining houses get their preparation files in a follow-up pass.
- The whole house catalog is prepared for free placement: 197 houses now carry their own interior walking surface and footprint record, from two-storey row houses (about 76 walkable points) up to the castle-class mansions (2,348 points across three and a half storeys of interior). Every graph was read back and checked for real content. The only unbaked entries are the two empty-lot placeholders, which are not houses.
- Free house placement, fixes from the first tester pass. The committed house pose never survived the trip to other clients: it rode the lot properties as a typed array that the JSON wire hands back as a different type, so a moved house kept rendering at its old spot while everything placed on it moved. The pose now rides as the same tuple string deco records use, and lots moved before the fix display correctly on the next build with no cleanup needed.
- The Move House button also offered houses with no legal destination (29 of the 197 baked), and houses built with their front edge inside the reserved front strip had no legal spot anywhere near their current position. Placement now accepts any spot that keeps the house no closer to the lot front than it was built, which makes 131 of 197 houses genuinely movable, opens sideways slides and 180 degree flips, and hides the button honestly for the rest.
- Placement input pass on the same bug reports: a refused Enter now says why instead of doing nothing, a stationary left click places the house, R really returns the ghost to the original spot and holds it there, placement keys no longer fight the chat window in either direction, and a lost confirmation or server response no longer wedges the mode. Every refusal on both sides now logs which rule refused and the legal window it computed, so the next report is one search away from a diagnosis. Full-manifest regression tests pin the rule that a visible Move House button always has a committable spot behind it.
Mounts
- The chicken mount summon was missing from the rune group the client loads at boot, so outside the Unity editor there was nothing for it to resolve to. It is registered now. The chicken is still a dev and GM only mount with no store entry, so no player can reach it yet.
Moon magic
- Shooting Star was the only Moon spell that cast in silence. Every other spell in the school speaks its words of power when you cast it, in your chat log and in a bubble over your head. Shooting Star never received any, and nothing in the game warns when a spell has none, so it went unnoticed for nine years. It speaks Luna-Motus-Ylem now, a root apart from Meteor Shower’s Quaes-Motus-Ylem.
- The Moon school’s internal roster answers twenty entries for a sixteen-skill school. All four extras are labelled now: three are dead spell identities kept deliberately, as the slots two future Moon spells and a channel will be built from, and the fourth is the attunement entry every magic school carries. Nothing in the running game counts them, which is written down too, so the next person to notice the gap does not file it as a bug.
- Audited the Summon Wisp experience number that looked like two skill-table columns transposed years ago. It is not. The transposed form appears on none of the table’s 1,642 rows, and the pair the wisp actually carries is shared exactly with Summon Phoenix, Summon Water Elemental and Summon Ice Elemental. It is also not a fee: the same figure that draws four times the pooled experience per cast deposits four times into the skill, so the wisp costs four times as much and trains four times faster for it. Left alone, with a test that makes the four summons move together or not at all.
- Celestial Blessing stopped charging its price to the person you bless. The spell hung a lasting focus penalty on the target, and at grandmaster without Lunar Specialization that took 100 focus off your ally for the ten to twenty minutes the buff ran. That is gone. The cost moved onto the cast itself, where your skill raises it and the specialization pays it down. Blessing a party of five used to cost you 40 focus and cost them 500; it now costs you 65 and costs them nothing.
- The malformed formula in Celestial Blessing was not doing what the proposal page said it was. A stray constant sits against a parenthesis with no operator, and the machinery that runs these expressions puts it on the stack and then never uses it, so Life resistance has always been worth exactly what Death, Moon and Sun are worth. Measured change across every skill level tested: zero. It was a trap rather than a nerf, one edit away from becoming a twenty-times resistance buff, and it is now the same expression its three siblings carry. The spell also picked up the Sun school it was missing, on the part of it that raises Sun resistance included.
- Shadow Form's specialization move speed lasts the whole form again. Under the moon the form runs 60 seconds, but the speed bonus was written without the moon term its parent carries, so it expired at 30 with half the form still to go. Both now read the same line. Nothing changes with the moon down or for a character without the specialization. The spell also stopped rolling to consume reagents against a list with nothing in it.
- The summoned Will-O-Wisp's attacks grow with its summoner. Every number in its three attacks was fixed, so a wisp summoned at skill 1 and one summoned at skill 100 stripped the same single point of damage resistance for the same seven and a half seconds. The strip now scales with your Summon Will-O-Wisp skill and with Lunar Specialization, reaching about 11 points at skill 100 and 25 for a specialist. Its debuff durations answer specialization too, with the mesmerize and confuse taking half the coefficient so a pet mesmerize cannot run to half a minute. Requested by Barugon, thesometimeslurker and Anpu. Pet AI and power curves stay with the taming work.
- Vanish and Cocoon of Night refuse before the cast instead of eating your focus. Both only hide you while you are standing still and while nothing has you targeted, and a cast that failed those conditions still spent the full focus and started the full cooldown. The check now happens first: the cast is refused, you are told why, and nothing is spent. The glyph also greys out while the condition holds, so you can see it before you press it. Subterfuge's Camouflage works the same way, since the rule lives on the spell rather than on a list of names. One behaviour change worth knowing: pressing Vanish while running and stopping during the cast used to work and now does not.
- The moon is on your buff bar. Train Night Vision at all and a permanent Moonlight effect now sits with your other buffs; hover it and it says whether the moon is up and how many minutes until the next moonrise or moonset. Half the school's spells get stronger while the moon is up, and until now nothing on screen said whether it was. A Show Moon Indicator toggle in the Interface options hides it again.
- The countdown reads the same orbit the spells read, so the icon cannot tell you one thing while your damage does another, and a character carrying Moon Eater sees their own widened moonlit window rather than the standard one.
- Vanish was hiding you at half strength in both skies. The formula was missing a pair of brackets, and this game's formula machinery has no operator precedence, so the division at the end caught the whole sum instead of the training term: the spell read 90 percent under a dark sky and 110 under the moon, and computed 50.2 and 50.3. Against a creature's awareness that was the difference between it losing half its detection range and losing all of it, which is the parity gap the stealth threads have described for years.
- With the brackets in, Vanish computes what it always said: 90 percent hidden under a dark sky at skill 100 and fully hidden while the moon is up. Subterfuge's Camouflage is unchanged, and Vanish still lasts longer than it at 160 seconds against 130.
- Shadow Form, the Moon stealth you can walk in, lasted 30 seconds no matter how much you trained it, against 80 seconds for Subterfuge's Silent Movement, and came back half as often. Its duration now grows with training the same way that spell's does: 80 seconds under a dark sky at skill 100 and 160 under the moon, on a 20 second cooldown instead of 30.
- A creature that resisted mesmerize was not hard to put to sleep, it was immune. The resistance came straight off your chance rather than taking a share of it, so past a certain amount nothing would land however good the caster. It now takes a share, which leaves a spell that was already landing every time unchanged and gives the hopeless cases a roll.
- Animal Charm was the one crowd control in the game paying no resistance at all, because the charm effect never reached the check its sibling pays. It pays the same one now. Nothing you can charm currently carries the stat, so no compensating change shipped with it; the only thing in the game that carries it is a dragon.
- Night Step's mesmerize now shows the same mark over a sleeping target that Moon Beams already did, so a target that fell asleep reads differently from one that shrugged it off. The crowd-control diminishing returns are untouched.
Twitch Drops
- Started on Twitch Drops (requested by necronut). Built the full reward pipeline against the test shard: watch a Shroud stream during a campaign, claim the drop on Twitch, and an account-bound cosmetic lands in your in-game Rewards window. First rewards: a cloth dye pack, a fireworks bundle, and a cloak.
- The account-link page and the fulfillment service are written and tested (21 automated checks on the delivery logic, including exactly-once behavior across a test-data refresh). Next: stand the services up, run a private test campaign with designated Twitch test accounts, then decide on anything public.
- Security posture checks learned the two new Twitch-link service surfaces ahead of their deployment: the credential-verify endpoint stays reachable only from our own web portal, and the public leak scan now watches for both service ports.
- The three Twitch drop reward bundles are registered in the client asset index and verified in the editor: each resolves by its offer id, is flagged account-bound, and every item reference in them loads.
- Deploy tooling finished and staged on both servers: bringing the link page and the reward service up is now a short scripted sequence, and a guard keeps a targeted deploy from ever overwriting the login server's signing certificate.
Voice
- Put the Oracle's next voice to a public vote. She speaks with five different voices across the game today, including a male one and the harsh automaton filter in her own temple. Four candidates, each speaking the same three lines, are up at the Oracle voice vote with up and down votes and a comment thread.
- Removed the old recorded greeting that played on top of the Isle of Storms Oracle's spoken lines. Every greeting there double-spoke, one voice from the original recording and one from the current voice system. She speaks each line once now. Rides the next build.
- The Oracle voice vote closed with Candidate B, the Ethereal Chamber. Her new voice is live across the whole game, one voice for all seven of her conversations, replacing five different ones including a male voice and the harsh automaton filter in her temple. Log in fresh to hear it.
- The Repurposed Automaton on the Isle of Storms says "This unit has achieved satisfaction, bzzt", and the voice was reading that out as the three separate letters b, z, t. The word has no vowel in it, so the speech engine treated it as an abbreviation and spelled it. It now comes out as one buzzing syllable.
- Fixing that turned up two more automatons that were saying nothing at all where their text shows a "bzzt": the Damaged Automaton in Despair and the six Grand Tour guides. Those buzz now too. 21 voice lines were regenerated, and because voice files come from the server rather than the client they are live already with no patch to download.
Images

- BlowKiss on a female avatar at the frame the eyelid is fully shut, before and after the fix.
Pets
- A tamed pet keeps its buffs across a zone change. The pet's health and running buffs were written to the server after the client had already left the scene it was leaving, so the write was refused and nothing was stored. A two hour pet food was spent by walking through a zone line. The save now runs while the connection is still up.
- The restore side also stopped short. A pet is set up twice while it spawns, and an early pass that arrived before the pet could be written to was counted as a success, so the later pass that would have worked was skipped. Only buffs that actually land are counted now, and the pet comes back with its remaining time carrying on from where it left off rather than restarting.
Launcher
- Repair now clears leftover partial download files out of the game folder. An interrupted download can leave a half-finished
.partfile behind, and the patcher used to skip those on purpose, so they sat in the install taking up space no matter how many times you ran Repair. Every patch now removes them, and the sweep runs before the file check rather than after, so a locked file that stops the patch no longer strands them for another run. - Repair also reclaims the large first-install staging file left over from an older build, which it never touched before because it reached the patch step by a route that skipped that cleanup. A first install still partway through downloading keeps its progress, so pressing Repair mid-install no longer risks starting the download over.
- Found why launchers sat on an old launcher version while newer ones published: the session a launcher update relaunches was skipping all further launcher update checks for its whole lifetime, and since the launcher hides rather than exits while the game runs, one session can live for days. The skip now covers only the build that session just installed, so an open launcher takes the next release on its own regular check. Launcher builds 35 and 36 went out today for Windows, Linux, and Mac, with 36 carrying the fix; a launcher stuck on an old version needs one full restart to catch up, and after that this stops happening.
Localization
- The Chinese client's Field Dressing skill no longer reads as battlefield first aid. Every string for the school now uses one hunting term, initial processing of game, across the skill tree, its stat tooltips, and the crafting strings.
User Interface
- Typing right after the game rewrites a text box no longer eats the keystroke. Sending a chat message, recalling history with the arrows, and clicking search chips all keep the cursor inside the new text.
- The skill charge bar paints its dark backing and rim again, so the yellow fill and charge ticks read against bright ground and sky.
- A container opened for the first time now lands clear of the backpack instead of covering the right end of its rows.
Onboarding
- The Isle of Storms tutorial step Lock Your Gear now finishes whichever way you lock the item. It only ever completed on a piece you were wearing at the instant the lock flipped, so a player who locked something in their backpack followed the same instruction and watched the task sit there unfinished. It accepts either now.
- Isle of Storms tasks leave the island with you. Nine task lines were cleared at the Lunar Rift and none of the First Steps lessons were among them, so those entries followed new characters to the mainland and stayed in the journal permanently. Every route off the island clears the whole list now, including /stuck.
- A new character now knows every skill their starting deck is holding. All three decks opened on a skill that was never granted, so the first combat hotbar slot came up empty and the first usable skill sat in the second slot, which is what Anais was pointing at when she asked for the first one. Thirteen skills the decks already named are now given: two usable cards per deck became six.
Audio
- Music now steps aside while you are talking to an NPC. The score played at full level over spoken dialogue and made voiced characters hard to make out. It drops when a conversation opens and comes back when it closes, relative to wherever your own Music slider sits, so turning music down still works as it did. NPCs calling out as you walk past do not duck it.
- Catchphrases you buy now belong to your account instead of to one character. Every character on the account shares the same list of phrases and can play them, put them on the bar, tag them with an emote or delete them.
- Buying a phrase one of your other characters already owns is now refused before any cotos are taken. The clip is content-addressed, so the second purchase was paying again for audio that already existed.
- Deleting a character no longer deletes the catchphrases it paid for. The account keeps them.
- The voice a character speaks in and the layout of its catchphrase bar are still per character, so an alt can sound different and arrange its own tiles over the shared list.
- A player wrote a thirty-track song cycle built on the story of the game novel, and it now ships in game as thirty collectible wax cylinders. The music is credited to the Avatar's Reliquarian Choir. Each one plays in a phonograph or jukebox and shows its song, composer and album on the tooltip.
- The album is not part of the game download. A cylinder carries a link to its track rather than the audio itself, and the song is fetched the first time somebody plays it and kept on disk after that. The thirty tracks come to 111 MB as Ogg Vorbis, down from 199 MB as the original files.
- The album is live on the CDN. All thirty tracks uploaded and verified end to end, so a cylinders first play now fetches its song and later plays start from the local copy. 111 MB total, fetched one song at a time as players actually play them.
Quests
- Edvard the Wanderer recognises that you rescued Charlotte Gray. His thanks depended on Charlotte standing beside him at the moment you spoke, so reaching him without her at your heels got the plain line, no mention of her, and none of the reward or virtue for saving her.
- Four conversation gates were reading backwards and are fixed. Each held an action verb where an expression belonged, which makes the whole line one unknown token: a required gate never opens and a prohibited one never closes. Private Garridon had one of each, so he could never say Charlotte had died and always said the opposite. The Orator in Broken Echoes Silver Mine and Mildryd in Middle Downs carried the same fault.
Operations
- Build 172 carried a game-breaking bug and was rolled back to build 171 on all three platforms. The launcher pulls a rolled-back build down the same way it patches forward, so anyone who left it open came back to 171 on its own; the change cost 39 of 937 files on Windows. The chaos server went back to the matching build at the same time, because the shard only accepts logins from the client build it was deployed against.
- Build 173 went live on chaos across Windows, Linux and Mac, replacing the rolled-back 172: the same code line on client and server, carrying the skill bar fixes and the tester-enabled free house placement. A five-way verification pass afterwards checked the patch channels, signed manifests, server pairing, database health and the exact requests a patching launcher makes; 30 of 34 checks passed and the rest were bookkeeping, now cleaned up: the build ledger is caught up through 173 in the repo, and the database migration note for house poses was corrected.
Developer tools
- The Patch Builds page is live on the dev portal, and its Set active and Rollback buttons are switched on for the first time. It lists every published build per platform, which one each channel is serving, and disk headroom.
- The same page now reads the chaos shard and says in one line whether the two agree: the shard only accepts logins from the client build it was deployed against, so a channel rolled back on its own would lock everyone out and look exactly like the server being down. It also lists the server rollback trees on the game host with the client build each one pairs with.
- Fixed a confirm dialog on the Patch Builds page that sat over the content permanently. The dialog was styled to always display, which overrode the attribute meant to hide it; it had been that way since the page was written and only showed up once the page went live.
- A chaos release failed because its Windows, Linux and Mac clients stamped themselves with different build numbers. The three builds each worked out the number by reading the live patch channel, and the Linux and Mac readers were picking up the wrong field out of it, so they landed one number ahead. The release now works the number out once and hands the same one to all three builds.
- Publishing a build number that already exists used to merge the new files into the old ones and sign the result, with nothing reporting a problem. That is now refused unless the two are the same build. Publishing also records the version it replaced, so the rollback button on the builds page offers the build that was actually just replaced.
- The builds page showed a freshly published build at a quarter of its real size: the page had scanned the folder while the upload was still streaming in, and kept that partial count. It now checks the scan against the build manifest, shows "publishing" until the two agree, and holds the flip and rollback buttons back while a build is still arriving. The rollback button also stopped offering builds that are no longer on the host.
Client
- A skill the client had no category for raised an error every frame, which stopped part of the per-frame player update from running. The categories now cover it, an unknown skill degrades instead of raising, and a new test walks every skill in the game so the next gap is caught before it ships.
- The BlowKiss emote winks partway through. On a female avatar the eyeball swung sideways at the same moment the eyelid closed, so the eye came out through the shut lid and sat on the cheek for about half a second. The eyeballs now hold still through the wink, which is what the male animation already did.
Achievements
- Collecting the cylinders advances a new achievement chain at 1, 5, 10, 20 and 30. It counts distinct songs, so duplicates of the same one do not move it, and trading a cylinder away does not take a rung back.
- Collecting all thirty cylinders now grants the Reliquarian title, the charge the choirs epilogue hands to whoever is listening. The title was added at the end of the list, so nobodys existing titles moved.