Confused about why an error is coming up

So, I keep coming up with this error:
Line 612: no selectible options.
Now, in this case, this line is the title: react_answers.

Here is a snippet for you to run to perhaps understand this better:

*label refusal2


"Twice, you have refused." ${t_name} says: "I shall give you one final chance. Drink the draft that shall deal with this, please."
*page_break After thinking about that for a few seconds, I answer with:
*goto choose_answer
*label choose_answer
*temp react_answer1 false
*temp react_answer2 false
*choice
	*hide_reuse #"Apart from the fact that if I don't, you say you'll ram it down my throat." I say: "why?"
		*set mind %+10
		*set heart %-10
		*set react_answer1 true
		*set stubborn %+10
		*set easyGoing %-10
		*set t_relationship +1
		*gosub_scene highest_relationship
		"It shall allow us to asertain the trooth of your words in regards to the past mission, in a fassion that can not be disputed." ${t_name} says while sounding clearly annoyed, at least to me, but still trying to keep ${t_their} voice in check regardless: "and as such, this shall assist both us, and you in going forward."


		"That makese sence." I say before opening my mouth once more:
		*if ((react_answer1 =true) and (react_answer2 =true))
			*goto react_answers
		*else
			*goto choose_answer
	*hide_reuse #"what exactly is in it?" I ask.
		*set heart %+10
		*set mind %-10
		*set react_answer2 true
		*set stubborn %+10
		*set easyGoing %-10
		*set t_relationship +1
		*gosub_scene highest_relationship
		*set d_relationship +3
		*gosub_scene highest_relationship
		"It contains water as a base." ${t_name} says before: "as well as several drops, though mutated and reforged, of my blood."


		*page_break Ok, how the fuck to I respond to that?"
		"As your face causes me to believe." ${t_name} says: "that this requires substancial elaboration, I shall do such. As such, let us simply say that I have the ability to mutate my blood into several functions, with one of said being, the ability to tell trooth from lies when within a host body for a limited amount of time."
		I consider this too for a while, before opening my mouth once again:
		*if ((react_answer1 =true) and (react_answer2 =true))
			*goto react_answers
		*else
			*goto choose_answer
*label react_answers
*choice
	#"Ok." I say: "I'll drink it, just wanted to know, well, that."
		*set easyGoing %+10
		*set stubborn %-10
		*set friendly %+10
		*set stoic %-10
		*set t_relationship +2
		*gosub_scene highest_relationship
		"As you were aware of the first, as in why you sohuld drink the draft, and refused regardless." ${t_name} says: "I can only assume that you refir to the second question, as in what the draft was made of, which brimgs me to my own question, with that being: "why did you not simply request that information to begin with, instead of refusing twoice?"
		*page_break that's, actually a very good question, and I have no answer for the small ${t_person}.
		"I." I say, slowly: "don't have an answer for you, ${t_name}."


		"As you say." ${t_name} says, and nothing more, to which I don't reply either.
		*goto judgement
	#"Still not drinking that." I say: "no offence, but I don't want anything with your blood in it, altered or not. That shits usually gets someone mutated into a horrible zomby, and right now, I'm the expendable one in this situation."
		*set mind %+10
		*set heart %-10
		*set genuine %+10
		*set sarcastic %-10
		*set t_relationship +1
		*gosub_scene highest_relationship
		*goto refusal3

So, yeah. I hope that someone can assist, as I don’t know how to fix this. I had the choices in choose_answer with a bunch of *elseifs, but when I first started running into the error, I tried to change it to see if it helped.
Anyway, I hope that you all have a good rest of your week, and, yeah.

I assume it has something to do with the fact that all your options seem to, unless I read wrong, be using *hide_reuse in the first *choice.

1 Like

You do not have a sure-fire way out of the choices in the first choice-set and the test can get stuck into a dead end.

As the wiki says:

2 Likes

To expand on the above point, there is actually no way to escape from the first choice at all.

One thing you may not be aware of is that if you run a *temp command more than once, you’ll actually re-initialize the temp variable at its starting value. Because you’ve put your two *temp lines right below the *label choose_answer line, you’re also resetting your temps to false each time, which means they will never both be true, and the *goto command that takes you to the next choice never triggers.

If you want your temps to persist along with any changes you make, you have to place them above any labels you might go back to, so the *temp commands won’t run again.

4 Likes

What text editor do you use? It could also be that by chance.

I put in an exit choice, what I was hoping to have happen was that I choose the first two, and then three extra choices pop up, but I guess that’s not how it works. Oh well, as far as dialogue goes, I probably needed an exit choice anyway.
I got confused when the temp variables did not trigger, then went back and saw the comment about if they are set up in the same label as the loop starts then they become false again, I do that, as if I set them up, say above, I keep getting an error about the temporary variable not being recognized, but that seems to have sorted itself out.
Also, generally speaking, I use notepad plus plus, although I will pop the scene file into a word document if I need to spell, check it after I’ve done everything else.

You can definitely do that, you just need to do it a bit differently. I’d give you an example, but I don’t have time for it right now, maybe someone else can help?

If you put all *temp variables at the top of the scene, before any of your other code, it can help to keep track of them. It also makes sure they don’t interfere with your code.

Temps won’t be recognized if you’re using *gosub_scene to go to a different scene, because the whole thing with *temp is that it works only in a single scene. If you want a variable to work both in your main scene and in e.g. highest_relationship.txt, you need to *create it in startup.txt (and again, it’s good to *create all those variables at the top of the file) rather than *temp it.

If you want to have options start appearing after several others have already been read, I’d suggest doing it within a single choice block, and use a numeric variable rather than multiple Booleans. Here’s a version of your example with just the bare bones of what I’m suggesting:

*temp react_answer 0

[...]

*label refusal2
"Twice, you have refused." ${t_name} says: "I shall give you one final chance. Drink the draft that shall deal with this, please."

After thinking about that for a few seconds, I answer with:
*label choose_answer
*choice
    *hide_reuse #"Apart from the fact that if I don't, you say you'll ram it down my throat," I say: "why?"
        *set react_answer +1
        *goto choose_answer
    *hide_reuse #"what exactly is in it?" I ask.
        *set react_answer +1
        *goto choose_answer
    *if react_answer > 1
        #"Ok." I say: "I'll drink it, just wanted to know, well, that."
            *goto refusal3
    *if react_answer > 1
        #"Still not drinking that." I say: "no offence, but I don't want anything with your blood in it, altered or not. That shits usually gets someone mutated into a horrible zomby, and right now, I'm the expendable one in this situation."
            *goto refusal3

This example might still need an exit choice, since all the #Options are conditional or might disappear after you loop back. This code would never crash on an actual readthrough, because by the time you’ve looped through the first two choices, the second two will appear and take you out of the choice block. But the autotesters might not parse that fact, and still might demand at least one choice that is clearly available to all players.

It sounds like you already wrote an exit choice you were happy with, so go with that. But it’s possible to use multireplace to have a single exit choice (going to *label judgement) with the wording of the choice varying based on whether you’ve chosen those first two or not:

	#"Ok." I say: "I'll drink @{(react_answer > 1) it, just wanted to know, well, that."|it."}
  		*goto judgement

Doing it this way will definitely pass the tester programs. It would let you either skip the questions (and get a simple “I’ll drink it” in the choice) or ask the questions and get a option that includes “just wanted to know”.

Finally, a couple of general formatting and style suggestions. Putting more than, say, five or six words in your *page_break caption will make a huge Next button, and having really long #Option text will similarly pop your choice into a bloated box over multiple lines. Both of those look unprofessional in the actual CoG UI, especially for people reading on a mobile device, and will make reading your game more of a chore for many of your readers.

I’d also suggest never following a *page_break (with or without caption text) with an immediate *choice if you can help it. Always make sure the reader has at least a bit of game text at the head of a *choice. It looks better and serves as a reminder of the context of what they’re choosing.

1 Like