/* Do not remove the headers from this file! see /USAGE for more info. */
object array snoopers = ({});
string buf = "";
string header;
void remove()
{
if(sizeof(snoopers))
{
error("can't remove while in use.\n");
}
destruct();
}
void create(string name)
{
header = name + "% ";
}
object array get_snoopers()
{
if(previous_object() != find_object(SNOOP_D))
{
return;
}
return snoopers;
}
void add_snooper(object snooper)
{
if(previous_object() != find_object(SNOOP_D))
{
return;
}
snoopers += ({ snooper });
}
void remove_snooper(object snooper)
{
if(previous_object() != find_object(SNOOP_D))
{
return;
}
snoopers -= ({ snooper });
if(!sizeof(snoopers))
{
remove();
}
}
void receive_snoop(string s)
{
if(!strlen(s)) return;
// the m is part of a control sequence for some people
if(s[<1] == '\n' || (s[<1] == 'm' && strsrch(s,"\n")!=-1))
{
snoopers->receive_private_msg(header + buf + s);
buf = "";
}
else
{
buf += s;
}
}