SIGN IN YOUR ACCOUNT TO HAVE ACCESS TO DIFFERENT FEATURES

CREATE AN ACCOUNT FORGOT YOUR PASSWORD?

FORGOT YOUR DETAILS?

AAH, WAIT, I REMEMBER NOW!

CREATE ACCOUNT

ALREADY HAVE AN ACCOUNT?
  • SIGN UP
  • LOGIN

Aardwolf Boot Lyceum

MENUMENU
  • Joining
  • Rules
  • Maps
  • Forums
  • Members
    • New Members
    • Promotion Guide
    • Guides
    • Area Quests/Goals
    • Plugins
    • Outcasting
    • External Links
    • Staff Information

Alias for common area actions

by stayron / Sunday, 27 September 2026 / Published in Public, Public-Guides

Editor’s Note: Remember that stacking commands can cause you to break rules – you should make sure you’re familiar with “help botting” and “help is this botting” before automating anything that sends multiple commands.

I’ve noticed that in certain areas, I occasionally have to perform the same set of actions over and over again. This could be due either to the nature of the area or to the fact that the mapper doesn’t know how to deal with mazes. Creating and maintaining a separate alias for each location is tedious, and on top of that, you have to remember all their names. So I decided to create a single universal alias for all simple, typical actions—but I actually ended up with three 🙂 Let’s start with the simplest, auxiliary one:

Alias: mg *
Send: mapper goto %1
Send To: Execute

Now, in our main alias, we can type mg 1000 to start moving toward the room with ID 1000. Of course, you can also use it on its own. But now let’s move on to the more interesting part. First, I’ll show you the entire alias code, and then I’ll explain what it does for each location.

Alias: aa
Send:

require "gmcphelper"
require "wait"

-- Helper function to setup command line value
local function QueueCommand(command)
    wait.make(function()
        wait.time(0.1)
        SetCommand(command)
    end)
end

local area = gmcp("room.info.zone")  -- area name
local roomNum = tonumber(gmcp("room.info.num"))  -- room ID
local switch = {
    darklight = function()
        Execute("mg 19644")
        QueueCommand("ah lich")
    end,
    desert = function() Execute("mg 20186") end,
    earthplane = function() Execute("mg 1398") end,
    gallows = function() Execute("mg 4384;o n") end,
    goldrush = function ()
        Execute("mg 15044")
        QueueCommand("ah wight")
    end,
    imagi = function() Execute("mg 36808") end,
    knossos = function()
        Queue("open n")
        Queue("run nes")
        Queue("buy steak")
        -- other commands for AQ
    end,
    labyrinth = function()
        SendNoEcho("keyr get vv1")
        Execute("mg 31406")
        SendNoEcho("give vv1 jula")
    end,
    lemdagor = function() Execute("mg 1966") end,
    masq = function() Execute("fly;mg 29836") end,
    nenukon = function() Execute("ah exile") end,
    petstore = function() Execute("mg 996;ad kender") end,
    prosper = function()
        if 28336 == roomNum then
            local bag = GetVariable("portal_bag")
            SendNoEcho("get royale " .. bag)
            SendNoEcho("open w")
            SendNoEcho("put royale " .. bag)
        else
            Execute("mg 28268")
        end
    end,
    ruins = function() Execute("mg 16835") end,
    scarred = function()
        Execute("enter crack;ah pete")
        QueueCommand("aha")
    end,
    stuff = function() SendNoEcho("say shadows") end,
    tombs = function() SendNoEcho("leave") end,  -- goal
    vlad = function()
        if 15970 == roomNum then
           SendNoEcho("autoloot off")
           SendNoEcho("n")
           SendNoEcho("exits")
        else
           SendNoEcho("autoloot on")
        end
    end,
}

if switch[area] then
    switch[area]()
else
    Note("Unknown area: " .. area)
end

Send To: Script

Let’s take a quick look at how this works using the “The DarkLight” area as an example. Let’s say a quest mob is located in a room called “A Dark Street”, which is behind a maze and the mapper can’t guide you there. You simply type aa and find yourself in the room “An Old Twisted Road” (right in front of the maze) with the command ah lich already in your command line. Now, if you just press Enter, then S&D will start an automatic hunt that will lead you to the second portal. In this case, I didn’t send the command automatically, since the target might be inside the puzzle itself or it might be the lich itself (in which case you’d need to hunt the imp).

Now let’s briefly go over the list of areas that are already included in the alias and what’s being done for them.

  • darklight — run to the maze and pre-hunt for exit
  • desert — run to the starting room
  • earthplane — run to the mobprog room (Frozen River)
  • gallows — run to the maze
  • goldrush — run to the maze and pre-hunt for exit
  • imagi — run to the “The master bedroom” (start and exit)
  • knossos — solve area AQ (just the beginning)
  • labyrinth — give key to Jula (AQ)
  • lemdagor — run to the starting room
  • masq — fly again and leave underwater section
  • nenukon — hunt for pre-exit room
  • petstore — adopt kender
  • prosper — run to the starting room or open hotel room (goal and some tuning required)
  • ruins — run to the maze
  • scarred — enter crack and auto-hunt Pete
  • stuff — trigger for “The Stone Vault” teleport
  • tombs — run to the starting room (goal required)
  • vlad — autoloot off and search for maze exit if in the starting room, else autoloot on

Why are there so many sequences where we’re just running to the starting room? Because these locations consist entirely or almost entirely of no-portal + no-recall rooms.

But our automation doesn’t end there. There’s another common task that needs to be handled constantly — searching for keys. To handle this, I decided to write in the notes for the room in front of the door exactly what needs to be done, for example, qw mobname or open chest;get all chest. But I quickly got tired of copying and pasting the commands every time. So I created another alias that takes the text of the note and sends it as a set of commands.

Alias: aa
Send:

require "gmcphelper"

local roomNum = tonumber(gmcp("room.info.num"))
local dbPath = GetInfo(66) .. "Aardwolf.db"
local db, err = sqlite3.open(dbPath)
    
if not db then
    Note("Could not open Aardwolf DB: " .. tostring(err))
    return
end

local sql = "SELECT notes FROM bookmarks WHERE uid = %d"
local query = string.format(sql, roomNum)
local notes = nil

for row in db:nrows(query) do
    if row.notes and "" ~= row.notes then
        notes = row.notes
    end
end

if nil == notes then
    Note("No notes found for the current room.")
    return
end

Execute(notes)

Send To: Script

Now, if there is a note for a room, you can enter the ae command, and it will take the text of the note and execute all of its contents. I think there are many more interesting actions for different locations and other ways to automate things — please share them in the comments.

  • Tweet
Tagged under: guide, guides, mushclient alias

About stayron

What you can read next

Aardwolf Color Charts
Some Handy Things to Know by Gretl
Fractal Guide

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Boot Lyceum © 2016 - 2026. All rights reserved.

TOP