AOQML Library / 034 - Erfolge vergeben und abfragen
Eintrag 034 - Erfolge (Achievements) in Quests und ZBs vergeben und abfragen.
Beschreibung der Anwendung:
Für Erfolge gibt es keinen eigenen Tag. Erfolge, die eine Quest oder ZB freischalten kann, hängen an einer Helden-Variable (scope="hero"). Ihre Bedingung lautet entweder „Variable ist mindestens N“ oder „Variable hat den Wert X“. Sobald eine Quest oder ZB die Variable so setzt, dass die Bedingung erfüllt ist, wird der Erfolg sofort freigeschaltet. Der Spieler bekommt die übliche Meldung und die EP für den Erfolg, die Quest muss dafür nichts ausgeben. In Gruppen gilt das für alle ausgewählten Helden.
Ein eigenes Attribut zum Abfragen gibt es ebenfalls nicht. Abgefragt wird dieselbe Variable.
Erfolg vergeben
Beispiel: Ein Erfolg hat die Bedingung „drachenhort_gefunden mindestens 1“.
<has name="drachenhort_gefunden" show="none">
<success>
<!-- schon einmal gefunden: der Erfolg ist schon da, es wird nur mitgezählt -->
<set name="drachenhort_gefunden" scope="hero" inc="1" show="none"/>
</success>
<failure>
<!-- zum ersten Mal: schaltet den Erfolg frei -->
<store name="drachenhort_gefunden" scope="hero">1</store>
</failure>
</has>
Weil die Variable mitzählt, können später auch gestaffelte Erfolge daran hängen (mindestens 1, 10, 25 …).
Wichtig:
- Die Variable braucht scope="hero". Variablen mit scope="scene" oder scope="quest" schalten keinen Erfolg frei.
- Der Name muss genau so geschrieben sein wie in der Bedingung, auch bei Groß- und Kleinschreibung.
- Die Variable nicht wieder löschen, solange andere Quests den Erfolg darüber abfragen. Der Erfolg selbst bleibt dem Helden in jedem Fall.
Erfolg abfragen
Man prüft dieselbe Variable mit derselben Schwelle wie die Bedingung:
<has name="drachenhort_gefunden" min="1">
<success>
<p>Wieder ein Hort? Langsam wird das zur Gewohnheit.</p>
</success>
<failure>
<p>Gold, so weit das Auge reicht.</p>
</failure>
</has>
Bei einer Bedingung mit festem Wert prüft man den Wert, z.B. <has name="..." val="ja"> oder per switch.
Neuer Erfolg
Den Erfolg selbst legt der Programmierer beim Einbau an (Eintrag in der Datenbank und Bild). Auf die Questseite unter „Info für Abnahme und Einbau“ gehören:
- der Name des Erfolgs,
- ob er versteckt sein soll (erst sichtbar, wenn der Held ihn hat) oder von Anfang an sichtbar,
- die Variable und die Bedingung, z.B. „drachenhort_gefunden mindestens 1“,
- gern ein Vorschlag fürs Bild.
Soll eine neue Quest einen vorhandenen Erfolg vergeben (etwa eine weitere Begegnung derselben Art), beim Programmierer nachfragen, welche Variable dahintersteht. Die neue Quest setzt dann dieselbe Variable. Die Bedingungen versteckter Erfolge stehen bewusst nicht im Wiki.
Beispiel: Lehnsherr von Eichenstein
Der Erfolg „Vom Verwalter zum Lehnsherrn“ hängt an der Variable rittergut_auftrag mit dem Wert lehnsherr. Für Texte, die den Helden als Ritter ansprechen, ist das Attribut rittergut_status besser: Es ist überall lesbar, auch unterwegs, und steht auf verloren, wenn der Held das Gut verloren hat. Den Erfolg behält er trotzdem. Die Anrede nach Geschlecht („Ritter von Eichenstein“ / „Ritterin von Eichenstein“) liefert rittergut_titel.
<switch attribute="rittergut_status">
<case val="lehnsherr">
<p><q>Seid gegrüßt, <get attribute="rittergut_titel"/>!</q></p>
</case>
<else>
<p><q>Seid gegrüßt, Reisender!</q></p>
</else>
</switch>
Werte von rittergut_status: verwalter, lehnsherr, verloren, leer = kein Gut.