In response to the verify exit thread, I got an idea to help put a stop to those exits that didn't match. What I did was, every time someone redits an exit, it will ask to copy the door info to the corresponding room if: 1) The corresponding room != NOWHERE 2) The exit info has EX_ISDOOR set Then if they want to copy it, it will copy the following info the the corresponding room: 1) door keywords 2) door flags 3) key num 4) exit general_description I figured in _most_ cases, the door would be the same on both sides, but if they aren't just say no to copy the info..... The code isn't too long so I went ahead and icluded it. Anybody is free to use it, I just ask that you include me somewhere in the code or credits. And I hope it proves useful. Oh, sorry bout the mailer code. :P *** ./stk/redit.c Sat Jun 27 06:58:58 1998 --- ./src/redit.c Sat Jun 27 07:05:22 1998 *************** void redit_parse(struct descriptor_data *** 1024,1030 **** case REDIT_EXIT_MENU: switch (*arg) { case '0': ! break; case '1': OLC_MODE(d) = REDIT_EXIT_NUMBER; send_to_char("Exit to room number : ", d->character); --- 1024,1035 ---- case REDIT_EXIT_MENU: switch (*arg) { case '0': ! if ((OLC_EXIT(d)->to_room != NOWHERE) && EXIT_FLAGGED(OLC_EXIT(d), EX_ISDOOR)) { ! SEND_TO_Q("Would you like to copy the door info to the other room(Y//N)? ", d); ! OLC_MODE(d) = REDIT_COPY_DOOR; ! return; ! } ! break; case '1': OLC_MODE(d) = REDIT_EXIT_NUMBER; send_to_char("Exit to room number : ", d->character); *************** void redit_parse(struct descriptor_data *** 1070,1075 **** --- 1075,1117 ---- return; } break; + + case REDIT_COPY_DOOR: + //* Nifty little door copy to prevent one sided doors. -jB 26Jun98 + if (!arg || !*arg) { + SEND_TO_Q("Would you like to copy the door info to the other room(Y//N)!? ", d); + return; + } + switch (*arg) { + case 'y': + case 'Y': + switch(OLC_VAL(d)) { + case NORTH: number = SOUTH; break; + case SOUTH: number = NORTH; break; + case EAST: number = WEST; break; + case WEST: number = EAST; break; + case UP: number = DOWN; break; + case DOWN: number = UP; break; + } + if (world[OLC_EXIT(d)->to_room].dir_option[number]->keyword) + free(world[OLC_EXIT(d)->to_room].dir_option[number]->keyword); + world[OLC_EXIT(d)->to_room].dir_option[number]->keyword = str_dup(OLC_EXIT(d)->keyword); + world[OLC_EXIT(d)->to_room].dir_option[number]->exit_info = OLC_EXIT(d)->exit_info; + if (OLC_EXIT(d)->general_description) { + if (world[OLC_EXIT(d)->to_room].dir_option[number]->general_description) + free (world[OLC_EXIT(d)->to_room].dir_option[number]->general_description); + world[OLC_EXIT(d)->to_room].dir_option[number]->general_description = str_dup(OLC_EXIT(d)->general_description); + } + world[OLC_EXIT(d)->to_room].dir_option[number]->key = OLC_EXIT(d)->key; + break; + case 'n': + case 'N': + break; + default: + SEND_TO_Q("Please enter Y or N: ", d); + return; + } + break; case REDIT_EXIT_NUMBER: if ((number = atoi(arg)) != -1)*** ./stk/olc.h Sat Jun 27 07:08:48 1998 --- ./src/olc.h Sat Jun 27 06:08:04 1998 *************** extern struct olc_save_info *olc_save_li *** 242,247 **** --- 242,248 ---- #define REDIT_EXTRADESC_KEY 15 #define REDIT_EXTRADESC_DESCRIPTION 16 #define REDIT_GOTO_ROOM 17 + #define REDIT_COPY_DOOR 18 /* * Submodes of ZEDIT connectedness. +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST