inherit "/std/object"; /* The Pub Globe. A chatter between rooms with the Globe in them. * Version 2, with globewho * Baldrick, '93, fix jan '96. */ /* This object: if it's moved, alter this. */ #define GLOBE "/obj/misc/globe.c" string drunk_speech(string str); int do_globe_tell(string bladder); void globe_tell(string bladder); int globe_who(); void setup() { set_name("globe"); set_short("Globe of Pub chatting"); set_long("This is one of the most remarkable items in these realms. " + "It is a shimmering blue globe, floating a meter over the floor "+ "in the middle of the room.\n"); reset_get(); set_weight(10000); set_read_mess("This Globe is created by the God of these Realms, Baldrick."+ "\nUse 'chat' to communicate with other pubs in the realms " + "' and 'globewho' to see who are there.\n"); set_value(0); } void init() { add_action("do_chat", "globe"); add_action("do_chat", "chat"); add_action("globe_who", "globewho"); // add_action("ret", "userg"); ::init(); } /* communicate_commands() */ int do_chat(string str) { object *drunks; if (!str) { notify_fail("You wanted to chat what?\n"); return 0; } if (this_player()->query_drunk()) str = drunk_speech(str); /* Hmm.. new method, without the event thingie.. */ do_globe_tell( (string)this_player()->query_cap_name() + " [Globe]: " + str + "\n"); write("You chat through the globe: " + str + "\n"); return 1; } string drunk_speech(string str) { /* I think I like replace already */ return replace(str, ({ "s", "sh", "r", "rr", "ing", "in'", "x", "xsh", "S", "SH", "R", "RR" })); } /* drunk_speech() */ void show_drunks(object curious) { object *drunks; string drunk_name; string place; int i; if (!clonep(this_object())) return; place=environment(this_object())->query_short(); tell_object(curious, "In " + place+ ":\n"); drunks = all_inventory(environment(this_object())); for (i=0;i<sizeof(drunks);i++) { if(living(drunks[i]) && !drunks[i]->query_hide_shadow()) { drunk_name = (string)drunks[i]->query_cap_name(); tell_object(curious, " " + drunk_name + "\n"); } } return; } int globe_who() { children(GLOBE)->show_drunks(this_player()); return 1; } int do_globe_tell(string bladder) { mixed *globes; int i; children(GLOBE)->globe_tell(bladder); return 1; } void globe_tell(string bladder) { tell_room(environment(), bladder, this_player()); }