614
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>
</code> ===Anzahl selektierte Helden zählen===<code xml n><store name="anzahl_selektierte_helden">0</store><for all="${sys:selected-heroes}" name="CodeSnippet_zaehle_helden"><!-- Um Namenskomplikationen zu vermeiden, da diese Variable den scope="scene" hat. --> <set name="anzahl_selektierte_helden" inc="1" show="none"/></for></code>Die selektierten Helden bleiben selektiert! ===Heldenaufzählung der echten Namen===Die folgende Routine gibt eine Liste der Namen der selektierten Helden in der Form ''A'', ''A und B'', ''A, B und C'' oder ''A, B, C und D'' aus. Zuvor muss in der Variable ''anzahl_selektierte_helden'' die Anzahl der selektierten Helden gespeichert werden. '''Achtung Stolperstein:''' Nach Aufruf der Routine ist der zuletzt aufgeführte Held selektiert! <code xml n><!-- anzahl_selektierte_helden gibt die Anzahl selektierter Helden an, muss jeweils vor Aufruf der Methode korrekt gesetzt worden sein. --><retain name="heldenaufzahlung" id="heldenaufzahlung"> <store name="zahler_heldenaufzahlung">0</store> <!-- Die nachfolgende Schleife ist in einer Zeile, da sonst ein Leerzeichen vor einem etwaigen Komma ausgegeben wird. Code bitte nicht umbrechen oder Leerzeichen einfügen! --> <for all="${sys:selected-heroes}" name="CodeSnippet_heldid"><select hero="${CodeSnippet_heldid}"/><store name="differenzwert"><eval><fetch name="anzahl_selektierte_helden"/>-<fetch name="zahler_heldenaufzahlung"/></eval></store><switch name="differenzwert"><case val="${anzahl_selektierte_helden}"><get attribute="name"/></case><case val="1"> und <get attribute="name"/></case><else>, <get attribute="name"/></else></switch><set name="zahler_heldenaufzahlung" inc="1" show="none"/></for></retain></code> ===Heldenaufzählung der falschen Namen===Die folgende Routine gibt eine Liste der falschen Namen der selektierten Helden in der Form ''A'', ''A und B'', ''A, B und C'' oder ''A, B, C und D'' aus. Zuvor muss in der Variable ''anzahl_selektierte_helden'' die Anzahl der selektierten Helden gespeichert werden. '''Achtung Stolperstein:''' Nach Aufruf der Routine ist der zuletzt aufgeführte Held selektiert! <code xml n><!-- anzahl_selektierte_helden gibt die Anzahl selektierter Helden an, muss jeweils vor Aufruf der Methode korrekt gesetzt worden sein. --><retain name="heldenaufzahlung_nick" id="heldenaufzahlung_nick"> <store name="zahler_heldenaufzahlung">0</store> <!-- Die nachfolgende Schleife ist in einer Zeile, da sonst ein Leerzeichen vor einem etwaigen Komma ausgegeben wird. Code bitte nicht umbrechen oder Leerzeichen einfügen! --> <for all="${sys:selected-heroes}" name="CodeSnippet_heldid"><select hero="${CodeSnippet_heldid}"/><store name="differenzwert"><eval><fetch name="anzahl_selektierte_helden"/>-<fetch name="zahler_heldenaufzahlung"/></eval></store><switch name="differenzwert"><case val="${anzahl_selektierte_helden}"><get attribute="nick"/></case><case val="1"> und <get attribute="nick"/></case><else>, <get attribute="nick"/></else></switch><set name="zahler_heldenaufzahlung" inc="1" show="none"/></for></retain></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 nurnoch nur noch ein Held selektiert. Außerdem wird die Variable ''anzahl_wegzuwerfen'' überschrieben (verringert)!<code syntaxhighlight lang="xml n">
<!-- 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">
</for>
</retain>
</codesyntaxhighlight>
==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 ===
''Nordhalbkugel''
<code syntaxhighlight lang="xml n">
<switch attribute="monat">
<case val="Ehrenmond|Hoffnungsmond|Wassermond">
</case>
<case val="Liebesmond|Weisheitsmond|Erdenmond">
</case>
</case>
<else>
<!-- Winter -->
</else>
</switch>
</codesyntaxhighlight>
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.
<code syntaxhighlight lang="xml n">
<switch attribute="monat">
</case>
<case val="Herdfeuermond|Maskenmond|Lichtmond">
</case>
</case>
<else>
<!-- Winter -->
</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>
=== Mondphasen durchgehen ===
Folgender Code beinhaltet sämtliche mögliche Mondphasen in ihren Kombinationsmöglichkeiten. Je nach Anwendungsbereich, kann der ''switch'' auf das Attribut ''tag'' auch ausgegliedert werden.
<code syntaxhighlight lang="xml n">
<switch attribute="monat">
<case value="Lichtmond|Liebesmond|Ahnenmond">
</case>
</switch>
</codesyntaxhighlight> === Permanente Steigerungen ===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. Kommt der Held erfolgreich bei der Wunschliste an, dann kann er sich aussuchen, welche Eigenschaft er steigern will. Es sind alle Eigenschaften eingebaut, aber da kann man ja auch entsprechend abändern. Es wird aber bereits abgeprüft:*- Sind schon alle 5 Steigerungsmöglichkeiten verbraten? -> alternative Belohnung.*- Ist die ausgewählte Eigenschaft schon auf 40? -> Lange Nase, zurück zur Wunschliste*- sonst wird permanent gesteigert. Wer auf sowas gesteigerten Wert legt *scnr*, kann gern das angehängte Zippchen saugen und munter drauf losschreiben. GL&HF[[Datei:Permanent_Steigern.zip]]