• Herzlich Willkommen!

    Nach der Schließung von inDiablo.de wurden die Inhalte und eure Accounts in dieses Forum konvertiert. Ihr könnt euch hier mit eurem alten Account weiterhin einloggen, müsst euch dafür allerdings über die "Passwort vergessen" Funktion ein neues Passwort setzen lassen.

    Solltet ihr keinen Zugriff mehr auf die mit eurem Account verknüpfte Emailadresse haben, so könnt ihr euch unter Angabe eures Accountnamens, eurer alten Emailadresse sowie eurer gewünschten neuen Emailadresse an einen Administrator wenden.

Animationen - Grundlagen, Treffererholung, Block, Zauber, Daten

TitanSeal

Champion
Registriert
5 Juli 2004
Beiträge
7.993
Punkte Reaktionen
7
Animationen

Begriffserklärung

Das Spiel bietet verschiedene Eigenschaften um gewisse Animationen - zum Beispiel Angriffe oder Blockvorgänge - oder Bewegungen zu beschleunigen. Dieser Effekt verläuft jedoch nicht linear mit dem Anstieg der jeweiligen Eigenschaft, sondern es gibt bestimmte Stufen (auch "Breakpoints" genannt) bei denen eine Verbesserung eintritt (der Grund dafür ist unter anderem in dieser FAQ nachzulesen). Diese Eigenschaften sind unter folgenden Abkürzungen bekannt:

IAS = schnellere Angriffsgeschwindigkeit (Increased Attack Speed)
FCR = schnellere Zauberrate (Faster Cast Rate)
FBR = schnellere Abblockrate (Faster Block Rate)
FHR = schnellere Erholungsrate (Faster Hit Recovery)
FRW = schnelleres Gehen/Rennen (Faster Run / Walk)

Diese Eigenschaften werden spielintern jedoch nicht zur Berechnung herangezogen, denn sie werden zuerst in Effektivwerte umgerechnet. Die Abkürzung dieses Effektivwertes lautet damit je nach Eigenschaft klarerweise EIAS, EFCR, EFBR, EFHR bzw EFRW.


Um Speicherplatz einzusparen rechnet das Spiel intern ausschließlich mit Integer-Werten. Das bedeutet, dass sämtliche Werte nur ganzzahlig abgespeichert werden können. Sämtliche Nachkommastellen werden daher einfach abgeschnitten, was bei positiven Werten einem Abrunden bzw bei negativen Werten einem Aufrunden gleichkommt. In einer Formel kennzeichnet man die Art der Rundung oftmals durch die Verwendung unterschiedlicher Klammern:

[...] = Wert innerhalb der Klammern wird abgerundet
{...} = Wert innerhalb der Klammern wird aufgerundet

In bestimmten Formeln kann der zu rundende Wert sowohl negative als auch positive Werte annehmen, wodurch die Art der Rundung vom betreffenden Wert abhängig ist. Diese Möglichkeit sollte stets bedacht werden, vom gedankenlosen Anwenden einer Formel ist stets abzuraten.


Zwei zusammenhängende Begriffe, die oftmals in dieser FAQ verwendet werden, sind "Frame" und "Tick". Filme und Animationen bestehen aus Einzelbildern, welche so schnell abgespielt werden, dass die Bildfolge aufgrund der Trägheit unserer Augen als Bewegung wahrgenommen wird. Ein solches Einzelbild wird dabei als "Frame" bezeichnet. Die Spielmechanik spielt pro Sekunde 25 solcher Frames ab, um die Illusion einer Bewegung hervorzurufen. Der zeitliche Abstand zwischen der Ausgabe zweier Frames beträgt damit 0,04 Sekunden und auch diese Zeiteinheit wird oftmals als "Frame" bezeichnet, da Blizzard diese Bezeichnung in den Spieldateien verwendet. Diese Benennung ist jedoch äußerst unpraktisch, weil damit für ein Standbild und diese Zeiteinheit der selbe Begriff verwendet wird, was bei der detailierten Betrachtung der Animationen zu Komplikationen führt. Damit man beides unterscheiden kann, hat man für diese Zeiteinheit von 0,04 Sekunden die Bezeichnung "Tick" eingeführt.


Animationsablauf und formale Berechnung

Zu Beginn dieses Threads möchte ich erklären, wie eine Animation programmintern abläuft:

Das Programm ermittelt die Art der nächsten Animation und holt sich alle für die Berechnungen benötigten Werte aus diversen Spieldateien. Anschließend werden der Counter-Endwert und der Counter-Anstiegswert nach folgenden Formeln berechnet:

Counter-Endwert = Hitshift*FramesPerDirection
Counter-Anstiegswert = AnimationSpeed*Acceleration/100

Hitshift ... Das Ergebniss eines jeden Rechenschrittes wird als Integer-Wert (ganzzahliger Wert) abgespeichert, weshalb alle Nachkomastellen entfallen (entspricht für positive Werte einem Abrunden). Wir verwenden hier somit Divisionen mit ganzen Werten und damit werden die möglichen Abstufungen unseres Ergebnisses zu groß (zB 20, 10, 6, ... für die Divisionen 20/1, 20/2, 20/3, ...). Aus diesem Grund verwenden wir diesen Faktor in Dividend und Divisor, welcher für die Berechnung der Animationslängen einen Wert von 256 aufweist. Dadurch werden uns feinere Abstufungen ermöglicht (zB 20, 19, 18, ... für die Divisionen 5120/256, 5120/269, 5120/284, ...). Wie bereits erwähnt, muss das Hitshift auf beiden Seiten des Bruches auftreten, damit es sich anschließend wieder hinauskürzt. Im Divisor (Counter-Anstiegswert) ist das Hitshift auf den ersten Blick nicht erkennbar, weil es bereits in der AnimationSpeed inkludiert ist. Auch hier ist somit eine Feinabstimmung möglich, es gibt nun 256 Abstufungen mehr als zuvor.
FramesPerDirection ... Dies ist die Anzahl an Frames, aus der eine bestimmte Animation besteht. Der Wert wird somit klarerweise über die verwendete Animation bestimmt, sodass der Spieler keinen Einfluss darauf hat. Je mehr Frames eine bestimmte Animation besitzt, desto mehr Frames müssen abgespielt werden und desto länger dauert die Animation.
AnimationSpeed ... Dies ist der Grundwert der Geschwindigkeit, mit der eine Animation abgespielt wird. Der Standartwert liegt bei einem Frame pro Tick, wobei auch andere Werte möglich sind. Zwischen den Werten "1" und "2" der AnimationSpeed, gibt es eine Änderung von 100% und die Anschreibung als Integer-Wert lässt keine Zwischenstufen zu. Daher ist hier das Hitshift inkludiert, sodass wir zwischen den Werten 1 (=256) und 2 (=512) 256 Abstufungen erhalten und die Animationsdauern besser steuerbar sind.
Acceleration ... Dies ist ein Prozentwert und steuert die (positive wie negative) Beschleunigung der Animation. Dieser Wert ist für den Anwender einer bestimmten Animation die einzige Möglichkeit die Animationsdauer zu beeinflussen, alle anderen Werte sind vorgegeben. Je nach Art der verwendeten Animation fließen hier verschiedenste Werte in diese Berechnung ein. Die Grenzen dieses Wertes liegen bei 15 und 175. Um die Erklärung einfach und allgemein zu halten, werde ich vorerst bei diesem Begriff bleiben und die Zusammensetzung in den jeweiligen Teilbereichen erläutern.

Da das Spiel außschließlich Integer-Werte speichern kann, werden Counter-Endwert (der allerdings onehin nur ganzzahlig sein kann) und Counter-Anstiegswert abgerundet. Bei letzterem ist noch zu erwähnen, dass die Multiplikation vor der Division stattfindet, sodass auch nur der endgültige Wert gerundet werden muss. Nun sind die Berechnungen abgeschlossen und wir kommen zum nächsten Teil des Animationsablaufes.

Jede Animation besteht aus einer bestimmten Anzahl an Frames und die Summe all dieser bildet den FramesPerDirection-Wert. Welches Frame zu welchem Tick abgespielt wird, entscheidet nun die aktuelle Stellung des Counters. Die Anzahl der möglichen Counterstellungen entspricht natürlich dem Counter-Endwert und so teilen wir diese Zahl durch die Anzahl der Frames unserer Animation. Dies werde ich anhand eines Beispiels verdeutlichen und nehme dafür FramesPerDirection mit 5, AnimationSpeed mit 256 und Acceleration mit 100 an:

Counter-Endwert = Hitshift*FramesPerDirection = 256*5 = 1280
Counter-Anstiegswert = AnimationSpeed*Acceleration/100 = 256*100/100 = 256

Wir haben somit 1280 verschiedene Counterstellungen (von 0 bis 1279) und teilen diese auf 5 Frames auf. Somit hat jedes Frame genau 1280/5 = 256 Counterstellungen. Diese Zahl entspricht natürlich immer dem Hitshift, denn dessen Aufgabe war es schließlich die Anzahl der möglichen Counter-Stellungen pro Frame zu erhöhen. Dies sortieren wir nun anhand der Stellung des Counters:

Counter = 0000-0255 => Bild 00 wird dargestellt
Counter = 0256-0511 => Bild 01 wird dargestellt
Counter = 0512-0767 => Bild 02 wird dargestellt
Counter = 0768-1023 => Bild 03 wird dargestellt
Counter = 1023-1279 => Bild 04 wird dargestellt


Diese Tabelle könnten wir uns eigentlich auch ersparen, denn das darzustellende Frame lässt sich auch einfacher ermitteln. Wir müssen bloß unseren aktuellen Counter-Wert durch unser Hitshift dividieren und schneiden vom Ergebniss die Nachkomastellen ab. Damit erhalten wir ebenfalls für jeden Counter-Wert das abzuspielende Frame (zb [500/256] = [1,95] = 1 => Frame 01 wird dargestellt).

Da wir bei 0 beginnen, ist die Counterstellung 1280 kein Teil dieser Animation mehr. Sobald der Counter den Wert 1279 überschreitet, endet die aktuelle Animation und die nächste startet noch im selben Tick. Daher dürfen wir das Tick bei dem der Counter-Endwert erreicht bzw überschritten wird nicht mehr zu unserer ersten Animation zählen.

Jetzt starten wir unsere Animation, welche Tick für Tick abläuft. Am Anfang eines jeden Ticks wird der Counter um den errechneten Counter-Anstiegswert erhöht und anschließend abgefragt, ob der Counter-Endwert schon erreicht oder überschritten wurde (selbiges gilt auch für das FrameDataActionFlag, bei dem die Aktion wirklich durchgeführt wird). Ist dies nicht der Fall, wird ein Bild der Animation dargestellt. Sollte der Counter-Endwert jedoch schon erreicht/überschritten sein, endet die Animation. Die neue Animation (es läuft natürlich immer eine Animation nach der anderen ab) beginnt nun bei eben jenem Tick.

Die Animationen lassen sich in zwei Gruppen unterteilen. Einerseits können sie eine Art "Strafe" sein, weil sie eigentlich nichts bewirken aber Zeit beanspruchen. Dies ist zum Beispiel beim Blocken der Fall. Indem wir blocken, lösen wir die Blockanimation aus, doch diese bringt uns keinen Nutzen mehr, sondern hindert uns bloß daran weitere Aktionen in dieser Zeit auszuführen. Diese Animationen werden also durch eine Aktion ausgelöst, bewirken selbst allerdings keine.
Andererseits gibt es auch Animationen, die eine Aktion bewirken. Ein Beispiel dafür wäre die Angriffsanimation, den irgendwann zwischen Animationsstart und Animationsende (zum so genannten "kritischen Tick") wird der tatsächliche Angriff ausgeführt bzw ein Geschoss zum Angriff generiert. Diese Animationen brauchen eine Kennzeichnung, damit das Programm weiß, wann die Aktion auszulösen ist. Dazu gibt es in der animdata.d2 eine Auflistung der Frames von 000 bis 143 und der Zeitpunkt an dem die Aktion ausgelöst werden soll, ist für jede Animation in einer dieser Spalten durch einen Eintrag gekennzeichnet. Das gekennzeichnete Frame bezeichnet man als FrameDataActionFlag und wird in manchen Formeln benötigt. Dabei muss man allerdings berücksichtigen, dass wir den programminternen Ablauf durch diese Formeln nachvollziehen und somit die selben Regeln anwenden müssen. Für das Programm ist das erste Frame jenes mit der Bezeichnung 00, sodass wir bei der Angabe des FrameDataActionFlags ebenfalls die Bezeichnung (Bezeichnung bei 00 beginnend) und nicht die Reihenfolge in der Animation (Zählung bei 01 beginnend) verwenden müssen. Genauer werde ich darauf noch in den entsprechenden Teilbereichen (Zauber und Angriffe) eingehen.


Soweit zur Theorie, nun ein kurzes Beispiel zum leichteren Verständniss des Ablaufes:

FramesPerDirection = 3
AnimationSpeed = 256
Acceleration = 60

Counter-Endwert = Hitshift*FramesPerDirection = 256*3 = 768
Counter-Anstiegswert = AnimationSpeed*Acceleration/100 = 256*60/100 = 153

Counter = 000-255 => Bild 00 wird dargestellt
Counter = 256-511 => Bild 01 wird dargestellt
Counter = 512-767 => Bild 02 wird dargestellt


Tick 1:
Counter ist 0
Counter wird erhöht auf 153
Ist der Counter >= 768? Nein => kein Abbruch
[153/256] = 0 => Bild 00 abspielen

Tick 2:
Counter ist 153
Counter wird erhöht auf 306
Ist der Counter >= 768? Nein => kein Abbruch
[306/256] = 1 => Bild 01 abspielen

Tick 3:
Counter ist 306
Counter wird erhöht auf 459
Ist der Counter >= 768? Nein => kein Abbruch
[459/256] = 1 => Bild 01 abspielen

Tick 4:
Counter ist 459
Counter wird erhöht auf 612
Ist der Counter >= 768? Nein => kein Abbruch
[612/256] = 2 => Bild 02 abspielen

Tick 5:
Counter ist 612
Counter wird erhöht auf 765
Ist der Counter >= 768? Nein => kein Abbruch
[765/256] = 2 => Bild 02 abspielen

Tick 6:
Counter ist 765
Counter wird erhöht auf 918
Ist der Counter >= 768? Ja => Animation abbrechen, augenblicklicher Start der nächsten Animation
Dieses Tick zählt somit nicht mehr zu unserer Animation

Da das letzte Tick nicht mehr zur aktuellen Animation zählt, umfasst unsere Animation eine Dauer von 5 Ticks.
Diese Werte gelten für die Blockanimation eines Paladins ohne Heiligem Schild, der über 11 FBR verfügt. Ein Blick in diverse Tabellen bestätigt unser Ergebniss: eine Dauer von 5 Ticks. Außerdem fällt uns noch etwas auf, wenn wir Tick 5 betrachten. Die Differenz zwischen dem aktuellen Counterwert und dem Counter-Endwert beträgt nur "3", sodass auch schon die kleinstmögliche Erhöhung des Counter-Anstiegswertes die Animation weiter verkürzen würde. Wir stehen damit direkt vor einem Breakpoint, welche ich weiter unten noch behandeln werde.

Natürlich ist dieser interne Ablauf für uns nicht alzu relevant, denn die Ermittlung der Animationsdauer beansprucht mit dieser Methode zu viel Zeit. Daher wandeln wir den obigen Ablauf nun in eine Formel um.


Herleitung der Formel

Wie weiter oben schön ersichtlich ist, gibt uns die Dauer in Ticks an, wie oft wir den Counter um den Counter-Anstiegswert erhöhen mussten um den Counter-Endwert zu erreichen bzw zu überschreiten. Damit enspricht das Grundgerüst unserer Formel natürlich einer Division, weil wir zur Ermittlung der Dauer den Counter-Endwert durch den Counter-Anstiegswert dividieren müssen.

FPA = Counter-Endwert/Counter-Anstiegswert

Nun müssen wir beim Ergebniss dieser Division zwischen zwei Möglichkeiten unterschieden. Ist das Ergebniss eine ganze Zahl, so waren Counter-Endwert und Counter-Anstiegswert im letzten Tick ident. Damit zählt das letzte Tick nicht mehr, weil die Animation in diesem Tick abgebrochen wird. Somit müssen wir am Ende der Formel noch ein Tick abziehen.
Ist die Division allerdings nicht ganzzahlig (zB 3,5), so müssen wir den Wert aufrunden, denn nach drei Ticks ist der Counter-Endwert noch nicht erreicht, 3,5 Ticks sind nicht möglich und erst nach dem viertem Tick haben wir den Counter-Endwert überschritten. Auch in diesem Fall zählt das letzte Tick nicht mehr zur aktuellen Animation und wird damit ebenfalls am Ende abgezogen.
Im ersten Fall haben wir bereits eine ganze Zahl, sodass das Aufrunden nichts verändert und wir beide Fälle in einer Formel zusammenfassen können. Dabei setze ich diesmal gleich die Zusammensetzungen für Counter-Endwert und Counter-Anstiegswert ein:

FPA = {(Hitshift*FramesPerDirection)/[AnimationSpeed*Acceleration/100]} - 1

Oftmals bekommt man zu hören, dass das erste Frame einer Animation ident mit dem Letztem sei und deshalb nicht angezeigt werde, woraus das "-1" in der Formel resultiere. Dies stimmt allerdings nicht. Die beiden Frames sind unterschiedlich; wie ich oben veranschaulicht habe werden sie beide angezeigt und den Grund für die "-1" am Formelende habe ich ebenfalls erklärt.


Zum Vergleich der Formel mit dem internem Ablauf rechnen wir das vorherige Beispiel nochmal:

FramesPerDirection = 3
AnimationSpeed = 256
Acceleration = 60

FPA = {(Hitshift*FramesPerDirection)/[AnimationSpeed*Acceleration/100]} - 1
FPA = {(256*3)/[256*60/100]} - 1
FPA = {(768)/[153,6]} - 1
FPA = {(768)/[153,6]} - 1
FPA = {(768)/153} - 1
FPA = {5,02} - 1
FPA = 6 - 1
FPA = 5


Auch hier sehen wir wieder, dass wir kurz vor dem nächstem Breakpoint stehen und die Dauer von 5 Ticks deckt sich mit der vorherigen schritteweisen Berechnung, sodass unsere Formel richtig hergeleitet wurde.

Nun müssen wir nur noch die Zusammensetzung des Acceleration-Wertes wissen. Diese hängt allerdings von der verwendeten Animation ab, setzt sich jedoch immer zumindest aus einem Grundwert (ohne Grundwert hätte ein Malus keinen Effekt, sofern kein Bonus vorhanden ist oder dieser bereits negiert wurde) und einem Effektivwert zusammen. Zur Wahrung der Übersichtlichkeit werde ich diesen Teil der Formel in den jeweiligen Teilbereichen behandeln und nun mit der Ermittelung der Breakpoints fortfahren.


Breakpoints

Nun können wir uns für bestimmte Werte unsere Animationsgeschwindigkeit berechnen. Unser Interresse beruht allerdings hauptsächlich auf den Breakpoints, mit der reinen Berechnung mit vordefinierten Werten können wir nur wenig anfangen. Leider können wir hierfür allerdings keine Formel verwenden, da die explizite Anschreibung des Effektivwertes an dem Runden der Werte scheitert. Somit berechnen wir uns (zb in Excel) für jeden möglichen Acceleration-Wert die Anzahl der verwendeten Frames und notieren uns, bei welchem Wert wir den Sprung auf die nächstkürzere Animation schaffen. Je nach verwendeter Animation kann man sich dann berechnen, welche Eigenschaften man noch erhöhen kann, um den nächsten Breakpoint zu erreichen. Ein Beispiel für eine solche Berechnung:


Insgesammt dreimal anklicken, dann wird das Bild lesbar.

Rechts werden unsere Werte eingegeben und durch schrittweise Berechnung sehen wir, bei welchen Werten sich die Animation verkürzt. Dabei lässt man sich em besten gleich den Effektivwert umrechnen und kann den Wert somit einfach ablesen. Man muss bloß darauf achten den Grundwert (Teil der Acceleration) richtig anzugeben und keine Werte zu verwenden, die das Maximum von 175 überschreiten.


Animationsarten

Grundsätzlich kann man zwischen zwei Animationsarten unterscheiden. Die gewöhnliche Animation haben wir soeben mitsammt Ablauf und Formel kennengelernt. Diese Animationen können leicht eingesehen werden, weil die grundlegenden Werte softcoded sind. Das bedeutet, dass sie vom Spiel aus bestimmten Datein ausgelesen werden, welche für den Spieler leicht zugänglich sind und ausreichend Information enthalten. Für jede dieser Animationen gibt es eine Reihe von Frames, wobei der FramesPerDirection-Wert jeweils angibt, wie viele dieser Frames für eine jeweilige Animation wirklich verwendet werden.

Neben den bisher genannte Animationen gibt es auch die Sequenz-Animationen, welche von den bisher bekannten in mehreren Punkten abweichen. Den Sequenzen sind keine eigenen Frames zugewiesen, sondern sie bestehen aus vordefinierten Frames einer oder mehrerer Animationen. Von diesen Sequenzen sind leider nur jene softcoded, die von Monstern verwendet werden. Die Sequenzen der Spieler allerdings sind hardcoded, stecken also irgendwo an unbekannter Stelle in einer dll-Datei. Daher gibt es nur wenige, die diese Sequenzen ebenfalls auslesen können.
Die Formel für Sequenzen ist beinahe mit der bereits bekannten ident. Der einzige Unterschied besteht im Fehlen der "-1" am Formelende:

FPA = {(Hitshift*FramesPerDirection)/[AnimationSpeed*Acceleration/100]}

Sofern es sich bei einer Sequenz um einen Angriff (exklusive Zaubern) handelt, gibt es noch eine weitere Änderung, welche unsere SQ-Animation verlangsamt. Dies werde ich jedoch erst später im entsprechenden Teilbereich behandeln.


Auslesen der gebrauchten Werte

Wie bereits angesprochen, werden die Werte zu Anfang jeder Animation aus diversen Spieldateien ausgelesen. Dabei handelt es sich unter anderem um die Werte "FramesPerDirection" und "AnimationSpeed". Diese findet man in der animdata.d2, welche man aus der d2data.mpq extrahieren kann. Zum Extrahieren verwendet man das Programm "MPQView", welches im Mod-Starterkit auf der Mainpage enthalten ist. Um die Extrahierte animdata.d2 auslesen und verändern zu können, wandelt man sie mit dem Programm "Animdata_edit" in eine Textdatei um. Besagtes Programm findet man hier im PK in der Kategorie "Animation Editing".

Um sich dies zu ersparen, kann man auch diese Liste verwenden oder sich hier eine fertige und übersichtlichere animdata.txt herunterladen. Außerdem beinhalten die FAQtoids von librarian und ebenso meine FAQ die wesentlichsten Daten der Animationen.

Die Bezeichnungen dieser Animationen setzen sich aus 3 Teilen zusammen und verwenden das Schema CCAAWWW.

CC steht für "class" und gibt an, welche Spieleinheit diese Animation benutzt. Die wesentlichsten Kürzel lauten:

AI ... Assassine
AM ... Amazone
BA ... Barbar
DZ ... Druide
NE ... Nekromant
PA ... Paladin
SO ... Zauberin

40 ... Werwolf
TG ... Werbär
VA ... Vampir
FK ... Untoter Rattenmann

0A ... Barbarensöldner
GU ... Stadtwache
IW ... Eisenwolf
RG ... Rogue

Sollte man noch das Kürzel einer bestimmten Monsterart brauchen, findet man dieses in der Monstats.txt (muss man aus der Patch_D2.mpq extrahieren) in der Spalte "Code".

AA steht natürlich für "animation" und bezeichnet die Tätigkeit, bei welcher diese Animation verwendet wird. Die Kürzel lassen sich aus der PlrMode.txt auslesen und lauten:

A1 ... Angriff 1
A2 ... Angriff 2
KK ... Kick
TH ... Werfen
S1 ... Skill 1
S2 ... Skill 2
S3 ... Skill 3
S4 ... Skill 4
SC ... Zaubern
BL ... Blocken
GH ... Treffererholung
TN ... Neutral (in der Stadt stehen)
NU ... Neutral (außerhalb der Stadt stehen)
TW ... Gehen (in der Stadt)
WL ... Gehen (außerhalb der Stadt)
RN ... Rennen
DT ... Sterben
DD ... Leiche
SQ ... Sequenz

Die Sequenz ist dabei nur der Vollständigkeit halber angegeben, da sich diese bekanntlich aus Animationsteilen zusammensetzt und deren Daten somit nicht in der animdata.txt verzeichnet sind. Die Informationen über SQ-Animationen sind in der D2Common.dll verzeichnet, wobei der genaue Offset vom Patch abhängt.

WWW steht für "weapon class" und bezeichnet die verwendete Waffenart. Diese ist in der weapons.txt in der Spalte "wclass" bzw "2handedwclass" für jede Waffen-Grundklasse angegeben:

hth ... Faustkampf (keine Waffe)
ht1 ... eine Klaue
ht2 ... zwei Klauen
1hs ... einhändige Schwungwaffen (Schwerter, Äxte, Knüppel, Keulen, Szepter Hämmer, Wurfäxte)
2hs ... zweihändige Schwerter
1ht ... einhändige Stichwaffen (Dolche, Wurfspieße, Wurfmesser, Wurfelexiere)
2ht ... zweihändige Stichwaffen (Speere)
stf ... staves (Stangenwaffen sowie zweihändige Äxte, Hämmer und Stäbe)
bow ... Bögen
xbw ... Armbrüste
1ss ... zwei Schwungwaffen
1jt ... zwei Stichwaffen
1js ... links Stichwaffe, rechts Schwungwaffe
1st ... links Schwungwaffe, rechts Stichwaffe

Allerdings sind die Werte für ht1 und ht2 im ungemoddeten Spiel ident, sodass man nicht zu unterscheiden braucht.
Die letzten vier Animationen verwendet nur der Barbar, da keine andere Charakterklasse diese Waffen gleichzeitig tragen könnte. Glücklicherweise entfällt auch hier die Unterscheidung, denn die Werte der Animationen 1ss, 1jt, 1js und 1st sind (abgesehen von einer vernachlässigbaren Verschiebung des FrameDataActionFlags) gleich.

Damit hätten wir einmal die Grundlagen geklärt und ich werde nun mit den Anwendungen fortfahren. Aus Gründen der Übersichtlichkeit (zB leichteres Verlinken) bekommt dabei jede Animation einen eigenen Post. Außerdem habe ich dann genug Platz um zu jeder Animation alle weiteren nennenswerten Eigenschaften anzugeben. Für die reine Berechnung der Animationsdauer kann der erste Teil der folgenden Posts eventuell übersprungen werden.
 
Treffererholung

Diese Animation ist eine Art "Strafe", denn sie hat für uns keinen Nutzen und unterbricht bzw verhindert während ihrer Dauer jegliche gewünschte Aktionen. Die Treffererholungsanimation kann auch nicht unterbrochen werden. Wenn wir also gegen Ende der Animation nochmals in die Treffererholung verfallen würden oder einfach einen Angriff blocken, wird keine weitere Animation abgespielt. Durch die Eigenschaft FHR (erhältlich von bestimmten Gegenständen) kann die Dauer der Animation verringert werden. Dabei gibt es bestimmte Breakpoints, also Werte bei denen eine Änderung eintritt. Im Bereich zwischen zwei Breakpoints ist der genaue Wert nicht von Bedeutung.

Die Treffererholung wird ausgelöst, wenn man mit einem Angriff mehr als ein Zwölftel seiner maximalen Lebenspunkte verliert oder man Opfer einer Lähmattacke (Drescher, Duriel oder Schneeyetis) wird. Auch der Effekt Knockback/Zurückstoßung zieht immer eine Treffererholungsanimation nach sich. Knockback kann man einerseits von verschiedensten Gegenständen erhalten und andererseits bewirken auch manche Fertigkeiten (Ansturm, Niederstrecken und weitere) diesen Effekt.

Außerdem gibt es noch den Effekt der Lähmung, auch stun genannt. Wird ein Spieler gelähmt, so durchläuft er die Treffererholung und besitzt dann den Status "stunned". Solange er sich in diesem Status befindet, führt jeder weitere Treffer unabhängig vom Schaden zum erneuten Durchlaufen der Treffererholungsanimation. Wird eine Nichtspielereinheit gelähmt, wird ebenfalls die Treffererholung durchlaufen und das Opfer ist für die Dauer der Lähmung handlungsunfähig. Diese Eigenschaft bekommt man nicht über Gegenstände, sondern nur durch die Fertigkeiten Niederstrecken, Gedankenschlag, Kriegsschrei, Lähmen, Schockwelle und Holzhammer.


Animationslänge

FPA = {(256*FramesPerDirection)/[(AnimationSpeed*Acceleration/100)]}-1

Wie man anhand der Formel erkennen kann, handelt es sich bei der Acceleration um einen Prozentwert. Dieser muss daher über einen Grundwert verfügen, der dann durch bestimmte Boni und Mali verändert werden kann. In diesem Fall ist die Zusammensetzung recht simpel, da sich nur eine Eigenschaft auf die Dauer der Treffererholung auswirkt.

Acceleration = Baserate + EFHR

Baserate ... Dies ist der Grundwert, der von der verwendeten Animation abhängig ist. Bei der Treffererholung liegt dieser Wert bei 50.
EFHR ... Dieser Wert wird intern aus der FHR berechnet. Dabei wird die so genannte "dimishing returns" Formel angewandt, die einen sinkenden Grenznutzen aufweist. Anders ausgedrückt braucht man mit steigendem Wert immer mehr FHR um noch eine weitere Änderung der EFHR zu bewirken.

EFHR = [120*FHR/(120+FHR)]

Nun fehlen uns bloß noch die Werte für FramesPerDirection und AnimationSpeed. Wo diese zu finden sind, habe ich zu Beginn schon erklärt, doch ich werde die wichtigsten Werte hier posten um einem das Suchen zu ersparen.

Werte für FramesPerDirection und AnimationSpeed:

Amazone: 6, 256
Assassine: 5, 256
Barbar: 5, 256
Druide mit einhändig geführter Schwungwaffe: 7, 248
Druide mit sonstiger Waffen: 7, 256
Nekromant: 7, 256
Paladin mit zweihändig geführter Waffe, ausgenommen Schwertern: 5, 192
Paladin mit sonstiger Waffe: 5, 256
Zauberin: 8, 256

Stygische Puppe: 10, 256
Vampir: 4, 136
Werbär: 5, 184
Werwolf: 4, 256

Barbarensöldner: 5, 256
Eisenwolf: 9, 256
Rogue: 6, 256
Stadtwache: 8, 256


Zusammenfassung:

FPA = {(256*FramesPerDirection)/[(AnimationSpeed*(50+EFHR)/100)]}-1
EFHR = [120*FHR/(120+FHR)]

FramesPerDirection ... Die Anzahl einzelnder Frames einer bestimmten Animation.
AnimationSpeed ... Animationsabhängiger Grundwert des Counter-Ansteigswertes.


Breakpoints

Da wir nun die Formel zur Berechnung kennen, ist es das Naheliegenste, diese einfach umzuformen. Man würde die EFHR explizit darstellen, berechnen und dann in FHR umwandeln. Leider ist dies jedoch nicht möglich, die Rundungen verhindern solch eine allgemeingültige Umformung. Daher berechnen wir uns für jedes mögliche EFHR die Dauer der Animation und notieren jenen Wert, bei dem im Vergleich zum vorhergehenden Wert eine Änderung stattfindet. Das so ermittelte EFHR rechnen wir anschließend in FHR um, weshalb wir unsere Formel umformen:

FHR = {120*EFHR/(120-EFHR)}

Auf diese Weise kommen wir auf folgende Werte für die Dauer der Treffererholungsanimation:

Code:
[b]Dauer [Ticks]:       [color=gold]19[/color]  [color=silver]18[/color]  [color=gold]17[/color]  [color=silver]16[/color]  [color=gold]15[/color]  [color=silver]14[/color]  [color=gold]13[/color]  [color=silver]12[/color]  [color=gold]11[/color]  [color=silver]10[/color]  [color=gold]09[/color]  [color=silver]08[/color]  [color=gold]07[/color]  [color=silver]06[/color]  [color=gold]05[/color]  [color=silver]04[/color]  [color=gold]03[/color]  [color=silver]02[/color][/b]

[b]Amazone:                                             [color=gold]00[/color]  [color=silver]06[/color]  [color=gold]13[/color]  [color=silver]20[/color]  [color=gold]32[/color]  [color=silver]52[/color]  [color=gold]86[/color] [color=silver]174[/color] [color=gold]600[/color][/b]
Assassine:                                                   [color=gold]00[/color]  [color=silver]07[/color]  [color=gold]15[/color]  [color=silver]27[/color]  [color=gold]48[/color]  [color=silver]86[/color] [color=gold]200[/color] [color=silver]4680[/color]
[b]Barbar:                                                      [color=gold]00[/color]  [color=silver]07[/color]  [color=gold]15[/color]  [color=silver]27[/color]  [color=gold]48[/color]  [color=silver]86[/color] [color=gold]200[/color] [color=silver]4680[/color][/b]
Druide:                                      [color=gold]00[/color]  [color=silver]05[/color]  [color=gold]10[/color]  [color=silver]16[/color]  [color=gold]26[/color]  [color=silver]39[/color]  [color=gold]56[/color]  [color=silver]86[/color] [color=gold]152[/color] [color=silver]377[/color]
[b]Druide 1hs:                              [color=silver]00[/color]  [color=gold]03[/color]  [color=silver]07[/color]  [color=gold]13[/color]  [color=silver]19[/color]  [color=gold]29[/color]  [color=silver]42[/color]  [color=gold]63[/color]  [color=silver]99[/color] [color=gold]174[/color] [color=silver]456[/color][/b]
Nekromant:                                   [color=gold]00[/color]  [color=silver]05[/color]  [color=gold]10[/color]  [color=silver]16[/color]  [color=gold]26[/color]  [color=silver]39[/color]  [color=gold]56[/color]  [color=silver]86[/color] [color=gold]152[/color] [color=silver]377[/color]
[b]Paladin:                                                     [color=gold]00[/color]  [color=silver]07[/color]  [color=gold]15[/color]  [color=silver]27[/color]  [color=gold]48[/color]  [color=silver]86[/color] [color=gold]200[/color] [color=silver]4680[/color][/b]
Paladin stf, 2ht:                            [color=gold]00[/color]  [color=silver]03[/color]  [color=gold]07[/color]  [color=silver]13[/color]  [color=gold]20[/color]  [color=silver]32[/color]  [color=gold]48[/color]  [color=silver]75[/color] [color=gold]129[/color] [color=silver]280[/color] [color=gold]4680[/color]
[b]Zauberin:                            [color=gold]00[/color]  [color=silver]05[/color]  [color=gold]09[/color]  [color=silver]14[/color]  [color=gold]20[/color]  [color=silver]30[/color]  [color=gold]42[/color]  [color=silver]60[/color]  [color=gold]86[/color] [color=silver]142[/color] [color=gold]280[/color] [color=silver]1480[/color][/b]

untoter Fetisch:     [color=gold]00[/color]  [color=silver]04[/color]  [color=gold]07[/color]  [color=silver]10[/color]  [color=gold]15[/color]  [color=silver]20[/color]  [color=gold]27[/color]  [color=silver]35[/color]  [color=gold]48[/color]  [color=silver]65[/color]  [color=gold]86[/color] [color=silver]129[/color] [color=gold]200[/color] [color=silver]414[/color] [color=gold]4680[/color]
[b]Vampir:                              [color=gold]00[/color]  [color=silver]02[/color]  [color=gold]06[/color]  [color=silver]10[/color]  [color=gold]16[/color]  [color=silver]24[/color]  [color=gold]34[/color]  [color=silver]48[/color]  [color=gold]72[/color] [color=silver]117[/color] [color=gold]208[/color][/b]
Werbär:                                      [color=gold]00[/color]  [color=silver]05[/color]  [color=gold]10[/color]  [color=silver]16[/color]  [color=gold]24[/color]  [color=silver]37[/color]  [color=gold]54[/color]  [color=silver]86[/color] [color=gold]152[/color] [color=silver]360[/color]
[b]Werwolf:                                                             [color=gold]00[/color]  [color=silver]09[/color]  [color=gold]20[/color]  [color=silver]42[/color]  [color=gold]86[/color] [color=silver]280[/color][/b]

Barbarensöldner:                                             [color=gold]00[/color]  [color=silver]07[/color]  [color=gold]15[/color]  [color=silver]27[/color]  [color=gold]48[/color]  [color=silver]86[/color] [color=gold]200[/color] [color=silver]4680[/color]
[b]Eisenwolf:                   [color=gold]00[/color]  [color=silver]05[/color]  [color=gold]08[/color]  [color=silver]13[/color]  [color=gold]18[/color]  [color=silver]24[/color]  [color=gold]32[/color]  [color=silver]46[/color]  [color=gold]63[/color]  [color=silver]86[/color] [color=gold]133[/color] [color=silver]232[/color] [color=gold]600[/color][/b]
Rogue:                                               [color=gold]00[/color]  [color=silver]06[/color]  [color=gold]13[/color]  [color=silver]20[/color]  [color=gold]32[/color]  [color=silver]52[/color]  [color=gold]86[/color] [color=silver]174[/color] [color=gold]600[/color]
[b]Stadtwache:                          [color=gold]00[/color]  [color=silver]05[/color]  [color=gold]09[/color]  [color=silver]14[/color]  [color=gold]20[/color]  [color=silver]30[/color]  [color=gold]42[/color]  [color=silver]60[/color]  [color=gold]86[/color] [color=silver]142[/color] [color=gold]280[/color][/b]
Wenn wir uns im verwandelten Zustand befinden, brauchen wir natürlich jene Animation, die unserem aktuellem Äußerem entspricht. Daher spielt es keine Rolle welcher Charakter sich verwandelt, es gelten immer die Werte der jeweiligen Wandelform.
 
Block

Bei physischen Angriffen haben wir die Möglichkeit durch Einsatz unseres Schildes den Schaden abzuwenden. Die Blockabfrage wird durchlaufen, sofern der Angriff unsere Verteidigung (Chance berechnet sich aus Verteidigung, Verteidigerlevel, gegnerischem Angriffswert und Angreiferlevel) durchdrungen hat. Bei einer negativen Blockabfrage besteht noch die Möglichkeit den Angriff durch eine Fertigkeit (Meiden, Ausweichen, Entrinnen) abzuwehren.
Während dem Blockvorgang sind wir unfähig jegliche Aktion auszuführen und er kann auch nicht unterbrochen werden. Falls man somit beabsichtigt mit Block zu spielen, sollte man eine möglichst kurze Blockdauer anstreben. Dies erreichen wir durch die Eigenschaft FBR, erhältlich von diversen Gegenständen. Dabei sollte man auf das Erreichen der Breakpoints achten, denn im Bereich zwischen ihnen ist der genau Wert nicht relevant.

Damit eine Spieleinheit überhaupt blocken kann, braucht sie einen Schild (und zwar intern, nicht nur graphisch), eine Blockchance und natürlich eine Blockanimation. Die berühmte Ausname der Regel stellen all jene Monster dar, die in der MonStats.txt einen Eintrag in der Spalte "NoShldBlock" haben. Diese brauchen weder Schild noch Animation, allerdings natürlich ebenfalls eine Blockchance. Davon betroffen sind Große Mumien, die Ritter der Verdammnis und sämtliche Aktbosse.
Die Söldner (wobei hier sowieso nur der Eisenwolf einen Schild trägt) haben keine Blockanimation und können somit nicht blocken.
Die Skellete, welche der Totenbeschwörer beleben kann, gibt es in 2 Ausführungen. Eine Art ist mit einem Rundschild ausgestattet, während die andere einen eckigen Schild trägt. Blocken kann allerdings nur die zweitgenannte Art.

Der Block eines Charakters kann im Charakterfenster abgelesen werden, wenn man den Curser auf die Anzeige der Verteidigung legt. Der am Schild angegebene Wert ist nicht unsere endgültige Blockchance, er fließt nur in die Berechnung mitein. Beim Ablesen des zweitgenannten Wertes sollte man wissen, dass der angegebene Wert ein Maximum von 75% hat. Bietet uns der Schild einen höheren Bonus, müssen wir diesen selbst berechnen. Die Blockchance eines Schildes (normaler Schild, Paladin-Schild, Schrumpfkopf) ist immer gleich, sie hängt jedoch von der verwendeten Charakterklasse ab.

Unsere Blockchance wird durch unser Charakterlevel, unsere Geschicklichkeit, den Schildblock und durch diverse Blockboni von Gegenständen oder der Fertigkeit "Heiliger Schild" beeinflusst. Dabei wirkt sich unser Level allerdings negativ aus. Je höher dieses ist, desto geringer wird unser Block und desto mehr Geschicklichkeit brauchen wir für einen bestimmten Blockwert.

Blockchance = [(Schildblock+Blockbonus)*(Geschicklichkeit-15)/(Charakterlevel*2)]

Durch Umformen können wir uns für einen bestimmten Charakterlevel die benötigte Geschicklichkeit für eine bestimmte Blockchance berechnen. Da man entweder ohne oder mit maximaler Blockchance spielt, gehe ich gleib von letzterm Fall aus:

benötigte Geschicklichkeit = 15 + {150*Charakterlevel/(Schildblock+Blockbonus)}

Falls man allerdings läuft, wird nicht nur die eigene Verteidigung ignoriert, sondern auch der Block gedrittelt. Damit könnten wir nur noch eine Blockchance von 25% erreichen.


Animationslänge

FPA = {(256*FramesPerDirection)/[(AnimationSpeed*Acceleration/100)]}-1

Wie man anhand der Formel erkennen kann, handelt es sich bei der Acceleration um einen Prozentwert. Dieser muss daher über einen Grundwert verfügen, der dann durch bestimmte Boni und Mali verändert werden kann. In diesem Fall ist die Zusammensetzung recht simpel, da sich nur eine Eigenschaft auf diese Dauer auswirkt.

Acceleration = Baserate + EFBR

Baserate ... Der Grundwert jeder Acceleration, welcher von der verwendeten Animation abhängig ist. Beim Block liegt dieser Wert bei 50.
EFBR ... Dieser Wert wird intern aus der FBR berechnet. Dabei wird die so genannte "dimishing returns" Formel angewandt, die einen sinkenden Grenznutzen aufweist. Anders ausgedrückt braucht man mit steigendem Wert immer mehr FBR um noch eine weitere Änderung der EFBR zu bewirken.

EFBR = [120*FBR/(120+FBR)]

Neben der FBR gibt es noch die Fertigkeit "Heiliger Schild", deren Einsatz uns einen Bonus von 50 zur EFBR liefert, wodurch man sehr leicht geringe Blockzeiten erreicht.

Nun fehlen uns bloß noch die Werte für FramesPerDirection und AnimationSpeed. Wo wir diese finden habe ich zu Beginn schon erklärt, doch ich werde die wichtigsten Werte hier posten um einem das Suchen zu ersparen.

Werte für FramesPerDirection und AnimationSpeed:

Amazone: 3, 256
Amazone mit einhändig geführter Schwungwaffe: 3, 88
Assassine: 3, 256
Barbar: 4, 256
Druide: 6, 256
Nekromant: 6, 256
Paladin: 3, 256
Zauberin: 5, 256

Werbär: 5, 200
Werwolf: 5, 256

Ausnahmen - Verwandlung:

Die zwei Wandelformen Vampir (durch das Tragen des vollständigen Trang-Ouls Sets) und untoter Rattenmann (durch den Skill "Delirium" des gleichnamigen Runenwortes) haben keine Blockanimation. Trotzdem kann der verwandelte Charakter blocken. Dies ist möglich, da zum Blocken in beiden Fällen die Treffererholungsanimation verwendet wird. Dies bedeutet, dass man die Blockanimation nicht mit FBR, sondern nur mit FHR beschleunigen kann. Da die selben Werte wie bei der Treffererholungsanimation verwendet werden, gelten auch die selben Breakpoints. Allerdings ist FBR hier nicht vollkommen nutzlos, denn diese Eigenschaft hat noch einen weiteren nützlichen Effekt. In 1.09 gab es den Effekt das "Block-Lock", ein Dauerblocken, dass jegliche Aktion verhindert hat. Um dies zu unterbinden, gibt es seit 1.10 eine Zeitsperre, währenddessen zwar geblockt werden kann, aber die Blockanimation nicht durchlaufen wird. Diese Zeitspanne kann durch FBR - und zwar auch bei den beiden Wandelformen - erhöht werden.

untoter Fetisch: 10, 256
Vampir: 4, 136


Zusammenfassung:

FPA = {(256*FramesPerDirection)/[(AnimationSpeed*(50+EFBR)/100)]}-1
EFBR = [120*FBR/(120+FBR)]

FramesPerDirection ... Die Anzahl an Frames, die von einer Animation verwendet werden.
AnimationSpeed ... Der Grundwert des Counter-Anstiegswertes, wird durch die jeweilige Animation vorgegeben.


Breakpoints:

Code:
[b]Dauer [Ticks]:       [color=gold]19[/color]  [color=silver]18[/color]  [color=gold]17[/color]  [color=silver]16[/color]  [color=gold]15[/color]  [color=silver]14[/color]  [color=gold]13[/color]  [color=silver]12[/color]  [color=gold]11[/color]  [color=silver]10[/color]  [color=gold]09[/color]  [color=silver]08[/color]  [color=gold]07[/color]  [color=silver]06[/color]  [color=gold]05[/color]  [color=silver]04[/color]  [color=gold]03[/color]  [color=silver]02[/color]  [color=gold]01[/color][/b]

[b]Amazone 1hs:                 [color=gold]00[/color]  [color=silver]04[/color]  [color=gold]06[/color]  [color=silver]11[/color]  [color=gold]15[/color]  [color=silver]23[/color]  [color=gold]29[/color]  [color=silver]40[/color]  [color=gold]56[/color]  [color=silver]80[/color] [color=gold]120[/color] [color=silver]200[/color] [color=gold]480[/color][/b] 
Amazone:                                                                 [color=silver]00[/color]  [color=gold]13[/color]  [color=silver]32[/color]  [color=gold]86[/color] [color=silver]600[/color]
[b]Assassine:                                                               [color=silver]00[/color]  [color=gold]13[/color]  [color=silver]32[/color]  [color=gold]86[/color] [color=silver]600[/color][/b]
Barbar:                                                              [color=gold]00[/color]  [color=silver]09[/color]  [color=gold]20[/color]  [color=silver]42[/color]  [color=gold]86[/color] [color=silver]280[/color]
[b]Druide:                                              [color=gold]00[/color]  [color=silver]06[/color]  [color=gold]13[/color]  [color=silver]20[/color]  [color=gold]32[/color]  [color=silver]52[/color]  [color=gold]86[/color] [color=silver]174[/color] [color=gold]600[/color][/b]
Nekromant:                                           [color=gold]00[/color]  [color=silver]06[/color]  [color=gold]13[/color]  [color=silver]20[/color]  [color=gold]32[/color]  [color=silver]52[/color]  [color=gold]86[/color] [color=silver]174[/color] [color=gold]600[/color]
[b]Paladin:                                                                 [color=silver]00[/color]  [color=gold]13[/color]  [color=silver]32[/color]  [color=gold]86[/color] [color=silver]600[/color][/b]
Paladin mit HS:                                                                          [color=silver]00[/color]  [color=gold]86[/color]
[b]Zauberin:                                                    [color=gold]00[/color]  [color=silver]07[/color]  [color=gold]15[/color]  [color=silver]27[/color]  [color=gold]48[/color]  [color=silver]86[/color] [color=gold]200[/color] [color=silver]4680[/color][/b]

styg. Puppe:         [color=gold]00[/color]  [color=silver]04[/color]  [color=gold]07[/color]  [color=silver]10[/color]  [color=gold]15[/color]  [color=silver]20[/color]  [color=gold]27[/color]  [color=silver]35[/color]  [color=gold]48[/color]  [color=silver]65[/color]  [color=gold]86[/color] [color=silver]129[/color] [color=gold]200[/color] [color=silver]414[/color] [color=gold]4680[/color]
[b]Vampir:                              [color=gold]00[/color]  [color=silver]02[/color]  [color=gold]06[/color]  [color=silver]10[/color]  [color=gold]16[/color]  [color=silver]24[/color]  [color=gold]34[/color]  [color=silver]48[/color]  [color=gold]72[/color] [color=silver]117[/color] [color=gold]208[/color] [color=silver]638[/color][/b]
Werbär:                                          [color=silver]00[/color]  [color=gold]05[/color]  [color=silver]10[/color]  [color=gold]16[/color]  [color=silver]27[/color]  [color=gold]40[/color]  [color=silver]65[/color] [color=gold]109[/color] [color=silver]223[/color] [color=gold]1320[/color]
[b]Werwolf:                                                     [color=gold]00[/color]  [color=silver]07[/color]  [color=gold]15[/color]  [color=silver]27[/color]  [color=gold]48[/color]  [color=silver]86[/color] [color=gold]200[/color] [color=silver]4680[/color][/b]
Wenn wir uns im verwandelten Zustand befinden, brauchen wir natürlich jene Animation, die unserem aktuellem Äußerem entspricht. Daher spielt es keine Rolle welcher Charakter sich verwandelt, es gelten immer die Werte der jeweiligen Wandelform.
 
Zauber

Die Animationen von Zaubern und Angriffen unterscheien sich von jenen, die wir bisher behandelt haben. Weder der Block noch die Treffererholung beinhalten eine wirkliche Aktion. In beiden Fällen wird einfach durch ein bestimmtes Ereigniss eine Graphik abgespielt. Der einzige Sinn dieser Animationen bestät darin, den Charakter durch handlungsunfähigkeit zu stören.
Im Gegensatz dazu haben Zauber und Angriff den Zweck, die Gegner zu schädigen. Diese Animationen beinhalten eine Aktion, nämlich das Treffen des Gegners oder das Erzeugen eines Geschosses. Der Zeitpunkt dieser Animation hat dabei nichts mit der graphischen Ausgabe zu tun. Wir schaden dem Gegner nicht, sobald er laut der abgespielten Animation von uns getroffen wird. Der Zeitpunkt an dem solch eine Aktion ausgeführt wird, verwendet das gleiche System, dem auch die Ermittelung der Animationslänge zugrunde liegt. Näheres dazu folgt dann im entsprechenden Teilbereich.

Animationslänge

FPA = {(Hitshift*FramesPerDirection)/[(AnimationSpeed*Acceleration/100)]}-1

Wie man anhand der Formel erkennen kann, handelt es sich bei der Acceleration um einen Prozentwert. Dieser muss daher über einen Grundwert verfügen, der dann durch bestimmte Boni und Mali verändert werden kann. In diesem Fall ist die Zusammensetzung recht simpel, da sich nur eine Eigenschaft auf diese Dauer auswirkt.

Acceleration = Baserate + EFCR

Baserate ... Der Grundwert der Beschleunigung, welcher von der verwendeten Animation abhängt. Für Zauber beträgt dieser Wert 100.
EFCR ... Diese wird intern aus der FCR berechnet. Dabei wird die so genannte "dimishing returns" Formel angewandt, die einen sinkenden Grenznutzen aufweist. Anders ausgedrückt braucht man mit steigendem Wert immer mehr FCR um noch eine weitere Änderung der EFCR zu bewirken.

EFCR = [120*FCR/(120+FCR)]

Nun fehlen uns bloß noch die Werte für FramesPerDirection und AnimationSpeed. Wo wir diese finden habe ich zu Beginn schon erklärt, doch ich werde die wichtigsten Werte hier posten um einem das Suchen zu ersparen.

Werte für FramesPerDirection und AnimationSpeed:

Amazone: 20, 256
Assassine: 17, 256
Barbar: 14, 256
Druide: 15, 208
Nekromant: 16, 256
Paladin: 16, 256
Zauberin: 14, 256

Vampir: 15, 160
Werbär: 10, 152
Werwolf: 11, 168

Eisenwolf: 18, 256

Ausnahmen - Sequenzen:

Die Fertigkeiten "Arktiswind", "Inferno", "Kettenblitz" und "Blitzschlag" verwenden nicht die SC-Animation, sondern eine bestimmte Abfolge verschiedener Frames aus anderen Animationen. "Arktiswind" und "Inferno" haben keine fixe Dauer, sodass jegliche Berechnungen ziehmlich sinnlos wären. Somit bleiben noch die Zauber "Blitzschlag" und "Kettenblitz", welche die selbe Animation benutzen:

Zauberin L/CL: 19, 256


Zusammenfassung

FPA = {(256*FramesPerDirection)/[(AnimationSpeed*(100+EFCR)/100)]}-1
EFC = [120*FCR/(120+FCR)]


Für Sequenzen:

FPA = {(256*FramesPerDirection)/[(AnimationSpeed*(100+EFCR)/100)]}
EFC = [120*FCR/(120+FCR)]


FramesPerDirection ... Die Anzahl an Frames, die von einer Animation verwendet werden.
AnimationSpeed ... Der Grundwert des Counter-Anstiegswertes, welcher durch die jeweilige Animation bestimmt wird.


Breakpoints

Code:
[b]Dauer [Ticks]:     [color=gold]23[/color]  [color=silver]22[/color]  [color=gold]21[/color]  [color=silver]20[/color]  [color=gold]19[/color]  [color=silver]18[/color]  [color=gold]17[/color]  [color=silver]16[/color]  [color=gold]15[/color]  [color=silver]14[/color]  [color=gold]13[/color]  [color=silver]12[/color]  [color=gold]11[/color]  [color=silver]10[/color]  [color=gold]09[/color]  [color=silver]08[/color]  [color=gold]07[/color][/b]

[b]Amazone:                           [color=gold]00[/color]  [color=silver]07[/color]  [color=gold]14[/color]  [color=silver]22[/color]  [color=gold]32[/color]  [color=silver]48[/color]  [color=gold]68[/color]  [color=silver]99[/color] [color=gold]152[/color][/b]
Assassine:                                     [color=silver]00[/color]  [color=gold]08[/color]  [color=silver]16[/color]  [color=gold]27[/color]  [color=silver]42[/color]  [color=gold]65[/color] [color=silver]102[/color] [color=gold]174[/color]
[b]Barbar:                                                    [color=gold]00[/color]  [color=silver]09[/color]  [color=gold]20[/color]  [color=silver]37[/color]  [color=gold]63[/color] [color=silver]105[/color] [color=gold]200[/color][/b]
Druide:                                [color=silver]00[/color]  [color=gold]04[/color]  [color=silver]10[/color]  [color=gold]19[/color]  [color=silver]30[/color]  [color=gold]46[/color]  [color=silver]68[/color]  [color=gold]99[/color] [color=silver]163[/color]
[b]Nekromant:                                         [color=gold]00[/color]  [color=silver]09[/color]  [color=gold]18[/color]  [color=silver]30[/color]  [color=gold]48[/color]  [color=silver]75[/color] [color=gold]125[/color][/b]
Paladin:                                           [color=gold]00[/color]  [color=silver]09[/color]  [color=gold]18[/color]  [color=silver]30[/color]  [color=gold]48[/color]  [color=silver]75[/color] [color=gold]125[/color]
[b]Zauberin:                                                  [color=gold]00[/color]  [color=silver]09[/color]  [color=gold]20[/color]  [color=silver]37[/color]  [color=gold]63[/color] [color=silver]105[/color] [color=gold]200[/color][/b]
Zauberin C/CL:                     [color=gold]00[/color]  [color=silver]07[/color]  [color=gold]15[/color]  [color=silver]23[/color]  [color=gold]35[/color]  [color=silver]52[/color]  [color=gold]78[/color] [color=silver]117[/color] [color=gold]194[/color]

Vampir:            [color=gold]00[/color]  [color=silver]06[/color]  [color=gold]11[/color]  [color=silver]18[/color]  [color=gold]24[/color]  [color=silver]35[/color]  [color=gold]48[/color]  [color=silver]65[/color]  [color=gold]86[/color] [color=silver]120[/color] [color=gold]180[/color]
[b]Werbär:                                        [color=silver]00[/color]  [color=gold]07[/color]  [color=silver]15[/color]  [color=gold]26[/color]  [color=silver]40[/color]  [color=gold]63[/color]  [color=silver]99[/color] [color=gold]163[/color][/b]
Werwolf:                                       [color=silver]00[/color]  [color=gold]06[/color]  [color=silver]14[/color]  [color=gold]26[/color]  [color=silver]40[/color]  [color=gold]60[/color]  [color=silver]95[/color] [color=gold]157[/color]

[b]Eisenwolf:                                 [color=gold]00[/color]  [color=silver]08[/color]  [color=gold]15[/color]  [color=silver]26[/color]  [color=gold]39[/color]  [color=silver]58[/color]  [color=gold]86[/color] [color=silver]138[/color][/b]
Wenn wir uns im verwandelten Zustand befinden, brauchen wir natürlich jene Animation, die unserem aktuellem Äußerem entspricht. Daher spielt es keine Rolle welcher Charakter sich verwandelt, es gelten immer die Werte der jeweiligen Wandelform.


das kritische Tick

Die Animation eines jeden Zaubers lässt sich in drei Abschnitte unterteilen. Der Zweck eines Zaubers ist das Ausführen einer Aktion, welcher Art auch immer. Der Zeitpunkt an dem dies geschiet, wird als das kritische Tick bezeichnet.
Vor dieser Aktion wird der einleitende Animationsteil abgespielt. Nur in diesem Stadion der Animation kann der Zauber noch unterbrochen werden, denn sobald die eigentliche Aktion ausgeführt ist, brauchen wir die Animation nicht mehr und würden von einem Abbruch derselben sogar profitieren.
Nach dem kritischem Tick wird nur noch die abschließende Animation abgespielt. Diese bietet uns keinerlei Nutzen mehr, sie verhindert nur den sofortigen Start der nächsten Animation.

Es ist nun natürlich auch interessant zu wissen, wann der Zauber wirklich ausgeführt wird. Um dies zu berechnen, brauchen wir das so genannte FrameDataActionFlag, welches wir aus der animdata.txt auslesen können. Ab der vierten Spalte beginnen die "FrameDataXXX" Spalten, angefangen beim Frame000 in fortlaufender Nummerierung. In diesen Spalten ist das FrameDataActionFlag durch eine Ziffer ("1" für Angriffe und "2" für Geschosse) markiert. Beim Auslesen muss man jedoch auf die Bezeichnung Acht geben. Ist die fünfte Spalte auf obige Weise markiert, so weißt das FrameDataActionFlag nicht den Wert "5" auf. Da das erste Frame jenes mit der Bezeichnung "00" ist, hat das FrameDataActionFlag bei Markierung in der fünften Spalte den Wert "04".

Um das kritische Tick nun zu berechnen, müssen wir uns wieder eine Formel herleiten. Bei der Formel für die Gesammtdauer der Animation haben wir mit dem Counter-Endwert gerechnet und hier können uns ebenso einen solchen Counterwert verwenden. Jedes Frame hat dank des Hitshifts 256 Counterstellungen und daher multiplizieren wir diesen Faktor mit dem FrameDataActionFlag. Der Counter beginnt natürlich mit 0*256 und nicht mit 1*256, sodass wir wieder die Benennung (denn mit dieser wird intern gerechnet) und nicht die Reihenfolge des FrameDataActionFlags hernehmen müssen. Sobald dieser Counter-Aktionswert erreicht oder überschritten wird, führt das Programm die jeweilige Animation aus. Wäre die Aktion an das Abspielen des FrameDataActionFlags selbst gebunden, könnte sie beim Überspringen dieses Frames garnicht ausgeführt werden.

Nun wird also in jedem Tick der Counter erhöht und unsere Aktion wird beim Erreichen oder Überschreiten des Counter-Aktionswertes durchgeführt. Daraus ergibt sich erneut unsere bereits bekannte Division und da es bei der Anzahl der Erhöhungen des Counters wieder nur ganze Zahlen geben kann, müssen wir erneut aufrunden und landen somit bei jenem Frame, bei dem die Aktion durchgeführt wird (entweder das FrameDataActionFlag oder das nachfolgende Frame, falls das FrameDataActionFlag nicht abgespielt wird). Anders als bei der Berechnung der Gesammtdauer wird die Animation allerdings nicht abgebrochen, sondern bloß die Aktion durchgeführt. Damit müssen wir das letzte Tick nicht abziehen und haben die Formel bereits vollständig hergelitten.

FPA = {(256*FramesDataActionFlag)/[(AnimationSpeed*Acceleration/100)]}


Werte für FrameDataActionFlag und AnimationSpeed:

Amazone mit Stichwaffe oder zweihändig geführter Waffe exklusive Schwert: 13, 256
Amazone mit Armbrust, Zweihandschwert oder einhändiger Schwungwaffe: 12, 256
Amazone ohne Waffe: 11, 256
Amazone mit Bogen: 10, 256
Assassine: 09, 256
Barbar: 09, 256
Druide: 08, 208
Nekromant: 08, 256
Paladin: 09, 256
Zauberin: 07, 256
Zauberin C/CL: 08, 256

Vampir: 03, 160
Werbär: 05, 152
Werwolf: 05, 168

Eisenwolf: 07, 256

Code:
[b]Dauer [Ticks]:          [color=gold]13[/color]  [color=silver]12[/color]  [color=gold]11[/color]  [color=silver]10[/color]  [color=gold]09[/color]  [color=silver]08[/color]  [color=gold]07[/color]  [color=silver]06[/color]  [color=gold]05[/color]  [color=silver]04[/color]  [color=gold]03[/color][/b]
[u]
[/u]
Amazone ht, stf:        [color=gold]00[/color]  [color=silver][u]10[/u][/color]  [color=gold][u]23[/u][/color]  [color=silver][u]42[/u][/color]  [color=gold][u]72[/u][/color] [color=silver][u]133[/u][/color]
[b]Amazone xbw, 2hs, 1hs:      [color=silver]00[/color]  [color=gold][u]11[/u][/color]  [color=silver][u]26[/u][/color]  [color=gold]48[/color]  [color=silver][u]86[/u][/color] [color=gold][u]180[/u][/color][/b]
Amazone hth:                    [color=gold]00[/color]  [color=silver][u]13[/u][/color]  [color=gold][u]29[/u][/color]  [color=silver][u]56[/u][/color] [color=gold][u]113[/u][/color]
[b]Amazone bow:                        [color=silver]00[/color]  [color=gold]14[/color]  [color=silver]32[/color]  [color=gold]68[/color] [color=silver]152[/color][/b]
[b]Assassine:                              [color=gold]00[/color]  [color=silver][u]15[/u][/color]  [color=gold][u]39[/u][/color]  [color=silver][u]86[/u][/color][/b]
Barbar:                                 [color=gold]00[/color]  [color=silver][u]15[/u][/color]  [color=gold][u]39[/u][/color]  [color=silver][u]86[/u][/color]
[b]Druide:                             [color=silver]00[/color]  [color=gold][u]11[/u][/color]  [color=silver]30[/color]  [color=gold][u]63[/u][/color] [color=gold][u]142[/u][/color][/b]
Nekromant:                                  [color=silver]00[/color]  [color=gold]18[/color]  [color=silver]48[/color] [color=gold]125[/color]
[b]Paladin:                                [color=gold]00[/color]  [color=silver][u]15[/u][/color]  [color=gold][u]39[/u][/color]  [color=silver][u]86[/u][/color][/b]
Zauberin:                                       [color=gold]00[/color]  [color=silver]20[/color]  [color=gold]63[/color] [color=silver]200[/color]
[b]Zauberin C/CL:                          [color=gold]00[/color]  [color=silver]15[/color]  [color=gold]39[/color]  [color=silver]86[/color][/b]
Die unterstrichenen Breakpoints sind jene, die nicht mit einem Breakpoint zur Verringeren der Gesammtdauer des Zaubers zusammenfallen.
 
Angriffsanimationen

Um den obigen Post nicht zu unübersichtlich zu machen, schreibe ich die Werte für unsere Angriffsanimationen gesondert hierhin. Die Angaben haben folgendes Format:

Animation ..... FramesPerDirection ..... AnimationSpeed ..... FrameDataActionFlag

Amazone:
Code:
[b]AM [color=gold]A1[/color] [color=silver]HTH[/color]   13	256	09[/b]
AM [color=gold]A1[/color] [color=silver]1HS[/color]   16	256	11
[b]AM [color=gold]A1[/color] [color=silver]2HS[/color]   20	256	13[/b]
AM [color=gold]A1[/color] [color=silver]1HT[/color]   15	256	10
[b]AM [color=gold]A1[/color] [color=silver]2HT[/color]   18	256	12[/b]
AM [color=gold]A1[/color] [color=silver]STF[/color]   20	256	13
[b]AM [color=gold]A1[/color] [color=silver]BOW[/color]   14	256	07[/b]
AM [color=gold]A1[/color] [color=silver]XBW[/color]   20	256	10

[b]AM [color=gold]TH[/color] [color=silver]XXX[/color]   16	256	10[/b]

Assassine:
Code:
[b]AI [color=gold]A1[/color] [color=silver]HTH[/color]   11	256	07[/b]
AI [color=gold]A1[/color] [color=silver]HT1[/color]   11	208	07
[b]AI [color=gold]A1[/color] [color=silver]HT2[/color]   11	208	07[/b]
AI [color=gold]A1[/color] [color=silver]1HS[/color]   15	256	08
[b]AI [color=gold]A1[/color] [color=silver]2HS[/color]   23	256	12[/b]
AI [color=gold]A1[/color] [color=silver]1HT[/color]   15	256	08
[b]AI [color=gold]A1[/color] [color=silver]2HT[/color]   23	256	11[/b]
AI [color=gold]A1[/color] [color=silver]STF[/color]   19	256	10
[b]AI [color=gold]A1[/color] [color=silver]BOW[/color]   16	256	08[/b]
AI [color=gold]A1[/color] [color=silver]XBW[/color]   21	256	11

[b]AI [color=gold]A2[/color] [color=silver]HTX[/color]   12	256	07[/b]

AI [color=gold]KK[/color] [color=silver]XXX[/color]   13	256	05

[b]AI [color=gold]S2[/color] [color=silver]XXX[/color]   08	128	05[/b]

AI [color=gold]S4[/color] [color=silver]XXX[/color]   12	208	07

[b]AI [color=gold]TH[/color] [color=silver]XXX[/color]   16	256	08[/b]

Barbar:
Code:
[b]BA [color=gold]A1[/color] [color=silver]HTH[/color]   12	256	07[/b]
BA [color=gold]A1[/color] [color=silver]1HS[/color]   16	256	08
[b]BA [color=gold]A1[/color] [color=silver]2HS[/color]   18	256	09[/b]
BA [color=gold]A1[/color] [color=silver]1HT[/color]   16	256	08
[b]BA [color=gold]A1[/color] [color=silver]2HT[/color]   19	256	10[/b]
BA [color=gold]A1[/color] [color=silver]STF[/color]   19	256	10
[b]BA [color=gold]A1[/color] [color=silver]BOW[/color]   15	256	08[/b]
BA [color=gold]A1[/color] [color=silver]XBW[/color]   20	256	11
[b]BA [color=gold]A1[/color] [color=silver]1JS[/color]   16	256	08[/b]
BA [color=gold]A1[/color] [color=silver]1JT[/color]   16	256	08
[b]BA [color=gold]A1[/color] [color=silver]1SS[/color]   16	256	08[/b]
BA [color=gold]A1[/color] [color=silver]1ST[/color]   16	256	08

[b]BA [color=gold]A2[/color] [color=silver]1JS[/color]   16	256	09[/b]

BA [color=gold]S3[/color] [color=silver]1JX[/color]   12	256	08
[b]BA [color=gold]S3[/color] [color=silver]1SX[/color]   12	256	09[/b]

BA [color=gold]S4[/color] [color=silver]1JX[/color]   16	256	09
[b]BA [color=gold]S4[/color] [color=silver]1SX[/color]   16	256	10[/b]

Druide:
Code:
[b]DZ [color=gold]A1[/color] [color=silver]HTH[/color]   16	256	09[/b]
DZ [color=gold]A1[/color] [color=silver]1HS[/color]   19	256	10
[b]DZ [color=gold]A1[/color] [color=silver]2HS[/color]   21	256	11[/b]
DZ [color=gold]A1[/color] [color=silver]1HT[/color]   19	256	09
[b]DZ [color=gold]A1[/color] [color=silver]2HT[/color]   23	256	10[/b]
DZ [color=gold]A1[/color] [color=silver]STF[/color]   17	256	10
[b]DZ [color=gold]A1[/color] [color=silver]BOW[/color]   16	256	09[/b]
DZ [color=gold]A1[/color] [color=silver]XBW[/color]   20	256	11

Nekromant:
Code:
[b]NE [color=gold]A1[/color] [color=silver]HTH[/color]   15	256	09[/b]
NE [color=gold]A1[/color] [color=silver]1HS[/color]   19	256	10
[b]NE [color=gold]A1[/color] [color=silver]2HS[/color]   23	256	12[/b]
NE [color=gold]A1[/color] [color=silver]1HT[/color]   19	256	10
[b]NE [color=gold]A1[/color] [color=silver]2HT[/color]   24	256	11[/b]
NE [color=gold]A1[/color] [color=silver]STF[/color]   20	256	12
[b]NE [color=gold]A1[/color] [color=silver]BOW[/color]   18	256	10[/b]
NE [color=gold]A1[/color] [color=silver]XBW[/color]   20	256	12

Paladin:
Code:
[b]PA [color=gold]A1[/color] [color=silver]HTH[/color]   14	256	08[/b]
PA [color=gold]A1[/color] [color=silver]1HS[/color]   15	256	08
[b]PA [color=gold]A1[/color] [color=silver]2HS[/color]   18	256	09[/b]
PA [color=gold]A1[/color] [color=silver]1HT[/color]   17	256	09
[b]PA [color=gold]A1[/color] [color=silver]2HT[/color]   20	256	09[/b]
PA [color=gold]A1[/color] [color=silver]STF[/color]   18	256	10
[b]PA [color=gold]A1[/color] [color=silver]BOW[/color]   16	256	09[/b]
PA [color=gold]A1[/color] [color=silver]XBW[/color]   20	256	11

[b]PA [color=gold]A2[/color] [color=silver]2HS[/color]   19	256	09[/b]
PA [color=gold]A2[/color] [color=silver]2HT[/color]   20	256	10

[b]PA [color=gold]S1[/color] [color=silver]XXX[/color]   12	256	08[/b]

Zauberin:
Code:
[b]SO [color=gold]A1[/color] [color=silver]HTH[/color]   16	256	10[/b]
SO [color=gold]A1[/color] [color=silver]1HS[/color]   20	256	13
[b]SO [color=gold]A1[/color] [color=silver]2HS[/color]   24	256	15[/b]
SO [color=gold]A1[/color] [color=silver]1HT[/color]   19	256	12
[b]SO [color=gold]A1[/color] [color=silver]2HT[/color]   23	256	14[/b]
SO [color=gold]A1[/color] [color=silver]STF[/color]   18	256	12
[b]SO [color=gold]A1[/color] [color=silver]BOW[/color]   17	256	10[/b]
SO [color=gold]A1[/color] [color=silver]XBW[/color]   20	256	12

[b]SO [color=gold]A2[/color] [color=silver]HTH[/color]   16	256	09[/b]

Sequenzanimationen

RTB hat sich die Mühe gemacht und alle Sequenzen aus der D2Common.dll ausgelesen. Damit mein eigentlicher Post nicht zu überfüllt wird, gebe ich diese Daten ebenfalls hier an. Die Daten sind in folgendem Format angeschrieben:

Frame der SQ .......... Animation .......... Frame der angegebenen Animation .......... FrameDataActionFlag


Zauber

6 - Inferno
15 Frames
Code:
[/b]
Frame 00     SC     00     0
Frame 01     SC     01     0
Frame 02     SC     02     0
Frame 03     SC     03     0
Frame 04     SC     04     0
Frame 05     SC     05     0
Frame 06     SC     06     0
Frame 07     SC     07     0
Frame 08     SC     08     0
Frame 09     SC     09     0
Frame 10     SC     09     1
Frame 11     SC     10     0
Frame 12     SC     11     0
Frame 13     SC     12     0
Frame 14     SC     13     0

12 - Blitzschlag/Kettenblitz
19 Frames
Code:
[/b]
Frame 00     SC     00     0
Frame 01     SC     01     0
Frame 02     SC     03     0
Frame 03     SC     04     0
Frame 04     SC     05     0
Frame 05     SC     07     0
Frame 06     SC     08     0
Frame 07     SC     09     1
Frame 08     SC     09     0
Frame 09     SC     09     0
Frame 10     SC     09     0
Frame 11     SC     10     0
Frame 12     SC     09     0
Frame 13     SC     09     0
Frame 14     SC     09     0
Frame 15     SC     10     0
Frame 16     SC     11     0
Frame 17     SC     12     0
Frame 18     SC     13     0

18 - Arktiswind
15 Frames
Code:
[/b]
Frame 00     S1     00     0
Frame 01     S1     01     0
Frame 02     S1     02     0
Frame 03     S1     03     0
Frame 04     S1     04     0
Frame 05     S1     05     0
Frame 06     S1     06     0
Frame 07     S1     07     0
Frame 08     S1     08     0
Frame 09     S1     09     0
Frame 10     S1     09     1
Frame 11     S1     10     0
Frame 12     S1     11     0
Frame 13     S1     12     0
Frame 14     S1     13     0


Angriffe

1 - Stoß
Waffenlos: 13 Frames
Code:
[/b]
Frame 00     A1     05     0
Frame 01     A1     06     0
Frame 02     A1     08     0
Frame 03     A1     09     1
Frame 04     A1     10     0
Frame 05     A1     11     0
Frame 06     A1     13     0
Frame 07     A2     06     0
Frame 08     A2     08     0
Frame 09     A2     09     1
Frame 10     A1     10     0
Frame 11     A1     11     0
Frame 12     A1     13     0
Einhand: 18 Frames
Code:
[/b]
Frame 00     A1     05     0
Frame 01     A1     06     0
Frame 02     A1     08     0
Frame 03     A1     09     1
Frame 04     A1     10     0
Frame 05     A1     11     0
Frame 06     A1     13     0
Frame 07     A2     06     0
Frame 08     A2     08     0
Frame 09     A2     09     1
Frame 10     A1     10     0
Frame 11     A1     11     0
Frame 12     A1     13     0
Frame 13     A2     06     0
Frame 14     A2     08     0
Frame 15     A2     09     1
Frame 16     A2     10     0
Frame 17     A2     13     0
Zweihand: 21 Frames
Code:
[/b]
Frame 00     A1     02     0
Frame 01     A1     07     0
Frame 02     A1     09     0
Frame 03     A1     10     1
Frame 04     A1     12     0
Frame 05     A1     13     0
Frame 06     A1     15     0
Frame 07     A2     04     0
Frame 08     A2     06     0
Frame 09     A2     09     0
Frame 10     A2     10     1
Frame 11     A1     12     0
Frame 12     A1     13     0
Frame 13     A1     15     0
Frame 14     A2     04     0
Frame 15     A2     06     0
Frame 16     A2     09     0
Frame 17     A2     10     1
Frame 18     A2     11     0
Frame 19     A2     13     0
Frame 20     A2     15     0

4 - Ansturm
15 Frames
Code:
[/b]
Frame 00     RN     00     1
Frame 01     RN     01     1
Frame 02     RN     02     1
Frame 03     RN     03     1
Frame 04     RN     04     1
Frame 05     RN     05     1
Frame 06     RN     06     1
Frame 07     RN     07     1
Frame 08     A1     01     0
Frame 09     A1     04     0
Frame 10     A1     05     0
Frame 11     A1     06     1
Frame 12     A1     08     0
Frame 13     A1     10     0
Frame 14     A1     13     0

8 - Aufspießen
Einhand: 21 Frames
Code:
[/b]
Frame 00     A1     00     0 
Frame 01     A1     01     0 
Frame 02     A1     01     0 
Frame 03     A1     01     0 
Frame 04     A1     02     0 
Frame 05     A1     02     1 
Frame 06     A1     02     0 
Frame 07     A1     03     0 
Frame 08     A1     03     0 
Frame 09     A1     04     0 
Frame 10     A1     04     0 
Frame 11     A1     05     0 
Frame 12     A1     06     0 
Frame 13     A1     07     1 
Frame 14     A1     08     0 
Frame 15     A1     09     0 
Frame 16     A1     10     0 
Frame 17     A1     11     0 
Frame 18     A1     12     0 
Frame 19     A1     13     0 
Frame 20     A1     14     0
Zweihand: 24 Frames
Code:
[/b]
Frame 00     A1     00     0 
Frame 01     A1     01     0 
Frame 02     A1     01     0 
Frame 03     A1     01     0 
Frame 04     A1     02     0 
Frame 05     A1     02     0 
Frame 06     A1     02     0 
Frame 07     A1     03     0 
Frame 08     A1     03     0 
Frame 09     A1     04     0 
Frame 10     A1     04     0 
Frame 11     A1     05     0 
Frame 12     A1     06     0 
Frame 13     A1     07     0 
Frame 14     A1     08     0 
Frame 15     A1     09     1 
Frame 16     A1     10     0 
Frame 17     A1     11     0 
Frame 18     A1     12     0 
Frame 19     A1     13     0 
Frame 20     A1     14     0
Frame 21     A1     15     0 
Frame 22     A1     16     0
Frame 23     A1     17     0

10 - Wirbelwind
8 Frames
Code:
[/b]
Frame 00     A1     00     0 
Frame 01     A1     01     0 
Frame 02     A1     02     0 
Frame 03     A1     03     1 
Frame 04     A1     03     0 
Frame 05     A1     04     0 
Frame 06     A1     05     0 
Frame 07     A1     06     1

11 - Doppelschwung/Raserei
17 Frames
Code:
[/b]
Frame 00     A1     01     0 
Frame 01     A1     02     0 
Frame 02     A1     04     0 
Frame 03     A1     06     0 
Frame 04     A1     07     1 
Frame 05     A1     09     0 
Frame 06     A1     11     0 
Frame 07     A1     13     0 
Frame 08     A1     14     0 
Frame 09     S3     02     1 
Frame 10     S3     04     0 
Frame 11     S3     05     0 
Frame 12     S3     06     0 
Frame 13     S3     08     0 
Frame 14     S3     09     0 
Frame 15     S3     10     0 
Frame 16     S3     11     0

13 - Sprung
15 Frames
Code:
[/b]
Frame 00     S1     00     0 
Frame 01     S1     01     0 
Frame 02     S1     02     0 
Frame 03     S1     03     0 
Frame 04     S1     04     0 
Frame 05     S1     05     1 
Frame 06     S1     06     0 
Frame 07     S1     07     0 
Frame 08     S1     08     0 
Frame 09     S1     09     0 
Frame 10     S1     10     0 
Frame 11     S1     11     1 
Frame 12     S1     12     0 
Frame 13     S1     13     0 
Frame 14     S1     14     0

14 - Sprungangriff
Waffenlos und doppelte Einhand: 22 Frames
Code:
[/b]
Frame 00     S1     00     0 
Frame 01     S1     01     0 
Frame 02     S1     02     0 
Frame 03     S1     03     0 
Frame 04     S1     04     0 
Frame 05     S1     05     1 
Frame 06     S1     06     0 
Frame 07     S1     07     0 
Frame 08     S1     08     0 
Frame 09     S1     09     0 
Frame 10     S1     10     0 
Frame 11     S1     11     1 
Frame 12     S1     12     0 
Frame 13     S1     13     0 
Frame 14     S1     14     0 
Frame 15     A1     05     0 
Frame 16     A1     06     1 
Frame 17     A1     07     0 
Frame 18     A1     08     0 
Frame 19     A1     09     0 
Frame 20     A1     10     0 
Frame 21     A1     11     0
Einhand: 25 Frames
Code:
[/b]
Frame 00     S1     00     0 
Frame 01     S1     01     0 
Frame 02     S1     02     0 
Frame 03     S1     03     0 
Frame 04     S1     04     0 
Frame 05     S1     05     1 
Frame 06     S1     06     0 
Frame 07     S1     07     0 
Frame 08     S1     08     0 
Frame 09     S1     09     0 
Frame 10     S1     10     0 
Frame 11     S1     11     1 
Frame 12     S1     12     0 
Frame 13     S1     13     0 
Frame 14     S1     14     0 
Frame 15     A1     06     0 
Frame 16     A1     07     1 
Frame 17     A1     08     0 
Frame 18     A1     09     0 
Frame 19     A1     10     0 
Frame 20     A1     11     0 
Frame 21     A1     12     0 
Frame 22     A1     13     0
Frame 23     A1     14     0
Frame 24     A1     15     0
Zweihandschwert: 27 Frames
Code:
[/b]
Frame 00     S1     00     0 
Frame 01     S1     01     0 
Frame 02     S1     02     0 
Frame 03     S1     03     0 
Frame 04     S1     04     0 
Frame 05     S1     05     1 
Frame 06     S1     06     0 
Frame 07     S1     07     0 
Frame 08     S1     08     0 
Frame 09     S1     09     0 
Frame 10     S1     10     0 
Frame 11     S1     11     1 
Frame 12     S1     12     0 
Frame 13     S1     13     0 
Frame 14     S1     14     0 
Frame 15     A1     06     0 
Frame 16     A1     07     0 
Frame 17     A1     08     1 
Frame 18     A1     09     0 
Frame 19     A1     10     0 
Frame 20     A1     11     0 
Frame 21     A1     12     0 
Frame 22     A1     13     0
Frame 23     A1     14     0
Frame 24     A1     15     0
Frame 25     A1     16     0
Frame 26     A1     17     0
sonstige Zweihand: 28 Frames
Code:
[/b]
Frame 00     S1     00     0 
Frame 01     S1     01     0 
Frame 02     S1     02     0 
Frame 03     S1     03     0 
Frame 04     S1     04     0 
Frame 05     S1     05     1 
Frame 06     S1     06     0 
Frame 07     S1     07     0 
Frame 08     S1     08     0 
Frame 09     S1     09     0 
Frame 10     S1     10     0 
Frame 11     S1     11     1 
Frame 12     S1     12     0 
Frame 13     S1     13     0 
Frame 14     S1     14     0 
Frame 15     A1     06     0 
Frame 16     A1     07     0 
Frame 17     A1     08     0 
Frame 18     A1     09     1 
Frame 19     A1     10     0 
Frame 20     A1     11     0 
Frame 21     A1     12     0 
Frame 22     A1     13     0
Frame 23     A1     14     0
Frame 24     A1     15     0
Frame 25     A1     16     0
Frame 26     A1     17     0
Frame 27     A1     18     0

15 - Doppelwurf
12 Frames
Code:
[/b]
Frame 00     TH     02     0 
Frame 01     TH     03     0 
Frame 02     TH     04     0 
Frame 03     TH     06     0 
Frame 04     TH     07     0 
Frame 05     TH     08     1 
Frame 06     S3     02     0 
Frame 07     S3     04     0 
Frame 08     S3     05     0 
Frame 09     S3     07     1 
Frame 10     S3     08     0 
Frame 11     S3     10     0

16 - Charger
Waffenlos und Einhand: 12 Frames
Code:
[/b]
Frame 00     A2     00     0 
Frame 01     A2     01     0 
Frame 02     A2     02     0 
Frame 03     A2     03     0 
Frame 04     A2     04     0 
Frame 05     A2     05     0 
Frame 06     A2     06     1 
Frame 07     A2     07     0 
Frame 08     A2     08     0 
Frame 09     A2     09     0 
Frame 10     A2     10     0 
Frame 11     A2     11     0
doppelte Einhand: 16 Frames
Code:
[/b]
Frame 00     A2     00     0 
Frame 01     A2     01     0 
Frame 02     A2     02     0 
Frame 03     A2     03     0 
Frame 04     A2     04     0 
Frame 05     A2     05     0 
Frame 06     A2     06     1 
Frame 07     S4     03     0 
Frame 08     S4     04     0 
Frame 09     S4     05     0 
Frame 10     S4     06     1 
Frame 11     S4     07     0 
Frame 12     S4     08     0 
Frame 13     S4     09     0 
Frame 14     S4     10     0 
Frame 15     S4     11     0

21 - Drachenflug
23 Frames
Code:
[/b]
Frame 00     SC     00     0 
Frame 01     SC     01     0 
Frame 02     SC     02     0 
Frame 03     SC     03     0 
Frame 04     SC     04     0 
Frame 05     SC     05     0 
Frame 06     SC     06     0 
Frame 07     SC     07     0 
Frame 08     SC     08     0 
Frame 09     SC     09     1 
Frame 10     KK     00     0 
Frame 11     KK     01     0 
Frame 12     KK     02     0 
Frame 13     KK     03     0 
Frame 14     KK     04     1 
Frame 15     KK     05     0 
Frame 16     KK     06     0 
Frame 17     KK     07     0 
Frame 18     KK     08     0 
Frame 19     KK     09     0 
Frame 20     KK     10     0 
Frame 21     KK     11     0 
Frame 22     KK     12     0

22 - Verwandlung Wolf/Bär
16 Frames
Code:
[/b]
Frame 00     S1     15     0 
Frame 01     S1     14     0 
Frame 02     S1     13     0 
Frame 03     S1     12     0 
Frame 04     S1     11     0 
Frame 05     S1     10     0 
Frame 06     S1     09     0 
Frame 07     S1     08     0 
Frame 08     S1     07     0 
Frame 09     S1     06     0 
Frame 10     S1     05     0 
Frame 11     S1     04     0 
Frame 12     S1     03     0 
Frame 13     S1     02     1 
Frame 14     S1     01     0 
Frame 15     S1     00     0

23 - Klingenwut
19 Frames
Code:
[/b]
Frame 00     SC     00     0 
Frame 01     SC     01     0 
Frame 02     SC     02     0 
Frame 03     SC     03     0 
Frame 04     SC     04     0 
Frame 05     SC     05     0 
Frame 06     SC     06     0 
Frame 07     SC     07     0 
Frame 08     SC     08     0 
Frame 09     SC     09     0 
Frame 10     SC     09     0 
Frame 11     SC     09     0 
Frame 12     SC     10     1 
Frame 13     SC     11     0 
Frame 14     SC     12     0 
Frame 15     SC     13     0 
Frame 16     SC     14     0 
Frame 17     SC     15     0 
Frame 18     SC     16     0
 
Wie schauts hier mit aus ? Muss mal aufräumen :D
 
Zurück
Oben