Updated Neverwinter Nights 2 v1.23 Patch Notes

Obsidian's Rob McGinnis paid a visit to the official Neverwinter Nights 2 forums to reveal a set of revised notes for the game's upcoming v1.23 patch. You might want to get comfortable before sifting through these:
Bug Fixes

General

'¢ Fixed an issue that was causing the "Character has too many feats" error message to display when attempting to cross-class a level 5 Sorceror with a level of Cleric with the Earth or War domain.
'¢ Players can no longer remove the last living party member from the party.
'¢ Fixed an issue that was causing enemies to remain highlighted if they died while being highlighted.
'¢ Fixed crash on exit to Desktop when hak pak(s) are in use
'¢ Infinite items in stores should no longer lose focus after purchasing.
'¢ Fixed an issue that was causing creatures to show as "Effortless" when Show CR was enabled.

Toolset & Custom Content

'¢ The UI Atlas system has been removed so that UI objects that are not 1:1 will no longer appear blurred.
'¢ Hook points should now appear properly in the toolset.
'¢ Compile All Scripts now compiles campaign scripts too
'¢ Hovering over a property sheet value in the toolset will now correctly display any truncated text as a tooltip.
'¢ A more friendly message is displayed when plugins fail to load, telling the user which files are not loading in a single messagebox.
'¢ Fixed an issue with settings that was causing hook points to not display properly.
'¢ Fixed 'out of bounds' issues that were causing toolset crashes.

Scripting

'¢ Fixed the ActionCastSpellAtLocation() script so that the nDomainLevel parameter is in the right place.
'¢ SetCollision() has been changed to work with placeables. However it will only turn collision on if the blueprint for the object has collision already.
'¢ Removed the setmaterialtype limitation, which required you to limit materials to predefined GMATERIAL consts.
'¢ Fixed an issue where compiling all scripts would dump the .ncs files into the mod folder and would ignore the campaign folder.

Multiplayer

'¢ Fixed an issue that was causing servers to crash when a polymorphed character would attempt to transition.
'¢ Players possessing their familiars will no longer lock up when transitioned by a DM
'¢ The Missing File error message, when attempting to connect to a server, now reports the file that is missing.
'¢ When examining other players and creatures, CR will no longer be displayed twice.

Spells & Invocations

'¢ Warlock Invocations are now properly marked as somantic in the spells.2da file.
'¢ Fixed an issue that was causing you to damage your own party members, on Normal difficulty setting, with AOE spells.
'¢ Casting invisibility will now make the affected character silent, as well as invisible. There will no longer be an opaque appearance on invisible creatures, which should reduce confusion.
'¢ Concentration check for Warlock invocations is now DC10+DamageDealt+SpellLevel.
'¢ Fixed an issue that was causing Vampiric Regeneration to work intermittently.
'¢ Animal Trance has been fixed to allow for certain types of metamagic.
'¢ Hammer of the Gods has been fixed to allow for certain types of metamagic.
'¢ Animalistic Power has been fixed to allow for certain types of metamagic.
'¢ Blades of Fire has been fixed to allow for certain types of metamagic.
'¢ Bladeweave has been fixed to allow for certain types of metamagic.
'¢ Conviction has been fixed to allow for certain types of metamagic.
'¢ Living Undeath has been fixed to allow for certain types of metamagic.
'¢ Nightshield has been fixed to allow for certain types of metamagic.
'¢ Reduce Person has been fixed to allow for certain types of metamagic.
'¢ Reduce Animal has been fixed to allow for certain types of metamagic.
'¢ Greater Reduce Person has been fixed to allow for certain types of metamagic.
'¢ Mass Reduce Person has been fixed to allow for certain types of metamagic.
'¢ Arc of Lightning has been fixed to allow for certain types of metamagic.
'¢ Blood to Water has been fixed to allow for certain types of metamagic.
'¢ Castigate has been fixed to allow for certain types of metamagic.
'¢ Dehydrate has been fixed to allow for certain types of metamagic.
'¢ Healing Sting has been fixed to allow for certain types of metamagic.
'¢ Animal Trance will now make the proper spell resistance check.
'¢ Healing Sting will now make the proper spell resistance check.
'¢ Casting the spell Avasculate will now cause the caster to become visible.
'¢ Casting the spell Bestow Curse will now cause the caster to become visible.
'¢ Casting the spell Death Knell will now cause the caster to become visible.
'¢ Casting the spell Hypothermia will now cause the caster to become visible.
'¢ Casting the spell Moon Bolt will now cause the caster to become visible.
'¢ Casting the spell Swamp Lung will now cause the caster to become visible.
'¢ Casting the spell Deep Slumber will now cause the caster to become visible.
'¢ Casting the Curse of Despair Invocation will now cause the caster to become visible.
'¢ The Bestow Curse spell is now considered supernatural and may no longer be dispelled.
'¢ Blade Barrier will now be properly dispelled.
'¢ Blades of Fire now provides a benefit for two rounds.
'¢ Blood to Water will now properly check for spell resistance.
'¢ The Constitution damage caused by Blood to Water may no longer be dispelled.
'¢ The effects of the Camouflage and Mass Camouflage spells will no longer stack.
'¢ Mass Camouflage will now affect characters within a targeted area.
'¢ Castigate will now properly check for spell resistance.
'¢ Castigate will no longer affect creatures with the same alignment as the caster.
'¢ Gray Orcs will now be affected by the Charm Person spell.
'¢ Gray Orcs will now be affected by the Daze spell.
'¢ Gray Orcs will now be affected by the Dominate Person spell.
'¢ The Dehydrate spell will now properly check for spell resistance.
'¢ The Dehydrate spell will now be negated by a successful Fortitude save.
'¢ The Constitution damage caused by the Dehydrate spell will now stack.
'¢ The Constitution damage caused by the Dehydrate spell may no longer be dispelled.
'¢ The duration of the Deep Slumber spell has been reduced.
'¢ The Devour Magic invocation will now properly grant temporary hit points when an area effect is dispelled.
'¢ The Devour Magic invocation will no longer attempt to dispel temporary hitpoints granted by the use of devour magic.
'¢ Negative levels granted by the Enervation spell may no longer be dispelled.
'¢ The effects of Enlarge Person will no longer stack on a Duergar already affected by Entropic Husk.
'¢ The duration of the Flame Weapon spell has been reduced to one minute per level.
'¢ Fixed the duration of the Foundation of Stone spell to match its description.
'¢ Casting Lesser Visage of the Deity will no longer cause the caster to become visible.
'¢ Casting Greater Visage of the Deity will no longer cause the caster to become visible.
'¢ The gust of wind spell will no longer remove auras.
'¢ The Living Undeath spell will now impart a proper Charisma penalty.
'¢ Mass Blindness will now only effect enemies on hardcore difficulty setting.
'¢ Mass Deafness will now only effect enemies on hardcore difficulty setting.
'¢ Mass Curse of Impending Blades will now only effect enemies on hardcore difficulty setting.
'¢ Mass Reduce Person will no longer affect enemies.
'¢ Mass Reduce Person will no longer be canceled if there are non-humanoids in the area.
'¢ Nightshield will now provide the proper +3 bonus to saving throws for casters 9th level or higher.
'¢ Slay Living will no longer trigger a spell resistance check if the melee attack fails.
'¢ Tasha's Hideous Laughter will now be properly affected by dispel spells.
'¢ The Magic Fang spell has been changed from the Conjuration spell school to the Transmutation spell school.
'¢ The Greater Magic Fang spell has been changed from the Conjuration spell school to the Transmutation spell school.
'¢ The Mind Fog spell has been changed from the Illusion spell school to the Enchantment spell school.
'¢ The Shroud of Flame spell has been changed from the Transmutation spell school to the Evocation spell school.
'¢ The Bless Weapon spell can no longer be maximized.
'¢ The Death Armor spell can no longer be maximized.
'¢ The Elemental Shield spell can no longer be maximized.
'¢ The Flame Weapon spell can no longer be maximized.
'¢ The Heal Animal Companion spell can no longer be maximized.
'¢ The Mage Armor spell can no longer be maximized.
'¢ The Mass Snake Swiftness spell can no longer be maximized.
'¢ The Poison spell can no longer be maximized.
'¢ The Rejuvination spell can no longer be maximized.
'¢ The Cocoon spell can no longer be maximized.
'¢ The Tortoise Shell spell can no longer be maximized.
'¢ The Creeping Cold spell can no longer be extended or made persistent.
'¢ The Greater Creeping Cold spell can no longer be extended or made persistent.
'¢ The Cause Fear spell can no longer be made persistent.
'¢ The Lesser Dispel spell can now be made silent.
'¢ The Scare spell can now be made silent.
'¢ The Greater Resistance spell can now be cast with Still metamagic.
'¢ The Superior Resistance spell can now be cast with Still metamagic.
'¢ Fixed various issues that prevented the use of certain metamagic feats with the Animal Trance spell.
'¢ Fixed various issues that prevented the use of certain metamagic feats with the Animalistic Power spell.
'¢ Fixed various issues that prevented the use of certain metamagic feats with the Arc of Lightning spell.
'¢ Fixed various issues that prevented the use of certain metamagic feats with the Blades of Fire spell.
'¢ Fixed various issues that prevented the use of certain metamagic feats with the Bladeweave spell.
'¢ Fixed various issues that prevented the use of certain metamagic feats with the Blood to Water spell.
'¢ Fixed various issues that prevented the use of certain metamagic feats with the Castigate spell.
'¢ Fixed various issues that prevented the use of certain metamagic feats with the Conviction spell.
'¢ Fixed various issues that prevented the use of certain metamagic feats with the Dehydrate spell.
'¢ Fixed various issues that prevented the use of certain metamagic feats with the Healing Sting spell.
'¢ Fixed various issues that prevented the use of certain metamagic feats with the Living Undeath spell.
'¢ Fixed various issues that prevented the use of certain metamagic feats with the Nightshield spell.
'¢ Fixed various issues that prevented the use of certain metamagic feats with the Stabilize spell.
'¢ The Blindness spell will no longer have a somatic component.
'¢ The Deafness spell will no longer have a somatic component.
'¢ Changed the range for the Crushing Despair spell from medium to short.
'¢ Fixed an issue with Lesser Planar Binding that was preventing its use on hostile outsiders in SoZ.
'¢ Fixed an issue with Planar Binding that was preventing its use on hostile outsiders in SoZ.
'¢ The Castigate spell will now properly be centered on the caster.
'¢ Fixed an issue that was preventing Mordenkainen's Disjunction from targeting enemies.

Feats

'¢ Increased the duration of Divine Might and Divine Vengeance feats for one round, to compensate for inability to attack in same round when those abilities are activated
'¢ Fixed the Divine Vengeance bonus, so it gives extra 2d6 damage against undead, and not some random value between 2-12
'¢ AI Controlled characters with the Two-Weapon Fighting feat will no longer unequip off-hand weapons.

Racial Abilities

'¢ Fixed Cause Fear, Charm Person and Entangle spell-like abilities of Yuan-Ti Purebloods, so that duration and DC are not based on first class taken at character creation. Instead, as per PnP rules, DC is Charisma based and duration depends from total character level.
'¢ Fixed the aura used by Drowned undead, so it does not affect creatures with Iron Body, which gives immunity to drowning.
'¢ Fixed the Howl of Fear ability used by Shadow Mastiffs, so it will no longer affect the casting creature when part of the player's faction on Hardcore difficulty.
'¢ Fixed the Summon Gale ability of Air Genasi, so it will not remove auras from other creatures anymore.

Class Abilities

Bard

'¢ Fixed an issue that was causing the Chorus of Heroism to not work properly when used by NPC AI.
'¢ Fixed an issue with Legionnaire's March Song so the increased attack bonus is calculated properly.

Cleric

'¢ Turn Undead will no longer include previously turned outsiders in the Hit dice calculation for new turning attempts.
'¢ The 'Turning Failed' message will no longer display for a creature that cannot be turned.

Druid

'¢ Fixed an issue that was causing the game to crash if a druid, with a sling attached, casts Elemental Shape > Air.

Neverwinter Nine

'¢ The duration of the Furious Assault ability has been increased by one round.
'¢ Fixed an issue with Guarding the Lord so that its duration is now properly based on the character's level.
'¢ Fixed an issue that was preventing the concurrent use of a persistent aura from multiple creatues and characters of the same type, in the same area.
'¢ Fixed an issue that was causing icons for persistent aura effects to not display properly.

Paladin

'¢ Fixed an issue that was preventing the concurrent use of a persistent aura from multiple creatues and characters of the same type, in the same area.
'¢ Fixed an issue that was causing icons for persistent aura effects to not display properly.

Ranger

'¢ Ranger abilities will no longer be disabled when equipping mithral chainmail armor.

Blackguard

'¢ Fixed an issue that was preventing the concurrent use of a persistent aura from multiple creatues and characters of the same type, in the same area.
'¢ Fixed an issue that was causing icons for persistent aura effects to not display properly.

Doomguide

'¢ Fixed an issue that was preventing the concurrent use of a persistent aura from multiple creatues and characters of the same type, in the same area.
'¢ Fixed an issue that was causing icons for persistent aura effects to not display properly.

Hellfire Warlock

'¢ Fixed an issue that was preventing the concurrent use of a persistent aura from multiple creatues and characters of the same type, in the same area.
'¢ Fixed an issue that was causing icons for persistent aura effects to not display properly.

Warlock

'¢ Imbue item will now properly substitute for any spell needed in SoZ Crafting.

Warpriest

'¢ Fixed an issue that was preventing the concurrent use of a persistent aura from multiple creatues and characters of the same type, in the same area.
'¢ Fixed an issue that was causing icons for persistent aura effects to not display properly.

Items

'¢ Improved versions of Alchemist's Fire will now provide the correct damage bonus when applied to weapons.
'¢ Fixed an issue with electrical traps that was causing neutral creatures to be affected by the secondary damage.
'¢ Electrical trap damage will now arc to other creatures when the trap is set with the Set Trap skill.
'¢ Fatal sonic traps will no longer damage neutral faction creatures.
'¢ Epic sonic traps will no longer damage neutral faction creatures.
'¢ Fixed an issue that was causing gas traps to apply poison twice to the same target.
'¢ Fixed an issue that was preventing gas traps from damaging enemies when placed with the Set Trap skill.

New Features

General

'¢ New client command line option: -home. Allows user to specify an alternative location to "My Documents\Neverwinter Nights 2"
'¢ New INI file option "Pause On Lose Focus". A setting of 1 will cause the game to pause when losing focus. A setting of 0 will not pause the game when it loses focus.

Multiplayer

'¢ New server ini option: HideChallengeRatingInExamine
'¢ New server ini option: HideEffectListInExamine
'¢ Files located in the C:\Users\\Documents\Neverwinter Nights 2\hak (Vista) and in the C:\Documents and Settings\\My Documents\Neverwinter Nights 2\hak directories will now load prior to character creation.
'¢ Added support for Server to Server transitions through the function ActivatePortal() - Currently the parameter for seemless transition must be set to TRUE
'¢ A new .ini option has been added to allow server admins (hosts) to toggle the auto-heal feature on or off for player login. With the feature turned off, when a player rejoins a server, they will be in the same condition as when they logged off (HP, Spells per day, etc.).
'¢ A new Content Autodownloader system has been added to Neverwinter Nights 2 Multiplayer. It is designed to be used with the dedicated server. Changes have been made to the Dedicated Server, Game Client and Toolset to accommodate this new feature. Two documents, Autodownloader Server Admin Guide.pdf and Autodownloader Toolset User Guide.pdf, can be downloaded separately.
'¢ Server admins now have the ability, as an option, to preempt the use of the override folder on clients
'¢ New server command line option: -home. Allows user to specify an alternative location to "My Documents\Neverwinter Nights 2"
'¢ New server command line option: -cs 0/1 <- turn off/on downloader (defaults to no downloader behavior)
'¢ New server command line option: -du 0/1 <- turn off/on custom UI on the client (defaults to allow custom UI)
'¢ New server command line option: -do 0/1 <- turn off/on override folders on the client (defaults to allow override)

Scripting

'¢ Added script function int GetVariableValueInt(object oObject, int nIndex); Get the value of a local int stored at the index provided. 0 if no var is present.
'¢ Added script function string GetVariableValueString(object oObject, int nIndex); Get the value of a local string stored at the index provided, empty string if no var is present there.
'¢ Added script function float GetVariableValueFloat(object oObject, int nIndex); Get the value of a local float stored at the index provided. 0.00 if no var is present there.
'¢ Added script function location GetVariableValueLocation(object oObject, int nIndex); Get the value of a local location stored at the index provided. Invalid location no var is present there.
'¢ Added script function object GetVariableValueObject(object oObject, int nIndex); Get the value of a local object stored at the index provided. OBJECT_INVALID if no var is present there.
'¢ Added script function int GetVariableCount(object oObject); Get the number of local variables stored on this object.
'¢ Added script function void SetBaseAbilityScore(object oCreature, int nAbilityType, int nScore); EXPERIMENTAL! Note that any changes to skill rank will NOT be lost if the character is de-leveled. IMPORTANT: Most usages of this will cause characters to fail 'enforce legal character' restrictions.
'¢ Added script function void SetBaseSkillRank(object oCreature, int nSkill, int nRank, int bTrackWithLevel = TRUE); EXPERIMENTAL! set bTrackWithLevel = TRUE if you wish for the skill change to be associated with the character's level. In other words, should the character lose the skill change if they lose their current level? IMPORTANT: Most usages of this will cause characters to fail 'enforce legal character' restrictions.
'¢ Added script function void SendChatMessage(object oSender, object oReceiver, int nChannel, string sMessage, int bInvokeCallback = FALSE); This function is used to send a chat message, as if spoken by a PC or by the server. Except for 'CHAT_MODE_SERVER', oSender must be a PC or nothing will occur. oSpeaker - the PC who will speak, OBJECT_INVALID if channel is CHAT_MODE_SERVER. This must be a valid PC object for CHAT_MODE_PARTY to work. oReceiver - if nChannel is CHAT_MODE_TELL or CHAT_MODE_SERVER, then this must be the PC who will be receiving the message. nMode - CHAT_MODE const indicating the type of message to be sent. Only the CHAT_MODE_* values provided are accepted. sMessage - actual message text bInvokeCallback = the module's nChat script will be invoked to filter this message, if this is TRUE. WARNING: use extreme caution if setting bInvokeCallback to TRUE from within the OnChat handler itself -- this could lead to an infinite loop and hang your module!
'¢ Added script function int GetIsLocationValid(location lLocation); Returns TRUE if the location is a valid, walkable location.
'¢ Added script function int GetSurfaceMaterialsAtLocation(location lLocation); Returns a bitmask composed of 0 or more SM_* values.
'¢ Added script function int GetSpellKnown(object oCreature, int nSpell); EXPERIMENTAL! Returns if the spell is known to this creature under any class or level.
'¢ Added script function int GetItemBaseMaterialType(object oItem); returns the GMATERIAL_* const to get the base material type of the item specified. At this time, only the pre-defineid base material types work.
'¢ Added script function void SetItemBaseMaterialType(object oItem, int nMaterialType); EXPERIMENTAL! Set the base material type of oItem to nmaterialType, which must be a valid GMATERIAL_* const value.Added instant feat support. New column "Instant" in feats.2da
'¢ GetClassLevelByPosition and related script functions will now recognize custom classes. (This also applies for anything internally that performs calculations based on class level, and in particular should correct custom classes not being used in spell caster level calculations. )
'¢ New script function: void SetGlobalGUIVariable( object oPlayer, int nVarIndex, string sVarValue ); Sets global GUI variable, available to all UI screens as global:x. globals can be used in most places that locals can be used. This can also be used to work with the new UI callback UIRadialNode_OnInit_TestGlobalVar, which allows you to display/hide radial nodes based on global variable values. This value is available to all screens. oPlayer - player whose GUI will have the variable. nVarIndex - variable index, from 100 - 400 (values outside of this range will be ignored). sVarValue - the value to set.
'¢ Added support for reading texture and terrain 2da files from hak packs.
'¢ Added script function int FindSubString(string sString, string sSubString, int nStart = 0); // modified to add nStart
'¢ Added script function void SetSpellKnown(object oCreature, int nClassPosition, int nSpell, int bKnown = TRUE, int bTrackWithLevel = TRUE);
'¢ Added script function object GetLimboCreatureCount(object oCreature);
'¢ Added script function object GetCreatureInLimbo(int nTh);
'¢ Added script function void SendCreatureToLimbo(object oCreature);
'¢ Added script function void SetSkillPointsRemaining(object oPC, int nPoints);
'¢ Added script function int GetSkillPointsRemaining(object oPC);
'¢ Added script function int GetSpellSchool(object oPC, int nClassSeq);
'¢ Added script function void SetGender(object oCreature, int nGender);
'¢ Added script function void SetTag(object oObject, string sNewTag);
'¢ Added script function int GetArmorRulesType(object oItem);
'¢ Added script function void SetArmorRulesType(object oItem, int nType);
'¢ Added script function void SetItemIcon(object oItem, int nIcon);
'¢ Added script function object GetObjectByTagAndType(string sTag, int nObjectType, int nTh);
'¢ The following new script functions work together as a group:
o void AddScriptParameterInt(int nParam);
o void AddScriptParameterString(string sParam);
o void AddScriptParameterFloat(float fParam);
o void AddScriptParameterObject(object oParam);
o int ExecuteScriptEnhanced(string sScript, object Target);
o int ClearScriptParams();

Toolset & Custom Content

'¢ A new Content Autodownloader system has been added to Neverwinter Nights 2 Multiplayer. It is designed to be used with the dedicated server. Changes have been made to the Dedicated Server, Game Client and Toolset to accommodate this new feature. Two documents, Autodownloader Server Admin Guide.pdf and Autodownloader Toolset User Guide.pdf, can be downloaded separately.
'¢ Files located in the C:\Users\\Documents\Neverwinter Nights 2\hak (Vista) or in the C:\Documents and Settings\\My Documents\Neverwinter Nights 2\hak (WinXP) directories will now load prior to character creation.
User Interface
'¢ UIObject_Misc_ExecuteServerScript no longer truncates data that contains apostrophes
'¢ There is now a Close option on transition doors for players. (Used to be that if a door was a transition, they could only use it - not close it.)
'¢ New UI callback: UIRadialNode_OnInit_TestGlobalVar(global-index,test-type,rvalue, action)
o This UI callback allows modders to control when menu nodes are hidden or displayed, based on the results of comparing a global UI variable against a specified value. All tests are performed as int values if both values are valid ints; otherwise they're perform as case-insensitive string comparisons.
o Parameters are as follows
  '¢ global-index: global var index in format of global:x
  '¢ test-type: test to perform (all tests are done as as int if both values are int, else as case-insensitive strings)
  '¢ EQ = two values are equal
  '¢ NEQ = two values are not equal
  '¢ LT = global value is less than the comparision value
  '¢ LTE = global value is less than or equal to the comparison value
  '¢ GT = global value is greater than the comparison value
  '¢ GTE = global value is greater than or equal to the comparison value
  '¢ rvalue: a constant value that you are comparing the global variable to.
  '¢ action: SHOW or HIDE.
  '¢ The menu node will be displayed or hidden based on the value given:
  '¢ if the expression evaluates true and the action is SHOW, then the node will be shown
  '¢ if the expression evaluates false and the action is SHOW, then the node will be hidden
  '¢ if the expression evaluates true and the action is HIDE, then the node will be hidden
  '¢ if the expression evaluates false and the action is HIDE, then the node will be shown

2DA File Changes

Neverwinter Nights 2

'¢ Added Henchspells.2da
'¢ Spells.2da - Various spell changes
'¢ Feat.2da - added an "Instant" column.

Neverwinter Nights 2: Mask of the Betrayer

'¢ Added Henchspells.2da
'¢ Spells.2da - Various spell changes
'¢ Feat.2da - added an "Instant" column.

Neverwinter Nights 2: Storm of Zehir

'¢ Spells.2da - Various spell changes
'¢ Feat.2da - added an "Instant" column.