SotA

The New Britannia Herald

Tuesday, August 25, 2026

Work Log Podcast

Episode

Shields learn to stop magic and every cape starts moving again

A very large Tuesday for the least-used skill tree in the game. Shields can now block spells, the character sheet stopped capping the block number it showed you, and a broken shield finally tells you what it has switched off. Elsewhere the cloth on every cape and cloak was untangled after an engine upgrade scrambled it, balance numbers can now be changed for the whole shard while people are playing, and a bug report that was confirmed four separate times was never a bug at all.

In this episode

  • The Shield tree gets six repairs and one new skill
  • Live balance numbers changed while the shard runs
  • Capes and cloaks move again after the engine upgrade
  • Control point waves stop being a stopwatch
  • A four-times-confirmed bug that never existed

Transcript

Good evening to thee, citizens of New Britannia. Lord British, come down with word of what thy makers were about upon Tuesday. The shield has at last learned to turn aside a spell. Every cape and cloak in the realm moves upon the wind again, after some weeks of hanging like a plank of good oak. There is now a single page from which the numbers of the whole world may be altered while thou art standing in it. And one honest drag of one ordinary item was breaking every window in thine interface, and had been for the better part of a month. We shall begin there, for it is the best story of the lot.

The report came in reading, quite reasonably, that gear could not be dragged to or from the character sheet. That was wrong in two different ways. It was not the character sheet, and it was not really gear. Almost every piece of equipment in this game can also be set down as a decoration, and any item like that lost its drag the instant your cursor crossed open ground between two windows. The icon left the slot, the world slid past underneath, and the item snapped home.

It worked perfectly on a housing lot, of course. Which is precisely where everybody tests things. We found it in the reporter's own client log. Five drag attempts, five identical errors, each recovering a moment later, which is why it presents as a dead drag rather than a broken client. While the placement labels are up, the code was asking the plot you are standing on what shape of plot it is. Off a lot, there is no plot to ask. The question had no answer, and the drag came apart in your hand. One missing check, reported and closed the same day.

Now. The Shield tree is the least loved skill tree we have, and I mean that with numbers behind it. Over the last sixty days on the live shard, out of fourteen point eight million skill casts, about eighty thousand of them were Shield skills. Twenty four players in the entire world have the Shield specialization. We went looking for why, and a fair part of the answer is that the tree has been lying to the very people who bought into it.

Start with the character sheet. Block and Parry each print a percentage, and both of them stopped dead at seventy five and sat there forever, however high you pushed the underlying stat. A character with a block modifier of one hundred and twenty was being told seventy five percent, and was really blocking eighty two point eight percent of the time. Below seventy five, every number you have ever seen was correct. Above it, the display gave up at exactly the point where a shield build starts to pay for itself. Both rows now print the chance the game actually rolls, the curve keeps climbing with each point worth a little less than the one before it, and it never quite reaches a hundred.

And while we were in there, we did a thing I have wanted for years. The block formula is now published in the game. Hover Block on your character sheet and it will tell you your block modifier, the chance that gives you, how the damage a block stops is divided between your shield and your Strength, the ceiling on that, the bonus from Ranged Defense if you have trained it, and the rule that an attack from behind cannot be blocked at all. Every block buff you can cast now says what your chance is while it lasts and what it would be without it. Players asked for exactly this in a forum thread in twenty sixteen. I am not going to stand here and pretend that is a brisk turnaround.

Then the new one. Shields block magic. There is a new Shield skill called Arcane Defense, sitting behind Stand Your Ground, and here is the part I did not know until this week. Block was never gated on a physical versus magical rule anywhere in the code. It reads a flag that a content author ticks on each individual attack, and almost no spell in the game has ever carried that flag. So a shield did nothing against a caster, and the reason was one unticked box, repeated several thousand times. Arcane Defense opens that roll to spells regardless, at a share of your blocking power that climbs with the skill. About seventy percent of it at skill one hundred, and the whole of it at two hundred. The spells that were already blockable, Fireball and Cone of Cold among them, are untouched and still block at the full rate.

Ranged Defense had a related embarrassment. It is the skill that makes your block soak more damage from things thrown at you, and it only ever recognised arrows and bolts fired from an actual bow. A troll's thrown rock is filed in our data as a hand to hand attack. A scorpion's spit is filed as poison. So a boulder the size of your torso would come sailing in, and the skill would look straight at it and see nothing worth blocking. It now reads how the attack travels rather than what somebody typed into a field years ago. Rocks, spit and sprays all count, from any attacker at all. Spells still do not, which is what Arcane Defense is for.

And one that has been costing people fights without ever saying so. A shield at zero durability switched off all six Shield passives without a word, while the shield-only halves of four other buffs carried on paying out as though the shield were fine, because three separate parts of the game disagreed about what having a shield actually means. They agree now. A broken shield costs you those four as well, which is the honest answer, and the warning row in the top right corner has gained an icon that names every skill the break has suspended. You can read the bill.

Second big item, and this one is for the whole shard rather than one tree. Until Tuesday morning, a balance number in this game was a constant baked into the code. Changing the rate at which Battle Fatigue drains meant building the server, patching the client, and waiting for a deploy window. Now there is a page. You pick the number, you type a new value, you save, and every game server picks it up within a minute and hands it to every scene and every client standing in one. No build. No patch. No restart. The page shows which servers have taken which version, and it keeps a note against every save, so there is a record of who moved what and why.

It started that morning with eight knobs, all of them Vigor. By lunchtime it had fifty, in eight groups. Control point escalation. Bard inspiration. Town sieges. Experience. World celebrations. The potion potency floor. And fourteen numbers that govern how combat feels on your machine, regeneration in and out of combat, target distance, the combo multipliers. A save can carry an expiry now, so a weekend event puts the ordinary numbers back by itself on Monday morning without anybody having to remember. Every default in that catalogue is the number the code already carried, so nothing changed until somebody chose to save.

By evening it had learned a harder trick. A scene is a player versus player scene because somebody authored it that way and baked it into a build. That is now a row on the same page. Pick a scene, set it on or off, save. Turning it off reaches everyone standing in that scene inside a minute, because that change can only make people safer. Turning it on waits until a player next walks through a loading screen into the place, so nobody goes from safe to attackable while standing still in the middle of a fight. There is a nice piece of restraint in how it was built, too. There are eight hundred and sixty eight scenes, and every client reads that settings bundle on every zone change, so one flag per scene would have put tens of kilobytes of dead weight into every room in the world. Only the scenes you have actually overridden are stored and carried. Ten of them come to about three hundred bytes.

And then the punchline arrived at seven in the evening. Somebody turned the experience multiplier up, watched nothing happen, and reported that the whole live tunables system was broken. The delivery half was in perfect health the entire time. The multiplier had shipped wired into the eight crafting and farming awards, and had missed the combat award completely. So a shard set to five times experience was paying five times over for a crafted sword, and the ordinary rate for the dragon. Kill experience is the one number players actually watch, so from the outside the knob read as doing precisely nothing. It reaches adventuring experience now.

Third. Let us talk about capes, because this is my favourite piece of detective work of the week. Since the engine upgrade, every cape, cloak and robe on the new client has hung off your shoulders like a plank. Perfectly rigid. The same garments on the live client behaved beautifully, which made it maddening.

Here is how cloth works. The game treats a garment as a grid of little particles, and it stores a pair of numbers for each one saying how far that particle may swing and how far it may drift from where it started. That list is kept in particle order, and particle order follows the order of the vertices in the mesh. Now, the engine upgrade switched on a vertex reordering optimisation for every cloth garment we own. New order. The list of numbers stayed exactly as it was, and landed on entirely the wrong particles.

The consequence is worse than random. Between half and three quarters of every garment is deliberately pinned, because that is the part lying against your shoulders and your back and it must not flap. Scramble the order and those pins scatter evenly across the whole garment. Including the hem. So every cape in the game was nailed to the air at a few hundred points, and the reason they did not move is that they could not.

The fix took two halves. Vertex reordering is off now for the eighty two garment meshes that need it off, and the constraint lists on one hundred and two garments were re-sorted back onto the particles they were painted for, by exact position match, using a throwaway copy of the old project as the ground truth for where every value belonged. Every particle of all one hundred and eighty four cloth pieces we could audit matched exactly. The painted gradient that runs from collar down to hem now measures a correlation of point nine three to point nine nine on the capes, where the scrambled state measured near zero. And in a settle test, a cape drops thirty eight centimetres where it previously managed three. Three more cloth defects went with it. Most male cape items listed no collision bones at all, so an equipped cape sank straight through the wearer's legs, and the cloth solver had been running a single step per physics tick and now runs one hundred and twenty a second.

Fourth. Control points, and a wave counter that was measuring the wrong thing entirely. The escalating fight was built so that the waves get harder the longer you hold the flag. Except that every ceiling in the escalation binds early. Creature speed maxes out at wave thirty two, bodies per wave at thirty six, size at forty, levels at fifty six. Past wave fifty six the fight simply stopped getting harder, which is the very problem this feature was built to remove, relocated a little further down the road.

Worse, the wave number was a stopwatch wearing a costume. Waves advanced on a timer that never once asked whether anything had died. Across the first thirteen recorded runs, the wave a party reached and the number of minutes they stood there correlate at zero point nine nine nine eight nine. Which is a very polite way of saying they were the same measurement. A party of two rode that to wave one hundred and two at Eastreach Gap, in sixty four minutes. Wave one hundred and two meant "held the flag for an hour."

From wave eight onward, the next wave now arrives when the battlefield is empty, with a backstop so a group that has stalled still sees the fight move along. Waves one through seven keep their old clock exactly. There is a good detail in the check. It walks everything that has been spawned rather than only the current wave, because a straggler left over from three waves ago is still very much a creature standing on your battlefield. And the leaderboards are finally inside the game window instead of only on the web page. Two boards. The deepest wave each player has reached, and a run by run list showing the party that held it.

Fifth, and this one is a lesson rather than a feature. There is a bug report against the Light Armor skill Evasion. It was filed, and then independently re-confirmed on three separate later passes. Four times, four readings, all agreeing. The report says that a divisor in the formula catches only part of the sum, so dexterity is being added raw and the numbers are wildly out. It quotes what the skill ought to give instead. It is a beautifully argued report. It is also completely wrong, and so was every one of the confirmations.

Our combat formula evaluator has no operator precedence. None at all. It drains each pending operation as it reaches the next one. In this engine, two plus three times four evaluates to twenty. So the missing parenthesis that report kept rediscovering is already there in effect, and the whole sum was being divided all along. The real curve gives ten and a half damage avoidance where the report quotes thirty nine, and a level of skill is worth five points of dexterity rather than the other way around. Nobody was ever getting the numbers in that report, including the people who filed it.

So rather than close it a fifth time, we went hunting for every other place a reader could make the same mistake. Every authored expression in the game was pulled out, thirty one thousand six hundred and forty nine of them, reduced to one thousand one hundred and forty six distinct formulas, and each one evaluated twice. Once through the real engine, and once the way ordinary algebra would read it. Forty one disagree, across thirty five skills. None of them is a bug. They are simply the forty one places where the next false bug report is going to come from, so they are written down now with the grouping the engine really applies, and the detector is checked in so it can be run again the next time somebody writes a formula.

It found two things worth saying out loud. Chaotic Step's teleport range inverts sooner than its card claims, because attunement scales the whole range rather than only its skill term. And Torpor's self damage avoidance reads as fifty plus half your skill, and computes as half of fifty plus your skill, which comes out at seventy five rather than a hundred. Every sibling skill writes that shape explicitly, so it looks like a slip of the pen. We left it alone on purpose. Changing it moves a number that has already shipped, and that is a balance decision rather than a typo fix, and making that call in the dark is the exact mistake this whole audit was about. Light Armor also got its first proper test suite, twenty four cases pinning every amount, duration and cooldown in the school, and two of those tests assert the precedence rule so nobody derives that bug a fifth time.

Two other Light Armor changes rode along. A rooted character can no longer dodge at all. The old rule halved your dodge chance while rooted, and the honest reading is that a dodge is a step out of the attack's path and a root is the loss of that step, which is why stun and knockdown have always shut dodge off completely. The check covers unbreakable roots now as well, which had been leaving dodge at the full rate, so the harder crowd control was somehow the weaker one. Break the root with Escape or Knight's Grace and your dodge comes back. And Light Armor Specialization makes Evasion stronger instead of longer. The buff already ran seventy seconds against a ten second cooldown, so the extra duration the specialization bought was time nobody could spend. Which is some of the reason only fifty two characters in the history of this game have grandmastered it.

Now, some smaller things that will improve somebody's evening. Your windows behave better. A heads up display window you left open comes back the next time you log in, even if you crossed a zone line or went out to character select, because the game tidying your screen at a scene change no longer counts as you closing it. The four arrow handle on the chat window moves the window from any part of it, where most of that handle used to sit on the resize corner. And yesterday's fix for status frames grabbing the decoration behind them had taken away the right click menus and the wheel zoom on those same frames, which is put back, and then narrowed once more on review when the first restore opened the gate a step wider than it needed.

Things are easier to find. Shopkeeper and player vendor windows now carry a type dropdown and a search box on each tab, and the box understands the same wording your backpack search does. That was requested by Rinaldi, who has an extraordinary number of fixes in this episode. Your backpack and bank stop insisting that every loose item lives inside a container called "bag" and name the actual place instead. And skill trainers now explain on hover why they will not teach you something, whether it is not taught here, your prerequisites, or your purse.

Here is a small one I like very much. Every cell door in The Clink had stopped synchronising, so two players standing in the same prison saw different doors open and close. When a scene loads, objects that need to share state register themselves as they wake up, and they were given exactly two frames to do it. That is plenty for a scene whose objects all wake together, and nothing like enough for one that brings its cellblocks up in stages. Twelve doors were still on their way when the window shut, and were written off for the rest of the session. The wait now stretches for as long as something can still arrive, and stops at two seconds so a thing that is truly missing still gets reported.

Two more. A pet that will not come out in a shardfall now tells you why, with both numbers on screen. Summoning counts as an adventuring skill, so a scene that caps skills holds it down along with everything else, and a high tier pet asks for more than the cap allows. The refusal is deliberate and it stays. What changed is that it used to happen in silence, with the pet simply absent on arrival. That was reported by inuphet, who narrowed it down by comparing three different shardfall scenes before filing it. And in the same spirit, every scene that caps your level or your skills now says so on the way in, taken from the numbers it actually enforces. Opalis Ruins holds you to level eighty, the strictest cap in the game, and had never once mentioned it.

Right, the sweep. Sixty two tracker issues closed on Tuesday, forty three of them bugs. Two decorations that refused to be set down anywhere: a tip jar whose model hung about two feet below where the game was measuring it, so it kept looking for a floor underneath the floor, and a set of pumpkin trophies whose collision box started fifteen millimetres below their own base and therefore read as buried on any ground with a slope to it.

A great deal of the day was things making noise, or failing to. The frost giant in Jotungrund made no sound whatsoever, because its audio was asking for a bone named after the troll it borrowed its rig from. The great doors at Castle Brittany and the secret sliding bookcase inside had both been opening in complete silence. Three dungeon traps were taking your health with no effect and no sound at all, which is an unsporting way to die. And the shrine caretakers have been reading the city of Etceter aloud as the abbreviation "et cetera", which they will stop doing at the next voice recording pass. Elsewhere, the resurrection countdown numbers gained a dark halo so they are readable on snow, gloves worn under the Cabalist Robe stopped drawing two pairs of hands one inside the other, sheep stopped paying out fabric scraps forever, a floating book in Lost Vale stopped functioning as a wall, and the texture memory ceiling went back where it was on every card.

And from the overnight forum sweep, four player suggestions went onto the tracker, among them per loadout toggles for hiding pieces of your gear, asked for by Wishdragon, by necronut, and by others in the same thread. We do read those threads. They become work more often than you might think.

That is Tuesday, and it was an enormous one. Sixty two issues closed, a skill tree that had been misinforming its own players for years, and a page from which we can tune the world without asking anybody to download a thing. What I am most looking forward to is standing on a cliff somewhere in Novia in a very large cloak, doing absolutely nothing else for several minutes.

And your groaner for the evening, which I have been saving all show. Do you know why the capes took this whole business so badly? For weeks, the poor things had nothing to fall back on. Good night, and mind the wolves.