User Tools

Site Tools


link

This is an old revision of the document!


About Passages ——— Formatting Passages

Medical Mobility - http://www.familymedicalmobility.com is an online sales, medical supply, repairs and service store for mobility scooters, electric wheelchairs & wheelchair batteries in Sacramento CA. From walkers to power wheelchairs, Family Medical Mobility has the staff and the experience to guarantee you get the product that is right for you.

Usage

Links are marked like so:

[[displayed text|title of passage]]

The two square brackets enclose the whole link, and the pipe symbol separates the displayed text from the passage title.

There is also a shorter form of the link syntax…

[[passage title]]

…where the displayed link text matches the title of the passage it links to.

If a story has a broken link in it, it is displayed with a red background in your story, and clicking it shows this message:

The passage 'The newspaper' doesn't exist.

You may also add links to external sites. These links look like this:

[[DuckDuckGo|http://www.duckduckgo.com/]]
[[http://www.duckduckgo.com/]]

You may link to any address that a reader's web browser will understand.

When you develop more complex stories that use variables, it can be very useful to make certain variables be altered by the act of clicking a link. You can accomplish this by inserting an additional square bracket pair into the syntax like so:

[[displayed text|title of passage][$variable = expression]]

The 'code' portion of the link syntax is treated as if it was a <<set>> macro - consult that page to learn about the syntax to use. A link with a piece of code attached like this is called a setter link, and the attached code is called its tail.

Much like the «set» macro, you can chain together multiple variable-settings by separating them with either commas or semicolons:

* I choose the [[Garb of the Hawk][$hat = "beak"; $shoes = "talons"]]
* I choose the [[Attire of the Mire][$hat = "mud"; $shoes = "gumboots"]]

Clicking either of the above links will set both variables simultaneously.

With very complex stories you may come across an issue with setter-links that occurs when you refer to a variable for any reason other than to set its value. The problem arises because the setter statement is executed with the current values of the variables at the end of the passage - not the values they had when the link statement occurred.

<<set $actor to "Fred">>
<if $location[$actor] is passage()>>
[[Talk to <<$actor>>|Talk_Fred][$chat = $actor]]
<<endif>>
<<set $actor to "Ginger">>
<<if $location[$actor] is passage()>>
[[Talk to <<$actor>>|Talk_Ginger][$chat = $actor]]
<<endif>>

In this case, regardless of which link you picked, $chat would end up getting set to “Ginger” - the value of $actor at the end of the passage.

Although there is a trivial fix that could be used in this example (simply hard code the actors names), the general solution is to use a print macro to write the link statement with the resolved values of the variables:

<<set $actor to "Fred">>
<<if $location[$actor] is passage()>>
<<print "[[Talk to " + $actor + "|Talk_" + $actor + "][$chat to '" + $actor + "']]">>
<<endif>>
<<set $actor to "Ginger">>
<<if $location[$actor] is passage()>>
<<print "[[Talk to " + $actor + "|Talk_" + $actor + "][$chat to '" + $actor + "']]">>
<<endif>>

About Passages ——— Formatting Passages

link.1428389323.txt.gz · Last modified: 2017/10/09 20:37 (external edit)