Here's an update for drowning and Underwater rooms!
Give credit to me however you see fit.
Questions or comments to ryouga@jessi.indstate.edu.

in merc.h:
put this with the other pulses.

#define PULSE_UNDERWATER           (20 * PULSE_PER_SECOND)

and this with the other room flags.

#define ROOM_UNDER_WATER	(##)  ## is any free value.

in update.c:

stick this in with the other update declarations.

void    underwater_update    args( ( void ) );

add this somewhere.

void underwater_update( void )
{
   CHAR_DATA *ch;
   CHAR_DATA *ch_next;

   for ( ch = char_list; ch != NULL; ch = ch_next)
   {
    ch_next = ch->next;
    
    if (!IS_NPC(ch)
    && !IS_IMMORTAL(ch)
    && IS_SET(ch->in_room->room_flags, ROOM_UNDER_WATER) )
    {
     
     if ( ch->hit > 20)
     {
      ch->position = POS_RESTING;
       ch->hit /= 2;
      send_to_char("You're drowning!!!\n\r", ch);
     }
     else
     {
      ch->hit = 1;
      raw_kill(ch);
      send_to_char("You are DEAD!!\n\r", ch );
     }
    }
   }
}
 
put this in update_handler.

static  int	pulse_underwater;


if ( --pulse_underwater    <= 0 )
    {
        pulse_underwater     = PULSE_UNDERWATER;
        underwater_update    ( );
    }

in act_move.c:
put this in move_char.

     if (( in_room->room_flags == ROOM_UNDER_WATER
        ||    to_room->room_flags == ROOM_UNDER_WATER )
        &&   (!IS_AFFECTED(ch,AFF_SWIM) && !IS_IMMORTAL(ch) )
          {
           send_to_char("You can't swim!!\n\r", ch);
           return;
          }

