Paths
Mit <paths> und seinem Attribut 'from' sowie den Unter-Tags <north>, <northeast>, <east> etc. kann eine intelligente geografische Richtungsnavigation aufgebaut werden, die absolute Richtungen (Himmelsrichtungen) in relative (rechts, links etc.) umsetzen kann.
Dies geschieht mit Hilfe einer Hilfsvariable, die einen Szenen-Namen angibt, der einen Raum/Ort darstellt, von dem der Held kommt. Falls Unterszenen (z.B. "Hebel umlegen") eingebaut worden, ist dies nicht immer die vorherige Szene, daher gibt es diesbezüglich auch keinen Automatismus. Meistens sieht aber der Code dafür am Ende jeder Raum-Szene so aus:
<paths from="${exRoom}">
<path dir="north" target="01">siehst du einen dunklen Gang.</path>
<path dir="east" target="05" enabled="false">siehst du eine verschlossene Tür.</path>
<path dir="south" target="07">siehst du eine mit Fackeln erleuchtete Halle.</path>
</paths>
<store name="exRoom"><get attribute="scene"/></store>
Kommt der Held z.B. aus Raum 07, enthält 'exRoom' also "07", dann wird folgendes angezeigt:
- _Geradeaus_ siehst du einen dunklen Gang. - Rechts siehst du einer verschlossene Tür. - _Hinten_ siehst du eine mit Fackeln erleuchtete Halle.
Die Texte in den Himmelsrichtungs-Tags sowie den Wert von enabled= kann man natürlich auch aus Variablen holen, und damit sich öffnende und schließende Wege programmieren. Die Himmelsrichtungs-Tags müssen immer direkte Unter-Tags von <paths> sein, dazwischen ist weder <replay> noch <switch> oder ähnliches erlaubt. Bedingte Wege sind also nur über enable= und ausgetauschte Texte realisierbar.
Sollte die in from= angegebene Szene leer sein oder in keinem target= der Himmelsrichtungs-Tags vorkommen, dann werden die Himmelsrichtungen angegeben:
- _Nördlich_ siehst du einen dunklen Gang. - Östlich siehst du einer verschlossene Tür. - _Südlich_ siehst du eine mit Fackeln erleuchtete Halle.
Achtung: Räume, von denen viele Türen abgehen, sind mit dieser Methode nicht wirklich gut abbildbar. Selbst wenn die Anzahl passt, verwirrt dies den Helden meist, wenn insgesamt mehr als 5 Richtungen möglich sind. Solches sollte manuell ausprogrammiert werden.
<paths from="vonRaum">
<path dir="north" target="a3"/>
<path dir="south" to="c3" target="tauchen"/>
</paths>
Das neue Element to= bezeichnet den Raum, in den das führt, falls das Target zu einer Action-Szene führt, die den Durchgang evtl. noch verhindert. Das wird benötigt, um die relative Richtung (links/rechts/hinten etc.) herauszufinden, falls man im obigen Beispile von c3 in den Raum mit der o.g. Navigation kommt, denn man kommt ja nicht unbedingt von "tauchen", sondern ggf. auch direkt von "c3" oder einer andere action-Szene, die zu c3 gehört.