Elitist Jerks

Elitist Jerks (http://elitistjerks.com/forums.php)
-   Rogues (http://elitistjerks.com/f78/)
-   -   Java-based optimal Rogue reforging calculator (http://elitistjerks.com/f78/t115730-java_based_optimal_rogue_reforging_calculator/)

bsoft 01/28/11 7:59 PM

Java-based optimal Rogue reforging calculator
 
Fast is never fast enough! Now basically instant.

Split off from Korner's thread to avoid polluting it with bug reports that don't apply to his tool.

This is a reforging calculator that calculates the correct reforgings to achieve optimal EP. It's (loosely) based on Korner's tool, but since it's written in Java rather than Perl and has several optimizations, it's quite a bit faster (20 times or more in most cases).

Reasons to use my version:
  • It's even faster than Korner's C version!
  • You like the convenience of a web-based tool.

Reasons to use Korner's version:
  • It's been around longer and has fewer bugs
  • It has more options like customizable EP coefficients and caps
  • It works (manually) with random enchant items, which my tool doesn't handle at all

You can get Korner's original version from his thread:
http://elitistjerks.com/f78/t115053-...reforger_tool/

If you want to try my version, there are three versions: the applet version (which runs on a web page), the runnable JAR version (if you know how to run Java JARs) and the source code version (if you are a programmer and want to modify/examine my tool).

Most people should use the applet version.

The applet version of my program needs permission to access Armory and Wowhead. You'll see a big scary security warning when you load the page. If you don't trust me (and why should you?) you are welcome to download the source code and review it yourself. Alternatively you could run it in a VM or a machine that you don't do anything important on. I don't have to tell you how common keyloggers are. I can assure you that there is nothing malicious about my program, but of course someone trying to hack your account would say the same thing.

Typical solution times for my Java version are instant to a few seconds, depending on your hardware and how HotSpot is feeling.

If you don't have Java, download it from java.com

Applet version (recommended for most people):
Reforger

Runnable JAR version (faster than the Applet if you're familiar with Java):
http://powerofb.wsnetwork.net/reforger/reforger.jar

Source code:
http://powerofb.wsnetwork.net/reforger/src.zip

As of 1.4, the source code is released under the Apache License, Version 2.0.

Version history:
1.8:
  • Disable multi-threading. There was a weird race condition that would sometimes give bogus results. The single-threaded version is negligibly slower and doesn't have the problem.
1.7:
  • Fix another combat calculation bug.
  • Fix a performance bug - now up to 10x faster than 1.6, 100x faster than 1.5 and 50x faster than Korner's C version!
1.6:
  • Rewrote calculation code - up to 50x faster than 1.5 and even faster than Korner's C version!
1.5:
  • Fix combat reforging formula.
  • Print list of non-reforged items.
1.4:
  • Handle non-English character profiles
  • Correct EP values for Combat rogues
  • Auto-convert simple character URLs to advanced character URLs
  • Add license information to source files
1.3:
  • Improved detection of random enchant items that will not result in false positives.
1.2:
  • Print an error when encountering items with random enchants rather than give bad results
  • Print an error message if you don't enter the advanced armory URL rather than give bad results
  • Correctly calculate gem/enchant bonuses rather than using Armory's (bad) values. Stats should now match in-game values.
1.1:
  • Fix an EP calculation bug
  • Add better error messages
  • Add version info

Inkux 01/28/11 9:35 PM

Code:

java.lang.RuntimeException: Item found with no stats - most likely a random enchant item. These items are not yet supported.
        at Reforger.runReforging(Reforger.java:129)
        at ReforgerApplet$ReforgerRunnable.run(ReforgerApplet.java:85)
        at java.lang.Thread.run(Unknown Source)

How I will fix that problem? solutions?

Indalecio 01/28/11 10:06 PM

Surround in a try-catch block to handle the exception gracefully.

Syncness 01/28/11 10:42 PM

Quote:

Originally Posted by Inkux (Post 1854842)
Code:

java.lang.RuntimeException: Item found with no stats - most likely a random enchant item. These items are not yet supported.
        at Reforger.runReforging(Reforger.java:129)
        at ReforgerApplet$ReforgerRunnable.run(ReforgerApplet.java:85)
        at java.lang.Thread.run(Unknown Source)

How I will fix that problem? solutions?

In my case, it was most likely due to my Engineering helm.

genericrogue 01/28/11 10:55 PM

Hi, i'm intrigued by the two new reforge tools. I oped to use the Java-based tool, as it is somewhat faster. I left it to run over-night, and came back to check the results, which seemed at least a little odd:

Code:

Reforger version 1.1.
Loading character info:
  Using combat reforgings.
Loading items:
  ["Scaleslicer" Stats=[Hit=97 Mastery=0 Haste=0 Expertise=97 Crit=0]]
  ["Dragonwreck Throwing Axe" Stats=[Hit=0 Mastery=72 Haste=72 Expertise=0 Crit=0]]
  ["Liar's Handwraps" Stats=[Hit=0 Mastery=0 Haste=169 Expertise=0 Crit=149]]
  ["Thieving Spaulders" Stats=[Hit=0 Mastery=0 Haste=150 Expertise=0 Crit=130]]
  ["Signet of the Elder Council" Stats=[Hit=0 Mastery=127 Haste=127 Expertise=0 Crit=0]]
  ["Left Eye of Rajh" Stats=[Hit=0 Mastery=0 Haste=0 Expertise=252 Crit=0]]
  ["Assassin's Chestplate" Stats=[Hit=183 Mastery=0 Haste=0 Expertise=0 Crit=253]]
  ["Mask of Vines" Stats=[Hit=0 Mastery=0 Haste=162 Expertise=0 Crit=182]]
  ["Fang of Twilight" Stats=[Hit=0 Mastery=97 Haste=0 Expertise=0 Crit=97]]
  ["Viewless Wings" Stats=[Hit=127 Mastery=0 Haste=0 Expertise=0 Crit=127]]
  ["Treads of Fleeting Joy" Stats=[Hit=0 Mastery=0 Haste=169 Expertise=0 Crit=149]]
  ["Leggings of the Impenitent" Stats=[Hit=0 Mastery=0 Haste=148 Expertise=0 Crit=168]]
  ["Green Trophy Tabard of the Illidari" Stats=[Hit=0 Mastery=0 Haste=0 Expertise=0 Crit=0]]
  ["Gilnean Ring of Ruination" Stats=[Hit=108 Mastery=0 Haste=138 Expertise=0 Crit=0]]
  ["Don Rodrigo's Fabulous Necklace" Stats=[Hit=0 Mastery=145 Haste=96 Expertise=0 Crit=0]]
  ["Fluid Death" Stats=[Hit=321 Mastery=0 Haste=0 Expertise=0 Crit=0]]
  ["Precious' Ribbon" Stats=[Hit=0 Mastery=0 Haste=0 Expertise=0 Crit=0]]
  ["Parasitic Bands" Stats=[Hit=0 Mastery=127 Haste=0 Expertise=0 Crit=127]]
  ["Red Beam Cord" Stats=[Hit=0 Mastery=0 Haste=150 Expertise=0 Crit=130]]
Base stats:
  Hit: 836
  Mastery: 568
  Haste: 1381
  Expertise: 349
  Crit: 1512
Gem/enchant bonuses:
  Hit: +40
  Mastery: +50
  Haste: +150
  Expertise: 0
  Crit: +105
Stats with no reforgings (EP = 5706.2):
  Hit: 876
  Mastery: 618
  Haste: 1531
  Expertise: 349
  Crit: 1617
Current reforgings:
  Hit: +12
  Mastery: -136
  Haste: +277
  Expertise: +447
  Crit: -600
Stats with current reforgings (EP = 5813.8):
  Hit: 888
  Mastery: 482
  Haste: 1808
  Expertise: 796
  Crit: 1017

. . .
Code:

Recommended reforgings:
  ["Scaleslicer" 38 Expertise to Mastery]
  ["Dragonwreck Throwing Axe" 28 Haste to Hit]
  ["Liar's Handwraps" 59 Crit to Mastery]
  ["Thieving Spaulders" 52 Crit to Mastery]
  ["Signet of the Elder Council" 50 Haste to Hit]
  ["Left Eye of Rajh" 100 Expertise to Mastery]
  ["Assassin's Chestplate" 101 Crit to Mastery]
  ["Mask of Vines" 72 Crit to Hit]
  ["Fang of Twilight" 38 Crit to Hit]
  ["Viewless Wings" 50 Crit to Mastery]
  ["Treads of Fleeting Joy" 59 Crit to Hit]
  ["Leggings of the Impenitent" 67 Crit to Hit]
  ["Don Rodrigo's Fabulous Necklace" 38 Haste to Hit]
  ["Parasitic Bands" 50 Crit to Hit]
  ["Red Beam Cord" 52 Crit to Hit]
Stats with no reforgings (EP = 5706.2):
  Hit: 876
  Mastery: 618
  Haste: 1531
  Expertise: 349
  Crit: 1617
Stats with current reforgings (EP = 5813.8):
  Hit: 888
  Mastery: 482
  Haste: 1808
  Expertise: 796
  Crit: 1017
Stats with recommended reforgings (EP = 6030.8):
  Hit: 1330
  Mastery: 1018
  Haste: 1415
  Expertise: 211
  Crit: 1017
Improvement over current reforgings: 217.0

Seeing as how the tool reforged everything to hit/mastery, it looks like it's possible that the tool is using Assassination calcs across the board. Anyone else running combat have a similar experience?

bsoft 01/28/11 11:17 PM

Quote:

Originally Posted by genericrogue (Post 1854869)
Seeing as how the tool reforged everything to hit/mastery, it looks like it's possible that the tool is using Assassination calcs across the board. Anyone else running combat have a similar experience?

The EP values and caps are the same right now for Combat and Assassination in my program, so, yeah, it's wrong.

genericrogue 01/28/11 11:28 PM

Quote:

Originally Posted by bsoft (Post 1854884)
The EP values and caps are the same right now for Combat and Assassination in my program, so, yeah, it's wrong.

Thanks for the confirmation, should probably have noted i was using the Applet version, not the JAR version.

Matl1 01/29/11 12:15 AM

Quote:

Originally Posted by Inkux (Post 1854842)
Code:

java.lang.RuntimeException: Item found with no stats - most likely a random enchant item. These items are not yet supported.
        at Reforger.runReforging(Reforger.java:129)
        at ReforgerApplet$ReforgerRunnable.run(ReforgerApplet.java:85)
        at java.lang.Thread.run(Unknown Source)

How I will fix that problem? solutions?

Recieved the same message. I also have an engineering helm equiped.

Narokusama 01/29/11 1:51 AM

odd question
 
Is there a combat reforger option?

bsoft 01/29/11 2:16 AM

Quote:

Originally Posted by Matl1 (Post 1854912)
Recieved the same message. I also have an engineering helm equiped.

I've fixed the problem with false-positive random enchant detection on items that have no reforgeable stats.

aztoreth 01/29/11 5:23 AM

Stats with recommended reforgings (EP = 6114,0):
Hit: 1333
Mastery: 1829
Haste: 837
Expertise: 449
Crit: 414

Anyone having trouble with cycle stability with less than 500 expertise or only me?

No_LiMiT 01/29/11 6:02 AM

java.lang.RuntimeException: Random enchant item found. These items are not yet supported.
at net.wsnetwork.reforger.Reforger.runReforging(Reforger.java:153)
at net.wsnetwork.reforger.ReforgerApplet$ReforgerRunnable.run(ReforgerApplet.java:99)
at java.lang.Thread.run(Unknown Source)

Probably engineering tinkers(nitro, haste on gloves, parachute)

bsoft 01/29/11 6:24 AM

Quote:

Originally Posted by No_LiMiT (Post 1854977)
java.lang.RuntimeException: Random enchant item found. These items are not yet supported.
at net.wsnetwork.reforger.Reforger.runReforging(Reforger.java:153)
at net.wsnetwork.reforger.ReforgerApplet$ReforgerRunnable.run(ReforgerApplet.java:99)
at java.lang.Thread.run(Unknown Source)

Probably engineering tinkers(nitro, haste on gloves, parachute)

This appears to be the problem item:

["Mistral Circle" Stats=[Hit=0 Mastery=0 Haste=0 Expertise=0 Crit=0]]

Solving this problem is complex because neither Wowhead nor the Armory item pages report the stats on these items correctly. The stats will need to be pulled from your Armory page, which is more complex since the item might already be reforge and the HTML is harder to parse.

I'll see if I can get a fix done tomorrow.

korner 01/29/11 6:33 AM

Quote:

Originally Posted by bsoft (Post 1854987)
This appears to be the problem item:

["Mistral Circle" Stats=[Hit=0 Mastery=0 Haste=0 Expertise=0 Crit=0]]

Solving this problem is complex because neither Wowhead nor the Armory item pages report the stats on these items correctly. The stats will need to be pulled from your Armory page, which is more complex since the item might already be reforge and the HTML is harder to parse.

I'll see if I can get a fix done tomorrow.

Some steps to resolve the random items issue can be found here: http://elitistjerks.com/f78/t115053-...l/#post1849030

So if we hardcode all the random items and stats in the program, the item variant we need can be pulled from Armory by that suffixID, and the reforge option on the item can be determined from the same URL from "&re=144" part.

Syncness 01/29/11 8:10 AM

Code:

java.lang.RuntimeException: Unable to load items from Armory URL: Nexism @ Blackrock - Game - World of Warcraft
Perhaps blocked from Armory?

Full error below.
Click Here ← Click Here
Code:

Reforger version 1.4.
Loading character info:
java.lang.RuntimeException: Unable to load items from Armory URL: http://us.battle.net/wow/en/character/blackrock/nexism/advanced
        at net.wsnetwork.reforger.Character.<init>(Character.java:97)
        at net.wsnetwork.reforger.Reforger.runReforging(Reforger.java:120)
        at net.wsnetwork.reforger.ReforgerApplet$ReforgerRunnable.run(ReforgerApplet.java:99)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.net.SocketPermission us.battle.net:80 connect,resolve)
        at java.security.AccessControlContext.checkPermission(Unknown Source)
        at java.security.AccessController.checkPermission(Unknown Source)
        at java.lang.SecurityManager.checkPermission(Unknown Source)
        at java.lang.SecurityManager.checkConnect(Unknown Source)
        at sun.plugin2.applet.Applet2SecurityManager.checkConnect(Unknown Source)
        at sun.net.www.http.HttpClient.openServer(Unknown Source)
        at sun.net.www.http.HttpClient.<init>(Unknown Source)
        at sun.net.www.http.HttpClient.New(Unknown Source)
        at sun.net.www.http.HttpClient.New(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
        at net.wsnetwork.reforger.Character.<init>(Character.java:73)
        ... 3 more



All times are GMT -4. The time now is 4:11 AM.

Forum Infrastructure by vBulletin 3.6.12 ©2000-2007, Jelsoft Enterprises Ltd.