<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MudletPackage>
<MudletPackage>
  <TriggerPackage />
  <TimerPackage />
  <AliasPackage />
  <ActionPackage />
  <ScriptPackage>
    <ScriptGroup isActive="yes" isFolder="yes">
      <name>Seamer CMUD Import (Utility)</name>
      <packageName>Seamer CMUD Import (Utility)</packageName>
      <script>MadROM = MadROM or {}
MadROM.CMUD = MadROM.CMUD or {}
MadROM.CMUD.buckets = MadROM.CMUD.buckets or {}

local bucket = "utility"
if MadROM.CMUD.buckets[bucket] then
  for _, id in ipairs(MadROM.CMUD.buckets[bucket].aliasIds or {}) do pcall(killAlias, id) end
  for _, id in ipairs(MadROM.CMUD.buckets[bucket].triggerIds or {}) do pcall(killTrigger, id) end
end

MadROM.CMUD.buckets[bucket] = { aliasIds = {}, triggerIds = {}, vars = {} }
local state = MadROM.CMUD.buckets[bucket]
local vars = state.vars
  vars["spells.detect_invis"] = "undone"
  vars["spells.detect_hidden"] = "undone"
  vars["spells.lethargy"] = "undone"
  vars["spells.passdoor"] = "undone"
  vars["spells.poison"] = "healthy"
  vars["spells.protectevil"] = "done"
  vars["spells.protectgood"] = "undone"
  vars["spells.regen"] = "undone"
  vars["spells.sanctuary"] = "undone"
  vars["spells.shield"] = "undone"
  vars["spells.stoneskin"] = "undone"
  vars["spells.talon"] = "undone"
  vars["spells.fly"] = "undone"
  vars["spells.frenzy"] = "undone"
  vars["spells.armor"] = "undone"
  vars["spells.awake"] = "awake"
  vars["spells.bless"] = "undone"
  vars["StonerBot.temp"] = "sanc|heal|armor|bless|undo blind|'cure critic'|'remove curse'|haste|regen|fly|shield|undo poison|undo plague|undo curse"
  vars["StonerBot.bot_status"] = "0"
  vars["StonerBot.banlist"] = ""
  vars["StonerBot.spells"] = "sanc|heal|armor|bless|undo blind|'cure critic'|'remove curse'|haste|regen|fly|shield|undo poison|undo plague|undo curse|giant"
  vars["Config.activate_msg"] = "InformaBot is ready for action, find me and say !help"
  vars["Config.announce_method"] = "tribal"
  vars["Config.deactivate_msg"] = "RescueBot is now off."
  vars["Config.limit_msg"] = "InformaBot is now running in limited mode. Only Vampires can access this program. Find me and say !help"
  vars["Config.off_title"] = ""
  vars["Config.on_title"] = "invites you into his parlour"
  vars["Config.rest_command"] = "rest"
  vars["Config.stand_command"] = "stand"

local aliases = {
  {class="dirs", name="daonima", pattern="^daonima(?:\\\\s+(.*))?$", run=function(matches)
    send("recall;s;s;w;w;w;w;n;n;n;e;e;n;n;d;d;e;e;open e")
  end},
  {class="dirs", name="home", pattern="^home(?:\\\\s+(.*))?$", run=function(matches)
    send("drop mist;enter mist;get mist;up;up;open south;south;south;east")
  end},
  {class="dirs", name="lookscan", pattern="^lookscan(?:\\\\s+(.*))?$", run=function(matches)
    send("look east;look west;look north;look south")
  end},
  {class="dirs", name="mintleaf", pattern="^mintleaf(?:\\\\s+(.*))?$", run=function(matches)
    send("recall;.2s21e4n5w")
  end},
  {class="dirs", name="ud", pattern="^ud(?:\\\\s+(.*))?$", run=function(matches)
    send("recall;.4sdedwn7d")
  end},
  {class="dirs", name="bead", pattern="^bead(?:\\\\s+(.*))?$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #walk 1283
  end},
  {class="dirs", name="balius", pattern="^balius(?:\\\\s+(.*))?$", run=function(matches)
    send("recall;.2sdn;open down;d;.2nedn3e2ue2u;open u;.4u3de;open s;s")
  end},
  {class="dirs", name="horseman", pattern="^horseman(?:\\\\s+(.*))?$", run=function(matches)
    send("recall;.2s3e7s3w2sw4s;enter port;.wdwss")
  end},
  {class="dirs", name="oak", pattern="^oak(?:\\\\s+(.*))?$", run=function(matches)
    send("recall;.2s6w2nes2w")
  end},
  {class="dirs", name="redstaff", pattern="^redstaff(?:\\\\s+(.*))?$", run=function(matches)
    send("wake;#IF (@passdoor == undone) {c pass};c gate binder;w;get key;unlock 2.cab;open 2.cab;get red 2.cab;drop key;c gate vampire shadow vamps;w;s;s;w;drop red")
  end},
  {class="dirs", name="revenant", pattern="^revenant(?:\\\\s+(.*))?$", run=function(matches)
    send("say confutatis maladictis")
  end},
  {class="dirs", name="solacecap", pattern="^solacecap(?:\\\\s+(.*))?$", run=function(matches)
    send("recall;.2s14wnsdw9n;open n;n")
  end},
  {class="dirs", name="ntarm", pattern="^ntarm(?:\\\\s+(.*))?$", run=function(matches)
    send("recall;.2s21esee")
  end},
  {class="dirs", name="scandoor", pattern="^scandoor(?:\\\\s+(.*))?$", run=function(matches)
    send("open north;open east;open south;open west;open up;open down")
  end},
  {class="dirs", name="wererat", pattern="^wererat(?:\\\\s+(.*))?$", run=function(matches)
    send("recall;.4sdedwnesd")
  end},
  {class="dirs", name="gangland", pattern="^gangland(?:\\\\s+(.*))?$", run=function(matches)
    send("recall;.8ses2es2e")
  end},
  {class="dirs", name="assassin", pattern="^assassin(?:\\\\s+(.*))?$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@elixir == 0) {#SAY get elixirs!;#ABORT 1} {get eli back;qua eli;recall;#IF (@passdoor == pass_off) {cast pass} {};cas pass shorn;get true back;quaff true;.2s21e4sw5neuess}
  end},
  {class="dirs", name="woodlord", pattern="^woodlord(?:\\\\s+(.*))?$", run=function(matches)
    send("recall;.2s13w2ned;#IF (@passdoor == undone) {cast pass} {};cast pass shorn;.2ne4s2wswsnuunw")
  end},
  {class="dirs", name="anmictes", pattern="^anmictes(?:\\\\s+(.*))?$", run=function(matches)
    send("ud;open west;.10w5s2e")
  end},
  {class="dirs", name="arioch", pattern="^arioch(?:\\\\s+(.*))?$", run=function(matches)
    send("recall;.2s13wswwssendnn")
  end},
  {class="dirs", name="lootcab", pattern="^lootcab(?:\\\\s+(.*))?$", run=function(matches)
    send("get key;unlock cabinet;open cabinet;get dragon cab;drop key")
  end},
  {class="spells", name="pro_good", pattern="^pro_good(?:\\\\s+(.*))?$", run=function(matches)
    send("cast 'protection good'")
  end},
  {class="spells", name="checkspells", pattern="^checkspells(?:\\\\s+(.*))?$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #if (@bless == bless_off) {#say need bless};#if (@armor == armor_off) {#say need armor};#if (@fly == walking) {#say need fly};#if (@sanctuary == sanct_off) {#say need sanct};#if (@talon == talon_off) {#say need talon};#if (@haste == haste_off) {#say need haste};#if (@stoneskin == stone_off) {#say need stone};#if (@regen == regen_off) {#say need regen};#if (@protectevil == protectevil_off) {#say need pro evil};#if (@protectgood == protectgood_off) {#say need 'protection good'};#if (@giant == giant_off) {#say need giant};#if (@frenzy == frenzy_off) {#say need frenzy};#if (@shield == shield_off) {#say need shield}
  end},
  {class="spells", name="spellplayer", pattern="^spellplayer(?:\\\\s+(.*))?$", run=function(matches)
    send("cas arm " .. tostring(matches[1] or "") .. ";cas shield " .. tostring(matches[1] or "") .. ";cas fly " .. tostring(matches[1] or "") .. ";cas bless " .. tostring(matches[1] or "") .. ";cas frenzy " .. tostring(matches[1] or "") .. ";cas rege " .. tostring(matches[1] or "") .. ";cas giant " .. tostring(matches[1] or "") .. ";cas infra " .. tostring(matches[1] or "") .. ";cas haste " .. tostring(matches[1] or "") .. ";cas sanc " .. tostring(matches[1] or "") .. ";cast talon " .. tostring(matches[1] or "") .. "")
  end},
  {class="spells", name="spellup", pattern="^spellup(?:\\\\s+(.*))?$", run=function(matches)
    send("gt spelling up, stage 1")
    -- TODO CMUD directive not auto-converted: #IF (@lethargy == undone) {cast leth self}
    -- TODO CMUD directive not auto-converted: #IF (@armor == undone) {cast armor}
    -- TODO CMUD directive not auto-converted: #IF (@bless == undone) {cast bless}
    -- TODO CMUD directive not auto-converted: #IF (@shield == undone) {cast shield}
    -- TODO CMUD directive not auto-converted: #IF (@stoneskin == undone) {cast stone}
    -- TODO CMUD directive not auto-converted: #IF (@fly == undone) {cast fly}
    -- TODO CMUD directive not auto-converted: #IF (@frenzy == undone) {cast fren}
    -- TODO CMUD directive not auto-converted: #IF (@regen == undone) {cast rege}
    -- TODO CMUD directive not auto-converted: #IF (@protectevil == undone and @protectgood == undone) {cast pro}
    -- TODO CMUD directive not auto-converted: #IF (@giant == undone) {cast giant}
    -- TODO CMUD directive not auto-converted: #if (@weap != "pitch" and @target == "mother") {wield pitch} {}
    send("sleep")
    -- TODO CMUD directive not auto-converted: #ts 75
    -- TODO CMUD directive not auto-converted: #ALARM "spellup" +75 {
    send("wake")
    send("gt spelling up, stage 2")
    -- TODO CMUD directive not auto-converted: #IF (@haste == undone) {cast haste self}
    -- TODO CMUD directive not auto-converted: #IF (@sanctuary == undone) {
    send("get spoon back")
    send("wear spoon")
    send("zap self")
    send("wear tome")
    send("put all.spoon back")
    send("}")
    -- TODO CMUD directive not auto-converted: #IF (@lethargy == done) {cast undo leth self}
    -- TODO CMUD directive not auto-converted: #IF (@talon == undone) {cast talon}
    send("gt ready!")
    -- TODO CMUD directive not auto-converted: #VARIABLE mood pissy
    if cecho then cecho("Fightmode activated!\\n") else echo("Fightmode activated!\\n") end
    send("}")
  end},
  {class="spells", name="detects", pattern="^detects(?:\\\\s+(.*))?$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@infravision == undone) {cast infravision self};cast 'detect invis';cast 'detect hidden;cast 'detect evil;cast 'detect good'
  end},
  {class="StonerBot", name="away", pattern="^away(?:\\\\s+(.*))?$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE afk afk;#VARIABLE counter 0;afk;say bot status is now ACTIVE
  end},
  {class="StonerBot", name="back", pattern="^back(?:\\\\s+(.*))?$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #var afk here;afk;say bot status is now inactive;wake
  end},
  {class="StonerBot", name="idle", pattern="^idle(?:\\\\s+(.*))?$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #var idle %1
  end},
  {class="StonerBot", name="zmud", pattern="^zmud(?:\\\\s+(.*))?$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (%1 == users) {#IF (%2 == add) {#IF (%ismember( %3, @test_friends)) {zmudsay They are already included in logs.;#ABORT 1};#ADDITEM test_friends %proper( %3);zmudsay %3 is now included in your logs.;#ABORT 1};#IF (%2 == remove) {#IF (!%ismember( %3, @test_friends)) {zmudsay %3 is already ignored in the logs.;#ABORT 1};#DELITEM test_friends %3;zmudsay %3 is now ignored in your logs.;#ABORT 1};#SHOW "";#SHOW "";zmudsay "LIMITED MODE USERS";zmudsay "------------------";#FORALL @test_friends {zmudsay %i};#SHOW "";#ABORT 1};#SHOW "";#SHOW "";zmudsay "COMMAND                               Description";zmudsay "------------------------------------------------------------------------------------------------";zmudsay "zmud users                            Lists players who can use bot when in limited mode.";zmudsay "zmud users add                        Allows the specified player to use the bot in limited mode.";zmudsay "zmud users remove                     Revokes the specified players limited mode access."
  end},
  {class="StonerBot", name="zmudsay", pattern="^zmudsay(?:\\\\s+(.*))?$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #SHOW %ansi( green, bold)Zmud%ansi( white, bold): %-1
  end},
  {class="StonerBot", name="stonersay", pattern="^stonersay(?:\\\\s+(.*))?$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #SHOW %ansi( red, bold)StonerBot%ansi( blue, bold): %-1
  end},
  {class="StonerBot", name="stoner", pattern="^stoner(?:\\\\s+(.*))?$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (%1 == on) {#IF (@bot_status == 1) {stonersay Bot is already on.;#ABORT 1};#IF ( %numwords( @spells, "|") == 0) {stonersay ERROR: You have no specified any spells that can be cast. To do so, use 'stoner spells add "&lt;spell name&gt;"'.;#ABORT 1};#IF (@announce_method != "") {#IF (@activate_msg == "") {stonersay ERROR: You have specified a way to announce that your bot is active, but you have not specified what to say. Do so by setting the activate_msg variable.;#ABORT 1}};#IF (%2 == limit) {#IF (@limited_users == "") {stonersay "ERROR: You are trying to enter limited mode but you have not specified users which will be allowed to use the bot. Do so with 'stoner users add ~&lt;player name~&gt;'";#ABORT 1};#IF (@bot_status == 2) {stonersay Bot is already in limited mode.;#ABORT 1};stonersay Activated. Only certain players will be allowed to use the bot.;#VARIABLE bot_status 2} {stonersay Activated.;#VARIABLE bot_status 1};#IF (@on_title != "") {title @on_title};#IF (@bot_status == 2) {@announce_method @limit_msg} {@announce_method @activate_msg};#ABORT 1};#IF (%1 == off) {#IF (@bot_status == 0) {stonersay Bot is already off.;#ABORT 1};#IF (@announce_method != "") {#IF (@deactivate_msg == "") {stonersay ERROR: You have specified a way to announce that your bot is no longer active, but you have not specified what to say. To do so, set the deactivate_msg variable.;#ABORT 1};@announce_method @deactivate_msg};stonersay Deactivated.;#IF (@on_title != "") {title @off_title};#VARIABLE bot_status 0;#ABORT 1};#IF (%1 == spells) {#IF (%2 == add) {#IF (%ismember( %-3, @spells)) {stonersay %upper( %-3) is already on the spells list.;#ABORT 1};stonersay Players can now have '%-3' cast on them.;#ADDITEM spells "%-3";#ABORT 1};#IF (%2 == remove) {#IF (!%ismember( %-3, @spells)) {stonersay %upper( %-3) is already not available to players.;#ABORT 1};stonersay Players can no longer have '%-3' cast on them.;#DELITEM spells "%-3";#ABORT 1};#SHOW "";#SHOW "";stonersay "SPELLS AVAILABLE";stonersay "----------------";#FORALL @spells {stonersay %upper( %i)};#SHOW "";#ABORT 1};#IF (%1 == banlist) {stonersay "BANNED PLAYERS";stonersay "--------------";#FORALL @banlist {stonersay %i};#SHOW "";stonersay These players can not access your bot.;#SHOW "";#ABORT 1};#IF (%1 == ban) {#IF (%ismember( %2, @banlist)) {stonersay %2 is already banned from your bot.;#ABORT 1};stonersay %2 is now banned from your bot.;#ADDITEM banlist %2;#ABORT 1};#IF (%1 == unban) {#IF (!%ismember( %2, @banlist)) {stonersay %2 is not banned from your bot.;#ABORT 1};stonersay %2 is no longer banned from your bot.;#DELITEM banlist %2;#ABORT 1};#IF (%1 == users) {#IF (%2 == add) {#IF (%ismember( %3, @limited_users)) {stonersay They are already allowed access in limited mode.;#ABORT 1};#ADDITEM limited_users %3;stonersay %3 is now allowed to use the bot when in limited mode.;#ABORT 1};#IF (%2 == remove) {#IF (!%ismember( %3, @limited_users)) {stonersay %3 can already not access the bot in limited mode.;#ABORT 1};#DELITEM limited_users %3;stonersay %3 can no longer use the bot in limited mode.;#ABORT 1};#SHOW "";#SHOW "";stonersay "LIMITED MODE USERS";stonersay "------------------";#FORALL @limited_users {stonersay %upper( %i)};#SHOW "";#ABORT 1};#SHOW "";#SHOW "";stonersay "COMMAND                                 DESCRIPTION";stonersay "-------                                 -----------";stonersay "stoner on limit                       Activates the bot.";stonersay "stoner off                              Deactivates the bot.";stonersay "stoner spells                           Lists the spells able to be cast.";stonersay "stoner spells add spell name          Adds a spell that can be cast.";stonersay "stoner spells remove spell name       Removes a spell that can be cast.";stonersay "stoner banlist                          Shows the people who can not use the bot.";stonersay "stoner ban player name                Bans a player from the bot.";stonersay "stoner unban player name              Unbans a player from the bot.";stonersay "stoner users                            Lists players who can use bot when in limited mode.";stonersay "stoner users add                        Allows the specified player to use the bot in limited mode.";stonersay "stoner users remove                     Revokes the specified players limited mode access."
  end},
}

local triggers = {
  {class="dirs", pattern="A low flying snowball takes you off your feet!$You sit down.$A Giant Ice Warrior falls to the ground and rolls around laughing hysterically.", run=function(matches)
    send("wake")
  end},
  {class="SlowWalk", pattern="~[Exits", run=function(matches)
    -- TODO CMUD directive not auto-converted: #OK
  end},
  {class="spells", pattern="You are already as strong as you can get!", run=function(matches)
    -- TODO CMUD directive not auto-converted: #var giant done
  end},
  {class="spells", pattern="You buy a small wooden shield.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #add shields (+1)
  end},
  {class="spells", pattern="Your a red and white staff blazes bright", run=function(matches)
    send("wear red")
  end},
  {class="spells", pattern="You put anti-cyclops elixir in a leather backpack.$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #ADD elixir (+ 1)
  end},
  {class="spells", pattern="You get anti-cyclops elixir from a leather backpack.$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #MATH elixir (@elixir - 1)
  end},
  {class="spells", pattern="You get ~(Filthy~) a greasy spoon from a leather backpack.$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #MATH spoon (@spoon - 1)
  end},
  {class="spells", pattern="You put ~(Filthy~) a greasy spoon in a leather backpack.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #ADD spoon (+ 1)
  end},
  {class="spells", pattern="You get a potion of true sight from a leather backpack.$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #math true (@true - 1)
  end},
  {class="spells", pattern="You put a potion of true sight in a leather backpack.$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #ADD true (+1)
  end},
  {class="spells", pattern="You brandish a red and white staff.$^A warm feeling fills your body.$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #if (@mood == "pissy") {wear scep}
  end},
  {class="spells", pattern="You put a red and white staff in a leather backpack.$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #add staff (+1)
  end},
  {class="spells", pattern="You get a red and white staff from a leather backpack.$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #MATH staff (@staff - 1)
  end},
  {class="spells", pattern="You zap (.+) with ~(Filthy~) a greasy spoon.$Your efforts with ~(Filthy~) a greasy spoon produce only smoke and sparks.", run=function(matches)
    send("get spoon back")
    send("wear spoon")
    send("zap " .. tostring(matches[1] or "") .. "")
    -- TODO CMUD directive not auto-converted: #IF (@mood == pissy) {
    send("wear scep")
    send("put spoon back")
    send("} {")
    send("wear tome")
    send("put spoon back")
    send("}")
    send("put all.spoon back")
  end},
  {class="spells", pattern="You feel less sloth-like.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE lethargy undone
  end},
  {class="spells", pattern="You feel someone protecting you.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE armor done
  end},
  {class="spells", pattern="You feel yourself moving more quickly.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE haste done
  end},
  {class="spells", pattern="Your hands become as strong as talons.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE talon done
  end},
  {class="spells", pattern="^You feel very sick.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE poison poisoned
  end},
  {class="spells", pattern="Your hands return to normal.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE talon undone
  end},
  {class="spells", pattern="You feel less sick.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE poison healthy
  end},
  {class="spells", pattern="You shiver and suffer.$", run=function(matches)
    send("wake")
    send("cas undo poison self")
    send("rest")
  end},
  {class="spells", pattern="Your pulse races as you are consumned by rage!", run=function(matches)
    send("emote warcries 'I have the POWER!';#var frenzy on")
  end},
  {class="spells", pattern="The white aura around your body fades.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE sanctuary undone
  end},
  {class="spells", pattern="You are surrounded by a force shield.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE shield done
  end},
  {class="spells", pattern="Your force shield shimmers then fades away.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE shield undone
  end},
  {class="spells", pattern="You feel less armored.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE armor undone
  end},
  {class="spells", pattern="You feel yourself slow down.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE haste undone
  end},
  {class="spells", pattern="Your feet rise off the ground.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE fly done
  end},
  {class="spells", pattern="You slowly float to the ground.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE fly undone
  end},
  {class="spells", pattern="Your skin turns to stone.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE stoneskin done
  end},
  {class="spells", pattern="Your skin feels soft again.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE stoneskin undone
  end},
  {class="spells", pattern="You feel less vibrant.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE regen undone
  end},
  {class="spells", pattern="Your muscles surge with heightened power!", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE giant done
  end},
  {class="spells", pattern="You feel weaker.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE giant undone
  end},
  {class="spells", pattern="You feel protected from evil.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE protectevil done
  end},
  {class="spells", pattern="You feel protected from do-gooders.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE protectgood done
  end},
  {class="spells", pattern="You feel less protected from evil.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE protectevil undone
  end},
  {class="spells", pattern="You feel less protected from good.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE protectgood undone
  end},
  {class="spells", pattern="You feel absolutely vibrant!", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE regen done
  end},
  {class="spells", pattern="You feel less righteous.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE bless undone
  end},
  {class="spells", pattern="You are filled with holy wrath!", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE frenzy done
  end},
  {class="spells", pattern="You feel righteous.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE bless done
  end},
  {class="spells", pattern="Your rage ebbs.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE frenzy undone
  end},
  {class="spells", pattern="You turn translucent.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE passdoor done
  end},
  {class="spells", pattern="You feel solid again.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE passdoor undone
  end},
  {class="spells", pattern="You feel yourself become helplessly lethargic.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE lethargy done
  end},
  {class="spells", pattern="You are surrounded by a white aura.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #VARIABLE sanctuary done
  end},
  {class="spells", pattern="You put a Druidic protective brew in a leather backpack.$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #add brews (+ 1)
  end},
  {class="spells", pattern="You get a Druidic protective brew from a leather backpack.$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #MATH brews (@brews - 1)
  end},
  {class="spells", pattern="You no longer see invisible objects.$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #var detect_invis undone
  end},
  {class="spells", pattern="Your eyes tingle.$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #var detect_invis done
  end},
  {class="spells", pattern="Your awareness improves.$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #var detect_hidden done
  end},
  {class="spells", pattern="You feel less aware of your surroundings.$", run=function(matches)
    -- TODO CMUD directive not auto-converted: #var detect_hidden undone
  end},
  {class="StonerBot", pattern="You go to sleep.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #var awake sleep
  end},
  {class="StonerBot", pattern="You wake and stand up.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #var awake awake
  end},
  {class="StonerBot", pattern="((\\\\w+)) says '!help'", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {say Sorry, you are banned from my bot.;#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {say Sorry, but only certain people are allowed to use my bot right now.;#ABORT 1};say Hello %1! The InfoBot is still under development, currently I can help you on these topics - !areas !spellgroups !skills !websites;say However, I can be emailed at bedwards@bigpond.net.au you have a problem :)
  end},
  {class="StonerBot", pattern="^### ((\\\\w+)) has entered the game.", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {#ABORT 1};#IF {@afk == here} {#ABORT 1};#noop tell %1 hey, i'm actually afk right now, the InfoBot is improving all the time! Find me and say !help for details
  end},
  {class="StonerBot", pattern="((\\\\w+)) says '!yggdrasil'", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {say Sorry, you are banned from my bot.;#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {say Sorry, but only certain people are allowed to use my bot right now.;#ABORT 1};say Aha! To get to Yggdrasil, follow this path! recall, 2 south, 14 west. Be very careful, some creatures in there are dangerous.
  end},
  {class="StonerBot", pattern="((\\\\w+)) says '!arachnos'", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {say Sorry, you are banned from my bot.;#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {say Sorry, but only certain people are allowed to use my bot right now.;#ABORT 1};say Aha! To get to Arachnos, follow this path! recall, 2s, 13w, s, 2w, n, w, u. Be very careful, some creatures in there are dangerous. Arachnos is suitable for characters around level 15.
  end},
  {class="StonerBot", pattern="((\\\\w+)) says '!daonima'", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {say Sorry, you are banned from my bot.;#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {say Sorry, but only certain people are allowed to use my bot right now.;#ABORT 1};say Aha! To get to Daonima, follow this path! recall, 2s, 4e, 3n, 2w, 2n, 2d, 2e, open east, east. Be very careful, some creatures in there are dangerous. Daonima is a gateway to certain creatures like Quagmire, that can surely kill you if you arent careful.
  end},
  {class="StonerBot", pattern="((\\\\w+)) says '!newthalos'", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {say Sorry, you are banned from my bot.;#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {say Sorry, but only certain people are allowed to use my bot right now.;#ABORT 1};say Aha! To get to New Thalos, follow this path! recall, 2 south, 17 east. New Thalos is ideal for characters around level 15-25.
  end},
  {class="StonerBot", pattern="((\\\\w+)) says '!skills'", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {say Sorry, you are banned from my bot.;#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {say Sorry, but only certain people are allowed to use my bot right now.;#ABORT 1};say I have compiled a list of the best skills to have for all-round performance.;say Parry, Dodge, Shield Block, Fast Healing, Kick, Disarm, Meditation, Enhanced Damage, Sword ~(OR Dagger~) and Polearm.
  end},
  {class="StonerBot", pattern="((\\\\w+)) says '!smurf'", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {say Sorry, you are banned from my bot.;#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {say Sorry, but only certain people are allowed to use my bot right now.;#ABORT 1};say Aha! To get to The Smurf Village, follow this path! recall, 2 south, 7 east, 5 north. Be very careful, some creatures in there are dangerous. The Smurf Village has some great low level items, on Brainy and Smurfette.
  end},
  {class="StonerBot", pattern="((\\\\w+)) says '!halloween'", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {say Sorry, you are banned from my bot.;#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {say Sorry, but only certain people are allowed to use my bot right now.;#ABORT 1};say Aha! To get to Halloween, follow this path! recall, 2s, 3e, 7s, 3w, s, w, 4s, enter port, w, d, w, s. Halloween is a fun area, with only Count Magnus to be wary of. However, the headless horseman may have a surprise for you!
  end},
  {class="StonerBot", pattern="((\\\\w+)) says '!crystallake'", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {say Sorry, you are banned from my bot.;#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {say Sorry, but only certain people are allowed to use my bot right now.;#ABORT 1};say Aha! To get to Crystalmir Lake, follow this path! recall, 2s, 14w, n, s, d, 2w. Be very careful, some creatures in there are dangerous. Arachnos is suitable for characters around level 15, and leads into the !Concert and !Solace.
  end},
  {class="StonerBot", pattern="((\\\\w+)) says '!astralplane'", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {say Sorry, you are banned from my bot.;#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {say Sorry, but only certain people are allowed to use my bot right now.;#ABORT 1};say Aha! To get to the Astral Plane, follow this path! recall, n, 10u, n, open n. Be very careful, some creatures in there are dangerous. The Astral Plane is suitable for characters around level 15.
  end},
  {class="StonerBot", pattern="((\\\\w+)) says '!ganglands'", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {say Sorry, you are banned from my bot.;#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {say Sorry, but only certain people are allowed to use my bot right now.;#ABORT 1};say Aha! To get to The Dangerous Neighbourhood follow this path! recall, 8s, w, s, 2e, s, e. Be very careful, some creatures in there are dangerous. The Dangerous Neighbourhood is suitable for characters around level 7.
  end},
  {class="StonerBot", pattern="((\\\\w+)) says '!websites'", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {say Sorry, you are banned from my bot.;#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {say Sorry, but only certain people are allowed to use my bot right now.;#ABORT 1};say The Dark Gathering has its own website! It can be found at madromvamps
  end},
  {class="StonerBot", pattern="((\\\\w+)) says '!areas'", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {say Sorry, you are banned from my bot.;#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {say Sorry, but only certain people are allowed to use my bot right now.;#ABORT 1};say !astralplane, !newthalos, !smurf, !daonima, !yggdrasil, !halloween, !arachnos, !crystallake
  end},
  {class="StonerBot", pattern="((\\\\w+)) says '!spellgroups'", run=function(matches)
    -- TODO CMUD directive not auto-converted: #IF (@bot_status == 0) {#ABORT 1};#IF (%ismember( %1, @banlist)) {say Sorry, you are banned from my bot.;#ABORT 1};#IF (@bot_status == 2)and(!%ismember( %1, @limited_users)) {say Sorry, but only certain people are allowed to use my bot right now.;#ABORT 1};smile %1;say I think that these groups are the best ones to make your character generally strong and useful. You arent required to gain them all, and regardless of what you choose in the end you will still be powerful.;say Beguiling, Benedictions, Enchant Weapon, Enchant Armour, Maladictions, Detections, Draconian, Specialties, Enhancement, Protective and Healing.
  end},
}

for _, spec in ipairs(aliases) do
  local id = tempAlias(spec.pattern, function(matches)
    spec.run(matches)
  end)
  table.insert(state.aliasIds, id)
end

for _, spec in ipairs(triggers) do
  local id = tempRegexTrigger(spec.pattern, function(matches)
    spec.run(matches)
  end)
  table.insert(state.triggerIds, id)
end

if cecho then
  cecho(string.format("&amp;lt;green&amp;gt;[%s]&amp;lt;reset&amp;gt; loaded %d aliases / %d triggers\n", "Seamer CMUD Import (Utility)", #aliases, #triggers))
end
</script>
    </ScriptGroup>
  </ScriptPackage>
  <KeyPackage />
  <HelpPackage />
</MudletPackage>
