Mud Client Ideas
So you think you're some kinda Power User huh? More like Power Loser amiright?!?!?!?!
Here's things the uber-nerds who play this game all day every day are doing, most of which is based in client-side scripting:
Quick Prep
Code your own spell bots and bring them with you on runs.
Have an alias to quaff a tank set.
Have an alias to apply any class-specific skills/spells you get.
When its time to prep for a run, get all spells from your bots, quaff a tankset, apply anything else, and then log off. Your guys is 100% ready to rock and offline.
Have an alias to do all this for you:
prep - an alias to trigger your spell bots, quaff all tank pots, apply all skills.
Quick Reset
A full reset alias is helpful, that can be broken down into this component aliases you can fire individually if necessary as well:
repair - an alias to run you to your preferred repair mob, remove all, repair all, wear all, recall. refavor - an alias to run to a'enari/vl'aresch to refavor back to praised, and recall. restock - an alias to buy you heals/manas and restock tank pots from a donation shelf.
If you've done a kill on something and people say 'reset', its realllll nice to just type 'recall... reset' and then go get a drink while that all happens.
You can also get even more tricksy and make it recall you, reset you, and return you to wherever you were.
The restocking alias is the one that takes the most scripting. You'll need to establish a variable that keeps your desired stock levels of stuff, then, also set up a trigger that can be enabled when you examine your containers that will catch all the potion names and record how many you have into a 'current stock' variable. Then, the restock alias just uses some math to compare your desired levels to your actual current levels and gets the difference from your potion shelf.
General Gameplay Stuff
If there are tasks you do frequently, you should set them up as aliases/triggers.
Here's just some things that I set up to make my life easier:
- Aliases to set a character's preferred method of recalling/create springs/dispelling magic/flying (spell/scroll/potion/item).
- Aliases to actually do those tasks 'dispel' 'recall' 'spring' 'fly' so I don't type the whole full commands.
- Auto re-style, re-search, re-dig, track+follow. Anything that frequently fails, set up auto re-do.
- Dump a tank set, get a tankset, quaff a tankset. Use elemental staves, other staves/items.
- Auto re-cast failed spells. Also an alias to toggle this functionality on/off.
- Auto re-quaff/cast spells as they expire. Like to redo sanctuary or true sight as they expire.
Start a file of general conveniences that make your life easier, build it out over time.
Speedwalks
You should have speedwalk aliases set up. Doing Copy/Paste from rodpedia sucks. Just start making a file with all those dirs in them and aliases to run em from dh[].
Logging
You should log everything.
When you die you can actually go read exactly what happened and learn and make changes.
Repop Tracking
Sick of sitting around wondering when repop will be?
Find every repop message, create a trigger on them all to take the current timestamp. Set up a trigger or alias to compare current timestamp to the repop timestamp.
Can get fancy and calculate averages, and make a trigger that you and your friends can use:
Someguy wonders 'repop?' Dyrdex says "New Darkhaven - 12 minutes since Repop. Area average 15 minutes. Expected Repop 7:35 PM EST"
MSDP
Use a modern client that can receive MSDP variables from the mud. You will automatically have variables for your hp, room names, stats, everything. It makes it very easy to script stuff based on all those values.
Autofight
You'll want to set up aliases, macros, or a trigger to make fighting easier. The basis of this should be a function that decides whether to hit the mob, or heal up to full.
There are many ways to automate this. The degree to which you want to just use aliases or macros, vs a fully automated script is up to you.
In any case, SOME level of fight assistance is going to be basically required. You'll want it to try to handle a bunch of conditions, such as:
- Healing (heal to full or heal to a value you can specify on the fly by having an alias set a variable). Account for stomach fullness:
- Stomach fullness and spring drinking (also usage of spells like salinate, or custom spring names)
- truesight/blindness/cure-blindness
- poison/cure-poison
- mana potion quaffing
- blood feeding
- specific mob progs/reactions
- anything else you can think of
Making macros for hit, heal, drink spring is really a huge help itself, punching 3 keys as you watch the fight makes things a lot less hectic.
Setting up a trigger on something like your hit message would also work of course, if you are too lazy to punch buttons.
GUI
Build out an extremely helpful visual display in your client. The more you can 'see' the better.
Have alerts to show when you are disarmed/blinded/etc or when you are doing certain actions like hitting/healing or anything important happens. Have a way to see your current spells and ticks remaining, and potion counts.
Equipment Damage Tracking
To prevent equipment from scrapping in a fight, you'll want to set up triggers to track hits to your gear and auto-remove gear that is down to 2 or 3 hits remaining.
This can be done by creating a local client-side variable(s) that stores your eq names, keywords, and AC values. Then, a trigger on the 'gets damaged' message can be used to regex whatever got hit against your locally stored information and adjust the AC variable. Include an #IF check to consult that AC value and if < 3 remove the item.
Here's an example snippet of my 'eqlist' variable that includes all wear slots, here is what one individual wear slot looks like:
#var eqlist { {waist} { {ac} {10} {acMax} {10} {dam} {0} {key} {Girth} {name} {the Ice Girth} {survey} {superb} } }So then a trigger for {* get's damaged!!} does something like: foreach item in the 'eqlist' var regex that item name against the * that got hit, upon match, reduce the items AC by 1, and if AC is now < 3 remove the item by its key word.Map
The far and away most helpful thing you can ever do with your life. Figure out how to map in your client. They are all finnicky and it is not super easy given the many odd and non-linear room structures in the game, but you can do it. Mapping the game client-side enables your client to simply auto-walk you to ANY room name, from any starting point in the game. That's hugely powerful. You will know EVERY room name, every room description, in every area. You can search for rooms by name or any text or hints. If someone wants a list of all rooms to mention the word "despair" I can find that list in 2 seconds, and run to any of those rooms immediately. If you can do 'where X' to get the room name a mob/player is in, then you can auto-run to that room. This is beast mode for questing. The auto-run functionality aside, mapping the game will teach you loads about the game and its areas, the world layout, etc. It's hugely interesting and revealing to actually be able to 'see' where you are going and how things connect. There are tons of neat connections you don't really get a sense of when you are just running from dh[] to each area. So many things are interconnected and you can walk some really unexpected paths between places and learn a lot about the world once you have a map going.Mob Tracking
MSDP sends you ever mob name and level, along with room name and room area, so its super easy to just start saving those into a huge searchable var. Every time I fight something I save that data, and also a mob keyword. So, when I do get into a fight, this list is consulted so my hit aliases/macros/triggers can be targeted to the correct keyword. For example, I'm fighting 'Ratboy' and I just punch F3 which is a macro that issues the alias 'hit' which is scripted to search my mob db for the current msdp mob name to find his keyword and then does "$hit rat" Small example of my mob db: findmob boy AREA NAME SPAWN ROOM KEYWORD LEVEL MOB NAME Southern Mountain Range The Shelter At The End Of The Alley rat 38 Ratboy Abattoir Asylum Abattoir Pit boy 35 The whipping boy The Warehouse Inside a Filthy Bathroom boy 4 an obnoxious boy Given that the map function can auto-run us to any room name, you can also create an alias to run to a mob that will search the mob list here for the term you enter to find his spawn room then move you right there. For example 'run Ratboy' would run my char right to his room, from anywhere in the game.