651
Bearbeitungen
Änderungen
→Heldenspezifisches
===Einfacher ZB-Grundaufbau===
Einführungstext (Z4), dann erste Talentprobe (Z5) und wenn diese gelingt, eine weitere (Z11), danach EP-Vergabe (Z14,18) und wenn beide Proben positiv verliefen, auch Gewinn eines Gegenstands (Z19); Texte nur zwischen p und /p:
<code syntaxhighlight lang="xml n">
<?xml version="1.0" encoding="UTF-8"?>
<!-- Kommentar zu Auftreten, Autor, Besonderheiten (z.B. ob Humor-ZB) -->
<scene xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://spiel.antamar.org/Antamar/xml/aoqml/aoqml.xsd">
<p></p> <challenge talent="X"> <failure> <p></p> </failure> <success> <p></p> <challenge talent="X"> <failure> <p></p> <set attribute="EP" inc="X"/> </failure> <success> <p></p> <set attribute="EP" inc="X"/> <take item="X"/> </success> </challenge> </success> </challenge>
</scene>
</codesyntaxhighlight>
===Einfacher ZB-Grundaufbau mit variierenden Textstücken===
Viele Begegnungen haben variierende Textinhalte, die aber das gleiche beschreiben, dadurch wird für Abwechselung innerhalb einer ZB gesorgt und es ist nicht immer der gleiche langweilige Text, den man sofort erkennt. Die ist noch besser einsetzbar für gleichwertige Ereignisse, wo also nicht jeder Text innerhalb der ZB aufeinander aufbauen muss und sich auch von den gleichwertigen cases unterscheiden kann.
<code syntaxhighlight lang="xml n">
<?xml version="1.0" encoding="UTF-8"?>
<!-- Kommentar zu Auftreten, Autor, Besonderheiten (z.B. ob Humor-ZB) -->
<scene xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://spiel.antamar.org/Antamar/xml/aoqml/aoqml.xsd">
<p> <random> <case></case> <case></case> <case></case> <case></case> </random> </p>
<challenge talent="" mod="+X"> <failure> <p> <random> <case></case> <case></case> <case></case> <case></case> </random> </p> </failure> <success> <p> <random> <case></case> <case></case> <case></case> <case></case> </random> </p> </success> </challenge>
</scene>
</codesyntaxhighlight>
===ZB mit Voraussetzung===
In Z2 wird eine Talentvoraussetzung (auch möglich: Gegenstand X muss vorhanden sein - has item="X|Y|Z") abgefragt, der Char muss als eines der angegebenen Talent auf dem angegeben Mod haben, sonst wird der success-Zweig nicht ausgeführt (in dem der Charakter einen Gegenstand erhält) und es bleibt nur ein Trösttext (in diesem Falle mit einer anderen Probe, um noch etwas EP zu erhalten)...
<code syntaxhighlight lang="xml n">
<has talent="X|Y" mod="+X">
<success>
</failure>
</has>
</codesyntaxhighlight> ===Einfacher ZB-Grundaufbau für Gruppen=== Einführungstext (Z4), dann eine Talentprobe (Z5), wobei im Erfolgsfall geschaut wird, welcher Held diese am besten besteht (Z10), danach EP-Vergabe (Z11); Texte nur zwischen p und /p: <syntaxhighlight lang="xml"><?xml version="1.0" encoding="UTF-8"?><!-- Kommentar zu Auftreten, Autor, Besonderheiten (z.B. ob Humor-ZB) --><scene xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://spiel.antamar.org/Antamar/xml/aoqml/aoqml.xsd"> <p></p> <challenge talent="X" id="P1"> <failure> <p></p> </failure> <success> <p><hero output="name" by-challenge="P1" select="best" /> hat die Probe am Besten geschafft.</p> <set attribute="EP" inc="X"/> </success> </challenge></scene></syntaxhighlight>
==Talente==
===Einfache Talentprobe===
<code syntaxhighlight lang="xml n">
<challenge talent="Talent" mod="+X">
<success>
</failure>
</challenge>
</codesyntaxhighlight>
===Erleichterte Talentprobe durch Gegenstände===
In Z1 wird abgefragt, ob einer der angegebenen Gegenstände vorhanden ist, wenn ja, wir die Probe erleichtert (Z3), ansonsten erschwert durchgeführt (Z13):
<code syntaxhighlight lang="xml n">
<has item="X|Y">
<success>
</failure>
</has>
</codesyntaxhighlight>
===Alternative Talentabfrage===
Anmerkung: Dies betrifft vor allem Talente, die eher selten sind und wo der Held auf ein Talent ausweichen kann, das er ziemlich sicher hat. Ansonsten könnte im failure-Zweig des ersten has talent auch ein zweites has talent eingebaut werden.
<code syntaxhighlight lang="xml n">
<has talent="Talent1">
<success>
<challenge talent="Talent1">
<success>
</success>
<failure>
</failure>
</challenge>
</success>
<failure>
<challenge talent="Talent2">
<success>
</success>
<failure>
</failure>
</challenge>
</failure>
</has>
</codesyntaxhighlight>
===Verbesserte modifizierte Probe===
Mit dieser Methode kann man eine Probe recht übersichtlich mit mehreren Faktoren modifizieren. Neben Ausrüstung sind auch andere Sachen wie Variablen oder unterstützende Talente möglich.
<code syntaxhighlight lang="xml n">
<store name="probenvariable_1" scope="quest">5</store><!-- Probe ohne Ausrüstung um 5 erschwert. -->
<has item="XXX"><!-- Man kann auch anderes mit has oder switch abfragen. -->
<success>
</success>
<failure>
</failure>
</has>
<has item="YYY"><!-- Man kann auch anderes mit has oder switch abfragen. -->
<success>
</success>
<failure>
</failure>
</has>
<challenge talent="AOQML-Programmierung" mod="${probenvariable_1}"> <!-- Als Modi wird der Inhalt der Variable gezogen, also 5 ohne Ausrüstung und weniger (also leichter) wenn geeignete Ausrüstung vorhanden. -->
<success>
</success>
<failure>
</failure>
</challenge>
</codesyntaxhighlight>
==Heldenspezifisches==
===Den Solohelden namentlich ansprechen===
<syntaxhighlight lang="xml">
<get attribute="name"/>
</syntaxhighlight>
===Mann oder Frau?===
In Z3 wird der Text für Männer ausgegeben, in Z6 der für Frauen.
<code syntaxhighlight lang="xml n">
<switch attribute="gender">
<case value="male">
</else>
</switch>
</codesyntaxhighlight>
Oder auch direkt in den Text einbinden:
<code syntaxhighlight lang="xml n">
<if attribute="gender" equals="female" null="Ein geschlechtsloses Wesen" then="Eine junge Frau" else="Ein junger Mann"/> kommt dir entgegen.
</codesyntaxhighlight>
===Hat der Held soundsoviel Geld?===
Wenn es wichtig ist, ob der Held einen Mindestbetrag an Geld dabei hat.
<code syntaxhighlight lang="xml n">
<has attribute="cash" min="X">
<success>
</failure>
</has>
</codesyntaxhighlight>
===Wurde der Held verletzt?===
Wenn es wichtig ist, ob der Held in einem Kampf Schadenspunkte bekommen hatte.
<code syntaxhighlight lang="xml n">
<store name="LEPvorher" scope="quest"><get attribute="LEP"/></store>
<switch Attribute="LEP">
<case min="${LEPvorher}">
</case>
<else>
</else>
</switch>
<p><fetch name="output_gottheit"/code>, ...</p></syntaxhighlight> ===Kälteschutz===<syntaxhighlight lang="xml"><switch attribute="KS"> <case min="1" max="2"> Viel zu dünne Kleidung. <set attribute="LEP" dec="1...2"/> </case> <case min="3" max="4"> Etwas zu dünn angezogen. <set attribute="LEP" dec="1"/> </case> <case min="5"> <!-- Alles ok, dick genug angezogen --> </case> <else> <!-- 0-2 Kälteschutz --> Der Kälte aufgrund deiner viel zu dünnen Kleidung auch noch schutzlos ausgeliefert. <set attribute="LEP" dec="2...4"/> </else></switch></syntaxhighlight>
==nützliche Gegenstands-Kombinationen==
===Schreibzeug?===
Für Schreibzeug gibt es viele Kombinationen, daher steht dafür ein Makro zur Verfügung
<code syntaxhighlight lang="xml n">
<store name="hatSchreibzeug"/>
<p>Der Held hat
<include target="/lib/_hatSchreibzeug"/>
<switch name="hatSchreibzeug">
<case val="true">
</case>
<else>
</else>
</switch>
</p>
</codesyntaxhighlight>
Ggf. stellt der Editor die Include-Datei als nicht vorhanden dar. Das bitte einfach ignorieren. Zum einen liegt das daran, dass der absolute Pfad noch nicht richtig aufgelöst wird, zum anderen daran, dass diese Datei ggf. lokal gar nicht zur Verfügung steht.
===Zufallstexte===
Eine normale Zufallsauswahl, jeder Case ist gleichberechtigt.
<code syntaxhighlight lang="xml n">
<random>
<case>
</case>
</random>
</codesyntaxhighlight>
===Prozentuale Zufallsauswahl===
Wenn man die Ereignisse einer Zufallsauswahl etwas steuern will, weil manches häufiger als anderes auftreten soll.Zuerst die Variable "zufall" setzenDas Beispiel zeigt eine 80%/20%-Lösung. Die Zahlen können je nach Bedürfnis angepasst werden, so:weitere Fälle können per zusätzlichem <code xml ncase><set name="zufall" value="1..ebenfalls gesetzt werden.100"/></code>oder so:<code xml n><set namesyntaxhighlight lang="zufallxml" value="$[W100]"/></code>Dann die möglichen Ergebnisse:<code xml n> <switch name="zufall"random> <case minfactor="1" max="498"> <!-- ...für 0-498 mal im Pot ...-->
</case>
<case minfactor="50" max="692"> <!-- ...für 50-692 mal im Pot...-->
</case>
==Bewertung unterschiedlicher Ausrüstung bei Proben==
Bei Proben sind unterschiedliche Gegenstände oft unterschiedlich nützlich. Folgendes System erlaubt eine einfache aber detaillierte Nutzung verschiedener Gegenstände. Man muss nur noch die entsprechenden Gegenstände einfügen (Getrennt mit | wenn mehrere in Frage kommen) und den Modi auf die Probe festlegen. Bei fehlender Ausrüstung entscheidet der Schreiber, ob und wie es weiter geht (hoher Malus auf die Probe oder einfach nicht möglich):
<code syntaxhighlight lang="xml n">
<has item="Gute Ausrüstung|Andere gute Ausrüstung">
<failure>
<p>Mangels geeigneter Ausrüstung kannst du das gleich vergessen!</p>
<!-- Weiter im Text/Versagt/Was auch immer... -->
</failure>
<success>
</challenge>
</codesyntaxhighlight>
==Mehrmaliges Verwenden mit <store> und <switch> verhindern==
Mittels <store> und <switch> kann man zB eine mehrmalige Benutzung bzw. mehrmaligen Besuch eines Ortes unterbinden.
<code syntaxhighlight lang="xml n">
<switch name="ValName">
</switch>
</codesyntaxhighlight>
''ValName''stellt den Variablennamen dar, dieser kann frei vergeben werden.
Alternativ kann man auch das [[has|has-Tag]] verwenden.
<code syntaxhighlight lang="xml n">
<switch name="besuchtTaverne">
</switch>
</codesyntaxhighlight>
==Gruppenzeug==
===Alle Helden durchgehen===
<code syntaxhighlight lang="xml">
<for all="${sys:heroes}" name="heldid">
<select hero="${heldid}"/>
<p>Name: <get attribute="name"/></p>
</for>
</codesyntaxhighlight> ===Einer Gruppe (von selektierten) Helden X eines Gegenstandes wegnehmen===Die Nachfolgende Routine entfernt von den selektierten Helden insgesamt eine gewünschte Anzahl Gegenstände. Sind nicht genug Gegenstände vorhanden, werden alle entfernt. Die Anzahl entfernter Gegenstände wird gespeichert. Um die Routine auf die gesamte Gruppe anzuwenden, entweder ein ''<select all="true"/>'' einfügen oder ''selected-'' in der for-Schleife entfernen. '''Achtung Stolperstein:''' Nach Aufruf dieser Routine ist nur noch ein Held selektiert. Außerdem wird die Variable ''anzahl_wegzuwerfen'' überschrieben (verringert)!<syntaxhighlight lang="xml"><!-- Routine wirft bis zu "anzahl_wegzuwerfen" Gegenstände "wegzuwerfender_gegenstand" weg. Bonus: Speichert die Anzahl tatsächlich weggeworfenen Gegenstände in "anzahl_weggeworfen". Funktioniert auch für Einzelhelden. --><retain name="entferne_x_dieses_gegenstandes" id="entferne_gegenstaende"> <store name="anzahl_weggeworfen">0</store> <for all="${sys:selected-heroes}" name="CodeSnippet_held_id"> <select hero="${CodeSnippet_held_id}"/> <store name="temp"><function name="ermittle-item-anzahl" param1="${wegzuwerfender_gegenstand}"/></store> <switch name="anzahl_wegzuwerfen"> <case val="0"> <!-- Kein Inhalt, da nichts getan werden muss. Fall vorhanden, da sonst ELSE-Zweig ausgeführt würde. --> </case> <case min="1" max="${temp}"><!-- Held hat mindestens so viele Gegenstände, wie weggeworfen werden sollen und es soll mindestens einer weggeworfen werden. --> <set name="anzahl_weggeworfen" inc="${anzahl_wegzuwerfen}" show="none"/> <drop item="${wegzuwerfender_gegenstand}" count="${anzahl_wegzuwerfen}"/> <set name="anzahl_wegzuwerfen" val="0" show="none"/><!-- Es muss nichts mehr weggeworfen werden. --> </case> <else><!-- Falls der selektierte Held weniger Gegenstände hat, als noch wegzunehmen sind. --> <drop item="${wegzuwerfender_gegenstand}" count="${temp}"/><!-- Held werden so viele geklaut, wie er halt hat, da er weniger hat als noch insgesamt wegzuwerfen sind. Keine Ausgabe, falls ihm nichts geklaut wird.--> <set name="anzahl_weggeworfen" inc="${temp}" show="none"/> <set name="anzahl_wegzuwerfen" dec="${temp}" show="none"/> </else> </switch> </for></retain></syntaxhighlight>
==Sonstiges==
Datei 1:
<code syntaxhighlight lang="xml n">
<q>Text informiert SC darüber, dass er einige Zeit in der Queste verbleiben muss.</q>
</ul>
</codesyntaxhighlight>
Datei 2 (raus.xml):
<code syntaxhighlight lang="xml n">
<has name="held_wird_eingesperrt">
<success><!-- Variable existiert noch, Held bleibt eingesperrt. -->
</success>
<failure>
</failure>
</has>
</codesyntaxhighlight>
=== Jahreszeiten ===
Für Jahreszeitabhängige jahreszeitabhängige Texte... '''WichtigAchtung: Die Jahreszeiten gelten so nur auf der '''''Nordhalbkugel!''' <syntaxhighlight lang="xml"> <switch attribute="monat"> <case val="Ehrenmond|Hoffnungsmond|Wassermond"> <!-- Frühling --> </case> <case val="Liebesmond|Weisheitsmond|Erdenmond"> <!-- Sommer --> </case> <case val="Heilungsmond|Ahnenmond|Feuermond"> <!-- Herbst --> </case> <else> <!-- Winter --> </else></switch>
<code /syntaxhighlight> Für die ''Südhalbkugel'' gilt entsprechend der nachfolgende Quelltext. Beachte bitte, dass der Äquator ''sehr'' weit im Süden verläuft und nicht zwischen den zwei Kontinenten, siehe dazu [[Antamar_Welt#Der_Kontinent|hier]] einige Karten. <syntaxhighlight lang="xml n">
<switch attribute="monat">
<case val="Heilungsmond|Ahnenmond|Feuermond">
<!-- Frühling -->
</case>
<case val="Herdfeuermond|Maskenmond|Lichtmond">
</case>
<case val="Ehrenmond|Hoffnungsmond|Wassermond">
</case>
<else>
</else>
</switch>
</codesyntaxhighlight>
=== Zufällige Zuweisung einer anderen ZB ===
Folgende Funktion gilt für ZBs, um es zu ermöglichen, dass bei einer misslungenen Startbedingung, statt der ursprünglichen ZB, eine andere, zufällige ZB ausgeführt wird.
<code syntaxhighlight lang="xml n">
<failure>
<quest status="rejected"/>
</failure>
</codesyntaxhighlight>
=== Abfrage der Landessprache ===
AOQML ermöglichst eine Abfrage der Region, in der sich ein Char gerade befindet, nicht aber der dort vorwiegend gesprochenen Landessprache. Folgender Code speichert die Landessprache in der Variable "name" ab. Ob der Held diese spricht, ist in der Variable "kannsprache" gespeichert.
<code syntaxhighlight lang="xml n">
<switch attribute="site_staatenbund">
<case val="Heiliges Kaiserreich">
</case>
<case val="Nuovo Imperio Aurecciani">
</case>
<case val="Großsultanat Emreia">
</case>
<case val="Kaiserreich des Südsterns">
</case>
<case val="Godentum Nordahejmr">
</case>
<case val="Orkreich">
</case>
<case val="Zollunion Goblinia">
</case>
<case val="Adelsrepublik Grauland">
</case>
<case val="Aivarunenlande">
<has talent="Avarun" min="6" show="none">
</case>
<case val="Xetoka">
</case>
<case val="Eiskönigreich">
<store name="kannsprache" scope="quest">ja</store>
</case>
<case val="Emirat El-Ahil">
</case>
<case val="Emirat Karkasso">
</case>
<case val="Emirat Seydjuk">
</case>
<case val="Fürstentum Herzstein">
</case>
<case val="Fürstentum Thelessa">
</case>
<case val="Fürstentum Exondria">
</case>
<case val="Großfürstentum des Südmeers">
</case>
<case val="Herzogtum Galfar">
</case>
<case val="Kalifat Dorien">
</case>
<case val="Königreich Lothrinien">
</case>
<case val="Königreich Lúnasadh">
</case>
<case val="Königreich Westendar">
</case>
<case val="Echsenreich">
</case>
<case val="Sartogasso">
</case>
<case val="Sawajidden-Kalifat">
</case>
<case val="Shogunate">
</case>
<case val="Elfen">
</case>
<case val="Zwerge">
</case>
<case val="Magokratie Wiesczarna">
</case>
</switch>
<has name="sprache" val="Imperial" show="none">
<success>
</success>
</has>
<has name="sprache" val="Aurento" show="none">
<success>
</success>
</has>
<has name="sprache" val="Bajidai" show="none">
<success>
</success>
</has>
</codesyntaxhighlight>
=== Heldeneinstellungen bei Kämpfen im Orkreich beachten ===
Diese Vorlage dient zur Abfrage der Heldeneinstellungen (Auftreten: offen-heimlich; im Kampf: aggressiv-beschwichtigend). Um einen Konsens zu finden, wie man die Heldeneinstellungen berücksichtigen könnte, werden Richtlinien angeboten. Jeder Autor ist jedoch frei in seinen Entscheidungen und kann auch von den Richtlinien abweichen.
<code syntaxhighlight lang="xml n">
<switch attribute="vorgehen" >
<case val="offen">
<has attribute="kampf" val="aktiv" show="none" >
</case>
<else>
<has attribute="kampf" val="aktiv" show="none" >
</else>
</switch>
</codesyntaxhighlight>
<code syntaxhighlight lang="xml n">
<switch attribute="vorgehen" >
<case val="offen">
<has attribute="kampf" val="aktiv" show="none" >
</case>
<else>
<has attribute="kampf" val="aktiv" show="none" >
</else>
</switch>
</codesyntaxhighlight>
=== Permanente Steigerungen Mondphasen durchgehen ===Anbei ein Zip mit einer Quest, die auch ausprobiert werden kann - oder auf dem Testserver als Cheat benutzt. Intention ist, dass Leute die eine Quest schreiben wollen, die am Ende die Auswahl einer möglichen Steigerung vorsieht, es etwas einfacher haben.Sie könnten diese Vorlage benutzen, und müsssen dann "nur noch" die eigentliche Quest zwischen start.xml und wunschliste.xml basteln.