September 30, 2026
Neo Angband v1.20.0
Added
- VisibleModding-API Mods can check an item’s flags the way the game does, counting the flags its curses grant, with
objHasFlagandobjCanTakeoff. (#283) - VisibleModding-API Mod effects can raise and lower experience the way the game’s own effects do.
playerExpGain,playerExpLoseand the rest of the experience helpers are now exported, andeffectExpDeps(ctx, env)gives a handler what those calls need, so a mod can drain experience without making the loss permanent. - VisibleModding-API Mods can add item classes that Angband 4.2 doesn’t have. A
tval.jsonnames each class, and the mod’sobject_baseand objects can then use it. Objects of a new class are called by their own names and can’t be worn or used until the mod says otherwise, and they load correctly from a save even when a different set of mods numbers the class differently. - VisibleModding-API Mods can give restored monsters and flavours their old tiles, and tint a tile they share with their replacement.
restoredMonsterArtandrestoredFlavorArtjoinrestoredItemArtin the manifest, and a flavour can usedrawAsto draw another flavour’s tile. Ahuerotates the tile’s colours in Linoleum tile packs; Angband’s own tile sheets draw it unchanged. - VisibleModding-APISave-Compat A mod section can lock its choice at character creation. A section that declares
"lockedAtBirth": truekeeps the on/off state it had when the character was made, whatever the toggle says later, and the mod manager marks itnew characters only. In a save made before this change, or one with no record for a section, the section stays off unless its default is on. Before loading a character that needs a locked section from a disabled mod, the game warns the player. - VisibleModding-APISave-Compat Mods can set up a new character once, when it is created. A plugin’s hooks can include
newCharacter(state, registries), which runs after a new character is built and never when a save loads. Anything it sets, including ignore settings, is saved with that character as ordinary state. - VisibleModding-API A mod’s own item class can join the ignore menus. A
tval.jsonrecord with"ignoreMenu": "<label>"lists the class in item ignoring setup after Angband’s own categories and offers kind ignoring for its objects in thekmenu. - VisibleModding-API Restored flavour art no longer draws over another mod’s flavour when the section that adds it is off.
- VisibleModding-API Mod plugins can type their host context from Core.
ModPluginContextand the panel, network, birth, input, prompt, intent, display and event types it uses are exported from@rpgm-tools/neo-angband-core. The web host uses the same types, so a mod’s types match the objects it receives. - VisibleUI A bug button and an idea button sit in the corner of the dungeon view. Either one opens a short form and sends it on as a filled-in GitHub issue or a Discord forum post. A bug report can carry the game’s version, where you play and your mods once you tick the box, copy a screenshot or your character dump, and look for similar reports first. After an update, the game says when an issue you reported is marked fixed. The
xbeside the buttons hides them, and Subwindow setup brings them back (#326). - VisibleModding-API A controller mod can hand the keyboard back when its task ends.
ctx.controller.release(reason?)stops the controller, hides the banner and shows the reason in the message line. - VisibleModding-API Autoplayer mods can see the floor the way the player does.
knownFloorItems(x, y)lists the items the player has seen or remembers at a grid, with the description the look command would give, andinspectKnownFloorIteminspects one only while it is in view. A cell’sknownObjectCountcounts remembered piles. Saves keep what the player last saw of each remembered item. - VisibleModding-API Mods can add rows to the title screen and start a character in a profile of their own. With
ui:titlea mod adds a title row and can ask the player to pick from a short list. Withprofiles:manageit can create a profile, fresh or copied from another without its saves, choose which mods run in it, and switch to it; character creation then starts in that profile after the reload.
Changed
- VisibleUI New installs open with the dungeon view alone, as the original does, and screens that can also be panels say so. The first few times you open the inventory, equipment, monster or item list, messages, character sheet, or a monster or object recall, a note says that
+or the new+button keeps that screen open beside the map. On the first dungeon level, one line points to Subwindow setup. The notes stop once any panel is open, and a Panel tips switch in Subwindow setup turns them off. Existing installs keep their layout (#317). - VisibleUI Panels open in the same places whatever order you open them in. Until you move, resize, tab or float a panel, the game arranges the open panels from a fixed side for each, and closing one gives its room back to the rest. Once you arrange anything by hand, a new panel docks beside the dungeon view and the others stay put. A layout saved without its panel positions gets the same automatic arrangement (#317).
- VisibleUI A controller can keep a screen open beside the map too. On a pad with triggers, hold the left trigger and press the right trigger while the screen is open. The mapping screen can move this to another button (#317).
- InternalDocs The Cutting Room Floor charter defines which upstream content belongs in the mod and how restorations cite sources, preserve prices, and handle birth-locked content and art.
Fixed
- VisibleUI The game no longer stops on the crash screen the first time it converts an old pref file that holds a panel layout. The converted layout now applies once startup is far enough along to draw it (#324).
- VisibleUI Letting go of a dragged panel where it started no longer leaves the yellow drop marker over the map, and Escape now cancels a drag. Escape puts the panel, floating window or divider back where it was instead of opening the game menu. A drag also ends when the window loses focus or the game misses the mouse release (#325).
- VisibleModding-API A curse that grants STICKY now keeps its item on, as an item’s own STICKY does. You can’t take the item off, drop it, throw it, sell it or wield something in its place, and tunnelling no longer swaps it for a better digger. The game’s own curses grant no flags, so this matters only for curses a mod adds. (#283)
- VisibleSave-Compat Characters no longer go missing from the desktop game when another program is using its port. The game now loads from its own
neo-angband://gameaddress instead of a port on 127.0.0.1, so it no longer opens a network port at all. The first launch after updating copies characters, settings and installed mods from every port an older version used, and leaves the old copies where they were (#323). - VisibleModding-API Core installs from npm again. Core 1.19.0 and 1.19.1 listed mod-sdk with a range only this repository can resolve, so installing either one failed. Core now names the mod-sdk version released with it. (#318)
- VisibleModding-API A mod monster can cast a spell the same mod adds. The game no longer stops loading with “mon: invalid spell name” when a mod declares its own monster spell. (#319)
Downloads
- neo-angband-web-1.20.0.zip22 MB
- Neo.Angband-1.20.0-amd64.deb117 MB
- Neo.Angband-1.20.0-arm64-mac.dmg135 MB
- Neo.Angband-1.20.0-arm64-mac.zip135 MB
- Neo.Angband-1.20.0-portable.exe117 MB
- Neo.Angband-1.20.0-win.zip155 MB
- Neo.Angband-1.20.0-x64-mac.dmg140 MB
- Neo.Angband-1.20.0-x64-mac.zip140 MB
- Neo.Angband-1.20.0-x64.tar.gz137 MB
- Neo.Angband-1.20.0-x86_64.AppImage144 MB
- Neo.Angband.Setup.1.20.0.exe117 MB