(This is the second in a serial describing my experience with migrating from Zmud/Cmud to MushClient)
In the last article I talked about installing Mush and some basic thoughts about how I was going to lay out my characters in this new environment. This post will go through getting some templates set up that will eventually be copied to create those characters. I’m using a template because in fact there are very few characters I use that I need triggers specific to that character. Almost every trigger I have I’d prefer to have on most of my characters, give or take some variations for race or class.
For those who would like a way to easily download the files and not go through the pain of doing this all by hand I will make a link available at the end of the series with a default basic configuration.
Ok, so I created a new world. This is going to be the basis of all my class specific templates, it’ll need to be tailored as I go along but I can set a bunch of stuff that I want to be the same in all of them. These settings are under the World Properties link in the Files menu.
I fill in the world name as Realms of Despair and the address as realmsofdespair.com. Next I go down to output and up the lines in the output buffer to 20k… I like a lot of scroll back for extended afk sessions. :> While I’m on this tab I hit Auto-wrap to window size and copy selection to clipboard.
Under input->commands I change echo my input in to a pale yellow (I think it default uses grey … I’m very used to the yellow and I look for it). Let’s go ahead and enable spam protection every 19 identical commands send “spam”. As a Cmud person I’m tempted to change the speedwalking prefix from “#” to “.” but for now I’m going to simply leave it disabled. I’m sure I’ll circle back to this one, the problem is that # is not only the repeat command in Zmud but the command command … like #LOOP or #CONNECT … which I won’t be able to simulate here regardless. .5swen in Zmud would work exactly as #5swen would work here (I think). I’ll skip speedwalking for now. I’m just not sure heh. I am sure I need to turn command stacking on and may as well keep “;” since it’s pretty universal.
Down to input->keypad to check off “Escape Deletes Typing” and “Ctrl+Z goes to End of Output Window” to make it feel zMudish … which when button mashing on a run will be important … hmmm… not too sure about changing the arrow key defaults for now, so I’ll leave them until I have a reason to double check. Onward we go down to keypad. Here the 5 key is useless to me, so I want to change it to look instead of who. I’m also changing the * to stand and . to rest and 0 and / I’m going to blank out for the moment. I may revisit these since they’re not keys I’ve used in the past.
Finally I flip down to scripts … as I said when planning my layout I want to have each character have it’s own set of local variables. The kicker to it is that I need the same information from every character, but I will set that up as a trigger in the usual way instead of using the World Events… Also though I need the same information on each character, I’ll go through the same procedure to gather the information on each character. So it’s better suited to a global connection plugin. What I want to change here is that I have downloaded LuaEdit as an editor and I’m going to use that instead of the default built-in editor. If you’re not planning to do a LOT of script writing, I wouldn’t bother with that. I’ll also click note errors to make sure my script errors don’t give me a pop up box and mess something up later but rather show up in the normal scroll. I’m going to go ahead and fill in a script prefix here too… now this is where I’m tempted to use something like “#” from Zmud since it’ll have a similar functionality … but since it’s going to let me run Lua scripting from the command line I’m going to break with habits and use “/” instead. I won’t set the external script file just yet as this is the per world (character) scripting and I’ll fill it in as I create characters if the variables don’t save with the world file (or if I need a one off trigger for a particular character).
We can close the settings up now and move on to setting up a default plug-in. This is where the global triggers are gong to go. We don’t have to build the triggers now, but we want the world to know about the plug-in name. I decided to do one “Tharius’ Realms of Despair” plug in instead of a list of them that are more modular and encapsulate one function (for example equipment damage monitor). The fact is that the latter approach makes a lot more sense, however, there are so many ways I can think of to split things off that in the interests of keeping things moving along I’ll go with a catch all Realms plug-in and will re-factor it down the road. This is more of a programmer/distributing my triggers decision. For the average user it shouldn’t be an issue. Besides it’s easy to move things into their own file later on. I plan to go ahead and make class and race plug-ins separately, we’ll come to that.
Ok, so I’ll quickly whip up an empty plug-in and add it to this world, and them I’m ready to start making the class files. I use the plug-in wizard to create an almost empty plugin. The only thing in it is the help alias 🙂 I’ll add to this file later on extensively. I won’t rely on the plugin retaining state because I’m going to have the variables in the per character configurations. I told it to include the standard Lua constants, I’m not sure if that’s the way to go, but I can remove them later if need be. I clicked ok to get out the wizard, added the plug-in to the world and immediately noticed an error. When I moved my directories I didn’t move the contents of the default plug-in directory to my new directory. If you didn’t move your folders then you won’t see this error, but I did so I have to go to the hard drive and move them to my new folder. Error went away so I went ahead and saved the world. I chose not to use the global plug in option because I am creating everything from scratch here. If I had to add something later on down the road then I suppose I might use it. Also there’s always the chance I won’t want it in world, like a build port or some other mud (gasp) at some point so this gives me a little more fine tuned control over things.
Ok. From here I want to have a plug in with class specific triggers for each class. I take my default template and make copies of it for each class (RoD-Thief, RoD-Cleric, etc). Once I’ve got them all I opened each world, one at a time, created an empty plug in with the class name (ThariRanger, ThariDruid, ThariClassname…) saved it to the hard drive, added it to my class specific world and saved and closed the world. I also went ahead an opened a world so I could create files for each race but I didn’t add them to any world yet because that’s something that will be far too character specific to do in any good, general way.
That’s it for today. I made a back up of this whole structure, and will make it available in the next blog post where I start adding some basic triggers. Right now I have 14 worlds, 1 default and 13 class specific, 1 generic RoD plug-in, 13 plug-ins for classes and 14 for races. It seems like a lot but that’s the majority of the file creation finished. Next comes adding characters to Mush and then trigger writing. Stay tuned … (in not out!!)