/* /obj/shells/term.c Creator: Leto@Earth (5/5/94) Related files: _term.c , _shell.c , _chsh.c /adm/etc/shells BETA BETA BETA BETA BETA BETA BETA BETA BETA BETA BETA BETA BETA If you want to use this, PLEASE mail me at Earth or Tmi-2 This is a very limited inefficient hack, not even idented right ;) I don't like the use of environment(this_object()) instead of this_player(), if someone know how to fix it, let me know ;) Based a wee little on Watchers shsh.c, but rather simple now and almost ready to be added to user.c instead :) 03/03/96 - Leto made the whole thing general, instead of hardcoded mesg_classes */ #include <mudlib.h> #include <ansi.h> #undef DEBUG inherit OBJECT ; create() { set("id", ({"term shell", "shell", "termshell" , "highlighter"}) ); set("short", "a highlighter"); set("long", "This is Leto's ANSI/VT100 customizable highlighter" ); set("prevent_drop", 1); seteuid(getuid(this_object())); /** Set object permissions **/ } mixed query_auto_load() { return 1; } int clean_up() { return 1; } // Prevent inadvertant clean_up void init() { // If the environment isn't a user ... remove the shell. if(environment() && !interactive(environment())) { remove(); return; } // Set the shell's euid to that of the user seteuid(getuid(this_player())); } /** ** Mudlib Message communication relay ** - Called from receive_message() in user object **/ int receive_message(string Class, string msg) { string tmp,tmp1; #ifdef DEBUG tell_object(environment(this_object()), ( environment(this_object()->query("term/tell")+Class+":"+NOR+msg)); #endif tmp = environment(this_object())->query("term/"+Class); if (tmp) { // This bit is here to avoid having a coloured blinking cursor :) if(msg[<1]=='\n') msg = tmp+msg[0..<2]+NOR+"\n"; else msg = tmp + msg + NOR ; } tell_object(environment(this_object()),msg); }