A generic bashing automator script for Mudlet
Go to file
ccubed 89848ef20b
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Fix inconsistent config set behavior, add checks for input, ensure newlines exist on cechos
2024-06-17 13:14:00 -04:00
src Fix inconsistent config set behavior, add checks for input, ensure newlines exist on cechos 2024-06-17 13:14:00 -04:00
.woodpecker.yaml Initial Beta of Bashmatic 2024-06-17 01:36:51 -04:00
mfile Initial push 2024-06-16 10:59:55 -04:00
readme.md Added a new lowercase option 2024-06-17 13:01:44 -04:00

What is this?

Bashmatic is a generic script package for mudlet. Many muds have a character visit areas and attack various denizens to gain experience to level up. This process is colloquially called bashing. Bashmatic is a very generic script package that automates this process.

What does it support?

Again, it's very generic. Because of that it supports pretty much anywhere that you can bash using a one line command to do so. However, because of the generic nature of the script it also doesn't support more advanced features games might have. It does however support sending commands to the game before and after fights. It also supports grouping bashing targets by areas if you use the mudlet mapper. Overall it supports:

  • Supports sending a customized pre-bashing command
  • Supports sending a customized bashing command
  • Supports sending a customized post-bashing command
  • Supports specifying a custom mob death trigger phrase per game
  • Supports grouping bashing targets by area
  • Supports detecting areas using the mudlet mapper
  • Supports detecting enemies by creating temp triggers based on target names
  • Provides a function bmDisable() that will disable the basher so you can rig a flee/wimpy trigger/alias
  • Can convert targets to lowercase for some weird muds that use proper casing in display but not in targetting

Can I use this on my mud?

I don't know. Many muds have rules against this kind of script. Just as many muds don't care if you use a script like this. Yet more sit somewhere in the middle. It's your responsibility to know where the rules on your mud stand.

Are there any cavaets?

A few but none that are too bad.

Switching To Area Group Mode

By default, Bashmatic does not group by areas. This means if you switch the target grouping mode to areas you will erase your target list. This is by necessity. If area grouping is turned off, no area data is stored for targets. When you turn on area grouping, we have no way of finding out what area they should be in. So you'll have to readd them to get them in the right area. This is not true of the other way. If you are grouping by area and turn that off, then we will simply collate all targets into a giant list. You can then clear your target list using bm clear if you want.

Grouping Targets By Areas

We can group targets by areas if you prefer as long as we can tell which area we are in. This can happen by mudlet returning an area through GetRoomAreaName(GetRoomArea(GetPlayerRoom()). This requires you to have a map made in mudlet. Functionally, the real benefit to this is that we can reduce the number of tmeporary triggers made since we can only make ones related to the current area. However, unless you have thousands upon thousands of targets built into your list you probably won't notice the difference.

Auto target switching

Bashmatic doesn't technically support auto-target switching, but we have a jury rigged solution. Upon detecting an enemy's death we will look at the room again.

Before, During, and After Bashing commands

You should know that the only time we append the target name is bashing start command. Before, During, and After bashing commands do not receive the target name. We also kill all triggers related to finding targets once we start bashing a target.

Required Setup

At the very least, you'll need to setup a bashing command. This can be as simple as just kill and we'll fill in the target so it late becomes kill target. And you'll need some kind of phrase that allows us to determine a mob has died: The death trigger phrase. On a lot of muds this could just be the word died or has been slain or have slain or some other combination. A lot of muds just use some variation of the phrase has died and this script will match .*word.*. Then at least one target added using bma target. So bma bunny maybe.

  • A bash command, Possibly just: kill
  • A death trigger, Possibly just: died
  • At least one target, Possibly just: bma bunny

How does this work?

In general, we create temporary triggers that only fire once that look for matches against the targets given. So for our bunny example, we would create a temp trigger that will only ever fire once against the word bunny. This is not perfect, for obvious reasons. If the room description contains the word bunny or if someone is wearing an item with the word bunny in it, we're going to react to that word. Still, it's a simple enough solution that works most of the time for most situations especially given that the system has to be manually turned on and is likely to only even be turned on in situations where we are less likely to run into those odd situations. IE: If you turn on the autobasher, the bunny you run into is most likely to be the one you want to kill for gaining experience, not the random guy with his bunny cloak. Even if it does mess up, just kill something normally once and it will reset. Or simply toggle it off and on. You'll be ready to go again.

In Game Help

There is extensive and easy to understand help built in. Once installed in mudlet, see bm help and bmc for an indepth explanation of settings and features.