local forest_factor = 3
local RULE_AREA_GENERATORS = {
	categories = {
		city = {
			areas = {
				area_city = 1,
				area_village_sidewalk = 1,
				area_house = 3,
				area_library = 1,
				area_kitchen = 1,
				area_armory = 1,
				area_smithy = 1,
				area_wizards_tower = 1,
				area_alchemy_shop = 1,
				area_ranger_shop = 1,
			},
		},
		monster_city = {
			areas = {
				area_monster_city = 1,				
				area_monster_house = 5,		
				area_graveyard = 1,		
				area_necromancer_crypt = 1,
				area_insane_invoker_camp = 1,
			},
		},
		village = {
			areas = {
				area_village = 1,
				area_village_sidewalk = 1,
				area_house = 2,
				area_kitchen = 1,
				area_armory = 1,
				area_smithy = 1,
			},
		},
		graveyard = {
			areas = {
				area_graveyard = 1,
				area_forest_rotten = 3,
				area_forest_vile = 2,
				area_forest_dense = 1,
			},
		},
		vampire_crypt = {
			areas = {
				area_vampire_crypt = 1,
				area_forest_rotten = 3,
				area_forest_vile = 2,
				area_forest_dense = 1,
			},
		},
		necromancer_crypt = {
			areas = {
				area_necromancer_crypt = 1,
				area_forest_rotten = 3,
				area_forest_vile = 2,
				area_forest_dense = 1,
			},
		},
		merchant = {
			areas = {
				area_merchant_wagon = 1,
				area_plains = 3,
				area_plains_shrubbery = 1,
			},
		},
		possum_forest = {
			areas = {
				area_possum_den = 4,
				area_plains_shrubbery = 3*forest_factor,
				area_plains_rocky = 2*forest_factor,
				area_forest_light = 3*forest_factor,
				area_forest_dense = 1*forest_factor,
			},
		},
		bunny_forest = {
			areas = {
				area_bunny_den = 4,
				area_plains = 3*forest_factor,
				area_plains_shrubbery = 1*forest_factor,
				area_forest_light = 4*forest_factor,
			},
		},
		turtle_forest = {
			areas = {
				area_turtle_den = 4,
				area_plains = 3*forest_factor,
				area_plains_rocky = 4*forest_factor,
				area_forest_light = 1*forest_factor,
				area_forest_dense = 1*forest_factor,
			},
		},
		snake_forest = {
			areas = {
				area_snake_den = 4,
				area_plains_shrubbery = 2*forest_factor,
				area_forest_light = 3*forest_factor,
				area_forest_dense = 3*forest_factor,
			},
		},
		fox_forest = {
			areas = {
				area_fox_den = 4,
				area_plains_shrubbery = 1*forest_factor,
				area_forest_light = 2*forest_factor,
				area_forest_dense = 2*forest_factor,
				area_forest_old = 3*forest_factor,
			},
		},
		wolf_forest = {
			areas = {
				area_wolf_den = 4,
				area_forest_light = 2*forest_factor,
				area_forest_dense = 3*forest_factor,
				area_forest_old = 4*forest_factor,
			},
		},
		deer_forest = {
			areas = {
				area_deer_den = 4,
				area_forest_light = 3*forest_factor,
				area_forest_dense = 3*forest_factor,
				area_forest_old = 2*forest_factor,
			},
		},
		wolverine_forest = {
			areas = {
				area_wolverine_den = 4,				
				area_forest_dense = 3*forest_factor,
				area_forest_old = 2*forest_factor,
				area_forest_vile = 3*forest_factor,
			},
		},
		moose_forest = {
			areas = {
				area_moose_den = 4,				
				area_forest_dense = 5*forest_factor,
				area_forest_old = 5*forest_factor,
				area_forest_vile = 2*forest_factor,
			},
		},
		bear_forest = {
			areas = {
				area_bear_den = 4,
				area_plains_rocky = 4*forest_factor,
				area_forest_dense = 3*forest_factor,
				area_forest_old = 5*forest_factor,
			},
		},
		tiger_forest = {
			areas = {
				area_tiger_den = 4,
				area_plains = 3*forest_factor,
				area_plains_shrubbery = 4*forest_factor,
				area_plains_rocky = 2*forest_factor,
				area_forest_light = 2*forest_factor,
				area_forest_dense = 1*forest_factor,
			},
		},
		lion_forest = {
			areas = {
				area_lion_den = 4,
				area_plains = 3*forest_factor,
				area_plains_shrubbery = 2*forest_factor,
				area_plains_rocky = 4*forest_factor,
				area_forest_light = 1*forest_factor,
				area_forest_dense = 1*forest_factor,
			},
		},
		insane_ritual_camp = {
			areas = {
				area_insane_ritual_camp = 1,
				area_plains = 4*forest_factor,
				area_plains_shrubbery = 2*forest_factor,
			},
		},
		insane_warrior_camp = {
			areas = {
				area_insane_warrior_camp = 1,
				area_plains = 4*forest_factor,
				area_plains_rocky = 2*forest_factor,
			},
		},
		insane_invoker_camp = {
			areas = {
				area_insane_invoker_camp = 1,
				area_plains = 4*forest_factor,
				area_plains_shrubbery = 1*forest_factor,
				area_forest_old = 2*forest_factor,
			},
		},
		insane_breeder_camp = {
			areas = {
				area_insane_breeder_camp = 1,
				area_plains = 4*forest_factor,
				area_plains_shrubbery = 1*forest_factor,
				area_forest_light = 2*forest_factor,
			},
		},
	},
	generate = function(rules, def, level, index)
		return AreaGenerator:new(def, level, index)
	end,
}

return RULE_AREA_GENERATORS