Inner Space:Build 4332 to 4828 Release Notes

From Lavish Software Wiki
Revision as of 08:40, 4 February 2009 by CyberTech (talk | contribs)
(diff) ←Older revision | view current revision (diff) | Newer revision→ (diff)
Jump to navigation Jump to search
          Inner Space
         Version 1.09
 (c) 2004-2008 Lavish Software
---------------------------------

1.09 Build 4828

- Fixed issue with mouse cursor in EVE Online in background windows (e.g. with
 Repeater)
- Fixed issue with cursor positioning in scaled windows

1.09 Build 4818

- Fixed a crash on game exit that would happen sometimes with Windows XP
- Fixed a bug with the new ismenu data type that prevented adding sub-menus or
 separators in some cases

1.09 Build 4816

- Fixed issue with DirectInput sometimes not accepting input on new sessions
 (example: Mouse sometimes would not work in EverQuest)
- Fixed issue with crash reporter coming up multiple times
- Sessions will now properly automatically reconnect to the Uplink (main program)
 if it is closed and restarted

1.09 Build 4811

- Restored Windows 2000 compatibility (fixed the message that said GetProcessId
 could not be located in KERNEL32.dll)
- Improved DirectInput support. There is no longer a "mouse flickering" issue in
 Star Wars Galaxies
- Custom menu items can now be added to the Inner Space menu
- DefaultStartup.iss (the default startup script) is now additionally used by the 
 Uplink, and now has functionality to scan new Scripts\init-uplink and 
 Scripts\init-session folders for scripts to automatically run any time the uplink
 or a session is launched, respectively. The scripts in these folders should not
 be scripts that stay running (but can launch scripts that do) because the "init"
 script functionality will run each script and wait for it to end before running
 the next. The scripts will be run in alphabetical order.
- Uplink
 * New data types:
   - ismenuitem
     - ismenu
     - ismenucommand
     - ismenuseparator
 * New Top-Level Objects:
   - ismenu ISMenu
     ... ISMenu[#] (return type is an ismenuitem-derived type)
 * Documentation for the above data types and TLOs:
   http://www.lavishsoft.com/wiki/index.php/IS:Uplink#Object_Types

1.09 Build 4799

- Press command will now translate Mouse1 through Mouse5 to mouse clicks of that
 button, giving another alternative to the mouseclick command and enabling (e.g.)
 press ctrl+mouse1
- Press command now accepts a -nomodifiers switch, which will release any modifiers
 for the duration of pressing the given combo. It may not be used with -release or
 -hold. 
 Examples: 
   press -nomodifiers 2
   press -nomodifiers alt+2
   press -nomodifiers ctrl+mouse1
- Bind -delete will now accept the wildcard character '*' (asterisk) at the end of
 the name
- Alias -delete will now accept the wildcard character '*' (asterisk) at the end of
 the name

1.09 Build 4794

- Fixed Num Enter, Num 5, and Clear (Clear is Num 5 without Num Lock)

1.09 Build 4791

- New object members:
 * bool gdiwindow.IsForeground (Ex: ${Display.Window.IsForeground})
 * monitor gdiwindow.Monitor

1.09 Build 4790

- Fixed a recently-introduced crash in Age of Conan and probably other games
- New commands:
 * FocusClick application|eat|click
   Sets focus click behavior. Default is now "application" meaning it follows the
   host application's default behavior (build 4786 made the default "eat", spurring some
   complaints). Eat means a click used to focus the window will be eaten. Click means 
   a click used to focus the window will also be interpreted as a click in the host.
- Support added for G11 keyboards (G-key and M-key binds; G15 keyboards were 
 already supported). Also added support for 6 G-key G15 keyboards.
- New object types:
 * g15 - used for querying or setting M-key lights, keyboard and LCD backlight levels.
         Also works for G11 keyboards.
- New object members:
 * g15 input.G15

1.09 Build 4786

- Experimental EverQuest II window sizing support (note: EQ2 doesn't make this easy,
 so there may be some wonky behavior)
- Improved process launcher behavior -- now supports more games, tested to include 
 Lord of the Rings Online. May also include D&D Online and Entropia Universe, among
 others.
- Fixed display scaling issue with Lord of the Rings Online
- Fixed FileRedirect command functionality for some cases that were not working, 
 such as config.wtf in World of Warcraft
- Game detection process will no longer modify existing default profiles
- LavishScript
 * Fixed auto-destruction of global scope arrays

1.09 Build 4761

- New command "WindowCharacteristics" combines WindowFrame, WindowVisibility, 
 WindowPosition and WindowFrame commands into a single command for improved
 performance when setting multiple characteristics
- Hopefully fixed issue where multiple sessions launched fast enough could think
 they could use the same name (e.g. 2 sessions saying is1)
- Fixed handling of Right Control, Right Alt and Right Shift 
- New data types
 * monitor
- Added object members
 * uint display.Monitors
- New events
 * OnMouseWheel[Offset] - Offset is a multiple of 120, for example 120 is one
   click up, -120 is one click down, -240 is two clicks down
 * OnMouseEnter - Mouse has entered the display window
 * OnMouseExit - Mouse has left the display window
- The following events now have a bool Context object (a Context object is used
 with many different events to provide contextual information for the event). For
 these events, setting the Context bool to FALSE will block the input from being
 processed by the game or by binds:
 * OnAxisMove
 * OnButtonDown
 * OnButtonUp
 * OnButtonMove
 * OnDPadMove
 * OnMouseWheel  
- Added new MouseWheel <Offset> command for emulating mouse wheel movement
- Added mouse:Wheel[Offset] method for emulating mouse wheel movement
- Added new command in Uplink, only available from sessions
 Syntax: RelayGroup -list|-join <name>|-leave <name>
 Example: Uplink relaygroup -join tanks
- Relay command now accepts relay group names, and 
 "other <relay group name>" (to send to all OTHER in that group)
- Some crashes related to IS-D3D9 fixed
- LavishScript
 * Added uint system.Processors
- LavishGUI
 * When Left and Right clickthru are set, scroll wheel will automatically
   fall through as well
 * MessageBox and InputBox commands now accept a -skin parameter
   - Note: Avoid using either where possible
 

1.09 Build 4740

- Frame locking will now always occur at the soonest opportunity
- MouseTo command now has an optional -relative parameter
- mouse object type
 * mouse:SetPosition now has an optional -relative parameter
 * bool mouse.Cursor is TRUE if the mouse cursor is visible
- New events
 * OnMouseMove[ChangeInX,ChangeInY]
- Uplink
 * New events
   - OnRemoteSessionConnected[uplink name,full session name]
   - OnRemoteSessionDisconnected[uplink name,full session name]
   - OnUplinkRenamed[ipaddress,name]
 * Updated events
   - OnUplinkDisconnected[ipaddress,name]
 * New object types
   - session
   - remoteuplink
 * New Top-Level Objects
   - session Session[#]
   - remoteuplink RemoteUplink[name]
 * Updated Top-Level Objects
   - session Session[name]

1.09 Build 4711

- Added "all other" and "all other local" targets to relay command
- Relay should be more friendly when quoting the command to send
- LavishScript
 * Added -repeat # switch to Execute command

1.09 Build 4700

- Added -stealth switch to windowframe command

1.09 Build 4698

- Fixed sticky CTRL / SHIFT / ALT keys
- Added 'GlobalKey' command which can allow specified buttons to bypass Inner Space's virtualized
 input states and use the global key state, for a given session. An example use for this feature 
 is to allow game-specific voice chat keys to activate voice chat when the window is not foreground.
 * Syntax: GlobalKey -keylist|-list|-clear [key]|<key>
   Examples:
     GlobalKey ctrl
     GlobalKey mouse3
- Non-3D applications will now have an emulated 30 frames per second, thusly allowing, for example,
 relaying commands to non-3D applications such as Notepad.exe (though they will still not have
 full Inner Space display and input support)
- Fixed IS-D3D9.dll related crash on shutdown in Age of Conan and EVE
- Fixed mouse wheel issues in Warhammer Online
- LavishGUI
 - Added SkinPrefix attribute to SkinTemplate tag to simplify skinning a little
 - ScrollBar:
   * Skinning improved. Instead of 3 different properties per button and 2 for the slider,
   new templatable UpButton, DownButton and Slider tags define the actual buttons and slider.
   * Can now be created via XML
 - TabControl:
   * Skinning improved. Instead of 3 different properties per button, new templatable LeftButton 
   and RightButton tags define the actual buttons. Some properties (size and positioning) will be 
   overridden by the TabControl. If the new tags are not present, the old functionality will be 
   used for compatibility.
 - TextEdit:
   * VerticalScrollBar tag is now a container for the actual scroll bar
 - Console:
   * ScrollBar tag is now a container for the actual scroll bar
 - ListBox:
   * ScrollBar tag is now a container for the actual scroll bar
 - TextEntry:
   * Now supports Texture and TextureFocused
 - Gauge:
   * Now inherits Frame, allowing BackgroundColor, etc
   * Now has a TopTexture, which will be overlayed on top of the filler. A solid filler can now appear
     behind a semi-transparent top layer.
 - Window:
   * Percent-based window sizes no longer add the border size to the height/width of the window
 - Added Tree control
 - LavishScript object changes:
   * Added string lavishgui.CurrentSkin - During loading a UI with a skin, this is the name of the skin.
     For example, in an OnLoad embedded script, this could be stored for later use.
   * Added lguitexture:Copy[lguitexture] - Copies the given texture details into this one. For example,
     from a cache of textures (such as a set of hidden frame elements)
   * Added optional 4th parameter to lguielement:AddChild, which if present specifies the skin to use.
   * Added lguielement.AddChild, identical to lguielement:AddChild, but returns the created element.
   * Added lguielement:SetMetadata[key,value]
   * Added lguielement:UnsetMetadata[key]
   * Added string lguielement.GetMetadata[key]
   * Added lguibutton.Texture, lguibutton.TexturePressed, lguibutton.TextureHover
   * Added lguicheckbox.Texture, lguicheckbox.TexturePressed, lguicheckbox.TextureHover,
           lguicheckbox.TextureChecked, lguicheckbox.TextureCheckedPressed, lguicheckbox.TextureCheckedHover
   * Added lguilistbox.Texture
   * Added lguicombobox.Texture, lguicombobox.ButtonTexture
   * Added lguitabcontrol.TabTexture, lguitabcontrol.TabSelectedTexture
   * Added lguitextentry.Texture, lguitextentry.TextureFocused, lguitextentry.TextureCaret, 
           lguitextentry.TextureCaretOverwrite,
- DefaultSkin.xml has been updated to reflect the LavishGUI changes
- LavishScript
 - Implemented 'persistentref' type
   Members:
   * ... Reference
   Methods:
   * SetReference[object]
 - Implemented 'type' type members:
   * string PersistentClass

1.09 Build 4676

- Reimplemented delay on emulated keypress release, which should help solve key emulation issues 
 with games that have poorly implemented input systems (e.g. EverQuest II)
- LavishGUI
 - OnLeftDown and OnRightDown embedded script actions are now implemented
 - OnMouseWheel event now executes instead of OnLeftClick when the mouse wheel is moved
 - lguilistbox:Sort method (and by inheritance, the same for combo boxes) now allows for an optional
   parameter containing the name of a global atom to be used for sort comparison.
     atom(global) my_custom_sort(int A, int B)
     {
         // ${This.Item[${A}]} vs ${This.Item[${B}]} 
         // where This is the list box, A is the ID of the first item, B is the ID of the second
         // return -1 (less than 0) if item A should be before (above) item B (aka "A is less than B")
         // return 0 if item A is equal to item B
         // return 1 (greater than 0) if item A should be after (below) item B
         // ... just like string comparison functions
     }
- LavishScript
 - Improved data sequence error messages, and there was much rejoicing. 
 - Applied a performance optimization to query evaluation. Some (most?) queries should now run 2 to 3 times faster.
 - Implemented 'lavishscript' type members:
   * uint CreateQuery[expression] - Creates a query with the given expression -- e.g. ${LavishScript.CreateQuery[Name=="Bonkers"]}
   * string RetrieveQueryExpression[ID] - Retrieves the query expression for a previously created query
   * bool QueryEvaluate[ID,object] - Determines if the given object matches the given query
 - Implemented 'lavishscript' type methods:
   * FreeQuery[ID] - Frees a previously created query
- Added 'inputdevice' type
- Implemented 'input' type methods:
 * GetBindIterator
 * GetAxisIterator
 * GetDPadIterator
 * GetDeviceIterator

1.09 Build 4665

- LavishScript query system memory leaks fixed
- Graphical glitch fixed in some games

1.09 Build 4653

- Warhammer Online input-related issues solved
- Age of Conan input-related issues solved
- .NET initialization failure code 3 now provides additional information. We are working on fixing
 this issue.

1.09 Build 4618

- LavishScript
 - Math errors now generally show the math sequence being processed (due to certain limitations,
   you may see two different failure messages in a row)
 - Setting uint at declaration time now works identically to uint:Set

1.09 Build 4614

- .NET 2.0
 - Most LavishScriptAPI functions that enforce explicit frame locking when requested 
  (LavishScript.RequireExplicitFrameLock=true) now frame lock themselves when explicit frame locking 
  is not enforced. 

1.09 Build 4611

- .NET 2.0
 - Fixed adding LavishScript commands
- Relay command no longer adds an unecessary layer of escaping internally. This fixes some 
 relay-related bugs, but MAY break some workarounds.

1.09 Build 4602

- Fixed Final Fantasy XI Online keyboard and mouse issues
- .NET 2.0
* Fixed bug with InnerSpaceAPI.InnerSpace.Memory.WriteMemory not getting the modification protected

1.09 Build 4601

- Fixed mouse functionality in Hellgate London
- Fixed issue with "black console window" in Age of Conan (beta)
- Improved handling and output of "DotNet" command where the given assembly could not be found, and
 added display of the inner exception if there is an unhandled exception in the assembly's main thread
- Misc other fixes

1.09 Build 4600

- Fixed "mouse not working" bug in EVE Online (this should also fix Final Fantasy XI Online, though
 it has not yet been confirmed).

1.09 Build 4598

- Most of the old navigation system deprecation messages have been removed. The "navigation" command
 is now the only thing that will display the message in the console. The deprecation message now says:
    Navigation command has been deprecated since March 2006 (over a year and a half).
    It's really not that hard to convert to LavishNav, and we've been patiently waiting for people to do so, so that we can remove this command.
    So please, instead of whining that it is spamming, at least make some effort to see that the old, deprecated system does not get used anymore.
    It crashes anyway, and those crashes will not be fixed.
 Also, this is not something for regular users to worry about. If you're not creating scripts, then
 all you need to do is complain to the people who wrote the scripts you are using that give the message.

1.09 Build 4595

- .NET Initialization failure code 3 should be fixed
- To make it easier to convert paths to LavishNav, the old navigation system now has the ability to
 export loaded data (all, or individual worlds) to LavishNav-compatible XML files. Any of the export
 methods in the old system (navigation -dump, navigation:Export, and navworld:Export) now accept a
 -lavishnav switch as a parameter prior to the output filename. For example, to convert foo.xml:
   navigation -load foo.xml
   navigation -dump -lavishnav foo-lnav.xml
   navigation -reset

1.09 Build 4594

- The "Open" command (only available in the Uplink) now accepts an optional third parameter, which is
 a command to be executed upon launch. The execution of the command will take place at the end of
 the session's Startup Sequence. 
- .NET 2.0
 * Performance of GetMember<T> / GetObject<T> where the retrieved object is one of the base 32-bit (max)
   LavishScript numeric types should be a bit better. Such conversion usually happens by converting
   to and from strings, but now has a more direct path for those instances.

1.09 Build 4589

- Stability fixes, including:
 * NearestConnectedRegion in LavishNav should no longer cause crashes
 * Fixed additional session launch bugs, including the EverQuest II patcher

1.09 Build 4577

- Fixed various bugs with FFXI Online (still working on a keyboard issue)
- Lord of the Rings Online mouselook issue fixed
- DotNetScript fixed for launching .NET scripts within games
- Windows 2000 launch crashes fixed

1.09 Build 4547

- Session launches now use a new loader. This should hopefully fix launch crashes with EVE. Sorry, this
 probably does not affect the win2k issues with Vanguard, that's still coming.

1.09 Build 4529

- Stability fixes, including:
 * System:APICall crash should be fixed
 * Fixed EVE launch bug

1.09 Build 4528

- Stability fixes, including:
 * Fixed remaining Vanguard launch crashes, hopefully
 * Fixed LavishScript crash with ... construct when not supplying all prior parameters to the function call
- LavishNav:
 * Improved Fully-Qualified Name resolution algorithm

1.09 Build 4505

- Stability fixes, including:
 * DecodePointer error messages will no longer pop up on Windows versions earlier than Windows XP w/ SP2
 * Vanguard sound-related crash on startup should be fixed

1.09 Build 4501

- Stability fixes, including:
 * Fixed LavishGUI crash when a command button destroys itself in OnLeftClick (hint for Vanguard script
   devs: if you're using OnLeftClick, you don't need to use a command button!)
 * Hopefully fixed LavishNav-related crashes with vgcraftbot and some other Vanguard scripts
- Fixed EVE launching under Windows Vista
- World of Warcraft safety updates (requires new version of Warden protection)

1.09 Build 4476

- Fixed .NET initialization error
- Fixed mouselook issue with EverQuest 1, and probably other games that use certain features of DirectX
 for mouse control

1.09 Build 4473

- When loading an extension with the Extension command, and the extension is already loaded, the message
 will now indicate that the extension "is already loaded", rather than "could not be loaded".
- The DotNet command now converts relative file paths (for the "assembly name" parameter) into
 absolute file paths, with the Inner Space .NET Programs folder as its root. This should not change any
 other usage of the DotNet command, and should not adversely affect anyone.
- Fixed graphics incompatibility with The Lord of the Rings Online, as well as other games that may have
 had similar graphics glitches

1.09 Build 4472

- World of Warcraft can no longer be launched through Inner Space without Warden protection.

1.09 Build 4466

- Stability fixes, including:
 * Fixed crashes with Warcraft III
 * Fixed .NET application random crash on unload (the infamous "LavishVM Frame Ends" crash)
 * Fixed LavishScript bug when entering a command starting with a special character
- Added a .NET scripting engine. This engine works by reading an XML file that describes
 how to build a temporary assembly to execute. The XML file can be used with the RunScript 
 command to run the script (e.g. "run myscript"). Any .NET language available on your computer can be 
 used -- if the .NET framework is installed, this usually includes C#, C++, VB, and JScript. Additional 
 languages may require separate installation. If an invalid language name is used, then the list of 
 languages that are available is displayed. Documentation for this feature is available at
 http://www.lavishsoft.com/wiki/index.php/DotNetScript

1.09 Build 4456

- Stability fixes, including but not limited to:
* Threads (e.g. in .NET) that terminate (e.g. via an unhandled exception) while having active 
  frame locks no longer result in a permanent frame lock
* Fixed DEP crashes, e.g. those caused as a side effect of the World of Warcraft patch

1.09 Build 4447

- Stability fixes, including but not limited to:
 * Fixed potential crashes when launching games. The crashes could happen with various malware
   present, such as Wine (jab jab), or other programs installed.
 * Fixed LavishSettings iterator crashes and iterator:Jump on LavishSettings iterators
 * Fixed crash in LavishScript preprocessor with empty preprocessor #macros
- Added TLO to uplink:
 * bool Session[name]

1.09 Build 4443

- Stability fixes
- Added 3rd and 4th monitor selection to game profile configuration
- .NET 2.0
 * LavishVMAPI.FrameLock now implements IDisposable and its Lock and Unlock members are now public,
   as they were meant to be. The class is actually usable now.
 * LavishNav API now properly handles the AllPointsValid flag when creating regions

1.09 Build 4438

- Stability fixes
- ISXDK 30b changes LavishScript object container classes to use virtual functions. Extensions
 that use these classes should be recompiled with the new ISXDK to avoid crashes when accessing
 them through LavishScript.
- Numpad Enter should now work properly for games that use standard Win32 input
- Modifier key emulation (e.g. shift, alt, ctrl) should now work properly for games that use 
 standard Win32 input
- Per-thread frame lock management is now implemented directly in Inner Space (in addition to
 the .NET API functionality previously added). Frame locks held by the application's main thread
 (e.g. due to locks in event execution not cleaning up) should now be automatically released to
 prevent deadlock, and will echo a warning to the console.
- LavishScript
 * The global script's CWD (current working directory) is now properly set to the LavishScript
   base path
- .NET 2.0
 * Command and Event handlers now count thread frame locks. If a command or event handler executes
   and locks without unlocking or successfully unlocks without locking (due to unlocking a lock
   held by the thread, but not in the command or event handler), a warning will echo to the console.
 * Fixed bug from build 4419 that caused commands added by .NET apps to be removed by garbage 
   collection
 * InnerSpaceAPI.InnerSpace.Memory.WriteMemory now has an overload that does not require the Size 
   of the byte array. WriteMemory and UnwriteMemory are now implemented.

1.09 Build 4421

- Stability fixes including LavishNav:Clear and console resizing
 * Note to the guy with the irate message about console resizing: one crash report per day
   per issue is just fine. Reporting the same issue many times won't help. One person
   submitting tons of identical crash reports only gets that person filtered out of our
   crash reports. The issue is fixed because it has been around for a while, and we've gotten
   crash reports from several people over a period of time. Besides, you don't need a negatively
   sized console anyway.
- .NET 2.0
* LavishVMAPI
  - New class LavishVMAPI.FrameLockManager helps resolve Frame Locking issues by retaining
    a count of locks. Problematic operations will result in thrown exceptions (see 
    LavishVMAPI.Exceptions). Can be instantiated, but is automatically used by the API (see below).
  - LavishVMAPI.Frame now uses a thread-static FrameLockManager (a separate FrameLockManager
    per thread). All user-created FrameLockManagers use LavishVMAPI.Frame.
  - New class LavishVMAPI.FrameLock wraps frame locking in a friendly, beige package. Maintains
    a single lock (may use a custom FrameLockManager), and automatically unlocks upon destruction.
* LavishScriptAPI
  - LavishScriptAPI.LavishScript.Events.AttachEventTarget, DetachEventTarget and ExecuteEvent 
    now have overloads for passing the event name as the first parameter, instead of having to use
    the event ID.

1.09 Build 4419

- Fixed EverQuest II crash on startup after today's EQ2 patch
- .NET 2.0
* Various APIs have been improved
* Direct usage of delegates as methods is no longer used. The delegates have been internalized 
  to improve code documentation as well as provide better cross-language compatibility.
* LavishScript events now use a standard event handler mechanism, using LSEventArgs. All
  event usage must be converted. Unhandled .NET exceptions during event execution will be 
  trapped and echoed to the console. Events are automatically cleaned up for you, if not
  done explicitly.
* Commands now use public delegate int CommandTarget([In] string[] args). Unhandled .NET
  exceptions during command execution will be trapped and echoed to the console. Commands
  are automatically cleaned up for you, if not done explicitly.
* Documented all Lavish.InnerSpace.dll API
* When the .NET functionality fails to initialize, more information is now given
- LavishScript
* Object query support has been added. Extensions can use ISXDK 30a (or later) for direct
  access to this functionality. An object query is a math formula where all variables
  are relative to a specific object, and results in a boolean value -- the query is either
  true, or it is false. Query math can compare and manipulate text, decimals, or integers 
  (note that bool counts as an integer for this purpose) with standard math operators. Text
  comparisons are not case sensitive. One intended use for object queries is a uniform search 
  mechanism, to find an object or set of objects from a larger set of objects (compare to a 
  SQL SELECT statement, where a LavishScript object query is the WHERE clause).
  See http://www.lavishsoft.com/wiki/index.php/LavishScript:Object%20Queries for more info.

1.09 Build 4402

- Stability fixes
- LavishNav
 * Added lnavregion:SetBounds[] -- same parameter ordering as AddChild, starting with
   region-specific information (e.g. the size and position, not name or type)

1.09 Build 4396

- Restored XP64 compatibility

1.09 Build 4394

- Stability fixes
- New games successfully tested
 * Final Fantasy XI Online
 * Lord of the Rings Online
 These games have not yet been added to auto-detection. FFXI can be added via Add Game
 by selecting pol.exe, and LOTR can be added by selecting TurbineInvoker.exe. The games
 were tested under Windows Vista. There are reports that they may not yet work with
 Windows XP.
- LavishNav
 * Fixed -dynamic flag for lnavpathfinder:SelectPath
 * Added lnavpathfinder.NearestConnectedRegion
- .NET 2.0
 * Stability updates
 * Documentation updates

1.09 Build 4371

- Stability fixes
- .NET 2.0
 * API documentation XML files are now included

1.09 Build 4369

- Fixed a nasty memory leak

1.09 Build 4367

- Stability fixes

1.09 Build 4366

- ISXDK v30 - Stability fix involving the LavishScript index type.
- LavishNav
 * Fixed inaccuracy in A* pathfinding algorithm
 * Fixed BestContainer algorithm when traversing backward
 * Added optional "max cost" parameter to lnavregion:SelectPath
- LavishScript 1.96
 * LSModule v17
 * Crash fixed when executing a command with a parameter that only contains a quote, such
   as echo "
- .NET 2.0
 * Fixed LavishNavAPI.Region.AddSphere and AddRadius -- they previously mixed up part of
   the coordinates with the radius.
 * LavishScript-related API that accepts argc,argv now translates the args to LavishScript 
   rules (i.e. null args are translated to empty strings) -- the actual string values are 
   not modified
 * Fixed LavishNavAPI functions returning List<Region>

1.08 Build 4347

- Video capture technically works again. Sound is not confirmed to correctly record.
- .NET 2.0
* Added static function IsNullOrInvalid to LavishScriptObject and LavishScriptPersistentObject,
  equivalent to string.IsNullOrEmpty
* Fixed crash bug in LavishScriptObject.GetPersistentIndex
- LavishNav
* Automatic region naming is now available when dynamically creating regions (i.e. not from
  permanent storage). Use "auto" as the name to have a name automatically generated.
* .NET API now includes Add methods for regions without supplying a name, for auto-naming

1.08 Build 4338

- LavishNav
 * Fixed discrepancy between lnavregion.Connect and lnavregion:Connect. Both work identically now.

1.08 Build 4337

- Some stability fixes, including but not limited to:
 * LavishGUI user input boxes should no longer crash (this is usually shown as heap corruption
   under Windows XP, and as a crash every time under Vista)
 * LavishScript should no longer crash when cleaning up global variables of script-defined type
 * LavishSettings iterators should no longer crash when pointing to a node that was just
   removed
- LavishScript
 * The default precision for the float and relative types (floatptr, float64ptr) when
   reduced to text is now undefined, instead of 2 decimal places. The "Centi" member
   of float can be used to reduce the precision to the old format for display. For
   example: ${Float[3.14159].Centi}. The intended effect of this is to improve
   overall precision in calculations -- for example, this makes it much easier to
   use trigonometry functions. This could fix some trig-related crashes as well.
- LavishNav
 * Added lnavregion:AddToGroup[name] - shortcut for creating a named region group and
   adding the region. This is also available in the .NET API.
- .NET 2.0
 * Added LavishScriptAPI.ExecuteCommandEx, which is a near-direct path to the command
   implementation -- performing no LavishScript parsing, etc.

1.08 Build 4335

- LavishGUI API v11 - Extensions that provide custom GUI element types (such as radars)
 must be updated, or the GUI elements will not be available -- the extensions will
 otherwise work, however. ISXDK 29f is available for download.
- Windows Vista stability fixes

1.08 Build 4332

- .NET 2.0
* LavishSettingsAPI added to Lavish.InnerSpace.dll (thanks to Tenshi for providing
  the base for the wrapper)

See Also