This goes in limits.c in the point_update function.
Code:
    /* Drowning effect for underwater room per Bramage */
	  if (IN_ROOM(i) != NOWHERE && world[IN_ROOM(i)].sector_type == SECT_UNDERWATER) {
		  if (AFF_FLAGGED(i, AFF_BREATHEWATER)) {
              send_to_char(i, "\tcyou are able to breathe underwater.\tn\r\n");
	      } if (GET_LEVEL(i) >= LVL_IMMORT) {
			  send_to_char(i, "\r\n");
		  } else {
        // Roll CON check first
        if (rand_number(1, 25) <= GET_CON(i)) {
            // Success - take half damage
            int dam = rand_number(10, 75) / 2;
            if (dam > 0) {
                damage(i, i, dam, TYPE_UNDEFINED);
                send_to_char(i, "Damage: %d!\r\n", dam);
                send_to_char(i, "You hold your breath barely, lessening the strain!\r\n");
            }
        } else {
            // Failure - take full damage
            int dam = damage(i, i, rand_number(10, 75), TYPE_UNDEFINED);
            send_to_char(i, "\tRDamage:  %d!\tn\r\n", dam);
            GET_MOVE(i) = MAX(0, (GET_MOVE(i) - (rand_number(5, 50))));
            if (dam == -1) {
                continue; /* Oops, they died */
            }
            send_to_char(i, "\tRYou choke and struggle to breathe underwater!\tn\r\n");
        }
    }
}
 
Not sure of the number of brackets, if I included all or not enough.
I also added spell_breathewater and aff_breathewater to make this all go together.