Entering room 40 from 72 seems to set the flag. Entering room 72 from somewhere other than 45 or 90 seems to clear it. You should be able to search for Bset(0) and Bclear(0) and try to follow the logic? Can you get to room 45 after going from 40->72, and then not going back to 72?
No, it's not possible to go back to room 72 from room 40 again or anywhere else except room 90 (sewer room). Strange. It's probably impossible to trigger then. But I still don't understand why the conditional statement was created to begin with. What is the purpose of setting bit flag 0? I'll do some more experimenting.
EDIT: Ahhh...you can't physically go to room 72 from room 45 but when you take the ship back down from room 535 it temporarily switches rooms to room 72 (the manhole cover view) to show the ship coming down and landing and then switches back to room 45 to show Roger get out and run down to room 60 (beginning of the game). That's where the flag is cleared.The names are given default names depending on how the variables are used, so it's a best guess. The decompiler has functionality to rename things manually and then future decompilations will pick the new namesup.
What do you mean "not when they're declared"?
I apologize, I'm mixing up programming terminology. I probably meant "when they're
defined". As in, right at the beginning of the Main script along with all the other globals.
EDIT: I'm sorry! I was mistaken! I just realized I was reading the nested if statements wrong the whole time. It's not the Btest check at all that determines whether the message prints or not (stupid mistake). That is used probably to determine if the ship is visible or not and what the verb actions do (which explains why you can't get back to room 72 from room 40 because the ship must be there until you fly back down from the landing bay, which then flies back when you get out on the streets again). It's rather the:
(if (not script)
proc0_2()
(send global2:setScript(egoHides))
)(else
Print("You're starting to show your age.")
)
...block. It's checking "if (not script)" what is this doing exactly? I can't find where script is defined. I can see it's probably a global thing, but I'm having trouble identifying what its value would be in this scenario. I'm guessing it's checking whether there are any other scripts running in the room or not. I don't know how that would be possible or not in this room, though...