I have just about given up. Somewhere along the line I must have
messed up something with flags because the !mob flag doesn't work in
rooms.
Other room flags work, so perhaps it's a problem with mob flags. But
the rest of the mob flags work and I haven't messed with mobact.c.
Something that may contribute to this problem is 128-bit flags which
I added a long time ago. I am stuck, please help.
in mobact.c:
/* Mob Movement */
if (!MOB_FLAGGED(ch, MOB_SENTINEL) && (GET_POS(ch) == POS_STANDING)
&&
((door = number(0, 18)) < NUM_OF_DIRS) && CAN_GO(ch, door) &&
(!ROOM_FLAGGED(EXIT(ch, door)->to_room, ROOM_NOMOB) ||
!ROOM_FLAGGED(EXIT(ch, door)->to_room, ROOM_DEATH)) &&
(!MOB_FLAGGED(ch, MOB_STAY_ZONE) ||
(world[EXIT(ch, door)->to_room].zone ==
world[ch->in_room].zone))) {
perform_move(ch, door, 1);
}
in utils.h:
#define Q_FIELD(x) ((int) (x) / 32)
#define Q_BIT(x) (1 << ((x) % 32))
#define IS_SET_AR(var, bit) ((var)[Q_FIELD(bit)] & Q_BIT(bit))
#define MOB_FLAGS(ch) ((ch)->char_specials.saved.act)
#define ROOM_FLAGS(loc) (world[(loc)].room_flags)
#define MOB_FLAGGED(ch, flag) (IS_NPC(ch) && IS_SET_AR(MOB_FLAGS(ch),
(flag)))
#define ROOM_FLAGGED(loc, flag) (IS_SET_AR(ROOM_FLAGS(loc), (flag)))
#define EXIT(ch, door) (world[(ch)->in_room].dir_option[door])
#define CAN_GO(ch, door) (EXIT(ch,door) && \
(EXIT(ch,door)->to_room != NOWHERE) && \
!IS_SET(EXIT(ch, door)->exit_info, EX_CLOSED))
Anybody know what might be causing this?
-Roger
***It's not a bug, it's unwanted code!***
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
+------------------------------------------------------------+
| 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