There are a various set of different versions of the game available. This explains the major differences and links to patch notes where possible and for the most modern patches post-1.69 the relevant script and engine changes.
The version identifier is also used for matching a module against a game edition for compatibility. For instance a NWN:EE 1.80 version of a module will be tagged in the module.ifo file under the "Mod_MinGameVer" string as 1.80, meaning you are unable to load this in a Diamond Edition version of the game at all.
With NWN:EE the versioning numbers got longer, information about this is available below. For NWN:EE specific functions you can find them categorised here.
A written set of info on patch versions is available on nwn.wiki, which explains what "8166" or "1.80" means. Additionally patch notes will be copied there as a single searchable reference point.
1.69 - Diamond Edition
The last Bioware patch released 9th July 2004. The details of this and all the previous Bioware patches are available on the NWN Fandom Wiki Patch page.
1.70 - 1.73 Fan Patches
Shadooow created a set of Community Patches once Bioware had finished patching. These were numbered 1.70 - 1.72 (1.73 appears not to have come out so this version is essentially unused). This is still under development but contains no new scripting or engine functionality. You can find the vault page here.
1.74 - NWN:EE
The first versions of NWN:EE by Beamdog were beta versions before the game came out. We now step into using both a major ID and a development ID. Several development IDs are used throughout a major ID number. This means newer or older clients can connect to newer or older servers (eg; visual enhancements don't need a server to be updated, while a server running a script differently doesn't need the latest client). Major bumps are generally done for architecture reasons, or netcode reasons.
These are links to the various patches, any notable engine changes related to scripting, or script events/fixes, will be noted to the side.
- 1.74.8159 February 15th, 2018. Earliest beta from Beamdog. Some versions were released before this (outside of Steam) but for reference all those patch notes seem unavailable so adding here what was added:
- Added script commands:
- DestroyArea / CopyArea / CreateArea
- GetAbilityPenaltyLimit / SetAbilityPenaltyLimit
- GetAbilityBonusLimit / SetAbilityBonusLimit
- GetDamageBonusLimit / SetDamageBonusLimit
- GetSavingThrowBonusLimit / SetSavingThrowBonusLimit
- GetSkillBonusLimit / SetSkillBonusLimit
- GetCreatureExploresMinimap / SetCreatureExploresMinimap
- GetTileExplored / SetTileExplored
- GetEffectDuration / GetEffectDurationRemaining
- GetEffectTag / TagEffect
- GetFirstArea / GetNextArea
- GetHiddenWhenEquipped / SetHiddenWhenEquipped
- GetItemPropertyDuration / GetItemPropertyDurationRemaining
- GetItemPropertyTag / TagItemProperty
- Added script commands:
- 1.74.8160 February 23rd, 2018 - Toolset script compiler memory leak fix
- 1.74.8161 February 28th, 2018
- 1.74.8162 March 5th, 2018 - GetIsPlayerConnectionRelayed added
- 1.74.8163 March 7th, 2018
- 1.74.8164 March 16th, 2018 - GetEventScript, SetEventScript added
- 1.74.8165 March 22nd, 2018
- 1.74.8166 March 23rd, 2018
1.74.8166 was the release version of NWN:EE, which was released fully on March 27th 2018.
- 1.74.8167 April 10th, 2018
- 1.74.8168 April 17th, 2018
- 1.74.8169 April 27th, 2018 - GetObjectVisualTransform, SetObjectVisualTransform added
- 1.74.8170 May 4th, 2018 - SetMaterialShaderUniformInt, SetMaterialShaderUniformVec4, ResetMaterialShaderUniforms added
- 1.74.8171 May 11th, 2018 - fixed the following script events for player characters: OnSpellCastAt, OnMeleeAttacked, OnPerception, and OnCombatRoundEnd.
- 1.74.8172 May 18th, 2018
- 1.75.8174 May 25th, 2018 - fixed OnMeleeAttacked and OnDamaged not firing on creatures.
- 1.75.8175 May 30th, 2018 - fixed SetTransitionTarget did not always propagate changes to clients
- 1.75.8176 June 1st, 2018
- 1.75.8177 June 15th, 2018
- 1.75.8178 June 22nd, 2018
1.76 is a single release version
- 1.76.8179 July 6th, 2018 RC
- 1.76.8179 July 11th, 2018 Release - Script Compiler: We now allow escaping backslashes (“\”).
This added NWSync to the game.
- 1.77.8180 September 20th, 2018 - Toolset: The compiler include limit has been bumped to 128.
- 1.77.8181 September 27th, 2018 - RC release
- 1.77.8181 October 2nd, 2018 - Stable 1.77 release
- 1.77.8182 October 20th, 2018 - NWsync experimental support
- 1.77.8183 October 24th, 2018
- 1.77.8184 November 2nd, 2018
- 1.77.8185 November 13th, 2018
This began the Android beta and feature parity.
- 1.78.8186 November 15th, 2018
- 1.78.8186 November 20th, 2018 - Stable 1.78 release. Fixes a bug in RetrieveCampaignObject
- 1.78.8187 December 21st, 2018
- 1.78.8188 August 6, 2019. Added ruleset.2da, plus other major 2da changes for classes/races. Fixes for SetPhenoType, SetName. New script functions introduced:
- 1.78.8189 August 14th, 2019 - The effect limit accessors now adhere to the configuration constraints. Values set through these will always override the user-configured values for the running module only.
- 1.78.8190 September 26th, 2019 - Fixed GetEffectSpellId so it returns -1 on invalid.
- 1.78.8191 October 1st, 2019
- 1.79.8192 October 10th, 2019 - Toolset upgraded to later C++ compiler. Has additional transform features, and tabs for multiple areas being open.
- 1.79.8193 December 2nd, 2019 - RC.
- 1.79.8193 December 3rd, 2019 - Stable release of 1.79 - The features below may have been in past versions - the patch notes on steam are not the best!
- New development features:
- Debug Menu (CTRL + SHIFT + F12)
- "development" folder that loads changes live in-game and is priority loaded above override folder, erf, hak and module files
- Aave added a script command to JIT-compile and run a chunk of NWScript.
- New script commands (Some available in previous development versions):
- SetPhenoType: The constraint condition was too narrow in clamping the phenotype; this has been fixed.
- SetName() on areas now sends the configured language, instead of English.
- CopyObject now copies plot flag on creatures and items.
- Fixed StoreCampaignObject/RetrieveCampaignObject() not properly storing/retrieving the faction of a creature.
- A bug in the creature serialisation code (for StoreCampaignObject) has been addressed where it would erroneously embed transient object IDs for inventory items, resulting in issues when loading this creature again in a persistent world setting.
- Player characters stored/copied now end up in the Commoner faction (it used to be a the PC faction; with no valid party).
- Script calls that serialise/deserialise objects (StoreCampaignObject and CopyObject as of now) can now work with the following object types: Creatures, Items, Placeables, Waypoints, Stores, Doors, Triggers.
- (GetAbilityBonusLimit etc. related) The effect limit configuration keys have been uncapped. They used to be limited to [1, default]; they now are [0, 255]. Beware: You may run into strange behaviour if you exceed a total bonus/penalty of -128, 127 or 255 regardless of configuration; since some values are internally typed with 8 bits.
- Scripting: The effect limit accessors now adhere to the configuration constraints. Values set through these will always override the user-configured values for the running module only.
- New development features:
- 1.79.8193.1 December 6th, 2019 - Class Stat Gain: We fixed the NWScript function GetAbilityScore() not including glass stat gain abilities when calculating the return value.
- 1.79.8193.2 December 9th, 2019
- 1.79.8193.3 December 10th, 2019
- 1.79.8193.4 December 13th, 2019 - 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().
- 1.79.8193.5 December 19th, 2019 - Fixed CopyObject not duplicating a item if the target inventory or location was not valid.
- 1.79.8193.6 January 13th, 2020 - Base Items can have non-hardcoded feats for each of the focus, specailization, etc. You can have some custom spellcasters - kind of. New scripting function SetTextureOverride.
- 1.79.8193.7 February 27th, 2020 - Fixed GetCasterLevel() on AOEs/SLAs erroneously invalid values. CopyObject() with a new tag specified no longer erroneously adds the object to the old tag lookup. ActivatePortal() now properly uses relays if needed. The script editor no longer freezes when trying to compile **/**.
- 1.79.8193.8 - GetSpecialization, GetDomain, PostString added. New pathfinder added.
- 1.80.8193.9 March 17th, 2020. Stable 1.80, fixes and features as per previous release.
- 1.80.8193.10 April 9th, 2020
- Added GetPlayerBuildVersionMajor and GetPlayerBuildVersionMinor
- Script errors are now logged to the server log.
- SetEventScript properly returns TRUE on success.
- SetEventScript no longer crashes when passing in invalid constants.
- GetCampaignVector now properly returns the Z value of stored vectors.
- ActivatePortal no longer erroneously shows character selection if a character is sent along.
- Script/effect timers no longer overflow when the duration is more than a day.
- PostString() strings are no longer hidden when the radial menu opens.
- BootPC() no longer crashes the server if called twice on the same player.
- Fixed a memleak in AssignCommand, DelayCommand, ActionDoCommand
- Access violation when compiling scripts with nested structs has been fixed.
- 1.80.8193.11 April 24th, 2020
- 1.80.8193.12 May 6th, 2020
- Fix script commands not properly accessing area UUIDs. #41
- DestroyArea() now behaves the same as DestroyObject(): Instead of destroying the area immediately, it schedules it for removal immediately after script exit. This fixes accessing freed memory when destroying an area from an area event.
- GetCasterLevel() now returns 0 for AOEs instead of crashing. #34
- 1.80.8193.13 - Stable and contains fixes/new things from above, still 1.80 (modules are backwards comaptible to 1.80.8193.9), but more feature complete.
- 1.81.8193.15 - Stable version of .14 which was just preview.
- Large number of functions, alterations and additions. Note older network-compatible versions may not see the effects of these client side in some cases (Eg; visual transforms).
- Added functions:
- GetScriptParam SetScriptParam
- SQLite functions
- EnterTargetingMode, GetTargetingModeSelectedObject, GetTargetingModeSelectedPosition, GetLastPlayerToSelectTarget
- GetItemPropertyUsesPerDayRemaining, SetItemPropertyUsesPerDayRemaining, ActionUseItemOnObject, ActionUseItemAtLocation
- EffectVisualEffect, EffectBeam new parameters for scale, translation and rotation
- A number of script function and script VM engine fixes implemented
- Locals are now much faster - Maximum O(n) to find one among thousands, and usually much faster.
- weathertypes.2da, progfx.2da added - main effect is other existing script functions can now use more weather (SetWeather) and have better visual effects (EffectVisualEffect)
- 1.81.8193.16 - Hotfix for some issues with 1.81.8193.15. Only nwscript change was a slight update to StringToObject description.
- 1.81.8193.17 (beta) - Bugfixes and nwsync changes and a new function:
- 1.82.8193.20. Stable version of 1.81.8193.17, nothing new but bumped toolset version and bugfixes from the beta.
- 1.83.8193.21 (beta).
- Added functions:
- GetEffectInteger, GetEffectFloat, GetEffectString, GetEffectObject, GetEffectVector
- GetLocalCassowary, SetLocalCassowary, DeleteLocalCassowary, CassowaryReset, CassowaryConstrain, CassowarySuggestValue, CassowaryGetValue, CassowaryDebug.
- Altered functions:
- SetObjectVisualTransform for lerping
- Game: Fixed ResistSpell() when called from AOE spell scripts.
- Game: Don’t use weapon AB for ranged touch attacks anymore. (TouchAttackRanged and TouchAttackMelee).
- VM: Fixed crash when calling DestroyArea on a invalid object.
- VM: Stopped ExecuteScriptChunk from writing “!chunk.ndb” to override.
- VM: sqlite commands: Added missing newline in log output.
- VM: Fixed issue in string handling (also: VM: SubString()) that would have resulted in memory leaks or crashes.
- Added functions:
Some new commands may be previewed in versions not for general release. These won't be documented here.