ReforgeLite
Overview
ReforgeLite is a lightweight reforging calculator that helps you figure out the optimal strategy to reforge your gear given your stat weights and caps without leaving the game.
The addon now has its own project page, located at http://www.rivsoft.net/projects/reforgelite/
Downloads are still only available through Curse page.
What to do if you're not happy with the results
The quickest way to get response is to e-mail me directly at [email protected]
Please describe your problem, and, most importantly, attach a debug log that you can find by scrolling to the bottom of the main UI window (the "Debug" button inside settings section).
How to use it
To open the addon window, type /reforge or talk to the reforging master. On the left half of the window you can see your current item stats for reference.
On the right side you can set up stat weights/caps, or select an existing preset (presets are regularly updated from http://www.noxxic.com, which in turn gets its information from Elitist Jerks).
In the simplified mode, you can specify the stat priority, along with up to two capped stats (each capped stats can have an arbitrary number of breakpoints). If you want more control, you can go into advanced mode and enter the exact stats specific for your gear, obtained from a tool such as SimulationCraft.
Behind the hood, simplified mode sets the lowest stat to a weight of 100, and each next stat adds 20. When you switch between the two modes, ReforgeLite converts your current weights to the other format.
When you're done setting up weights/caps, press Calculate. The calculations are fairly memory/time intensive, so ReforgeLite might trade some precision for speed, though the losses should be minimal. You can press the Calculate button a few times if you want to try getting a better result, the output will always display the best result so far.
Once the calculation finishes, you will see a section with your stats after reforging, and the difference from your current stats. Click on the Show button to see which items should be reforged.
If the reforging UI is open, you can click on the Reforge button to automatically reforge all items in the selected way. Do not interfere in the process (clicking the cancel button or closing the reforging UI is fine). Caution: I'm only human, so while I try my best, I can not guarantee that this process is absolutely bug free, so its recommended to watch over the process. If you leave to make some tea and come back to find it spending thousands of gold reforging your boots over and over again, don't tell me I didn't warn you.
FAQ: The results seem incorrect. I'm getting too much/too little hit/expertise/etc.
First of all, with Mists of Pandaria, expertise now affects spell hit, so it is not uncommon for casters to reforge into some expertise (on items that already have hit) to reach the cap, especially at lower gear levels. Note that ReforgeLite directly adds your expertise rating to hit rating, which is not the way it is displayed in the game, but it is more convenient when verifying the result.
Also, keep in mind that ReforgeLite uses your currently active spec to decide which stat conversions are in place, so if you're a Paladin trying to reforge your Protection gear while in Holy spec, you will likely get very little hit because it thinks you get enough from expertise.
If you are still not satisfied with the results, feel free to e-mail me (at [email protected]) with a brief description of the problem and a debug log (found at the bottom of the scrollable arera, in the options category).
FAQ: I'm using certain items for my off-spec and I don't want their reforge changed.
Simply click on an item icon in the large stats table, this will lock the item's reforge.
FAQ: More caps?
This is a very popular demand, and I'm sorry to tell you that it is not possible with the algorithm I'm currently using. I'm fairly sure the only other way to go is a brute force approach, which is simply way too slow to work in a Lua environment. There are plenty of external tools that employ it, such as http://www.wowreforge.com. I will be adding an import option in the near future to make it easier to use their results.
FAQ: Decimal weights?
You might notice that you can't enter anything besides digits in the weight boxes. This was done for simplicity's sake, and it does not limit you at all - you can multiply all your weights by a 100 (or whatever you prefer) to make them integers, and that would not affect the result at all.
FAQ: My reforge/results window isn't showing up. What do?
There are a few possible reasons.
First, ensure that the addon is enabled (and not marked as outdated if you haven't checked the box to load out-of-date addons). If the addon isn't loaded, you should get an error when trying to type /reforge in chat.
Second, try enabling Lua errors in the game options. If this causes error messages to show up when you try to open the reforge window, then send me the text of the error and I'll figure something out.
Third, it is possible that you accidentally moved the window off-screen. The easiest way to fix this is by deleting the addon config file located at <game folder>/WTF/Account/<your account>/SavedVariables/ReforgeLite.lua - this should reset the addon settings to default (make sure you're in game when doing that, or the file will simply reappear). This will also delete your custom weight and reforge presets - if you want to avoid that, you can try editing the said file, by changing the values of variables "windowX", "windowY", "methodWindowX" and "methodWindowY". Values such as 100 for X and 500 for Y should make the window(s) visible at least.
Watch out people!
This particular error cost me over 400 gold, as it reforged an item 24 times, 1 for each error i guess, before i saw it and stopped it. Guess it would have bankrupted me unattended.
24x ReforgeLite\ReforgeLite-v1.17.lua:1585: ReforgeItem(index): index out of bounds <in C code> ReforgeLite\ReforgeLite-v1.17.lua:1585: in function "DoReforgeUpdate" ReforgeLite\ReforgeLite-v1.17.lua:1615: in function <ReforgeLite\ReforgeLite.lua:1615>
Locals: self = <unnamed> { PrioToWeights = <func> @..\TaskUI.lua:580 itemTable = <unnamed> {} CapUpdater = <func> @..\TaskUI.lua:130 IsReforgeMatching = <func> @..\ReforgeLite.lua:1472 InitPresets = <func> @..\Presets.lua:539 MovePriorityItem = <func> @..\TaskUI.lua:248 GetCapScore = <func> @..\ReforgeLite.lua:394 CapAllows = <func> @..\ReforgeEngine.lua:183 UpdateTask = <func> @..\TaskUI.lua:314 dbkey = "Shamgarion - Frostwhisper" GetNeededSpellHit = <func> @..\Presets.lua:41 UpgradeDB = <func> @..\ReforgeLite.lua:128 methodReset = ReforgeLiteMethodResetButton {} UpdateMethodChecks = <func> @..\ReforgeLite.lua:1519 ComputeReforgeCore = <func> @..\ReforgeEngine.lua:483 debugButton = ReforgeLiteDebugButton {} db = <table> {} initialized = true curReforgeItem = 16 tankingStats = <table> {} deletePresetButton = ReforgeLiteDeletePresetButton {} statWeightsCategory = <unnamed> {} GetNeededMeleeHit = <func> @..\Presets.lua:29 UpdateMethodCategory = <func> @..\ReforgeLite.lua:1049 pawnButton = ReforgeLiteDeletePresetButton {} UpdateWindowSize = <func> @..\ReforgeLite.lua:389 presetMenu = ReforgeLitePresetMenu {} UpdatePriorityItem = <func> @..\TaskUI.lua:276 GetMethodScore = <func> @..\ReforgeEngine.lua:81 CreateFrame = <func> @..\ReforgeLite.lua:691 SetAnchor = <func> @..\ReforgeLite.lua:580 IsItemLocked = <func> @..\ReforgeEngine.lua:194 deleteMethodPresetButton = ReforgeLiteDeleteMethodPresetButton {} pdb = <table> {} AddPriorityItem = <func> @..\TaskUI.lua:170 itemSlots = <table> {} methodOverride = <table> {} STATS = <table> {} methodPresetDelMenu = ReforgeLiteMethodPresetDelMenu {} ParsePawnString = <func> @..\ReforgeLite.lua:418 UpdateMethodStats = <func> @..\ReforgeEngine.lua:115 methodStats = <unnamed> {} SetStatWeights = <func> @..\TaskUI.lua:341 GetConversion = <func> @..\ReforgeEngine.lua:37 scrollBarShown = true RemoveCapPoint = <func> @..\TaskUI.lua:77 GetExpertiseBonus = <func> @..\Presets.lua:22 MakeReforgeOption = <func> @..\ReforgeEngine.lua:204 settingsCategory = <unnamed> {} UpdateContentSize = <func> @..\ReforgeLite.lua:1225 capPresets = <table> {} close = <unnamed> {} QueueUpdate = <func> @..\ReforgeLite.lua:1279 UpdatePriorityPreset = <func> @..\TaskUI.lua:260 methodPresetMenu = ReforgeLiteMethodPresetMenu {} UpdateCapPreset = <func> @..\TaskUI.lua:93 UpdateStatWeightList = <func> @..\TaskUI.lua:136 isWeights = ReforgeLiteWidget3 {} itemStats = <table> {} AddCapPoint = <func> @..\TaskUI.lua:30 reforgeTable = <table> {} title = <unnamed> {} scrollValue = 809.83963847908 scrollBg = <unnamed> {} Compute = <func> @..\ReforgeEngine.lua:554 leftGrip = <unnamed> {} methodWindow = <unnamed> {} me
Clicked the reforger NPC and got this error:
1x ReforgeLite\ReforgeLite-v1.17.lua:888: Invalid inventory slot in GetInventorySlotInfo
<in C code>
ReforgeLite\ReforgeLite-v1.17.lua:888: in function "CreateItemTable"
ReforgeLite\ReforgeLite-v1.17.lua:792: in function "CreateFrame"
ReforgeLite\ReforgeLite-v1.17.lua:1664: in function <ReforgeLite\ReforgeLite.lua:1655>
<in C code>
<string>:"TURNORACTION":4: in function <string>:"TURNORACTION":1
Locals:
self = <unnamed> {
0 = <userdata>
capPresets = <table> {}
close = <unnamed> {}
CreateOptionList = <func> @..\ReforgeLite.lua:921
itemTable = <unnamed> {}
UpdatePriorityPreset = <func> @..\TaskUI.lua:260
GetMeleeHitBonus = <func> @..\Presets.lua:16
IsReforgeMatching = <func> @..\ReforgeLite.lua:1472
InitPresets = <func> @..\Presets.lua:539
MovePriorityItem = <func> @..\TaskUI.lua:248
GetCapScore = <func> @..\ReforgeLite.lua:394
CapAllows = <func> @..\ReforgeEngine.lua:183
UpdateStatWeightList = <func> @..\TaskUI.lua:136
ChooseReforgeClassic = <func> @..\ReforgeEngine.lua:427
dbkey = "Desdichado - Runetotem"
GetItemReforgeOptions = <func> @..\ReforgeEngine.lua:276
itemStats = <table> {}
AddCapPoint = <func> @..\TaskUI.lua:30
reforgeTable = <table> {}
spiritBonus = 1.03
SetUpHooks = <func> @..\ReforgeLite.lua:1642
FinalizeReforge = <func> @..\ReforgeEngine.lua:147
Compute = <func> @..\ReforgeEngine.lua:554
ADDON_LOADED = <func> @..\ReforgeLite.lua:1690
leftGrip = <unnamed> {}
CreateCategory = <func> @..\ReforgeLite.lua:503
GetReforgeID = <func> @..\ReforgeLite.lua:1230
InitReforgeClassic = <func> @..\ReforgeEngine.lua:310
DebugMethod = <func> @..\ReforgeEngine.lua:617
presetDelMenu = ReforgeLitePresetDelMenu {}
initialized = true
tankingStats = <table> {}
itemData = <table> {}
GetMethodPenalty = <func> @..\ReforgeEngine.lua:88
MoveScroll = <func> @..\ReforgeLite.lua:653
SetScroll = <func> @..\ReforgeLite.lua:637
GetNeededMeleeHit = <func> @..\Presets.lua:29
GetFrameY = <func> @..\ReforgeLite.lua:596
GetSpellHitBonus = <func> @..\Presets.lua:19
UpdateCapPoints = <func> @..\TaskUI.lua:105
RefreshMethodStats = <func> @..\ReforgeLite.lua:1182
OnCommand = <func> @..\ReforgeLite.lua:1715
title = <unnamed> {}
UpdateCapPreset = <func> @..\TaskUI.lua:93
methodPresetMenu = ReforgeLiteMethodPresetMenu {}
presetMenu = ReforgeLitePresetMenu {}
DoReforge = <func> @..\ReforgeLite.lua:1603
GetMethodScore = <func> @..\ReforgeEngine.lua:81
UpdatePriorityItem = <func> @..\TaskUI.lua:276
CreateFrame = <func> @..\ReforgeLite.lua:691
db = <table> {}
REFORGE_TABLE_BASE = 112
WeightsToPrio = <func> @..\TaskUI.lua:647
PrioToWeights = <func> @..\TaskUI.lua:580
UpgradeDB = <func> @..\ReforgeLite.lua:128
SetAnchor = <func> @..\ReforgeLite.lua:580
ComputeReforge = <func> @..\ReforgeEngine.lua:514
IsItemLocked = <func> @..\ReforgeEngine.lua:194
UpdateTask = <func> @..\TaskUI.lua:314
UpdatePriorities = <func> @Re
Same to my Blood DK - No expertise ;(
I've got some problems with ReforgeLite lately, I play as fury warrior, and the reforge is just wrong. It will not give me any expertise
Doesn't seem like the addon realize that expertise rating is converted into hit rating for casters now.
The optimizations are inaccurate for casters.
It seems that hit and expertise are the same to the spell casters... so if all equipments are reforged to hit ratings and i still don't get the hit cap.. those euipments which have hit ratings originally should be reforged to expertise... but ReforgeLite doesn't do this!
hi
updated it today to the latest version and worked fine... until it started to use presets i used before and gave me wrong numbers. after a UI reload i cant open it anymore (/reforge and talking to the trainer doesnt work)
no error message or anything to help you fix this, just wanted to let you know
You probably disabled lua errors in settings =(
Hello, I can't get it to correctly recognize the minimum amount of hit needed for my elemental shaman (I get hit from spirit as well). I'm sitting well below the cap but ReforgeLite still thinks it's no problem to remove some spirit and hit from me =( I even tried setting hit and spirit to a small, but non-zero, value to make sure it wasn't being ignored. Hit is set to "At least" "Spell hit cap" "5100" (gray). I tried to manually put it to 5100 as well, but no dice.
Here's my debug info, and I'll provide more information if needed. It turned out to be very long, so here it is: http://pastebin.com/Fpxsg3ZN
I am not sure if the resto druid haste break point is concurrent with the theories on Ej's site.
3043 is the point in question, the field adds this as the default amount, which I proceed with calculate.
It then says I should reforge out of the haste I currently have ( by 877 ) and slap it into mastery.
This will then bring me down to about 2xxx haste which is far from the 5% 3043 needed.
Currently having an issue with your mod as a fury warrior, no matter how i play with it (default fury or advanced fury) it wont get me to expertise cap, it will reforge me away from exp cap.
Any chance of getting back the speed slider (maybe as an expert setting)? I seem to get better results when using the old version with the speed slider.
Is it really needed? I removed it because with MoP there's much more stats on items and as the numbers go higher, the amount of memory required increases. This will get even worse further into content. Currently, speed is equal to total stats divided by 800, which was a magic number that yielded approximately the same speed as before.
Also, speed setting being higher than in cata doesn't mean it will be less accurate - with higher stats, a small error is less likely.
But it does make sense to have it in "advanced mode", I'll probably do that.
A=100 B=200 C=300 means it gets 100 "score" for each point in A, 200 for each point in B, etc. The addon finds a reforge that gives you the maximum score. If, for example, you know that each point in haste gives you 100 dps, while each point in crit gives you 110 dps, that's what the weights would be. So it would be more like your second option, it would go for A over B if it could get twice as much A.
Yes, A=100 B=200 C=300 gives the same result as A=10 B=20 C=30, but this way you have less room for precision if you happen to know your exact weights (as in, dps increase per point in stat). Usually, the exact numbers don't matter much as long as the order is the same (this is why I set priority mode as default), but there are cases when you could, say, sacrifice some points in a better stat to get even more points in a lower priority stat - and exact weights are needed to determine if that's good or not.
excellent, very nice explanation, thank you
Great addon, I switched from another reforging tool to this one. I have a question though. What do the stat weights actually stand for? For example, if I were to set stat A = 100, stat B = 200 and stat C = 300, is that the same or different from setting them as 10, 20 and 30 respectively? Would it work just the same if all the stats were ranked 1, 2, 3, 4 etc? Does it mean that the addon will get 300 points of C for every 200 points of B and 100 points of A? Or does it mean the only way it would reforge for stat A over stat B would be if the result would be be twice as much A as B?
None of this has any real impact on how I use the addon, i'm just curious, Thanks muchly
The non advanced mode doesnt work for me still reforging haste sprit to mastery advanced mode work fine as Healdruid
This is strange.. does it get fixed when you click the advanced mode button twice (to go back to priority list)?
You need an additional check in ReforgeEngine.lua Line 199:
if not ilvl then return true end
That's true, thanks for the tip.