/* Ick I hate // comments. * Converted to this illustrious mudlib by Pinkfish. * * file: obj/webster.c * author: Truilkan@Basis * date: 1992/10/29 * mudlib: Basis * * if you choose to use this code in your mud, please retain the above * header. if you write a help screen for this object, please give credit * to the original authors (Truilkan and Jacques) * * This object obeys part of the RFC for dictionary lookups. It provides * an LPC object frontend (in the form of a dictionary object) to an online * dictionary server. * * todo: parse the first line returned in order to be smart about * interpreting results of a query (successful, failed, etc). */ #include <socket.h> #define DISCONNECTED "a dictionary (closed)" #define CONNECTED "a dictionary (open)" inherit "/std/socket/telnet"; inherit "/std/object"; void create() { telnet::create(); object::create(); } /* create() */ void setup() { set_name("dictionary"); add_alias(({ "book", "webster" })); set_short(DISCONNECTED); set_long("Its a fine dictionary with faded gold embossing.\n" + "You could probably do all manner of things with it such as defining,\n" + "completing, and spelling words.\n"); set_verbosity(0); } /* setup() */ void handler(string event) { switch (event) { case "open" : set_short(CONNECTED); tell_object(environment(this_object()), "The dictionary creaks open.\n"); break; case "close" : tell_object(environment(this_object()), "The dictionary slams shut!\n"); set_short(DISCONNECTED); break; default: break; } } /* handler() */ int dlookup(string arg) { int result; if (!query_connected()) { notify_fail("The dictionary isn't open!\n"); return 0; } say((string)this_player()->query_cap_name() + " looks up a word.\n"); telnet::send("DEFINE " + arg + "\n"); return 1; } /* dlookup() */ int do_open() { if (query_connected()) { return 0; } say((string)this_player()->query_cap_name() + " opens " + this_player()->query_possessive() + " dictionary.\n"); return telnet::connect("129.79.254.191 2627"); } /* do_open() */ int do_close() { if (!query_connected()) { return 0; } say((string)this_player()->query_cap_name() + " closes " + this_player()->query_possessive() + " dictionary.\n"); return telnet::disconnect(); } /* do_close() */ int dskim(string arg) { int result; if (!query_connected()) { notify_fail("The dictionary isn't open!\n"); return 0; } say((string)this_player()->query_cap_name() + " skims the dictionary.\n"); telnet::send("ENDINGS " + arg + "\n"); return 1; } /* dskim() */ int dspell(string arg) { int result; if (!query_connected()) { notify_fail("The dictionary isn't open!\n"); return 0; } say((string)this_player()->query_cap_name() + " searches for a word.\n"); telnet::send("SPELL " + arg + "\n"); return 1; } /* dspell() */ int dcomplete(string arg) { int result; if (!query_connected()) { notify_fail("The dictionary isn't open!\n"); return 0; } say((string)this_player()->query_cap_name() + " searches for a word.\n"); telnet::send("COMPLETE " + arg + "\n"); return 1; } /* dcomplete() */ void init() { add_action("dlookup", "define"); add_action("dskim", "endings"); add_action("dspell", "spell"); add_action("dcomplete", "complete"); this_player()->add_command("open", this_object()); this_player()->add_command("close", this_object()); } /* init() */ void recieve_message(string str) { say(str); } /* recievr_message() */