I think I figured out the crossover issue.
here's the fic I used if you want to tinker.
You'll need
add_category_when_multi_category: Crossover for this to work.
Code:
## Clumsy solution to the crossover situation in hierarchical character lists - create crossover-specific matches for specific characters first
## Thankfully you only need to do this for characters in crossovers.
## Also, make sure your categories/characters are standardized or the regex may break
characterlist=>^(Courier|Craig Boone|ED-E|Male Courier|Ulysses)=>Fallout.\1&&category==Crossover
characterlist=>^(David Anderson|EDI|Female Shepard|Garrus Vakarian)=>Mass Effect.\1&&category==Crossover
## Then add a negative lookaround in category_LIST for "Crossover"
## It's sorted so keep that in mind whether to use a negative lookahead/behind.
## Only need to add a lookaround if the category has crossovers.
characterlist=>^(.*)$=>Fallout.\1&&category_LIST=~(?<!Crossover).*Fallout
characterlist=>^(.*)$=>Mass Effect.\1&&category_LIST=~(?<!Crossover).*(Mass Effect: Andromeda|Mass Effect Trilogy)
Unfortunately...it breaks non-crossovers (no prefixes). Not sure what I'm doing wrong here.
EDIT: I had category_list instead of category_LIST. It's case-sensitive. I fixed it and now it works.