(if: visit is 1)[Ready to take your Twine game up a notch? Aside from branching paths, an effective way to make your story feel more interactive is to spool out your passages little by little. (click: "spool out your passages")[If you are presenting your reader with more than one paragraph at a time, you're losing an opportunity to draw your reader in.] (click: "draw your reader in")[Here are some techniques for making your stories more dynamic, along with the code to do so: try [[replacing text]], use [[cycling links]], insert [[narrative asides]], and learn to [[unveil more text]] in the same passage.]] (else:)[(nth: visit, "Hi!", "Welcome back!", "Oh, it's you! Have you noticed the text changes here every time you come back? That's the `(nth:)` macro at work. Every time you visit this page, it moves through a list of possible messages. Here's the code: <code>`(nth: visit, 'Hi!', 'Welcome back!', 'Oh!')`</code> ") Here are some techniques for making your stories more dynamic, along with the code to do so: try [[replacing text]], use [[cycling links]], insert [[narrative asides]], and learn to [[unveil more text]] in the same passage.](if: $key is false)[ Items: (link: "Pick up key")[(set: $key to true)You have a key.] ] (else:)[ There is nothing here. ]The furious witch cast a spell. (click: "spell")[Spell? More like a curse. I looked down at myself and saw...](click: "saw...")[little green frog legs.]Sometimes you have a bunch of options that you want to use the cycling link macro to cycle through, but then add some text once all the choices have been gone through. For example: You're not sure what to watch on Netflix. (cycling-link: bind $netflix, "Elite", "Don't F**k with Cats", "The Office", "Stranger Things", "Tiger King")? (event: when $netflix is "Tiger King")[Who are you kidding? You're going to watch *The Great British Bakeoff*. Here's the code for doing this: <code>`You're not sure what to watch on Netflix. (cycling-link: bind $netflix, "Elite", "Don't F**k with Cats", "The Office", "Stranger Things", "Tiger King")? (event: when $netflix is "Tiger King")[Who are you kidding? You're going to watch *The Great British Bakeoff*.]`</code>]Text that changes dynamically can make (link-show: "your story", ?alive) feel more alive. [An easy way to make text change is to use the `(click:)` family of macros. Sometimes you want to have text that doesn't lead to new passages, it just changes. Let's say you introduce a character and want the narrator to give a snarky parenthetical comment about that character. For example: *Prince Charming walked into the room.* \ (click-append: "story")[/game/strange hybrid]\ (click-append: "Prince Charming")[ (GAG! He thinks he owns this place!)(show: ?charming) ]\ \ [We can accomplish this with the `(click-append)` macro. Here's the code for the above example: <code>`(click-append: "Prince Charming")[ (GAG! He thinks he owns this place!) ]`</code> There's also a `(click-replace:)` and `(click-prepend:)` macros. Check out the <a href="https://twine2.neocities.org/#macro_click-replace">Harlowe manual</a> for more details. Back to the (link-goto: "main screen", (history:)'s last). ](charming| ](alive|Cycling links let players click on text, which changes the text to something new, and you can click on it again to change to something else. (link-show: "For example", ?example)... [You're not sure what to watch on Netflix. (cycling-link: "Elite", "Don't F**k with Cats", "The Office", "Stranger Things", "Tiger King")? Cycling links can convey indecision or the process of making a choice. Because you can (link-show: "bind variables", ?variables) to any of the items in the list, the choices made can have impact on the story. [Sometimes you have a bunch of options that you want to use the cycling link macro to cycle through, but then add some text once all the choices have been gone through. The following example modifies the above example. Notice what happens once you cycle through all the choices. You're not sure what to watch on Netflix. (cycling-link: bind $netflix, "Elite", "Don't F**k with Cats", "The Office", "Stranger Things", "Tiger King")? (event: when $netflix is "Tiger King")[Who are you kidding? You're going to watch *The Great British Bakeoff*. Here's the code for doing this: <code>`You're not sure what to watch on Netflix. (cycling-link: bind $netflix, "Elite", "Don't F**k with Cats", "The Office", "Stranger Things", "Tiger King")? (event: when $netflix is "Tiger King")[Who are you kidding? You're going to watch *The Great British Bakeoff*.]`</code> Return (link-goto: "to main page", (history:)'s last).] ](variables|](example|Unveiling large chunks of text a little at a time can create suspense or convey the passage of time. For example, if you have a dialogue between characters, why present it all at once, when you can draw it out, exchange by exchange. For example: The witch (link-show: "cackled", ?witch) at Gretel. ["My sweet," the witch whispered, "you'll never get away." Gretel (link-show: "shuddered", ?gretel). ["But why," she cried. "Why do you eat little children?" The witch smiled viciously as (link-show: "she answered", ?answer). ["Because adults taste too gamey." **How this works** This technique uses a feature of Harlowe called hidden hooks. Hidden hooks are...hidden, until some version of a `(show:)` macro reveals them. More details are available in the <a href="https://twine2.neocities.org/#markup_hidden-hook">Harlowe manual</a>. Return (link-goto: "to what you were doing before", (history:)'s last). ](answer| ](gretel| ](witch|Occasionally you'll have an item or person that you want the player to click on, and then go off to a short passage with a description about that item or person. And then you need get your player back to the main passage. You can use Harlowe's `(history:)` macro to easily return the player to the previous passage. Unlike the "Undo" arrow in the sidebar, this method doesn't undo the previous turn, it just sends the player back to the previous location. Here's the code: <code>`Return (link-goto: "to what you were doing before", (history:)'s last).`</code> Try it here: Return (link-goto: "to what you were doing before", (history:)'s last).