On Thu, 28 Nov 1996, DJ Pure wrote:
> G'ady all.
> I've tried to add secret doors to my code. Well. it doesn't seem to
> "pickup" that a doors is secret. It displays secret doors as Normal closed
> doors. I don't know how to find what the BITFLAG is set for door.
>
> I've done this.
>
> <In structs.h>
> // Exit info: used in room_data.dir_option.exit_info
> #define EX_ISDOOR (1 << 0) // Exit is a door
> #define EX_CLOSED (1 << 1) // The door is closed
> #define EX_LOCKED (1 << 2) // The door is locked
> #define EX_PICKPROOF (1 << 3) // Lock can't be picked
> #define EX_SECRET (1 << 4) // The door is secret and can be opened.
You don't need the following two. It is a bitvector, so the
following two are a waste of bits. EX_SECRET | EX_PICKPROOF
would accomplish the exact same thing.
> #define EX_SECRET_LOCKED (1 << 5) // The secret door is locked
> #define EX_SECRET_PP (1 << 6) // The secret door can't be picked.
>
>
> <in act.informative.c>
> void do_auto_exits(struct char_data * ch)
> {
> int door;
>
> *buf = '\0';
>
> for (door = 0; door < NUM_OF_DIRS; door++)
> if (EXIT(ch, door) && EXIT(ch, door)->to_room != NOWHERE)
if (IS_SET(EXIT(ch, door)->exit_info, EX_SECRET))
continue;
else if (IS_SET(EXIT(ch, door)->exit_info, EX_CLOSED))
sprintf(buf, "%s-%s# ", buf, capdirs[door]);
else
sprintf(buf, "%s-%s ", buf, capdirs[door]);
>
> sprintf(buf2, "%s[ Exits: %s]%s\r\n", CCCYN(ch, C_NRM),
> *buf ? buf : "None! ", CCNRM(ch, C_NRM));
>
> send_to_char(buf2, ch);
> }
>
>
> Also, what does this mean ??
> if (EXIT(ch, door) && EXIT(ch, door)->to_room != NOWHERE)
> my guess is this. That the door direction (0=north, etc) is in the room as
> the char AND that the door in the room DOESN'T point to the NOWHERE room.
> Also, (if this is the case) why bother having the check to the NOWHERE
> room?
It checks that there is an exit structure to the door and that the
exit does not lead to NOWHERE, because -1 (which is NOWHERE) can
be set to a room even when an exit is existant, and does have a
purpose in stock Circle. For instance, creating an exit where you
can do: "look east" but you can't move east.
--
Daniel Koepke
dkoepke@california.com
Forgive me father, for I am sin.
+-----------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://cspo.queensu.ca/~fletcher/Circle/list_faq.html |
+-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST