Skip to content

Releases: GenieClient/Genie4

Lamp Hotfix

26 Dec 02:35
Compare
Choose a tag to compare

4.0.2.9 presents a Hotfix for Lamp and is being released in tandem with Lamp 1.0.4.0.
A couple new settings were added, including a flag for a new Lamp function which automatically updates your Automapper Scripts when you use it to update your Maps.
image

Due to bugs in the previous Lamp version, you may not be able to use it to update to this version. Hopefully this resolves that. Updates from 4.0.2.8 have properly updated Lamp before downloading but 4.0.2.7 is untested.

Build 8 was pushed into the build 7 release to fix a reversed command window visibility issue. As this comes only a day after the significant Release build 7, we are including the previous release notes below for visibility.

Version 4.0.2.7 features a number of minor updates for QoL.

  • Added an Automapper Script Settings Window, to make the Automapper Script's settings more accessible
    image

  • Added a new experimental feature: #script reload {targetscript}
    This will reload a script and attempt to preserve your position within it. Significant changes to scripts cannot be accounted for and will likely cause it to crash. This is intended as a debugging tool for making minor tweaks during runtime.

Support for Images in Windows has been added.
Related config options:

  • ArtDir allows you to specify a directory for images to be read from. Default is Art in the Genie Directory.
  • ArtRepo allows you to specify a URL - which must point to a zip file - from which Lamp will download and unpack to the ArtDir
  • ShowImages toggles the ability to display images. This defaults to On and also has a checkbox in the File Menu.

A new Command has been created for displaying images from the command line (or a script): /#img and /#image (take your pick, they're the same call). The following parameters are available. The order is not important.
>Window - Like Echo, you can specify a Window to receive the image
h:xx or height:xx - where x is your desired height, you can specify a height to resize the image to
w:xx or width:xx - where x is your desired width, you can specify a width to resize the image to
no switch is necessary for the filename
example: #img >ScriptLog h:30 w:30 bullet.png

image

ScrollBars should now only be visible when needed

Fixed a handful of highlight issues.
custom script extensions greater than 3 characters should no longer bleed into the scriptlist variable
added $account global variable that populates when loading your profile
improved Lamp execution, it will now wait for Lamp to launch and open the Lamp window when self-updating, before closing. Previously it was closing before it finished launching Lamp and took Lamp out with it, causing it to hang.
added parsing of variables to #script command
Added Always On Top option under Layout, which sets the entire client to stay on top of other windows.
A new config option under the Layout menu will align and size the input bar to match your Game window. This defaults to off, where it is the full length of the game client.
Errors which open the Error Dialog will now also record to the Windows Event Log
A .NET Library was updated for security
The Open Directory menu now opens the Genie directory when clicked
The min/max functions will now evaluate more than the first two values
Improved accuracy of roundtime and casttime as tied to game time
Added a new Tree View for Profiles, with a Classic Connect Window setting which defaults to on. Make sure to #save config if you want to keep this off.
Closed an infinite loop caused from launching external files (this is the cause of Genie crashing when attempting to Update)
Added $roomcolor global variable, which returns the background color of the current Node on the Mapper
Web Links now open to Browser
Default paths for Lich have been updated for Lich5
added checkboxes to Window menu which can be used to open and close windows

4.0.2.7 QOL Update

25 Dec 02:24
e55a45f
Compare
Choose a tag to compare

This version features a number of minor updates for QoL.

  • Added an Automapper Script Settings Window, to make the Automapper Script's settings more accessible
    image

  • Added a new experimental feature: #script reload {targetscript}
    This will reload a script and attempt to preserve your position within it. Significant changes to scripts cannot be accounted for and will likely cause it to crash. This is intended as a debugging tool for making minor tweaks during runtime.

Support for Images in Windows has been added.
Related config options:

  • ArtDir allows you to specify a directory for images to be read from. Default is Art in the Genie Directory.
  • ArtRepo allows you to specify a URL - which must point to a zip file - from which Lamp will download and unpack to the ArtDir
  • ShowImages toggles the ability to display images. This defaults to On and also has a checkbox in the File Menu.

A new Command has been created for displaying images from the command line (or a script): /#img and /#image (take your pick, they're the same call). The following parameters are available. The order is not important.
>Window - Like Echo, you can specify a Window to receive the image
h:xx or height:xx - where x is your desired height, you can specify a height to resize the image to
w:xx or width:xx - where x is your desired width, you can specify a width to resize the image to
no switch is necessary for the filename
example: #img >ScriptLog h:30 w:30 bullet.png

image

ScrollBars should now only be visible when needed

Fixed a handful of highlight issues.
custom script extensions greater than 3 characters should no longer bleed into the scriptlist variable
added $account global variable that populates when loading your profile
improved Lamp execution, it will now wait for Lamp to launch and open the Lamp window when self-updating, before closing. Previously it was closing before it finished launching Lamp and took Lamp out with it, causing it to hang.
added parsing of variables to #script command
Added Always On Top option under Layout, which sets the entire client to stay on top of other windows.
A new config option under the Layout menu will align and size the input bar to match your Game window. This defaults to off, where it is the full length of the game client.
Errors which open the Error Dialog will now also record to the Windows Event Log
A .NET Library was updated for security
The Open Directory menu now opens the Genie directory when clicked
The min/max functions will now evaluate more than the first two values
Improved accuracy of roundtime and casttime as tied to game time
Added a new Tree View for Profiles, with a Classic Connect Window setting which defaults to on. Make sure to #save config if you want to keep this off.
Closed an infinite loop caused from launching external files (this is the cause of Genie crashing when attempting to Update)
Added $roomcolor global variable, which returns the background color of the current Node on the Mapper
Web Links now open to Browser
Default paths for Lich have been updated for Lich5
added checkboxes to Window menu which can be used to open and close windows

Dark Mode is here!

17 Dec 02:46
06d16cd
Compare
Choose a tag to compare

This release primarily focused on improving performance under the hood and fixing the remaining known highlight bugs. Full changelog below will detail those.

Exciting new features to call out. First, Sortable Configuration windows! This was one of the first requests put in and thanks to Thires we now have it!

And DARK MODE! That has been something we've long lamented not having. We have been calling it Dark Mode but what has actually changed is a series of new presets to control the color of different UI Elements. The defaults are as close as possible to the "classic" values as possible. These can be accessed in Edit -> Configuration -> Highlights -> Presets

You will notice a series of options that begin with automapper and ui which will allow you to set the colors of those items. Enjoy!

Another noteworthy change for Lich users is that, when launched with command line paramaters, the client now correctly consumes the passed authentication key and logs in, just like Wrayth and Wizard.

Changelog:
Added Column Sorting for most Configuration Window Tabs
Changed "Open User Data Directory" to a list of directories: Genie, Scripts, Plugins, Maps, and Logs
Switched Default Regex Parsing to Multiline
Added $roomnote global var loaded from map xml
Added an array of new presets for managing UI colors

  • automapper.panel - automapper.line - automapper.linestump
  • automapper.lineclimb - automapper.linego - automapper.node - automapper.path
  • ui.menu - ui.menu.checked - ui.menu.highlight - ui.window - ui.status - ui.textbox
    Added config AutoMapperAlpha to control alpha on nodes
    Added "automapper" presets to control Text and Background Color of the Automapper.
    Added an offset to Presets when they parse, fixing some unapplied presets
    Rewrote RegEx Highlighting to remove an offset that was causing it to misapply.
    Added the $unixtime reserved global variable which acts as a facade to the previously implemented @ unixtime @ special variable
    Added $client reserved variable which reports the client name
    Added a check for duplicate plugins when loading to alert the user and continue instead of crashing
    Moved parsing of RegExp Highlights so that they occur after Presets and before Non-RegExp
    Genie can now be launched using a SAL File
    Updated Command Line Parameters used in the Direct Connect method as below:
    C - The character name. This is used to determine which Profile to load.
    H - The Host URI - if you're using Lich you probably want this set to "localhost"
    P - The Port to connect on
    G - Game Code, such as DR or GS3
    K - The Connection Key, if you're using another program such as Lich or SGE to launch Genie after acquiring the Key
    Example Command Line Syntax:
    G:DR C:Djordje H:dr.games.play.net P:7910 K:12345678912345678912345678912345

4.0.2.5

17 Sep 20:35
bf94183
Compare
Choose a tag to compare

Featuring the new ScriptRepo Config and Stability Fixes

#ScriptRepo

This is an entirely new feature which allows the user to designate a path to a zip file that Genie can use to pull scripts from. The designed use case is for a github repo which places the files in a zip folder that can be statically accessed from a path. The new Lamp version, released in conjunction with this, performs the update by downloading and operating on the zip file - anything else will crash Lamp so we validate the string and require it to be a zip file.
This is a config so you can use #config scriptrepo to set it and the Update Scripts option from the Scripts Menu

Stability Fixes

This version of Genie sees a number of minor bug fixes across the board, from parsing to highlights to fixing a long standing if/else bug.

  • Added new #scriptrepo config. You can set this to a URL which must be a zip file, and use the Update Scripts button on the scripts menu to load the Zip to your #scriptdir
  • Checking for updates and updating maps/plugins no longer freezes Genie for the duration of the update.
  • Fixed if evaluations not properly skipping past remaining else/elseif statements in their block (#109)
  • Forced Linebreaks in Room Output where appropriate when using Condensed Mode (#103)
  • Removed Regex Matching for Bolded Room Objects, now using same logic as VolatileHighlights for RoomObjects (#116)
  • Updated Mapper to infer encoding from byte order instead of trusting the document's encoding header
  • Fixed instances where Volatile Highlights would apply color to non-matching text
  • Updated Automapper to infer coding when loading a map instead of trusting the file to self-identify its encoding
  • Expanded the Highlight command (#111)
  • Removed sub parsing during preset parsing (#105)
  • Fixed an error causing bold to apply to every instance of a string instead of the specified bolded string (#110)
  • Fixed Substring Evaluation to prevent hard crashes (#108)
  • Added negative length handling to Substring Eval (#108)
  • Added Parsing Globals in Substitutes (#108)
  • Removed Key Check for Legacy Premium Plugins (#108)
  • Set FE string to impersonate Wrayth due to client-based restrictions on commands and xml
  • Prevented printing of lines which are only XML and /r/n (#104)

4.0.2.4

02 Jun 22:37
Compare
Choose a tag to compare

Highlights, Prompt Settings, Threading Fixes

Highlights and Bolding

Long-time Genie users will notice a plethora of new bolded content which has never displayed correctly in Genie before! The method for applying preset highlights was rewritten, fixing a number of issues caused by the old method. One of the most visible and immediately evident changes is in the speech presets, which previously applied to the entire line. For those who are used to that and would prefer to still see it that way, we have added a new "Highlight Line" option for Presets in the Configuration window. This defaults off for all presets.

Prompt Settings

A number of adjustments were made to the flow of the status prompt, with new configuration options to help you find the flow you like.

#CONFIG PromptBreak

This will print incoming text from the game on a new line if the current line is a prompt. The default is on.

#CONFIG PromptForce

This will force printing of the prompt even when you're flagged to not receive a prompt from the game. The default is on, as this has always been the case. You now have the option to actually disable the prompt.

#CONFIG Condensed

This option removes all empty lines. The default is off.

ScriptExtensions

For decades we've been tied to the .CMD extension for scripts. Stormfront before Genie, Wizard before Stormfront, his father before him. Starting with this release you can now change the file extension that Genie reads scripts from. We recommend g4s (Genie 4 Script) but you do you. Make it whatever you like. To aid your transition, Lamp has a new Transmogrify feature which you can use - carefully and at your own risk - to change the extensions of your scripts. See that project page for more details on how to use Transmogrify, or run Lamp.

For the time being this defaults to .cmd.

UNIXTIME

You can now get your system unixtime in seconds using @ UNIXTIME @ (without the spaces, trying not to @ the user)

Threading Fixes

We narrowed down some of the previous threading changes which we suspect may have been at fault for some of the hanging in the client. Fixed a check that was making an unnecessary lock and causing significant lag when Debugging scripts.

#WINDOW POSITION Command

A new command has been created to move and resize windows, or create them in the desired position

  • #WINDOW POSITION {NAME} {WIDTH} {HEIGHT} {TOP} {LEFT}
    Name is the Window Name. The Client window can be targeted with the name Main, and the main Game window with the name Game.

Additional changes

  • Fixed Local Directory pathing to look correctly at the executable's directory and not the running directory, fixing cases where the client was attempting to operate in C:\Windows\System32 due to execution context, such as being pinned to the taskbar.
  • Robustified error handling for LichConnect to indicate when and which files couldn't be found, and where it looked
  • Updated Game object with Character Name and Instance Code when loaded from launch parameters
  • Added the Castbar to the items toggled by the Magic Panels layout option
  • Added new Volatile Highlights list to handle presets and bolded text, an alternative to the previous test solution for bolding
  • Updated directory validation to make relative paths relative to the data directory
  • Fixed a vulnerability to the monsterlist
  • robustified some error handling in evals to return false or -1 as appropriate rather than throw errors
  • added Gemstone instances to game list, removed Alliance of Heroes and Modus Operandi
  • added a linebreak after the update notifications
  • Tightened up display of paths
  • Updated validation of path configs to allow relative paths to be set correctly
  • Updated validation of path configs to create the folder if it does not exist
  • Added responses when setting #config
  • Added Map and Plugin Update Buttons
  • Added Test Client Option (disables autoupdate)
  • Populates Globals necessary for profile logic during connect (to be more Lich friendly)
  • Bug fixes in #lc and struct error in VS2022
  • Caught a WriterLock error in AddScripts

New Contributors

Other Contributors

Full Changelog: 4.0.2.0...4.0.2.4

4.0.2.3 - Updates, Links, and more!

23 Mar 04:48
Compare
Choose a tag to compare

What's Changed

  • Configured all progress bars to display the text received in the XML from the game rather than piece the text together
  • Tightened threading, added timeouts to all lock acquisitions to prevent a deadlock (fixing an automapper lockup)
  • Updated all Progress Bars (health, mana, etc) to display text received in XML Stream
  • Caught and handled invalid expressions in EvalMath. It will now print an error in the debug stream indicating the invalid expression and set the variable to 0.
  • Added new Lamp Updater Tool.
  • Fixed Links

4.0.2.2 - New ConnectScript Config and global var

  • Fixed the display of some error messages received during authentication.
  • Plugged a memory leak
  • Stopped authenticating account type, disallowed accounts won't get into the game in the first place
  • changed percWindow title to display Active Spells
  • Fixed a bug with Concentration Bar presets not applying
  • Fixed a bug with some Windows loading from layout incorrectly, causing them to not appear
  • Fixed update of LogDir to apply it when the change is made
  • Added Config for a ConnectScript - this will launch a script when you connect to the game, regardless of character
  • Added $connectscript global var parsing - this will launch a script when you connect to the game, configured per character
  • The Mana Bar text can now be set to display as Inner Fire for Barbarians and blank for Thieves by setting the global var "guild" to suit (ex: #var guild Barbarian). Sorry Osin.
  • Fixed several instances of collection modified errors
  • Added a fail-out when Authentication Fails to return that as the error
  • In addition to the above bug fixes, the bundled Plugins folder now contains version 1.9 of SpellTimer which resolves the issue with variables setting to 0 periodically.

4.0.2.1 - Minor Bug Fixes and Config Cleanup

  • Enabled use of ; as a command character for lich (note that this is still disabled by the --genie flag in lich)
  • set DoConnect to false when receiving a direct connection parameter
  • Updated ArrayList objects to Genie ArrayLists
  • Updated Connection String sent to Game Server
  • Minor code cleanup
  • Removed an apparently arbitrary prefix to commands sent to the game
  • Rewrote logic for the new directory configs (map, script, plugin) to be consistent with previously existing configs
  • added recognition of \n as a newline character even in the absence of \r

4.0.2.0 Hotfix 1 corrects Authentication issues

  • $connected now sets based on the state of the client rather than the call, resolving an issue where race conditions would cause it to set incorrectly
  • TLS 1.2 is explicitly called out as the protocol for SSL client authentication
  • Rewrote character key selection to be less discriminate in selecting the key, resolving an issue with special characters in the key as well as case sensitivity

4.0.2.0 adds TLS Authentication

  • fix: removes unnecessary comparisons by @scottr1634 in #56
  • feat: add global var $destination to be auto-populated by automapper by @scottr1634 in #55
  • Implementing TLS via TcpClient by @jingounchained in #65
  • Adding normal to list of known good status from Game Details Request by @KllrWhle79 in #66
  • Added a method for directly connecting to a stream without authenticating when launched with parameters modeled so /G{gamecode}/H{host}/P{port}/K{character}

New Contributors

Full Changelog: 4.0.2.0...4.0.2.2

4.0.2.2 - New ConnectScript options and global var

17 Mar 00:35
Compare
Choose a tag to compare

What's Changed

4.0.2.2 - New ConnectScript Config and global var

  • Fixed the display of some error messages received during authentication.
  • Plugged a memory leak
  • Stopped authenticating account type, disallowed accounts won't get into the game in the first place
  • changed percWindow title to display Active Spells
  • Fixed a bug with Concentration Bar presets not applying
  • Fixed a bug with some Windows loading from layout incorrectly, causing them to not appear
  • Fixed update of LogDir to apply it when the change is made
  • Added Config for a ConnectScript - this will launch a script when you connect to the game, regardless of character
  • Added $connectscript global var parsing - this will launch a script when you connect to the game, configured per character
  • The Mana Bar text can now be set to display as Inner Fire for Barbarians and blank for Thieves by setting the global var "guild" to suit (ex: #var guild Barbarian). Sorry Osin.
  • Fixed several instances of collection modified errors
  • Added a fail-out when Authentication Fails to return that as the error
  • In addition to the above bug fixes, the bundled Plugins folder now contains version 1.9 of SpellTimer which resolves the issue with variables setting to 0 periodically.

4.0.2.1 - Minor Bug Fixes and Config Cleanup

  • Enabled use of ; as a command character for lich (note that this is still disabled by the --genie flag in lich)
  • set DoConnect to false when receiving a direct connection parameter
  • Updated ArrayList objects to Genie ArrayLists
  • Updated Connection String sent to Game Server
  • Minor code cleanup
  • Removed an apparently arbitrary prefix to commands sent to the game
  • Rewrote logic for the new directory configs (map, script, plugin) to be consistent with previously existing configs
  • added recognition of \n as a newline character even in the absence of \r

4.0.2.0 Hotfix 1 corrects Authentication issues

  • $connected now sets based on the state of the client rather than the call, resolving an issue where race conditions would cause it to set incorrectly
  • TLS 1.2 is explicitly called out as the protocol for SSL client authentication
  • Rewrote character key selection to be less discriminate in selecting the key, resolving an issue with special characters in the key as well as case sensitivity

4.0.2.0 adds TLS Authentication

  • fix: removes unnecessary comparisons by @scottr1634 in #56
  • feat: add global var $destination to be auto-populated by automapper by @scottr1634 in #55
  • Implementing TLS via TcpClient by @jingounchained in #65
  • Adding normal to list of known good status from Game Details Request by @KllrWhle79 in #66
  • Added a method for directly connecting to a stream without authenticating when launched with parameters modeled so /G{gamecode}/H{host}/P{port}/K{character}

New Contributors

Full Changelog: 4.0.2.0...4.0.2.2

4.0.2.1 - Minor Bug Fixes and Config Cleanup

13 Mar 03:23
Compare
Choose a tag to compare

What's Changed

4.0.2.1 - Minor Bug Fixes and Config Cleanup

  • Enabled use of ; as a command character for lich (note that this is still disabled by the --genie flag in lich)
  • set DoConnect to false when receiving a direct connection parameter
  • Updated ArrayList objects to Genie ArrayLists
  • Updated Connection String sent to Game Server
  • Minor code cleanup
  • Removed an apparently arbitrary prefix to commands sent to the game
  • Rewrote logic for the new directory configs (map, script, plugin) to be consistent with previously existing configs
  • added recognition of \n as a newline character even in the absence of \r

4.0.2.0 Hotfix 1 corrects Authentication issues

  • $connected now sets based on the state of the client rather than the call, resolving an issue where race conditions would cause it to set incorrectly
  • TLS 1.2 is explicitly called out as the protocol for SSL client authentication
  • Rewrote character key selection to be less discriminate in selecting the key, resolving an issue with special characters in the key as well as case sensitivity

4.0.2.0 adds TLS Authentication

  • fix: removes unnecessary comparisons by @scottr1634 in #56
  • feat: add global var $destination to be auto-populated by automapper by @scottr1634 in #55
  • Implementing TLS via TcpClient by @jingounchained in #65
  • Adding normal to list of known good status from Game Details Request by @KllrWhle79 in #66
  • Added a method for directly connecting to a stream without authenticating when launched with parameters modeled so /G{gamecode}/H{host}/P{port}/K{character}

Full Changelog: 4.0.2.0...4.0.2.1

4.0.2.0 adds TLS Authentication

09 Mar 17:09
Compare
Choose a tag to compare

What's Changed

4.0.2.0 Hotfix 1

  • $connected now sets based on the state of the client rather than the call, resolving an issue where race conditions would cause it to set incorrectly
  • TLS 1.2 is explicitly called out as the protocol for SSL client authentication
  • Rewrote character key selection to be less discriminate in selecting the key, resolving an issue with special characters in the key as well as case sensitivity

4.0.2.0

  • fix: removes unnecessary comparisons by @scottr1634 in #56
  • feat: add global var $destination to be auto-populated by automapper by @scottr1634 in #55
  • Implementing TLS via TcpClient by @jingounchained in #65
  • Adding normal to list of known good status from Game Details Request by @KllrWhle79 in #66
  • Added a method for directly connecting to a stream without authenticating when launched with parameters modeled so /G{gamecode}/H{host}/P{port}/K{character}

New Contributors

Full Changelog: 4.0.1.5...4.0.2.0

What's Changed

  • Implementing TLS via TcpClient by @jingounchained in #65
  • fix: removes unnecessary comparisons by @scottr1634 in #56
  • feat: add global var $destination to be auto-populated by automapper by @scottr1634 in #55
  • Adding normal to list of known good status from Game Details Request by @KllrWhle79 in #66

New Contributors

Full Changelog: 4.0.1.5...4.0.2.0

4.0.1.5 - Final Pre-TLS Build for Stability

07 Mar 04:01
Compare
Choose a tag to compare

Consolidated Changelog for 4.0.1.*
All versions are deprecated, this is left for reference

4.0.1.5

  • Minor update to castbar to prevent showing 0 when a spell is lost or released
  • Backed out changes made in 4.0.1.3 which seemed to cause some collisions and lag
  • Properly threaded the Script List
  • Fixed an instance where writing was attempted with only a read lock, causing the notorious collection modified error
  • Game Host and Port Addresses can now be configured as global variables.
  • these will default to eaccess.play.net on port 7900.
  • Automatic Reconnects should now reconnect to Lich if your initial connection was to Lich

4.0.1.3

  • Reverted remaining JSON-Settings branch code
  • Suppressed even more errors specifically involving the Script List
  • Fixed bug preventing #unvar and #servervar from targeting vars with capital letters
  • Robustified mapper error messages about invalid maps in the directory

4.0.1.2

  • Backed out the JSON-Settings branch code that was merged in
  • Sent a heretical pixel to the Red Spiral
  • Added some Help Menu items
  • Fixed Do Script Command Output
  • Updated Interface Version returned to Legacy Plugins
  • 4.0.1.1 introduced some bad code, which should now be fully backed out in this version.

4.0.1.1

  • Updated several lists to threaded versions
  • Added a Debug reserved Window
  • Suppressed several collection modified errors by redirecting their text to Debug instead of an error popup.