Ok, I actually had a rather simple idea to deal with your request.
I think you can bound enemy encounters to the terrain tags.
e.g. terrain 1: woods enemies;
terrain 2: cave enemies;
...
terrain 7: demons
I have actually made a script which can extend terrain numbers up to the actual tile number of a tileset, you can find it here:
Extended Terrain Tags(this means: more variety in enemy groups)
If you need a script to do this, I could make it in no time...
Just ask and you'll be given that

Hope this can help.
Jens
EDIT:Here's the script...
Tell me if it works properly.
CODE
#------------------------------------------------------------------------------
# ** Jens of Zanicuud's world map encounters script
# Credit needed, customize it as you like.
#------------------------------------------------------------------------------
WORLD_MAPS_ID = [10,20] #Id of the world maps
TROOP_LIST = {
1 => [1,2,3], #terrain 1 => associated troops id
2 => [3,7,12], #terrain 2 => associated troops id
}
class Game_Map
def encounter_list
#check map id
if !WORLD_MAPS_ID.include?(@map_id)
return @map.encounter_list
else
#check player terrain
terrain = $game_player.terrain_tag
#if player terrain is in the hash, then load the correct list
if TROOP_LIST.include?(terrain)
return TROOP_LIST[terrain]
else
#else, return an empty vector
return []
end
end
end
end
Now, a little explaination.
1.
WORLD_MAPS_ID is the array which contains the id of any of your world maps.
2.
TROOP_LIST is the hash which do what you need. It must be filled like this:
TROOP_LIST = {
terrain_tag 1 => [troop id 1, troop id 2, troop id 3...],
terrain_tag 2 => [troop id 1, troop id 2, troop id 3...],
}
e.g.TROOP_LIST = {
5 => [1,5,8],
2 => [2,10],
}
means that on terrain 5 you can find only troops number 1, 5 and 8, while in terrain 2 you can find troops number 2 and 10.
Number 0 is reserved to non_encounter tiles...
Ask for troubleshooting anytime.
Jens
This post has been edited by Jens of Zanicuud: Jan 5 2012, 10:38 AM