User Tools

Site Tools


twine_1.3.5_bugs

This is an old revision of the document!


All of the following bugs or otherwise deprecated behaviour apply only to Twine 1.3.5. They have been fixed in future versions.

Start passage problems

The Start passage is subject to a few arbitrary restrictions in Twine 1.3.5.

* Custom macros loaded through scripts are not usable in the Start passage, because they are loaded after it is initially rendered.

Inline style syntax

The inline-style syntax ( @@background-color:ghostwhite;like this@@ ) cannot be used at all. A script to fix this bug is available here.

The «print» macro cannot print variables whose value is 0. For instance, “You have «print $cash» dollars.” will render as “You have dollars” if $cash is 0.

To compensate, you should write «print» macros like this:

<<print $var + "">>

'and' and 'or' in macros

Code parameters passed to «if», «set», «print» and «remember» have their operators (“and”, “or”, “$”, “not”, etc.) converted to Javascript equivalents (“&&”, “||”, etc.) when they're executed.

But, due to a bug, this conversion is also applied to “operators” that are inside strings passed to these macros. So, «print “Vast and large”» will print “Vast && large”, and «print “You find $10”» will print “You find state.history[0].variables.10”.

A script to fix this bug is available here.

<<if>> and whitespace

In this version, the «if» macro removes all whitespace contained between the «if», «endif» or «else» tags and any non-whitespace contained text.

Consider this code sample, in which the line breaks are marked:

The magenta line breaks (those contained between the «if» and «endif» and the actual text) will be removed by the macro. Thus, this will render as follows:

A slice of marmalade toast on a plate,
a bit of quiet,
and a spot of tea.
A slice of marmalade toast 
on a plate,
a bit of quiet,
and a spot of tea.

This is technically *not a bug*, but is an unusual behaviour. Its main design purpose was to allow you to indent your code like so:

You're unarmed.
<<if $blood = 1>>
  You're covered in blood.
<<else>>
  You're fit as a fiddle.
<<endif>>

However, this approach has a number of limitations: first, the line break before the opening «if» and after the concluding «endif» are not accounted for - indenting in this style will not eliminate them. More importantly, it's impossible to use «if» for inserting sentences within paragraphs:

You have a shield.<<if $sword = 1>> You have a sword.<<endif>> You have a hat.

In this example, the space before “You have a sword.” is needlessly eliminated.

A script that removes this behaviour is available here.

\ in passages and scripts

The \ symbol cannot be used in passage text - it is incorrectly changed to '\s'. In order to use '\' in scripts, you must use String.fromCharCode(92).

twine_1.3.5_bugs.1384320698.txt.gz · Last modified: 2017/10/09 20:38 (external edit)