You can have unlimited choices of themes by using this logic:
ary = ["an item", "another item", "moar itmz"]
num = rand(ary.size) + 1
get = ary[num]
str = "Audio/BGM/" + get
then the play music thing or whatever
You can edit the stuff in-game though (I know you know how to do so, Pacman), changing it from an instance variable to a local would make it impossible to change in-game though.
I actually don't. Because as far as I can see, you can't.
1. There's no way to access the variables from outside the instance.
2. The variables are redefined as the values set in the module every time the method is called.
3. Editing modules in-game is silly (this isn't really a setback, more of an observation).
I would do this by storing the values in Game_System or another like class (such that it is accessible at any given time during the game), and attr_accessor the variables. That way users can use simple script calls like:
$game_system.bgm_volume = 50
or super-complex ones like:
$game_system.battle_themes.reject! {|i|i.length >= 7}; $game_system.battle_themes.compact
even though that wouldn't fit in the box
Don't take any of this negatively. These are just ideas.