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.
Code:
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)