Mudlet 3.0.0-alpha is here! This is an alpha release – that is, a preview of what Mudlet 3.0 will look like. Please be aware that there may be bugs and other issues in this preview release – we are publishing it so we can locate any such issues. If you run into anything, please post them on the thread on our forums.

Documentation is still in progress of being updated for all new features.

Now, onto what’s new!

What’s new

Variables view

svo_056
Display for variables in Mudlet is in! You can now see, and edit, and search your variables.

This feature covers tables, so you can explore them by expanding them, both indexed and key-based ones. Functions are visible as well – since those are variables in Lua, although you cannot see their contents or edit them.

As there are a fair bit of Mudlet and Lua functions that come with Mudlet, a feature to toggle hiding certain was was added. Press Show Hidden Variables to view hidden variables. You can also set variables you don’t want to see to be hidden by checking the hidden variable checkbox.

Lastly, you can also have variables be saved for you from one session to another! Ticking the checkbox by the variable name will have Mudlet re-create that variable when you launch the profile again.

Double-click word selection

You can now double-click in the main window or a miniconsole to select a word! You’ve also got the option of choosing what characters will the selection stop on – in case you don’t want to select quotes and such:

Selection_057

Mapper room exits window

Mappers room exits window has been reworked, now allowing you to create and select the door type on an exit, lock exits so they aren’t used in speedwalking, and set a weight on them to make them more or less desirable to take when pathfinding.

Custom exit lines

Custom exit lines creation improved a fair bit and is much easier to work with. Creation of custom exit lines is much easier  – you can undo any point you create using the right-click menu, as well as change the properties (line type, colour, and an finishing arrow).

Adding a line - you can now easily undo the last step or finish creation

Adding a line – you can now easily undo the last step or finish creation

Editing existing lines has also been improved, you can add/remove points on an existing line without having to redo it from scratch:

Editing an exiting line allows you to add/remove points along the line

Editing an exiting line allows you to add/remove points along the line

Custom Line Properties _064

Editing properties of an existing line

 

Database scripting fixed

A series of issues with the database (db:) functions have been fixed. Thanks to Jor’Mox especially for assistance in identifying the issues. If you have previously added a version of DB.lua as a script in your Mudlet profile, delete it, so you use the latest version that comes with Mudlet.

GMCP issue on IRE muds

An issue where if too much data came from GMCP on IRE MUDs would cause Mudlet to disconnect / get garbled / crash has been fixed. The workaround for that was to enable the ‘Force compression off’ option – you can now re-enable it.

Looping aliases

A common mistake Mudlet newbies made that crashed Mudlet was create an alias that calls itself – so once used, it would call itself infinitely. Basic protection has been put in place now where if you’re putting something into the ‘substitution’ field that matches your alias pattern, Mudlet will auto-revert your change and not allow you to go through with it.

Mac installer

The Mudlet Mac installer has been revamped to offer a modern an aesthetic experience:

Selection_069

Mac tab completion focus loss

The input line will no longer lose focus on Macs after you use Tab to auto-complete a word.

MSDP

Native MSDP support has been added to Mudlet! MSDP data is available in msdp, sendMSDP() allows you to send commands back to the MUD, and the usual events are raised for incoming MDSP messages.

Keyboard navigation

Keyboard navigation has now been enabled in the connection window: you can use the arrow keys to select and press Enter to connect to a MUD.

You can also use keyboard navigation in the script editor: pressing up and down keys will switch between aliases/triggers/scripts, and left/right keys will expand/collapse a group.

Qt5

Under the hood, Mudlet has been upgraded to Qt 5. You should not see any adverse effects of this, but do mention to us if you do. Qt5 offers some pretty exciting opportunities for Mudlet that we’ll be taking of in the future.

Miscellaneous

  • Any variant of a direction – numeric (“1”), long (“north”), short (“n”) can now be provided to mapper functions.
  • HTTPS is now supported by for downloads (this means downloading from Dropbox will work again).
  • Fixed a GMCP command being sent when GMCP isn’t enabled at login; this was messing up autologin in some MUDs.
  • Mudlets profile tabs are now re-orderable: you can now click and drag them around to change their position.
  • A button for the module manager has been added to the toolbar as well, so you can access it you aren’t using the menu.
  • An issue where error messages that contained tabs in them were pretty difficult to highlight as the text would move around has been fixed.
  • Various mapper functions have been optimized to be far quicker when you’ve got very large maps.
  • Gauge-related functions now allow <center> and other alignment tags to work properly in gauge text.
  • createMiniConsole() can now be called for existing consoles to resize & move them.
  • db:aggregate(field reference, aggregate function, query) has been added, allowing you run an aggregate function on field(s).
  • db:query_by_example(database, example) has been added, allowing a new way of querying the database.
  • getAreaExits(areaID) has been added, allowing you to retrieve a list of exits going into an area.
  • getExitStubs1(roomid) has been added, similar to getExitStubs() but the results are indexed from 1. getExitStubs() has been fixed to return nil when the roomID doesn’t exist.
  • Geyser.Label:addChild(cons, container) has been added, allowing you to create nestable labels.
  • Geyser.Label:setOnEnter(function)Geyser.Label:setOnLeave(function) have been added, allowing you to run functions when a mouse enters and leaves a labels area.
  • Geyser.MiniConsole:clear() and Geyser.Label:clear() have been added, allowing you to wipe the contents of respective windows.
  • Geyser.MiniConsole:resetFormat() has been added, allowing you to reset text formatting in a miniconsole.
  • replace() has been improved to work on
  • Geyser.MiniConsole:setBold()Geyser.MiniConsole:setUnderline(), and Geyser.MiniConsole:setItalics() have been fixed to work.
  • installModule()uninstallModule()reloadModule(), and getModulePath() have been added, allowing you to control the module system from scripts.
  • resetRoomArea(roomID) has been added, allowing you to clear the area a room belongs to.
  • setAppStyleSheet(stylesheet) has been added, allowing you to override the OS (Windows/Mac/Linux) look of Mudlet. This, in tandem of Mudlets already already customisable in-game interface, allows you to completely customise Mudlets entire interface to your desired look. As an example, try setAppStyleSheet([[QScrollBar { background-color: red }]]) to set the background of scollbars to red. Have a look at some examples you can use and documentation.
  • shms(seconds, bool) has been added, given a number of seconds, returns the hours, minutes and seconds.
  • showColors() has been improved to be clickable, allow filtering and an an optional column number: showColors(columns), showColors(filterColor), showColors(columns, filterColor).
  • stopSounds() has been added to stop all currently playing sounds.
  • table.deepcopy(table) has been added, allowing you to create clones of tables.
  • getMudletVersion({|”major”|”minor”|”revision”|”build”|”string”|”table”}) has been added, allowing you to retrieve the Mudlet version you’re running on. If you’d like to use this to check for existence of new functions though, check for their existence instead of hardcoding to a Mudlet version, as that is more flexible.
  • fg() and bg() functions now accept the “main” parameter for the console, and in case of an invalid colour, report it – making for easier scripting with those functions.
  • Event system has been fixed to handle numbers over 999999 (they would previously be reset to 0).
  • A set of crashing bugs, although relatively uncommon, have been fixed.

Last but not least, have a look here as well as here (navigate to newer pages) for a list of changes that went into making of 3.0 – which is pretty big!

Development

Development-wise, things did get stale throughout the last year, but now we’re back in full swing! Mudlet’s code hosting has been moved to Github (pull requests welcome), and we’ve setup continuous integration builds for the C++ code and started on unit testing for Lua code.

Big thanks to Ahmed Charles, Chris Mitchell, Damian Monogue, Heiko Köhn, Jor’Mox, Florian Scheel, phasma, Phoenix, Stephen Lyons, stratum nine and Vadim Peretokin for enabling the 3.0 release!