diff -BbuprN -x '*.0' srcbak/act.movement.c src/act.movement.c --- srcbak/act.movement.c 2004-09-27 12:48:23.000000000 -0400 +++ src/act.movement.c 2004-09-27 12:22:14.000000000 -0400 @@ -46,6 +46,32 @@ ACMD(do_sleep); ACMD(do_wake); ACMD(do_follow); +void current_update(void) +{ +struct char_data *i, *next_char; +char buf[MAX_STRING_LENGTH]; +int door =0; + + + /* characters */ + for (i = character_list; i; i = next_char) { + next_char = i->next; + + if ((GET_POS(i) == POS_STANDING) && ROOM_FLAGGED(IN_ROOM(i), ROOM_CURRENT) && + ((door = rand_number(0, 18)) < NUM_OF_DIRS) && CAN_GO(i, door) && + !FIGHTING(i) && !IS_NPC(i) && (SECT(IN_ROOM(i)) == SECT_WATER_NOSWIM)) { + snprintf(buf, sizeof(buf),"The strong current carries you %s!\r\n", + dirs[door]); + send_to_char(i, buf); + snprintf(buf, sizeof(buf), "$n is taken %s by the rough current!", + dirs[door]); + act(buf, FALSE, i, 0, 0, TO_NOTVICT); + perform_move(i, door, 1); + } + } +} + + /* simple function to determine if char can walk on water */ int has_boat(struct char_data *ch) diff -BbuprN -x '*.0' srcbak/comm.c src/comm.c --- srcbak/comm.c 2004-09-27 12:48:23.000000000 -0400 +++ src/comm.c 2004-09-27 12:23:17.000000000 -0400 @@ -1029,6 +1029,9 @@ void heartbeat(int heart_pulse) if (!(heart_pulse % PULSE_TIMESAVE)) save_mud_time(&time_info); + if (!(heart_pulse % PULSE_CURRENT)) + current_update(); + /* Every pulse! Don't want them to stink the place up... */ extract_pending_chars(); } diff -BbuprN -x '*.0' srcbak/db.h src/db.h --- srcbak/db.h 2004-09-27 12:48:23.000000000 -0400 +++ src/db.h 2004-09-27 12:21:52.000000000 -0400 @@ -151,6 +151,7 @@ void reset_char(struct char_data *ch); void free_char(struct char_data *ch); void save_player_index(void); long get_ptable_by_name(const char *name); +void current_update(void); struct obj_data *create_obj(void); void clear_object(struct obj_data *obj); diff -BbuprN -x '*.0' srcbak/oasis.h src/oasis.h --- srcbak/oasis.h 2004-09-27 12:48:23.000000000 -0400 +++ src/oasis.h 2004-09-27 12:24:47.000000000 -0400 @@ -31,7 +31,7 @@ * Macros, defines, structs and globals for the OLC suite. You will need * to adjust these numbers if you ever add more. */ -#define NUM_ROOM_FLAGS 18 +#define NUM_ROOM_FLAGS 19 #define NUM_ROOM_SECTORS 10 #define NUM_MOB_FLAGS 19 diff -BbuprN -x '*.0' srcbak/structs.h src/structs.h --- srcbak/structs.h 2004-09-27 12:48:23.000000000 -0400 +++ src/structs.h 2004-09-27 12:24:27.000000000 -0400 @@ -101,6 +101,7 @@ #define ROOM_BFS_MARK 15 /* (R) breath-first srch mrk */ #define ROOM_VEHICLE 16 /* Requires a vehicle to pass */ #define ROOM_UNDERGROUND 17 /* Room is below ground */ +#define ROOM_CURRENT 18 /* Exit info: used in room_data.dir_option.exit_info */ @@ -661,6 +662,7 @@ #define PULSE_SANITY (30 RL_SEC) #define PULSE_USAGE (5 * 60 RL_SEC) /* 5 mins */ #define PULSE_TIMESAVE (30 * 60 RL_SEC) /* should be >= SECS_PER_MUD_HOUR */ +#define PULSE_CURRENT (10 RL_SEC) /* Variables for the output buffering system */ #define MAX_SOCK_BUF (12 * 1024) /* Size of kernel's sock buf */