// 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). // Truilkan brought a copy over to the MudOS 0.9 mudlib development site, // and converted it to our mudlib. // Mobydick added the help call, 11-9-92 #include <mudlib.h> #include <net/socket.h> inherit OBJECT; #define DISCONNECTED "a dictionary (closed)" #define CONNECTED "a dictionary (open)" // webster.cs.indiana.edu //#define WEBSTER_SERVER "129.79.254.195" // webster.acc.virginia.edu #define WEBSTER_SERVER "128.143.22.17" inherit "/std/socket/telnet"; void create() { telnet::create(); set("id", ({"dictionary", "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); } 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; } } 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; } int dopen(string arg) { if (query_connected()) { notify_fail("It's already open!\n"); return 0; } say((string)this_player()->query("cap_name") + " opens " + possessive(this_player()->query("gender")) + " dictionary.\n"); return telnet::connect( (( arg = this_player()->query_env("WEBSTER") ) ? arg : WEBSTER_SERVER ) + " 2627"); } int dclose(string arg) { if (!query_connected()) { notify_fail("It's already closed!\n"); return 0; } say((string)this_player()->query("cap_name") + " closes " + possessive(this_player()->query("gender")) + " dictionary.\n"); return telnet::disconnect(arg); } 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; } 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; } 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; } void init() { add_action("dlookup", "define"); add_action("dskim", "endings"); add_action("dopen", "open"); add_action("dclose", "close"); add_action("dspell", "spell"); add_action("dcomplete", "complete"); add_action ("help", "help") ; } int help (string str) { if (str!="dictionary" && str != "webster" && str !="book") return 0 ; write ( "The dictionary will let you look up words, get the spellings correct, and\n"+ "find their meanings. Handy commands are:\n\n"+ " open book : Connect the dictionary to the word server.\n"+ " close book : Close the connection.\n"+ " spell <word> : If the word is spelled correctly, the dictionary returns\n"+ " 'SPELLING 1'. If the word is not found, a list of similar words is\n"+ " printed, hopefully including the correct spelling of the word you\n"+ " want.\n"+ " define <word> : Give the definition of the word.\n"+ " endings <part of word> : Give a list of words that begin with a part\n"+ " of a word. For example, if you weren't sure if the word 'potato'\n"+ " had an 'e' on the end, you could type 'endings potat' and get a\n"+ " list of all words beginning with 'potat'.\n"+ "\nDictionary by Truilkan@Portals and Jacques@Portals.\n") ; return 1 ; }