Hello, i'd like to get some information about whether or not Drupal would fit the bill for what I'm looking for in a CMS. I currently administer a Frankenstien-style site full of old CGI and PHP scripts, and I'm looking to upgrade to a CMS that can help me out with the following web site features:

1. Good, fast, stable forums. Our forums always get a good workout. I need to be able to restrict access to some forums according to the member's group, and have multiple groups able to view one forum. I need to hide some forums from users who do not have permission to access them, create new forums quickly and on demand. I would need to give administrator access to various people in some forums and not others.

2. Roster management. I need to be able to assign several attributes to registered members of the web site such as "guild member", "rank", "class", "race". I'd like to be able to list a portion of the site members in a roster format, with links to view a profile of that member.

3. Library/Story management. I need registered members of the web site to be able to submit Stories that, pending approval by a Story Admin, become listed in a Library page of sorts. The member would also have a list of the stories that he has written in his profile.

4. Profile management. I need registered members of the web site to have a profile that lists normal contact information for registered members, and in addition contains information that I mentioned in the "roster" section (race, class, etc). The profile would also have a photo associated with the member, and a list of the stories a member has published in the library section. In addition, the profile would also display a simple list of honors and awards earned.

I'd like to also have registered members able to post Photos in a photo gallery, submit News, and upload simple files, but in a skimming of this site I already know that I can do that with Drupal. I've looked at other CMSses such as all the *-Nuke's, but I'm wary of their bouhaha of a dev process. Can Drupal help me?