RO multireplace variables

Hi all,

I am just starting on chapter 3 of my game, which is where you start to get RO options, and I am getting a bit lost in a sea of possible variables. I’m wondering if there are clever ways of managing them that I haven’t thought of.

I have three possible ROs: Ferhan, Celyn, and Ellis. The PC can be asexual but not aromantic, aromantic but not asexual, romantic and sexual, asexual and aromantic but interested in intimate friendship, or not interested in any of this. For the first four of these, there are levels of intimacy ranging from ‘have told the game you are interested’ to ‘in some sort of committed relationship’ (for most of them, anyway).

So essentially I have three axes: who, what, and how intimate.

Obviously, if you are going off on your own with your person, I can just set those variables and get on with it. But you are on a ship with a bunch of other people, and all three ROs will frequently be present at the same time.

So I want a way to manage this for scenes where several people are present. For example, let’s say the four of you are hanging out in the wardroom. If you are romantically involved with Ellis, they might braid your hair. If you are sexually involved with Ferhan, they might wink at you. If you are platonically involved with Celyn, they might want to buttonhole you to talk about lobsters for hours.

But I am really struggling to get this information into just a few variables. Maybe it can’t be done.

So far, I am thinking of:

*intimate_with [no-one/ferhan/celyn/ellis]

*intimate_which [1 = not intimate; 2 = non-romantic sexual (not possible with Ellis); 3 = particular friends; 4 = non-sexual romantic (not possible with Ferhan); 5 = romantic and sexual relationship.]

*how_intimate [for how far along whichever intimacy track you are with your person.]

But this is going to involve a lot of *if / else.

Maybe I just need to have a different variable for each RO, and each type of relationship, and then just list every possibility separately. But that also seems like it will be chaos.

I don’t know. Maybe the quickest way to do this kind of thing is:

*if (intimate_who = "ferhan") and (intimate_which >1)
   Ferhan winks at you.
*elseif (intimate_who = "ellis") and (intimate_which >1)
   Ellis sits behind you and starts braiding your hair.
*elseif (intimate_who = "celyn") and (intimate_which >1)
   Celyn shows you a lobster.
*else
   Nothing to see here.

Then I suppose if I want just a quick line I can do:

@{intimate_with nothing happens|Ferhan claps you on the back.|Celyn gives you a distracted smile.|Ellis shyly puts ${eer} hand into yours.}

Which I suppose would work if I didn’t add an “intimate with” option until you were at least in an established something with one of them.

Anyway, I’ve spent the last hour getting myself into a muddle, so I’m putting it out to the hivemind!

6 Likes
Collapsible text because it's not really relevant to the topic at hand.

Don’t threaten me with a good time! (x

I had a similar situation when writing These Reluctant Years, where (assuming everyone joined the rebels) either main character can romance three possible people (or the other main character). Personally, I use a system that I think is similar to yours – I have a regular relationship status bar, but keep separate track of moments where a player has flirted or (otherwise expressed romantic interest in a character) and add it to their “romance threshold.” Different characters need different values to be willing to be with a player, so Mr. Smith might need you to show a lot of interest, but Ms. Jones might need a romance threshold value of 1. Both of them would need a high relationship (I usually make it 75 or so).

In this system, I usually only have to reference the player’s sexuality (aromantic, asexual, etc.), a character’s romance threshold, and/or make a “hey these people are now significant others” flag.

4 Likes

As someone with lots of romance variables there are three kinds I use, depending on what you need them for.

1: For the player. This is the status displayed on the stat sheet, and the purpose is to let the player know what’s up. As such, I often have things like herald_relationship “Oh no, he’s hot” and similar sentences for ease of display on the stat sheet.

2: For simple coding. This is for me, to decide it how the RO acts. As such I have essentially two flags. One if the RO is flirting (no matter the relationship) and once if they have kissed (no matter the relationship). The flags would be something like: herald_flirting and herald_kiss. This means I can have the RO flirt, be touchy, and kiss without having to refer every single relationship status. This can easily be done with multireplace if you prefer.

3: For complicated coding. This can be all the stats you need to decide when relationships move from one step to the other, and have all the other details you need in it. Since it won’t come up often, exactly how this is done matters less.

→ SO for you, instead of tracking all the descriptive sexual attraction variables, think of what you want to write in the game. Have the player make the choice. Are they okay with open flirting? Y/N. Are they okay with getting touched? Y/N. Are they okay with kissing? Y/N. You don’t even have to ask that openly, just set the flags when they appear in game. Do the player choose to kiss the RO? Then, set the RO_kiss to true, regardless of what orientation is displayed on the stat sheet. Then you can just check that variable when you want a cheeky little kiss in the text.

20 Likes

Thanks both, and sorry about the delayed response. I got in a bit of a flap about how to manage this, and ran away to eat hula hoops for a bit.

OK. This is what I am currently thinking.

  1. I create the following variables:
*create pc_wants 1
*comment 1 = not interested in this aspect of the game at all; 2 = this hasn't come up yet; 3 = just sex; 4 = intimate friendship, 5 = sex and romance; 6 = just romance
*create intimate_with 1
*comment 1 = not intimate with anyone, 2 = ferhan, 3 = celyn, 4 = ellis. This doesn't get set until you've had an actual conversation with the RO about what you both want.
*create intimacy_level 1
*comment This is a straightforward counter of how many intimate scenes you've had with someone. 1 = not intimate with anyone; 2 = had one intimate beat, 3 = had two intimate beats etc.
*create relationship_happy false
*create broke_up_with_ferhan false
*create broke_up_with_celyn false
*create broke_up_with_ellis false

  1. I create the following subroutine:
*label ro_opinions
*if rferhan <=33
    *set opferhan 1
*elseif rferhan <=66
    *set opferhan 2
*else
    *set opferhan 3
*if (intimate_with = 2) and (opferhan <3)
    *set relationship_happy false
    

*if rcelyn <=33
    *set opcelyn 1
*elseif rcelyn <=66
    *set opcelyn 2
*else
    *set opcelyn 3
*if (intimate_with = 3) and (opcelyn <3)
    *set relationship_happy false

*if rellis <=33
    *set opellis 1
*elseif rellis <=66
    *set opellis 2
*else
    *set opellis 3
*if (intimate_with = 4) and (opellis <3)
    *set relationship_happy false
*return
  1. I think I should now be able to do everything I want to from those four variables.

In a public scene, no-one is going to be snogging or having sex anyway, and degree of intimacy is likely to also be less relevant. So I can just do this:

*if intimate_with >1
   *if relationship_happy
      @{intimate_with whatever, this option can't be relevant|Ferhan winks at you|Celyn buttonholes you to talk about lobsters|Ellis shyly holds your hand}
   *else
      @{intimate_with this option is still irrelevant|Ferhan greets your look with a sardonically raised eyebrow|Celyn mumbles something about checking on ${cer} specimens and leaves|Ellis can barely even look at you}.

In a private scene, there is only one other person there. So I can do this (let’s assume you’re in a scene with Ferhan):

*if (pc_wants = 1)
   Jump to the plot relevant bit and skip this entire subplot.
*elseif (pc_wants = 2)
   This is the first time you are coming across the chance to set your intimacy preferences. Route to the relevant subroutine. (This could be fairly late in the game if you have pissed off all the ROs.) Then go back to the top of the scene.
*elseif (intimate_with >2) 
   You are in an intimate relationship with one of the others. Write multireplace options based on op_ferhan to reflect how this friendship is going. (You can only have one particular friend, but you can have as many close friends as you like.)
*elseif (intimate_with = 2) and (relationship_happy = true)
   You are in some kind of intimate relationship with Ferhan. Write scene with variants based on pc_wants, and flavour text based on intimacy_level
*elseif (intimate_with = 2) and (relationship_happy = false)
   Ferhan is mad at you. This scene will be a discussion about your recent decision making (will have to use temp variables for that), and you can either patch things up, or break up. If you break up:
   *set broke_up_with_ferhan true
   

What do you reckon? It’s still pretty involved, but I don’t think I can make it any simpler without losing nuance.

5 Likes

That…sounds…unhealthy.

1 Like

It’s no trouble!

I think you seem to have found a system that works for you. (:

1 Like

I think it looks good! What I’ve found is that I often change things up a bit once I’ve written a few scenes, so I would advise trying out this system and feeling out whether it’s intuitive, and don’t worry if you need to shuffle things around. Also, I often find I make this kind of thing complex at the start but actually I don’t necessarily need text for that many branches, and it can become simpler once I’ve got more of a sense of the characters and relationships in question.

But delicious!

4 Likes

Thanks both! OK, I’ll try to get off this forum and do some actual coding and see how it goes.

2 Likes