- Registriert
- 14 Dezember 2007
- Beiträge
- 3.065
- Punkte Reaktionen
- 3
Ausgangslage
Wenn man sich mal in der Missiles.txt oder in technischeren Threads umsieht, wird man eventuell bemerken, dass etliche Missiles einen "last collide" Eintrag haben (wobei last collide nur aktiv oder nicht aktiv sein kann). Was es damit auf sich hat, wurde mir aber nicht ganz klar, im Amazon Basin (im Thread zur Wirkungsweise des Tornados) wurde er so erklärt, dass jedes Missile mit last collide jedem Gegner nur einmal Schaden zufügen kann.
Nun hat sich Nefarius im PK hier dazu geäußert, aber argumentativ so ganz überzeugend fand ich das Ganze auch nicht. Nach seiner Erklärung könnte ein Geschoss mit last collide einem Gegner nur erneut Schaden zufügen, wenn es vorher einem anderen Gegner Schaden zugefügt hat.
Für mich wurde die Erklärung dieses Eintrags nötig, da auch der Tornado einen last collide Eintrag hat und ich für den Tornado eine SKillbeschreibung geschrieben habe, die in der Hinsicht auch richtig sein sollte.
Also habe ich eine kleine Testreihe gemacht um heraus zu finden, wie der last collide nun wirklich funktioniert, also ob Nefarius mit seiner Erklärung recht hat. Und um dabei auch eine Testreihe zum Nachweis der Erklärung aufzustellen.
Dazu eines vorweg zum Tornado: Der Tornadoschaden besteht aus 2 Komponenten, dem on-collision-dmg und dem periodic-dmg.
Den periodic-dmg kann man sich wie einen beweglichen Minihurrikan vorstellen, der Tornado fügt also allen Gegnern in Reichweite des periodic dmg alle paar frames Schaden zu. Dieser Schaden wird nicht von last collide, Block, dem Nexthitdelay (NHD) etc. beeinflusst. Interessant dabei ist noch, dass zum ersten Mal im 1. Frame der Existenz des Tornados Schaden zugefügt wird und danach normalerweise alle 15 frames wieder (also in den Frames 16, 31, etc.).
Hinweis: frames sind eine Maßeinheit für zeitliche Längen im Spiel, eine Sekunde besteht im Spiel aus 25 frames
Der on-collison-dmg wird beim Berühren eines Gegner ausgeteilt, ist blockbar, unterliegt dem last collide und dem NHD. Die Länge dieses NHDs beträgt 25 frames.
Für mehr Informationen siehe hier
Nach der Erklärung aus dem Basin könnte der Tornado einem Ziel also nur ein einziges mal einen on-collision-dmg zufügen, nach der Erklärung aus dem PK könnte ein Tornado einem Gegner ein zweites Mal on-collision-dmg zufügen, falls er das vorher bei einem anderen Gegner getan hat und das NHD am ersten Gegner abgelaufen ist. Dies zu klären, war nun der Sinn meines Tests.
Grundvoraussetzungen der Testreihe
Um ein aussagekräftiges Ergebnis zu erhalten müssen erst einmal einige Bedingungen erfüllt sein.
Die Idee war nun, den Tornadodmg auf etwas über ein Drittel des Monstelebens zu setzen, so dass ein Monster mit 2 Treffern übeleben würde, mit 3 Treffern aber stirbt. Der 1. Treffer entfällt dabei immer auf den periodic dmg, der 2. ist der erste on-collision-dmg. Falls last collide wie im Basin erklärt funktioniert, dürfte es keinen 2. on-collision-dmg geben und damit müssten auch alle Monster überleben, da ich einen 2. periodic dmg ausschließen kann.
Dazu meine geplanten Tests und was sie ergeben müsten, falls Nefarius Aussage aus dem PK stimmt:
Test 1: last collide ist an, NHD ist an: Es dürfte keine Toten geben, wenn man den Torn auf Einzelgegner feuert. Bei Gruppen sind Tote möglich, aber sehr unwahrscheinlich.
Test 2: last collide ist aus, NHD ist an: Wenn der Torn sehr lange auf einem Gegner bleibt, müsste er sterben, ob Einzelgegner oder Gruppe ist irrelevant. Die Wahrscheinlichkeit dazu ist gering.
Test 3: last collide ist aus, NHD ist aus: Quasi jeder Gegner, der vom Tornado getroffen wird, müsste sterben. Wiederum ist es irrelevant ob es sich um Einzelgegner oder um eine Gruppe handelt.
Test 4: last collide ist an, NHD ist aus: Der entscheidende Test. Gegen Einzelgegner dürfte es keine Toten geben, gegen Gruppen müsste es Tote geben, (da der Tornado nach dem on collision dmg an Gegner 1 einen an Gegner 2 anbringen kann. Nach der Erklärung aus dem PK müsste er dann an Gegner 1 auch wieder einen anbringen können. Dieser 2. on collision dmg würde dann zum Tod des Gegners führen. Nach der Erklärung aus dem Basin dürfte es keine Toten geben.
Einstellungen für die Testreihe
Um zu gewährleisten, dass 2 Treffer immer nicht tödlich sind, 3 Treffer aber immer tödlich sind, habe ich den Tornadoschaden auf Level 1 auf einen Wert von 39-40 gesetzt. Desweiteren habe ich die Lebenspunkte aller Gegner in den Gebieten Blutmoor und Kalte Ebene auf 99-100 gesetzt. Um weitere Einflussnahmen zu verhindern habe ich die Blockchance aller Gegner in den betreffenden Bereichen auf 0 und ihren Widerstand gegen physischen Schaden auf 0 reduziert.
Damit der periodic-dmg zum berechenbaren Faktor wird, habe ich seine Reichweite auf 1000 erhöht und den Abstand zweier "Schadenverteilungen" auf 1000 frames. Damit fügt jeder Tornado jedem Gegner in einem gewaltigen Umkreis genau einmal periodic-dmg zu.
Um das Treffen von mehreren Gegnern mit dem Tornado zu erleichtern und um den Tornado länger auf den Gegnern verweilen zu lassen habe ich die Monsterdichte im Blutmoor deutlich erhöht (Spawnwahrscheinlichkeit ca. verzwanzigfacht), die Existenzdauer des Tornados auf 500 frames angehoben und seine Geschwindigkeit von 8 auf 3 pixels/frame gesenkt. Ausserdem habe ich die Bewegungsgeschwindigkeit aller Gegner der betreffenden Gebiete auf 0 verringert, so dass sie nur noch starr in der Gegend stehen.
Um leichter zu testen habe ich Tornado desweiteren zu einem lvl1-Skill gemacht, Twister als nötigen vorausgehenden Skill entfernt und die Manakosten des Tornados auf 0 reduziert.
Die Wirkung gegen Gruppen habe ich im Blutmoor getestet, die Wirkung gegen Einzelgegner in der Kalten Ebene.
Modifizierte txts: Skills.txt, Monlvl.txt, Levels.txt, Missiles.txt, Monstats.txt
Jeder Test wurde wiederholt durchgeführt und von vorne begonnen um irgendwelche Einflussnahmen auszuschließen. Einen Söldner hatte der Char natürlich nicht, desweiteren war er nackt. Andere Einflussnahmen waren ausgeschlossen (auch seitens des Missiles selber).
Testergebnisse und Auswertung
Test 1: last collide ist an, NHD ist an: Kein Einzelgegner stirbt, auch in den Gruppen stirbt kein Gegner (da die Verweildauer des Tornados auf den Gegnern zu gering war). Somit behielten alle direkt vom Tornado getroffenen Gegner weniger als ein Drittel ihres Lebens
Test 2: last collide ist aus, NHD ist an: Nur ein Fall, in dem ein gegner gestorben ist, da der Tornado ihn sehr günstig, also lange, getroffen hat. Sonst behielten alle direkt vom Tornado getroffenen gegner weniger als ein Drittel ihres Lebens
Test 3: last collide ist aus, NHD ist aus: Nahezu jeder direkt vom Tornado getroffene Gegner stirbt, egal ob er einzeln oder in einer Gruppe steht. Das gleiche Ergebnis erhielt ich auch mit der normalen Tornadogeschwindigkeit, wobei die Anzahl der Toten leicht abnahm.
Test 4: last collide ist an, NHD ist aus: Gegen Einzelgegner ist kein Tornado tödlich, Getroffene überleben immer mit weniger als einem Drittel ihres Lebens. In Gruppen sterben einige vom Tornado getroffene Gegner, andere überleben mit weniger als einem Drittel ihres Lebens. Mit der normalen Tornadogeschwindigkeit nahm die Anzahl der Toten ab, es waren aber immer noch einige vorhanden.
Damit ist erwiesen, dass ein Missile mit aktivem last collide einem Gegner mehrfach Kollisionschaden zufügen kann, falls es zwischen zwei Schadensapplizierungen einem anderen Gegner Kollisionschaden zugefügt hat. Denn anders ist das Beobachtete nicht zu erklären.
Beispiel:
Missile fügt in frame 7 Gegner A Kollisionsschaden zu (NHD sei nicht vorhanden).
Missile fügt nun in frame 9 Gegner B Kollisionsschaden zu. Von nun an kann es Gegner A also wieder Kollisionsschaden zufügen. Wenn dies geschehen ist, kann es Gegner B wieder Kollisionssschaden zufügen etc.
Falls es sich um ein lange den gegner berührendes Missile handelt und kein NHD vorhanden ist, kann der Schadne also immer zwischen den Gegnern hin und her springen.
Technisch wird der last collide laut PK dadurch ermöglicht, dass das Spiel die ID des zu letzt getroffenen Gegners speichert und bei diesem dann erneuten Kollisionsschaden verhindert.
Das konnte ich natürlich nicht testen, es hört sich aber schlüssig an.
Spielerisch sind die Auswirkungen beim Tornado eher gering, da die Wahrscheinlichkeit auf multiplen on-collision-dmg wegen des NHDs eher gering ist. Bei anderen Skills könnte das hingegen anders aussehen.
Wenn man sich mal in der Missiles.txt oder in technischeren Threads umsieht, wird man eventuell bemerken, dass etliche Missiles einen "last collide" Eintrag haben (wobei last collide nur aktiv oder nicht aktiv sein kann). Was es damit auf sich hat, wurde mir aber nicht ganz klar, im Amazon Basin (im Thread zur Wirkungsweise des Tornados) wurde er so erklärt, dass jedes Missile mit last collide jedem Gegner nur einmal Schaden zufügen kann.
Nun hat sich Nefarius im PK hier dazu geäußert, aber argumentativ so ganz überzeugend fand ich das Ganze auch nicht. Nach seiner Erklärung könnte ein Geschoss mit last collide einem Gegner nur erneut Schaden zufügen, wenn es vorher einem anderen Gegner Schaden zugefügt hat.
Für mich wurde die Erklärung dieses Eintrags nötig, da auch der Tornado einen last collide Eintrag hat und ich für den Tornado eine SKillbeschreibung geschrieben habe, die in der Hinsicht auch richtig sein sollte.
Also habe ich eine kleine Testreihe gemacht um heraus zu finden, wie der last collide nun wirklich funktioniert, also ob Nefarius mit seiner Erklärung recht hat. Und um dabei auch eine Testreihe zum Nachweis der Erklärung aufzustellen.
Dazu eines vorweg zum Tornado: Der Tornadoschaden besteht aus 2 Komponenten, dem on-collision-dmg und dem periodic-dmg.
Den periodic-dmg kann man sich wie einen beweglichen Minihurrikan vorstellen, der Tornado fügt also allen Gegnern in Reichweite des periodic dmg alle paar frames Schaden zu. Dieser Schaden wird nicht von last collide, Block, dem Nexthitdelay (NHD) etc. beeinflusst. Interessant dabei ist noch, dass zum ersten Mal im 1. Frame der Existenz des Tornados Schaden zugefügt wird und danach normalerweise alle 15 frames wieder (also in den Frames 16, 31, etc.).
Hinweis: frames sind eine Maßeinheit für zeitliche Längen im Spiel, eine Sekunde besteht im Spiel aus 25 frames
Der on-collison-dmg wird beim Berühren eines Gegner ausgeteilt, ist blockbar, unterliegt dem last collide und dem NHD. Die Länge dieses NHDs beträgt 25 frames.
Für mehr Informationen siehe hier
Nach der Erklärung aus dem Basin könnte der Tornado einem Ziel also nur ein einziges mal einen on-collision-dmg zufügen, nach der Erklärung aus dem PK könnte ein Tornado einem Gegner ein zweites Mal on-collision-dmg zufügen, falls er das vorher bei einem anderen Gegner getan hat und das NHD am ersten Gegner abgelaufen ist. Dies zu klären, war nun der Sinn meines Tests.
Grundvoraussetzungen der Testreihe
Um ein aussagekräftiges Ergebnis zu erhalten müssen erst einmal einige Bedingungen erfüllt sein.
Die Idee war nun, den Tornadodmg auf etwas über ein Drittel des Monstelebens zu setzen, so dass ein Monster mit 2 Treffern übeleben würde, mit 3 Treffern aber stirbt. Der 1. Treffer entfällt dabei immer auf den periodic dmg, der 2. ist der erste on-collision-dmg. Falls last collide wie im Basin erklärt funktioniert, dürfte es keinen 2. on-collision-dmg geben und damit müssten auch alle Monster überleben, da ich einen 2. periodic dmg ausschließen kann.
Dazu meine geplanten Tests und was sie ergeben müsten, falls Nefarius Aussage aus dem PK stimmt:
Test 1: last collide ist an, NHD ist an: Es dürfte keine Toten geben, wenn man den Torn auf Einzelgegner feuert. Bei Gruppen sind Tote möglich, aber sehr unwahrscheinlich.
Test 2: last collide ist aus, NHD ist an: Wenn der Torn sehr lange auf einem Gegner bleibt, müsste er sterben, ob Einzelgegner oder Gruppe ist irrelevant. Die Wahrscheinlichkeit dazu ist gering.
Test 3: last collide ist aus, NHD ist aus: Quasi jeder Gegner, der vom Tornado getroffen wird, müsste sterben. Wiederum ist es irrelevant ob es sich um Einzelgegner oder um eine Gruppe handelt.
Test 4: last collide ist an, NHD ist aus: Der entscheidende Test. Gegen Einzelgegner dürfte es keine Toten geben, gegen Gruppen müsste es Tote geben, (da der Tornado nach dem on collision dmg an Gegner 1 einen an Gegner 2 anbringen kann. Nach der Erklärung aus dem PK müsste er dann an Gegner 1 auch wieder einen anbringen können. Dieser 2. on collision dmg würde dann zum Tod des Gegners führen. Nach der Erklärung aus dem Basin dürfte es keine Toten geben.
Einstellungen für die Testreihe
Um zu gewährleisten, dass 2 Treffer immer nicht tödlich sind, 3 Treffer aber immer tödlich sind, habe ich den Tornadoschaden auf Level 1 auf einen Wert von 39-40 gesetzt. Desweiteren habe ich die Lebenspunkte aller Gegner in den Gebieten Blutmoor und Kalte Ebene auf 99-100 gesetzt. Um weitere Einflussnahmen zu verhindern habe ich die Blockchance aller Gegner in den betreffenden Bereichen auf 0 und ihren Widerstand gegen physischen Schaden auf 0 reduziert.
Damit der periodic-dmg zum berechenbaren Faktor wird, habe ich seine Reichweite auf 1000 erhöht und den Abstand zweier "Schadenverteilungen" auf 1000 frames. Damit fügt jeder Tornado jedem Gegner in einem gewaltigen Umkreis genau einmal periodic-dmg zu.
Um das Treffen von mehreren Gegnern mit dem Tornado zu erleichtern und um den Tornado länger auf den Gegnern verweilen zu lassen habe ich die Monsterdichte im Blutmoor deutlich erhöht (Spawnwahrscheinlichkeit ca. verzwanzigfacht), die Existenzdauer des Tornados auf 500 frames angehoben und seine Geschwindigkeit von 8 auf 3 pixels/frame gesenkt. Ausserdem habe ich die Bewegungsgeschwindigkeit aller Gegner der betreffenden Gebiete auf 0 verringert, so dass sie nur noch starr in der Gegend stehen.
Um leichter zu testen habe ich Tornado desweiteren zu einem lvl1-Skill gemacht, Twister als nötigen vorausgehenden Skill entfernt und die Manakosten des Tornados auf 0 reduziert.
Die Wirkung gegen Gruppen habe ich im Blutmoor getestet, die Wirkung gegen Einzelgegner in der Kalten Ebene.
Modifizierte txts: Skills.txt, Monlvl.txt, Levels.txt, Missiles.txt, Monstats.txt
Jeder Test wurde wiederholt durchgeführt und von vorne begonnen um irgendwelche Einflussnahmen auszuschließen. Einen Söldner hatte der Char natürlich nicht, desweiteren war er nackt. Andere Einflussnahmen waren ausgeschlossen (auch seitens des Missiles selber).
Testergebnisse und Auswertung
Test 1: last collide ist an, NHD ist an: Kein Einzelgegner stirbt, auch in den Gruppen stirbt kein Gegner (da die Verweildauer des Tornados auf den Gegnern zu gering war). Somit behielten alle direkt vom Tornado getroffenen Gegner weniger als ein Drittel ihres Lebens
Test 2: last collide ist aus, NHD ist an: Nur ein Fall, in dem ein gegner gestorben ist, da der Tornado ihn sehr günstig, also lange, getroffen hat. Sonst behielten alle direkt vom Tornado getroffenen gegner weniger als ein Drittel ihres Lebens
Test 3: last collide ist aus, NHD ist aus: Nahezu jeder direkt vom Tornado getroffene Gegner stirbt, egal ob er einzeln oder in einer Gruppe steht. Das gleiche Ergebnis erhielt ich auch mit der normalen Tornadogeschwindigkeit, wobei die Anzahl der Toten leicht abnahm.
Test 4: last collide ist an, NHD ist aus: Gegen Einzelgegner ist kein Tornado tödlich, Getroffene überleben immer mit weniger als einem Drittel ihres Lebens. In Gruppen sterben einige vom Tornado getroffene Gegner, andere überleben mit weniger als einem Drittel ihres Lebens. Mit der normalen Tornadogeschwindigkeit nahm die Anzahl der Toten ab, es waren aber immer noch einige vorhanden.
Damit ist erwiesen, dass ein Missile mit aktivem last collide einem Gegner mehrfach Kollisionschaden zufügen kann, falls es zwischen zwei Schadensapplizierungen einem anderen Gegner Kollisionschaden zugefügt hat. Denn anders ist das Beobachtete nicht zu erklären.
Beispiel:
Missile fügt in frame 7 Gegner A Kollisionsschaden zu (NHD sei nicht vorhanden).
Missile fügt nun in frame 9 Gegner B Kollisionsschaden zu. Von nun an kann es Gegner A also wieder Kollisionsschaden zufügen. Wenn dies geschehen ist, kann es Gegner B wieder Kollisionssschaden zufügen etc.
Falls es sich um ein lange den gegner berührendes Missile handelt und kein NHD vorhanden ist, kann der Schadne also immer zwischen den Gegnern hin und her springen.
Technisch wird der last collide laut PK dadurch ermöglicht, dass das Spiel die ID des zu letzt getroffenen Gegners speichert und bei diesem dann erneuten Kollisionsschaden verhindert.
Das konnte ich natürlich nicht testen, es hört sich aber schlüssig an.
Spielerisch sind die Auswirkungen beim Tornado eher gering, da die Wahrscheinlichkeit auf multiplen on-collision-dmg wegen des NHDs eher gering ist. Bei anderen Skills könnte das hingegen anders aussehen.
Zuletzt bearbeitet: