Angriffe
Allgemeines
Wie auch die Zauber haben Angriffe den Zweck Gegner zu schädigen und bestehen damit aus mehr als einer graphischen Ausgabe. Sie beinhalten eine Aktion, zum Beispiel das Treffen eines Gegners oder das Erzeugen eines Geschosses. Um das Aktionstick - den Zeitpunkt des Auslösens der Aktion - zu berechnen wird ebenfalls das bereits bekannte System angewandt, welches sich in diesem Fall wie auch schon bei den Zaubern auf das in der animdata.txt markierte FrameDataActionFlag stützt.
Die Angriffsanimationen sind weitaus komplexer als jene, die wir bisher behandelt haben. Da Angriffe in einem solchem Spiel eine wichtigere Rolle spielen, gibt es eine große Vielfalt an einflussreichen Faktoren. Weiters gibt es einige Fertigkeiten, welche ein anderes als das bisher bekannte System zur Berechnung der Geschwindigkeit anwenden. Dazu gehört die Gruppe der Rollbackfertigkeiten (Drachen-Kralle, Eifer, Streuen, Widersetzen, Wut), die generelle Verwandlung in einen Werwolf/Werbären sowie die Fertigkeiten "Babaren-Wut" und "Wirbelwind". Letztere hat überhaupt keine Ähnlichkeit mehr mit dem allgemeinen Berechnungssystem, sondern wird über eine eigene Programmroutine gesteuert.
Bei den Angriffen finden sich auch sehr viele Sequenzen, weil es dank dieser möglich wird, zwei verschiedene Animationen zu verbinden. Darauf basiert zum Beispiel "Ansturm" (Lauf- und Angriffsanimation) oder "Raserei" (links- und rechtshändiger Angriff). Diese Sequenzen erhalten nun allerdings einen Malus auf die Angriffsgeschwindigkeit, doch darauf werde ich später noch genauer eingehen.
Für einen Angriff verwendet man im Regelfall eine Waffe, welche neben eventuell vorhandenem IAS selbst auch Einfluss auf die Geschwindigkeit hat. Jeder
Grundwaffe (Phasenklinge, Legendärer Hammer, ...) ist ein gewisser Wert - der
Weapon Speed Modifier, kurz WSM genannt - zugewiesen, welcher direkt auf die Acceleration wirkt. Manche sprechen auch von der "Grundgeschwindigkeit" der Waffe, doch da der WSM nur einen von vielen Einflussfaktoren darstellt, ist dieser Ausdruck etwas unglücklich gewählt. Da der WSM innerhalb der Formel subtrahiert wird, bedeutet ein möglichst kleiner Wert eine Erhöhung der Angriffsgeschwindigkeit. Auf D2Wissen.de sind allerdings die Vorzeichen vertauscht, sodass die Waffen durch einen hohen WSM beschleunigt werden.
Animationslänge und Aktionstick
AT = {(Hitshift*FrameDataActionFlag)/[(AnimationSpeed*Acceleration/100)]}
FPA = {(Hitshift*FramesPerDirection)/[AnimationSpeed*Acceleration/100]} - 1
Wie man anhand der Formeln 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. Bei der Angriffsgeschwindigkeit gibt es dabei mehrere beeinflussende Faktoren:
Acceleration = Baserate + EIAS + SIAS - WSM (+ ColdEffekt)
Baserate ... Der Grundwert der Beschleunigung verwendet für Angriffe einen Wert von 100.
EIAS ... Sie wird intern aus der IAS berechnet. Dabei wird die so genannte "dimishing returns" Formel (siehe unten) angewandt, die einen sinkenden Grenznutzen aufweist. Anders ausgedrückt braucht man mit steigendem Wert immer mehr IAS um noch eine weitere Änderung der EIAS zu bewirken.
EIAS = [120*IAS/(120 + IAS)]
SIAS ... Die Summe aller Boni und Mali zur Angriffsgeschwindigkeit, die wir von verschiedensten Fertigkeiten (zum Beispiel Fanatismus oder Altern) erhalten. Auch die Gegnerverlangsamung gewisser Gegenstände wird hier verrechnet.
WSM ... Der Weapon Speed Modifier ist ein waffenabhängiger Wert zur Steuerung der Geschwindigkeit. Da er nicht die "dimishing returns" Formel durchläuft, kann er die Geschwindigkeit entscheidend beeinflussen.
ColdEffekt ... Kälteangriffe verfügen meist über eine Wirkzeit, während dieser die Geschwindigkeiten der betroffenen Einheit beeinflusst werden. Während Spieler hier einen konstanten Wert von 50 besitzen, ist jeder Monsterklasse in der MonStats.txt für jeden Schwierigkeitsgrad ein eigener Wert zugewiesen.
StartingFrame
Bisher sind wir immer davon ausgegangen, dass unsere Animation mit dem Frame 00, also der Counterstellung 0 beginnt. Dieses Startingframe, welches den Beginn der Animation kennzeichnet, ist für alle Charaktere und alle Waffengattungen in der D2Common.dll festgehalten und im Regelfall das erste Frame, sprich jenes mit der Bezeichnung "FrameData00". Für die Angriffsanimationen (exklusive Wurfangriffen) mit den Charakterklassen "Amazone" und "Zauberin" kann das StartingFrame allerdings je nach verwendeter Waffenart auch einen anderen Wert annehmen. Dies bedeutet, dass die Animation verkürzt und damit deren Dauer verringert wird.
Rich (BBCode):
Waffe: hth 1hs 2hs 1ht 2ht stf bow xbw
StartingFrame: 1 2 2 2 2 2 0 0
Die Werte sind für Zauberinen und Amazonen ident, daher gebe ich sie nur einmal an. Alle anderen Charklassen haben immer ein StartingFrame von 0.
Damit müssen wir unsere Formel noch weiter modifizieren, indem wir das StartingFrame von den FramesPerDirection abziehen. Damit erhalten wir die Zahl der wirklich verwendeten Frames und die Formeln sind korrekt:
AT = {(Hitshift*(FramesPerDirection - Startingframe))/[(AnimationSpeed*Acceleration/100)]}
FPA = {(Hitshift*(FramesPerDirection - Startingframe))/[AnimationSpeed*Acceleration/100]} - 1
Acceleration = Baserate + [120*IAS/(120 + IAS)] + SIAS - WSM (+ ColdEffekt)
Auszulesende Werte
Nun benötigen wir wiederum die Werte für
FrameDataActionFlag,
FramesPerDirektion und
AnimationSpeed. Hier wird die Auflistung schon umfangreicher, weil mehrere Animationen für den Angriff genutzt werden können:
Rich (BBCode):
Amazone Assassine Barbar Druide Nekromant Paladin Zauberin
A1HTH 08 13 256 06 11 256 06 12 256 08 16 256 08 15 256 07 14 256 09 16 256
A2HTH --- 06 12 256 --- --- --- --- 08 16 256
A1HTx 06 11 208
A2HTx 06 12 208
A11HS 10 16 256 07 15 256 07 16 256 09 19 256 09 19 256 07 15 256 12 20 256
A12HS 12 20 256 11 23 256 08 18 256 10 21 256 11 23 256 08 18 256 14 24 256
A22HS --- --- --- --- --- 08 19 256 ---
A11HT 09 15 256 07 15 256 07 16 256 08 19 256 09 19 256 08 17 256 11 19 256
A12HT 11 18 256 10 23 256 09 19 256 09 23 256 10 24 256 08 20 256 13 23 256
A22HT --- --- --- --- --- 09 20 256 ---
A1STF 12 20 256 09 19 256 09 19 256 09 17 256 11 20 256 09 18 256 11 18 256
A1BOW 06 14 256 07 16 256 07 15 256 08 16 256 09 18 256 08 16 256 09 17 256
A1XBW 09 20 256 10 21 256 10 20 256 10 20 256 11 20 256 10 20 256 11 20 256
THxxx 09 16 256 07 16 256 08 16 256 08 18 256 10 20 256 08 16 256 10 20 256
KKxxx 04 13 256
S1xxx xx 09 256 07 12 256
S2xxx 04 08 128
S31Jx 08 12 256
S31Sx 07 12 256
S41Jx 08 16 256
S41Sx 09 16 256
S4HT2 06 12 208
--------------------------------------------------------------------------------------------------
Werwolf Werbär Fetisch Vampir
A1xxx 07 13 xxx 07 12 xxx 08 12 256 09 14 176
S3xxx 06 10 xxx 06 10 xxx
NUxxx xx 09 xxx xx 10 xxx
--------------------------------------------------------------------------------------------------
Rogue Stadtwache Eisenwolf Barbarensöldner
A1xxx 06 15 256 11 16 256 06 15 256 05/12 16 256
~ Die Anordnung der Werte sowie die Animationsbezeichnungen sollten bereits klar sein. Das kleine "x" in den obigen Bezeichnungen ist ein Platzhalter, dort können alle möglichen Zeichen eingesetzt werden. Die Bezeichnung "HTx" meint beispielsweise die Waffenklassen "HT1" und "HT2". Der Platzhalter ist jedoch nicht auf Zahlen beschränkt, er kann auch Buchstaben ersetzen.
~ Jene A2-Animationen, bei denen keine Werte eingetragen sind, verwenden die Werte der zugehörigen A1-Animation. Bei allen nicht aufgeführten A2-Animationen sind die Werte sogar für alle Charaktere mit den zugehörigen A1-Animationen ident.
~ Der Barbarensöldner vollführt mit einem normalen Angriff zwei Schläge, sodass er auch zwei FrameDataActionFlag benötigt. Diese sind in obiger Tabelle durch einen Slash getrennt.
Animationsverwendung
Unsere bisherigen Aktionen (Block, Treffererholung und Zauber) haben, mit Ausnahme von Sequenzen, stets nur eine Animation verwendet. Bei den Angriffen jedoch stehen verschiedene Animationen zur Auswahl. Daher folgt nun eine Auflistung, welche Animation von welchen Angriffen/Fertigkeiten genutzt wird. Diese Angriffe sind dabei der Übersichtlichkeit halber in die verschiedenen Charakterklassen eingeteilt:
A1:
normaler Angriff
"Bogen und Armbrust"-Fertigkeiten, Energieschlag, Kettenblitzschlag, Geladener Schlag, Widersetzen
Tigerschlag, Kobraschlag, Phönixschlag
Hieb, Lähmen, Konzentrieren, Amok
Barbarenwut, Zerfleischen, Feuerklauen, Wut
Giftdolch
Opfer, Eifer, Rache, Bekehrung
A2:
normaler Angriff
KK:
Drachen-Kralle, Drachen-Schwanz
S1:
(Ausweichen, Meiden, Entrinnen)
Schildschlag
S2:
Stationärfallen, Feuerstoß, Schocknetz, Klingenwächter
S3:
Sekundärschlag des Barbaren
Hunger, Tollwut
S4:
Sekundärschlag der Assassine
Sekundärwurf des Barbaren
TH:
Wurf
Giftwurfspieß, Blitzschlag, Pestwurfspieß, Blitzendes Unheil
Sequenzen
Viele Angriffe verwenden nicht eine komplette Animation, sondern sind aus einzelnen Frames einer oder mehreren Animationen zusammengesetzt. Beispiele dafür sind "Ansturm", welche neben dem Angriff auch Frames der RN-Animation nutzt oder "Raserei", welche für den Erst- und Zweitschlag Teile unterschiedlicher Animationen (A1 und S3) nutzt. Über die von Charakteren verwendeten Sequenzen gibt es keine Informationen in der animdata.d2, sondern man muss sie aus der D2Common.dll auslesen, was ungleich schwerer ist. Für die Sequenzen der Monster (zu denen auch die Söldner zählen) gibt es eine eigene Regelung, denn deren Sequenzdaten sind aus der MonSeq.txt auszulesen. Die Zuordnung der Sequenzen zu den einzelnen Fertigkeiten erfolgt in der Skills.txt. Einerseits haben Sequenzen in der Spalte "anim" das Kürzel "SQ" eingetragen und andererseits enthält die Spalte "seqnum" den Index der jeweils verwendeten Animation.
Aus Platzgründen füge ich die Informationen bezüglich der von Charakteren verwendeten Sequenzen nicht hier ein, sondern verweise an dieser Stelle nur auf die
Auflistung im letzten Teil dieser FAQ. Zumeist ist jede Sequenz nur einer bestimmten Fertigkeit zugewiesen, sodass die dortigen Bezeichnungen klar sein sollten. Daher erspare ich es mir alle Fertigkeiten mit der verwendeten Sequenz hier anzugeben und weise stattdessen nur darauf hin, dass die Sequenz Nummer 16 (von mir als "Charger" bezeichnet) für die Fertigkeiten "Feuerfäuste", "Donnerklauen", "Eisklingen" und "Drachen-Klaue" verwendet wird.
Für die Berechnung der Animationsdauern ist zu berücksichtigen, dass beinahe die bekannte Formel gilt, das letzte Tick in diesem Fall jedoch nicht wegfällt. Weiters haben Charaktere - im Gegensatz zu Söldnern und Monstern - für Angriffs-Sequenzen einen Malus von 30 auf die Acceleration.
AT = {(Hitshift*FramesPerDirection)/[(AnimationSpeed*(Baserate - 30 + EIAS + SIAS - WSM)/100)]}
FPA = {(Hitshift*FramesPerDirection)/[AnimationSpeed*(Baserate - 30 + EIAS + SIAS - WSM)/100]}
Zusammenfassung
AT = {(256*(FrameDataActionFlag - StartingFrame))/[(AnimationSpeed*(100 + EIAS + SIAS - WSM (+ ColdEffekt))/100)]}
FPA = {(256*(FramesPerDirection - StartingFrame))/[AnimationSpeed*(100 + EIAS + SIAS - WSM (+ ColdEffekt))/100]} - 1
EIAS = [120*IAS/(120 + IAS)]
Für Spieler-Sequenzen:
AT = {(256*FrameDataActionFlag)/[(AnimationSpeed*(70 + EIAS + SIAS - WSM (+ ColdEffekt))/100)]}
FPA = {(256*FramesPerDirection)/[AnimationSpeed*(70 + EIAS + SIAS - WSM (+ ColdEffekt))/100]}
EIAS = [120*IAS/(120 + IAS)]
FramesPerDirection ... Die Anzahl an Einzelbildern der Animation, abhängig von Charakterklasse und Waffentyp.
StartingFrame ... Jenes Frame, mit dem die Animation beginnt. Ist für die normale Angriffsanimation von Amazonen und Zauberinnen für bestimmte Waffen größer als 0.
AnimationSpeed ... Der Grundwert des Counter-Anstiegswertes, wird ebenso durch die Animation bestimmt.
SIAS ... Die Summe aller Fertigkeitsboni und -mali zur Angriffsgeschwindigkeit, inklusive dem Malus der Gegnerverlangsamung.
WSM ... Die Geschwindigkeitsmodifikation durch den Grundtyp der Waffe.
ColdEffekt ... Geschwindigkeitsmalus durch Kältedauer, der Wert beträgt für Charaktere -50.