For making relationships only show up if you’ve met the character, you can use a simple conditional, unique to the character (*if met_alexi) or based on a variable already used for something related (*if chapter > 2; *if completed_training)
So, something like:
*if (met_brother)
Your brother is more responsible than you'd guess from that shabby hat. You get along
*if (rel_brother < 35)
poorly.
*if ((rel_brother => 35) or (rel_brother =< 65)
well.
*if (rel_brother > 65)
very well.
Some other ideas, and multireplace
You can get more complicated than a boolean for character status, to account for more than whether or not you’ve met them. I’ve got a couple characters that might be dead, trying to kill you, or revealed to be something different than originally thought. You could do this with a text variable (*if character_status = “dead”), or, if you want to get fancier, use a number (Write down what the different values mean!), and take advantage of multireplace. Then, you can write sentences like:
Alexi @{alexi_status |is|is|was} your traveling companion.
alexi_status 1 means you haven’t met yet, so there’s no word there. Statuses 2 and 3 both have Alexi alive, but with some variation that’s not being used here (maybe you’re in a romantic relationship, or he’s missing). Status 4 means Alexi’s dead, so the verb changes to past tense.
WARNING: don’t try to convert a 1-100 relationship value straight to multireplace (i.e. @{(rel_alexi/3) enemy|acquaintance|friend}). The math is way more complicated than it looks to make them even. Just make another variable:
*if (rel_brother < 33)
*set nrel_brother 1
*if (rel_brother > 66)
*set nrel_brother 3
*if ((rel_brother => 33) or (rel_brother =<66)
*set nrel_brother 2
My stat screen looks something like this:
*if (brother_status > 1)
Your brother is @{brother_type busy with something in the middle of the night|kind of a jerk|more responsible than you'd guess from that shabby hat|a little goofy, but a good friend}. You get along @{nrel_brother poorly|pretty well|very well}.