В тексте узла можно писать встроенные скрипты на JavaScript с помощью двойных фигурных скобок:
{{
console.log("Hello from my Script)";
}}
Содержимое внутри скобок будет выполнено в момент, когда локация должна будет отобразиться на экране.
Если начать с {{=
, то результат работы скрипта будет выведен прямо в текст. Это лучше всего работает с одиночными переменными или с выражениями.
{{=
2+2
}}
Вывод в текст работает только для одиночных переменных, функций или выражений.
Для сохранения, загрузки, музыки и прочих интересных возможностей можно использовать специальные команды объекта Wonder
В игре есть состояние игры - так называемый gameState. По умолчанию это пустой объект. При создании переменных или с помощью ваших скриптов его можно наполнить переменными (как полями объекта). Для этого надо использовать this.
как обращение к объекту - так как Wonder передает gameState как контекст всем исполняемым скриптам.
В стартовом JavaScript-скрипте в Twine-редакторе можно задать, к примеру, количество золота так
this.gold = 100;
В стартовом скрипте не нужно писать фигурные скобки.
Далее, в текстовых локациях можно писать прямо в текст
{{
this.chestGold = 50;
this.gold += this.chestGold;
}}
Вы открыли сундук. В нем лежало {{=this.chestGold}} золота. Теперь у вас {{this.gold}} золота.
Все скрипты выполняются каждый раз, когда вы открываете локацию с ними. Вы можете использовать любой JavaScript-код, который может работать в браузере. Вы можете обращаться к window, document и другим объектам DOM API.
Вы можете создавать свои собственные состояния и объекты для игры - но gameState, к которому вы можете обращаться через this, удобен тем, что он будет использовать при автоматическом сохранении и восстановлении, а также в других возможных механизмах Wonder.