Ah, I feel your pain, I also had thousands of building-conditioned capability and recruitment lines in FATW. It's been a few years, but I think I remember enough to be able to help.
Let me introduce you to the miracle that is building_factions. Try the following:
For capability lines:
trade_base_income_bonus bonus 1 requires factions { empire_east, }
and not building_factions { slave, } and building_present_min_level temple_equestrian cavalry_barracks
The negative condition makes the entire line disappear from the building info scroll. Moreover, the 'slave' faction is never actually the building-faction of any building, iirc, (because all rebel armies/settlements have a sub_faction, which is what the game reads as the building_faction), so this doesn't stop rebels from getting the effect either.
So, that was for disappearing active capability lines from your buildings. You can also do the opposite, which is having 'dummy' capability lines, which are visible on the scroll but don't actually do anything.
trade_base_income_bonus bonus 1 requires factions { empire_east, }
and building_factions { slave, }
The line is visible, but since 'slave' never builds anything, the condition is never true and the effect never applies.
When I want to have a building capability with a conditional that would cause a CTD or look ugly on the info-scroll, but still want the player to have an idea of what a building does, I combine a 'dummy' line with a 'disappeared' one. So, the player knows a building is supposed to give a particular effect (under certain conditions, which I hint at in the building description or in some other building, etc).
For instance, below, the first 'trade bonus' line is a 'dummy' (visible, but does nothing) and the second is 'disappeared' (invisible, but actually does all the work): (*in FATW, 'slavs' is unplayable, so I use that instead of 'slave', for complicated reasons)
For recruitment lines:
Pretty much the same concept. Add 'and not building_factions { slave, }' to your recruitment lines, and they're gone from the info-scroll. Since they are not visible, they are not click-able, so now you can add building conditions to them. Then, if you want, combine each 'disappeared' line with its respective 'dummy' line, with 'and building_factions { slave, }', to let the player know what a building is supposed to do.
Example:
Code:
recruit "harondor sword" 0 requires factions { berbers, } and hidden_resource harad and hidden_resource rk and not hidden_resource umbar and not building_factions { slavs, } ; dummy
recruit "harondor sword" 0 requires factions { berbers, } and hidden_resource harad and hidden_resource rk and not hidden_resource umbar and not building_present_min_level policy_building policy_fin and not building_factions { slavs, } ; invisible, but active and with building conditional
Btw, I think that it's ok to have *many* recruitment lines in the same building, as long as they i) do not co-exist with building-effect lines (except with religious_effect lines, those are ok with recruitment lines), and ii) they are not both visible/click-able and have building conditions at the same time.
If you want to have a complex building system that looks perfectly streamlined to the player, you might want to take a look at FATW's EDB, it has various other mechanics and tricks that might come in handy.
For instance, you can also use dummy buildings in order to prettify your building-conditioned effect lines:
Code:
hippodrome requires factions { carthaginian, eastern, nomad, roman, hun, barbarian, } and hidden_resource nofort
{
capability
{
; EFFECTS
law_bonus bonus 4 requires factions { sarmatians, } and building_factions { sarmatians, } and not building_present_min_level hinterland_roads road_dummy1 and not building_present_min_level hinterland_mithras temple_of_mithras_temple
law_bonus bonus 2 requires factions { sarmatians, } and building_factions { sarmatians, } and not building_present_min_level hinterland_roads road_dummy2 and building_present_min_level hinterland_mithras temple_of_mithras_temple
population_growth_bonus bonus 8 requires factions { sarmatians, } and building_factions { sarmatians, } and not building_present_min_level hinterland_roads road_dummy1 and not building_present_min_level hinterland_mithras temple_of_mithras_temple
population_growth_bonus bonus 8 requires factions { sarmatians, } and building_factions { sarmatians, } and not building_present_min_level hinterland_roads road_dummy2 and building_present_min_level hinterland_mithras temple_of_mithras_temple
taxable_income_bonus bonus 20 requires factions { sarmatians, } and building_factions { sarmatians, } and not building_present_min_level hinterland_roads road_dummy1 and not building_present_min_level hinterland_mithras temple_of_mithras_temple
taxable_income_bonus bonus 5 requires factions { sarmatians, } and building_factions { sarmatians, } and not building_present_min_level hinterland_roads road_dummy2 and building_present_min_level hinterland_mithras temple_of_mithras_temple
trade_base_income_bonus bonus 1 requires factions { sarmatians, } and building_factions { sarmatians, } and not building_present_min_level hinterland_roads road_dummy1 and not building_present_min_level hinterland_mithras temple_of_mithras_temple
...
}
export_buildings:
Code:
¬--------------
{road_dummy1} (non-mannish population)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
{road_dummy1_desc} Dummy1
{road_dummy1_desc_short} Dummy1
¬--------------
{road_dummy2} (mannish population)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
{road_dummy2_desc} Dummy2
{road_dummy2_desc_short} Dummy2
¬--------------
The dummy building never exists, it simply displays the relevant text (e.g. "(mannish population)" for the player AND, importantly, the multiple new-line characters push the actual condition-building (temple_of_mithras_temple) OFF the building scroll, because otherwise this effect description would spill into/overlap with the following effect, like in your first image.
Hope that helps.