Hier mal eine eine kleine Sammlung der Plussteine und ihrer Erfolgs-, Fehlschlags- und Abwertechancen
Das Ganze wächst natürlich nicht nur auf meinen eigenen Mist - deswegen hier noch ein paar Links zu Posts, wo sich schon was dazu finden lässt:
https://web.archive.org/web/20…ge=Thread&threadID=539826
Dann noch - wo nehme ich meine Werte her?
- die entsprechenden Item-IDs suche ich mir mit Dungeonloots
- anschließend nutze ich FDB Extractor 2.3
-> hier wird in der data.fdb gesucht (findet sich im Runes of Magic Verzeichnis in fdb )
-> für +6 bis +20 Steine finden sich die Werte in der itemobject.db
-> für +30 Steine finden sich die Werte in der eqrefinerate.db
In der Tabelle (der Extractor gibt eine CSV datei aus, die sich mit Exel beispielsweise öffnen lässt) sucht man nun nach der Item-ID (Zeile) und den entsprechenden Attributen (Spalte)
Attribute:
eqrefinerate_base -> grundaufwertrate
eqrefinerate_fix -> Änderung/Stufe
eqrefinerate_per -> Änderung/Stufe
eqrefineeqminlv -> Mindest+stufe
eqrefineeqmaxlv -> MAximal+Stufe
eqrefineminlv -> Min ItemLevel
eqrefinemaxlv -> MAx ItemLevel
eqrefinefailed_leveldownrate_base-> Abwertrate
eqrefinefailed_leveldownrate_fix -> Änderung-Abwertrate/Stufe
eqrefinefailed_leveldownrate_per -> Änderung-Abwertrate/Stufe
eqrefinefailed_exploderate_base -> Zerstörrate
eqrefinefailed_exploderate_fix -> Änderung-Zerstörrate/Stufe
eqrefinefailed_exploderate_per -> Änderung-Zerstörrate/Stufe
Nun noch zur Rechnung:
Prinzipiell erstmal - es wird der Reihe nach geschaut -> wird aufgewertet? wird abgewertet? wird zerstört? und wenn alles nein sagt - "Fehlgeschlagen" = Item bleibt gleich
(da "zerstören" momentan nicht eintritt in Runes of Magic, schreibe ich die Werte zwar bei den Quelldaten mit auf - aber nicht in der Tabelle mit den Erfolgschancen)
weiterhin für das Eintreten des Ereigniswertes...
base = (base+ fix)*per/100
Für die +30 Steine funktioniert das Ganze (im Moment) ein klein wenig anders - hier kann man direkt die Werte pro Stufe ablesen.
Und - der Einfachheit halber gehe ich bei IS-Steinen nur auf Steine der Elfen ein (also lvl 100).
PS: die Rechnung für die Chancen hab ich von Pyrr übernommen. Ob die NPC-Steine wirklich nur Abwerten können und nicht Fehlschlagen - ich werds nicht ausprobieren... weiterhin kann man bei einigen NPC-Steinen sehen, dass sie theoretisch auch beim ersten Step abwerten können müssten - was aber keinen Sinn ergibt - deswegen hab ich das rausgelassen
- start = 0
- count = 6
- base = 20
- fix = 0
- per = 100
- down_base = 0
- down_fix = 100
- down_per = 100
- import numpy
- table = []
- for i in range(count+1):
- tbl = []
- for j in range(count+1):
- tbl.append(0)
- table.append(tbl)
- table[count][count]=100
- vec = []
- for i in range(count+1):
- vec.append([0])
- vec[0][0] = 100
- print("[table='Stufe, Plusrate, Abwertrate, Bleibrate']")
- def calc_shop():
- global table
- global base
- global down_base
- for i in range(count):
- if i==0:
- print("[*]+%d->+%d[*]%d%%[*]%d%%[*]%d%%"% (start+i,start+i+1,100,0,0))
- table[i][i]=0
- table[i+1][i]=100.00
- else:
- if i<=1:
- val = 0
- else:
- val = (100-base)*down_base/100
- print("[*]+%d->%d[*]%0.2f%%[*]%0.2f%%[*]%0.2f%%"% (start+i,start+i+1,base,val,100-base-val))
- table[i-1][i]=val
- table[i][i]=100-base-val
- table[i+1][i]=base
- base = (base+fix)*per/100
- down_base = (down_base+down_fix)*down_per/100
- if base<0:
- base = 0
- if down_base>100:
- down_base = 100
- def calc_npc():
- global table
- global base
- global down_base
- for i in range(count):
- val = (100-base)*down_base/100
- print("[*]+%d->%d[*]%0.2f%%[*]%0.2f%%[*]%0.2f%%"% (start+i,start+i+1,base,val,100-base-val))
- if i>0:
- table[i-1][i]=val
- table[i][i]=100-base-val
- else:
- table[i][i]=100-base
- table[i+1][i]=base
- base = (base+fix)*per/100
- down_base = (down_base+down_fix)*down_per/100
- if base<0:
- base = 0
- if down_base>100:
- down_base = 100
- #calc_shop()
- calc_npc()
- print("[/table]")
- xxx = []
- for i in range(count+1):
- xxx.append(0)
- xyz = []
- for i in range(count+1):
- xyz.append(str(i+start))
- print("[table='Anzahl Steine,+"+",+".join(xyz)+"']")
- table = (numpy.matrix(table)/100)
- for i in range(21):
- step = 50
- res = (table**(step*i))*vec
- for j in range(count+1):
- xxx[j] = str(round((res[j]).item(0),4))
- print("[*]%d[*]%s%%" % ((step*i), "%[*]".join(xxx)))
- print("[/table]")