Heute ist:
6. 1/Herdfeuer/37
1165 - 21.09.2019
Realitäten
Projekte/Info
cAu und DIM
Fun
Extern
Historisch
Valid HTML 4.01!
Valid CSS!
Dokument ist vom: 3. 3/Sturmmond/15 (569 - 30.04.2008)
Creative Commons-Lizenzvertrag

CR-Format

Eine empirische Studie von Max-Julian Pogner

Quick-Links

Aufbau des CR
Block-Referenz

Einleitung

Diese Beschreibung des Eressea Computer Reports legt das hauptsächliche Augenmerk auf der Bedeutung des Inhalts einzelner Blöcke und Attribute. Der syntaktische Aufbau wird aber ebenfalls kurz angerissen.
Hierbei handelt es sich nicht um offizielle Informationen, und wurde auch in keinster Weise von Enno überprüft oder dergleichen. Schickt keine EMails bezüglich Fehler auf dieser Seite an ihn! Benutzung erfolgt auf eigene Gefahr.

Es kann sein, und ist auch sehr wahrscheinlich, dass einige Dinge hier nicht genannt werden. Ist dies der Fall, weiß ich um dieses Detail noch nicht bescheid und würde mich über eine Email an max-julian AT gmx.at freuen.

Ein Protokoll der Veränderungen findet sich im Changelog.

Andere Quellen

Neben dieser Seite existieren noch weitere CR-Format-Beschreibungen. Die mir Bekannten sind die folgenden:

Das einzig offizielle Dokument von Enno zum CR-Format (leicht veraltert). http://eressea.upb.de/~eressea/crformat.shtml.

Die aktualisierte CR-Format Beschreibung von Ingo Schwarze (CRIPSY-Entwickler) http://www.studis.de/Eressea/Tools/crispy/Doc/ref/obj/crformat.html

Danksagungen

Natürlich ist das ganze hier nicht alleine auf meinem Mist gewachsenen. Ein großer Teil wurde von Gulrak aka Steffen Schümann, Fiete Fietz und Ralf Duckstein mit getragen.
Darüber hinaus mussten noch viele Leute aus #eressea meine löchernden Fragen ertragen, deren dankenswerte Beantwortung aber ebenfalls hiezu beigetragen hat.

Creative Commons - Some Right Reserved

Dieser Inhalt ist unter einem Creative Commons Namensnennung-NichtKommerziell-Weitergabe unter gleichen Bedingungen Lizenzvertrag lizenziert. Um die Lizenz anzusehen, gehen Sie bitte zu http://creativecommons.org/licenses/by-nc-sa/2.0/at/ oder schicken Sie einen Brief an Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Syntax

Der CR besteht aus Blöcken, Attributen und Listeneinträgen. Das Format ist zeilenorientiert, also je Zeile im CR ist ein Block, ein Attribut oder ein Listeneintrag vorhanden.

Die Zeilen werden entweder durch ein Carrige-Return (0x0D) oder ein Linefeed (0x0A) getrennt. Leerzeilen haben keine Bedeutung.
Der Zeichensatz wird durch das charset-Attribut im VERSION-Block angegeben.

Ein Block, inklusive seiner Attribute und Subblöcke wird im CR dargestellt, indem zuerst der Block an sich geschrieben wird, dann alle Attribute (bzw eine Liste) aufgelistet werden, und schließlich alle Subblöcke angegeben werden. Die Subblöcke können ihrerseits dabei wieder Subblöcke haben.
Damit der daraus entstandene CR konsistent ist, es also nur einen Weg gibt die Blöcke in eine Hierarchie einzuordnen, bedarf es einerseits der unten beschriebenen Hierarchie, andererseits ist auch in gewissem Umfang auf die Anordnung gleichrangiger Blöcke (Zum Beispiel ist die Anordnung der MESSAGE-Subblöcke eines BATTLE-Blocks entscheidend) zu achten.
Als Beispiel hier ein gekürzter CR-Ausschnitt:

VERSION 64
125;Runde
7982734;date
REGION 0 0
"Foo";Name
EINHEIT 1
"Fred";Name
1;Anzahl
REGION 1 0
"Bar";Name
EINHEIT 2
"Otto";Name
1;Anzahl
Dieses konstruierte Beispiel würde folgenden Baum ergeben:
                         VERSION 64
                  +----------------------+
                  | Runde = int(125)     |
                  | date  = int(7982734) |
                  +----------------------+
                             |
            +----------------+----------------+
            |                                 |
        REGION 0 0                        REGION 1 0
 +----------------------+         +-----------------------+
 | Name = string("Foo") |         | Name = string("Bar")  |
 +----------------------+         +-----------------------+
            |                                 |
         EINHEIT 1                         EINHEIT 2
+-------------------------+      +-------------------------+
| Name   = string("Fred") |      | Name   = string("Otto") |
| Anzahl = int(1)         |      | Anzahl = int(1)         |
+-------------------------+      +-------------------------+

Generell sei noch angemerkt, dass Nummern von Einheiten, Gebäuden oder Schiffen nicht in base36 (wie im NR), sondern in base10 dargestellt werden.

Blöcke

Name und Anzahl der Blöcke sind von Version zu Version unterschiedlich, eventuell ändert sich auch die Bedeutung eines Blocks. Die Syntax ist aber immer gleich:

BLOCK      => UPPERALPHA {WS {WS} ID} {WS} [ ";" COMMENT ]
ID         => INT_VAL
COMMENT    => STRING
Siehe auch EBNF-Syntax

Die ID eines Blockes besteht aus keinem oder mehreren signed 32-bit Integer. Das Paar aus Block und ID ist eindeutig innerhalb des Superblocks, darf dort also nur einmal vorkommen.

Unbekannte Blöcke ohne ID, also solche die nicht in der Hierarchy-Information genannt werden, sind immer Subblöcke des vorhergehenden Blocks mit ID. Blöcke ohne ID sind nur in Bezug auf ihren Superblock eindeutig.

Außerdem kann hinter einem Block noch ein Kommentar vorkommen, das mit einem ";" beginnt und bis zum Ende der Zeile geht.

Beispiele für Blöcke im CR:

VERSION 64
REGION 34 -7; Kommentar
REGIONSBOTSCHAFTEN

Attribute

Name und Anzahl der Attribute sind von Version zu Version unterschiedlich. Gewisse Attribute sind bekannt, doch es existieren wohl noch weitere Attribute.

ATTRIBUTE   => VALUE {WS} ";" {WS} TAG {WS}
TAG         => ALPHANUM  { ALPHANUM | (WS ALPHANUM) }
VALUE       => STRING_VAL | INT_VAL
Siehe auch EBNF-Syntax

Jedes Attribut besteht aus einem Wert und einem Tag, die durch ein ";" getrennt sind.

Das Tag ist für das Attribut bezeichnend (Bei der Zeile "23;Holz" kann man also auch vom Holz-Attribut sprechen), und besteht aus Buchstaben, Zahlen und eventuell Leerzeichen die aber nicht am Beginn oder Ende des Tags vorkommen dürfen.

Der Wert ist entweder vom Typ String oder Integer.

Ein String beginnt und endet mit einem doppeltem Hochkomma ("), und enthält beliebige Zeichen in beliebiger Anzahl.

Doppelte Hochkomma im Wert eines String-Attributs werden mit einem Backslash escaped. Das Backslash, sollte es vorkommen, ebenfalls.
Beispiel: "Herr \"Müller\\Mayer\" Martin";Name
Ergibt ein Attribut des Typs String mit dem Tag Name und dem Wert Herr "Müller\Mayer" Martin

Ein Attribut mit Integern enthält entweder eine oder mehrere durch mindestens ein Leerzeichen getrennte Zahlen, welche jeweils einen signed 32-Bit Integer in base10 darstellen.
Beispiel: 10 5 -1;Holzfaellen

Jedes Attribut ist eindeutig einem Block zugeordnet, und darf nur einmal je Block vorkommen.

Die Tags der Attribute sind case-insensitiv. "3;Holz" ist also das selbe Attribut wie "3;holz"

Wenn ein Tag mit Umlauten, ein anderes mit einer Umschreibung der Umlaute geschrieben wird, sind sie gleich.
"30 1;Holzällen" und "30 1;Holzfaellen" sind also das selbe Attribut.

Folgende Umlaute werden fix wie folgt umschrieben:
ä == ae
ü == ue
ö == oe
ß == ss??

Andere Nicht-7Bit-ASCII Buchstaben werden nicht, oder in noch nicht bekanntem Maße umschrieben. Hinweise sind willkommen.

Die Kombination der oberen Eigenschaften ergeben eine Vielzahl von Möglichkeiten die beachtet werden müssen.
Trotzdem sollte nicht einfach alles in eine Form (lower-case ohne Umlaute) umgewandelt werden, sondern die eingelesene Schreibweise bei einer Ausgabe beibehalten werden.

Beispiele:

30 1;Bergbau
"Xandaryl";Insel
172;Runde

Listeneinträge

Listeneinträge sind die einzigen Attribute ohne einen Tag. Hier hat ein Block keine String- oder Integerattribut, sondern nur eine Reihe von "Taglosen Stringattributen" die zusammen eine Liste bilden.

LISTENEINTRAG => {WS} STRING_VAL {WS}
Siehe auch EBNF-Syntax

Wie beim normalen Stringattribut ergeben sich hier Probleme aufgrund eines möglichen Hochkommas innerhalb des Strings (siehe dort).

Beispiel für eine Liste aus drei Einträgen:

"MACHE Haus"
"Thorin; ein Recke"
"Thorin (thor) konnte kein Silber verdienen"

Reservierte Blöcke und Attribute

  • Der VERSION-Block ist der Block, der die Datei beschreibt. Es ist der erste Block im CR. Es können auch mehrere VERSION-Blöcke in einer Datei bzw in einer Eingabe vorkommen, dieser Fall ist so zu behandeln, als sei ein zweiter Report eingelesen worden (Beispiel: cat 1.cr 2.cr 3.cr | parser).
  • Runde ist ein Tag, in dem das Alter des Blocks enthalten ist. Blöcke innerhalb eines CR können unterschiedlich datiert sein, wenn z.B. ein Report aus Informationen mehrere Runden zusammengestellt wurde. Das Runde-Attribut sollte das Datum der aktuellsten Informationen über den Block angeben. Es wird auf Unterblöcke vererbt, falls also diese Blöcke neueren oder älteren Stand repräsentieren, sollten sie ein eigenes Runde-Attribut bekommen. CRs ohne Rundeninformation sind so zu behandeln, als seine sie aus Runde 0.
  • Das Konfiguration-Attribut im VERSION-Block. Es kann verwendet werden, um den Inhalt des CRs zu beschreiben, z.b. mit dem Namen des Tools, das ihn erzeugt hat, oder einer Beschreibung. Der Wert "Standard" ist für den Eressea-Server reserviert.

Hirarchie der Blöcke

Im folgenden werden alle mir bekannten Blöcke inklusive deren Attribute gelistet und deren Bedeutung beschrieben.

Die Blöcke sind in der Hierarchie so angeordnet, wie sie im CR selbst auch seitens des Servers geordnet sind, bzw bei clientspezifischen Blöcken, wie sie der Client anordnen würde.

Vor dem Doppelpunkt steht der Name des Blocks der gleichzeitig seine Schreibweise im Computerreport darstellt, nach dem Doppelpunkt steht die Anzahl der IDs des Blocks. Werden im Report nur ein Teil der IDs genannt, so sind die fehlenden Stellen rechts mit Nuller zu ergänzen.

Die Attribute der Blöcke sind über den Tag und den Typen des Wertes (siehe oben) genannt, und kurz beschrieben. Bei dynamisch auftretenden Attributen wurde darauf verzichtet, alle Möglichkeiten aufzuzählen, sondern nur eine Beschreibung des Musters geliefert.

Sollte ein Attribut garnicht im Report genannt werden, ist die Auswirkung unter "Defaultwert" genannt. Sollte kein Defaultwert angegeben sein, so ist die vom Attribut beschriebene Information undefiniert/unbekannt, und das Verhalten eines Clients nicht fix vorgegeben.

Wo es sinnvoll erscheint, können Attribute und Informationen von Superblöcken an deren Subblöcke vererbt werden. Zum Beispiel bedeutet ein REGION-Block, dass die Attribute des Blocks selbst, aber auch die Blöcke/Attribute mancher Subblöcke auf diese Region bezogen sind. Ein EINHEIT-Block beschreibt also automatisch, dass sich diese Einheit in der durch den REGION-Superblock beschriebenen Region befindet.

VERSION:1
 +-PARTEI:1
 |  +-GEGENSTAENDE:0
 |  +-OPTIONEN:0
 |  +-ALLIANZ:1
 |  +-GRUPPE:1
 |  |  `-ALLIANZ:1
 |  +-MESSAGE:1
 |  `-BATTLE:3
 |     `-MESSAGE:1
 +-ZAUBER:1
 |  `-KOMPONENTEN:0
 +-TRANK:1
 |  `-ZUTATEN:0
 +-ISLAND:1
 +-REGION:3
 |  +-MESSAGE:1
 |  +-BURG:1
 |  |   +-EFFECTS:0
 |  +-SCHIFF:1
 |  |   +-EFFECTS:0
 |  +-PREISE:0
 |  +-RESOURCE:1
 |  +-EFFECTS:0
 |  +-GRENZE:1
 |  |   +-EFFECTS:0
 |  +-DURCHSCHIFFUNG:0
 |  +-DURCHREISE:0
 |  +-EINHEIT:1
 |  |   +-COMMANDS:0
 |  |   +-TALENTE:0
 |  |   +-SPRUECHE:0
 |  |   +-KAMPFZAUBER:1
 |  |   +-GEGENSTAENDE:0
 |  |   +-EFFECTS:0
 |  |   `-EINHEITSBOTSCHAFTEN:0
 |  `-SCHEMEN:3
 +-MESSAGETYPE:1
 +-TRANSLATION:0
 `-HOTSPOT:1

VERSION verNum

Markiert den Beginn eines (sowie das Ende des eventuell vorhergehenden) Computerreports und enthält Metainformationen. Pro Report ist genau ein Block dieser Art vorhanden, es können aber auch mehrere Reports in eine Datei geschrieben werden.
IDBedeutungBeschreibung
verNumCR-VersionGibt die Versionsnummer des in diesem Report verwendeten CR-Formats an. Die aktuelle Version ist 64.
AttributTypBeschreibung
charsetstring Gibt die Zeichensatzkodierung dieses Reports an.
Solange man nichts gegenteiliges weiß (zB bei der ersten Zeile des Reports), sollte ISO-8859-1 angenommen werden.
Defaultwert: "ISO-8859-1"
Seit Report 530. Davor immer ISO-8859-1.
localestring Zeigt an in welcher Sprache dieser Report erstellt wurde.
Benutzte Werte sind "de" für Deutsch, "en" für Englisch und "fr" für Französisch. Generell ist der String also das ISO-Kürzel der verwendeten Sprache.
Defaultwert: "de"
noskillpointsint Zeigt an, ob Talenttage Geltung besitzen oder nicht.
Ab einer gewissen Regeländerung existiert dieses Attribut und ist auf dem Wert "1" für "Talenttage haben keine Bedeutung". Vor dieser Änderung fand sich dieses Attribut nicht im Computerreport, und nimmt daher den Defaultwert "0" für "Talenttage haben Bedeutung" an.
Defaultwert: 0
dateint Das Datum des Reports in Sekunden seit 1.Jänner 1970.
Spielstring Ein vom Server vergebener String zur Identifikation des Spiels von dem dieser Report handelt.
Bekannte Werte sind: "Eressea", "Tutorial" und "Wettstreit der Weisen".
Konfigurationstring Ein vom Reportersteller vergebener Wert zur Identifikation von Besonderheiten im Report, insbesondere von Unterschieden zum serverseitig erstellten Report.
Bekannte Werte sind: "Java-Tools" von Magellan, "Standard" vom Eresseaserver und "Vorlage" von Gulraks Vorlage.
Defaultwert: "Standard", also Keine Unterschiede zum Server-versendeten Report. Ein Client sollte aber immer einen eigenen Wert setzten, um Fehlern vorzubeugen.
Koordinatenstring Bezeichnet die Art der Anordnung der Regionen.
Seit der Umstellung in Eressea vor ewigen Zeiten immer "Hex".
Default: Ist das Attribut nicht genannt, handelt es sich um einen quadratischen Weltenaufbau.
Basisint Die Basis, mit der Nummern von Einheiten, Gebäuden und dergleichen dargestellt werden sollten. Auf den Computerreport selber hat dieses Attribut keine Auswirkungen.
Im aktuellen Eressea immer 36. Früher wurden Einheitennummern in base10 dargestellt.
Default: 10
Rundeint Die Runde von der dieser Report handelt.
Defaultwert: 0
Zeitalterint Das Zeitalter der spielinternen Zeitrechnung.
Seit vor ewigen Zeiten das zweite Zeitalter eingeläutet wurde, immer auf dem Wert 2.
Default: 1
mailtostring Die E-Mail Adresse des Servers.
In Eressea: "eressea-server@eressea.upb.de"
Im Eressea-tutorial: "tutorial@eressea.upb.de"
Bei allen Vinyambarvarianten: "vinyambar@eressea.amber.kn-bremen.de"
Defaultwert: je nach Spiel (bei Eressea "eressea-server@eressea.upb.de")
mailcmdstring Betreff damit der Server die Befehls-emails als solche erkennt.
In Eressea (deutsche locale): "ERESSEA BEFEHLE"
In Eressea (englische locale): "ERESSEA ORDERS"
In Wettstreit der Weisen (deutsche locale): "WDW BEFEHLE"
Defaultwert: je nach Spiel (bei Eressea "ERESSEA BEFEHLE")

PARTEI factID

Informationen über eine bestimmte Partei.
Es dürfen beliebig viele PARTEI-Blöcke im Report vorkommen.
IDBedeutungBeschreibung
factIDParteinummerDie Nummer der von diesem Block beschriebenen Partei. Diese Zahl ist innerhalb der Menge aller Parteien eindeutig.
Reserviert: 0 ... Parteinummer unbekannt (seit Report 570). Vorher war 0 die Parteinummer der Monster.
AttributTypBeschreibung
locale string Spracheinstellung der Partei. Wie beim VERSION-Block.
age int Das Alter der Partei in Runden.
Optionen int Kombinierte Optionen, gleiche Information wie im OPTIONEN Unterblock.
Defaultwert: Wenn nicht vorhanden, muss der OPTIONEN-Block konsultiert werden. Sollte dieser ebenfalls fehlen, sind die eingestellten Optionen unbekannt.
Punkte int Die Punkte der Partei. Umso mehr, umso besser.
Punktedurchschnitt int Der Punktedurchschnitt aller Parteien ähnlichen Alters.
Typ string Die Rasse der Personen dieser Partei.
typprefix string Das Rassenpräfix dieser Partei (dieses Attribut wird auf EINHEITEN dieser Partei vererbt, kann dort aber geändert werden).
Default: "" (kein Präfix)
Rekrutierungskosten int Silberkosten um eine Person zu Rekrutieren.
Anzahl Personen int Die Anzahl aller Personen dieser Partei.
Magiegebiet string Das Magiegebiet dieser Partei.
Default: "Kein Magiegebiet" (bevor eines gewählt wird)
heroes int Die aktuelle Anzahl Helden in dieser Partei. Default: 0
max_heroes int Die maximale Anzahl Helden welche diese Partei befördern kann. Default: 0
Parteiname string Der Name der Partei.
email string Die e-mail Adresse des Spielers.
banner string Das Banner der Partei.
Defaultwert: ""

Aufschlüsselung des Optionen-Attributs und der Bit-Position:
AUSWERTUNG   *    1
COMPUTER     *    2
ZUGVORLAGE   *    4
SILBERPOOL   *    8
STATISTIK    *   16
DEBUG        *   32
ZIPPED       *   64
ZEITUNG      *  128
MATERIALPOOL *  256
ADRESSEN     *  512
BZIP2        * 1024
PUNKTE       * 2048
SHOWSKCHANGE * 4096
            ========
Summe: Wert des Optionen-Attributs.

GEGENSTAENDE

Eine Liste der Gegenstände, welche mit dem BEANSPRUCHE Befehl von einer Einheit dieser Partei beansprucht werden kann.
Siehe GEGENSTAENDE als Kindblock des EINHEIT-blocks.

OPTIONEN

In diesem Block werden die eingestellten Optionen aufgelistet.
Jedes Attribut kann dabei den Wert 0 für "nicht gesetzt", oder 1 für "Option gesetzt".
AttributTypBeschreibung
AUSWERTUNG int Server schickt Normalreport.
COMPUTER int Server schickt Computerreprt.
ZUGVORLAGE int Server schickt eine Zugvorlage.
SILBERPOOL int Der Silberpool ist aktiviert.
STATISTIK int Je Region wird im Normalreport eine Statistik angezeigt.
DEBUG int Genaue Bedeutung unklar. Bis jetzt immer 0.
ZIPPED int Der Report wird gezippt übertragen.
ZEITUNG int Nicht mehr in Verwendung, Xontormia Express gibts keinen mehr.
MATERIALPOOL int Der Materialpool ist aktiviert.
ADRESSEN int Am Ende des Normalreports wird eine Liste aller E-Mailadressen angezeigt. Aktuell keine Wirkung, die Liste wird immer angezeigt.
BZIP2 int Der Report wird Bzip2-gepackt übertragen.
PUNKTE int Punkte und Punktedurschnitt werden im Normal- und Computerreport eingetragen.
SHOWSKCHANGE int Im Normalreport werden Talentsprünge hervorgehoben.

ALLIANZ factID

Liefert Informationen über das Allianzverhältnis zu einer Partei (HELFE-Stati). Ist der Block zur gänze nicht im Report enthalten, sind keine HELFE-Stati zu dieser Partei gesetzt.
IDBedeutungBeschreibung
factIDParteinummerDie Nummer der anderen Partei, zu welcher die HELFE-Stati gesetzt sind.
AttributTypBeschreibung
Parteiname string Der Name der Partei, dessen Allianz-status beschrieben wird.
Status int HELFE-Status zu dieser Partei.
Defaultwert: 0
Wie beim Optionen Attribut des PARTEI-Blocks, berechnet sich der Wert des Status-Attributs aus einer Bitverschiebung mit anschließender Addition:
SILBER         *  1
KÄMPFE         *  2
WAHRNEHMUNG    *  4
GIB            *  8
BEWACHE        * 16
PARTEITARNUNG  * 32
              ======
Summe: Wert des Status-Attributs.
Anmerkung: Der Status HELFE WAHRNEHMUNG ist im aktuellen Eressea-Regelwerk nicht mehr aktiv, und hat keine Bedeutung.
Anmerkung 2: Wenn die Stati SILBER, KÄMPFE, GIB, BEWACHE und PARTEITARNUNG gesetzt sind, nennt man diesen Kombinierten Zustand auch HELFE ALLES.

GRUPPE groupID

Der GRUPPE-Block dient hauptsächlich zur gruppierung der ALLIANZ-Subblöcke, welche das Allianzverhältnis dieser Gruppe und nicht der gesamten Partei beschreiben.
IDBedeutungBeschreibung
groupIDGruppennummer Die Nummer der beschriebenen Gruppe. Diese Zahl ist innerhalb der Menge aller Gruppen einer Partei eindeutig.
AttributTypBeschreibung
name string Der Name der Gruppe.
typprefix string Das Rassenpräfix dieser Gruppe.

MESSAGE msgID

Ein MESSAGE-Block enthält eine Nachricht (Ereignismeldung, Warnung, Wirtschafts-/Handelsmeldung, ...).
Die verwendeten Attribute hängen (bis auf das type-Attribut) von dem zugehörigen MESSAGETYPE-Block ab, und ergeben sich aus dem dortigen text-Attribut.

Sollte einmal auf ein Attribut der MESSAGE innerhalb des text-Attributes des MESSAGETYPE-Blocks zugegriffen werden, dieses aber nicht vorhanden sein, so ist in manchen Fällen die Annahme eines Defaultwertes von 0 bzw "" richtig, in den meisten Fällen ist dies aber ein spezieller Fall bei dem das Attribut den Wert NULL annehmen sollte, den es bei vorhanden sein des Attributes im Report niemals erreichen kann.

IDBedeutungBeschreibung
msgIDNachrichtennummer Die Nummer der Meldung.
Diese Zahl ist sicher innerhalb eines Reports eindeutig, und vermutlich sogar innerhalb der Menge aller Nachrichten einer Runde eindeutig.
AttributTypBeschreibung
type int Gibt die ID des zugehörigen MESSAGETYPE-Blocks an.
rendered string Die serverseitig "gerenderte" Nachricht, wie sie dem Spieler im Normalreport dargestellt wird. Theoretisch sollte beim clientseitigen Rendern (mit Hilfe des MESSAGETYPE-Blocks), der gleiche String herauskommen.

BATTLE x y z

Der BATTLE-Block umschließt eine Menge von MESSAGE-Blöcken, welche zusammen einen Kampfbericht ergeben.
Wichtig ist, das die Reihenfolge der Kindblöcke eingehalten wird.
IDBedeutungBeschreibung
xX-KoordinateDie X-Koordinate des Kampfes.
yY-KoordinateDie Y-Koordinate des Kampfes.
zZ-KoordinateDie Z-Koordinate des Kampfes.

ZAUBER zauberID

Ein ZAUBER-Block befindet sich dann im Report, wenn ein neuer Zauber gewirkt werden kann, oder wenn ein entsprechender ZEIGE Befehl gesetzt wurde. Um die Eigenschaften aller Zauber zu erfahren, muss man also auch ältere Computerreports konsultieren.
Weiters ist zu beachten, dass der im Normalreport genannte Befehlssyntax für Zauber nicht im Computerreport enthalten ist.
IDBedeutungBeschreibung
zauberIDZaubernummer Die Nummer des Zaubers.
Es handelt sich hier zwar um eine eindeutige Nummer, bezogen auf die Menge aller Zauber, doch kann man nie sicher sein ob die nächste Regeländerung nicht eine Änderung der Zaubernummer mit sich bringt.
AttributTypBeschreibung
name string Der Name dieses Zaubers.
level int Die Stufe des Zaubers.
rank int Der Rang des Zaubers.
info string Eine menschenlesbare Beschreibung der Wirkungsweise des Zaubers.
class string Die Klasse des Zaubers. Bekannte Werte sind:
"combat" ... Ein Kampfzauber
"normal" ... Ein normaler Zauber
"postcombat" ... Ein Postkampfzauber
"precombat" ... Ein Präkampfzauber
far int Ungleich 0, Wenn es sich um einen Fernkampfzauber handels.
Defaultwert: 0
ship int Ungleich 0, Wenn es sich um einen Shiffszauber handelt.
Defaultwert: 0
familiar int Ungleich 0, Wenn es sich um einen Vertrautenzauber handelt.
Defaultwert: 0
syntax string Die Syntax eines Zauber in kryptischer Form. Die Einhaltung ist zum erfolgreichen Zaubern notwendig aber nicht hinreichend.

Bekannte Beispiele (unvollständig):

ZAUBERE [STUFE n] Zauber
"";syntax

ZAUBERE [STUFE n] Zauber <Einheit-Nr>
"u";syntax

ZAUBERE Zauber <Einheit-Nr> <investierte Aura>
"ui";syntax

ZAUBERE [REGION x y] [STUFE n] Zauber REGION
ZAUBERE [REGION x y] [STUFE n] Zauber EINHEIT <Einheit-Nr>
ZAUBERE [REGION x y] [STUFE n] Zauber GEBÄUDE <Gebäude-Nr>
ZAUBERE [REGION x y] [STUFE n] Zauber SCHIFF <Schiff-Nr>
"kc?";syntax

ZAUBERE Zauber <Richtung>
"c";syntax

ZAUBERE [STUFE n] Zauber <Einheit-Nr> [<Einheit-Nr> ...]
"u+";syntax

Bedeutung der einzelnen Buchstaben:

'c' = Zeichenkette
'k' = REGION|EINHEIT|STUFE|SCHIFF|GEBAEUDE
'i' = Zahl
's' = Schiffsnummer
'b' = Gebaeudenummer
'r' = Regionskoordinaten (x, y)
'u' = Einheit
'+' = Wiederholung des vorangehenden Parameters
'?' = vorangegangener Parameter ist nicht zwingend

Defaultwert: ZAUBERE [STUFE n] Zauber
oder Syntax nicht bekannt.
Seit Report 511.

KOMPONENTEN

Die Auflistung der "materiellen" Komponenten eines Zaubers. Neben den unten aufgelistetn häufigen Attributen, ist generell jeder Gegenstandsname als Tag erlaubt. Die Art und das Schema der Werte ist bei allen Attributen gleich.
AttributTypBeschreibung
Aura int int Der erste int-Wert bezeichnet die grundsätzlichen Aurakosten,
der zweite Wert besagt, ob die Kosten bei Stufe n das n-fache (wert ist ungleich 0) oder das 1-fache (wert ist gleich 0) betragen.
Defaultwert: 0 0
permanente Aura int int Wie Aura, nur handelt es sich um permanente Aurakosten. Auch hier bestimmt der erste int-Wert die grundsätzlichen Kosten, und der zweite Wert ob der erste Wert mit der Stufe multipliziert wird.
Defaultwert: 0 0

TRANK trankID

Wie der ZAUBER-Block wird ein TRANK-Block nur einmal bei Entdeckung eines neuen Trankes in den Computerreport geschrieben.
IDBedeutungBeschreibung
trankID Tranknummer Diese Nummer ist innerhalb der Menge aller Tränke eindeutig.
AttributTypBeschreibung
Name string Der Name des Tranks
Stufe int Die Stufe des Tranks.
Defaultwert: 0
Beschr string Die Beschreibung der Trankwirkung.

ZUTATEN

Dieser Block enthält die Auflistung der nötigen Zutaten um einen Trank zu brauchen. Meistens nur Kräuter.
Wie eine eventuelle benötigte Anzahl ungleich eins dargestellt wird ist unbekannt.
AttributTypBeschreibung
--- Liste Je Listeneintrag in der Liste wird eine Zutat angegeben. Die Menge der Zutat ist 1.
Zum Beispiel:
ZUTATEN
"Flachwurz"
"Fjordwuchs"

ISLAND islandID

Ein Block, der verwendet wird, wenn die erste oder dritte Methode der Inselbenennung angewandt wird (siehe Insel-Attribut des REGION-Blocks).

Kommt nicht in der Konfiguratin "Standard" vor.

IDBedeutungBeschreibung
islandID Inselnummer Die Nummer der Insel.
AttributTypBeschreibung
Name string Der Name der Insel.

REGION xyz

Der REGION-Block beschreibt genau eine Region, welche sich an den in den IDs angegebenen xyz-Koordinaten befindet.
Eine Region ist dann im serverseitig generierten Report aufgelistet, wenn sich entweder eine eigene Einheit in dieser befindet, oder einer der beim visibility-Attribut aufgelisteten Fälle eintritt.
IDBedeutungBeschreibung
x X-Koordinate Die X-Koordinate der Region.
y Y-Koordinate Die Y-Koordinate der Region.
z Z-Koordinate Die Z-Koordinate der Region, auch Ebene genannt. Ebene 0 ist zum Beispiel der Normalraum (Dann wird die Koordinate vom Server garnicht angegeben). Ebene 1 ist der "Astralraum".
AttributTypBeschreibung
id int Die global eindeutige und unveränderliche Nummer der Region. Ursprünglich eingeführt um das Zusammenfügen mehrer Karten zu erleichtern.
Reserviert: 0 ... id der Region unbekannt.
Defaultwert: 0
Wertebereich: 1 bis 0xFFFFFFFF inklusive (unsigned 32bit int).
Seit Report 570
Name string Der Name der Region. Entweder automatisch vom Server vergeben, oder durch den BENENNE REGION Befehl bestimmt.
Terrain string Bezeichnet die Art des Terrains in dieser Region. Bekannte Werte sind: "Ozean", "Ebene", "Wald", "Hochland", "Gebirge", "Berge", "Wüste", "Sumpf", "Gletscher", "Vulkan", "Aktiver Vulkan", "Eisberg", "Feuerwand", "Nebel", "Dichter Nebel".
Insel string/int Kommt nicht in der Konfiguration "Standard" vor.

Zwischen dem Vorlage-Entwickler (Glurak) und den Magellanentwicklern hat man sich auf ein einheitliches System geeinigt, das allerdings noch nicht implementiert ist.
Hierbei wird auf einer Region einer Insel ein Insel-Attribut angelegt, oder mehrere Regionen mit unterschiedlichen Werten, falls die Insel bezüglich des Namens geteilt ist, das als int-Wert die Nummer der Insel enthält.
Existiert nur ein solch ein Insel-Attribut auf der Insel, wird so die gesamte Insel benannt. Existieren jedoch mehrere Attribute, entscheidet die Entfernung einer Region zu den benennenden Regionen zu welchem Teil der Insel diese Region nun gehört.
Weiters existiert je Insel ein ISLAND-Block, der die weitere Benennung und Beschreibung der Insel enthält.

Aktuell sind noch folgende beiden Systeme etabliert:

Die Mercator-Methode, ist das zuerst vom Client Mercator etablierte System. Hierbei wird wie in der erstgenannten Methode ein Insel-Attribut in einer der Regionen einer Insel angelegt, welches jedoch direkt den Inselnamen als String enthält.
Auch hier wird der Name an die anderen Regionen der Insel wie oben weitergegeben. Ein zusätzlicher Block existiert nicht.

Die von Magellan angewendete Methode verwendet auch ein Insel-Attribut mit einem String als Wert, doch wird der Inhalt des Strings zwingend als base10 Integer interpretiert. Die weitere Beschreibung der Insel geschieht hier über einen ISLAND-Block.
Bei dieser Methode wird der Name allerdings nicht von Region zur restlichen Insel weitergegeben, sondern jede Region einer Insel muss ein Attribut mit der Inselnummer als String enthalten.

Beschr string Die per BESCHREIBE REGION Befehl gegebene Beschreibung der Region.
Defaultwert: ""
visibility string Dieses Attribut besagt durch welchen Umstand die Region von den eigenen Einheiten eingesehen wird, falls sich nicht sowieso eine eigene Einheit in der Region befindet (und man folglich die Region komplett einsieht, sieht man von getarnten Einheiten ab).
Bei einem serverseitig generierten Report gibt es folgende Möglichkeiten:
"" Entweder befindet sich eine eigene Einheit in der Region, oder es befindet sich weder eine Einheit in der Region noch trifft einer der unteren Fälle zu.
"travel" Eine eigene Einheit hat diese Region durchreist
"lighthouse" Diese Region wird mittels Leuchtturm erblickt
"neighbour" Diese Region ist zumindest einer Region benachbart, in welcher man eigene Einheiten besitzt.
Seit Report 456.
Treffen mehrere Faktoren zu (zB: ein eigenes Schiff durchreist ein durch einen eigenen Leuchtturm erblicktes Ozeanfeld), wird der oberste Wert genommen (in diesem Beispiel also "travel").
Defaultwert: ""
Baeume int Die Anzahl der Bäume in dieser Region. Siehe auch den RESOURCE-Block.
Defaultwert: Ist kein Baeume-Attribut vorhanden, so gelten die Angaben eines entsprechenden RESOURCE-Blocks. Ist dieser auch nicht vorhanden, ist der Wert 0.
Schoesslinge int Die Anzahl der Schößlinge in dieser Region. Siehe auch den RESOURCE-Block.
Defaultwert: Ist kein Schoesslinge-Attribut vorhanden, so gelten die Angaben eines entsprechenden RESOURCE-Blocks. Ist dieser auch nicht vorhanden, ist der Wert 0.
Mallorn int Wenn ungleich 0, handelt es sich in dieser Region nicht um normale Bäme sondern um Mallorn.
Defaultwert: 0
Bauern int Die Anzahl der Bauen in dieser Region.
Defaultwert: 0
Pferde int Die Anzahl der Pferde in dieser Region.
Defaultwert: 0
Silber int Das Regionssilber dieser Region. (Das ist die Summe allen Silbers welches den Bauern dieser Region gehört).
Defaultwert: 0
Unterh int Der maximale Wert, welcher mit dem Befehl UNTERHALTE eingenommen werden kann.
Defaultwert: 0
Rekruten int Die maximale Anzahl von Bauern, die insgesamt mit dem REKRUTIEREN Befehl rekrutiert werden können.
Defaultwert: 0
Lohn int Der Lohn, welche eine mittels ARBEITEN arbeitende nicht-Ork-Einheit pro Person verdient. Für die Ork-Werte existiert auf www.eressea.de eine Umrechnungstabelle.
Defaultwert: 0
Steine int Die Anzahl der Steine, welche auf der aktuellen Stufe abgebaut werden können. Die Stufe ist nur über den RESOURCE-Block zu erfahren.
Defaultwert: Ist kein Steine-Attribut vorhanden, so gelten die Angaben eines entsprechenden RESOURCE-Blocks. Ist dieser auch nicht vorhanden, ist der Wert 0.
Eisen int Wie Steine.
Defaultwert: Ist kein Eisen-Attribut vorhanden, so gelten die Angaben eines entsprechenden RESOURCE-Blocks. Ist dieser auch nicht vorhanden, ist der Wert 0.
Laen int Befindet sich in dieser Region Laen, wird hier die Anzahl des gesichteten Laens angezeigt. Wie bei Stein und Eisen, ist aber der zugehörige RESOURCE-Block bevorzugt zu verwenden.
Defaultwert: Ist kein Laen-Attribut vorhanden, so gelten die Angaben eines entsprechenden RESOURCE-Blocks. Ist dieser auch nicht vorhanden, ist der Wert 0.

BURG buildID

Ein BURG-Block beschreibt generell ein Gebäude. Um welche Art von Gebäude es sich genau handelt, wird durch das Typ-Attribut bestimmt.
IDBedeutungBeschreibung
buildID Gebäudenummer Die Nummer des Gebäudes. Diese Zahl ist innerhalb der Menge aller Gebäude eindeutig.
AttributTypBeschreibung
Typ string Die Art des Gebäudes. Bekannte Werte sind: "Akademie", "Befestigung", "Bergwerk", "Burg", "Damm", "Festung", "Grundmauern", "Hafen", "Handelsposten", "Karawanserei", "Leuchtturm", "Magierturm", "Monument", "Pferdezucht", "Sägewerk", "Schmiede", "Steinbruch", "Taverne", "Tunnel", "Turm" und "Zitadelle".
wahrerTyp string Ist bei einem Gebäude der wahre Typ verborgen, kann ihn aber trotzdem erkennen, wird der wahre Typ in diesem Attribut genannt und im Attribut "Typ" der vorgetäuschte Typ.
Existiert das Attribut nicht, so kann man entweder den wahren Typen des Gebäudes nicht erkennen, oder der Typ ist nicht verborgen.
Name string Der Name des Gebäudes.
Beschr string Die per BESCHREIBE BURG Befehle gesetzte Beschreibung.
Defaultwert: ""
Groesse int Die Größe des Gebäudes.
Besitzer int Die Einheitennummer der besitzenden Einheit.
Defaultwert: Bei Nichtnennung des Attributs im Report ist dieses Gebäude ohne Besitzer.
Partei int Die Parteinummer der besitzenden Partei
Defaultwert: Bei Nichtnennung des Attributs im Report ist dieses Gebäude ohne Besitzer.

SCHIFF shipID

Beschreibt ein Schiff.
IDBedeutungBeschreibung
shipID Schiffsnummer Die innerhalb der Menge alles Schiffe eindeutige Nummer des Schiffes.
AttributTypBeschreibung
Name string Der Name des Schiffes.
Beschr string Die Beschreibung des Schiffes.
Defaultwert: ""
Typ string Die Art des Schifes. Bekannte Werte sind: "Boot", "Langboot", "Drachenschiff", "Karavelle" und "Tireme".
Groesse int Die Größe des Schiffes.
Schaden int Der Schaden des Schiffes in Prozent.
Defaultwert: 0
Kapitaen int Die Nummer der Kapitänseinheit.
Defaultwert: Bei Nichtnennung des Attributs im Report ist dieses Gebäude ohne Kapitän.
Partei int Die Parteinummer der Kapitänseinheit.
Defaultwert: Bei Nichtnennung des Attributs im Report ist dieses Gebäude ohne Kapitän.
Ladung int Die Beladung des Schiffes in GE.
Wird in Zukunft entfernt.
MaxLadung int Die maximale Beladung des Schiffes in GE.
Wird in Zukunft entfernt.
cargo int Die Beladung des Schiffes in Silberstückäquivalent.
Defaultwert: Ist dieses Attribut nicht im CR, so ist das Gewicht der Ladung unbekannt.
Seit Report 458.
capacity int Die maximale Beladung des Schiffes in Silberstückäquivalent.
Defaultwert: Ist dieses Attribut nicht im CR, so ist die maximale Ladung unbekannt.
Seit Report 458.
Kueste int Bezeichnet die Küste an der sich das Schiff befindet.
0Nordwestküste
1Nordostküste
2Ostküste
3Südostküste
4Südwestküste
5Westküste

Defaultwert: Bei Nichtnennung des Attributs befindet sich das Schiff auf keiner Küste.

PREISE

Der Preise für Luxusgüter, den man bei Verkauf in dieser Region erziehlt. Ein negativer Wert bedeutet, dass man dieses Luxusgut, mit dem Absolutbetrag des angegebenen Grundpreis, kaufen kann.
Ist kein PREISE-Block für eine Region vorhanden, kann man hier Luxusgüter weder kaufen noch verkaufen.
AttributTypBeschreibung
Balsam int Der Preis für Balsam.
Gewürz int Der Preis für Gewürze.
Juwel int Der Preis für Juwelen.
Myrrhe int Der Preis für Myrrhe.
Öl int Der Preis für Öl.
Seide int Der Preis für Seide.
Weihrauch int Der Preis für Weihrauch.

RESOURCE resID

Ein RESOURCE-Block wird dann in einer Region aufgelistet, wenn in dieser Region eine bestimmte Art von Resourcen gefunden wurden.
IDBedeutungBeschreibung
resID Resourcentyp Die resID ist ein hash des Wertes vom type-Attribut, und sagt somit aus um welche Resource es sich handelt. Die Hashfunktion ist aber nicht fix, und könnte sich im laufe der Zeit ändern.
Bei allen Resourcen existiert noch ein Attribut direkt im REGION-Block, welches früher verwendet wurde und noch aus Kompatibilitätsgründen beibehalten wird. Die Informationen aus dem RESOURCE-Block (so vorhanden) sind gegenüber den alten Attributen bevorzugt zu behandeln.
AttributTypBeschreibung
type string Der Typ der Resource.
Der Wert hier entspricht der Bedeutung der resID, also "Eisen" wenn die resID 235898859 ist, und so fort. Es gibt also die Werte "Eisen", "Schößlinge", "Mallornschößlinge", "Mallorn", "Bäume", "Laen" und "Steine" mit den entsprechenden resID Werten.
skill int Der Mindesttalentwert den man benötigt um diese Resource zumindest teilweise abzubauen.
number int Die gefundene Menge der Resource.

GRENZE grenzID

Ein GRENZE-Block beschreibt eine Begebenheit, welche nur beim betreten bzw. verlassen einer Region über eine bestimmte Himmelsrichtung zum tragen kommt (zum Beispiel Straßen).
IDBedeutungBeschreibung
grenzID Nummer Eine durchlaufende Nummer, ohne erkennbarer tiefgründigeren Bedeutung.
AttributTypBeschreibung
typ string Die Art der Grenze.
Bekannte werte sind: "Straße" und "Feuerwand".
richtung int Die von der Grenze betroffene Himmelsrichtung. 0 .. Nordwesten, 1 .. Nordosten, usw.
prozent int Der Grad der Fertigstellung dieser Grenze (zB Strassen wirken erst bei 100%).

EFFECTS

Der Block beinhaltet eine Aufzählung aller sichtbaren Effekte (meist magischer Natur) die den Superblock betreffen (zB REGION, EINHEIT, SCHIFF oder BURG).
AttributTypBeschreibung
--- Liste Pro Listeneintrag in wird ein Effekt gespeichert.
Eine Zeile hat hierbei folgendes besonderes Format:
EFFECT     => "\"" EFFECT_STR "(" NUMMER ")"
            | "\"" EFFECT_NUM EFFECT_STR"\""
EFFECT_STR => {ANY_ASCII_CHAR}
EFFECT_NUM => NUMBER
NUMMER     => BASE36 [BASE36 [BASE36 [BASE36]]]
BASE36     => "0" | ... | "9" | "a" | ... | "z" | "A" | ... | "Z"

Der EFFECT_STR Teil ist hierbei ein vom genauen Effekt abhängiger String, der vom Spieler lesbar ist. Der NUMMER Teil ist eine base36 Zahl, welche die Nummer des Effekts angibt. Die Nummer eines Effektes ist fix vergeben, hält der Effekt also über mehrere Runden an, so findet sich beim entsprechenden Listeneintrag immer die selbe Nummer.

Es gibt alternativ dazu auch Effekte von Alchemistischen Tränken, welche keine Effekt-Nummer haben, sondern durch deren Anzahl und einen vom Spieler lesbaren String gegeben sind.

DURCHSCHIFFUNG

Die hier aufgelisteten Schiffe haben diese Region bei ihrer Fahrt durchquert.
AttributTypBeschreibung
--- Liste Pro Listeneintrag wird ein Schiff (Name plus Nummer) in folgender Form genannt:
DURCHSCHIFFUNG => "\"" NAME "(" NUMMER ")"
NAME           => {ANY_ASCII_CHAR}
NUMMER         => BASE36 [BASE36 [BASE36 [BASE36]]]
BASE36         => "0" | ... | "9" | "a" | ... | "z" | "A" | ... | "Z"
NAME ist naheliegender Weise der Name des Schiffes, und die base36 NUMMER in Klammern die Schiffsnummer.

DURCHREISE

Die hier aufgelisteten Einheiten haben diese Region bei ihrer Reise durchquert.
AttributTypBeschreibung
--- Liste Pro Listeneintrag wird eine Einheit genannt. Das Format entspricht dem des DURCHSCHIFFUNG-Blocks.

EINHEIT unitID

Ein EINHEIT-Block beschreibt eine Einheit.
IDBedeutungBeschreibung
unitID Einheitennummer Die, in Bezug auf die Menge aller Einheiten, eindeutige Nummer dieser Einheit.
AttributTypBeschreibung
Name string Der Name der Einheit.
Beschr string Die Beschreibung der Einheit.
Defaultwert: ""
privat string Die private Beschreibung der Einheit.
Defaultwert: ""
gruppe int Die Nummer der Gruppe (grouID), zu der diese Einheit gehört.
Defaultwert: 0 (keine Gruppe)
Partei int Die Parteinummer zu der diese Einheit gehört, oder sich ausgibt zu gehören.
Default: Ist das Attribut nicht im CR, ist die Partei unbekannt.
Parteitarnung int Hat den Wert 1, wenn diese Einheit parteigetarnt ist. Sonst ist nichts bekannt.
Anderepartei int Wenn die wahre Parteizugehörigkeit dieser Einheit bekannt ist (entweder eine eigene Einheit oder hinreichende HELFE-Stati):
Die Parteinummer jener Partei, als welche sich diese Einheit parteitarnt.
Default: Der genannte Fall trifft nicht zu.
Verraeter int 1, wenn die Einheit fremd ist und sich als eigene Partei parteitarnt, und die wahre Parteizugehörigkeit nicht bekannt ist (es sich also um einen Verräter handelt).
Default: 0 (kein Verräter)
typprefix string Der Rassenpräfix dieser Einheit. Bei der Zusammensetzung mit dem Rassentyp ist zu beachten, dass die Rasse (Typ-Attribut) der Einheit mit einem Großbuchstaben beginnt, dieser also vorher in einen Kleinbuchstaben umzuwandeln ist.
Defaultwert: ""
Anzahl int Die Anzahl von Personen in dieser Einheit.
Typ string Die Rasse der Personen dieser Einheit. Eventuell noch mit dem Rassenpräfix (typprefix-Attribut) modifiziert.
wahrerTyp string Die echte Rasse der Personen dieser Einheit, zB wenn sich ein Dämon Rassengetarnt hat.
Defaultwert: Ist dieses Attribut nicht im CR vorhanden, entspricht der wahrerTyp dem Typ.
Burg int Die Nummer der Burg, in welcher sich die Einheit befindet.
Defaultwert: 0 (Einheit ist in keiner Burg)
Schiff int Die Nummer des Schiffes, in welchem sich die Einheit befindet.
Defaultwert: 0 (Einheit ist in keinem Schiff)
bewacht int Ungleich 0, wenn diese Einheit die Region bewacht.
Defaultwert: 0
temp int Wenn vorhanden, enthält die TEMP-ID der Einheit welche sie vorige Runde hatte.
Defaultwert: War vorige Runde keine TEMP-Einheit.
alias int Wenn vorhanden, gibt die unitID der Einheit in der vorigen Runde an.
Defaultwert: Wenn nicht vorhanden, hatte sich die unitID nicht verändert.
Kampfstatus int Der Kampfstatus dieser Einheit.
0aggressiv
1kämpft nicht
2hinten
3defensiv
4kämpft nicht
5flieht
unaided int Ungleich 0, wenn der Einheit nicht automatisch bei einer Attacke gegen sie geholfen wird (siehe den Befehl KÄMPFE HELFE NICHT)
Defaultwert: Ist das Attribut nicht im CR, so ist der unaided-Status entweder auf 0 gesetzt oder unbekannt.
Aura int Wieviel Aura diese Einheit im Augenblick hat.
Defaultwert: Ist dieses Attribut nicht im CR, so hat die Einheit keine Aura (Oder die Auramenge ist unbekannt).
Auramax int Der Maximalwert, bis zu welchem Aura regeneriert werden kann.
Defaultwert: Ist dieses Attribut nicht im CR, so hat die Einheit keine Aura (Oder die Auramax Menge ist unbekannt).
hp string Ein String in menschenlesbarer Form der den gesundheitlichen Zustand der Einheit beschreibt. Zur Zeit bekannt sind "erschöpft", "verwundet" und "schwer verwundet".
Defaultwert: Ist dieses Attribut nicht im CR, so ist die Einheit bei voller Gesundheit oder der Gesundheitsstatus ist unbekannt.
weight int Das Gesamtewicht der Einheit (Personen plus Gegenstände) in Silberstückäquivalent.
Defaultwert: Ist dieses Attribut nicht im CR, so ist das Gewicht unbekannt.
Seit Report 458.
familiarmage int Falls diese Einheit ein Vertrauter ist, wird hier die Einheiten-Nummer des zugehörigen Magiers angegeben.
Defaultwert: Ist dieses Attribut nicht im CR, so ist diese Einheit kein Vertrauter.
Seit Report 468 (oder ein bischen früher).

COMMANDS

Die Liste von Befehlen, die die Einheit im Augenblick hat. (Diese müssen eventuell noch eingesendet werden um tatsächliche Wirkung zu zeigen.)
AttributTypBeschreibung
--- Liste Je Listeneintrag wird eine Befehlszeile angegeben.

TALENTE

Unter diesem Block sind alle Talentwerte einer Einheit zusammengefasst. Hier ist nur ein Talent als Beispiel dargestellt, alle anderen Talente werden in der selben Art und Weise aufgelistet
(Hinweis: Welche Talente es alle gibt, ist unbekannt).
AttributTypBeschreibung
Holzfällen int-triple Der erste Wert ist in allen neueren Report zu ignorieren (siehe noskillpoints-Attribut des VERSION-Blocks). In den älteren Computerreports gibt er die Anzahl der gesammelten Lerntage in diesem Talent an.
Der zweite Wert gibt die aktuelle Stufe in diesem Talent an (kann auch 0 sein, wenn es einmal gelernt wurde, aber durch Mali noch auf 0 ist).
Der nicht immer vorhandene dritte Wert gibt die Veränderung der Talentstufe im Vergleich zur Vorwoche an.
Defaultwert: Default des dritten Int-Werts ist 0. Wird ein Talent nicht genannt, wird es nicht beherrscht, oder die Talente dieser Einheit sind gänzlich unbekannt.

SPRUECHE

Hier aufgelistet werden alle Zaubersprüche, die von dieser Einheit gezaubert werden können.
AttributTypBeschreibung
--- Liste Pro Listeneintrag wird der Name eines Zaubers genannt.

KAMPFZAUBER kampfzID

Gibt an, dass ein bestimmter Kampfzauber gesetzt ist, also im falle eines Kampfes gezaubert wird.
IDBedeutungBeschreibung
kampfzID Kampfzaubertyp 0 ... Präkampfzauber
1 ... Kampfzauber
2 ... Postkampfzauber
AttributTypBeschreibung
name string Der Name des Kampfzaubers.
level int Die Stufe, auf der dieser Zauber im Kampffall gezaubert werden wird.

GEGENSTAENDE

Die Auflistung aller Gegenstände die diese Einheit besitzt.
Aus Gründen der Übersichtlichkeit nur beispielhaft an Holz dargestellt:
AttributTypBeschreibung
Holz int Der Wert bezeichnet die Menge des genannten Gegenstandes bei dieser Einheit.
Defaultwert: 0

EINHEITSBOTSCHAFTEN

Seit 25.07.2005 (Report 434) werden Einheitsbotschaften als normale MESSAGE behandelt, mit eigenem MESSAGETYPE.
Einheiten können mittels den Varianten des BOTSCHAFT Befehls Botschaften erhalten, welche hier aufgelistet werden.
AttributTypBeschreibung
--- Liste Je Listeneintrag wird eine Botschaft gelistet.

SCHEMEN xyz

Ist man im Astralraum, sieht man Schemen. Dieser Block beschreibt einen gesichteten Schemen. Die Koordinaten stimmen mit einem eventuell existierendem REGION-Block überein.
IDBedeutungBeschreibung
x X-Koordinaten Die X-Koordinate der schemenhaft gesichteten Region im Normalraum.
y Y-Koordinaten Die Y-Koordinate der schemenhaft gesichteten Region im Normalraum.
z Z-Koordinaten Die Z-Koordinate der schemenhaft gesichteten Region im Normalraum.
AttributTypBeschreibung
Name string Der Name der schemenhaft gesichteten Region im Normalraum.

MESSAGETYPE type

Zu jeder Art von Nachricht existiert ein MESSAGETYPE Block der beschreibt, wie eine Nachricht clientseitig zu Verarbeiten wäre.
IDBedeutungBeschreibung
type Nachrichtentyp Mehrere Nachrichten sind jeweils einem Typus zugeordnet. Diese Zahl ist zwar eindeutig innerhalb eines Reports, kann sich aber von Woche zu Woche ändern (und tut dies auch regelmäßig).
Die Ereignisse um Runde 460 haben gezeigt, dass die Message-IDs eher fix geworden sind. Dies ist aber nicht sicher.
AttributTypBeschreibung
text string Dieser String gibt an, wie der MESSAGE-Block "gerendert" (also durch einen String dargestellt) wird (siehe rendered-Attribut des MESSAGE-Blocks)

Generell besteht der Wert des text-Attributs aus reinem Text, welcher 1:1 übernommen wird, und Text der zu ersetzenden ist.

Der Wert des String-Attributs nimmt diese Gestalt an (Siehe bei Beschreibung des Attribut-Syntax wegen Hochkomma-escapen):

TEXT => "\"" { ATTR | FUNC | CHAR } "\""
EXPR => ATTR | FUNC | STRING | CONST
ATTR => "$" ALPHA { ALPHANUM }
      | "${" {WS} ALPHA { ALPHANUM } {WS} "}"
FUNC => "$int"   {WS} "(" {WS} EXPR {WS} ")"
      | "$if"        {WS} "(" {WS} EXPR {WS} "," {WS} EXPR {WS} "," {WS} EXPR {WS} ")"
      | "$eq"        {WS} "(" {WS} EXPR {WS} "," {WS} EXPR {WS} ")"
      | "$unit"      {WS} "(" {WS} EXPR {WS} ")"
      | "$region"    {WS} "(" {WS} EXPR {WS} ")"
      | "$building"  {WS} "(" {WS} EXPR {WS} ")"
      | "$ship"      {WS} "(" {WS} EXPR {WS} ")"
      | "$faction"   {WS} "(" {WS} EXPR {WS} ")"
      | "$resource"  {WS} "(" {WS} EXPR {WS} "," {WS} EXPR {WS} ")"
      | "$resources" {WS} "(" {WS} EXPR {WS} ")"
      | "$order"     {WS} "(" {WS} EXPR {WS} ")"
      | "$isnull"    {WS} "(" {WS} EXPR {WS} ")"
      | "$strlen"    {WS} "(" {WS} EXPR {WS} ")"
      | "$add"       {WS} "(" {WS} EXPR {WS} "," {WS} EXPR {WS} ")"
      | "$direction" {WS} "(" {WS} EXPR {WS} ")"
      | "$localize"  {WS} "(" {WS} EXPR {WS} ")"
      | "$skill"     {WS} "(" {WS} EXPR {WS} ")"
      | "$spell"     {WS} "(" {WS} EXPR {WS} ")"
      | "$sace"      {WS} "(" {WS} EXPR {WS} ")"
      | "$weight"    {WS} "(" {WS} EXPR {WS} ")"
STRING   => "\"" EXPR "\""
CONST    => {NUM} { {WS} {NUM} }
CHAR     => ALPHA | NUM | WS | SYMB | UMLAUT
ALPHANUM => ALPHA | NUM
ALPHA    => "a" | ... | "z" | "A" | ... | "Z"
UMLAUT   => "ä" | "ü" | ... | "ß"
NUM      => "0" | ... | "9"
WS       => " "
SYMB     => "." | "," | "\\$" | HTAB
HTAB     => 0x09

Die mit "$" beginnenden Teile sind nun speziell zu behandelnde Funktionsaufrufe und Verweise auf ein Attribut im MESSAGE-Block.

Funktionen

$int( expr )
Es wird versucht expr als int zu interpretieren und in die umgebende Zeichenkette eingebettet. Diese Funktion scheint also nur den Zweck zu erfüllen, Zahlenwerte in Zeichenketten umzuwandeln. Zum Beispiel: "$int($amount) Korken."
Unklar ist ob auch ein Wert, wie er bei den Koordinaten einer Region vorkommt, erlaubt ist. Ist dem so, wäre ein Beispiel wie folgt: $int("10 -4 0") ergibt den int-wert: 10 -4 0.

$if( condition, expr1, expr2 )
Condition erwartet einen int-Wert. Dieser int-Wert wird C-üblich interpretiert, d.h. bei condition!=0 wird der Wert von expr1 zurückgegeben, sonst wird der Wert von expr2 zurückgegeben. Welcher der beiden Werte bei einem NULL-Wert zurückgegeben werden soll, ist unklar. Im Zweifelsfall sollte das expr2 sein.

$eq( expr1, expr2 )
Gibt einen int-Wert ungleich 0 zurück, wenn expr1 und expr2 den selben Wert annehmen, sonst 0. In allen bekannten Messagetypen sind expr1 und expr2 int-Werte, dies muss aber nicht zwangsläufig so sein.

$unit( expr )
Erwartet für expr einen int-Wert, und interpretiert diesen als Einheitennummer. Zurückgegeben wird ein zusammengestzer String aus Name und Nummer (in base36, siehe das Basis-Attribut des VERSION-Blocks) der Einheit. Zum Beispiel: "Fridolin (foo)". Eine Ausnahme gilt für den Wert 1: In diesem Fall wird vom Server der Text "eine unbekannte Einheit (1)" zurückgegeben. Einen NULL Wert sollte die Funktion ähnlich behandeln. Abweichend gibt es auch die Schreibweise $unit.dative() die aber offenbar die gleichen Ergebnisse liefert.

$region( expr )
Ähnlich wie $unit.
Erwartet für expr einen Verweis auf ein Attribut mit 3 int-Werten, und interpretiert diese als Koordinaten einer Region. Zurückgegeben wird ein zusammengestzer String aus Name und Koordinaten der Region. Zum Beispiel: "Waldberge (23,-4)" (Ist die z-Koordinate 0, wird sie nicht dargestellt).
Als Konstante kann dieses int-Tripel eigentlich nur wie bei $int() beschrieben dargestellt werden, also "1 2 1". Nur Kommas sind als Trenner ungeignet, da bereits die Funktionsparameter durch Kommas getrennt werden. Möglicherweise wäre eine Einklammerung in eckige Klammern denkbar "[1 2 0]". Konform mit der Schreibweise in den Tags im CR sollte es aber die erste genannte Variante sein.

$building( expr )
Ähnlich wie $unit.
Erwartet für expr einen int-Werten, und interpretiert diese als Gebäudenummer. Zurückgegeben wird ein zusammengestzer String aus Name und Nummer (in base36, siehe das Basis-Attribut des VERSION-Blocks) des Gebäudes. Zum Beispiel: "Seefeste (r5x)".

$ship( expr )
Ähnlich wie $unit.

$faction( expr )
Ähnlich wie $unit.

$resource( expr1, expr2 )
Erwartet für expr1 einen String, der den Namen der Resource (In der Reportinternen gültigen Form, also "Pferd", "Juwel", ...) bezeichnet, und für expr2 einen int-Wert der die Menge angibt. Zurückgegeben wird dann ein zusammengesetzer String, der die Resource in der Menge grammatikalisch richtig und lokalisiert angibt. Zum Beispiel: $resource("Pferd",32) ergibt "Pferde" oder bei Locale=EN "horses". Zu beachten ist, das die Menge selbst nicht mit ausgegeben wird.

$order( expr )
expr ist ein String, und wird als Befehl interpretiert. Vor der Rückgabe des Befehlsstrings wird dieser noch hinsichtlich der Lesbarkeit verändert (zum Beispiel in eine andere Sprache übersetzt).

$isnull( expr )
Der Rückgabewert ist ein int-Wert ungleich 0, wenn das Attribut auf das expr verweist fehlt, oder -1 ist.

$strlen( expr )
Erwartet für expr einen String, und gibt dessen Länge als int-Wert zurück.

$add( expr1, expr2 )
Erwartet für expr1 und expr2 jeweils einen int-Wert, und gibt deren Summe zurück.

$direction( expr )
Die Funktion erwartet einen int-Wert und liefert eine Zeichenkette mit der Richtung zurück. Dabei gleichen die gleichen Beziehungen wie bei Küste:
0 = Nordwesten
1 = Nordosten
2 = Osten
3 = Südosten
4 = Südwesten
5 = Westen
Der String sollte entsprechend lokalisiert werden. Die Übersetzung findet man NICHT im Translation-Block.

$localize( expr )
Erwartet einen String der mithilfe der im TRANSLATION Block enthaltenen Daten lokalisiert werden muss.

$spell( expr )
Wie $localize(), interpretiert den String aber speziell als Zauberspruch.

$skill( expr )
Wie $localize(), interpretiert den String aber speziell als Talent.

$race( expr )
Wie $localize(), interpretiert den String aber speziell als Rasse.

$weight( expr )
Erwartet einen int-Wert der ein Gewicht in Silber angibt. Die zurückgegebene Zeichenkette sollte deutlich machen, das es sich um ein Gewicht handelt. Beispiele: $weight(100)="1 GE", $weight(10)="0.1 GE". Ich bin mir nicht sicher ob Gewichtseinheiten im englischen tatsächlich als "WU" gekennzeichnet werden.

$resources( expr )
Erwartet eine Zeichenkette. Diese sollte bereits richtig lokalisiert sein und kann daher ungeändert ausgegeben werden. Lediglich bei einer Änderung der Lokalisierung kann eine Übersetzung notwendig werden.

Verweise

Verweise auf Attribute des MESSAGE-Blocks sind nun alle jene speziell behandelten Teile, die keine Funktion sind.

Sie beginnen also alle ebenfalls mit einem "$" Zeichen, dem das Tag des Attributs folgt.

Der Verweis nimmt dann den Wert des Attributs an, wobei ein nicht Vorhanden sein des Attributs mit diesem Tag einen speziellen NULL Wert ergibt (Zum Beispiel bei der $isnull() Funktion von Bedeutung).

Der zurückgegebene Wert ist Typbehaftet, ist also ein Integer (int), ein Integer-Tupel (zB int-Trippel) oder ein String.

section string Die Kategorie, in der Nachrichten dieses Types einzuordnen sind. Bekannte Bereiche sind: "events", "errors", "economy", "magic", "production" und "study".

TRANSLATION

Dieser Block listet alle Übersetzungen von Namen auf. Wird im Report zum Beispiel gesagt, dass eine gewisse Einheit 3 Holz hat (3;Holz), so findet sich hier bei einer englischen Spracheinstellung die entsprechende Zeile, mit der Holz nach wood übersetzt wird ("wood";Holz).
Es existiert also für jeden Gegenstand, für jedes Talent, und noch etliche andere Begriffe ein String-Attribut, das den im Report verwendeten Namen als Tag, und die Übersetzung in die eingestellte Sprache als Wert enthält.

HOTSPOT

Kommt nur bei Konfiguration "Java-Tools" vor.

Markiert einen Hotspot innerhalb von Magellan, zu welchem man mit einem Klick springen kann.

IDBedeutungBeschreibung
idx Index Nummer um die Hotspots untereinander eindeutig zu unterscheiden.
AttributTypBeschreibung
name string Enthält den Namen des Hotspots.
coord string (int) Gibt die Koordinaten des Hotspots (zu welchen gesprungen wird) an.
Entgegen des CR-Syntax, wird hier ein Int-Attribut innerhalb von doppelten Hochkomme (") geschrieben.

EBNF-Syntax

Folgende EBNFs gelten global für dieses Dokument:
STRING_VAL  => "\"" STRING "\""
INT_VAL     => NUMBER {{WS} NUMBER}
STRINGCHAR => Any normal Character (only printables, no NL or CR, etc).
              Nothing exact is specified.
STRING     => {STRINGCHAR}
NUMBER     => ["-"] DIGIT {DIGIT}
ALPHANUM   => ALPHA | DIGIT
ALPHA      => UPPERALPHA | LOWERALPHA | UMLAUTS
UPPERALPHA => "A" | "B" | "C" | "D" | "E" |
              "F" | "G" | "H" | "I" | "J" |
              "K" | "L" | "M" | "N" | "O" |
              "P" | "Q" | "R" | "S" | "T" |
              "U" | "V" | "W" | "X" | "Y" |
              "Z"
LOWERALPHA => "a" | "b" | "c" | "d" | "e" |
              "f" | "g" | "h" | "i" | "j" |
              "k" | "l" | "m" | "n" | "o" |
              "p" | "q" | "r" | "s" | "t" |
              "u" | "v" | "w" | "x" | "y" |
              "z"
UMLAUTS    => "ä" | "ö" | "ü" | "ß" |
              "Ä" | "Ö" | "Ü"
DIGIT      => "0" | "1" | "2" | "3" | "4" |
              "5" | "6" | "7" | "8" | "9"
WS         => " "

Changelog

  • 2008-04-30 19:13
    - REGION: Attribut "id" hinzugefügt.
    - EINHEIT: Attribut "Parteitarnung" hinzugefügt.
    - EINHEIT: Attribut "Partei" hat nun reservierten Wert.
    - MESSAGETYPE: Die Bedeutung fast aller Funktionen korrigiert. Thanks to Ralf Duckstein!
  • 2007-11-16 20:42
    - EFFECTS um Alchimistische Tränkte erweitert. Thanks to Ralf Duckstein!
  • 2007-07-03 13:48
    - VERSION um das Attribut "charset" erweitert.
  • 2007-02-19 00:56
    - ZAUBER um das Attribut "syntax" erweitert.
  • 2006-12-08 21:33
    - HOTSPOT hinzugefügt.
  • 2006-11-24 12:15
    - EBNF überarbeitet
  • 2006-11-22 18:08
    - REGION->Mallorn ist int (bool gibt es nicht). - Quicklink at start - TODO: EBNF im ganzen dokument anpassen (ist nicht wirklich richtig)
  • 2006-11-17 13:08
    - Erklärung, was ein eventueller dritter Int-Wert eines Attriuts im Block TALENTE bedeutet. Thanks to Fiete!
    - Bug im EBNF der Attribute: Es war möglich, dass ein Tag mit einem WhiteSpace endet.
    - Umformulierung der Erklärung über die Gesalt eines Attributs.
  • 2006-11-12 00:35
    Attribute "heroes" und "max_heroes" beim Block PARTEI hinzugefügt. Thanks to Fiete!
  • 2006-09-04 20:20
    Attribut "wahrerTyp" beim Block BURG hinzugefügt. Thanks to Fiete!
  • 2006-06-07 19:48
    Attribut "alias" und "temp" beim EINHEIT Block hinzugefügt. Thanks to Perat!
  • 2006-04-25 12:30
    Attribut "familiarmage" beim EINHEIT Block hinzugefügt. Thanks to Gulrak!
  • 2006-02-12 00:39
    Anmerkung bei der ID vom MESSAGETYPE Block hinzugefügt.
  • 2006-02-08 02:17
    "Verraeter"- und "Anderepartei"-Attribut beim EINHEIT Block hinzugefügt.
  • 2006-01-19 00:54
    "weight" Attribut beim EINHEIT Block, und "cargo" sowie "capacity" Attribut beim SCHIFF Block hinzugefügt. - Positionen im CR noch nicht korrekt, und Konflikt mit Ladung/MaxLadung noch nicht gelöst.
  • 2006-01-15 18:45
    "visibility" Attribut bei REGION Block geupdated.
  • 2005-10-27 18:00
    "age" Attribut bei PARTEI Block hinzugefügt.
  • 2005-08-07 03:39
    Block GRENZE hinzugefügt.
  • 2005-08-01 00:09
    Block EINHEITSBOTSCHAFTEN wird durch MESSAGETYPE ersetzt.
Not logged in; Current report: 533; Current time: Sat, 21 Sep 2019 17:44:24 +0200;
cr-format.php; last modfied (on HD): Wed, 30 Apr 2008 20:10:14 +0200
php worktime: 0.48050212860107 seconds.