Neverwinter Nights: Enhanced Edition - Julius Borisov
Looking for a new adventure?

Developers at & Silverstring Media & Phantom Compass just announced a new module for Neverwinter Nights: Enhanced Edition.

The Dark Dreams of Furiae DLC is coming soon to Steam, GOG and the Beamdog Store.

📝 Wishlist on Steam today!

Features

  • 10 hours of brand new gameplay for Neverwinter Nights: Enhanced Edition
  • Solo and co-op play
  • Original Music Score
  • Takes characters from level 5 to 8
  • Time is of the essence: day/night cycle marches on; your choices bring new events
  • Daily news sheet adapts to your decisions and gives adventure clues
  • Based on the Planescape D&D campaign setting
  • Events coincide with official D&D tabletop campaign, Baldur's Gate: Descent into Avernus

STORY

Set in the planar city of Furiae on the edge of hell, Dark Dreams of Furiae coincides directly with the official Dungeons & Dragons tabletop campaign, Baldur's Gate: Descent into Avernus!

🔥Dark Dreams of Furiae: A City on the Edge of Hell🔥

In the fallen city of Furiae, ruled by devils and despots, a quiet war wages for the hearts and minds of the people. Into this chaos, a new arcane substance is smuggled: worldwine. Worldwine is deadly to devils, and turns mortals into dream-addled fanatics.

Fight to save a damned city in this planar mystery adventure…
Neverwinter Nights: Enhanced Edition - niv
Hello friends,

Today we're shipping a hefty new patch for Neverwinter Nights: Enhanced Edition on Windows, macOS and Linux!

Huge thanks goes out to our heroic community members who helped test the many features and fixes in previous development patches over the last several months.

Read on for details!

Patch Details
  • Patch 1.80 (Version 8193.9)
  • Contains cumulative features / fixes since Patch 1.79 (version 8193.5)
  • For platforms Windows, macOS & Linux, available from Steam, GOG and the Beamdog Store.

New Features

Customise weapons-related feats in baseitems.2da
Weapons-related feats (Focus, Epic Focus, Spec, Epic Spec, Improved Crit, Overwhelming Crit, Devastating Crit, Weapon of Choice) can now be customised on a per-baseitem case.

Please refer to baseitems.2da for the new columns: WeaponFocusFeat EpicWeaponFocusFeat WeaponSpecializationFeat EpicWeaponSpecializationFeat WeaponImprovedCriticalFeat EpicWeaponOverwhelmingCriticalFeat EpicWeaponDevastatingCriticalFeat WeaponOfChoiceFeat

Custom weapon visual effects
Weapons can now have custom visual effects (in addition to the stock fire, ice, electricity, etc.)

Please refer to the new file iprp_visualfx.2da for details.

Custom spellcaster classes
We've added (somewhat partial) support for custom spellcaster classes by "unhardcoding" a lot of the builtin constants and references.

Please refer to classes.2da for the new columns: MemorizesSpells SpellbookRestricted PickDomains PickSchool LearnScroll Arcane ASF SpellcastingAbil SpellTableColumn CLMultiplier MinCastingLevel MinAssociateLevel CanCastSpontaneously

Note that not all combinations are valid. We recommend cloning one of the existing caster classes and then start customising from there. When adding spellcasting to new classes, remember to also update existing columns.

There is also a new ruleset entry: COMPANION_LEVELS_STACK, defaulting to 0.

Level of Detail
You can now specify LODs via a new file type ".lod". When the game loads the model mymodel.mdl, it will look up mymodel.lod. Inside that file, add the following lines:

mymodel_0 40 mymodel_1 80.5 mymodel_2

The game supports LOD files with up to three levels, as shown above. You may omit the last entry. The first line is the high-resolution model; the other two are meant to be lower-resolution model files, that will be dynamically swapped out as the camera reaches the given distance.

Please note that LODs are highly dependent on the screen resolution of the client. The actual mechanisms here need to still be figured out; but for now, we'd suggest choosing LOD distances as if the user had a 1080p screen. To support other resolutions, there is a configuration slider in the debug settings (Ctrl-Shift-F12, select "Config", key: "graphics.lod.scale-factor") that users can influence LOD distances with.

Animation Slots
The game now supports 50 more custom animation slots (LOOPING_CUSTOM21 -> 70).

Script call to swap out textures on the fly
A new script call was added:

// Makes oPC load texture sNewName instead of sOldName. // If oPC is OBJECT_INVALID, it will apply the override to all active players // Setting sNewName to "" will clear the override and revert to original. void SetTextureOverride(string sOldName, string sNewName = "", object oPC = OBJECT_INVALID);

Changes made through this call will appear immediately on clients.

NWSync
When downloading something via NWSync, disk writes now happen asynchronously while more content is downloaded. This should minimise occurrences of "Waiting On Storage". If this is giving you grief, you can turn it off in settings via the key "nwsync.transfer.flush.async".

The NWSync Downloader UI was swapped out with a new version, which is now rendered in Nuklear. It has a fancy graph and a pause button.

Finally, the Storage Manager (Options -> NWSync) now has two tabs: Servers, and Modules. Server manifests (i.e. when joining a PW that offers files) show up in the Server tab.

The Modules tab will show all singleplayer/offline modules you have downloaded via NWSync. To facilitate this, the Storage Manager UI now can download offline modules for you; however, by default, no remote repositories offering this are added to your game. Stay tuned on the community websites for upcoming download repositories of offline modules!

Modules downloaded this way will show up under "Other Modules" when clicking Singleplayer -> New Game.

New Scripting Functions
GetSpecialization(), GetDomain()
int DOMAIN_AIR = 0; int DOMAIN_ANIMAL = 1; int DOMAIN_DEATH = 3; int DOMAIN_DESTRUCTION = 4; int DOMAIN_EARTH = 5; int DOMAIN_EVIL = 6; int DOMAIN_FIRE = 7; int DOMAIN_GOOD = 8; int DOMAIN_HEALING = 9; int DOMAIN_KNOWLEDGE = 10; int DOMAIN_MAGIC = 13; int DOMAIN_PLANT = 14; int DOMAIN_PROTECTION = 15; int DOMAIN_STRENGTH = 16; int DOMAIN_SUN = 17; int DOMAIN_TRAVEL = 18; int DOMAIN_TRICKERY = 19; int DOMAIN_WAR = 20; int DOMAIN_WATER = 21; // Returns oCreature's spell school specialization in nClass (SPELL_SCHOOL_* constants) // Unless custom content is used, only Wizards have spell schools // Returns -1 on error int GetSpecialization(object oCreature, int nClass = CLASS_TYPE_WIZARD); // Returns oCreature's domain in nClass (DOMAIN_* constants) // nDomainIndex - 1 or 2 // Unless custom content is used, only Clerics have domains // Returns -1 on error int GetDomain(object oCreature, int nDomainIndex = 1, int nClass = CLASS_TYPE_CLERIC);

PostString()
int SCREEN_ANCHOR_TOP_LEFT = 0; int SCREEN_ANCHOR_TOP_RIGHT = 1; int SCREEN_ANCHOR_BOTTOM_LEFT = 2; int SCREEN_ANCHOR_BOTTOM_RIGHT = 3; int SCREEN_ANCHOR_CENTER = 4; // Displays sMsg on oPC's screen. // The message is displayed on top of whatever is on the screen, including UI elements // nX, nY - coordinates of the first character to be displayed. The value is in terms // of character 'slot' relative to the nAnchor anchor point. // If the number is negative, it is applied from the bottom/right. // nAnchor - SCREEN_ANCHOR_* constant // fLife - Duration in seconds until the string disappears. // nRGBA, nRGBA2 - Colors of the string in 0xRRGGBBAA format. String starts at nRGBA, // but as it nears end of life, it will slowly blend into nRGBA2. // nID - Optional ID of a string. If not 0, subsequent calls to PostString will // remove the old string with the same ID, even if it's lifetime has not elapsed. // Only positive values are allowed. // sFont - If specified, use this custom font instead of default console font. void PostString(object oPC, string sMsg, int nX = 0, int nY = 0, int nAnchor = SCREEN_ANCHOR_TOP_LEFT, float fLife = 10.0f, int nRGBA = 2147418367, int nRGBA2 = 2147418367, int nID = 0, string sFont="");

Performance
Overall game performance has been improved drastically - in some cases, up by 200%. Lower bound performance should be vastly improved, especially on slower hardware.

  • Perf optimisation: Timer-related updates with many AI objects.
  • Perf optimisation: The config system is now smarter in tracking updates.
  • Perf optimisation: Shadows are now much cheaper on the cpu.
  • Perf optimisation: Texture units are now managed more efficiently.
  • Perf optimisation: Transformation matrix updates have been optimised.
  • Perf optimisation: Buffer uploads to the GPU have been made smarter.
  • Perf optimisation: Texture caching has been optimised.
  • A new renderhint "NormalTangents" was added, that omits checking for specular maps.
  • Perf optimisation: nwsync setup and updates now avoid excess memcpys and should be much faster.

Pathfinding
Pathfinding when clicking near objects was improved:


Fixes to Wyvern: Crown of Cormyr
  • The module now includes all script sources
  • Fixed "horse hat", and "cannot mount, your tail is in the way" issues
  • Lucinda's Warhorse sometimes vanished upon creation, in Thunderstone
  • Empty joust journal entries now read properly
  • Tile repairs (Castle Barrow, end game bridge, a couple odds & ends)
  • Soundset.2da conflicts with Heros of Neverwinter fixed
  • Realigned all horse and snake blue prints to use proper soundsets
  • Removed duplicate/conflicting SET, ITP, 2DA and TGA files
  • Lifted a Z-fighting prop in Jousting Grounds
  • Replaced missing doors in Polter's Fort (Lower/Upper)
  • Fixed broken transition between Wyvernwater Castle Stables and Wyvernwater Castle

Fixes to Pirates Of The Sword Coast
  • The module now includes all script sources
  • Eliminated content from haks duplicated in XP3.bif, merged 2DA's where possible
  • Performance fixes for PotSC-Exclusive tiles (TCN01)
  • Fixed a few cases where henchmen could go hostile in cutscenes and break the game

Misc
  • Module compatibility has been bumped to 1.80.
  • ResMan can now use more than 256MB of memory for caching. There is a configuration option to specify the percentage of detected physical memory that ResMan can use. Additionally, new defaults in place will avoid I/O churn, resulting in vastly improved performance in complex scenes.
  • [Windows] We fixed large strings, such as chat logs, disappearing if they exceed 1024 characters.
  • We addressed an issue where models/resources would leak over when hopping servers, sometimes resulting in a crash.
  • We updated the crash reporter text and URL.
  • The data build has been updated, containing the mentioned tileset fixes (ovr/ has been cleaned out into the keyfiles as well, in case you were wondering).
  • ruleset.2da now exposes the following chargen-related constants: CHARGEN_ENABLED_PHENOTYPES, CHARGEN_ABILITY_COST_INCREMENT2, CHARGEN_ABILITY_COST_INCREMENT3, CHARGEN_ABILITY_COST_INCREMENT4, CHARGEN_BASE_ABILITY_MIN, CHARGEN_BASE_ABILITY_MIN_PRIMARY, CHARGEN_BASE_ABILITY_MAX, CHARGEN_ABILITY_NEUTRAL_VALUE, CHARGEN_ABILITY_MODIFIER_INCREMENT, CHARGEN_SKILL_MAX_LEVEL_1_BONUS
  • Chargen combinations with any domain, school, spell, and companion should now work fine.
  • Radial subspell count has been upped to 8 (from 5).
  • Chargen now allows customisation of class, race, gender, and alignment starting clothes (chargenclothes.2da).
  • We fixed cls_stat_ tables erroneously being read off by one when validating characters.
  • [Windows] We fixed fullscreen resolution not being detected on first start.
  • We fixed Creature and Heartbeat logging settings being conflated.
  • We fixed GetCasterLevel() on AOEs/SLAs erroneously invalid values.
  • We fixed Linux Steam CD key provisioning.
  • Fixed tile path nodes not showing up.
  • We fixed ground triggers disappearing or losing tint.
  • Lighting oddities in GUI scenes with some advanced shader mechanisms have been addressed.
  • The premium module Wyvern: Crown Of Cormyr no longer crashes the game.
  • The GetDurationRemaining-like script calls now work properly when the duration is longer than one day.
  • The game now defaults to fullscreen on all platforms except MacOS.
  • [Mac] Screen Edge Camera Turning when using the MacOS builtin maximise works again.
  • CopyObject() with a new tag specified no longer erroneously adds the object to the old tag lookup.
  • The player name is now properly sent to the server even if the Remember checkbox is not checked.
  • racialtypes.2da no longer divides by zero when the FeatPerLevel columns are 0.
  • The lightning flash model was resized to full even large screens.
  • pregen.2da now contains all builtin bics so they don't litter the character selection anymore.
  • The parameter +password on the command line was fixed.
  • Human female PLT textures now fall back to male if missing.
  • Intro movies now again play correctly.
  • Windows server now shows and advertises the patch revision.
  • The NWSync Downloader now shows a more verbose error if it is unavailable.
  • A crash in chargen when adding more lines to skills.2da has been fixed.
  • A rare nullptr dereference when adding unknown party members has been fixed.
  • ActivatePortal() now properly uses relays if needed.
  • Learn Scroll no longer hangs the server.
  • ELC for Sorcerer and Bards with too many spells has been fixed.
  • Class IDs > 15 now get spells in the radial.
  • Support for >17 bones.
  • When reading configuration variables, 't' and 'true' are now valid trueish.
  • When reading configuration environment override variables, . and - are now replaced with _.
  • Spells in the spellbook are now sorted (alphabetically). You can turn this off in settings.tml: ui.spellbook.sort-spells
  • New ruleset.2da toggle: ALLOW_CUSTOM_PORTRAITS (in chargen)

Fixes
  • The priorities of userpatch, modules, haks, and override have been restored.
  • We fixed a shader issue that would result in illumination appearing on content that was intended to be black (e.g. the tile borders in the “Dungeon” tileset).
  • We fixed mipmaps not being generated for non-compressed textures.

Toolset
  • Toolset now allows selection of heads from custom slots 50-99.
  • The up and down arrow keys for Adjust Position now progress in perfect sequence.
  • We fixed a bug where double-clicking on an area entry could cause parts of the toolbar to grey out.
  • We fixed a truncation issue when using search & replace in the script editor.
  • You can now add a NAME CExoString field to your custom tileset palettes, instead of having to put a STRREF.
  • Object descriptions over 2000 characters long are no longer truncated.
  • The toolset no longer crashes when moving the start location between areas open in multiple tabs.
  • A group of raised objects now retains their z-level when moved.
  • The script editor no longer freezes when trying to compile **/**.
  • Shield equipping logic in the creature editor was fixed.

Tileset changes
  • Collision (250+) Added necessary spacing for "drive-through" transitions, and fixed faulty walkmeshes
  • Lighting (150+) Fixed lights with improper flags set, for performance.
  • Emitters & Animations (150+) Tiles with bad settings on emitters, and improper animation sequences, were fixed
  • All doors in game (192) checked for animations, transitions, collision. Transition meshes changed to reflect door art.
  • Over 850 optimization and beauty fixes for Castle Exterior, Rural set imported from the Tyrants of the Moonsea premium module
  • Major pathfinding fixes for Castle Exterior, Rural
  • A handful of new doors to fit the tile art better
  • A new "Doorcap, Interior" Feature Tile for TNI02 and TNI01, to allow drive-through transitions for doors placed on very edges of areas
  • Doors with improper orientation arrows were fixed where discovered, as well as negative values in the SET files
  • Off-height and blocking walkmeshes fixed for bridges in Sea Caverns and Steamworks sets
  • Repaired 2 TNO01 tiles for SQRT Error
  • Repaired the 2x2 smithy in TNI01, and made the DoorCap, interior a unique tile
  • Fixed a shadow leak in the hobgoblin head model (seen in WCoC intro cutscene)
  • Performance fixes for TCN01 (stock assets)
  • Fixed a blocky water VFX on a TCN01 Temple's fountain (TCN01_W03_01)
  • Fixed blocky smoke on a couple forest campfires (TTF01_T13_01 and TTF01_S16_01)
  • Repaired a few reported broken walkmeshes, in various sets
  • Fixed a regression in 2 water tiles, appearing in Blacklake District et.al.

Neverwinter Nights: Enhanced Edition - niv
Greetings!

Patch 8193.8 on the Development branch fixes all known regressions introduced by .7; and brings in some neat, new features for you to play with.

Please help us test it and report any bugs you find!

Improvements
  • Spells in the spellbook are now sorted (alphabetically). You can turn this off in settings.tml: ui.spellbook.sort-spells
  • New ruleset.2da toggle: ALLOW_CUSTOM_PORTRAITS (in chargen)
  • Pathfinding when clicking near objects was improved:

Fixes
  • "No preparations left" spell cast issues were addressed.
  • Fixed casting spells from some cleric domains.
  • Fixed assigned spells in the UI losing metamagic or spontaneous flags.
  • We fixed players losing the party or party members.
  • Players can now, once again, finish chargen with customised packages.
  • We fixed non-english languages missing some voices and sound effects.

New Scripting Functions
GetSpecialization(), GetDomain()
int DOMAIN_AIR = 0; int DOMAIN_ANIMAL = 1; int DOMAIN_DEATH = 3; int DOMAIN_DESTRUCTION = 4; int DOMAIN_EARTH = 5; int DOMAIN_EVIL = 6; int DOMAIN_FIRE = 7; int DOMAIN_GOOD = 8; int DOMAIN_HEALING = 9; int DOMAIN_KNOWLEDGE = 10; int DOMAIN_MAGIC = 13; int DOMAIN_PLANT = 14; int DOMAIN_PROTECTION = 15; int DOMAIN_STRENGTH = 16; int DOMAIN_SUN = 17; int DOMAIN_TRAVEL = 18; int DOMAIN_TRICKERY = 19; int DOMAIN_WAR = 20; int DOMAIN_WATER = 21; // Returns oCreature's spell school specialization in nClass (SPELL_SCHOOL_* constants) // Unless custom content is used, only Wizards have spell schools // Returns -1 on error int GetSpecialization(object oCreature, int nClass = CLASS_TYPE_WIZARD); // Returns oCreature's domain in nClass (DOMAIN_* constants) // nDomainIndex - 1 or 2 // Unless custom content is used, only Clerics have domains // Returns -1 on error int GetDomain(object oCreature, int nDomainIndex = 1, int nClass = CLASS_TYPE_CLERIC);

PostString()
int SCREEN_ANCHOR_TOP_LEFT = 0; int SCREEN_ANCHOR_TOP_RIGHT = 1; int SCREEN_ANCHOR_BOTTOM_LEFT = 2; int SCREEN_ANCHOR_BOTTOM_RIGHT = 3; int SCREEN_ANCHOR_CENTER = 4; // Displays sMsg on oPC's screen. // The message is displayed on top of whatever is on the screen, including UI elements // nX, nY - coordinates of the first character to be displayed. The value is in terms // of character 'slot' relative to the nAnchor anchor point. // If the number is negative, it is applied from the bottom/right. // nAnchor - SCREEN_ANCHOR_* constant // fLife - Duration in seconds until the string disappears. // nRGBA, nRGBA2 - Colors of the string in 0xRRGGBBAA format. String starts at nRGBA, // but as it nears end of life, it will slowly blend into nRGBA2. // nID - Optional ID of a string. If not 0, subsequent calls to PostString will // remove the old string with the same ID, even if it's lifetime has not elapsed. // Only positive values are allowed. // sFont - If specified, use this custom font instead of default console font. void PostString(object oPC, string sMsg, int nX = 0, int nY = 0, int nAnchor = SCREEN_ANCHOR_TOP_LEFT, float fLife = 10.0f, int nRGBA = 2147418367, int nRGBA2 = 2147418367, int nID = 0, string sFont="");

Fixes to Wyvern: Crown of Cormyr
  • The module now includes all script sources
  • Fixed "horse hat", and "cannot mount, your tail is in the way" issues
  • Lucinda's Warhorse sometimes vanished upon creation, in Thunderstone
  • Empty joust journal entries now read properly
  • Tile repairs (Castle Barrow, end game bridge, a couple odds & ends)
  • Soundset.2da conflicts with Heros of Neverwinter fixed
  • Realigned all horse and snake blue prints to use proper soundsets
  • Removed duplicate/conflicting SET, ITP, 2DA and TGA files
  • Lifted a Z-fighting prop in Jousting Grounds
  • Replaced missing doors in Polter's Fort (Lower/Upper)
  • Fixed broken transition between Wyvernwater Castle Stables and Wyvernwater Castle

Fixes to Pirates Of The Sword Coast
  • The module now includes all script sources
  • Eliminated content from haks duplicated in XP3.bif, merged 2DA's where possible
  • Performance fixes for PotSC-Exclusive tiles (TCN01)
  • Fixed a few cases where henchmen could go hostile in cutscenes and break the game

Tileset changes
  • Off-height and blocking walkmeshes fixed for bridges in Sea Caverns and Steamworks sets
  • Repaired 2 TNO01 tiles for SQRT Error
  • Repaired the 2x2 smithy in TNI01, and made the DoorCap, interior a unique tile
  • Fixed a shadow leak in the hobgoblin head model (seen in WCoC intro cutscene)
  • Performance fixes for TCN01 (stock assets)
  • Fixed a blocky water VFX on a TCN01 Temple's fountain (TCN01_W03_01)
  • Fixed blocky smoke on a couple forest campfires (TTF01_T13_01 and TTF01_S16_01)
  • Repaired a few reported broken walkmeshes, in various sets
Neverwinter Nights: Enhanced Edition - niv
Hello, friends.

This development patch brings NWN:EE to version 8193.7. You can crossplay on all 8193 servers, as well as with friends on the same major version!

We appreciate any and all testing on this!

Tileset changes
  • Collision (250+) Added necessary spacing for "drive-through" transitions, and fixed faulty walkmeshes
  • Lighting (150+) Fixed lights with improper flags set, for performance.
  • Emitters & Animations (150+) Tiles with bad settings on emitters, and improper animation sequences, were fixed
  • All doors in game (192) checked for animations, transitions, collision. Transition meshes changed to reflect door art.
  • Over 850 optimization and beauty fixes for Castle Exterior, Rural set imported from the Tyrants of the Moonsea premium module
  • Major pathfinding fixes for Castle Exterior, Rural
  • A handful of new doors to fit the tile art better
  • A new "Doorcap, Interior" Feature Tile for TNI02 and TNI01, to allow drive-through transitions for doors placed on very edges of areas
  • Doors with improper orientation arrows were fixed where discovered, as well as negative values in the SET files

Game Features
  • The data build has been updated, containing the above-mentioned tileset fixes (ovr/ has been cleaned out into the keyfiles as well, in case you were wondering).
  • ruleset.2da now exposes the following chargen-related constants: CHARGEN_ENABLED_PHENOTYPES, CHARGEN_ABILITY_COST_INCREMENT2, CHARGEN_ABILITY_COST_INCREMENT3, CHARGEN_ABILITY_COST_INCREMENT4, CHARGEN_BASE_ABILITY_MIN, CHARGEN_BASE_ABILITY_MIN_PRIMARY, CHARGEN_BASE_ABILITY_MAX, CHARGEN_ABILITY_NEUTRAL_VALUE, CHARGEN_ABILITY_MODIFIER_INCREMENT, CHARGEN_SKILL_MAX_LEVEL_1_BONUS
  • Chargen combinations with any domain, school, spell, and companion should now work fine.
  • Radial subspell count has been upped to 8 (from 5).
  • Chargen now allows customisation of class, race, gender, and alignment starting clothes (chargenclothes.2da).

Perf

This patch brings in a series of performance improvements into the game, that will see the average FPS go up by at least 30% - and in many cases, even more - in many scenes compared to the last stable release.
  • Perf optimisation: Timer-related updates with many AI objects.
  • Perf optimisation: The config system is now smarter in tracking updates.
  • Perf optimisation: Shadows are now much cheaper on the cpu.
  • Perf optimisation: Texture units are now managed more efficiently.
  • Perf optimisation: Transformation matrix updates have been optimised.
  • Perf optimisation: Buffer uploads to the GPU have been made smarter.
  • Perf optimisation: Texture caching has been optimised.
  • A new renderhint "NormalTangents" was added, that omits checking for specular maps.
  • Perf optimisation: nwsync setup and updates now avoid excess memcpys and should be much faster.

Game Fixes
  • We fixed cls_stat_ tables erroneously being read off by one when validating characters.
  • [Windows] We fixed fullscreen resolution not being detected on first start.
  • We fixed Creature and Heartbeat logging settings being conflated.
  • We fixed GetCasterLevel() on AOEs/SLAs erroneously invalid values.
  • We fixed Linux Steam CD key provisioning.
  • Fixed tile path nodes not showing up.
  • We fixed ground triggers disappearing or losing tint.
  • Lighting oddities in GUI scenes with some advanced shader mechanisms have been addressed.
  • WCOC no longer crashes the game.
  • The GetDurationRemaining-like script calls now work properly when the duration is longer than one day.
  • The game now defaults to fullscreen on all platforms except MacOS.
  • [Mac] Screen Edge Camera Turning when using the MacOS builtin maximise works again.
  • CopyObject() with a new tag specified no longer erroneously adds the object to the old tag lookup.
  • The player name is now properly sent to the server even if the Remember checkbox is not checked.
  • racialtypes.2da no longer divides by zero when the FeatPerLevel columns are 0.
  • The lightning flash model was resized to full even large screens.
  • pregen.2da now contains all builtin bics so they don't litter the character selection anymore.
  • The parameter +password on the command line was fixed.
  • Human female PLT textures now fall back to male if missing.
  • Intro movies now again play correctly.
  • Windows server now shows the patch revision (.7).
  • The NWSync Downloader now shows a more verbose error if it is unavailable.
  • A crash in chargen when adding more lines to skills.2da has been fixed.
  • A rare nullptr dereference when adding unknown party members has been fixed.
  • ActivatePortal() now properly uses relays if needed.
  • Learn Scroll no longer hangs the server.
  • ELC for Sorcerer and Bards with too many spells has been fixed.
  • Class IDs > 15 now get spells in the radial.
  • Support for >17 bones.
  • When reading configuration variables, 't' and 'true' are now valid trueish.
  • Custom weapon visual effects are no longer off by one in the 2da.
  • When reading configuration environment override variables, . and - are now replaced with _.
  • Custom tokens are no longer erroneously cleared when reloading a module.

Toolset
  • The script editor no longer freezes when trying to compile **/**.
  • Shield equipping logic in the creature editor was fixed.
Neverwinter Nights: Enhanced Edition - niv
Happy New Year, friends!

We’re kicking off 2020 with a brand new development patch for you to play with!

Development Patch 8193.6 focuses on creation for both single player and multiplayer. This dev patch is best suited for our content creator community, as it requires technical knowledge of our toolsets (and a willingness to endure a few issues). We hope you have some fun breaking these features— fair warning: we’re expecting there to be some outstanding bugs in this build.

This patch is network-compatible with all other 8193 releases; however, new features will not work when the patch revision differs (and characters may fail to pass ELC).
Check out the full patch notes below!

All the best,
- Beamdog NWNEE Team

Customise weapons-related feats in baseitems.2da

Weapons-related feats (Focus, Epic Focus, Spec, Epic Spec, Improved Crit, Overwhelming Crit, Devastating Crit, Weapon of Choice) can now be customised on a per-baseitem case.

Please refer to baseitems.2da for the new columns: WeaponFocusFeat EpicWeaponFocusFeat WeaponSpecializationFeat EpicWeaponSpecializationFeat WeaponImprovedCriticalFeat EpicWeaponOverwhelmingCriticalFeat EpicWeaponDevastatingCriticalFeat WeaponOfChoiceFeat

Custom weapon visual effects

Weapons can now have custom visual effects (in addition to the stock fire, ice, electricity, etc.)

Please refer to the new file iprp_visualfx.2da for details.

Custom spellcaster classes

We've added (somewhat partial) support for custom spellcaster classes by "unhardcoding" a lot of the builtin constants and references.

Please refer to classes.2da for the new columns: MemorizesSpells SpellbookRestricted PickDomains PickSchool LearnScroll Arcane ASF SpellcastingAbil SpellTableColumn CLMultiplier MinCastingLevel MinAssociateLevel CanCastSpontaneously

Note that not all combinations are valid. We recommend cloning one of the existing caster classes and then start customising from there. When adding spellcasting to new classes, remember to also update existing columns.

There is also a new ruleset entry: COMPANION_LEVELS_STACK, defaulting to 0.

Level of Detail

You can now specify LODs via a new file type ".lod". When the game loads the model mymodel.mdl, it will look up mymodel.lod. Inside that file, add the following lines:

mymodel_0 40 mymodel_1 80.5 mymodel_2

The game supports LOD files with up to three levels, as shown above. You may omit the last entry. The first line is the high-resolution model; the other two are meant to be lower-resolution model files, that will be dynamically swapped out as the camera reaches the given distance.

Please note that LODs are highly dependent on the screen resolution of the client. The actual mechanisms here need to still be figured out; but for now, we'd suggest choosing LOD distances as if the user had a 1080p screen. To support other resolutions, there is a configuration slider in the debug settings (Ctrl-Shift-F12, select "Config", key: "graphics.lod.scale-factor") that users can influence LOD distances with.

Animation Slots

The game now supports 50 more custom animation slots (LOOPING_CUSTOM21 -> 70).

Script call to swap out textures on the fly

A new script call was added:

// Makes oPC load texture sNewName instead of sOldName. // If oPC is OBJECT_INVALID, it will apply the override to all active players // Setting sNewName to "" will clear the override and revert to original. void SetTextureOverride(string sOldName, string sNewName = "", object oPC = OBJECT_INVALID);

Changes made through this call will appear immediately on clients.

NWSync

When downloading something via NWSync, disk writes now happen asynchronously while more content is downloaded. This should minimise occurrences of "Waiting On Storage". If this is giving you grief, you can turn it off in settings via the key "nwsync.transfer.flush.async".

The NWSync Downloader UI was swapped out with a new version, which is now rendered in Nuklear. It has a fancy graph and a pause button.

Finally, the Storage Manager (Options -> NWSync) now has two tabs: Servers, and Modules. Server manifests (i.e. when joining a PW that offers files) show up in the Server tab.

The Modules tab will show all singleplayer/offline modules you have downloaded via NWSync. To facilitate this, the Storage Manager UI now can download offline modules for you; however, by default, no remote repositories offering this are added to your game.

To add a remote repository, add the following lines to your settings.tml (right at the top is fine, the game will sort them in properly on next launch):
[[nwsync.downloader.repositories]] name = "NWVault" url = "http://sync.neverwintervault.org/"

To actually generate a repository of your own that can offer singleplayer modules for download, you need to generate NWSync manifests that have module contents in them (nwsync_write --with-module --group-id N ...). Finally, add all manifests into a big json array in modules.json in the repository root (the nwsync_write tooling will update soon to do this for you). See the sample repository if it is unclear.

Modules downloaded this way will show up under "Other Modules" when clicking Singleplayer -> New Game.

Texture Binding

There is a new, experimental, texture caching system in place that will speed up GL texture binding, depending on your hardware (especially if you are CPU-bound). It is enabled by default, but you can turn it off via the config flag graphics.experimental.aggressive-texture-caching, if it turns out to have issues.

We have seen - depending on scene complexity and the amount of texture maps in use - dramatic performance improvements. We'd appreciate feedback on this.

Shader Issues

We fixed a shader issue that would result in illumination appearing on content that was intended to be black (e.g. the tile borders in the “Dungeon” tileset).

Texture Issues

We fixed mipmaps not being generated for non-compressed textures.

ResMan

ResMan can now use more than 256MB of memory for caching. There is a configuration option to specify the percentage of detected physical memory that ResMan can use. Additionally, new defaults in place will avoid I/O churn, resulting in vastly improved performance in complex scenes.

ResMan Priorities

The priorities of userpatch, modules, haks, and override have been restored.

Toolset
  • Toolset now allows selection of heads from custom slots 50-99.
  • The up and down arrow keys for Adjust Position now progress in perfect sequence.
  • We fixed a bug where double-clicking on an area entry could cause parts of the toolbar to grey out.
  • We fixed a truncation issue when using search & replace in the script editor.
  • You can now add a NAME CExoString field to your custom tileset palettes, instead of having to put a STRREF.
  • Object descriptions over 2000 characters long are no longer truncated.
  • The toolset no longer crashes when moving the start location between areas open in multiple tabs.
  • A group of raised objects now retains their z-level when moved.

Miscellanea
  • [Windows] We fixed large strings, such as chat logs, disappearing if they exceed 1024 characters.
  • We addressed an issue where models/resources would leak over when hopping servers, sometimes resulting in a crash.
  • We updated the crash reporter text and URL.

Have a great start into 2020!
Neverwinter Nights: Enhanced Edition - niv
Hello everyone!

We'd like to wish you a relaxing holiday season with dear ones, and the time to do the things you love most as you ring in a brand new year.

See you in 2020!

Fixes
  • We restored ResMan priority behavior with regards to haks vs. modules.
  • We fixed CopyObject not duplicating a item if the target inventory or location was not valid.
  • The toolset no longer truncates Description and Comments fields.
  • A potential crash fix inside the HTTP library when running NWSync repeatedly.
  • The ResMan debug UI has gained a few more buttons to help custom content authors.
  • There is a new resman configuration option to log failed resource lookups.
  • We fixed a bug where in singleplayer, the 2da cache would not clear properly between module runs with differing custom content.
  • Object hilite state and colors is now configurable - clientside - in settings.tml.

As is the case with all .X releases, this build is cross-compatible to all previous 8193 builds. You can upgrade or downgrade both client and server and should still be able to join each other in multiplayer!
Neverwinter Nights: Enhanced Edition - niv
8193.4 contains small, incremental fixes to the stable branch! Thank you all for reporting these issues. We know there are remaining open problems - we'll get to them in future incremental patches.

Fixes

  • We fixed a thread race in the game client when receiving network packets on the builtin server, resulting in issues connecting to local servers.
  • We fixed the configuration option server.restore-spell-uses-on-login.
  • Palemaster natural AC progression has been restored to what it should be (it was off by one level after 4).
  • The script call ActivatePortal() has been fixed to no longer show “Cryptographic Handshake Error”.
  • A small memory issue in RESREF handling was addressed, that could occasionally crash clients when transitioning via ActivatePortal().
  • The toolset will no longer try to deallocate the starting location when closing an area that does not have it.
Neverwinter Nights: Enhanced Edition - niv
Hello, again!

Today we are shipping 8193.3 to the stable branch. This update includes all of the changes contained in 8193.1 and 8193.2!

Fixes
  • Toolset sound and ambient music has been raised from the dead.
Neverwinter Nights: Enhanced Edition - niv
Greetings!

We're fixing some more things in this minor update to 8193.1.

Again, this release is (mostly) compatible with the current stable release, 8193. Please test it thoroughly and report issues to us; as this is intended to replace 8193 on stable very soon.

Fixes

  • Yet another fix to CampaignDB, where it incorrectly imported records marked as deleted. We would suggest re-running the campaigndb import if you are facing problems because of this.
  • A fix to CampaignDB where it emitted (harmless but confusing) error messages about empty strings and objects being imported.
  • The game now remembers fullscreen mode when toggling via Alt-Enter.
  • The game now remembers window position and size separately for for fullscreen and windowed mode.
  • When toggling out of borderless window mode, the window decorations (title bar) no longer become invisible.
  • On MacOS only, fullscreen mode now defaults to borderless instead of exclusive. There is now a configuration key ("graphics.window.fullscreen.toggle-to-borderless") to affect this if you do not like the default.
  • NWSync: The "nwsync" directory is now being created properly.
  • NWSync: The UI will not crash the game when NWSync had failed to initialise. In addition, it will show the initialisation error in the UI if one is available.
  • NWSync: The UI now properly shows the Close button and an advisory message when nothing had been downloaded yet.
  • Debug UI: Toggling it via Ctrl-Shift-F12 will now be remembered across game restarts.
  • Debug Ui: The Config tree gained a text search.
  • The "development" alias now works on dedicated servers too.
  • The crashiness in all the premium modules should be fixed.
Neverwinter Nights: Enhanced Edition - niv
Hello everyone.

This build is a hotfix for 8193, which has shipped on Monday to the stable branch.

You can play on non-hotfixed 8193 servers with this, and you can update your server to this build and players on the current stable branch will still be able to connect, though some ELC issues may unfortunately present on chargen. A NWNX build will be available momentarily.

We would like to encourage you to test this build, so that it can migrate to stable in a timely manner!

Fixes

  • We fixed the toolset build.
  • A serious issue in CampaignDB has been fixed where it incorrectly imported floating point values.
  • CopyObject with a new, different tag will not stack into existing items anymore.
  • The NWSync UI in Options now closes properly when clicking X.
  • A crash when running CampaignDB migrations has been fixed.
  • CampaignDB migrations will no longer overwrite values already in sqlite3.
  • The game language is now taken from Steam as intended. To facilitate this, the previous configuration value "game.language" has been superseded by "game.language.override", which defaults to "". You can still set a value there to override what Steam offers, or when you run the game outside of Steam.
  • Class Stat Gain: We fixed RDD not passing ELC.
  • Class Stat Gain: We fixed feat perquisites not being met due to class stat gain abilities.
  • Class Stat Gain: We fixed the NWScript function GetAbilityScore() not including glass stat gain abilities when calculating the return value.
  • Class Stat Gain: Adjusted abilities are now rendered in character selection.
  • Class Stat Gain: We fixed CON sourced from statgain not increasing hitpoints in some cases.
  • Class Stat Gain: Same for Natural AC bonus.
  • Class Stat Gain: Setting ability changes on Level 1 now works properly.
  • Class Stat Gain: Strength Damage Bonus calculation now shows up in the combat info part of the charsheet.
  • Class Stat Gain: Class modifier is now rendered in the Ability text field on levelup.
  • Class Stat Gain: Skill validation on levelup has been fixed.
  • Class Stat Gain: Spell availability will now take statgain into account.
  • Class Stat Gain: Bonus spells will now take statgain into account.
  • The checkbox "Enable Dialog Zoom" now actually does what it advertises.
  • The server autosave interval in the Advanced Server Options now works.
  • The Tile Fade UI buttons have been fixed to properly select, save and restore configuration.
  • We fixed the difficulty slider sometimes not saving properly when clicking OK.

Known Issues
  • The Infinite Dungeons premium module is a bit crashy.
  • The Wyvern Crown Of Cormyr premium is missing some new art that makes it unplayable.
  • CopyObject on a henchman makes the copy be hostile.
  • Keyholing does not affect visual-transformed placeables.
  • Some game installs fail to create the "nwsync" directory in Documents/Neverwinter Nights. If you are facing that issue, simply create it manually for now.
  • Game windowed/fullscreen behaviour is not optimal. For now, to switch into Fullscreen, you can try one of the following: Edit settings.tml and set "graphics.window.mode" to "exclusive"; or press Ctrl-Shift-F12, click Config, and find and select the window-mode option, then click Commit at the top.
...