From: George Zolas, zolasg@weiss.che.utexas.edu Here is my teleport room code: Enjoy!!! *************************************************************************** * I got the deathtrap room code off of ftp.game.org in a merc directory, I think. the teleport code is based very much on it, /************************************************************************* * Dyre MUD Deathtrap 1.0 was written in 1996. * * Based on Helix's Deathtrap code for Merc. * * There is no copyright, just give us credit! * * Dyre MUD is brought to you by : * * George Zolas - Froth * * Nathan Lefebvre - Pinto * * Joe Fresch - JEB * * Jonathan Gray - Hordar * * * * We all stayed up really, really late for this thing * * ...please don't screw us. * * * *************************************************************************/ make these additions to update.c to get the do_look and other functions.... #include "interp.h" in update_handler, declare: static int pulse_tele; and add: if ( --pulse_tele <= 0 ) { pulse_tele = PULSE_TELEPORT; tele_update ( ); } add the function prototype : void tele_update args( ( void ) ); at the top with the other updates... and the function: void tele_update ( void ) { CHAR_DATA *ch; CHAR_DATA *ch_next; ROOM_INDEX_DATA *pRoomIndex; for (ch = char_list ; ch != NULL; ch = ch_next ) { ch_next = ch->next; if ( IS_SET(ch->in_room->room_flags, ROOM_TELEPORT ) ) { do_look ( ch, "tele" ); if ( ch->in_room->tele_dest == 0 ) pRoomIndex = get_random_room (ch); else pRoomIndex = get_room_index(ch->in_room->tele_dest); send_to_char ("You have been teleported!!!\n\r", ch); act("$n vanishes!!!\n\r", ch, NULL, NULL, TO_ROOM); char_from_room(ch); char_to_room(ch, pRoomIndex); act("$n slowly fades into existence.\n\r", ch, NULL, NULL, TO_ROOM); do_look(ch, "auto"); } } } Changes to merc.h: add #define ROOM_TELEPORT ##### ( free letter, I used G ) #define PULSE_TELEPORT (20 * PULSE_PER_SECOND) /* Froth */ and add the following cariable to struct room_index_data: int tele_dest; changes in db.c, change line in load_rooms function from : /* Area number */ fread_number( fp ); ( this line just skips the zero and doesn't do anything with it!!! wasteful! to: pRoomIndex->tele_dest = fread_number( fp ); /* teleport destination room vnum */ It's easier than adding another fread line and adding a new field to the area files. This works by using that unused bit in the area file, the one they tell you to set to 0. If it's zero, and the room is a teleport room, the desination is random, if it is nonzero, it is the vnum of the room you teleport to. add an extra descrip to the room, like this: E tele~ You are surrounded by an eerie glowing mist. It glows bright, and you black out for a second!! ~ or something, as when you are teleported, the function does a look to see the extra description for the word "tele". This allows you to customize the teleport message for each room! I really did do some heavy borrowing from the deathtrap room for this idea, but it's all good code, right?