Elitist Jerks
Register
Blogs
Forums


Go Back   Elitist Jerks » Class Mechanics » Rogues

Reply
 
LinkBack Thread Tools
Old 01/28/11, 7:59 PM   #1
bsoft
Glass Joe
 
Night Elf Priest
 
Terenas
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:
Complete Rogue 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

Last edited by bsoft : 02/12/11 at 9:27 AM. Reason: Add correct URL for Applet version.

Offline
Reply With Quote
Old 01/28/11, 9:35 PM   #2
Inkux
Glass Joe
 
Worgen Rogue
 
Ragnaros
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?

Chile Offline
Reply With Quote
Old 01/28/11, 10:06 PM   #3
Indalecio
Glass Joe
 
Indalecio's Avatar
 
Night Elf Rogue
 
Hellscream
Surround in a try-catch block to handle the exception gracefully.

Offline
Reply With Quote
Old 01/28/11, 10:42 PM   #4
Syncness
Von Kaiser
 
Night Elf Hunter
 
Caelestrasz
Originally Posted by Inkux View Post
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.

Australia Offline
Reply With Quote
Old 01/28/11, 10:55 PM   #5
genericrogue
Glass Joe
 
Orc Rogue
 
Blackrock
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:

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
. . .
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?

United States Offline
Reply With Quote
Old 01/28/11, 11:17 PM   #6
bsoft
Glass Joe
 
Night Elf Priest
 
Terenas
Originally Posted by genericrogue View Post
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.

Offline
Reply With Quote
Old 01/28/11, 11:28 PM   #7
genericrogue
Glass Joe
 
Orc Rogue
 
Blackrock
Originally Posted by bsoft View Post
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.

United States Offline
Reply With Quote
Old 01/29/11, 12:15 AM   #8
Matl1
Glass Joe
 
Undead Rogue
 
Talnivarr (EU)
Originally Posted by Inkux View Post
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.

Offline
Reply With Quote
Old 01/29/11, 1:51 AM   #9
Narokusama
Glass Joe
 
Night Elf Rogue
 
Exodar
odd question

Is there a combat reforger option?

United States Offline
Reply With Quote
Old 01/29/11, 2:16 AM   #10
bsoft
Glass Joe
 
Night Elf Priest
 
Terenas
Originally Posted by Matl1 View Post
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.

Offline
Reply With Quote
Old 01/29/11, 5:23 AM   #11
aztoreth
Glass Joe
 
Night Elf Rogue
 
Stonemaul
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?

Last edited by aztoreth : 01/29/11 at 5:31 AM.

Offline
Reply With Quote
Old 01/29/11, 6:02 AM   #12
No_LiMiT
Glass Joe
 
Goblin Rogue
 
Mazrigos (EU)
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)

Offline
Reply With Quote
Old 01/29/11, 6:24 AM   #13
bsoft
Glass Joe
 
Night Elf Priest
 
Terenas
Originally Posted by No_LiMiT View Post
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.

Offline
Reply With Quote
Old 01/29/11, 6:33 AM   #14
korner
Von Kaiser
 
korner's Avatar
 
Troll Rogue
 
Азурегос (EU)
Originally Posted by bsoft View Post
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: Complete Rogue Reforger tool

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.

Ukraine Offline
Reply With Quote
Old 01/29/11, 8:10 AM   #15
Syncness
Von Kaiser
 
Night Elf Hunter
 
Caelestrasz
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
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

Australia Offline
Reply With Quote
Reply

Go Back   Elitist Jerks » Class Mechanics » Rogues

Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
Optimal Reforger Calculator Reeshet Public Discussion 59 07/15/11 7:34 PM
Java App Modelling Rogue DPS (Updated for 3.3.3) Chack Rogues 294 09/30/10 8:15 AM
[Rogue] Hit, crit or ap discussion based on your own experiences. laforce The Dung Heap 4 05/24/07 6:07 PM