Jump to content


Photo

Java-based optimal Rogue reforging calculator


  • Please log in to reply
80 replies to this topic

#21 meneldor

meneldor

    Glass Joe

  • Members
  • 14 posts

Posted 01 February 2011 - 12:58 PM

A suggestion: Why not implement so you can enter the EP-values and the cap values?
A set of textboxes with the suggested values with the option of changing them? That way you can enter the EP-values for your particular talent-spec and gear level. That would also increase understanding as to what values are actually used in the reforging calculations.

#22 grooken

grooken

    Glass Joe

  • Members
  • 1 posts

Posted 01 February 2011 - 03:21 PM

A suggestion: Why not implement so you can enter the EP-values and the cap values?
A set of textboxes with the suggested values with the option of changing them? That way you can enter the EP-values for your particular talent-spec and gear level. That would also increase understanding as to what values are actually used in the reforging calculations.


That's actually the only thing that i want from Java app. It's much faster than korner version and i can use it after i get any item.

Java Reforger should also say if some items should not have any reforge at all. There's no such information in current version.

#23 Maconi

Maconi

    Glass Joe

  • Members
  • 20 posts

Posted 01 February 2011 - 05:27 PM

I downloaded the source and have a few questions.

First of all I'd like to try to always stay above HIT and EXP cap (using it normally it keeps putting me below EXP cap). I found this in the code, is there any way to alter it to force it to always hit EXP cap?

int exp = statValues[Stat.exp.getIndex()];
        if (exp > EXP_CAP) {
            result += EP_AT_EXP_CAP;
        } else {
            result += exp * EXP_COEFFICIENT;
        }

While I was at it I also edited the EP values for the Combat profile for 4.0.6 values. However when I try to compile it with javac (javac *.java) I get the following errors:

Reforger.java:26: package net.wsnetwork.reforger.rogue does not exist
import net.wsnetwork.reforger.rogue.CombatSpecModel;
                                   ^
Reforger.java:27: package net.wsnetwork.reforger.rogue does not exist
import net.wsnetwork.reforger.rogue.MutiltateSpecModel;
                                   ^
Reforger.java:124: cannot find symbol
symbol  : class CombatSpecModel
location: class net.wsnetwork.reforger.Reforger
            model = new CombatSpecModel();
                        ^
Reforger.java:127: cannot find symbol
symbol  : class MutiltateSpecModel
location: class net.wsnetwork.reforger.Reforger
            model = new MutiltateSpecModel();
                        ^
4 errors

Any tips on what I'm doing wrong? I'm assuming it has something to do with the CLASSPATH but since I'm new to Java I'm a bit lost lol.


Actually I take back what I said about the EXP part. The code looks fine, I'm probably ending up under EXP cap just because the java applet isn't able to reforge a few stats that I do have reforged. This is what the java app is set to reforge:

@Override public Map<Stat, Set<Stat>> getPossibleReforgings() {
        HashMap<Stat, Set<Stat>> result = new HashMap<Stat, Set<Stat>>();
        Set<Stat> stats = new HashSet<Stat>();
        stats.add(Stat.exp);
        stats.add(Stat.hst);
        result.put(Stat.hit, stats);

        stats = new HashSet<Stat>();
        stats.add(Stat.hst);
        stats.add(Stat.exp);
        result.put(Stat.mst, stats);

        stats = new HashSet<Stat>();
        stats.add(Stat.exp);
        stats.add(Stat.hit);
        result.put(Stat.hst, stats);

        stats = new HashSet<Stat>();
        stats.add(Stat.hit);
        stats.add(Stat.mst);
        stats.add(Stat.hst);
        result.put(Stat.exp, stats);

        stats = new HashSet<Stat>();
        stats.add(Stat.exp);
        stats.add(Stat.hit);
        stats.add(Stat.mst);
        stats.add(Stat.hst);
        result.put(Stat.cri, stats);

If the code was altered to this:

@Override public Map<Stat, Set<Stat>> getPossibleReforgings() {
        HashMap<Stat, Set<Stat>> result = new HashMap<Stat, Set<Stat>>();
        Set<Stat> stats = new HashSet<Stat>();
        stats.add(Stat.exp);
        stats.add(Stat.hst);
        result.put(Stat.hit, stats);

        stats = new HashSet<Stat>();
        stats.add(Stat.hit);
        stats.add(Stat.hst);
        stats.add(Stat.exp);
        result.put(Stat.mst, stats);

        stats = new HashSet<Stat>();
        stats.add(Stat.exp);
        stats.add(Stat.hit);
        result.put(Stat.hst, stats);

        stats = new HashSet<Stat>();
        stats.add(Stat.hit);
        stats.add(Stat.mst);
        stats.add(Stat.hst);
        result.put(Stat.exp, stats);

        stats = new HashSet<Stat>();
        stats.add(Stat.exp);
        stats.add(Stat.hit);
        stats.add(Stat.hst);
        result.put(Stat.cri, stats);

(Taking MST out of CRI and adding HIT to MST)

Would the time change at all? If not I think that should result in much better reforges (HIT/EXP/HST on every possible stat). MST could be added to a few if it wouldn't increase reforge times too much, but I suspect it would.

*All of the above is referring to the COMBAT profile, although similar changes could probably be made to the Assassination profile*

#24 Firnas

Firnas

    Glass Joe

  • Members
  • 11 posts

Posted 01 February 2011 - 05:29 PM

That's actually the only thing that i want from Java app. It's much faster than korner version and i can use it after i get any item.

Java Reforger should also say if some items should not have any reforge at all. There's no such information in current version.


For what it's worth I am playing around with bsofts code to be more versatile for both rogues and any other class. We briefly touched base and he said he doesn't have the time to go all the way with his reforging tool. When I come up with something I'll be sending it to him for his review.

#25 Crosshairs

Crosshairs

    Von Kaiser

  • Members
  • 61 posts

Posted 01 February 2011 - 05:38 PM

For what it's worth I am playing around with bsofts code to be more versatile for both rogues and any other class. We briefly touched base and he said he doesn't have the time to go all the way with his reforging tool. When I come up with something I'll be sending it to him for his review.


I started doing the same thing. I wanted to get a working copy that worked before I reached out to him. I'd be more then happy to review what you have done if you need another set of eyes.

#26 DerIdiot

DerIdiot

    Glass Joe

  • Members
  • 12 posts

Posted 02 February 2011 - 05:39 AM

Hey guys, I don't know what to say here. I've been running the tool and I believe it's great really. But -every single time- I run it and reforge according to what it wants, I come up missing 70-80 hit short of what it wants. I am using the advanced armory page, and no I don't have any T4W loot... What am I missing here? This is really frustrating.

#27 Piltch

Piltch

    Glass Joe

  • Members
  • 2 posts

Posted 02 February 2011 - 08:31 PM

using the jar

Recommended reforgings:
["Blackscale Wraps" 37 Mastery to Expertise]
["Portal-Sealer's Breastplate" 62 Crit to Expertise]
["Calder's Coated Carrion Carver" 33 Crit to Expertise]
["Swiftflight Leggings" 67 Crit to Expertise]
["Signet of Bloody Sands" 34 Hit to Expertise]
["Helm of Secret Knowledge" 46 Crit to Expertise]
["Quel'Dormir Signet Ring" 23 Crit to Expertise]
["Clandestine Spaulders" 56 Crit to Expertise]
["Winged Axe" 19 Hit to Haste]
["Mindsear Shanker" 28 Hit to Expertise]
["Mirror-Polished Boots" 44 Mastery to Haste]
["Skardyn's Grace" 504 Mastery to Haste] ["Pendant of Victorious Fury" 36 Mastery to Expertise]
["Cloak of Beasts" 30 Mastery to Haste]
Stats with no reforgings (EP = 4143.6):
Hit: 477
Mastery: 400
Haste: 1175
Expertise: 340
Crit: 725
Stats with current reforgings (EP = 4206.2):
Hit: 623
Mastery: 462
Haste: 1175
Expertise: 340
Crit: 517
Stats with recommended reforgings (EP = 4742.3):
Hit: 396
Mastery: -251
Haste: 1772
Expertise: 762
Crit: 438
Improvement over current reforgings: 536.2
Calculation time: 2.2K seconds (checked 12M possibilities per second)

#28 Firnas

Firnas

    Glass Joe

  • Members
  • 11 posts

Posted 03 February 2011 - 12:30 AM

using the jar

Recommended reforgings:
["Blackscale Wraps" 37 Mastery to Expertise]
["Portal-Sealer's Breastplate" 62 Crit to Expertise]
["Calder's Coated Carrion Carver" 33 Crit to Expertise]
["Swiftflight Leggings" 67 Crit to Expertise]
["Signet of Bloody Sands" 34 Hit to Expertise]
["Helm of Secret Knowledge" 46 Crit to Expertise]
["Quel'Dormir Signet Ring" 23 Crit to Expertise]
["Clandestine Spaulders" 56 Crit to Expertise]
["Winged Axe" 19 Hit to Haste]
["Mindsear Shanker" 28 Hit to Expertise]
["Mirror-Polished Boots" 44 Mastery to Haste]
["Skardyn's Grace" 504 Mastery to Haste] ["Pendant of Victorious Fury" 36 Mastery to Expertise]
["Cloak of Beasts" 30 Mastery to Haste]
Stats with no reforgings (EP = 4143.6):
Hit: 477
Mastery: 400
Haste: 1175
Expertise: 340
Crit: 725
Stats with current reforgings (EP = 4206.2):
Hit: 623
Mastery: 462
Haste: 1175
Expertise: 340
Crit: 517
Stats with recommended reforgings (EP = 4742.3):
Hit: 396
Mastery: -251
Haste: 1772
Expertise: 762
Crit: 438
Improvement over current reforgings: 536.2
Calculation time: 2.2K seconds (checked 12M possibilities per second)


Looks like on the Use of Skardyn's Grace it adds it to the general stats overall. Looking into why this is.


Edit:

The xml scheme on wowhead for items with Use: characteristic throws the periodic stat increase with the same pattern as any other secondary stat thats an Equip characteristic.

Very cheap fix at the moment. Replace the entire public StatVector(String wowheadData) constructor with the following in StatVector.java.

public StatVector(String wowheadData) {
        data = new int[Stat.possibleStats.length];
        for (Stat stat : Stat.possibleStats) {
            Pattern pattern = Pattern.compile("\"" + stat.getWowheadName() + "\":(\\d+)");
            Pattern useItemPattern = Pattern.compile("Use:");
            Matcher useItemMatcher = useItemPattern.matcher(wowheadData);
            Matcher matcher = pattern.matcher(wowheadData);
            if (matcher.find() && !useItemMatcher.find()) {
                data[stat.getIndex()] = Integer.parseInt(matcher.group(1));
            } else {
                data[stat.getIndex()] = 0;
            }
        }
    }


#29 Lycania

Lycania

    Glass Joe

  • Members
  • 2 posts

Posted 03 February 2011 - 08:45 AM

I think I found an calculation error for the combat ratings (might apply similarly to the assasination values)


    // EP value of spell hit and yellow hit at the hit cap
    private static final double EP_AT_SPELL_CAP =
        EP_AT_YELLOW_CAP + SPELL_HIT_COEFFICIENT * SPELL_HIT_CAP;

this would in numbers mean: 241 * 1.9 + 1127 * 1.4
I think that is wrong, because you are actually counting the yellow cap ratings twice. Once for 1.9 ep and once for 1.4 ep

So I guess, that right calculation would be 241 * 1.9 + (1127 - 241) * 1.4,.

This actually changes the results for combat alot (read as: 241 * 1.4ep too much).

It only happens for stat vectors assuming hit rating above the spell cap.
As long as the calculated hit ratings are below the spell hit cap, your formulas are correct, as EP_AT_YELLOW_CAP is not used in the else if.

Regards,
White

// Edit:
Also a little suggestion: For combat, there is no case where reforging into MST or CRT will happen at all. There is always an option to reforge those values into something differnt (reason beeing, that even white hit rating is superior to those two).
Removing all StatVectors for those values could reduce calculation times for combat ratings to a good amount.

#30 lovingbenji

lovingbenji

    Glass Joe

  • Members
  • 12 posts

Posted 03 February 2011 - 08:53 AM

I think I found an calculation error for the combat ratings (might apply similarly to the assasination values)


    // EP value of spell hit and yellow hit at the hit cap
    private static final double EP_AT_SPELL_CAP =
        EP_AT_YELLOW_CAP + SPELL_HIT_COEFFICIENT * SPELL_HIT_CAP;

this would in numbers mean: 241 * 1.9 + 1127 * 1.4
I think that is wrong, because you are actually counting the yellow cap ratings twice. Once for 1.9 ep and once for 1.4 ep

So I guess, that right calculation would be 241 * 1.9 + (1127 - 241) * 1.4,.

This actually changes the results for combat alot (read as: 241 * 1.4ep too much).

It only happens for stat vectors assuming hit rating above the spell cap.
As long as the calculated hit ratings are below the spell hit cap, your formulas are correct, as EP_AT_YELLOW_CAP is not used in the else if.

Regards,
White


I also found an error while using the java based tool that could be a consequence of the above statement.

On my combat rogue (almost full 359), the tool advises me to convert haste from my wind dancer tunic to hit and to leave fluid death unchanged ; which is obviously a non-sense ;)

#31 Noith

Noith

    Glass Joe

  • Members
  • 2 posts

Posted 03 February 2011 - 09:32 AM

Another flaw. It worked before I changed daggers and a ring, I have the same enchants as before, but yet, it still says random enchant items found, not supported.

Reforger version 1.4.
Loading character info:
Using mutilate reforgings.
Loading items:
["Themios the Darkbringer" Stats=[Hit=0 Mastery=72 Haste=0 Expertise=0 Crit=72]]
["Rich Purple Silk Shirt" Stats=[Hit=0 Mastery=0 Haste=0 Expertise=0 Crit=0]]
["Necklace of Strife" Stats=[Hit=0 Mastery=127 Haste=127 Expertise=0 Crit=0]]
["Sticky Fingers" Stats=[Hit=0 Mastery=150 Haste=130 Expertise=0 Crit=0]]
["Throat Slasher" Stats=[Hit=86 Mastery=0 Haste=0 Expertise=0 Crit=86]]
["Helm of Numberless Shadows" Stats=[Hit=182 Mastery=0 Haste=0 Expertise=0 Crit=162]]
["Essence of the Cyclone" Stats=[Hit=0 Mastery=0 Haste=0 Expertise=0 Crit=0]]
["Tunic of Sinking Envy" Stats=[Hit=162 Mastery=0 Haste=0 Expertise=0 Crit=202]]
["Embrace of the Night" Stats=[Hit=130 Mastery=0 Haste=0 Expertise=0 Crit=150]]
["Aberration's Leggings" Stats=[Hit=0 Mastery=0 Haste=188 Expertise=0 Crit=228]]
["Poison Fang Bracers" Stats=[Hit=100 Mastery=0 Haste=100 Expertise=0 Crit=0]]
["Tabard of the Earthen Ring" Stats=[Hit=0 Mastery=0 Haste=0 Expertise=0 Crit=0]]
["Boots of the Predator" Stats=[Hit=130 Mastery=0 Haste=0 Expertise=0 Crit=150]]
["Quicksand Belt" Stats=[Hit=150 Mastery=0 Haste=0 Expertise=0 Crit=130]]
["Lightning Conductor Band" Stats=[Hit=127 Mastery=0 Haste=0 Expertise=0 Crit=127]]
["Tia's Grace" Stats=[Hit=0 Mastery=285 Haste=0 Expertise=0 Crit=0]]
["Organic Lifeform Inverter" Stats=[Hit=0 Mastery=97 Haste=0 Expertise=97 Crit=0]]
["Twitching Shadows" Stats=[Hit=0 Mastery=0 Haste=112 Expertise=0 Crit=112]]
["Mistral Circle" Stats=[Hit=0 Mastery=0 Haste=0 Expertise=0 Crit=0]]
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)


Vamo @ Stormscale - Game - World of Warcraft - it is my main hand dagger and conclave ring. I have an idea the conclave ring is the issue, since it's stats and reforging is not shown on armory either.

EDIT: Bsofs comment on the ring.

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.


Any plans to fix this issue soon? But, I dont understand HOW you are gonna fix it, since it fetches data from armory, and armory doesn't show stats. So it's really a error from blizzard :(

#32 Raconzor

Raconzor

    Von Kaiser

  • Members
  • 44 posts

Posted 03 February 2011 - 04:03 PM

Seems the best way to fix this would be to make your own table of the stat mapping of the variuous suffixes, and if one of these items show up just plug in those values rather than try to read them from anywhere. Still misses current reforging of course.

#33 Firnas

Firnas

    Glass Joe

  • Members
  • 11 posts

Posted 03 February 2011 - 05:02 PM

Another flaw. It worked before I changed daggers and a ring, I have the same enchants as before, but yet, it still says random enchant items found, not supported.



Vamo @ Stormscale - Game - World of Warcraft - it is my main hand dagger and conclave ring. I have an idea the conclave ring is the issue, since it's stats and reforging is not shown on armory either.

EDIT: Bsofs comment on the ring.



Any plans to fix this issue soon? But, I dont understand HOW you are gonna fix it, since it fetches data from armory, and armory doesn't show stats. So it's really a error from blizzard :(


Its the ring, need to pull the 4 random enchant stats of the items armory page and add it manually to the possible reforges. +143 (372 version) to hit for 2 of them, crit or haste, Mistral Circle - Game - World of Warcraft.

I'll work on it today and have edits up for you.

#34 Firnas

Firnas

    Glass Joe

  • Members
  • 11 posts

Posted 03 February 2011 - 05:03 PM

I also found an error while using the java based tool that could be a consequence of the above statement.

On my combat rogue (almost full 359), the tool advises me to convert haste from my wind dancer tunic to hit and to leave fluid death unchanged ; which is obviously a non-sense ;)


Ya that is an issue. Looking into it as well.

#35 Skylo

Skylo

    Banned

  • Banned
  • 5 posts

Posted 03 February 2011 - 11:11 PM

Is there possibly an option to change the calculation of mastery ? Sometimes more points in mastery, don't mean more damage. So it might be more useful to reforge in any other stat, if you cannot reach the needed points for another percent of Mastery Damage.

#36 Aldriana

Aldriana

    Mike Tyson

  • Moderators
  • 13,510 posts

Posted 03 February 2011 - 11:16 PM

More points in mastery always means more damage so far as I know - its not like it truncates down to the nearest whole point when computing benefit. So I'm afraid I have no idea what you're talking about.

#37 Skylo

Skylo

    Banned

  • Banned
  • 5 posts

Posted 03 February 2011 - 11:23 PM

More points in mastery always means more damage so far as I know - its not like it truncates down to the nearest whole point when computing benefit. So I'm afraid I have no idea what you're talking about.


As far as you know... this describes it very well! I haven't found anything about the mastery is calculated exactly. So stop flaming me and tell me who did some testing on this. Otherwise I believe the Blizzard UI more than you... sry!

Pls report if anyone has other clues about this topic!

#38 Fowltor

Fowltor

    Glass Joe

  • Members
  • 10 posts

Posted 03 February 2011 - 11:38 PM

As far as you know... this describes it very well! I haven't found anything about the mastery is calculated exactly. So stop flaming me and tell me who did some testing on this. Otherwise I believe the Blizzard UI more than you... sry!

Pls report if anyone has other clues about this topic!


Well, surely you're brilliant enough to realize that Mastery isn't truncated, but rather is treated in the same way as Expertise. That is to say, each individual point of mastery is as valuable as the next. There are no breakpoints.

This has been documented and well-understood by all classes since 4.0 went live several months ago. The character sheet does not represent the values accurately.

Edited for civility

#39 DerIdiot

DerIdiot

    Glass Joe

  • Members
  • 12 posts

Posted 04 February 2011 - 03:03 AM

You know, I think a piece of my gear is throwing the tool off or the armory is reporting something wrong, it's taking my reforge and always giving me the wrong result after I reforge. But if I play with the results and change 1-2 pieces from what it tells me I can almost always make my goal for hit.

Strange indeed..

#40 Firnas

Firnas

    Glass Joe

  • Members
  • 11 posts

Posted 04 February 2011 - 05:21 AM

As far as you know... this describes it very well! I haven't found anything about the mastery is calculated exactly. So stop flaming me and tell me who did some testing on this. Otherwise I believe the Blizzard UI more than you... sry!

Pls report if anyone has other clues about this topic!


Probably for the rogue thread but can someone briefly reiterate where the discrepancy comes from mastery increasing poison dmg by 3.5%/point. I must've of missed this conversation somewhere.


You know, I think a piece of my gear is throwing the tool off or the armory is reporting something wrong, it's taking my reforge and always giving me the wrong result after I reforge. But if I play with the results and change 1-2 pieces from what it tells me I can almost always make my goal for hit.

Strange indeed..


Whats the item ?




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users