Hmm. Some of us could convert the entire mess fairly easilly, if we could get the entire thing. It is going to be a nightmare trying to convert it, believe me. lol
Take as an example:
#CW White
This command doesn't exist in Mushclient as a command. What I mean by that is you can't use the script to change the color of the line, but you can change the color in the trigger itself:
<triggers>
<trigger
custom_colour="17"
match="""Don't get trapped now..."", the bubonis entity whispers to you."
enabled="y"
send_to="12"
other_text_colour="white"
other_back_colour="black"
>
<send>execute "CureAdd set_claustrophobia"
if getvariable("enemy_class") <> "Occultist" then
execute "preact " & chr(34) & "order " & getvariable("bubonis") & "passive" & chr(34)
end if</send>
</trigger>
</triggers>
Notice the custom_colour="17" (other) and other_text_colour="white". This will do the same thing as #CW.
Now, I also use send_to="12" (send to script). This allows you to do like zmud does and enter script code directly into the trigger. To make things a 'little' easier, I also use 'execute', which will send the text through the command and alias parser, just like if you typed it on the command line. This way you can simply convert the existing aliases and have it work.
If I was doing it myself, I would take the time to use true subs and functions in a .vbs file. However, doing so would require rewrites of a lot of the zmud script, but imho the end result would tend to be easier to change and debug. In generally, having related stuff in a plugin instead of the main world is useful and it is a lot easier to read true code in the main world script or <SCRIPT> block of a plugin than to try to read it in the aliases and triggers. But you can definitely do things the same way as zMud if you know what you are doing.
Your SoulSleep one would also use 'execute':
execute "SoulSleep kick " & getvariable("kick_target")
execute "lust"
However.. I am using getvariable here, which means it is an internal variable to mushclient. These are completely seperate from the variables used by the script. This is so that variables you want to save are saved, but the script engines values are lost when the script is shut down or reloaded. You can set internal variables using either the option of 'send to variable', which can only set one variable at a time:
<triggers>
<trigger
enabled="y"
match="Fred says: *"
send_to="9"
variable="Fred"
>
<send>%1</send>
</trigger>
</triggers>
or more than one by using the 'send to script' option like the others and doing:
<triggers>
<trigger
enabled="y"
match="Fred says: *"
send_to="12"
>
<send>setvariable "Fred","%1"</send>
</trigger>
</triggers>
When using this second method, remember that 'send to script' does direct substitution. If the wild card contains something like 'hello' and you forget to place "" around the wildcard, then you end up with:
setvariable "Fred", hello
Since 'hello' is not a command or a number, the script engine will assume it is a variable and return either 0 or and empty string. VB likes to *guess* if you intended a string or a number and depending on how you code things can give exactly the opposite of what you intended. The above line 'should' end up being a string though, but had you done something like setvariable '"Fred", "Fred said" + hello', I would give it a 50-50 chance that the VB script engine would see the + and assume the very next thing must be a number. However, since I haven't tried something like that, I can't say for certain.
Anyway.. Good luck. Anything zMud can do should be possible in Mushclient. The only real issue is figuring out how and sometimes zMud can unintentionally obfuscate things. One thing I know for certain. It is a heck of a lot easier to convert 'to' Mushclient than the other direction. I found several glaring bugs in zMud trying that and finally had to ask Zugg himself what the heck was wrong. It was the last time I ever did a zMud user the favor of trying to convert one of my scripts to zMud. lol