Ich habe auf dem PTR eine Classic-Sorc bis zum CS Alp gerusht und dort sowie in Norm ein paar Erfahrungswerte gesammelt. Dazu habe ich bei allen beteiligten Monstern noch die MPQ-Werte zum Level rausgeschrieben, und damit zeichnet sich nun ein eindeutiges Muster ab.
Zum Berechnen der XP-Werte:
- nehme das eingetragene Level in der monstats.txt (NICHT das tatsächliche!)
- nehme den eingetragenen XP-Faktor in der monstats.txt
- schaue den Grund-XP-Wert in der monlevel.txt nach, nutze als Level den Wert von oben
- multipliziere den Grund-XP-Wert mit dem Faktor von oben
- dividiere den XP-Wert durch folgenden schwierigkeitsabhängigen Faktor:
* 1,00 für Norm
* 1,700 für Alptraum
* 2,600 für Hölle
Abweichend davon hat Hephaisto in Hölle genau das 5fache der Erfahrung, die bei dieser Berechnung herauskommt, in Norm und Alp habe ich es nicht überprüft. Vielleicht betrifft es sogar alle Superuniques.
Blutwurm und Grubenfürst hatte ich nicht nachgeschaut, daher dort keine Werte. XP calc beinhaltet den oben genannten Faktor noch nicht, daher ist "Faktor test" genau (im Rahmen der Rundungen) der Kehrwert davon. Im CS Alp sind drei Monstertypen noch fälschlicherweise mit Level 53 berechnet, diese haben aber Level 55 (d.h. kleiner Leveldifffaktor, weil ich mit Clvl 53 getestet habe) und passen damit zu Diablo und den 1,700
Code:
norm exp txt% lvl xp calc Faktor test
Giftfürsten 1001 152 30 1001 0,998988366
Sturmrufer 856 130 30 856 0,999182911
RdVerdam 486 111 24 487 0,99825817
RdVerg Mage 863 131 30 863 0,999277956
Diablo 44901 3462 40 44902 0,999982035
alp exp txt% lvl xp calc Faktor test
Giftfürsten 7400 130 57 13057 0,566737126
Sturmrufer 8146 135 58 14373 0,56673937
RdVerdam 5574 100 56 9477 0,58816081
RdVerg Mage 12672 210 58 22358 0,566759248
Diablo 273742 3462 62 465362 0,588234445
Hölle exp txt% lvl xp calc Faktor test
Giftfürst 24914 130 84 64786 0,384553644
Sturmrufer 26579 135 85 69113 0,384571699
RdVerdam 18115 100 82 47118 0,384460291
RdVerg Mage 41321 210 85 107509 0,38434743
Diablo 844531 3462 94 2195808 0,384610564
Urdar 25596 130 85 66553 0,384592846
Teufelsmaul 27563 140 85 71673 0,384566015
Grotesker 25595 130 85 66553 0,384577821
RdAbgr 26776 140 84 69770 0,383773061
Würger 25850 135 84 67278 0,384223215
Blutwurm 24594 125
Grubenfürst 24168 130
Hephaisto 360324 339 88 187372 1,923039975
Edit:
Ich bin gerade dabei, das experimentell im XPcalc umzusetzen, für die CS-Monster liefert es die richtigen Werte. Den Alp/Hellfaktor wende ich ganz am Ende der GrundXP-Bestimmung an, sollte das die falsche Rundungsweise sein, so ist der Fehler zumindest äußerst gering.
Problem: Wie ermittle ich nun für alle Alp- und Hellmonster automatisch ihr Level im Spiel? Diese folgen weder zwingend dem Arealevel noch zwingend dem txt-Eintrag.
Hephaisto wird interessanterweise schon vom Calc richtig berechnet, offenbar wird da der Wert einfach so nochmal verfünffacht, weil er auch als Boss angesehen wird.
Noch ein Edit:
Diablos XP in Alptraum ist exakt 273742, getestet mit einem Level65-Char (also kein XP-Malus) im Solospiel.
Aus den MPQs erhält man zunächst den Wert 465362. Dividiert man diesen durch 1,7, erhält man 273742,35 und damit abgerundet genau den richtigen Wert. Ich kann damit auch einen Bereich angeben:
Sollte der Faktor nicht früher auftreten, liegt er zwischen 1,6999959 und 1,7000085. Sollte der XPWert mit einem Vielfachen von 1/1024 multipliziert werden, müsste dieses zwischen 602,3499 und 602,3544 liegen, was offensichtlich unsinnig ist.
Sollte der levelabhängige Faktor auf den Monlvl-Wert von 13442 wirken, kann man von 273742 durch den Faktor 34,62 teilen und erhält 7907,0479. Mit 7907 käme nach Abrunden ein zu kleiner Wert heraus, mit 7908 ein zu großer. So funktioniert es also auch nicht.
Damit steht schonmal (für Alptraum) fest, dass der Faktor nach der Berechnung der GrundXP angewendet wird, nicht auf 1/1024 basiert und mit einer sehr hohen Präzision 1,7 ist (Fehler unter 0,00001). Denkbar wäre noch, dass er auch nach den party/charabhängigen Faktoren angewendet wird, in dem Fall bräuchte man vermutlich relativ spezielle Testsetups, um das zu unterscheiden. 465362 ist in dem Fall die GrundXP.
Und munter weiter editieren:
Im wesentlichen sehe ich zwei wahrscheinliche Stellen für den Malus, entweder sind X oder Y der Faktor und der andere ist dann jeweils 1:
exp = [ [ [ [ [mexp*X] * mqual * playerbonus ] * difflvlmalus ] * lvlmalus ] *Y]
XP-Schrein hilft nicht:
X: 273742 -> mit XP-Schrein 273742*1,5=410613
Y: 465362 -> mit XP-Schrein 698043/1,7=410613
Level 70 hilft auch nicht:
X: 273742 -> multipliziert mit 976/1024 also 260910 XP
Y: 465362 -> nach Lvlmalus 443548, nach 1,7 dann 260910 XP
Level 71:
X: 200594 XP
Y: 465362 -> 376288 -> 341011 -> 200594
bah schon wieder.
Dafür mal den Hölle-Test vorweg nehmen:
Mit den Charleveln 43, 57, 58, 62, 67, 73, 75, 78, 81, 89, 94 und 96 gibt es im Solospiel eine Abweichung. Unter 25 habe ich nicht geschaut
.
Mag jemand mit einem solchen Char Dia killen?
.