Hero: Unterschied zwischen den Versionen

Aus AntamarWiki
Wechseln zu: Navigation, Suche
(by-talent: neue Semantik mit -1 für inaktive Fertigkeiten und Zufallsauswahl)
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 23: Zeile 23:
  
 
=== by-challenge ===
 
=== by-challenge ===
 +
 +
Referenziert die [[Challenge]] über deren Attribut "name".
  
 
<code xml n>
 
<code xml n>
<challenge talent="Schleichen" hero-quantity="all" id="Pr1">
+
<challenge talent="Schleichen" hero-quantity="all" name="Pr1" scope="scene" >
 
   <success>
 
   <success>
 
     <p>Vorsichtig schleicht ihr weiter.</p>
 
     <p>Vorsichtig schleicht ihr weiter.</p>
Zeile 36: Zeile 38:
 
</challenge>
 
</challenge>
 
</code>
 
</code>
 
  
 
=== by-talent ===
 
=== by-talent ===
Zeile 45: Zeile 46:
 
</code>
 
</code>
  
Sollte man ein Talent abfragen, das kein Held in der Gruppe besitzt, ist die Rückgabe leer.
+
Hat ein Held die Fertigkeit (Talent) nicht aktiviert, zählt es als -1, d.h. ggf. kommen dabei Helden heraus, die das Talent gar nicht aktiviert haben. Daher sollte man sich i.d.R. eine Probe anschließen, z.B:
 +
 
 
<code xml n>
 
<code xml n>
 
<!-- ermitteln, wer am besten urelfisch sprechen kann -->
 
<!-- ermitteln, wer am besten urelfisch sprechen kann -->
<store name="held"><hero output="name" by-talent="Urelfisch" select="best"/></store>
+
<store name="heldID"><hero output="id" by-talent="Urelfisch" select="best"/></store>
<switch name="held">
+
 
  <case val="">
+
<!-- den betreffenden Helden selektieren -->
     <p>Es kann von euch leider niemand urelfisch sprechen.</p>
+
<select hero="${heldID}"/>
   </case>
+
 
   <else>
+
<!-- und prüfen, ob er es wirklich kann - alternativ gleich eine challenge -->
     <p><fetch name="held"/> ist in Urelfisch ziemlich fit.</p>
+
<has talent="Urelfisch">
   </else>
+
  <success>
</switch>
+
     <p><get attribute="name"/> kann Urelfisch</p>
 +
   </success>
 +
   <failure>
 +
     <p>niemand von euch kann Urelfisch</p>
 +
   </failure>
 +
</has>
 
</code>
 
</code>
  
 +
Sollten mehrere Helden gleich schlecht/guut sein, erfolgt Auswahl zufällig. D.h. mehrmalige Ausführung hintereinander kann unterschiedliche Helden liefern!
  
 
=== by-quality ===
 
=== by-quality ===

Aktuelle Version vom 11. August 2021, 18:28 Uhr

Mit Hilfe des hero-Tags kann in AOQML bei Gruppenbegegnungen (Gruppen-ZB oder Gruppenquest) die HeldID oder der Heldenname eines Helden der Gruppe auf Basis bestimmter Parameter ermittelt werden.

Beispielsweise ist es möglich nach einer misslungen Talentprobe herauszufinden, welcher Held die Probe am meisten "versaut" hat.

Syntax

<hero [output="name"] [by-challenge=""] [by-talent=""] [by-quality=""] [by-attribute=""] [val=""] [select=""] />
  • output: 'name', 'nick' oder 'id'. 'name' liefert den Name des Helden zurück, 'nick' seinen Decknamen und 'id' die HeldID.
  • select: 'best' oder 'worst', wenn in Kombination mit anderen Parametern verwendet oder 'random' um einen Helden der Gruppe zufällig auszuwählen.
  • by-challenge: Wenn einer Probe zuvor eine ID gegeben wurde, kann diese ID hier angegeben werden - somit wird die Probe referenziert. Jedoch muss sich die Probe in derselben Szene befinden!
  • by-talent: Hier kann ein Talentname angegeben werden.
  • by-quality: Hier kann ein Eigenschaftskürzel (MU, IQ, ...) angegeben werden.
  • by-attribute: Angabe eines Heldenattributs wie z.B. Verletzungen ('LEP', 'AUP', 'ERP', 'wounds'), Talentwerte, Eigenschaftswerte usw.


Hinweis zur Anwendung: Das <hero>-Tag kann von einem store-Tag umschlossen werden, wenn man bspw. die HeldID in eine Variable speichern möchte, um sie später bei einem select-Tag anzugeben.

Es kann auch vorkommen, dass kein Held zurückgegeben werden kann, weil kein Held der geforderten Bedingung aus den o.g. Attributen entspricht, z.B. wenn man ein sehr selten aktiviertes Talent abfragt. In diesem Fall ist die Rückgabe leer.

Beispiele

by-challenge

Referenziert die Challenge über deren Attribut "name".

<challenge talent="Schleichen" hero-quantity="all" name="Pr1" scope="scene" >
  <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>

by-talent

<!-- ermitteln, welcher Held am besten feilschen kann -->
<hero output="name" by-talent="Feilschen" select="best" /> kann am besten feilschen.

Hat ein Held die Fertigkeit (Talent) nicht aktiviert, zählt es als -1, d.h. ggf. kommen dabei Helden heraus, die das Talent gar nicht aktiviert haben. Daher sollte man sich i.d.R. eine Probe anschließen, z.B:

<!-- ermitteln, wer am besten urelfisch sprechen kann -->
<store name="heldID"><hero output="id" by-talent="Urelfisch" select="best"/></store>

<!-- den betreffenden Helden selektieren -->
<select hero="${heldID}"/>

<!-- und prüfen, ob er es wirklich kann - alternativ gleich eine challenge -->
<has talent="Urelfisch">
  <success>
    <p><get attribute="name"/> kann Urelfisch</p>
  </success>
  <failure>
    <p>niemand von euch kann Urelfisch</p>
  </failure>
</has>

Sollten mehrere Helden gleich schlecht/guut sein, erfolgt Auswahl zufällig. D.h. mehrmalige Ausführung hintereinander kann unterschiedliche Helden liefern!

by-quality

<!-- ermitteln, welcher Held am meisten Charisma hat -->
<hero output="name" by-quality="CH" select="best" />


by-injury

Mögliche Angaben sind 'LEP', 'AUP', 'ERP' und 'wounds'.


by-attribute

by-attribute (mögliche Ausprägungen siehe Held_Attribute) kann mit val wie folgt kombiniert werden:

<!-- Held ermitteln, der eher passiv agiert -->
<store name="held_id"><hero output="id" by-attribute="kampf" val="passiv"/></store>

Alternativ können auch numerische Heldenattribute wie select="best" oder select="worst" verglichen werden.

<!-- ermitteln, welcher Held am meisten erschöpft ist -->
<hero output="name" by-attribute="ERP" select="worst" /> ist sehr erschöpft.
<!-- ermitteln, welcher Held die meisten Wunden hat -->
<store name="held_verletzt"><hero output="name" by-attribute="wounds" select="worst" /></store>
<!-- falls kein Held Wunden hat, hat die Variable 'held_verletzt' einen leeren Inhalt -->

<switch name="held_verletzt">
  <case val="">
    <p>Ihr seid alle unverwundet!</p>
  </case>
  <else>
    <p><fetch name="held_verletzt"/> hat die meisten Wunden.</p>
  </else>
</switch>


select="random"

Ein Held der Gruppe kann zufällig ausgewählt werden mit:

<store name="zufaelligerHeldID"><hero output="id" select="random"/></store>
<select hero="${zufaelligerHeldID}"/>