For the record, the reason the status wasn’t changing when you used this code:
*choice
#yay
*set love_porter true
*goto abc
#hi
*set porter_rel +50
*goto abc
is because your *if statements weren’t checking the conditions and applying the changes.
To make it work, you’d have to insert your *if statements like this:
*choice
#yay
*set love_porter true
*if (porter_rel < 25)
*set porter "enemy"
*if (porter_rel >= 25) and (porter_rel < 50)
*set porter "associate"
*if (porter_rel >= 50) and (porter_rel < 75)
*set porter "friend"
*if porter_rel >= 75
*set porter "best friend"
*if (love_porter = true)
*set porter "lover"
*goto abc
#hi
*set porter_rel +50
*if (porter_rel < 25)
*set porter "enemy"
*if (porter_rel >= 25) and (porter_rel < 50)
*set porter "associate"
*if (porter_rel >= 50) and (porter_rel < 75)
*set porter "friend"
*if porter_rel >= 75
*set porter "best friend"
*if (love_porter = true)
*set porter "lover"
*goto abc
With those lines of code inserted in those particular places, the game now knows to check the conditions of Porter’s relationship and apply changes as needed.
However…
Do you see how constantly using that particular line of code could become tedious?
Since you’re gonna be using that code over and over again, it’s better to create a *gosub routine that will execute the scripting in the labeled lines of coding.
That way, you won’t have to duplicate those *if statements over and over, and it’s easier to edit the code should you ever want to add/remove/adjust anything in that particular section of code.
This is how your code would look with a *gosub:
*choice
#yay
*set love_porter true
*gosub porter_status
*goto abc
#hi
*set porter_rel +50
*gosub porter_status
*goto abc
Much, much simpler, is it not?
You’re very welcome.
And yes, typically, the more complex your game is/more characters your game has = More Coding.
Much More Coding.