Skip to content

Known limits

Ishiaki edited this page Oct 15, 2026 · 23 revisions

The README lists what the editor can't do in a few lines. This is the long version: what it can't do yet, why, and how it learned what it can.

Online heroes

Online heroes are stored on the game's servers, so no save editor can change them. When you create a hero, the game makes you pick online or offline for good; this editor works with offline heroes.

Item IDs come from real saves

A save stores each item under an internal name, which often isn't the name you see: the Riftslasher is SW.Item.CurvedLongsword, the Sculk Digger set is CaveCrawler and the Amethyst Lens is SW.Item.Talisman.RangedBuff.

The game's list of those names is in its encrypted content files, and the editor doesn't break that encryption, so it knows the names players have reported from their saves (all 180 items by now) and would work any other out from the in-game name. (The equipment slots are different: the game's readable script cache names all 12, so equipping is exact.)

In testing, the game removed items whose name was a wrong guess and kept the rest of the hero. Items whose internal name has been seen in a real save are marked Confirmed; the rest are Unconfirmed, and if a guess is wrong the game may drop the item. The editor asks before adding an unconfirmed item, and Restore… undoes it.

Items you find in the game become confirmed automatically, and so does an item you added under a guess once the game has kept it. An ID only counts as seen when the game itself vouches for it: it's in the game's collections, in the Village Merchant's stock, or on an item the game has shown you. What the editor wrote doesn't count, or its own guesses would come back looking confirmed.

To help everyone else, press Share item IDs… on the Help page (or run python -m dungeons2_editor ids): it lists the IDs in your saves that the editor doesn't know yet and opens a GitHub issue with those IDs and what the game saved with those items (their effects, and any mark or field the editor has never seen on an item). Under them, unless you untick it, goes what your saves show of the game's world that the editor doesn't know yet. Nothing else from your save. See Teach the editor.

A Unique has an ID of its own

The Burning Blade, the Unique Sword, is SW.Item.Sword_Unique1, and the Oracle Tights are SW.Item.MysticLeggings_Unique. All 116 have now been seen in real saves (the last one, the Packleader Muzzle, in a player's collections), and every one is its base item's ID with _Unique1 (weapons) or _Unique (armor) on the end. So adding a Unique, or making an item you own Unique, gives it the ID the game uses.

A Unique's own effect: all 116

In the game a Unique has an effect of its own, the one its card describes (the Prime Enchanter's Gauntlets' waves of lightning and ice, say). The game saves it on the item, apart from the effects it rolls, and the editor writes it exactly as a real save holds it: for the 97 Uniques that players' lists showed it on, and for 19 more that the game's files describe in the very same words as one of those. The Slaymore and the Humbler Greaves both deal 50% more damage to secondary targets, and wherever two such Uniques have both been seen, they are saved alike: later lists held eight Uniques the editor had worked out that way, each saved exactly as it wrote them.

Rebuilt with the editor, all 180 items on three players' lists came out the same as the game's own, key for key. And it works in the game: the Prime Enchanter's Gauntlets, added with the editor, came with their effect in play.

The editor works none of these out by rule: a few are enchantments under another name, and the game spells two of them its own way. The last one nobody had sent, the Packleader Paws, came with a player's list in 1.15.1: Bowyer at a tier of its own, a 50% chance of an extra arrow.

A Unique made by an older version is without its own effect too; its card has a button, Add its own effect. Share item IDs… lists the own effect of any Unique of yours that the editor has none for, or would write differently. (One it writes the same way proves nothing, since the Unique may be one you made with the editor.)

Talismans

A talisman is added with what it does. A talisman has no rarity or power. A save holds what it does at each of its three levels instead: for the Sigil of Beeswax that's SW.Effect.HealthBoost at 1.2, 1.25 and 1.35, and for a companion's talisman like the Tasty Bone, a tag at each level. Players have shared this for all 24 talismans, so the editor adds each the way the game saves it. (One oddity it keeps: the game spells the Wonderful Wheat's ID with a small "sw", sw.Item.Talisman.Llama.)

A talisman added by a version before 1.7.1, or by a later one that didn't know it yet, has no effect saved and may do nothing in the game; the editor points those out, and you can delete them and add them again.

A talisman's level is set by the editor, except for a companion's. A real save showed how the game saves a level-up: the level goes up by one, the talisman's effect becomes the next level's (the item carries every level's effect with it), and its XP carries on from where it was. Level up does exactly that. Done with the editor to three talismans in the save from before, it gave the very entries the game had written, key for key. Level 3 follows the same pattern, but no save with a level-3 talisman has been seen yet.

A companion's talisman (the Tasty Bone and the like) levels up by tags, which hasn't been seen either: for those, Ready to level up puts it one XP short of the next level (18,480 XP for level 2), and the next XP you earn with it equipped does the rest.

Enchantment books

Saved like the game's. The developer's own save shows how the game saves a book it has just handed over: seven of them, alike in everything but the ID. A book the editor adds comes out as that very entry, key for key, whatever item it borrows the layout from. A book has no rarity or power, and a hero has one of each, so there's nothing on one to change: you add it or delete it.

The Enchantsmith takes them. Checked in the game: the developer added 17 books with the editor, the game kept every one through its own saves, and the Enchantsmith offered Fire Aspect and Poison Fog on a melee weapon, two enchantments the hero had no book for before. So the Enchantsmith goes by the books in your inventory, as the game's own script names suggest (its GetAllOwnedEnchantmentBooks hands back inventory entries), and a book stays there after you've used it.

Collections and achievements. When the game hands you a book it also files it in its collections and counts it towards an achievement. The editor leaves both alone, as it does for every item, and the game didn't add the editor's books to either afterwards, so a book added here counts for neither.

Names. The editor knows all 32 of the game's books (MetaBot lists 34 enchantments, two of them built into Uniques), each by its save ID and by what the game calls it. The last five went by their IDs until a player who has them put names to four: the book a save calls Multi Potion is Bottomless Brew, Shadow Strike is Shadowcloak, Guarding Strike is Shielding Smite and Soul Aspect is Soul Blast. Each is borne out another way: Multi Potion, for one, is saved as 3 at tier III on a chest piece, and Bottomless Brew is the chestplate enchantment that gives 3 more potions there. The fifth, Burst Bowstring, is Tumbleshot by what was left: the last book without a name and the last enchantment without a book. If the game shows one of them under another name, open an issue and say so.

Four names were settled in the game itself: the enchantments a save calls Blowback, Borealis, Channeling and Lingering Power, put on plain items with the editor, show there as Crash Landing, Ender Mines, Lightning Surge and Power Amplifier, and the one saved as Thundering is Thundering. The one saved as Soul Fire Aspect shows as Soul Blast; no book has that ID, and its book is the one a save calls Soul Aspect.

Effects and enchantments: only the ones seen in a save

The game keeps its list of effects in its encrypted files, so the editor learns how each one is saved from real saves: 60 gear effects and 30 enchantments so far, plus whatever is on your own items.

The enchantments, by tier:

  • every tier: Ancient Alchemy
  • tiers I and III: Healing Smite, Piercing and Health Synergy
  • tiers II and III: Ender Quiver and Somersault
  • tier III: Chain Reaction, Thundering, Fire Aspect, Poison Fog, Gravity Pulse, Springload, Swirling, Barrier Brew, Artifact Amplifier, Cow Stampede, Crash Landing, Dynamo, Ender Mines, Lightning Surge, Power Amplifier, Ricochet, Shockwave, Soul Blast, Tempo Theft, Bottomless Brew, Critical Quiver, Buddy Brew, Frost Crescent and Tumbleshot

The editor knows what the game calls all 60 effects, and the game's own numbers for them are published (MetaBot's table), so it also offers the one tier nobody has sent yet (Prickly I, the last of the 180); it marks it as not seen and asks before adding it.

An enchantment's saved strength isn't the number the game shows, so each tier of each enchantment has to be seen once: enchant one item with it in the game and the editor can put it on any other, and Share item IDs… sends it on for everyone. For some enchantments even that number isn't fixed: two players' saves hold Power Amplifier at tier III with two different numbers, and the editor writes the first it saw. Thundering at tier III has been saved with two numbers as well, 0.264703 and 0.5; there the editor writes 0.5, which is also the game's published number for the tier.

The effects the game rolls and the enchantment are what you can change. Nobody has tried every effect on every kind of item, so check the result in the game.

Soulstorm Enhanced

This used to be on the list of things the editor couldn't do. It can now: Change effects… has a tick box for it.

In the game, gear from a Soul Storm's reward chest shows the Soulstorm Enhanced tag and carries one effect more than its rarity usually gets. A save holds the tag as a mark on the item, SW.Item.Property.StorminatorReward. A player's list showed it: a Special Clobberer with that mark and three rolled effects, where a Special gets two. It was then checked in the game: a copy of that Clobberer made with the editor shows Soulstorm Enhanced there, and the game kept the mark through its own saves.

The tick box puts on the mark and nothing else, so add the extra effect yourself, in the same window. It has been seen on weapons, a Special and a Unique; the editor offers it for armor and artifacts as well, where no save has shown it yet.

The world is learned from saves too

The game's quests, doors, minecart stations and regions are in its encrypted files, so the editor keeps a list of the world the way it keeps one of items: from saves. It started with what the developer's own hero had seen, early in the story. Players' lists have since taken it to 44 quests with their 926 steps, 251 doors, 27 minecart stations and 26 regions.

A hero that has been somewhere else shows more, so Share item IDs… adds, under the items, what your saves show of the world that the list doesn't have: each new quest with its steps and how they stand, each new door with its place, new minecart stations, regions (with the save's picture of the fog over one that's new, so the editor can work out how it lies), cutscenes, areas, achievements and puzzle pieces such as a cleared roadblock. If you've made play recordings it adds where they saw chests opened and where stations and cutscenes turned up.

All of it is in the game's own names and numbers: no hero's ID or name, nothing from your inventory beyond the items' part, nothing about when you played. You see every line before anything is sent, and a tick box under the list leaves the world out.

This is what the editor works from when it changes how far a hero has got: a quest your hero hasn't met can only be added if another hero's save has listed its steps. tools/build_world_list.py puts a list someone sent into the editor's own.

The play recorder and the world map

They see what the game saves, and nothing else. The recorder reads your save files each time the game writes them. It doesn't read the game's memory or its screen, so neither can tell you about a chest or a secret you haven't touched: the game writes those to a save only once you have, and where they are is in its encrypted files.

What they can say is what a save gives away:

  • The map is the save's own picture of the fog over each region, a square of it being 32 metres of ground, and a door's position is the save's own. How the picture lies on the world is measured from the doors, to about a third of a square.
  • A minecart station, a cutscene or a chest is placed by the ground whose fog had just cleared when it turned up: around there, within a few squares, or in a place you went into from there.
  • Chests are counted by the game's own count of chests opened; a save doesn't say which chest it was.
  • What the game calls an area and a minecart station, and how many dungeon and rift spots an area has, come from MetaBot's map. What it calls a quest, and the words it shows for a step, come from the game's own quest text (see below). The game opens only a few of those spots at a time, so the list of what you may have missed says how many you've found, not that the rest are waiting.
  • The game has more minecart stations than the nineteen that map marks: saves have shown eight it doesn't (in the Carapace, the meadows and Frozen Highlands). So the count says "of at least", and nothing readable gives the game's total.

A recording holds every version of your hero save the game wrote while it ran, so treat the recordings folder like the backups folder: it's yours, and not for posting whole. What can be sent is the copy Share this recording… shows: see Teach the editor.

Story progress

Menu → World → Story progress… changes whole quests, the Every minecart station preset adds stations, and in the World map window Discover the whole map lifts the fog, Open the shortcuts moves the rocks that block a way round and Open the key gates opens the gates a key opens. All of them write only what a save has been seen to hold.

  • A finished quest has every step done. That holds for all 26 finished quests in the saves the editor has been shown, from five heroes, so that is what Finish it writes. Some finished steps carry a number: a step to interact with something carries 1 (153 of the 155 in those saves, and the two that don't never do), and a step to defeat enemies carries how many. The editor writes the 1, and a defeat step's number: saves had shown eighteen of the thirty-two, and the other fourteen came with the game's own quest tables (see below), which give the same eighteen.
  • The whole map is the map the editor knows. Discover the whole map clears every region a save has shown, 26 so far, each where and as big as players' saves have it. A region nobody's save has shown yet stays as it is, and so do doors, minecart stations and chests: the button lifts fog and finds nothing.
  • A quest moves on one step at a time, by the game's own order. A save lists a quest's steps flat. Which follows which is in the game's quest tables: some steps are groups, whose members come one after the other, all at once, or as a choice. Next step goes by that, and by rules that were checked against play recordings: replayed from the earlier of two saves, the editor comes to the later one all 126 times the game itself began a quest, moved one on or finished one. One quest has a choice between steps, and no save has shown one under way: there Next step changes nothing and says so, and Finish it finishes the quest whole.
  • What the game gives for a quest isn't added. Items, XP and achievements are the game's to give, when it finishes a quest itself.
  • The game opens what follows. When the game finishes a quest it lists the quests that open next: the ones that wait for it. The developer's play recordings caught that six times, and Finish it lists the same ones: replayed against the recordings, the editor's result is the game's own. For the other quests it goes by the game's own quest tables, which name the quest each one waits for and agree with all six. A quest that starts out unavailable (the merchant's) is left to the game, which opens it some other way.
  • Checked in the game (1.1.2.0): with The Missing Note Blocks finished in the editor, the game loaded the hero and opened the four quests that follow by itself, Wading Rainy Plains as the active main quest and three more as available. It gave no item, XP or achievement for the finished quest, and the story played on from there.
  • Checked in the game again (1.1.2.0), with all 44 quests finished by Finish the whole game… and the whole map discovered: the game loaded the hero, changed nothing in its quests, kept every picture of the fog, the nineteen added ones too, and showed the whole map.
  • Next step, checked in the game (1.1.2.0): The Cleric's Apprentice, started over and moved on three steps with Next step, loaded as it was saved, active on its fourth step with the three before it done, and the game kept it so through its own saves.
  • Nine quests come back. The game lets a hero do some quests again: one golem to rescue, The Trembling Golem in Howling Woods, and the eight boss fights (the quests whose names end in BR). Once such a quest is finished the game offers it once more, so it comes back on the game's map as a new side quest; with everything finished, four were marked there. Players say the same of ones they finished by playing, and other heroes' saves hold them as finished exactly as the editor writes them, so nothing in a save can be changed to clear them. (Version 1.16.1 said it was the four golem quests. The other three golems are rescued once.)
  • The game's own quest tables. A player read the game's quest files out of the game and sent them (issue 40). They tell of the same 44 quests as players' saves, with every quest's steps in the very order a save lists them and every number a save had shown, which is how they were checked. From them the editor takes what no save had shown: the last fourteen defeat numbers, the quest each quest waits for, and which quests can be done again. The tables themselves and the working names in them are not in the editor. The same player later sent the game's quest text (issue 41): from it the editor takes the game's names for 42 of the 44 quests (the text marks one as outdated and has none for one boss fight) and the words it shows for 502 of the 926 steps; the quests' long descriptions in it are left out.
  • Shortcuts and key gates are the overworld's. A save lists each rock, bridge, gate, lock and key that has changed, with the state it was in and the state it's in. The overworld's are named the same in every player's save, so the editor can write the ones players' saves have shown: 13 shortcuts and 11 key gates so far. A dungeon's are named after where that dungeon was put, and are left alone.
  • A gate's lock and key go with it, where the editor can tell whose they are. Opened alone, a gate stands open in the game with its keyhole and its key still there (checked in the game). So the editor also marks the lock and the key, for a lock that stands in the same piece of the map as a gate it knows, or that a play recording saw change together with one, and for a key that was put there with such a lock. A lock or a key it can't tie to a gate stays as it is: a lock marked as used beside a gate that isn't open would leave that gate shut for good.
  • Where a rock or a gate is, only a recording tells. A save gives a place for doors and nothing else. A rock, a gate or a chest is on the map where a play recording saw it change, by the fog that lifted in the same save. So a hero that opens them by playing, with the recorder on and a map not yet discovered, teaches the editor where they are; one the editor opened them for doesn't.
  • A recording teaches the editor what follows. If you finish a quest in the game with the play recorder on, the recording shows what the game opened, and Share item IDs… tells it with the rest.
  • What a step is about is the editor's reading. E is a place to reach, K enemies to defeat, I something to interact with, read off the step's name and the names of the game's own goals. The game keeps the words in its own files.
  • Where the hero starts sets two things: the minecart station the save says the hero was last at, and the area it's in. A save keeps no other position. Checked in the game: a hero saved in Howling Woods and set to the Frozen Fortress was standing in Frozen Highlands when the game loaded it.

Soul Storms: the game's timetable, as it was sent

The Soul Storms window works out every storm from the game's own timetable: a storm every 40 minutes that lasts 20, in seven areas in turn, counted from the first moment of 2026 (UTC). A player read it out of the game's files (issue 41), and the times it gives were checked in the game. The game gets that timetable from its servers, though, so the game's makers can change it without an update to the game. The editor keeps a copy and never fetches it, so if the game shows a storm somewhere the window doesn't, its copy is out of date: say so in an issue.

The Sift's three areas go by the names the game's quest text gives them: Singer's Meadow, Humbler Huskland and Lullaby Hills (Meadow A1, Carapace A1 and Meadow A2 in a save). Each quest's own table names the area it belongs to, and the quests there say where they are.

Best for is a recommendation, not a measurement

Which effects an item can get is the game's rule: it rolls them from the pool of the item's slot (any weapon, any artifact, all gear) and from one pool for each archetype the item carries (a Greatbow is Fighter and Ranger gear). MetaBot lists every item's archetypes and every effect's pools, and players' lists bear it out: of the 342 effects the game rolled on the items in them, 338 are in the pool this predicts, and the other four are on items their owner had changed with the editor. All nine effects on the next drops in the developer's own game were in their item's pool too.

Which of an item's effects serve a goal best is the editor's own judgement, from what the game says each effect does: a bonus that always applies comes before one that needs a critical hit or a charged shot, and that before one that needs the right enemy or moment. Nobody has measured one effect against another.

A pick is at the best tier a real save has shown, it is never the effect a Unique already comes with, and an effect that boosts one element's attacks is only picked when your hero has an artifact of that element equipped. No effect on gear gives XP: The Eye of Experience talisman does (Presets, Most XP).

You can still add any effect to any item by hand; the window says when the game wouldn't roll it there. The game keeps such an effect (The Close Ranger wore a Ranger's Marksman through eleven of the game's own saves); whether it does anything there hasn't been tested.

More in Effects and Best for.

Steam support is new

Players of the Steam version wrote it and tested it on a real offline hero (on Linux with Proton): loading, editing, saving and restoring. The developer plays the Xbox app version, so try a small change first and report anything odd.

If your Steam saves are the Unreal Engine binary kind (they start with GVAS) instead of JSON, they show up as read-only. Steam Cloud, if on, uploads the edited file when the game closes.

The Mac is newer still

The editor finds saves in CrossOver's and Whisky's bottles and can tell when the game is running there. The tests of everything but the window pass on GitHub's Macs; the window's own tests can't run there yet (the window comes up, but the tests wait for Tk to go quiet and on a Mac it doesn't), and nobody has yet told the developer how it goes on a real one.

Try a small change first, and say how it went. If your saves are somewhere else, Menu → Open a save folder… takes any SaveGames folder. See Linux and Mac.

If you're asked which save to keep

After an edit, the game, the Xbox app or Steam may ask whether to keep the cloud's save or this PC's. Keep this PC's: that's the one with your changes.

Very high power may be undone

In testing, a Unique Sword, a Heavy Crossbow at power 10 and level 10 all stuck, and a hero set to level 100 has kept it since (the game went on to drop gear at power 150 for it). But in an earlier save with level 100 and twelve items at power 135, the game put the level back to 1 and removed the items. Most of those twelve had guessed IDs, which now looks like the likelier cause; stay close to what the game gives at your level to be safe.

Where some numbers come from

Item power caps and some other numbers come from community datamines, not from the game's own tables.

Clone this wiki locally