Challenge: Unterschied zwischen den Versionen
Zardoz (Diskussion | Beiträge) (Einrückungen korrigiert) |
Kuo (Diskussion | Beiträge) (+ by-challenge) |
||
Zeile 246: | Zeile 246: | ||
<failure> | <failure> | ||
<p>Autsch!</p> | <p>Autsch!</p> | ||
+ | </failure> | ||
+ | </challenge> | ||
+ | </code> | ||
+ | |||
+ | ==by-challenge== | ||
+ | '''Gilt nur für Gruppenbegegnungen.''' | ||
+ | |||
+ | Mit Hilfe des [[hero]]-Tags kann in Gruppenbegegnungen abgefragt werden, welcher Held eine Probe am besten geschafft bzw. meisten verhaut hat. | ||
+ | |||
+ | Beispiel: | ||
+ | <code xml n> | ||
+ | <challenge talent="Schleichen" hero-quantity="all" id="Pr1"> | ||
+ | <success> | ||
+ | <p>Vorsichtig schleicht ihr weiter.</p> | ||
+ | </success> | ||
+ | <failure><!-- mindestens ein Held hat die Schleichen-Probe versaut! --> | ||
+ | <p>Ups!</p> | ||
+ | <!-- Welcher Held ist schuld? ;) --> | ||
+ | <p><hero output="name" by-challenge="Pr1" select="worst" /> tritt ungünstig auf ein paar Steinchen, was ungeheuren Lärm verursacht...</p> | ||
</failure> | </failure> | ||
</challenge> | </challenge> |
Version vom 28. August 2020, 20:45 Uhr
<challenge talent="..."|quality="..." [mod="..."] [show="..."] [name="..."] [result="..."] [hero-quantity="..."] [id="..."]>
[<success [min="..."] [max="..."] [double="double"] [select-heroes="false"]>...</success>]
[<failure [min="..."] [max="..."] [double="double"] [select-heroes="false"]>...</failure>]
</challenge>
Mit diesen Tags können Proben abgelegt werden. Der erste zum Ergebnis passsende Zweig wird ausgeführt.
Inhaltsverzeichnis
- 1 talent="..."
- 2 quality="..."
- 3 mod="..."
- 4 mod="${variablenname}"
- 5 show="..."
- 6 name="..."
- 7 result="..."
- 8 hero-quantity="..."
- 9 id="..."
- 10 min="...", max="..."
- 11 double="double"
- 12 select-heroes
- 13 Ableitung auf artverwandte Talente
- 14 Abfrage, welches Talent zuletzt geprobt wurde
- 15 by-challenge
talent="..."
An Stelle von ... wird hier eine Talentbezeichnung angegeben, wie sie in der Talentübersicht zu sehen ist, oder eine Variable. Bei mehrfachem Vorkommen in verschiedenen Kategorien (meist Sprache/Schrift) wird der Kategorie-Bezeichner so davor gestellt: talent="Sprache/Isdira" bzw. talent="Schrift/Isdira".
Es können auch Talentalternativen angegeben werden, falls der Held das gewünschte Talent nicht aktiviert hat, siehe weiter unten den Abschnitt "Ableitung auf artverwandte Talente".
Es kann exklusiv entweder das talent- oder das quality-Attribut angegeben werden. Bei Angabe von name="..." mit einer belegten Variablen können auch beide entfallen.
quality="..."
An Stelle von ... wird hier eine Eigenschaft in Form ihrer zweibuchstabigen Abkürzung angegeben, also MU (Mut), IQ (Intelligenz), IN (Intuition), WI (Willenskraft), CH (Charisma), FF (Fingerfertigkeit), GE (Gewandtheit), KO (Konstitution) oder ST (Stärke).
Auch Pseudo-Eigenschaften wie Ausdauer (AU), Lebenspunkte (LEP) oder Ausweichen (AUSWEICHEN) können geprobt werden, genauso wie eine Variable die eine solche Abkürzung enthält.
Es kann exklusiv entweder das talent- oder das quality-Attribut angegeben werden.
mod="..."
An Stelle von ... kann hier ein Modifikator angegeben werden, also z.B. "-2" oder "+5". Auch Besondere Werte sind möglich: "-2..-+5". Die Vorgabe ist "0".
mod="${variablenname}"
Man kann auch einen Modifikator aus einer Variable holen, indem man mod="${variablenname}" verwendet und als Variable eine positive oder negative Zahl speichert. Dadurch kann man z.B. den Effekt von Ausrüstung oder Entscheidungen auf eine Probe einrechnen, den man vorher durch store gespeichert und ggf. durch eval oder set verändert hat.
Beispiel 1:
<has item="Kletterseil">
<success>
<store name="klettermodi" scope="quest">-3</store>
</success>
<failure>
<store name="klettermodi" scope="quest">0</store>
</failure>
</has>
<challenge talent="Klettern" mod="${klettermodi}">
<success>
<include target="probe_geschafft"/>
</success>
<failure>
<include target="probe_misslungen"/>
</failure>
</challenge>
Beispiel 2:
<!-- Erst den normalen Modi als Variable speichern. -->
<store name="klettermodi" scope="quest">5</store>
<!-- Dann Ausrüstung abfragen. -->
<has item="Kletterseil">
<success>
<set name="klettermodi" dec="2"/>
</success>
<failure>
</failure>
</has>
<!-- Jetzt können auch mehrere Boni addiert werden! -->
<has item="Kletterhaken">
<success>
<set name="klettermodi" dec="2"/>
</success>
<failure>
</failure>
</has>
<!-- Und das Ergebnis dann auswerten. -->
<challenge talent="Klettern" mod="${klettermodi}">
<success>
<include target="probe_geschafft"/>
</success>
<failure>
<include target="probe_misslungen"/>
</failure>
</challenge>
show="..."
An Stelle von "..." kann hier "none" (keine Ausgabe der Probe), "challenge" (nur Ausgabe der Probeananforderung, ohne Ergebnis) oder "result" (Ausgabe der Probenanforderung und des Ergebnisses) angegeben werden. Die Vorgabe ist "result".
name="..."
An Stelle von ... kann hier der Name einer Variablen angegeben werden.
Ist ein Talent oder eine Eigenschaft angegeben, dann wird das Probenergebnis
in der Variablen gespeichert. Sind weder Talent noch Eigenschaft angegeben,
dann wird das Probenergebnis aus der Variablen genommen. Damit kann ein
Probenergebnis also mehrfach verwendet werden.
Ohne Angabe von name=... wird keine Variable verwendet.
Beispiel:
<challenge talent="Klettern" name="ProbeNr1"/>
...Andere programmierte Questereignisse bzw. weiterer AOQML-Code ...
<challenge name="ProbeNr1">
<success>Hurra, dir ist es gelungen!</success>
<failure>Oh weh, das ist dir aber Misslungen! </failure>
</challenge>
result="..."
Statt ... kann hier ein Ergebnis (TaP) stehen, welches statt der Würfel verwendet wird. Dieses Attribut ist nur bei DEBUG aktiv und dient dem Austesten aller Zweige. Vorgabe ist, das Würfelergebnis zu verwenden.
Zum Beispiel bewirkt der folgende Code, dass automatisch ein FeW* von -3 gesetzt wird (gilt nur für die Testumgebung), d.h. die Eigenschaften und Talente des Helden werden gar nicht erst geprobt.
<challenge talent="Singen" mod="5" result="-3">
...
Entsprechend würde in diesem Fall automatisch der failure-Zweig ausgeführt werden.
hero-quantity="..."
Dieser Tag wird nur bei Gruppenbegegnungen ausgewertet. Als Angabe wird eine Zahl (>=1) oder 'all' erwartet.
Die Zahl gibt an, wie viele Helden die Probe bestehen müssen, damit sie insgesamt als bestanden gilt. Wenn 'all' angegeben, müssen alle Helden der Gruppe die Probe bestehen.
Wenn der Tag nicht angegeben wird, ist standardmäßig 1 eingestellt, d.h. lediglich ein Held in der Gruppe
muss die Probe bestehen, damit die Probe als bestanden gilt.
Beispiele:
<challenge talent="Sinnenschärfe" mod="3">
<success>
<!-- bestanden, wenn mind. ein Held die Probe bestanden hat -->
</success>
</challenge>
<challenge quality="ST" mod="2" hero-quantity="2">
<success>
<!-- bestanden, wenn mind. zwei Helden der Gruppe die Probe bestanden haben -->
</success>
</challenge>
<challenge talent="Selbstbeherrschung" hero-quantity="all">
<success>
<!-- bestanden, wenn alle Helden der Gruppe die Probe bestanden haben -->
</success>
</challenge>
id="..."
Nur für Gruppenbegegnungen! Mit der Angabe einer ID kann später ein Held ermittelt werden, der die Probe am besten oder am schlechtesten absolviert hat, siehe Beispiele im hero-Tag.
min="...", max="..."
Mit ... können hier minimal, bzw. maximal TaP angegeben werden. Achtung: Im negativen Bereich kommt man schnell durcheinander, weil größere Zahlenwerte natürlich kleinere Zahlen sind! Daher kann man im negativen Bereich auch einfach das Minuszeichen weglassen und min/max vertauschen. Das ist intuitiver. Vorgabe: Es wird nur auf Erfolg/Misserfolg ohne weitere Einschränkung geprüft.
double="double"
Kennzeichnet den Zweig als dann auszuführen, wenn bei einer Talentprobe eine doppel 20 (failure-tag) oder doppel 1 (success-tag) auftritt. Natürlich darf nur jeweils ein failure/success-Zweig so markiert werden. Eine Kombination von double und min/max ist nicht möglich!
<challenge ... >
<success double="double">Doppel 1</success>
<success>Normal geschafft</success>
<failure max="9">Fehlgeschlagen und TaW* > -9</failure>
<failure double="double">Doppel 20</failure>
<failure>Restliche Failure-Fälle (also keine Doppel 20 und TaW* < -9)</failure>
</challenge>
select-heroes
Gilt nur für Gruppenbegegnungen.
Im success- oder failure-Zweig kann ein select-heroes="true" angegeben werden.
Ist select-heroes="true" im success-Zweig angegeben, bewirkt dies, dass automatisch die Helden selektiert werden, die die Probe bestanden haben.
Ist select-heroes="true" im failure-Zweig angegeben, bewirkt dies, dass automatisch die Helden selektiert werden, die die Probe nicht bestanden haben.
<challenge talent="Sinnenschärfe">
<success select-heroes="true"><!-- selektiert die Helden, die die Probe bestanden haben -->
...
</success>
<failure select-heroes="true"><!-- selektiert die Helden, die die Probe nicht bestanden haben -->
...
</failure>
</challenge>
Ableitung auf artverwandte Talente
Für mehr Flexibilität können alternative Talente genannt werden. Sollte der Held Talent1 nicht aktiviert haben, wird Talent2 gewählt. Zu Talent2 kann in mod eine andere Erschwernis hinterlegt werden. Beispiele:
<challenge talent="Springen|Athletik|Körperbeherrschung" mod="0|5|10">
<!-- Sollte der Held das Talent "Springen" nicht aktiviert haben, wird Athletik geprobt. Sollte auch Athletik nicht aktiv sein, wird Körperbeherrschung geprobt. -->
<!-- Erschwernis 0 für Springen, Erschwernis 5 für Athletik, Erschwernis 10 für Körperbeherrschung -->
<success>
<p>Gelungen.</p>
</success>
<failure>
<p>Misslungen.</p>
</failure>
</challenge>
<challenge talent="Gaukeleien|Stimmen Imitieren|Fliegen|Akrobatik" mod="8">
<!-- hier gilt Erschwernis 8, egal welches Talent gewählt wird -->
<success>
<p>Gelungen.</p>
</success>
<failure>
<p>Misslungen.</p>
</failure>
</challenge>
Abfrage, welches Talent zuletzt geprobt wurde
In Variable 'sys:probe' ist die Fertigkeit hinterlegt, welche zuletzt geprobt wurde. Beispiel:
<challenge talent="Springen|Athletik|Körperbeherrschung" mod="0|2|4">
<success>
<switch name="sys:probe">
<case val="Springen">
<p>Du springst elegant über die Speergrube.</p>
</case>
<else>
<p>Dank deiner guten <fetch name="sys:probe"/> schaffst du es, die Speergrube zu überwinden.</p>
</else>
</switch>
</success>
<failure>
<p>Autsch!</p>
</failure>
</challenge>
by-challenge
Gilt nur für Gruppenbegegnungen.
Mit Hilfe des hero-Tags kann in Gruppenbegegnungen abgefragt werden, welcher Held eine Probe am besten geschafft bzw. meisten verhaut hat.
Beispiel:
<challenge talent="Schleichen" hero-quantity="all" id="Pr1">
<success>
<p>Vorsichtig schleicht ihr weiter.</p>
</success>
<failure><!-- mindestens ein Held hat die Schleichen-Probe versaut! -->
<p>Ups!</p>
<!-- Welcher Held ist schuld? ;) -->
<p><hero output="name" by-challenge="Pr1" select="worst" /> tritt ungünstig auf ein paar Steinchen, was ungeheuren Lärm verursacht...</p>
</failure>
</challenge>