Please use the toolbar’s Preformatted Text option when supplying a code example, it makes then easier to read and cut-n-paste.
warning: The String values (like
“passage1”) within your code example are delimited with invalid typographical (curly) double quotes, when they should be delimited with either standard single or double quotes (eg.
'passage' or "passage"). I don’t know if the typographical (curly) double quotes are a result of the way you added the example to your question (without using the Preformatted Text option) or in your actual code of your Twine project, if the later then you will need to replace them with standard ones.
There are three issues with your code example:
(else:) macro call is malformed, the associated hook has been place where a macro argument would appear if that specific macro supported such.
(go-to:) macro within your (else:) macro’s associated hook is missing a colon after the macro name.
Generally you would use either a triple (===) or double (==) equal signs operator when doing a comparison, however neither of those operators are listed in the Boolean data section of the Harlowe manual and usage of such doesn’t always work as expected.
The following copy of your original example contains fixes of the above mentioned issues, I have also added formatting to it to make it a little easier to read, which can also help with spoting syntax errors.
(if: $time <= 3)[
(else-if: $time is 4)[
(else-if: $time <= 7)[
(else-if: $time is 8)[
(else-if: $time <= 11)[
(else-if: $time is 12)[
(else-if: $time <= 15)[
(else-if: $time is 16)[
(else-if: $time <= 19)[
(else-if: $time is 20)[
(else-if: $time <= 23)[