D2library

<< FAQtoids Übersicht

Helpless

Hit Recovery / Treffererholung

Verliert eine Spieleinheit mit einem Treffer mehr als einen definierten Anteil der maximalen Lebenspunkte* oder wird Opfer einer Lähmattacke, so gerät sie in die Treffererholungsphase (engl. Hit Recovery). Dazu wird eine besondere Charakteranimation abgespielt, deren Länge die 'Hit Recovery Time' ist. Diese Dauer läßt sich mit Ausrüstung verkürzen, die das Attribut 'Faster Hit Recovery' / 'Schnellere Treffererholung' (FHR) verleiht. Wie bei allen zeitgebundenen Mechanismen wird die Dauer hier spielintern in Frames gerechnet, ein Frame ist 1/25 Sekunde.
Fast alle 'lebendigen' Kreaturen haben eigene Werte für diese Zeitspanne. Dazu gehören auch Söldner; dagegen können manche Wesen gar nicht erst in die Treffererholung geraten, namentlich beispielsweise alle Golems oder - als Ausnahme - der Barbarensöldner. Die Treffererholungszeit kann mittels Gegenständen, die wie immer auf d2wissen nachzuschlagen sind, verkürzt werden. Folglich können alle Einheiten, die entsprechende Ausrüstung tragen, von FHR profitieren. Der formale Mechanismus dazu ist weiter unten zu finden.
Für die Wandelformen als Untoter Fetisch (Triggerereignis beim Tragen des Runenworts 'Delirium') und Vampir (für Nekromanten mit dem komplett angelegten Trang Oul Set) gelten die Treffererholungstabellen der jeweiligen Monster. Anhand diversen Lesestoffes im Phrozen Keep, der sich dem Verwandeln von Spielcharakteren in andere Erscheinungsformen widmet, ist hier davon auszugehen, daß in Wandelformen nicht die Animationstabellen der Spielcharaktere zählen. Sinngemäß gilt dies auch für die Verwandlung eines Barbaren in einen Werwolf oder beispielsweise einer Zauberin in einen Werbären mit Hilfe bestimmter Gegenstände.

* Man ging hier lange Zeit von 1/12 aus, was aber wahrscheinlich nur vor 1.10 gültig war - wenn überhaupt. Seit 1.1x gilt bei den meisten Angriffen der Wert 1/16, bei insbesondere einigen Fernkampfattacken muß der angerichtete Schaden dagegen 1/8 des Lebensmaximalwerts erreichen. Vergleiche dazu auch die weiteren Ausführungen im folgenden Absatz sowie die weiterführenden Listen im Anhang dieses FAQtoids.
Nähere technische Informationen finden sich auch in diesem Thread von Nefarius im Phrozen Keep und in GetHit mode trigger function von Myrdinn im Basin.

Einige Effekte, namentlich so ziemlich alle am Boden brennenden Feuer von Fertigkeiten, können zwar keine Treffererholungsphase auslösen, spielen aber den Sound des Getroffenwerdens der Einheit im Feuer ab. Dies ist für eine Beobachtung des GetHit Ereignisses im Spiel selbst recht irreführend. Außerdem kann es bei schlechter Performance des Rechners oder der Netzwerkverbindung dadurch zu einem kleinen Lag kommen.
Feuer von Objekten wie den Pentagrammen in Akt1 oder an manchen Leichen können wahrscheinlich durchaus Treffererholung auslösen, Näheres dazu ist mir leider nicht bekannt.


der technische Ablauf

Dank Myrdinn und Nefarius gibt es gleich zwei Analysen des Assembler-Codes darüber, wann eine Treffererholungsphase eingeleitet wird. Hier das Ergebnis in einer einfachen Liste:

  1. Schaden wird appliziert
  2. führt der Schaden zum Tod der Einheit, so wird die Treffererholung nicht evaluiert
  3. ist die Einheit eingefroren, so wird die Treffererholung nicht evaluiert
  4. ist der angerichtete Schaden reiner Giftschaden, so wird die Treffererholung nicht evaluiert
  5. ist der angerichtete Schaden kleiner als 1 (aka 256 bites), so wird die Treffererholung nicht evaluiert **
  6. Maximallebenswert MaxLife der getroffenen Einheit feststellen
  7. den divisor ermitteln (das, was man als 1/12 annahm) ***
  8. die GetHitTriggerNumber ermitteln aus GetHitTriggerNumber = MaxLife / divisor
  9. es folgt eine mehrstufige Auswertung des angerichteten Schadens
    • ist der Schaden kleiner als GetHitTriggerNumber, so wird die Treffererholung nicht appliziert
    • ist der Schaden kleiner als GetHitTriggerNumber * 2, so entscheidet eine 50% Chance, ob die Treffererholungsevaluation weitergeht (rnd {0, 1} = 0 Exit)
    • ist der Schaden kleiner als GetHitTriggerNumber * 4, so entscheidet eine 75% Chance, ob die Treffererholungsevaluation appliziert wird (rnd {0, 1, 2, 3} = 0 Exit, sonst GH)
    • ist der Schaden größer als GetHitTriggerNumber * 4, so wird die Treffererholung appliziert
  10. kann die Einheit überhaupt in die Treffererholung gezwungen werden, wenn nicht, so wird die Treffererholung nicht appliziert (ja, diese Abfrage kommt ganz am Ende :-P )

** spielintern werden Schadens- und Lebenswerte mit 256 multipliziert, um genauere Ergebnisse zu ermöglichen (die Engine kann nur Ganzzahlen verarbeiten); das Ergebnis wird dann wieder durch 256 geteilt und abgerundet

*** der Standard-Divisor ist 16, in manchen Fällen kommt auch 8 zum Einsatz; vergleiche dazu auch die weiterführenden Listen im Anhang dieses FAQtoids

Um mal ein Beispiel zu geben, nehmen wir MaxLife mit 1600 und einen Angriff mit dem Standard Divisor 16.
GetHitTriggerNumber = MaxLife / divisor -> 1600 / 16 -> 100

HitClasses

HitClasses sind ein Echtzeitkonzept, anhand dessen insbesondere multimediale Ereignisse wie abgespielte Sounds oder gezeigte Grafiken ermittelt werden. Sie scheinen aber durchaus auch für die Treffererholung von Bedeutung zu sein.
Der derzeitige Stand der Erkenntnisse bei Nahkampfattacken lautet, daß hier immer der Standardwert GetHitTriggerNumber = 16 angewandt wird. Ausgenommen sind die folgend angeführten Fertigkeiten, die automatisch Lähmen oder Wegstoßen.
Bei Attacken, die missiles erzeugen (egal ob als Fertigkeit oder Standardattacke), werden für die missiles deren HitClasses wohl auch zur Ermittlung des Divisors herangezogen.
Es ist davon auszugehen, daß dies auch bei allen Monstern gilt.


formale Herleitung der Treffererholungsdauer

Zunächst wird die effektive Erholungsgeschwindigkeit berechnet. Die Erholungsrate unterliegt einem mathematischen Prozeß, der als 'diminishing returns' Formel bezeichnet wird. Es werden immer höhere Werte benötigt, um die Verbesserung voranzutreiben.

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

eFHR: effektive Erholungsrate FHR: schnellere Erholungsrate von Gegenständen [ ]: innerhalb eckiger Klammern wird abgerundet (Integerfunktion)

Dann gibt es noch eine klassenabhängige Konstante GetHitbase, die in die Hauptformel zur Berechnung der Erholungsdauer in Frames einbezogen wird.
Achtung: dies ist nicht die Anzahl Frames, die ein Charakter ohne FHR für die Animation braucht!

KlasseGetHitbase
Amazone6
Assassine5
Barbar5
Druide
Werbär
5
Druide
Werwolf
4
Druide
unverwandelt
7
Nekromant7
Paladin5
Zauberin8
Söldner
Rogue6
Stadtwache8
Eisenwolf9
[Barbar5]

Der notwendige Animationsgeschwindigkeitswert vanim ist normalerweise fix 256. Davon gibt es drei Ausnahmen.

KlasseWaffevanim
Druide
Werbär
alle184
Druide
unverwandelt
einhändig geführte
Schwungwaffen
248
PaladinSpeere
Zweihandstäbe
Zweihandäxte
Zweihandhämmer
Stangenwaffen
192

Die Treffererholung in Frames berechnet sich dann wie folgt:

HRf = {256 * GetHitbase / [vanim * (50 + EFHR) / 100]} - 1

HRf: Hit Recovery / Erholungsgeschwindigkeit in Frames GetHitbase: klassenabhängiger Basiswert vanim: Animationsgeschwindigkeitswert (auch: AnimSpeed) eFHR: effektive Erholungsrate aus der ersten Formel [ ]: innerhalb eckiger Klammern wird abgerundet (Integerfunktion) { }: innerhalb geschweifter Klammern wird aufgerundet

siehe auch:

Stun / Lähmung

Bestimmte Fertigkeiten erzeugen 'stun' beim Gegner, also eine Lähmung. Normale Einheiten verbleiben für die komplette Zeit des Stun handlungsunfähig. Spielcharaktere müssen die Treffererholung durchlaufen und werden anschließend für die Dauer der Lähmung von jeder weiteren erfolgreichen Attacke in die Treffererholung gezwungen, der dabei angerichtete Schaden ist dann irrelevant. Besondere Einheiten wie Bosse und Aktbosse, die nicht oder nur schwer zu lähmen sind, werden ebenfalls in die Treffererholung gezwungen, und zwar ebenfalls für die Dauer der - nicht erfolgten - Lähmung. Es sei denn, die Einheit kann gar nicht in die Treffererholung, wie beispielsweise Diablo. Vergleiche dazu nochmals die weiterführenden Listen im Anhang dieses FAQtoids.
Fertigkeiten, die Lähmung auslösen können:

stun ist ferner eine eigene Schadensart, die Monstern beispielsweise in MonStats via El[1-3]ff Spalten speziell zugewiesen sein kann.
Folgende Monster könnn unabhängig von eingesetzten Fertigkeiten Lähmschaden austeilen:

Dazu kommt noch der Barbarensöldner aus Akt5, der ja die Barbarenfertigkeit Stun / Lähmen einsetzen kann.

Folgende Einheiten können Smite / Niederstrecken anwenden:


Knockback / Wegstoßung (KB)

Andere Fertigkeiten sowie einige Gegenstände verursachen eine Wegstoßung des Gegners. Auch hier wird unabhängig vom ausgeteilten Schaden eine Treffererholungsphase als Teil der KB-Animation angezeigt, es wird aber nicht automatisch eine eigene Treffererholung erzwungen.
Spielerfertigkeiten, die KB auslösen können:

Folgende Einheiten können Charge / Ansturm anwenden:

Folgende Einheiten können KB anderweitig anwenden:

Manche Einheiten können gar nicht weggestoßen werden. Hier eine Auswahl der Wichtigsten, ohne die Offensichtlichen, die ohnehin unbeweglich sind. Die komplette Liste steht weiter unten im Anhang:


Dank / Credits


Anhang

Einheiten, die nicht in die Treffererholunsphase gezwungen werden können

'objektartige' unbewegliche Einheiten, die attackieren oder andere Einheiten erzeugen können
bewegliche Einheiten
verbündete Einheiten

Einheiten, die nicht weggestoßen werden können

'objektartige' unbewegliche Einheiten
bewegliche Einheiten
verbündete Einheiten

Spielerfertigkeiten, deren missiles Treffererholung auslösen können

Monster, deren missiles Treffererholung auslösen können

Objekte, deren Kontakt Treffererholung auslösen kann


Feedback und Korrekturen mit nachvollziehbarer Erläuterung nehme ich dankend via Mail über diese Adresse entgegen.


Valid HTML 4.01 Transitional
Valid CSS 2.0

zuletzt aktualisiert am 22III09
© by librarian

<< FAQtoids Übersicht

D2library