-
Drachentöter
Hm, ich wollte jetzt eigentlich nur dieses spezifische Problem erklären. Dann dachte ich, ich erkläre gleich wie das ganze überhaupt abläuft. Und dann hab ich gemerkt, die eigentliche Antwort ist nur ein ganz kleiner Teil davon. Naja, here it goes anyway, könnte ja nützlich sein. Wenn es dich nicht interessiert, fang gleich bei "*: So und jetzt wirds spannend" an zu lesen. 
Wenn ein "Eventoid" (Event, Held oder Vehicle) sich auf ein neues Tile bewegen möchte, werden ein Haufen Bedingungen überprüft. Meistens wird die Überprüfung abgebrochen wenn eine Bedingung ein negatives Ergebnis gebracht hat.
1) Liegt die neue Position innerhalb der Map? (nein => Abbruch)
2) Ist das bewegende Eventoid auf "Through"? Wenn ja, wird alles ab jetzt ignoriert und die Bewegung ist erlaubt.
3) Kann laut Chipseteinstellungen (siehe Liste X unten*) das bewegende Eventoid überhaupt in der gewünschten Richtung das aktuelle Tile verlassen? (nein => Abbruch)
4) Pro Eventoid welches sich auf dem Zieltile befindet (ein sich bewegendes Eventoid wird immer so gerechnet als hätte es seine Bewegung schon abgeschlossen), aufsteigend nach Event ID (Held hat 10001, Vehicles haben 10002-10004):
... 4.1) Zuerst wird das überprüfte Eventoid, wenn es sich auf dem Tile befindet, "angestupst", dabei wird z.B. der nächste Schritt dessen Move Route ausgeführt sofern anwendbar, und es wird auch das Eventskript direkt einmal ausgeführt falls es auf "Parallel Process" eingestellt ist (bis zu einem Yieldpoint, also jeglichem Befehl der auf das nächste Frame warten würde). Befindet sich danach das andere Eventoid nicht mehr "im Weg" (ein sich wegbewegendes Eventoid wird nicht mehr als "im Weg" gezählt), wird das Eventoid übersprungen.
... 4.2) Ist entweder das bewegende Eventoid oder das überprüfte Eventoid erased? Wenn ja, überspringen.
... 4.3) Fliegt entweder das bewegende Eventoid oder das überprüfte Eventoid? (Fliegen trifft nur auf das Airship zu.) Wenn ja, überspringen
... 4.4) Ist das überprüfte Eventoid auf "Through"? Wenn ja, überspringen
... 4.5) Hat eins der beiden Eventoids "Forbid Event Overlap" gesetzt? Wenn ja, dann Abbruch - Bewegung nicht möglich!
... 4.6) Haben die beiden Eventoids denselben Layer eingestellt? (Held hat "Same Level as Hero", natürlich.) Wenn ja, dann Abbruch - Bewegung nicht möglich!
... 4.7) Ist das bewegende Eventoid zwar "Below Hero" aber dadurch, dass es ein bestimmtes Tile als Grafik eingestellt hat, selber nicht begehbar, und ist das überprüfte Eventoid "Same Level as Hero"? Wenn ja, dann Abbruch - Bewegung nicht möglich! (Was nämlich sonst unlogisch wäre, weil sich dann z.B. ein Stein "unter" einen NPC bewegen könnte.)
5) Kann laut Chipseteinstellungen (siehe Liste X unten*) das bewegende Eventoid sich auf das neue Tile draufbewegen? (nein => Abbruch)
(Hm ja, ich hätte mir alles bis jetzt sparen können, weil in diesem Fall ist das Problem in Schritt 5, und diesen Schritt hätte man ja eh erwarten können.)
*: So und jetzt wirds spannend. Was heißt "laut Chipseteinstellungen"? Das bezieht nämlich Events mit ein! Und zwar auf folgende Weise: Das Upper-Layer-Tile wird in der Berechnung ersetzt durch das als Eventgrafik gesetzt Tile wenn das relevante Event ein Chipsettile als Grafik hat und jenes nicht auf Stern gesetzt ist. Aber, und jetzt kommts, es wird zuerst entschieden welches Event das "relevante Event ist" (genau eines), und dann wird erst auf Stern überprüft. Die Art und Weise, wie entschieden wird, welches Event das relevante Event ist, ist indem ein Event gesucht wird, welches nicht auf "Through" ist, auf "Below Hero" eingestellt ist, ein Chipsettile als Grafik hat und nicht das bewegende Event selber ist. Dabei wird aber die Suche nicht abgebrochen wenn ein Event gefunden wurde, sodass letztenendes das Event mit der höchsten ID, welches zutrifft, als "relevantes Event" verwendet wird für die Überprüfung.
Zum Nachvollziehen:
X1) Lower und Upper Layer Tiles werden geladen, laut Map.
X2) Es wird ein "relevantes Event" gesucht (genau eines, höchste ID gewinnt) - nicht auf "Through", "Below Hero", hat Chipsettile als Grafik, nicht das bewegende Event selber.
X3) Wenn ein "relevantes Event" gefunden wurde, und dieses Event nicht ein Stern-Tile als Grafik hat, wird das geladene Upper Layer Tile mit dem Tile des Events ersetzt.
X4) Es werden die geladenen Lower und Upper Layer Tiles verwendet um zu errechnen, ob das Tile als Ganzes begehbar ist. (Die Regeln dafür brauch ich wohl nicht erklären.)
Das ganz am Schluss ist das relevante Puzzleteil - das Problem ist dass Schritte X2 und X3 getrennt nacheinander erfolgen - es würde klappen wenn auch das mit dem Stern innerhalb von X2 überprüft würde. Ohne Gegnerevent zählt das Tile als "hat im Upper Layer ein begehbares Tile" weil die Blumen dafür sorgen (X2 liefert die Blumen, X3 ersetzt das Upper Layer Tile durch die Blumen). Allerdings mit Gegnerevent (dessen ID höher ist), zählt das leere Gegnerevent als "relevantes Event" in Schritt X2. Und dadurch, dass es aber einen Stern im Chipset hat, wird es im Schritt X3 ignoriert und ersetzt nicht das originale (leere) Tile im Upper Layer, sodass dadurch in Schritt X4 das Tile als ganzes unbegehbar wird, weil der Lower Layer dafür sorgt!
Geändert von Cherry (06.12.2021 um 21:21 Uhr)
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln