Frage: Was ist das hier?
Eine kleine anschauliche Demonstration die helfen soll zu verstehen, wie und wo man im 2k3 KS ansetzen kann um eigene Dinge zu implementieren.
Die relevanten Fragen sind:
Was passiert
Wann passiert es
Unter welchen Bedingungen passiert es
Was passiert?
Irgend ein Makereventcode. Was genau ausgeführt wird ist nachher Sache des Erstellers. Wann passiert es?
Hier geht um um die Reihenfolge der Eventcodeausführungen, dargestellt als Blockflussdiagramm. Unter welchen Bedingungen passiert es?
Gezieltes aktivieren von Eventcode.
Verwendete Blocksyntax:
Dieser Block steht für die Handlung der Spielfigur im KS selbst. Damit ist ganz spezifisch zB der Angriff gemeint, nicht die Zielauswahl.
Dieser Block steht für die Auswahl der Handlungen Fight(Nahkampf) und Skill(Talente und Fähigkeiten). Eingeschlossen sind Auswahl von Talent und Ziel.
Dieser Block steht für die Auswahl der Handlungen Defend(Verteidigen) und Item(Gegenstand verwenden). Eingeschlossen sind Auswahl von Gegenstand und Ziel.
Fight+Skill und Defend+Item sind aus gutem Grund zusammengefasst, dazu mehr später.
Beispiel: Simple Kampfhandlung
Der Spieler wählt Fight und ein Ziel.
Der Charakter greift das Ziel an.
Eventcodeblöcke:
Dieser Block steht für eine Eventcodeseite in den Monstergroups, die mit einer [Charakter] use [Action] Bedingung versehen ist, beispielsweise "Zack uses Fight"-Command.
Hiermit kann man Eventcode genau dann ablaufen lassen, wenn der Spieler eine speziell definierte Handlung im KS anwendet, zB Fight, Skill,Defend
Dieser Block steht für eine Eventcodeseite in den Monstergroups, die als Bedingung ein auf ON
gesetztes Switch besitzt.
Will man Eventcode erst ablaufen lassen, nachdem eine errechnete Bedingung erfüllt ist verwendet man eine Eventseite mit Switch=ON Bedingung. Solche Seiten benutzt man auch, um Eventcode zu anders nicht verfügbaren Zeitpunkten ablaufen zu lassen.
Hinweis: Eventseiten mit aktivierter Bedingung werden nach der Handlung JEDES Akteurs im KS abgearbeitet. Das schliesst andere Charaktere und Monster mit ein.
Dieser Block steht für eine Eventcodeseite in den Monstergroups, die als Bedingung [Hero] has taken [x] turns besitzt.
Die Option funktioniert folgendermaßen:
[Hero] has taken [Anzahl]X + [Anzahl] Turns.
Beispiel: Will man Eventcode für Brian, alle 2 Runden, aber erst nach 10 Runden ausgeführt haben, macht man das so:
[Brian] has taken [2]X + [10] Turns.
Am besten versteht man Dinge anhand von praktischen Beispielen, darum werde ich nun Beispiel heranziehen und diese Schritt für Schritt umfangreicher gestalten.
Beispiel A: Zack taken turn
Bei einer aktivierten "has taken Turn" Seite mit aktivierter Bedingung wird der Eventcode der Seite zwischen dem Befehl der Handlung durch den Spieler und der Ausführung durch den Helden abgearbeitet.
Auch wenn die Option ganz klar aussagt, dass ihre Aktivierung nach dem Zug des Charakters stattfindet und man logisch damit "nach der Kampfhandlung" in Verbindung setzt ist hiermit doch dieser beschriebene Ablauf gemeint.
Der Spieler befiehlt eine Handlung
"has taken Turn"-Code wird verarbeitet
Kampfhandlung durch den Helden
Beispiel B: Zack taken turn + Zack uses Fight Command
Wir möchten in diesem Fall nicht nur etwas tun, wenn ein Zug gemacht wurde, sondern auch etwas anderes speziell, wenn z.B. ein Nahkmapfangriff durchgeführt wurde.
Der Hero uses Fight-Command wird vor dem "has taken turn" abgespielt.
Der Spieler befiehlt eine Handlung
"hero uses..."-Code wird verarbeitet
"has taken Turn"-Code wird verarbeitet
Kampfhandlung durch den Helden
Beispiel C: Zack taken turn + Zack uses Fight Command + Switchseite
Möchte man Eventcode erst dann ablaufen lassen, wenn der Zug des Charakters vollständig vorbei ist, also nach dem Angriff, muss man zu einem kleinen Trick greifen, einer Switchseite.
Der Blick auf das Blockdiagramm zeigt:
Der Spieler befiehlt eine Handlung
"hero uses..."-Code wird verarbeitet, hierbei wird das Switch aktiviert
"has taken Turn"-Code wird verarbeitet
Kampfhandlung durch den Helden
Switchseite wird verarbeitet und das Switch wieder deaktiviert
Anmerkungen:
Die Deaktivierung des Switches ist notwendig, denn aktivierte Switchseiten werden sonst nach jedem Zug jedes Monsters abgearbeitet.
In diesem Fall wird die neue Seite nur dann aufgerufen, wenn der Held einen Nahkampfangriff über das Fight-Kommando ausgeführt hat.
Diese Abfolge funktioniert mit Nahkampfangriffen und Talenten
Beispiel D: Cool dann kann ich ja immer...
Und nun wird eklig.
Der Grund warum ich vorhin "Fight und Skill" und "Defend und Item" gruppiert habe ist dieser. Bei Verwendung von Defend und Item wird der Switch-Block übersprungen und statt dessen der Zug der nächsten Kreatur begonnen.
Beispiel E: Wirds noch schlimmer?
Ja.
Wenn der Held einen Zauber auf sich selbst oder seine Gruppe spricht, quasi auf diese Art und Weise in seiner Handlung eine Condition(Status)-Änderung an sich selbst durchführt, wird der Switch-Block ebenfalls übersprungen.
Warum ist das Schlecht?
Nicht nur weils nervt und man einen Workaround braucht. Schlimmer noch ist, dass die nicht verarbeitete Seite sich bei nächster Gelegenheit trotzdem aktivieren wird, evtl. im Zug eines anderen Charakters oder eines Monster, wer weiss?
Was hat uns das Tutorial hier jetzt beigebracht?
Wir wissen nun, an welchen Stellen und zu welchem Momenten wir unter welchen Bedingungen Berechnungen ablaufen lassen können.
Tipps:
Scriptet solide und robust. Das Makersystem verhält sich manchmal komisch wenn Handlungen von Monstern und Spieler gleichzeitig passieren. Verwendet eigene Variablen für jeden Helden und jedes Monster.
Testet KS-Eventscripte als Gerüste, Message-Ausgaben reichen völlig um zu kontrollieren, ob Dinge passieren und ob die Reihenfolge der Abfolgen stimmt. Wenn das klappt kann man anfangen zu animieren.
So, wir kennen das doch, wir wollen erst ein mal das ganz normale CharSet haben, und dann beispielsweise während des AKS das Schwert ziehen können.
Aber wir wollen das schnell machen.
Das geht per Common Event:
Nun gibt es zwei Methoden,
# entweder man kann das Schwert immer ziehen,
# oder nur im AKS.