[I7] Either/Or property not behaving as expected

This is my first attempt at anything since the new build, and it’s been about a year since I last worked with Inform, so I’m a good bit rusty. I have an either/or property which I created that is behaving oddly, and I’m sure that I’m missing something really simple, but I just can’t see what. I can’t figure out why the room, Zombie by the Cranberries, is being considered as vocal rather than instrumental when Zombie is a songroom, and songrooms are usually instrumental. My other songroom properties are working perfectly thus far. Any help would be greatly appreciated.

[code]“Musical Journey” by Kelsey Norris

A songroom is a kind of room.
There is a songroom called Zombie by the Cranberries.
A songroom has some text called lyrics. A songroom has some text called illustration.

A songroom is either commencing, continuing, or finished (this is its current time property). A songroom is usually commencing.
A songroom is either normal, once varied, twice varied, or thrice varied (this is its current variation property). A songroom is usually normal.
A songroom is either vocal or instrumental. A songroom is usually instrumental.

To say continue song:
now the location is continuing.
To say finish song:
now the location is finished.
To say variation one:
now the location is once varied.
To say variation two:
now the location is twice varied.
To say variation three:
now the location is thrice varied.
To say vocals:
now the location is vocal.
To say intrumental:
now the location is instrumental.

The lyrics of Zombie is “[one of][continue song]Another head hangs lowly, child is slowly taken. And the violence caused such silence, who are we mistaken…[or]…But you see, it’s not me. It’s not my family. In your head, in your head, they are fighting…[or]…With their tanks, and their bombs, and their bombs, and their guns. In your head, in your head, they are crying…[or]…In your head… In your head… Zombie… Zombie… Zombie, eh, eh…[or]…What’s in your head… In your head… Zombie… Zombie… Zombie, eh, eh, eh, oh…[or]…Doo doo doo doo… Doo doo doo doo… Doo doo doo doo… Doo doo doo doo…[or]…Another mother’s breaking heart is taking over. When the violence causes silence, we must be mistaken…[or]…It’s the same old theme since nineteen-sixteen. In your head, in your head, they’re still fighting…[or]…With their tanks, and their bombs, and their bombs, and their guns. In your head, in your head, they are dying…[or]…In your head… In your head… Zombie… Zombie… Zombie, eh, eh…[or]…What’s in your head… In your head… Zombie… Zombie… Zombie, eh, eh, eh, oh, oh, oh, oh, oh, oh, oh, hey, ah, ya, ya-a.[finish song][cycling]”.

The illustration of Zombie is “[Zombie-illustration]”.

To say Zombie-illustration:
say “The song is currently [current time of Zombie], [if Zombie is instrumental]instrumental[otherwise]vocal[end if], and [current variation of Zombie].”;
if Zombie is not finished:
if Zombie is commencing and Zombie is instrumental:
say “The song has just begun. You listen intently to a powerful drumline and a captivating guitar rift[vocals].”;
otherwise:
say “[if Zombie is commencing]You hear a Celtic woman’s voice[otherwise if Zombie is continuing]The Celtic woman continues to sing[end if]: [paragraph break][italic type]’[lyrics of Zombie]’[roman type][paragraph break]”;
otherwise:
say “The song has ended.”

Report listening to a songroom (this is the standard musical listening report rule):
if the illustration of the location is not “”:
say “[illustration of the location]” instead;
otherwise:
say “You simply relax and enjoy the music.” instead.

Test me with “listen / g / g / g / g / g / g / g / g / g / g / g”.[/code]

Well, I’ve figured out that if I get rid of the [vocals] say phrase in:

if Zombie is commencing and Zombie is instrumental: say "The song has just begun. You listen intently to a powerful drumline and a captivating guitar rift[vocals].";

Then Zombie is instrumental like I wanted… but shouldn’t that phrase only be reached after listening the first time and having the text under that if statement printed?

Try changing the line

if the illustration of the location is not "":

to

if the illustration of the location is not empty:

When you compare to “”, the system runs through all the substitutions to see if the result comes out as the empty string. The way you’ve got it rigged, running through the substitutions causes the location’s current time property to change.

I never knew that! Thank you, Zarf, that worked like a charm.