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.
Thank you, Bryn, for running with this.
Anyone can use this to download the code, try it, contribute to it, etc. Any help, feedback, or engagement is very much appreciated.
I'm still hoping to find people to help me more in depth. My Discord name is:
Thank you, everyone.
[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?