Whirl - a sunder-esque system for the visually impaired

Hello! Tanthilos and Whirran have asked me to create and helped me to refine a system inspired by sunder but written completely from the ground up for mushclient, designed specifically for blind or visually impaired players. The result is our new system, Whirl, which is now functional and serviceable.

I know that a lot of visually impaired players may not frequent or even ever use the forums, so the rest of you please please point them this way if they're in need of something like this! Now, the details:

Whirl does not have a GUI, though it does push your vital stats to mushclient's info bar. One of the primary features is that it gags almost everything, and replaces it all with much shorter snippets to make it feasible for someone using a screenreader to keep up at least moderately in a medium-sized group, and fairly well in a single combat situation. All attacks, afflictions, defenses, etc are all replaced with lines like, 'You: health vial' or 'Whirran: duplicity Tanthilos'.

Whirl has almost all the PvP functionality that Sunder does - it can maintain defenses, light and refill pipes, follow target calls, queue attacks from an offense route you've written, swap curesets as you get hit, and so on. It can track afflictions you give to the target, and has the framework to track third party attacks and affliction calls, though only a fraction of the abilities are actually in. It has the framework to track limb damage, but none of those lines or attacks have been entered yet. Unlike Sunder, Whirl keeps track of the status of all players in your room, instead of just your target, allowing you to set up things like shielding or curing an ally in trouble or opportunistic impales on enemies who aren't your target. Whirl does not currently include a name database, but you should be able to make even a rudimentary one and define a list of allies and enemies.

Whirl has the same bashing functionality as Sunder - it has a list of areas with targets in those areas, a list of functions for each class to use in PvE, the ability to collect items dropped by mobs from the area list, and a global target list for things like eld. You can use the same aa alias to clear a room, ff to turn fasthunt on and clear rooms as you walk around (including a check for people other than you in the room). Whirl does not come with pre-made routes, however. Instead, you must build your own routes using the 'pather' alias; use 'pather help' to get the list of commands. Once you save a route, it is stored across sessions and can be used immediately as well.

Whirl does not have most of the utility or QoL functionality of Sunder. It does not include a fisher, a questing module, ylem-hunting auto walker, or mercantile support. One of the biggest changes over Sunder is that Whirl is far far far more processing efficient - the way it tracks things is fundamentally different, and much faster, and it does far less iterating when running its 'core' process.

Whirl includes its own GMCP handler, and may conflict with the one published by Nick Gammon. Whirl is compatible with mushclient's mapper plugin, and you should definitely use it - Whirl will use mushclient's mapper to path around for PvE, and will revert to server-side path track if you don't have it, which is much slower due to the cooldown on in-game path finding. Whirl does not include anything to push communications like tells and CT to another window or file, but shouldn't conflict with other plugins that do those things.

Whirl currently has basic support for Archivists and Revenants. You can easily add other classes - most class defenses should already be in (Warden and Oneiromancer are missing). Adding other classes really just means creating a bashing function for them and writing offensive aliases.

Before we get to actually installing Whirl, let me make it perfectly clear that I don't intend to update or support this system in any way. The #1 thing I learned doing this project is how much I hate mushclient, haha, and I don't plan to ever work with it again. Whirl needs a lot of work to be completely up to snuff, but all the backend processing, logic, difficult coding, and framework is done. If someone else wants to pick it up and run with it, absolutely be my guest. The remaining work is really just putting in manpower and collecting trigger lines. I'm generally happy to help with basic questions and things like that, but do not expect me to release updates or honestly even to respond to requests for help.

Okay, so! In order to use Whirl, you need two things. First, you need this folder full of external scripts. You can download the .rar here, or by copying this link: https://drive.google.com/uc?export=download&id=13ZYsxg3ewrzqCvjR2p7AFcSwoB4IbdR8

After extracting this .rar, you should save the whirl directory and all of its sub folders into the root mushclient directory (the file that contains things like 'world', 'lua', and 'scripts'). Make sure to do this first! The plugin itself will try to call and load things from this folder.

Secondly, you need the .xml for the plugin. This is included in the .rar you've downloaded. So just open up your mushclient world that connects to Aetolia (preferably a new, clean one, to avoid conflicts with other plugins and stuff), and then go to install a new plugin, and navigate to the whirl folder in your mushclient directory. There should be a whirl.xml file there, this is the plugin.

Once the plugin is installed in your new world, type ?setup, then log out, close mushclient completely, and then reopen and log back in. That's it! You should be all set to go.

One important note when using Whirl - it relies on gmcp data, and some important gmcp events are only sent when you first connect to Aetolia (specifically the gmcp.Char.Status one, which also is sent when you change class but...). That means if you make changes or reinstall the plugin for any reason, you probably need to log out and back in for it to work right.

Okay, good luck, and have fun! Don't ask me for major help or support, but if you have a very brief or quick question, feel free to prod me in game. I'll ignore you if I'm busy or not able to handle mushclient at the moment.


  • I may wind up uploading this to Github so people can fork it and add things Whirran and I can then vet for folding into the main version. The work Bryn has done on this is amazing, especially considering she isn't a Mush user. This is very much a beta, right now. My coding ability isn't that great, but hopefully, over time, we can whip this up into something quite robust.

    Thank you, Bryn, for running with this.
  • There have been a number of visually impaired players that I've met over the past couple of years who were hoping someone would do something like this. Sadly my brain isn't big enough nor did I have the time to do such a thing, even though I really wanted to be able to help. Huge, huge kudos to you for helping people with accessibility.
    "And finally, swear to Me: You will give your life to Dendara for you are Tiarna an-Kiar."
  • Thanks a lot, Bryn! You're doing all our VIPs a huge favour. I know another in the Archivists who could use this as well, I'll message him so at least he can get set up on Mushclient with this too.
  • OK. Here is a Github link.


    Anyone can use this to download the code, try it, contribute to it, etc. Any help, feedback, or engagement is very much appreciated.
  • TetchtaTetchta The Innocent
    This is awesome and you are awesome for doing this.

  • If anyone is willing to take up the mantle from where Bryn left off, I am definitely willing to continue paying out credits. Donations, strictly, you see, but appreciative ones. There is still a lot of work that needs to be done. Message me on Discord if interested.
    Thank you!
  • So, here is a new Bithub link. I still clearly have no idea what I'm doing, but, at least, this way, anyone who wants to help with the coding will have easier access to the individual script files.
  • edited June 2022
    Here is an updated file for Whirl. I have made some modest changes, but fairly decent for QoL. I honestly can't remember everything here, but it's generally a dibble here, a dabble there. Don't forget to backup your current MUSH folder, just in case my version of QoL is a nightmare for you.



    I'm still hoping to find people to help me more in depth. My Discord name is:

    Thank you, everyone.
  • Accidentally didn't readjust the init file in the root folder. It is now fixed, if anyone has already downloaded it.
  • I am updating the link to direct to the Whirl folder, rather than a zip file. With all the updates I'm doing on it, it's just easier for me to cut and paste that way. Enjoy!

  • I attempted to use the plugin and keep getting the same error. I downloaded the first rar and the last zip and all of them say the same thing. I installed mushclient fresh and still received the error.
    [string "Plugin: whirl"]:155: module 'luaTable' not found:
    no field package.preload['luaTable']

    it has more of the same thing. no file found and so on. anyone know why this isn't working?
Sign In or Register to comment.