First of all, your prompt isnt that hard to match....
Quote:
   match="^\*\s?\d+\%\*\s?\d+\%\*\s?\d+\%\*\s?\d+(am|pm)$"
chat.xml wrote:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient>
<!-- Saved on Saturday, June 30, 2007, 10:48  -->
<!-- MuClient version 4.13 -->
<!-- Plugin "Chat_Redirector" generated by Plugin Wizard -->
<!--
Edit plugin and change "chat_world" variable to be the name of the 
world you want chats to go to.
-->
<muclient>
<plugin
   name="Chat_Redirector"
   author="Nick Gammon"
   id="cb84a526b476f69f403517da"
   language="Lua"
   purpose="Redirects chat messages to another world"
   date_written="2007-06-30 10:45:35"
   requires="4.08"
   version="1.0"
   >
<description trim="y">
<![CDATA[
Redirects chats to the specified world.
Add or modify "chat" triggers to capture different sorts of message.
Change the variable "chat_world" to be the name of the world chats are to go 
to.
]]>
</description>
</plugin>
<!--  Triggers  -->
<triggers>
 <trigger
   enabled="n"
   name="gag_prompt"
   group="chatlogging"
   match="^\*\s?\d+\%\*\s?\d+\%\*\s?\d+\%\*\s?\d+(am|pm)$"
   regexp="y"
   omit_from_output="y"
   script="gagged_prompt"
   sequence="100"
  >
  </trigger>
  <trigger
   enabled="y"
   name="they_yell"
   group="chatlogging"
   match="^[A-Za-z\- ]+ yells \'(.*?)\'$"
   omit_from_output="y"
   regexp="y"
   script="redirect"
   sequence="100"
  >
  </trigger>
  <trigger
   enabled="y"
   name="you_yell"
   match="^You yell \'(.*?)\'$"
   omit_from_output="y"
   regexp="y"
   script="redirect"
   sequence="100"
  >
  </trigger>
<trigger
   enabled="y"
   group="chatlogging"
   match="* replies '*'"
   omit_from_output="y"
   script="redirect"
   sequence="100"
  >
  </trigger>
  <trigger
   enabled="y"
   group="chatlogging"
   match="You reply to * '*'"
   omit_from_output="y"
   script="redirect"
   sequence="100"
  >
  </trigger>
<trigger
   enabled="y"
   group="chatlogging"
   match="* tells you '*'"
   omit_from_output="y"
   script="redirect"
   sequence="100"
  >
  </trigger>
  <trigger
   enabled="y"
   group="chatlogging"
   match="You tell * '*'"
   omit_from_output="y"
   script="redirect"
   sequence="100"
  >
  </trigger>
 <trigger
   enabled="y"
   group="chatlogging"
   match="^You tell the (group|formation) \'(.*?)\'$"
   omit_from_output="y"
   regexp="y"
   script="redirect"
   sequence="100"
  > 
</trigger>
 <trigger
   enabled="y"
   group="chatlogging"
   match="* tells the group '*'"
   omit_from_output="y"
   script="redirect"
   sequence="100"
  >
  </trigger>
 <trigger
   enabled="y"
   group="chatlogging"
   match="* tells the formation '*'"
   omit_from_output="y"
   script="redirect"
   sequence="100"
  >
  </trigger>
 <trigger
   enabled="y"
   group="chatlogging"
   match="^\[[A-Z]+\] [A-Za-z\- ]+\: (.*)$"
   omit_from_output="y"
   regexp="y"
   script="redirect"
   sequence="100"
  >
  </trigger>
 <trigger
   enabled="y"
   group="chatlogging"
   match="^\[\d+\] clan members heard you say, (.*)$"
   regexp="y"
   omit_from_output="y"
   script="redirect"
   sequence="100"
  >
  </trigger>
</triggers>
<aliases>
	<alias
	enabled="y"
	match="clear tells"
	script="clear_tells"
	></alias>
</aliases>
<aliases>
	<alias
	enabled="y"
	match="noyells on"
	script="no_yells"
	></alias>
</aliases>
<aliases>
	<alias
	enabled="y"
	match="noyells off"
	script="yells_on"
	></alias>
</aliases>
<!--  Script  -->
<script>
<![CDATA[
chat_world = "chat"
local first_time = true
function redirect (name, line, wildcards, styles)
	  -- try to find "chat" world
  local w = GetWorld (chat_world)  -- get "chat" world
  if w then  -- if present
    for _, v in ipairs (styles) do
      w:ColourTell (RGBColourToName (v.textcolour), 
                    RGBColourToName (v.backcolour), 
                    v.text)  
    end -- for each style run
    w:Note ("")  -- wrap up line
    w:Note (os.date("(%X)"))
    w:Note ("")
    SetTriggerOption("gag_prompt","enabled","y")
  end -- world found
end -- function redirect 
function gagged_prompt(n,l,wc)
    SetTriggerOption("gag_prompt","enabled","n")
end  
function clear_tells(name, line, wildcards)
  local w = GetWorld (chat_world)  -- get "chat" world
  if w then
	w:DeleteOutput()
	w:Note ("")
  end
end
function no_yells (n,l,w)
  SetTriggerOption("you_yell","enabled","n")
  SetTriggerOption("they_yell","enabled","n")
  ColourNote("YELLOW","BLACK","Yells will NOT redirect.")
end
function yells_on (n,l,w)
  SetTriggerOption("you_yell","enabled","y")
  SetTriggerOption("they_yell","enabled","y")
  ColourNote("YELLOW","BLACK","Yells WILL redirect.")
end
function init_chat()
  local w = GetWorld (chat_world)  -- get "chat" world
  -- if not found, try to open it
  if first_time and not w then
    local filename = GetInfo (67) .. chat_world .. ".mcl"
    Open (filename)
    w = GetWorld (chat_world)  -- try again
    if not w then
      ColourNote ("white", "red", "Can't open chat world file: " .. filename)
      first_time = false  -- don't repeatedly show failure message
    end -- can't find world 
  end -- can't find world first time around
end -- end function
function OnPluginConnect()
	init_chat()
end
function OnPluginLoad()
	init_chat()
end
function OnPluginInstall()
	init_chat()
end
]]>
</script>
</muclient>