Plugins for Aardwolf MUD

Posted by Onoitsu2 on Thu 18 May 2006 01:59 AM — 34 posts, 210,040 views.

USA #0
I have created 7 plugins for the MUD Aardwolf (aardmud.org)

1. Aardwolf_Alignment_ReportLUA.xml
2. Aardwolf_Colored_ConsiderLUA.xml
3. Aardwolf_FriendxLUA.xml
4. Aardwolf_GroupMonitorLUA.xml
5. Aardwolf_Quest_InformLUA.xml
6. Aardwolf_SpellupLUA.xml
7. Aardwolf_Weapon_SwitchLUA.xml

you can download them here ... http://geocities.com/onoitsu2/MC_Plugins/

and also look up information related to them.

All are written in LUA so that they WILL work on LINUX (using wine 'emulated' mushclient)

Enjoy,
Onoitsu2 (Venificius on Aardwolf)
Amended on Tue 11 Jul 2006 04:31 AM by Onoitsu2
Australia Forum Administrator #1
Thanks for making those available. I have made an archive of them, in the event that your link becomes unavailable, do I have your permission to make the copy available?
USA #2
May I add a few of my own creations to the archive Nick? I have no place to upload any of mine and make publicly available.
Australia Forum Administrator #3
Sure, will they fit into a forum posting?
USA #4
Ya Nick, of course you have permission to keep a copy in the archive, in fact I am very glad that you are going to, cause no one likes going to a geocities site as it has that bar on the side now, and all those ads ... :(

Thanks again for this great client,

Onoitsu2 (Venificius on aardmud.org)
Australia Forum Administrator #5
Copies are here:


Amended on Fri 04 Aug 2006 05:49 AM by Nick Gammon
USA #6
All but this one are too large to fit in a single post.
This plugin acts as an extension to the sell command by allowing a user to sell all of their non-keep flagged equipment with one command. Works with shortflags on or off.


<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient>
<!-- Saved on Sunday, June 25, 2006, 1:47 AM -->
<!-- MuClient version 3.73 -->

<!-- Plugin "Sellall" generated by Plugin Wizard -->

<muclient>
<plugin
   name="Sellall"
   author="NeoFryBoy(Tealos)"
   id="9b5d0352809c46c0900aec6f"
   language="VBscript"
   purpose="Since Aardwolf doesn't have a sell all feature I decided to add one."
   date_written="2006-06-25 01:45:49"
   save_state="y"
   requires="3.73"
   version="1.0"
   >

</plugin>


<!--  Get our standard constants -->

<include name="constants.vbs"/>

<!--  Triggers  -->

<triggers>
  <trigger
   group="SellInv"
   match="^\[Enter key for more or \'q\' to stop\]$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.send vbnewline</send>
  </trigger>
  <trigger
   group="SellInv"
   keep_evaluating="y"
   match="^([ ]{5}|\(( \d|\d{2}|\d{3})\) )(?:\([BKIGHM]\)){0,}(.*?) (|\[\d{3}\/\d{3}\] )(?:\[\d+\])"
   regexp="y"
   script="SellAllItems"
   sequence="100"
  >
  </trigger>
</triggers>

<!--  Aliases  -->

<aliases>
  <alias
   match="sellall"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>world.EnableTriggerGroup "SellInv", True
world.send "inv"
world.doafterspecial 4, "world.EnableTriggerGroup " &amp; chr(34) &amp; "SellInv" &amp; chr(34) &amp; ", False", 12</send>
  </alias>
  <alias
   match="sellkey*"
   enabled="y"
   send_to="10"
   sequence="100"
  >
  <send>goto island of stardock;run 3wd2sw8s;vis</send>
  </alias>
  <alias
   match="sellhelp"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>world.ansinote ansi(0) &amp; "-=" &amp; ansi(36) &amp; "[ " &amp; ansi(31) &amp; ansi(22) &amp; "SellAll for " &amp; ansi(33) &amp; ansi(1) &amp; "MUSHClient" &amp; ansi(31) &amp; ansi(22) &amp; " done by " &amp; ansi(31) &amp; ansi(1) &amp; "T" &amp; ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; "ealos." &amp; ansi(36) &amp; " ]" &amp; ansi(0) &amp; "=-"
world.ansinote ansi(36) &amp; ansi(1) &amp; "This plugin is intended to act as an extension to the MUDs current sell command."
world.ansinote ansi(31) &amp; ansi(22) &amp; vbnewline
world.ansinote ansi(32) &amp; ansi(1) &amp; "Use:"
world.ansinote ansi(33) &amp; ansi(1) &amp; "Just head to your favorite clanshop and type " &amp; ansi(36) &amp; ansi(1) &amp; "sellall" &amp; ansi(33) &amp; ansi(1) &amp; ".  It should automatically scroll through long inventories."
world.ansinote ansi(33) &amp; ansi(1) &amp; "As a side bonus I threw in the command " &amp; ansi(36) &amp; ansi(1) &amp; "sellkey" &amp; ansi(33) &amp; ansi(1) &amp; " which takes you to a shopkeeper in stardock who buys most keys."
world.ansinote ansi(31) &amp; ansi(22) &amp; vbnewline
world.ansinote ansi(31) &amp; ansi(1) &amp; "Note: " &amp; ansi(37) &amp; ansi(1) &amp; "The MUD is pretty good about sending a massive amount of commands, so there shouldn't be a reachable limit.  If you manage to hit it let me know."</send>
  </alias>
</aliases>

<!--  Script  -->


<script>
<![CDATA[
Sub OnPluginInstall()
world.note "Type sellhelp for help."
End Sub

Sub SellAllItems(name, line, wildcards)
Dim a, ItemKeywords

If InStr(1, wildcards(10), "(K)") > 0 Then 'It's keep flagged, so skip it.
 Exit Sub
End If

If Not Trim(wildcards(2)) = "" Then 'It repeats since there are multiples

For a = 1 To Trim(wildcards(2))
 ItemKeywords = Trim(KWShredder(" " & wildcards(3)))
 ItemKeywords = Replace(ItemKeywords, " ", "; sell ")
 world.doafterspecial 3, "sell " & ItemKeywords, 10
Next
Else
 ItemKeywords = Trim(KWShredder(" " & wildcards(3)))
 ItemKeywords = Replace(ItemKeywords, " ", "; sell ")
 world.doafterspecial 3, "sell " & ItemKeywords, 10
'world.execute "sell " & ItemKeywords
End If

End Sub

Function KWShredder(ByVal currItem) 'Called it the Shredder because it's rather messy
currItem = Replace(LCase(currItem), " a ", " ")
currItem = Replace(LCase(currItem), " an ", " ")
currItem = Replace(LCase(currItem), " the ", " ")
currItem = Replace(LCase(currItem), " of ", " ")
currItem = Replace(LCase(currItem), " small ", " ")
currItem = Replace(LCase(currItem), " big ", " ")
currItem = Replace(LCase(currItem), "(", "")
currItem = Replace(LCase(currItem), ")", "")
currItem = Replace(LCase(currItem), "-", "")
currItem = Replace(LCase(currItem), "*", "")
currItem = Replace(LCase(currItem), "<", "")
currItem = Replace(LCase(currItem), "=", "")
currItem = Replace(LCase(currItem), ">", "")
currItem = Replace(LCase(currItem), "'s", "")
currItem = Replace(LCase(currItem), "magical", "")
currItem = Replace(LCase(currItem), "glowing", "")
currItem = Replace(LCase(currItem), "humming", "")
currItem = Replace(LCase(currItem), "invis", "")
currItem = Replace(LCase(currItem), "blue", "")

KWShredder = currItem
End Function
]]>
</script>


</muclient>
Amended on Thu 13 Jul 2006 08:36 AM by NeoFryBoy
USA #7
Yo neo, would you mind if I converted that sell all to LUA so that even the linux users can use it ?

I am going to do it for myself I just want permission to repost it in an LUA version...

Laterzzz,
Onoitsu2
Australia Forum Administrator #8
I have removed the length restriction for your posts, NeoFryBoy, so you can post them here initially.

Please use the [code] tag (which you did but it didn't activate, so you must have not checked "forum codes"), and also - and this is important for things like regular expressions - use the MUSHclient Notepad to Convert -> Quote Forum Codes. This puts a backslash in front of square brackets, and also backslashes.

Otherwise some square bracket items (like [i]) might not appear in the post, but turn everything into italic, and doubled backslashes (which might appear in regexps) might disappear.

I fixed up your earlier post to do that, so you don't need to do that one again.
Amended on Thu 13 Jul 2006 09:40 PM by Nick Gammon
USA #9
Onoitsu2: Go for it. I made 'em to share, and don't feel like learning a new scripting language.

Note: All my plugins feature a coloured helpfile.

This one is a note bot (aka colourbot) It's basic function is to allow the user to copy text that was displayed on the screen and then send it back to MUD with the same colour formatting based on their ansi colour setting. Technically it should work with any MUD that uses colour codes (@W @r, etc.), and the board system designed by Erwin S. Andreasen, 4u2abc.dk, aka
Phunk, which is freely available.


<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient>
<!-- Saved on Wednesday, June 07, 2006, 4:41 PM -->
<!-- MuClient version 3.73 -->

<!-- Plugin "nbot" generated by Plugin Wizard -->

<muclient>
<plugin
   name="nbot"
   author="NeoFryBoy(Tealos)"
   id="74cb66213118499c3fc4db42"
   language="VBscript"
   purpose="To copy lines from screen with colour attached."
   save_state="n"
   date_written="2006-06-07 16:31:37"
   requires="3.73"
   version="2.10"
   >
<description trim="y">
<![CDATA[
Type nbot:help for help.
]]>
</description>

</plugin>


<!--  Get our standard constants -->

<include name="constants.vbs"/>

<!--  Variables  -->

<variables>
  <variable name="LineSeparator">//</variable>
  <variable name="NoteTotLines">0</variable>
</variables>

<!--  Aliases  -->

<aliases>
  <alias
   script="ColourStripper"
   match="nbot*"
   enabled="y"
   sequence="100"
  >
  </alias>
  <alias
   match="nbothelp"
   enabled="y"
   send_to="12"
   sequence="1"
  >
  <send>world.ansinote ansi(0) &amp; "-=" &amp; ansi(36) &amp; "[ " &amp; ansi(31) &amp; ansi(22) &amp; "Notebot for " &amp; ansi(33) &amp; ansi(1) &amp; "MUSHClient" &amp; ansi(31) &amp; ansi(22) &amp; " done by " &amp; ansi(31) &amp; ansi(1) &amp; ansi(40) &amp; "T" &amp; ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; "ealos." &amp; ansi(36) &amp; " ]" &amp; ansi(0) &amp; "=-"
world.ansinote ansi(36) &amp; ansi(1) &amp; ansi(40) &amp; "This plugin is intended to make it extremely simple to copy lines and return them to the game with the same colour codes in tact.  In otherwords you won't have to add in the colour codes to send a duplicate of a line back to the MUD."
world.ansinote ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; vbnewline
world.ansinote ansi(32) &amp; ansi(1) &amp; ansi(40) &amp; "Use:"
world.ansinote ansi(37) &amp; ansi(1) &amp; ansi(40) &amp; "Select the line or lines that you intend to copy, right-click the screen, and select ""Copy as HTML...."""
world.ansinote ansi(37) &amp; ansi(1) &amp; ansi(40) &amp; "Alternatively, you can goto Game | Configure --> Output and select ""Copy Selection to Clipboard"" and ""HTML"" to have the MUD auto-copy text you select in HTML format."
world.ansinote ansi(33) &amp; ansi(1) &amp; ansi(40) &amp; "Then use the command " &amp; ansi(32) &amp; ansi(1) &amp; ansi(40) &amp; "'nbot &lt;channel&gt; [pre-appended text]'"
world.ansinote ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; vbnewline
world.ansinote ansi(31) &amp; ansi(1) &amp; ansi(40) &amp; "Note:" &amp; ansi(22) &amp; " All of the arguments can be blank, but the pre-appended text is only if you specify a channel."
world.ansinote ansi(33) &amp; ansi(1) &amp; ansi(40) &amp; "If you're putting this into a note just type " &amp; ansi(32) &amp; ansi(1) &amp; ansi(40) &amp; "'nbot'" &amp; ansi(33) &amp; ansi(1) &amp; ansi(40) &amp; " and it will paste it all in and auto-fix lines that are too long."
world.ansinote ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; vbnewline
world.ansinote ansi(33) &amp; ansi(1) &amp; ansi(40) &amp; "To just send to a channel type " &amp; ansi(32) &amp; ansi(1) &amp; ansi(40) &amp; "'nbot &lt;channel&gt;'"
world.ansinote ansi(36) &amp; ansi(1) &amp; ansi(40) &amp; "ie. 'nbot ftalk' (Can select multiple lines with this feature.  Each new line is replaced with //)"
world.ansinote ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; vbnewline
world.ansinote ansi(33) &amp; ansi(1) &amp; ansi(40) &amp; "To send to a channel, and add on text use " &amp; ansi(32) &amp; ansi(1) &amp; ansi(40) &amp; "'nbot &lt;channel&gt; &lt;text&gt;'"
world.ansinote ansi(36) &amp; ansi(1) &amp; ansi(40) &amp; "ie. 'nbot ftalk Check out this cool item...'  will send it to ftalk with the text pre-appended."
world.ansinote ansi(36) &amp; ansi(1) &amp; ansi(40) &amp; "ie. 'nbot tell Tealos'  will do just as it suggests."
world.ansinote ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; vbnewline
world.ansinote ansi(31) &amp; ansi(1) &amp; ansi(40) &amp; "Currently you cannot paste into a note, and add text in front of the first line using 'nbot &lt;text&gt;'"
world.ansinote ansi(31) &amp; ansi(1) &amp; ansi(40) &amp; "Just type your text into the note, and then use 'nbot' to have the bot place the rest in for you."</send>
  </alias>
</aliases>

<!-- Triggers -->

<triggers>
  <trigger
   enabled="y"
   match="^ ( \d|\d+). (.*?)$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.setvariable "NoteTotLines",  trim(%1)</send>
  </trigger>
</triggers>

<!--  Script  -->


<script>
<![CDATA[
Sub OnPluginInstall()
world.note "Type nbothelp for instructions on how to use the nbot."
End Sub

Dim strRAW, strHTML, a, strValue, b, strOffset

Sub ColourStripper(name, line, wildcards)
If wildcards(1) = "help" then
exit sub
End if

strRAW = world.getClipboard 'Get it
strRAW = Split(strRAW, vbNewLine) 'Cut up the HTML lines

strHTML = ""

'Now we're gonna ignore the first four and last lines and put it all back together
'This way is more versatile and requires less editing if transferred to another user
'due to any differences in the colours and fonts of the output screen.
For a = 4 To (UBound(strRAW) - 2)
  If a = UBound(strRAW) - 2 Then
   strHTML = strHTML & strRAW(a)
  Else
   strHTML = strHTML & strRAW(a) & vbNewLine
  End If
Next

strHTML = wildcards(1) & " " & strHTML

'Few things that aren't anywhere in particular.
strHTML = Replace(strHTML, "</font>", "")
strHTML = Replace(strHTML, "</code></pre>", "")
strHTML = Replace(strHTML, "&gt;", ">")
strHTML = Replace(strHTML, "&quot;", Chr(34))
strHTML = Replace(strHTML, "&lt;", "<")
strHTML = Replace(strHTML, "&amp;","&")
strHTML = Replace(strHTML, "@","@@")
strHTML = Replace(strHTML, ";",";;")

'Now to replace font colours
'" & chr(34) & "

For a = 2 To 8
 strValue = StrReverse(Hex(world.boldcolour(a)))
 
 Do Until Len(strValue) = 6
  strValue = strValue & "0"
 Loop
 
 'Then we fix an oddity with hex.
 'Hex is represented in a form of 3 groups of two.  Each group is reversed when translated. So we've got to undo it.
 ReDim strOffset(1)
 
 For b = 1 To 6
  ReDim Preserve strOffset(b)
  strOffset(b) = Mid(strValue, b, 1)
 Next
  
  strValue = strOffset(2) & strOffset(1) & strOffset(4) & strOffset(3) & strOffset(6) & strOffset(5)
 Select Case a:
 Case 2: strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#" & strValue & Chr(34) & ">", "@R") 'Bright Red
 Case 3: strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#" & strValue & Chr(34) & ">", "@G") 'Bright Green
 Case 4: strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#" & strValue & Chr(34) & ">", "@Y") 'Bright Yellow
 Case 5: strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#" & strValue & Chr(34) & ">", "@B") 'Bright Blue
 Case 6: strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#" & strValue & Chr(34) & ">", "@M") 'Bright Magenta
 Case 7: strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#" & strValue & Chr(34) & ">", "@C") 'Bright Cyan
 Case 8: strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#" & strValue & Chr(34) & ">", "@W") 'Bright White
 End Select
Next

For a = 2 To 8
 strValue = StrReverse(Hex(world.normalcolour(a)))
 
 Do Until Len(strValue) = 6
  strValue = strValue & "0"
 Loop
 
 'Fix the hex again.
 ReDim strOffset(1)
 
 For b = 1 To 6
  ReDim Preserve strOffset(b)
  strOffset(b) = Mid(strValue, b, 1)
 Next
  
  strValue = strOffset(2) & strOffset(1) & strOffset(4) & strOffset(3) & strOffset(6) & strOffset(5)
 Select Case a:
 Case 2: strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#" & strValue & Chr(34) & ">", "@r") 'Dark Red
 Case 3: strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#" & strValue & Chr(34) & ">", "@g") 'Dark Green
 Case 4: strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#" & strValue & Chr(34) & ">", "@y") 'Dark Yellow
 Case 5: strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#" & strValue & Chr(34) & ">", "@b") 'Dark Blue
 Case 6: strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#" & strValue & Chr(34) & ">", "@m") 'Dark Magenta
 Case 7: strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#" & strValue & Chr(34) & ">", "@c") 'Dark Cyan
 Case 8: strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#" & strValue & Chr(34) & ">", "@w") 'Dark White
 End Select
Next

strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#FF0000" & Chr(34) & ">", "") 'This is just fer me because my name is highlighted that colour.  You can change this to match your own custom colours, just replace the #XXXXXX with the appropriate hex code and the second set of quotes after the second comma you can add a colour code or leave blank.
strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#80FFFF" & Chr(34) & ">", "@W") 'The colour of my commands...
strHTML = Replace(strHTML, "<font color=" & Chr(34) & "#0080FF" & Chr(34) & ">", "@W") ' The colour of my world.notes

if trim(wildcards(1)) = "" then 'it's note mode
 world.setvariable "NoteTotLines", "0"
 world.send ".sn"
 world.AddTimer "NBot_Note_Timer", 0, 0, 2, "", 1 + 4 + 16384, "NoteMode"
else 'Channel mode
 strHTML = Replace(strHTML, vbnewline , "@w" & world.getvariable("LineSeparator")) 'Remove newlines for single line input.
 world.execute trim(strHTML) & "@w"
end if
End Sub

Sub NoteMode(name)
redim strRAW(0)
strraw = split(strHTML,vbnewline)
strHTML = ""

for a = 0 to ubound(strraw)
 If strraw(a) = "" then
  strraw(a) = " ;"
 end if

 If (0 + len(strraw(a)))> 75 then
  'Toss something there then do a line replace to get around
  'the max char limit.
  strraw(a) = "q;.lr " & Cint(world.getvariable("NoteTotLines")) + a + 1 & " " & strRAW(a) 
 End If
next

For a = 0 To UBound(strRAW)
  If a = UBound(strRAW) Then
   strHTML = strHTML & strRAW(a) & "@w"
  Else
   strHTML = strHTML & strRAW(a) & vbNewLine
  End If
Next

 world.execute trim(strHTML) & "@w"
End Sub
]]>
</script>
</muclient>
USA #10
This script just sends a message to any user-specified channel when an area repop msg is recieved. (Not all 217 areas are documented.)

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient>
<!-- Saved on Sunday, June 18, 2006, 10:02 PM -->
<!-- MuClient version 3.73 -->

<!-- Plugin "RepopTracker" generated by Plugin Wizard -->

<muclient>
<plugin
   name="RepopTracker"
   author="NeoFryBoy(Tealos)"
   id="a5d06f430d8f58c8a4c3ea6d"
   language="VBscript"
   purpose="Used to note the user when an area has repopped."
   save_state="y"
   date_written="2006-06-18 22:00:12"
   requires="3.73"
   version="1.0"
   >

</plugin>


<!--  Triggers  -->

<triggers>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Richard and Virgil are at it again.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow War of the Wizards"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Darkness reaches out and pries at your very being\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Council of Wyrm"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A faint \'Yoho\!\' can be heard somewhere in the distance\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Misty Shores of Yarr"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A gentle breeze softly caresses your cheek.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Takeda's Warcamp"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The darkness shifts as chaos changes\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Courts of Chaos"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Welcome to the casino\. May fortune leave you both profitable and alive \.\.\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Casino"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You hear guards yelling \'Intruders\!\!\' as more dark elves are alerted of your presence\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Dark Elf Stronghold"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The trip gets stranger and stranger and stranger\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Bad Trip"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Let the slaughter commence....$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Slaughter House"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The Battle for Human Souls Begins Again.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Avian Kingdom"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The dream never ends.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Astral Travels"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^More of the undead sense mortal flesh in Arboria.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Arboria"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A calm passes over the city as Mt\. Vesuvius rests once again.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Pompeii"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^There is a jet of warm air, as the furnace flares\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Dwarven Kingdom"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Ah\, More BEER\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Land of Beer Goblins"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The prison alarm sounds\!  It\'s a breakout\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Prison"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Allllllllll aboooooooooooard\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Land of Legend"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^There is a great rumbling as some ice falls from the summit into the lake.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Icy Caldera"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You see a whale swim above you blocking out the faint sunlight\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Lost City of Atlantis"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Horses hooves pound against the ground as more guards arrive to protect the roads\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Western Roads"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The shadow of the The Three Pillars rolls over the courtyard\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Three Pillars of Diatz"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A new game begins on the chessboard\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Chessboard"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You hear the sounds of sabres clashing on deck\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Pirate Ship"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A booming voice shouts &quot;Minions, destroy the intruders.. Devour their souls\!&quot;$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Castle Vlad-Shamir"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The winds shift as the citadel moves again.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Flying Citadel"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You hear the call of a loon from out on the lake\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Crystalmir Lake"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You hear the seagulls over the cliffs of Kerofk as new life enters the city.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Kerofk"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The forces of darkness bring forth more children of Torak.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Cthos Misrak"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The screams of damned souls fill the air and echo deeply into your ears.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Sanctity of Eternal Damnation"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The ground trembles with the pulse of dark magic.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Halls of the Damned"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Magic surges through the land as a new day of mystery and heroes are born.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Covenant of Mistrige"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The Princess whimpers as her shackles are pulled tighter and the Tower's minions commence.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Dread Tower"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Wetly rising from the shadows\, once again evil threatens Reme...$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Reman Conspiracy"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The wayhouse has hired new staff and is open for business\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Adventurer's Wayhouse"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^More Rangers have been suppressed as they attempt to flee.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Deathtrap Dungeon"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You hear a roar in the distance, reminding you to stay on your guard.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Cougarian Queendom"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The Mists settle and new travellers come to the realm.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Falcovnia"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A distant scream ends in abrupt silence...$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Black Rose"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Peace reigns the Plane once again as a new day emerges.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Earth Plane 4"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Lightning flashes over the stark mountains, awakening dark creatures.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Mountains of Desolation"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The Aardwolf Zoological Park appears clean and ready for today's visitors.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Aardwolf Zoological Park"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^\* Diamond Dust sprinkles downward from the sky, revitalizing all life. \*$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Diamond Soul Revelation"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Thunder clashes in the sky as Dragon Mountain is overrun by kobolds.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Dragon Mountain"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Another avalanche rolls down Storm Mountain.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Storm Mountain"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^More smurfs\! Kill those little blue bastards\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Smurf Village"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A fiery, sulphurous breeze blasts you with a bonechilling shriek.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Paradise Lost"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A whinny and a roar fill the air\, then slowly the echoes fade away\.$$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Unearthly Bonds"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The denizens of the Underdark are ready to start their business.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Underdark"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You hear a voice singing 'just beat it.. yes, beat it...'$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Dangerous Neighborhood"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The sound of a thousand goblins cripples you with fear.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Goblin Fortress"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The Amusement Park's lights and music fade and then flare to life again.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Amusement Park"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Suddenly a chill runs up your back\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Dwarven Catacombs"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^More are seeking the Soulblade.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Souldblade"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Death's Gate has opened yet again.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Death's Gate"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A cold wind blows through the old cathedral.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Old Cathedral"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The Temple of Shal'indrael achieves perfect balance once again\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Temple of Shal'indrael"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The ground trembles and stones fall from the ceiling as a tremor shakes the entire region.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Dungeon of Doom"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The magics surrounding the Isle of Myst return.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow MYST"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Drunken cheers are heard as another arrow pierces the wind.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Nottingham"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The lifeless artifacts on the floor rise and ravage the castle again.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Art of Mayhem"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You hear the rattling of chains echoing from somewhere.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Kul Tiras"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The Council of the Dark Eight has declared that you should not be here.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Nine Hells"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A great light flares blinding you, then it is gone.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Antharia"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^\*RING RING\* Classes have begun\! Good Luck$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow School of Horror"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Hell Freezes over \- this can't be a good sign.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Descent to Hell"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Attention Shoppers\! More weird and wondrous creatures have just arrived\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Giant's Pet Store"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The sound of gunfire marks a new day in the City of Gold.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Gold Rush"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Ahner shall rise and rule the realm once more.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Kingdom of Ahner"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The magics of the Lower Planes renew.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Lower Planes"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You slip and fall into the smelly brown guck at your feet.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Sewers"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The hair on your neck rises as you hear the great minotaur awaken\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Knossos"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Water ripples on the surface of the lake.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Sen'narre Lake"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The magics of the Upper Planes are back.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Upper Planes"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The magic of the forest weakens.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Snuckles Village"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You sense a renewal of the Force.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Star Wars"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^There is a flash of lightning in the sky as the magics of Dominia renew\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Land of Dominia"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A cloud flies over, dropping creatures all over the place.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Goblin Path"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Across a glade hoofbeats resound, pages flutter, and the past returns.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow History fo Black Adder"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Slithering from the depths comes forth an army of snakes.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Wobbly Woes of Woobleville"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You wince as the bride throws yet another screaming fit.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Wedded Bliss"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^There is a slight draft as new customers enter the tavern.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Jenny's Tavern"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The king of Juargan moves with his staff and Juargan is populated again\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Kingdom of Juargan"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You hear the Queen's echoing cackle gloating over your predicament.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Labyrinth"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^All melodies flow in sync once more...$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Art of Melody"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The smell of death grows as Damian reigns for another day.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Killing Fields"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The air suddenly rings with the sound of metal chimes.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Dragon Cult"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Munchkins arrive and repopulate the land of Oz.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Land of Oz"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The shadow of Kali wanders by and alters all corpses back into monsters.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Yurgach Domain"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Yet another contingent of Axa's army has been ordered towards Midgaard.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Anthrox"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The blistering sun bakes your sweat to your face.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Great Salt Flats"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You hear familiar sounding theme music in the background.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow STTNG"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The theme music gets on your nerves as you hear it over and over again.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow STTNG: Veritgo"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You sense that more prisoners are being transported here.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Desert Prison"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The Drageran Empire lives again as the Empress breathes new life into her realm.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Drageran Empire"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Praying to the Goddess of Nature, fishermen head toward their ships.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Arisian Realm"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Pure evil passes over you as the Dark One reaches out from his prison.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Shayol Ghul"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Rumours are that Nessy has been seen again.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Highlands"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Blood flows freely throughout the shadowlands as the oni turn their gazes toward you.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Rokugan, The Shadowlands"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Ancient evil surrounds you through the midday heat and leaves a cold print on your soul.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Necromancer's Guild"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Ripples of twisted magic pass through you and chill you to the bone.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Scarred Lands"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^These swamps are quiet, too quiet....$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Curse of the Midnight Fens"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The calling of rebellion stirs fire into the people.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Empire of Talsa"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Cold air brushes against you as the evil heros revive\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Realm of Evil Superheroes"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The mist echoes with insane giggles, and the Faerie Tales start again\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Faerie Tales II"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The leaves beyond the shadow of the treeline begin to rustle.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Gallows"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Rain crashes down. Winds howl. Life returns to the Wonders.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Seven Wonders"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The Dark One frees more of his twisted creatures to wreak havoc and mayhem.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Deadlights"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^All gnomes and hobgoblins regroup to defend their king.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Gnome Village"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A golden light bathes Old Thalos as it is reborn.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Old Thalos"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^An eerie scream echos off the walls, seemingly coming from nowhere.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Gauntlet"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The elements merge creating new life.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Elemental Canyon"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The Dark is rising again...$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Darklight"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Mt. Vesuvius stirs, making the city tremble.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Pompeii"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A monsoon breaks over Raganatittu.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Raganatittu"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^DONG\! DONG\! The ringing of the Joseph Bell announces a new day.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Mossflower Wood"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The Creator bathes the Fortress in his light, bringing forth a new day.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow City of Amador"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The darkness around you conceals a new outpouring of the minions of hell.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Into the Long Night"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Sights, Sounds and Smells all hit you, as the port gets busier.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Port"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The titter of little voices heralds the start of a new Faerie Tale.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Faerie Tales"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Sickening waves of color ripple across the sky as the onslaught renews.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Onslaught of Chaos"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Diana and her guard re\-appear to uphold law and order in Ofcol.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Old Thalos"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Bronze ranks clash, rising from their earthen graves anew. Hail Reme\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Imperial City of Reme"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^An amazon warcry resounds throughout the nation, signaling a new dawn.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Amazon Nation"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Strange winds blow and the fallen leaves swirl until they come to a new place.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Verdure Estates"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The moans of the returning undead echo hauntedly in your ears.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Doom and Gloom"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The Lizardmen Scatter About the Jungle Waiting for Ushak's Return.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Jungles of Verume"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^There is a deep rumble as the Isle of Quake stirs.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Isle of Quake"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The darkness seems to close in as the subterranean army prepares to invade.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Fort Terramire"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The eyes of many minotaurs staring angrily at you make you feel uncomfortable.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Keep of Mahn-Tor"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A group of tourists have arrived to see the beauty of the city.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow New Thalos"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The faint mumbling of magic words has increased in volume...$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow High Tower of Sorcery"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You can hear a bard playing on the harp nearby.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Ultima"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^In the distance you see the sudden appearance of a large wyvern, grinning evilly at you.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Wyvern Tower"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You hear the sound of monks chanting.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Monastery"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A sudden blast of flame appears in the sky. Giants whisper a word\: 'Vopil\!'$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow A Peaceful Giant Village"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You hear bells ringing as Santa's sleigh draws in.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Christmas Vacation"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The air around you resonates at the sounds of wild cackling.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Nanjiki Ruins"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A sea gale rises and drives you once more into the storm.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Foolish Promises"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^As the blood flows from their wounds, the minions of Zyian regain their strength...$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Dark Temple of Zian"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A strong breeze breathes new life into the tree.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Tree of Life;tolalarm "</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The weeds grow in the orchard once again.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Orchard"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Whoa\! Was that a pig that just flew by\?$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Magical Hodgepodge"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Your mind is filled with fantastic thoughts and visions.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Fantasy Fields"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The energy level rises as excited cheers fill the air.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Olde Worlde Carinvale"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The sunlight reflects into your eyes off a mirror.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Mirror Realm"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A crystal chime sounds, summoning back the dead.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Death's Manor"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^As the Dunes shift, time goes on and all things change.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Dune"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The high\-pitched giggle of a young child echoes on the fresh breeze.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Child's Play"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^All evil is purged as a holy light flashes across the grove.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Holy Grove"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The good people rise to work another day, fearful of the coming evil.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Dortmund"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You hear a cold echoing scream in the distance.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Chapel Catacombs"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A temporal shockwave emanates from within the mines, leaving evil in its wake.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Ruins of Diamond Reach"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The Prince of Krondor has proclaimed a new day in the Kingdom of the Isles.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Island of Stardock"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Alden, Creator of all, repopulates the world.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Northstar"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The howling of direwolves chills you to the bone.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Winterfell"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The war drums sound as the sun rises.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Desert Doom"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The trumpets sound, and everyone runs off to see the knights' tournament.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Illoria"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A new day dawns in Midgaard, all appears fresh and clean.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Midgaard"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The Sound of Clicking Mandibles and Crunching Carapace tells you the Infestation is Renewed...$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Infestation"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A big stone falls out of the sky and hits you on the head\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Fabled City of Stone"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A large rat scurries beneath your feet.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Rats Lair"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A bellowing dinosaur heralds the start of a new day.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Island of Lost Time"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A school of fish swims by, searching for food among the coral.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Coral Kingdom"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Roll up\! Roll up\! The show is about to begin.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Circus"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The teachers of the way of the White Lotus assemble to praise Buddha.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow The Temple of White Lotus"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Mashadar descends upon Shadar Logoth, bringing forth the dead once again.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Shadar Logoth"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You catch the faint smell of spiced potatoes on the breeze.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Town of Solace"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Elves from outside the valley are summoned to defend their elders.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Valley of the Elves"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^The sand is moving beneath your feet.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Sands of Sorrow"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You sense that life will return to this area in roughly (\d+) minutes.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.send "gt Sense Life Automessage: Repop in %1 minutes."</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^A shiny scarab beetle scuttles swiftly away from approaching footsteps.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Eighteenth Dynasty"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^You sense that life will return to this area in roughly (\d) minute.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Sense Life Automessage: Repop in %1 minute."</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Serenity returns to the Lagoon and life starts anew.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Black Lagoon"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^\*rrrrRRRRROOOOOOOAAAAAAAARRRRRRRrrrr\*$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Dragon Tower"</send>
  </trigger>
  <trigger
   enabled="y"
   group="RepopMsgs"
   match="^Creatures from the future have arrived through a time machine, and scatter themselves around the city.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.execute "repshow Mega City One"</send>
  </trigger>
</triggers>

<!--  Aliases  -->

<aliases>
  <alias
   match="repchan *"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>world.setvariable "repopchan", "%1"</send>
  </alias>
  <alias
   match="tolalarm*"
   enabled="y"
   expand_variables="y"
   send_to="12"
   sequence="100"
  >
  <send>if trim("%1") = "" then
 world.DoAfter 810, "@repopchan @@WAutomessage: ToL Repop from within 30 secs ago to 90 secs from now."
else
  world.DoAfter trim(%1), "@repopchan @@WAutomessage: ToL Repop from within 30 secs ago to 90 secs from now."
End if</send>
  </alias>
  <alias
   match="rephelp"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>world.ansinote ansi(36) &amp; ansi(1) &amp; ansi(40) &amp; "-=+ " &amp; ansi(36) &amp; ansi(1) &amp; "Original" &amp; ansi(37) &amp; " Repop Report Script v2.0, written by Atreidess " &amp; ansi(36) &amp; ansi(1) &amp; ansi(40) &amp; "+=-" &amp; ansi(37) &amp; ansi(22)
world.ansinote ansi(0) &amp; "-=" &amp; ansi(36) &amp; "[ " &amp; ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; "Remake for " &amp; ansi(33) &amp; ansi(1) &amp; ansi(40) &amp; "MUSHClient" &amp; ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; " done by " &amp; ansi(31) &amp; ansi(1) &amp; ansi(40) &amp; "T" &amp; ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; "ealos." &amp; ansi(36) &amp; " ]" &amp; ansi(0) &amp; "=-"
world.ansinote ansi(31) &amp; ansi(1) &amp; ansi(40) &amp; "I removed aliases I deemed unnecessary, or didn't feel like adding.  This is MY version of Atreidess script."
world.ansinote ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; vbnewline
world.ansinote ansi(32) &amp; ansi(1) &amp; ansi(40) &amp; "Usage:"
world.ansinote ansi(33) &amp; ansi(1) &amp; ansi(40) &amp; "repon, repoff"
world.ansinote ansi(36) &amp; ansi(1) &amp; ansi(40) &amp; "Turns the plugin on and off."
world.ansinote ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; vbnewline
world.ansinote ansi(33) &amp; ansi(1) &amp; ansi(40) &amp; "Repchan &lt;argument&gt;"
world.ansinote ansi(36) &amp; ansi(1) &amp; ansi(40) &amp; "Sets the channel the report is placed on. (Default: gt)"
world.ansinote ansi(31) &amp; ansi(1) &amp; ansi(40) &amp; "If you want an audible beep, you can set the channel to page &lt;name&gt;, but this creates a global lag which isn't pleasant during battles."
world.ansinote ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; vbnewline
world.ansinote ansi(33) &amp; ansi(1) &amp; ansi(40) &amp; "tolalarm &lt;#&gt;"
world.ansinote ansi(36) &amp; ansi(1) &amp; ansi(40) &amp; "Sets a timer to estimate when Tree of Life will repop. Default is 820 seconds,"
world.ansinote ansi(36) &amp; ansi(1) &amp; ansi(40) &amp; "the optional # paramater sets it to that many seconds."
world.ansinote ansi(32) &amp; ansi(1) &amp; ansi(40) &amp; "The tolalarm command is automatically started, at 820 seconds, every time you're in the"
world.ansinote ansi(32) &amp; ansi(1) &amp; ansi(40) &amp; "area for a tol repop. During GQs, this will become inaccurate, the rest of the time it's"
world.ansinote ansi(32) &amp; ansi(1) &amp; ansi(40) &amp; "quite useful."</send>
  </alias>
  <alias
   match="repoff"
   enabled="y"
   expand_variables="y"
   send_to="12"
   sequence="100"
  >
  <send>world.EnableTriggerGroup "RepopMsgs", False
world.sendnoecho "@repopchan @@CRepop Messages Off@@w"</send>
  </alias>
  <alias
   match="repon"
   enabled="y"
   expand_variables="y"
   send_to="12"
   sequence="100"
  >
  <send>world.EnableTriggerGroup "RepopMsgs", True
world.sendnoecho "@repopchan @@CRepop Messages On@@w"</send>
  </alias>
  <alias
   match="repshow *"
   enabled="y"
   echo_alias="y"
   expand_variables="y"
   send_to="12"
   sequence="100"
  >
  <send>world.sendnoecho "@repopchan %1 repopped at: " &amp; Time &amp; "."</send>
  </alias>
</aliases>

<!--  Variables  -->

<variables>
  <variable name="repopchan">gt</variable>
</variables>

<!--  Script  -->


<script>
<![CDATA[
sub OnPluginInstall()
world.note "Type rephelp for help."
end sub
]]>
</script>

</muclient>
Amended on Fri 14 Jul 2006 02:20 AM by NeoFryBoy
USA #11
This is a very extensive level tracker. It tracks, levels, exp, and gold gained per hour and reports them every hour. It also sends a message to the user per level/pup noting time since last level/pup, gains made this level, the level, gold, kills, exp, exp / kill, and bonus stats.

It has a set of variables to track on a level basis, and hourly basis, a mort basis, and an alltime basis.

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient>
<!-- Saved on Saturday, July 01, 2006, 1:37 AM -->
<!-- MuClient version 3.73 -->

<!-- Plugin "LevelTracker" generated by Plugin Wizard -->

<!--
This script also creates and maintains a variable, ""@alevel"", is your ""actual level"" in terms of equipment/weapon/spell/skill useage.  No idea yet how to make this variable useful.
-->

<muclient>
<plugin
   name="LevelTracker"
   author="NeoFryBoy(Tealos)"
   id="d133b9cf9f4fa22a35791a54"
   language="VBscript"
   purpose="To track levels/trains/stats gained across morts, and through pups as well."
   save_state="y"
   date_written="2006-07-01 01:35:05"
   requires="3.73"
   version="1.0"
   >

</plugin>


<!--  Get our standard constants -->

<include name="constants.vbs"/>

<!--  Triggers  -->

<triggers>
  <trigger
   enabled="y"
   match="^You gain a bonus (\w+) point!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.setvariable "bstats", (world.getvariable("bstats") &amp; Chr(Asc("%1")) &amp; "@w, @W")
world.setvariable "MortR" &amp; Chr(Asc("%1")), (clng(world.getvariable("MortR" &amp; Chr(Asc("%1")))) + 1)
world.setvariable "AllTimeR" &amp; Chr(Asc("%1")), (clng(world.getvariable("AllTimeR" &amp; Chr(Asc("%1")))) + 1)</send>
  </trigger>
  <trigger
   group="FingerInfo"
   match="^\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- Player \: (.*?) \(Online\) \-\-\-\-\-\-\-\-\-\-\-\-\-\-$"
   regexp="y"
   send_to="9"
   sequence="100"
   variable="player_name"
  >
  <send>%1</send>
  </trigger>
  <trigger
   expand_variables="y"
   group="FingerInfo"
   match="^\w+ online since \: .*"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.ansinote ansi(31) &amp; ansi(1) &amp; "Done.  Thank you, @player_name."
world.ansinote ansi(32) &amp; ansi(1) &amp; "Current level is: " &amp; ansi(36) &amp; ansi(1) &amp; "@clevel"
world.ansinote ansi(32) &amp; ansi(1) &amp; "Total classes: " &amp; ansi(36) &amp; ansi(1) &amp; "@classes"
world.ansinote ansi(32) &amp; ansi(1) &amp; "Total tiers: " &amp; ansi(36) &amp; ansi(1) &amp; "@tiers"
if "@clevel" = "201" then
 world.ansinote ansi(32) &amp; ansi(1) &amp; "Total levels gained: " &amp; ansi(36) &amp; ansi(1) &amp; ((@clevel - 2) + (@tiers * 1393) + ((@classes - 1) * 199))  &amp; ansi(33) &amp; ansi(1) &amp; " (" &amp; ansi(32) &amp; (13930 - ((@clevel - 2) + (@tiers * 1393) + ((@classes - 1) * 199))) &amp; " to go!" &amp; ansi(33) &amp; ansi(1) &amp; ")"
else
 world.ansinote ansi(32) &amp; ansi(1) &amp; "Total levels gained: " &amp; ansi(36) &amp; ansi(1) &amp; ((@clevel - 1) + (@tiers * 1393) + ((@classes - 1) * 199))  &amp; ansi(33) &amp; ansi(1) &amp; " (" &amp; ansi(32) &amp; (13930 - ((@clevel - 1) + (@tiers * 1393) + ((@classes - 1) * 199))) &amp; " to go!" &amp; ansi(33) &amp; ansi(1) &amp; ")"
end if

If world.getvariable("InstallTime") = "" then
 world.setvariable "InstallTime", Now
 world.setvariable "LevelTime", Now
 world.setvariable "ResetTime", Now
world.setvariable "MortRGold", "0"
world.setvariable "MortRExp", "0"
world.setvariable "MortRKills", "0"
world.setvariable "MortRLevels", "0"
world.setvariable "MortRTrains", "0"
world.setvariable "MortRBTrains", "0"
world.setvariable "MortRBTrainsPup", "0"
world.setvariable "MortRTrainsPup", "0"
world.setvariable "MortRPups", "0"
world.setvariable "MortRD", "0"
world.setvariable "MortRS", "0"
world.setvariable "MortRW", "0"
world.setvariable "MortRL", "0"
world.setvariable "MortRI", "0"
world.setvariable "MortRC", "0"
world.setvariable "HourRGold", "0"
world.setvariable "HourRExp", "0"
world.setvariable "HourRKills", "0"
world.setvariable "HourRLevels", "0"
world.setvariable "HourRPups", "0"
world.setvariable "LevelRBonusExp", "0"
world.setvariable "LevelRExp", "0"
world.setvariable "LevelRKills", "0"
world.setvariable "AllTimeRLevels", "0"
world.setvariable "AllTimeRTrains", "0"
world.setvariable "AllTimeRBTrains", "0"
world.setvariable "AllTimeRBTrainsPup", "0"
world.setvariable "AllTimeRTrainsPup", "0"
world.setvariable "AllTimeRPups", "0"
world.setvariable "AllTimeRD", "0"
world.setvariable "AllTimeRS", "0"
world.setvariable "AllTimeRW", "0"
world.setvariable "AllTimeRL", "0"
world.setvariable "AllTimeRI", "0"
world.setvariable "AllTimeRC", "0"
world.setvariable "pupbonustrains", "0"
world.setvariable "bonustrains", "0"
End if

if cint(world.getvariable("clevel")) >= 200 then
 world.setvariable "pupping", "1"
else
 world.setvariable "pupping", "0"
end if

'This is the hourly report timer
world.addtimer "LevelInfo_HourlyReport", 1, 0, 0, "", 1, "ExecExpHour"
world.EnableTriggerGroup "FingerInfo", False</send>
world.savestate
  </trigger>
  <trigger
   enabled="y"
   expand_variables="y"
   match="^INFO\: (\w+) has been reborn as .*\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>If "@player_name" = "%1" then
 world.setvariable "pupping", "0"
 world.setvariable "clevel", "1"
 world.setvariable "Classes", (@classes + 1)
 world.setvariable "alevel", (1 + (@tiers * 10))
 world.execute "lvlavgb"
 world.execute "lvlavgr"
end if</send>
  </trigger>
  <trigger
   enabled="y"
   expand_variables="y"
   match="^Lucky\! You gain an extra (\d+) training session(|s)\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>if world.getvariable("pupping") = "1" then
 world.setvariable "pupbonustrains", "%1"
 world.setvariable "MortRBTrainsPup", (@MortRBTrainsPup + %1)
 world.setvariable "AllTimeRBTrainsPup", (@AllTimeRBTrainsPup + %1)
else
 world.setvariable "bonustrains", "%1"
 world.setvariable "MortRBTrains", (@MortRBTrains + %1)
 world.setvariable "AllTimeRBTrains", (@AllTimeRBTrains + %1)
end if</send>
  </trigger>
  <trigger
   enabled="y"
   expand_variables="y"
   match="^The immortals cringe as they realize (\w+) will be here for another 1407 levels\!$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>If "@player_name" = "%1" then
 world.setvariable "pupping", "0"
 world.setvariable "clevel", "1"
 world.setvariable "Classes", "1"
 world.setvariable "tiers", (@tiers + 1)
 world.setvariable "alevel", (1 + ((@tiers + 1) * 10))
 world.execute "lvlavgb"
 world.execute "lvlavgr"
end if</send>
  </trigger>
  <trigger
   enabled="y"
   expand_variables="y"
   match="^There is a brilliant burst of lightning throughout the skies as (\w+) is stripped of power and starts a new life.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>If "@player_name" = "%1" then
 world.setvariable "pupping", "0"
 world.setvariable "clevel", "1"
 world.setvariable "Classes", "1"
 world.setvariable "tiers", (@tiers + 1)
 world.setvariable "alevel", (1 + ((@tiers + 1) * 10))
 world.execute "lvlavgb"
 world.execute "lvlavgr"
end if</send>
  </trigger>
  <trigger
   enabled="y"
   expand_variables="y"
   match="^You receive (.*) experience points.$"
   regexp="y"
   keep_evaluating="y"
   send_to="12"
   sequence="100"
  >
  <send>if eval("%1") > "0" then
world.setvariable "HourRexp", (@HourRexp + eval("%1"))
world.setvariable "MortRexp", (@MortRexp + eval("%1"))
world.setvariable "LevelRexp", (@LevelRexp + eval("%1"))
world.setvariable "LevelRKills", (@LevelRKills + 1)
world.setvariable "HourRKills", (@HourRkills + 1)
world.setvariable "MortRKills", (@MortRkills + 1)
world.savestate
end if</send>
  </trigger>
  <trigger
   enabled="y"
   expand_variables="y"
   match="^You receive (\d+) bonus experience"
   regexp="y"
   keep_evaluating="y"
   send_to="12"
   sequence="100"
  >
  <send>world.setvariable "HourRExp", (@HourRExp + %1)
world.setvariable "MortRExp", (@MortRExp + %1)
world.setvariable "LevelRBonusExp", (@LevelRBonusExp + %1)
</send>
  </trigger>
  <trigger
   enabled="y"
   expand_variables="y"
   match="^You receive (\d+) gold"
   regexp="y"
   keep_evaluating="y"
   send_to="12"
   sequence="100"
  >
  <send>world.setvariable "HourRGold", (@HourRGold + %1)
world.setvariable "MortRGold", (@MortRGold + %1)</send>
  </trigger>
  <trigger
   enabled="y"
   expand_variables="y"
   match="^You get (\d+) gold coins"
   regexp="y"
   keep_evaluating="y"
   send_to="12"
   sequence="100"
  >
  <send>world.setvariable "HourRGold", (@HourRGold + %1)
world.setvariable "MortRGold", (@MortRGold + %1)</send>
  </trigger>
  <trigger
   enabled="y"
   expand_variables="y"
   match="^\w+ gives you (\d+) gold coins"
   regexp="y"
   keep_evaluating="y"
   send_to="12"
   sequence="100"
  >
  <send>world.setvariable "HourRGold", (@HourRGold + %1)
world.setvariable "MortRGold", (@MortRGold + %1)</send>
  </trigger>
  <trigger
   enabled="y"
   expand_variables="y"
   match="^You are taxed (\d+) by your clan\!$"
   regexp="y"
   keep_evaluating="y"
   send_to="12"
   sequence="100"
  >
  <send>world.setvariable "HourRGold", (@HourRGold - %1)
world.setvariable "MortRGold", (@MortRGold - %1)</send>
  </trigger>
  <trigger
   enabled="y"
   expand_variables="y"
   match="^(.*?) split(|s) (\d+) gold coins. Your share is (\d+) gold.$"
   regexp="y"
   keep_evaluating="y"
   send_to="12"
   sequence="100"
  >
  <send>if "%1" = "You" then
 world.setvariable "HourRGold", ((@HourRGold - %3) + %4)
 world.setvariable "MortRGold", ((@MortRGold - %3) + %4)
else
 world.setvariable "HourRGold", (@HourRGold + %4)
 world.setvariable "MortRGold", (@MortRGold + %4)
end if</send>
  </trigger>
  <trigger
   enabled="y"
   expand_variables="y"
   match="^You receive 8,000 gold from the full moon.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.setvariable "HourRGold", (@HourRGold + 8000)
world.setvariable "MortRGold", (@MortRGold + 8000)</send>
  </trigger>
  <trigger
   group="FingerInfo"
   match="^Level (\d+) (none|male|female) .* \(Tier (\d)\)\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.setvariable "clevel", "%1"
world.setvariable "tiers", "%3"
world.setvariable "alevel", (%1 + (%3 * 10))</send>
  </trigger>
  <trigger
   group="FingerInfo"
   match="Remort\:( .* \/){1,7}"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>dim Classes1

Classes1 = Split("%1", " /")
world.setvariable "Classes", (UBound(Classes1) + 1)

'If this script never goes off, then they are a SC, 
'and the variable is already set to reflect that.
</send>
  </trigger>
  <trigger
   enabled="y"
   expand_variables="y"
   match="^You gain (\d+) hit points\, (\d+) mana\, (\d+) moves\, (\d+) practices and (\d+) trains\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.setvariable "clevel", (@clevel + 1)
world.setvariable "alevel", (@alevel + 1)
world.setvariable "HourRLevels", (@HourRLevels + 1)
world.setvariable "MortRLevels", (@MortRLevels + 1)
world.setvariable "AllTimeRLevels", (@AllTimeRLevels + 1)
world.setvariable "bonustrains", "0"
world.setvariable "bstats", ""
world.setvariable "MortRTrains", (@MortRTrains + %5)
world.setvariable "AllTimeRTrains", (@AllTimeRTrains + %5)
'TimerNames don't like numbers.  Phooey.
var1 = "%1"
var2 = "%2"
var3 = "%3"
var4 = "%4"
var5 = "%5"
world.AddTimer "LeveledTimer", 0, 0, 1.5, "", 5, "RegLevelReport"</send>
  </trigger>
  <trigger
   enabled="y"
   expand_variables="y"
   match="^You gain (\d+) trains\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.setvariable "pupbonustrains", "0"
world.setvariable "bstats", ""
world.setvariable "MortRTrainsPup", (@MortRTrainsPup + %1)
world.setvariable "AllTimeRTrainsPup", (@AllTimeRTrainsPup + %1)
world.setvariable "MortRPups", (@MortRPups + 1)
world.setvariable "AllTimeRPups", (@AllTimeRPups + 1)
world.setvariable "HourRPups", (@HourRPups + 1)


var1 = "%1"
world.AddTimer "PuppedTimer", 0, 0, 1.5, "", 5, "RegLevelReport"</send>
  </trigger>
</triggers>

<!--  Aliases  -->

<aliases>
  <alias
   match="lvlt"
   enabled="y"
   expand_variables="y"
   send_to="12"
   sequence="100"
  >
  <send>if "@LevelRKills" = "0" then
 world.sendnoecho "@lvlchannel @@RS@@rince @@rL@@Rast @@RL@@revel@@w: @@c" &amp; LevelTimer(world.getvariable("LevelTime"),Now) &amp; "@@w|@@w 0 @@ckills @@w|@@w 0 @@cexp@@w/@@ckill@@w."
else
 world.sendnoecho "@lvlchannel @@RS@@rince @@rL@@Rast @@RL@@revel@@w: @@c" &amp; LevelTimer(world.getvariable("LevelTime"),Now) &amp; "@@w|@@w @LevelRKills @@ckills @@w|@@w " &amp; FormatNumber(((cint(world.getvariable("LevelRExp")) + 0 + cint(world.getvariable("LevelRBonusExp"))) / cint(world.getvariable("LevelRKills"))), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@cexp@@w/@@ckill@@w."
end if</send>
  </alias>
  <alias
   match="exphl"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>If world.getvariable("LastHourR") = "" then
world.ansinote ansi(31) &amp; ansi(1) &amp; "Nothing to report."
else
world.sendnoecho world.getvariable("lvlchannel") &amp; " " &amp; world.getvariable("LastHourR")
end if</send>
  </alias>
  <alias
   match="exph"
   enabled="y"
   expand_variables="y"
   send_to="12"
   sequence="100"
  >
  <send>if "@HourRKills" = "0" then
world.ansinote ansi(31) &amp; ansi(1) &amp; "Nothing to report."
else
world.sendnoecho "@lvlchannel @@RS@@ro @@rF@@Rar @@RT@@rhis @@RH@@rour@@w: @@W@HourRExp @@cexp@@w, @@W@HourRKills @@ckills@@w, @@W@HourRLevels @@clevel(s),  @@W@HourRPups @@cpups@@w@@w, @@W" &amp; FormatNumber((@HourRExp / @HourRKills), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@cexp/kill@@w. @@Y@HourRGold @@cgold@@w, @@Y" &amp; FormatNumber((@HourRGold / @HourRKills), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@cgold/kill@@w."
End if</send>
  </alias>
  <alias
   match="exphour"
   enabled="y"
   expand_variables="y"
   send_to="12"
   sequence="100"
  >
  <send>if "@HourRKills" = "0" then
world.setvariable "LastHourR", "@@RL@@rast @@rR@@Reported @@rH@@Rour@@w: @@W@HourRExp @@cexp@@w, @@W@HourRKills @@ckills@@w, @@W@HourRLevels @@clevel(s),  @@W@HourRPups @@cpups@@w@@w, @@W0 @@cexp/kill@@w. @@Y@HourRGold @@cgold@@w, @@Y0 @@cgold/kill@@w."
world.sendnoecho "@lvlchannel @@RT@@rhe @@rP@@Rrevious @@rH@@Rour@@w: @@W@HourRExp @@cexp@@w, @@W@HourRKills @@ckills@@w, @@W@HourRLevels @@clevel(s),  @@W@HourRPups @@cpups@@w@@w, @@W0 @@cexp/kill@@w. @@Y@HourRGold @@cgold@@w, @@Y0 @@cgold/kill@@w."
else
world.setvariable "LastHourR", "@@RL@@rast @@rR@@Reported @@rH@@Rour@@w: @@W@HourRExp @@cexp@@w, @@W@HourRKills @@ckills@@w, @@W@HourRLevels @@clevel(s),  @@W@HourRPups @@cpups@@w@@w, @@W" &amp; FormatNumber((@HourRExp / @HourRKills), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@cexp/kill@@w. @@Y@HourRGold @@cgold@@w, @@Y" &amp; FormatNumber((@HourRGold / @HourRKills), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@cgold/kill@@w."
world.sendnoecho "@lvlchannel @@RT@@rhe @@rP@@Rrevious @@rH@@Rour@@w: @@W@HourRExp @@cexp@@w, @@W@HourRKills @@ckills@@w, @@W@HourRLevels @@clevel(s),  @@W@HourRPups @@cpups@@w@@w, @@W" &amp; FormatNumber((@HourRExp / @HourRKills), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@cexp/kill@@w. @@Y@HourRGold @@cgold@@w, @@Y" &amp; FormatNumber((@HourRGold / @HourRKills), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@cgold/kill@@w."
end if
world.setvariable "HourRGold", "0"
world.setvariable "HourRExp", "0"
world.setvariable "HourRKills", "0"
world.setvariable "HourRLevels", "0"
world.setvariable "HourRPups", "0"</send>
  </alias>
  <alias
   match="lvlsetup"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>dim dummyvar
Dummyvar  = Inputbox("Enter the channel on which the report shows.", "Tealos' LevelScript", world.getvariable("lvlchannel"))

if dummyvar = "" then
else
world.setvariable "lvlchannel", dummyvar

if msgbox("Would you like reports to show all gains (Yes), or just pracs + trains + stats (No)", vbYesNo) = vbYes then
 world.setvariable "shortreport", "0"
else
 world.setvariable "shortreport", "1"
end if

world.EnableTriggerGroup "FingerInfo", True
world.setvariable "Classes", "1"
world.send "finger"
end if</send>
  </alias>
  <alias
   match="llvl"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>If world.getvariable("lastlevel") = "" then
world.ansinote ansi(31) &amp; ansi(1) &amp; "Nothing to report."
else
world.sendnoecho world.getvariable("lvlchannel") &amp; world.getvariable("lastlevel")
end if</send>
  </alias>
  <alias
   match="whogr*"
   enabled="y"
   expand_variables="y"
   send_to="12"
   sequence="100"
  >
  <send>
world.send "swho 12%1 " &amp; (@clevel - 9) &amp; " " &amp; (@clevel + 9)</send>
  </alias>
  <alias
   match="lvlhelp"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>world.ansinote ansi(37) &amp; ansi(1) &amp; "/~/~" &amp; ansi(36) &amp; ansi(1) &amp; " Original " &amp; ansi(37) &amp; ansi(1) &amp; "Level Info script v3.2 written by Atreidess ~\~\"
world.ansinote ansi(37) &amp; ansi(1) &amp; "~/~/ Parts of Atreidess' script were adapted from Ninja's ~\~\"
world.ansinote ansi(0) &amp; "-=" &amp; ansi(36) &amp; "[ " &amp; ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; "Remake for " &amp; ansi(33) &amp; ansi(1) &amp; ansi(40) &amp; "MUSHClient" &amp; ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; " done by " &amp; ansi(31) &amp; ansi(1) &amp; ansi(40) &amp; "T" &amp; ansi(31) &amp; ansi(22) &amp; ansi(40) &amp; "ealos." &amp; ansi(36) &amp; " ]" &amp; ansi(0) &amp; "=-"
world.ansinote ansi(31) &amp; ansi(1) &amp; ansi(40) &amp; "I removed aliases I deemed unnecessary, or didn't feel like adding.  This is MY version of Atreidess script."
world.ansinote ansi(22) &amp; vbnewline
world.ansinote ansi(36) &amp; ansi(1) &amp; "Configuration commands:"
world.ansinote ansi(32) &amp; ansi(1) &amp; "-=: lvlsetup :=- " &amp; ansi(33) &amp; ansi(1) &amp; " Configure options for the script, and automatically gets level, remorts, and tiers."
world.ansinote ansi(31) &amp; ansi(1) &amp; "* with no parameters, these will show your current settings and 'total level'"
world.ansinote ansi(22) &amp; vbnewline
world.ansinote ansi(36) &amp; ansi(1) &amp; "Report commands:"
world.ansinote ansi(32) &amp; ansi(1) &amp; "-=: exph :=-"    &amp; ansi(33) &amp; ansi(1) &amp; " Displays last hour info."
world.ansinote ansi(32) &amp; ansi(1) &amp; "-=: exphl :=-"   &amp; ansi(33) &amp; ansi(1) &amp; " Displays last reported hour info."
world.ansinote ansi(32) &amp; ansi(1) &amp; "-=: exphour :=-" &amp; ansi(33) &amp; ansi(1) &amp; " Resets current hour's timer and reports as if timer had gone off."
world.ansinote ansi(32) &amp; ansi(1) &amp; "-=: llvl :=-"    &amp; ansi(33) &amp; ansi(1) &amp; " Displays last level info."
world.ansinote ansi(32) &amp; ansi(1) &amp; "-=: lvlt :=-"    &amp; ansi(33) &amp; ansi(1) &amp; " Reports time since last level."
world.ansinote ansi(32) &amp; ansi(1) &amp; "-=: lvlavg :=-"    &amp; ansi(33) &amp; ansi(1) &amp; " Displays gains averages this mort."
world.ansinote ansi(32) &amp; ansi(1) &amp; "-=: lvlavga :=-"   &amp; ansi(33) &amp; ansi(1) &amp; " Displays alltime gains averages."
world.ansinote ansi(32) &amp; ansi(1) &amp; "-=: lvlavgb :=-" &amp; ansi(33) &amp; ansi(1) &amp; " Lucky bonus stats info."
world.ansinote ansi(32) &amp; ansi(1) &amp; "-=: pupavg :=-"     &amp; ansi(33) &amp; ansi(1) &amp; " Pup averages this mort."
world.ansinote ansi(32) &amp; ansi(1) &amp; "-=: pupavga :=-"  &amp; ansi(33) &amp; ansi(1) &amp; " Pup averages alltime."
world.ansinote ansi(31) &amp; ansi(1) &amp; "* report commands are reported to the channel chosen during setup, or to screen."
world.ansinote ansi(22) &amp; vbnewline
world.ansinote ansi(36) &amp; ansi(1) &amp; "Miscellaneous commands:"
world.ansinote ansi(32) &amp; ansi(1) &amp; "-=: lvlavgr :=-"   &amp; ansi(33) &amp; " Resets the script. (Doesn't reset alltime reports, and "   &amp; ansi(31) &amp; ansi(1) &amp; "DOES NOT"   &amp; ansi(33) &amp; " display a warning."
world.ansinote ansi(32) &amp; ansi(1) &amp; "-=: whogr [argument] :=-" &amp; ansi(33) &amp; ansi(1) &amp; " Do a who for people +/- 9 levels from your current level."
world.ansinote ansi(31) &amp; ansi(1) &amp; "The argument is optional, so you can use 'whogr', 'whogr evil friend', 'whogr chaos', etc."
world.ansinote ansi(0) &amp; vbnewline
world.ansinote ansi(31) &amp; ansi(1) &amp; "This script uses the same variable as my Potion Tracker script to hold the player's name, and a different variable from Huan's script to track player level."
world.ansinote ansi(31) &amp; ansi(1) &amp; "Note" &amp; ansi(37) &amp; ansi(1) &amp; ": The script counts levels *gained* as 199 per mort or 1393 per tier, because levels 1 and 201 are basically freebies, so you only actually raise your character 199 levels of experience per mort. If you don't like this reasoning, then simply add 14 levels per tier, two levels per complete mort, and one level per unfinished mort."</send>
  </alias>
  <alias
   match="lvlavgr"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send> world.setvariable "MortRGold", "0"
 world.setvariable "MortRExp", "0"
 world.setvariable "MortRKills", "0"
 world.setvariable "MortRLevels", "0"
 world.setvariable "MortRTrains", "0"
 world.setvariable "MortRBTrains", "0"
 world.setvariable "MortRBTrainsPup", "0"
 world.setvariable "MortRTrainsPup", "0"
 world.setvariable "MortRPups", "0"
 world.setvariable "MortRD", "0"
 world.setvariable "MortRS", "0"
 world.setvariable "MortRW", "0"
 world.setvariable "MortRL", "0"
 world.setvariable "MortRI", "0"
 world.setvariable "MortRC", "0"
 world.setvariable "LevelRBonusExp", "0"
 world.setvariable "LevelRExp", "0"
 world.setvariable "LevelRKills", "0"
 world.setvariable "LevelTime", Now
 world.setvariable "ResetTime", Now
 world.ansinote ansi(36) &amp; ansi(1) &amp; "-=+ " &amp; ansi(31) &amp; ansi(1) &amp; "LevelInfo Script Reset " &amp; ansi(36) &amp; ansi(1) &amp; "+=-"</send>
  </alias>
  <alias
   match="lvlavgb"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>world.ansinote ansi(0) &amp; "-=: " &amp; ansi(35) &amp; ansi(1) &amp; world.getvariable("MortRLevels") &amp; " levels since " &amp; world.getvariable("ResetTime") &amp; " (this mort)" &amp; ansi(0) &amp; " :=-"
world.ansinote ansi(36) &amp; ansi(1) &amp;  "Bonus stats: " &amp; ansi(37) &amp; ansi(1) &amp; (cint(world.getvariable("MortRS")) + cint(world.getvariable("MortRD")) + cint(world.getvariable("MortRI")) + cint(world.getvariable("MortRL")) + cint(world.getvariable("MortRC")) + cint(world.getvariable("MortRW")))
world.ansinote ansi(35) &amp; ansi(1) &amp;  "----------------"
world.ansinote ansi(32) &amp; ansi(1) &amp;  "Strength: " &amp; ansi(33) &amp; ansi(1) &amp; world.getvariable("MortRS")
world.ansinote ansi(32) &amp; ansi(1) &amp;  "Intelligence: " &amp; ansi(33) &amp; ansi(1) &amp; world.getvariable("MortRI")
world.ansinote ansi(32) &amp; ansi(1) &amp;  "Wisdom: " &amp; ansi(33) &amp; ansi(1) &amp; world.getvariable("MortRW")
world.ansinote ansi(32) &amp; ansi(1) &amp;  "Dexterity: " &amp; ansi(33) &amp; ansi(1) &amp; world.getvariable("MortRD")
world.ansinote ansi(32) &amp; ansi(1) &amp;  "Constitution: " &amp; ansi(33) &amp; ansi(1) &amp; world.getvariable("MortRC")
world.ansinote ansi(32) &amp; ansi(1) &amp;  "Luck: " &amp; ansi(33) &amp; ansi(1) &amp; world.getvariable("MortRL")</send>
  </alias>
  <alias
   match="lvlavg"
   enabled="y"
   expand_variables="y"
   send_to="12"
   sequence="100"
  >
  <send>if "@MortRLevels" = "0" then
world.ansinote ansi(31) &amp; ansi(1) &amp; "Nothing to report."
else
world.sendnoecho "@lvlchannel @@CSince @@w@ResetTime@@Y (this mort): @@w@MortRLevels @@clevels@@w,@@W @MortRTrains @@ctrains@@w,@@W @MortRBTrains @@cbonus trains@@w.@@W " &amp; (@MortRS + @MortRI + @MortRW + @MortRD + @MortRC + @MortRL) &amp; "@@cbonus stats@@w,@@W " &amp; FormatNumber((@MortRTrains / @MortRLevels), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@ctrains per level@@w,@@W " &amp; FormatNumber((@MortRBTrains / @MortRLevels), 3, vbFalse, vbUseDefault, vbFalse) &amp; "@@c bonus trains per level@@w,@@W " &amp; FormatNumber(((@MortRS + @MortRI + @MortRW + @MortRD + @MortRC + @MortRL) / @MortRLevels), 3, vbFalse, vbUseDefault, vbFalse) &amp; "@@c bonus stats per level@@w,@@W " &amp; FormatNumber(((@MortRTrains + @MortRBTrains) / @MortRLevels), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@ctotal trains per level."
End if
</send>
  </alias>
  <alias
   match="lvlavga"
   enabled="y"
   expand_variables="y"
   send_to="12"
   sequence="100"
  >
  <send>if "@AllTimeRLevels" = "0" then
world.ansinote ansi(31) &amp; ansi(1) &amp; "Nothing to report."
else
world.sendnoecho "@lvlchannel @@CSince @@w@InstallTime@@Y (installed): @@w@AllTimeRLevels @@clevels@@w,@@W @AllTimeRTrains @@ctrains@@w,@@W @AllTimeRBTrains @@cbonus trains@@w.@@W " &amp; (@AllTimeRS + @AllTimeRI + @AllTimeRW + @AllTimeRD + @AllTimeRC + @AllTimeRL) &amp; "@@cbonus stats@@w,@@W " &amp; FormatNumber((@AllTimeRTrains / @AllTimeRLevels), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@ctrains per level@@w,@@W " &amp; FormatNumber((@AllTimeRBTrains / @AllTimeRLevels), 3, vbFalse, vbUseDefault, vbFalse) &amp; "@@c bonus trains per level@@w,@@W " &amp; FormatNumber(((@AllTimeRS + @AllTimeRI + @AllTimeRW + @AllTimeRD + @AllTimeRC + @AllTimeRL) / @AllTimeRLevels), 3, vbFalse, vbUseDefault, vbFalse) &amp; "@@c bonus stats per level@@w,@@W " &amp; FormatNumber(((@AllTimeRTrains + @AllTimeRBTrains) / @AllTimeRLevels), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@ctotal trains per level."
end if
</send>
  </alias>
  <alias
   match="pupavg"
   enabled="y"
   expand_variables="y"
   send_to="12"
   sequence="100"
  >
  <send>if "@MortRPups" = "0" then
world.ansinote ansi(31) &amp; ansi(1) &amp; "Nothing to report."
else
world.sendnoecho "@lvlchannel @@CSince @@w@ResetTime@@Y (this mort): @@W@MortRPups@@C pups@@w, @@W@MortRTrainsPup@@Ctrains@@w, @@W@MortRBTrainsPup@@C bonus trains@@w. " &amp; FormatNumber((@MortRTrainsPup / @MortRPups), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@Ctrains per pup@@w, @@W" &amp; FormatNumber((@MortRBTrainsPup / @MortRPups), 3, vbFalse, vbUseDefault, vbFalse) &amp; "@@C bonus trains per pup@@w, @@W" &amp; FormatNumber(((@MortRTrainsPup + @MortRBTrainsPup) / @MortRPups), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@ctotal trains per pup."
end if</send>
  </alias>
  <alias
   match="pupavga"
   enabled="y"
   expand_variables="y"
   send_to="12"
   sequence="100"
  >
  <send>if "@AllTimeRPups" = "0" then
world.ansinote ansi(31) &amp; ansi(1) &amp; "Nothing to report."
else
world.sendnoecho "@lvlchannel @@CSince @@w@InstallTime@@Y (installed): @@W@AllTimeRPups@@C pups@@w, @@W@AllTimeRTrainsPup@@Ctrains@@w, @@W@AllTimeRBTrainsPup@@C bonus trains@@w. " &amp; FormatNumber((@AllTimeRTrainsPup / @AllTimeRPups), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@Ctrains per pup@@w, @@W" &amp; FormatNumber((@AllTimeRBTrainsPup / @AllTimeRPups), 3, vbFalse, vbUseDefault, vbFalse) &amp; "@@C bonus trains per pup@@w, @@W" &amp; FormatNumber(((@AllTimeRTrainsPup + @AllTimeRBTrainsPup) / @AllTimeRPups), 3, vbFalse, vbUseDefault, vbFalse) &amp; " @@ctotal trains per pup."
end if</send>
  </alias>
</aliases>

<!--  Variables  -->

<variables>
  <variable name="lvlchannel">gt</variable>
</variables>

<!--  Script  -->


<script>
<![CDATA[
dim var1,var2,var3,var4,var5

Function LevelTimer (Date1, Date2)
Dim seconds, min, hours, days

seconds = (DateDiff("s", Date1, Date2) - 1)
min = (seconds \ 60)
seconds = (seconds / 60) - (seconds \ 60)
seconds = Round(seconds * 60)

hours = (min \ 60)
min = (min / 60) - (min \ 60)
min = Round(min * 60)

days = (hours \ 24)
hours = (hours / 24) - (hours \ 24)
hours = Round(hours * 24)

LevelTimer =  days & "d " & hours & "h " & min & "m " & seconds & "s"

End Function

Sub ExecExpHour(name)
 world.execute "exphour"
End Sub

Sub RegLevelReport(name)

If len(world.getvariable("bstats")) > 1 then
 If InStrRev(world.getvariable("bstats"), "@w, @W") = (Len(world.getvariable("bstats")) - 5) Then
  world.setvariable "bstats", Left(world.getvariable("bstats"), Len(world.getvariable("bstats")) - 6)
 End If
end if

If world.getvariable("LevelRKills") = "0" then
 world.sendnoecho world.getvariable("lvlchannel") &  " Sorry, but an error occured marking kills this level as 0 so you'll recieve this report instead."
  world.sendnoecho world.getvariable("lvlchannel") &  " @RL@reveled@R!@w: @C" & world.getvariable("clevel") & "@w: @W" & var1 & "@chp@W " & var2 & "@cmn@W " & var3 & "@cmv@W " & var4 & " @cpracs@w " & var5 & "@C+@W" & (world.getvariable("bonustrains") + 0) & " @ctrains@w | {@RB@ronus S@Rtat(s)@w} @W " &  world.getvariable("bstats") & " @w|@c " &  LevelTimer(world.getvariable("LevelTime"),Now) & " @w|@R " & world.getvariable("LevelRKills") & "@c kills.@w"
else
if world.getvariable("pupping") = "1" then
 if world.getvariable("shortreport") = "1" then
  world.sendnoecho world.getvariable("lvlchannel") &  " @RP@rupped@R!@w:@W " & var5 & "@C+@W" & (cint(world.getvariable("pupbonustrains")) + 0) & " @ctrains@w. {@RB@ronus S@Rtat(s)@w} @W " & world.getvariable("bstats") &  " @w|@W " & LevelTimer(world.getvariable("LevelTime"),Now) & " @w|@R " & world.getvariable("LevelRKills") & "@c kills@w averaging " & FormatNumber(0 + (cint(world.getvariable("LevelRExp")) / cint(world.getvariable("LevelRKills"))), 3, vbFalse, vbUseDefault, vbFalse) & " @cexp@W/@ckill@w."
  world.setvariable "lastlevel", " @RL@rast @RP@rup@w: @W" & var5 & "@c+@w" & (world.getvariable("pupbonustrains") + 0) & " @ctrains@w| {@RB@ronus S@Rtat(s)@w} @W " &  world.getvariable("bstats") & " @w|@c " &  LevelTimer(world.getvariable("LevelTime"),Now) & " @w|@R " & world.getvariable("LevelRKills") & "@c kills@w averaging " & FormatNumber(((cint(world.getvariable("LevelRExp")) + cint(world.getvariable("LevelRBonusExp"))) / cint(world.getvariable("LevelRKills"))), 3, vbFalse, vbUseDefault, vbFalse) & " @cxp@W/@ckill@w."
 else
  world.sendnoecho world.getvariable("lvlchannel") &  " @RP@rupped@R!@w: @W" & var1 & "@chp@W " & var2 & "@cmn@W " & var3 & "@cmv@W " & var4 & " @cpracs@w " & var5 & "@C+@W" & (cint(world.getvariable("pupbonustrains")) + 0) & " @ctrains@w. {@RB@ronus S@Rtat(s)@w} @W " & world.getvariable("bstats") &  " @w|@W " & LevelTimer(world.getvariable("LevelTime"),Now) & " @w|@R " & world.getvariable("LevelRKills") & "@c kills@w averaging " & FormatNumber(0 + (cint(world.getvariable("LevelRExp")) / cint(world.getvariable("LevelRKills"))), 3, vbFalse, vbUseDefault, vbFalse) & " @cexp@W/@ckill@w."
  world.setvariable "lastlevel", " @RL@rast @RP@rup@w: @W" & var1 & "@chp@W " & var2 & "@cmn@W " & var3 & "@cmv@W " & var4 & " @cpracs@w " & var5 & "@C+@w" & (world.getvariable("pupbonustrains") + 0) & " @ctrains@w| {@RB@ronus S@Rtat(s)@w} @W " &  world.getvariable("bstats") & " @w|@c " &  LevelTimer(world.getvariable("LevelTime"),Now) & " @w|@R " & world.getvariable("LevelRKills") & "@c kills@w averaging " & FormatNumber(((cint(world.getvariable("LevelRExp")) + cint(world.getvariable("LevelRBonusExp"))) / cint(world.getvariable("LevelRKills"))), 3, vbFalse, vbUseDefault, vbFalse) & " @cxp@W/@ckill@w."
 end if
else
 if world.getvariable("shortreport") = "1" then
  world.sendnoecho world.getvariable("lvlchannel") & " @RL@reveled@R!@w: @C" & world.getvariable("clevel") & "@w: @W" & var5 & "@c+@w" & (world.getvariable("bonustrains") + 0) & " @ctrains@w| @w{@RBonus @rStat(s)@w}@W " &  world.getvariable("bstats") & " @w|@c " &  LevelTimer(world.getvariable("LevelTime"),Now) & "@w|@r " & world.getvariable("LevelRKills") & "@c kills@w averaging " & FormatNumber(((cint(world.getvariable("LevelRExp")) + 0 + cint(world.getvariable("LevelRBonusExp"))) / cint(world.getvariable("LevelRKills"))), 3, vbFalse, vbUseDefault, vbFalse) & " @cxp@W/@ckill@w."
  world.setvariable "lastlevel", " @RL@rast @RL@revel@w: @C" & world.getvariable("clevel") & "@w: @W" & var5 & "@c+@w" & (world.getvariable("bonustrains") + 0) & " @ctrains@w| @cB@ronus @cS@rtat(s)@w:@W " &  world.getvariable("bstats") & " @w|@c " &  LevelTimer(world.getvariable("LevelTime"),Now) & " @w|@r " & world.getvariable("LevelRKills") & "@c kills@w averaging " & FormatNumber(((cint(world.getvariable("LevelRExp")) + 0 + cint(world.getvariable("LevelRBonusExp"))) / cint(world.getvariable("LevelRKills"))), 3, vbFalse, vbUseDefault, vbFalse) & " @cxp@W/@ckill@w."
 else
  world.sendnoecho world.getvariable("lvlchannel") &  " @RL@reveled@R!@w: @C" & world.getvariable("clevel") & "@w: @W" & var1 & "@chp@W " & var2 & "@cmn@W " & var3 & "@cmv@W " & var4 & " @cpracs@w " & var5 & "@C+@W" & (world.getvariable("bonustrains") + 0) & " @ctrains@w | {@RB@ronus S@Rtat(s)@w} @W " &  world.getvariable("bstats") & " @w|@c " &  LevelTimer(world.getvariable("LevelTime"),Now) & " @w|@R " & world.getvariable("LevelRKills") & "@c kills@w averaging " & FormatNumber(((cint(world.getvariable("LevelRExp")) + 0 + cint(world.getvariable("LevelRBonusExp"))) / cint(world.getvariable("LevelRKills"))), 3, vbFalse, vbUseDefault, vbFalse) & " @cxp@W/@ckill@w."
  world.setvariable "lastlevel", " @RL@rast @RL@revel@w: @C" & world.getvariable("clevel") & "@w: @W" & var1 & "@chp@W " & var2 & "@cmn@W " & var3 & "@cmv@W " & var4 & " @cpracs@W " & var5 & "@C+@W" & (world.getvariable("bonustrains") + 0) & " @ctrains@w | {@RB@ronus S@Rtat(s)@w} @W " &  world.getvariable("bstats") & " @w|@c " &  LevelTimer(world.getvariable("LevelTime"),Now) & " @w| @R" & world.getvariable("LevelRKills") & "@c kills@w averaging " & FormatNumber(((cint(world.getvariable("LevelRExp")) + 0 +  cint(world.getvariable("LevelRBonusExp"))) / cint(world.getvariable("LevelRKills"))), 3, vbFalse, vbUseDefault, vbFalse) & " @cxp@W/@ckill@w."
 end if
end if
end if


world.setvariable "LevelRBonusExp", "0"
world.setvariable "LevelRExp", "0"
world.setvariable "LevelRKills", "0"
world.setvariable "bstats", "0"
world.setvariable "pupbonustrains", "0"
world.setvariable "bonustrains", "0"

if cint(world.getvariable("clevel")) >= 200 then
 world.setvariable "pupping", "1"
else
 world.setvariable "pupping", "0"
end if

'Set the new level time
 world.setvariable "leveltime", Now
 world.savestate
End Sub

Sub OnPluginInstall()
world.note "Type lvlhelp for help, and then lvlsetup to begin."
if not world.getvariable("timeleft") = "" then
Dim seconds, min

seconds = world.getvariable("timeleft")
min = (seconds \ 60)
seconds = (seconds / 60) - (seconds \ 60)
seconds = Round(seconds * 60)

min = (min / 60) - (min \ 60)
min = Round(min * 60)
world.addtimer "LevelInfo_HourlyReport", 0, min, seconds, "", 1, "ExecExpHour"
end if
End Sub

sub OnPluginClose
world.setvariable "timeleft", world.gettimerinfo("LevelInfo_HourlyReport",13)
world.savestate
end sub

]]>
</script>
</muclient>
Amended on Thu 03 Aug 2006 07:14 AM by NeoFryBoy
USA #12
I have two more, but I think the double tracker and mobscanner have a couple bugs left. Gonna find 'em and post the result.


Thank you Nick.
#13
Neo posted a levelling script similar to Ninja and Atreidess' zMud scripts above. The problem with it is that it's firing off every 15 minutes or so instead of the hourly report. Anyone else get this, or understand the code enough to find the problem?

It's the second raw post he did above.
#14
Hey, sorry to ask you guys a stupid question, but here it goes. how in the world do I get these plugin scripts downloaded to my cpu?
Australia Forum Administrator #15
For plugins on a web page like this one, copy the plugin XML text (starting at the line "<?xml version="1.0" encoding="iso-8859-1"?>" - and ending at the line "</muclient>", inclusive) and paste that into a text editor like Notepad.

Then save that as a file (eg. LevelTracker.xml).

Once you have the file on disk use the MUSHclient file menu -> Plugins -> Add to install it.

For plugins which are hyperlinks (eg, on the page http://www.gammon.com.au/mushclient/plugins/ ) - just RH click to download the file, and install it as described above.
#16
Sorry to bump an extremely old thread but I'm having problems with the leveltracker plugin. When I run lvlsetup I get the error message:

Script error
Plugin: LevelTracker (called from world: Aardwolf)
Execution of line 6 column 98
Immediate execution
Syntax error
Line in error:
world.ansinote ansi(32) & ansi(1) & "Total levels gained: " & ansi(36) & ansi(1) & ((5 - 2) + ( * 1393) + ((1 - 1) * 199)) & ansi(33) & ansi(1) & " (" & ansi(32) & (13930 - ((5 - 2) + ( * 1393) + ((1 - 1) * 199))) & " to go!" & ansi(33) & ansi(1) & ")"

Near as I can tell its a problem with the variable @clevel but I'm not sure how to fix it. Any ideas?
Australia Forum Administrator #17
Hard to say without seeing more of it, this doesn't look good: "+ ( * 1393)".

That is probably the cause of the error.
#18
It seems like @clevel isn't being set for some reason but I'm not sure how to go about debugging this since I'm not very familiar with LUA and the triggers that set it seem to be okay.

It might be easier if there was a way to see the variables and aliases inside a plugin and modify them in real time, is that possible?
Australia Forum Administrator #19
If scripting is enabled, and you make "/" the scripting prefix on the script configuration page, try typing:


/Debug "plugins"


That might show what you need to know.
Australia Forum Administrator #20
Also try going to the Game menu and turning on Trace - that shows which triggers, aliases, etc. have fired.
#21
Ok I'm still very new to mush and very used to zmud.
I wonder if there is a nice handy speedwalk plugin that would allow me to enter//edit speedwalks much like zmud/cmud does.

Aardwolf uses it's own inbuilt run command which is very handy. Thought every time i try to run to a new area I press ctrl+s to get my speedwalk window open and choose which area to run to... obviously this doesn't work. :P

Anyone mind pointing me to a simple plugin or perhaps even write one? Because im more and more walking away from zmud to mush. :)

Lavi.
Australia Forum Administrator #22
See this new thread:

http://www.gammon.com.au/forum/?id=8834
#23
Hello all,
I am new to MushClient and I am trying to fix the auto hunt script becuase the trigger for hunting has changed. Here are two examples.
"The trail of A Zombied Thief is confusing, but you're reasonably sure he headed west."
"The trail of Questor is confusing, but you're reasonably sure it headed down."
the match i am trying to create looks like this so far, mind you I have never coded in lua so something is missing.
match="The trail of (.*?) is confusing, but you\'re reasonably sure * headed (.*?)\.$"
I understand the (.*?) is for the two variables but how do I basiclly ignore text, in zmud all i have to use is * but that is not working for me.
any help would be appreciated.
My next project is to get autohunter to open doors. If anybody has some good ideas how to get that started let me know as well.
Thank you for your time and effort.
regards,
Me

PS. figured out i need to use .* so now I am going to work on how to make it open doors, any ideas?

Looks like as you go up in hunting ability you get new sayings so here are the first two, i will post the rest as they come:
1) match="The trail of (.*?) is confusing, but you\'re reasonably sure .* headed (.*?)\.$"
2) match="You are confident that (.*?) passed through here\, heading (.*?)\.$"
Amended on Wed 05 Nov 2008 07:47 PM by KimW
#24
Opening doors still not working :(
- added this triger
<trigger
enabled="n"
group="autohunter"
match="^The door is closed."
regexp="y"
script="autohuntdoor"
send_to="12"
sequence="100"
>

- and changed autohunt function to this
function autohunt(sName,sLine,wildcards)
world.SetVariable("autohuntdoors",string.lower(wildcards[2]))
Send(wildcards[2])
DoAfterSpecial(3,'Send("hunt " .. world.GetVariable("autohuntmob"))',12)
end -- autohunt

- and added this new function
function autohuntdoor(sName,sLine,wildcards)
send("open " .. world.GetVariable("autohuntdoors"))
end -- autohuntdoor

When i try to use it i get
Run-time error
Plugin: Aardwolf_AutohunterLUA (called from world: Aardwolf)
Function/Sub: autohuntdoor called by trigger
Reason: processing trigger ""
[string "Plugin"]:163: attempt to call global 'send' (a nil value)
stack traceback:
[string "Plugin"]:163: in function <[string "Plugin"]:162>
Error context in script:
163*: send("open " .. world.GetVariable("autohuntdoors"))
- this line is in the autohuntdoor function

Anybody have any ideas why this does not work?

Thank you for your time and effort.
Regards,
ME
Australia Forum Administrator #25
Lua is case-sensitive, the function is Send, not send.
#26
for those of you who would like Gammon's autohunt with a few small tweeks, to make it a little faster and has the ability to open doors please use the plugin below, mind you it is a trial run (my first plugin written in Lua):

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient>
<!-- Saved on Wednesday, July 26, 2006, 11:18 AM -->
<!-- MuClient version 3.74 -->

<!-- Plugin "Aardwolf_AutohunterLUA" generated by Plugin Wizard -->

<muclient>
<plugin
name="Aardwolf_AutohunterLUA"
author="Onoitsu2"
id="e5ba9d8d543592b7ae80926a"
language="Lua"
purpose="This will hunt and move toward a mob every 2 seconds."
date_written="2008-11-05 11:15:29"
requires="3.65"
version="1.11"
>
<description trim="n">
<![CDATA[
Aardwolf_AutohunterLUA Help File
autohunt MOBNAME - Turns on autohunting of MOBNAME
autohunt off - Turns off autohunting
autohunt help - Displays this help file

]]>
</description>

</plugin>


<!-- Get our standard constants -->

<include name="constants.lua"/>

<!-- Triggers -->
<triggers>
<trigger
enabled="n"
group="autohunter"
match="The trail of (.*?) is confusing, but you\'re reasonably sure .* headed (.*?)\.$"
name="autohunter1"
regexp="y"
script="autohunt"
send_to="12"
sequence="100"
>
</trigger>
<trigger
enabled="n"
group="autohunter"
match="You are confident that (.*?) passed through here\, heading (.*?)\.$"
name="autohunter2"
regexp="y"
script="autohunt"
send_to="12"
sequence="100"
>
</trigger>
<trigger
enabled="n"
group="autohunter"
match="^(.*?) is (.*?) from here\.$"
name="autohunter5"
regexp="y"
script="autohunt"
send_to="12"
sequence="100"
>
</trigger>
<trigger
enabled="n"
group="autohunter"
match="^The .* is closed."
regexp="y"
script="autohuntdoor"
send_to="12"
sequence="100"
>
</trigger>
<trigger
group="autohunter"
make_underline="y"
match="^(.*?) is here\!$"
regexp="y"
script="autohunthere"
send_to="12"
sequence="100"
>
</trigger>
<trigger
enabled="n"
group="autohunter"
make_underline="y"
match="^You couldn\'t find a path to (.*?) from here\.$"
regexp="y"
script="autohunthere"
send_to="12"
sequence="100"
>
</trigger>
</triggers>


<!-- Aliases -->

<aliases>
<alias
name="autohunter_alias"
match="^autohunt (off|help|(.*?))$"
enabled="y"
expand_variables="y"
omit_from_command_history="y"
regexp="y"
script="autohuntalias"
send_to="12"
ignore_case="y"
sequence="100"
>
</alias>
</aliases>

<!-- Plugin help -->

<script>
<![CDATA[
function autohuntalias(sName,sLine,wildcards)
if string.lower(wildcards[1]) == "off" then
ColourNote("white", "red", "Autohunter OFF")
world.EnableTriggerGroup("autohunter",false)
elseif string.lower(wildcards[1]) == "help" then
OnHelp()
else
Send("hunt " .. wildcards[1])
ColourNote("white", "green", "Autohunter ON! (Hunting " .. wildcards[1] .. ")")
world.SetVariable("autohuntmob",string.lower(wildcards[1]))
world.EnableTriggerGroup("autohunter",true)
end
end -- autohuntalias

function autohunt(sName,sLine,wildcards)
world.SetVariable("autohuntdoors",string.lower(wildcards[2]))
Send(wildcards[2])
DoAfterSpecial(2,'Send("hunt " .. world.GetVariable("autohuntmob"))',12)
end -- autohunt

function autohuntdoor(sName,sLine,wildcards)
Send("open " .. world.GetVariable("autohuntdoors"))
end -- autohuntdoor

function autohunthere(sName,sLine,wildcards)
ColourNote("white", "red", "Autohunter OFF")
world.EnableTriggerGroup("autohunter",false)
end -- autohunthere

function OnPluginInstall()
OnHelp()
end -- OnPLuginInstall

function OnHelp ()
world.Note (world.GetPluginInfo (world.GetPluginID (), 3))
end
]]>
</script>

</muclient>
Amended on Thu 06 Nov 2008 05:52 PM by KimW
USA #27
I have made a little trigger here for those who don't want to go afk but still let others know they are afk. The bonus is that it will only reply to same person once in a row. I know it isn't very complicated but i looked and looked but never found a plugin for this. So i made one for you. It also includes a sound for Vista (easily removed if not desired) to alert you when a tell is received.


The entire trigger is turned off/on by the Aardwolf 'catchtell' command.

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient>
<!-- Saved on Sunday, May 10, 2009, 1:56 AM -->
<!-- MuClient version 4.37 -->

<!-- Plugin "AFK_message" generated by Plugin Wizard -->

<!--
The purpose of this Script is to help those who don't always like to flag themselves AFK.
Going afk, even client-side, stops spellups and thus is a hassle when you return. This script will allow you to be afk without that hassle. When someone sends you a message you will reply (with your own personal message) informing them that you are indeed afk. The bonus added is that it wont send to the same person twice in a row, thus keeping your tell history nice and tidy.
-->

<muclient>
<plugin
name="AFK_message"
author="Darkknowing"
id="38ed3b99246044ba207233fc"
language="Lua"
purpose="To alert someone you are AFK, if you don't want to actually go into AFK mode"
save_state="y"
date_written="2009-05-10 01:52:14"
requires="4.37"
version="1.0"
>

</plugin>


<!-- Get our standard constants -->

<include name="constants.lua"/>

<!-- Triggers -->

<triggers>
<trigger
enabled="y"
expand_variables="y"
match="* just sent you a tell."
send_to="12"
sequence="100"
sound="C:\WINDOWS\Media\Windows Battery Critical.wav"
>
<send>lastsent = GetVariable ("lastsent")
if lastsent == "%1" then
Note ("The same guy sent you two tells in a row")
elseif lastsent ~= "%1" then
Send ("reply @afkmessage
end
SetVariable ("Lastsent", "%1")</send>
</trigger>
</triggers>

<!-- Variables -->

<variables>
<variable name="timereturn">""</variable>
<variable name="afkmessage">""</variable>
</variables>

</muclient>


I apologize if this is shoddy workmanship, this is my very first attempt and any sort of scripting. Please send notes to Darkknowing on Aardwolf if you have any tips/suggestions.
USA #28
One other thing i forgot to mention:

This will also trigger during battle, to prevent this if you don't like it simply turn of savetell function.
#29
Bevern said:

Sorry to bump an extremely old thread but I'm having problems with the leveltracker plugin. When I run lvlsetup I get the error message:

Script error
Plugin: LevelTracker (called from world: Aardwolf)
Execution of line 6 column 98
Immediate execution
Syntax error
Line in error:
world.ansinote ansi(32) & ansi(1) & "Total levels gained: " & ansi(36) & ansi(1) & ((5 - 2) + ( * 1393) + ((1 - 1) * 199)) & ansi(33) & ansi(1) & " (" & ansi(32) & (13930 - ((5 - 2) + ( * 1393) + ((1 - 1) * 199))) & " to go!" & ansi(33) & ansi(1) & ")"

Near as I can tell its a problem with the variable @clevel but I'm not sure how to fix it. Any ideas?
Guess I'm bumping it even older...
I'm brand new to mushclient and I have the same problem.
The part of the code itself looks like this
(i hope this parses correctly)

if "@clevel" = "201" then
 world.ansinote ansi(32) &amp; ansi(1) &amp; "Total levels gained: " &amp; ansi(36) &amp; ansi(1) &amp; ((@clevel - 2) + (@tiers * 1393) + ((@classes - 1) * 199))  &amp; ansi(33) &amp; ansi(1) &amp; " (" &amp; ansi(32) &amp; (13930 - ((@clevel - 2) + (@tiers * 1393) + ((@classes - 1) * 199))) &amp; " to go!" &amp; ansi(33) &amp; ansi(1) &amp; ")"
else
 world.ansinote ansi(32) &amp; ansi(1) &amp; "Total levels gained: " &amp; ansi(36) &amp; ansi(1) &amp; ((@clevel - 1) + (@tiers * 1393) + ((@classes - 1) * 199))  &amp; ansi(33) &amp; ansi(1) &amp; " (" &amp; ansi(32) &amp; (13930 - ((@clevel - 1) + (@tiers * 1393) + ((@classes - 1) * 199))) &amp; " to go!" &amp; ansi(33) &amp; ansi(1) &amp; ")"
end if


the error happens as soon as lvlsetup tries to send the "finger" command and continues to happen even when you type it manually.
I wonder if the problem is because the script language is VBscript rather than Lua?

EDIT: Guess it being VBscript has nothing to do with it. I changed the setting to use VBscript, installed the script, ran it and had the same error.
Amended on Fri 09 Sep 2011 02:41 AM by DaemonChilde
Australia Forum Administrator #30
Can you post the whole thing? It is hard to debug out of context.
#31
Nick Gammon said:

Can you post the whole thing? It is hard to debug out of context.
I can't since I can't post large scripts (can't even quote them apparently)
On the 1st page the, the LevelTracker is it.
<!-- Plugin "LevelTracker" generated by Plugin Wizard -->
#32
Nothing I guess? :(
Australia Forum Administrator #33
I didn't write this so it is hard to know exactly what is going on. From what I can see, @clevel is not set (that is, the variable "clevel" does not exist).

This sets it (amongst other things):


 <trigger
   group="FingerInfo"
   match="^Level (\d+) (none|male|female) .* \(Tier (\d)\)\.$"
   regexp="y"
   send_to="12"
   sequence="100"
  >
  <send>world.setvariable "clevel", "%1"
world.setvariable "tiers", "%3"
world.setvariable "alevel", (%1 + (%3 * 10))</send>
  </trigger>


So if you can get that processed it might work.

Maybe add:


 SetVariable "clevel", "1"


to inside lvlsetup, and then type "lvlsetup" again.

eg. here:


world.EnableTriggerGroup "FingerInfo", True
world.setvariable "Classes", "1"
world.send "finger"
end if

 SetVariable "clevel", "1"

</send>


Maybe ditto for "tiers" and "classes".

Sorry, it is hard to debug something written 5 years ago, by someone else, for a MUD I don't play frequently, in a language I don't use very often.