Sub lists can be a pain. I'm sure there's a better way to solve it this problem, but I think this gets the output your looking for. The aspirinPeople and ancientPeople work effectively the same, just to show the variation. If you called ancientPeople without selectOne it iterates through the list.
output [r = ruin.selectOne]
ruin [Ancient] [Aspiring]
Ancient Ancient graves portected by [ancientPeople.selectOne] Aspiring You come across an aspiring [aspiringPeople] ancientPeople mad dog sad jim
aspiringPeople {ninja turtle|greedy cleric}
