-------------------------------------------------------------------------------- This is a simple little snippet to let your players open and unlock doors automatically. No credit of any kind is due, so just enjoy it. -- Midboss (eclipsing.souls@gmail.com) -------------------------------------------------------------------------merc.h- Add this to your PLR_* defines: #define PLR_AUTODOOR (bb) Change the bitvector if you have to. ---------------------------------------------------------------------act_move.c- In move_char, find: if (IS_SET (pexit->exit_info, EX_CLOSED) && IS_SET (pexit->exit_info, EX_NOPASS) && !IS_TRUSTED (ch, ANGEL)) { act ("The $d is closed.", ch, NULL, pexit->keyword, TO_CHAR); return; } And replace it with: if (IS_SET (pexit->exit_info, EX_CLOSED)) { if (IS_SET (ch->act, PLR_AUTODOOR)) { if (IS_SET (pexit->exit_info, EX_LOCKED)) do_unlock (ch, pexit->keyword[0] != '\0' ? pexit->keyword : dir_name[door]); if (!IS_SET (pexit->exit_info, EX_LOCKED)) do_open (ch, pexit->keyword[0] != '\0' ? pexit->keyword : dir_name[door]); if (IS_SET (pexit->exit_info, EX_CLOSED) || (IS_SET (pexit->exit_info, EX_NOPASS) && !IS_TRUSTED (ch, ANGEL))) { act ("You can't get through the $d.", ch, NULL, pexit->keyword, TO_CHAR); return; } } else { act ("The $d is closed.", ch, NULL, pexit->keyword, TO_CHAR); return; } } ----------------------------------------------------------------------handler.c- Add this to the second half of act_bit_name: if (act_flags & PLR_AUTODOOR) strcat (buf, " autodoor"); -----------------------------------------------------------------------tables.c- Add this to the table plr_flags: {"autodoor", bb, FALSE}, Again, change the bitvector to suit your MUD. ---------------------------------------------------------------------act_info.c- In do_autolist, somewhere among the auto displays, add: send_to_char ("autodoor ", ch); if (IS_SET (ch->act, PLR_AUTODOOR)) send_to_char ("{GON{x\n\r", ch); else send_to_char ("{ROFF{x\n\r", ch); Now, add this command to act_info.c: void do_autodoor (CHAR_DATA * ch, char *argument) { if (IS_NPC (ch)) return; if (IS_SET (ch->act, PLR_AUTODOOR)) { send_to_char ("You will no longer open doors automatically.\n\r", ch); REMOVE_BIT (ch->act, PLR_AUTODOOR); } else { send_to_char ("You will now open doors automatically.\n\r", ch); SET_BIT (ch->act, PLR_AUTODOOR); } } ---------------------------------------------------------------------interp.c/h- Add this to the bottom of interp.h: DECLARE_DO_FUN( do_autodoor ); And this with your other auto commands in interp.c's cmd_table: {"autodoor", do_autodoor, POS_DEAD, 0, LOG_NORMAL, 1}, --------------------------------------------------------------------------------