Diskussion:DEFAULT

Aus Eressea
Version vom 18. August 2022, 08:38 Uhr von Solthar (Diskussion | Beiträge) (ATTACKIERE, FOLGE, NACH und kurze Befehle wieder aufgenommen)
Zur Navigation springenZur Suche springen

Entwurf für Defaultbefehle

TODO - mit Seiten Befehl und Befehle einschicken synchronisieren

Nachdem ich meine Befehle eingeschickt habe und der Server die Auswertung erstellt hat, kommen für jede Einheit bestimmte Befehle zurück. Das sind die Defaultbefehle. Sie werden in der nächsten Woche ausgeführt, falls ich für diese Einheit keine Befehle einschicke. Die Defaultbefehle bekommt man mit dem Report als Textdatei (auch Befehlsvorlage genannt) zugeschickt, falls man sie nicht mit OPTION ZUGVORLAGE NICHT abgeschaltet hat. Außerdem sind sie im Computerreport (CR) enthalten. Der Normalreport (NR) enthält immer nur den ersten langen Defaultbefehl. Man kann dort also nicht alle Defaultbefehle sehen.

In die Defaultbefehle einer Einheit werden normalerweise alle langen Befehle übernommen. Ausgenommen davon sind ATTACKIERE, FOLGE und NACH. Außerdem werden alle //-Kommentare und alle Befehle, die mit @ beginnen übernommen. Die Schreibweise wird dabei möglicherweise standardisiert.

Eingeschickte Befehle:

 EINHEIT abc
 ; diese Woche nur 10
 kAufe 10 Bals
 VERKAUFE 100 Öl
 // nächste Woche mehr Balsam kaufen
 @GIB xyz ALLES Balsam ; Transporter
 GIB abc 100 Silber
 REKRUTIERE 1

Defaultbefehle der nächsten Woche

 EINHEIT abc
 KAUFE 10 Bals
 VERKAUFE 100 Öl
 // nächste Woche mehr Balsam kaufen
 @GIB xyz ALLES Balsam ; Transporter

Was passiert, wenn die Einheit illegalerweise mehrere lange Befehle bekommen hat (zum Beispiel LERNE und ARBEITE), ist übrigens nicht genau definiert. Das Gleiche gilt für sonstige ungültige Befehle.

Der Befehl DEFAULT

Der Befehl DEFAULT ändert dieses Verhalten, indem die Defaultbefehle, die vom Server zurückkommen, verändert werden. Wenn die Einheit einen DEFAULT-Befehl bekommen hat, werden ihre langen Befehle nicht in die Vorlage übernommen. Lange Kommentare und kurze @-Befehle werden dagegen übernommen. Die gegebenen Befehle werden dabei bis zu einem gewissen Grade validiert. Ungültige Befehle werden also nicht übernommen. Diese Prüfung hat jedoch Grenzen, es ist besser, sich nicht darauf zu verlassen.

Man kann auch kurze Befehle mit dem Befehl DEFAULT einfügen.

Eingeschickte Befehle:

 EINHEIT abc
 ; diese Woche nur 10
 Kaufe 10 Balsam
 VERKAUFE 100 Öl
 // nächste Woche lernen
 @GIB xyz ALLES Balsam ; Transporter
 GIB abc 100 Silber
 REKRUTIERE 1
 DEFAULT "GIB 123 50 Silber; nicht vergessen"
 DEFAULT "LERNE Handel"
 DEFAULT "XXX" ; kein Befehl, wird nicht übernommen

Defaultbefehle der nächsten Woche

 EINHEIT abc
 GIB 123 50 Silber; nicht vergessen
 LERNE Handel
 // nächste Woche lernen
 @GIB xyz ALLES Balsam ; Transporter

Der Befehl DEFAULT ohne Parameter löscht einfach alle langen Befehle.

Defaultbefehle:

 ARBEITE
 // nix

Eingeschickte Befehle

 DEFAULT
 ARBEITE

Defaultbefehle der nächsten Woche

 // nix

Die Einheit würde also dann in der Woche keinen langen Befehl ausführen.

Der Befehl NACH

Der NACH-Befehl spielt eine besondere Rolle: Er wird nicht in die Vorlage übernommen. Stattdessen werden die langen Befehle übernommen, die die Einheit in der letzten Woche in der Vorlage hatte, allerdings nur lange Befehle.

Defaultbefehle

 LERNE Reiten
 @GIB 0 10 Silber
 // no comment

Eingeschickte Befehle

 NACH o

Defaultbefehle der nächsten Woche

 LERNE Reiten

Was passiert, wenn sowohl NACH als auch DEFAULT im Spiel ist?

Vorlage:

 ARBEITE
 // jetzt nach westen

Eingeschickte Befehle

 DEFAULT "LERNE Ausdauer"
 // nun lernen
 NACH w

Defaultbefehle der nächsten Woche

 LERNE Ausdauer
 // nun lernen

DEFAULT löscht also auch hier die langen Defaultbefehle (hier ARBEITE) und setzt sie neu.

Es ist möglich, NACH mit DEFAULT zu setzen. Vorlage:

 ARBEITE
 @GIB 0 1 Silber

Eingeschickte Befehle

 DEFAULT "NACH o"
 ARBEITE
 @GIB 0 2 Silber

Defaultbefehle der nächsten Woche

 NACH o
 @GIB 0 2 Silber

Defaultbefehle der übernächsten Woche, wenn sonst keine Befehle für die Einheit eingeschickt werden:

 @GIB 0 2 Silber

Auch hier würde die Einheit also dann keinen langen Befehl ausführen.