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.
After the 1.1.5 Update it doesn't work no more for my frost mage - tries to put all hit point into crit, mastery and others.
My balance druid has a cap of 15 hit - the addon puts 25 onto.
Pls fix as soon as possible
The reforge settings for hunters are shit.
Doenst reforge to hit and exp but all to haste some how.
the hit cap for shadow priests is wrong went to reforge ended up giving me 10% miss chance on 90+ ended up having to reforge manually
Getting the following on lvl 90 Monk:
Message: Interface\AddOns\ReforgeLite\ReforgeEngine.lua:295: attempt to perform arithmetic on field '?' (a nil value)
Time: 10/04/12 23:00:05
Count: 1
Stack: [C]: ?
Interface\AddOns\ReforgeLite\ReforgeEngine.lua:295: in function `UpdateMethodStats'
Interface\AddOns\ReforgeLite\ReforgeLite.lua:1185: in function `RefreshMethodStats'
Interface\AddOns\ReforgeLite\ReforgeLite.lua:1326: in function `UpdateItems'
Interface\AddOns\ReforgeLite\ReforgeLite.lua:1712: in function <Interface\AddOns\ReforgeLite\ReforgeLite.lua:1701>
[C]: in function `TurnOrActionStop'
[string "TURNORACTION"]:4: in function <[string "TURNORACTION"]:1>
Locals:
i cant open the reforgelite on my monk 90 but with my other chars is ok, i have the addon reintalled many times and the problem doenst gone. any solutions plz?
I uploaded 1.15 and deleted my previous lua files and I'm getting this error...
Message: Interface\AddOns\ReforgeLite\ReforgeEngine.lua:295: attempt to perform arithmetic on field '?' (a nil value)
Time: 10/04/12 16:45:46
Count: 1
Stack: [C]: ?
Interface\AddOns\ReforgeLite\ReforgeEngine.lua:295: in function `UpdateMethodStats'
Interface\AddOns\ReforgeLite\ReforgeLite.lua:1185: in function `RefreshMethodStats'
Interface\AddOns\ReforgeLite\ReforgeLite.lua:1326: in function `UpdateItems'
Interface\AddOns\ReforgeLite\ReforgeLite.lua:1765: in function `OnCommand'
Interface\AddOns\ReforgeLite\ReforgeLite.lua:1753: in function `?'
Interface\FrameXML\ChatFrame.lua:4358: in function `ChatEdit_ParseText'
Interface\FrameXML\ChatFrame.lua:4052: in function `ChatEdit_SendText'
Interface\FrameXML\ChatFrame.lua:4091: in function <Interface\FrameXML\ChatFrame.lua:4087>
[C]: in function `ChatEdit_OnEnterPressed'
[string "*:OnEnterPressed"]:1: in function <[string "*:OnEnterPressed"]:1>
Locals:
Okay, there appears to be some bug with capped stats not always being reforged for, I'm looking into it.
As for the :SetText error, you probably ran the bugged version and it messed up the configuration. Try deleting WTF/Account/<name>/SavedVariables/ReforgeLite.lua.
ERROR:
Message: Interface\AddOns\ReforgeLite\GUI.lua:62: Usage: ReforgeLiteWidget29:SetText("text")
Time: 10/04/12 12:03:59
Count: 1
Stack: [string "*:OnLoad"]:6: in function <[string "*:OnLoad"]:1>
[C]: ?
[C]: in function `SetText'
Interface\AddOns\ReforgeLite\GUI.lua:62: in function `CreateEditBox'
Interface\AddOns\ReforgeLite\TaskUI.lua:210: in function `AddPriorityItem'
Interface\AddOns\ReforgeLite\TaskUI.lua:301: in function `UpdatePriorities'
Interface\AddOns\ReforgeLite\TaskUI.lua:332: in function `UpdateTask'
Interface\AddOns\ReforgeLite\ReforgeLite.lua:1269: in function `UpdateItems'
Interface\AddOns\ReforgeLite\ReforgeLite.lua:1706: in function <Interface\AddOns\ReforgeLite\ReforgeLite.lua:1695>
[C]: in function `TurnOrActionStop'
[string "TURNORACTION"]:4: in function <[string "TURNORACTION"]:1>
Locals: msg = nil
self = <unnamed> {
0 = <userdata>
origErrorHandler = <function> defined Interface\FrameXML\BasicControls.xml:<Scripts>:4
errorHandler = <function> defined @Interface\AddOns\TradeSkillMaster\Util\ErrorHandler.lua:213
handler = <function> defined *:OnLoad:1
}
Resto Druid Pre set has a bug or somthing. It says on the UI it is prioritizong Haste but then reforges everything to Mastery
Yeah that's another bug I fixed but forgot to upload -_-
Going to have to make it 1.15.
I am getting the same error as Samwow
Getting this error with 1.14 when trying to swap presets:
Message: Interface\AddOns\ReforgeLite\TaskUI.lua:345: attempt to index field 'preset' (a nil value)
Time: 10/04/12 16:34:37
Count: 1
Stack: Interface\AddOns\ReforgeLite\TaskUI.lua:345: in function `SetStatWeights'
Interface\AddOns\ReforgeLite\Presets.lua:613: in function `func'
Interface\FrameXML\UIDropDownMenu.lua:710: in function `UIDropDownMenuButton_OnClick'
[string "*:OnClick"]:1: in function <[string "*:OnClick"]:1>
Locals: self = <unnamed> {
PrioToWeights = <function> defined @Interface\AddOns\ReforgeLite\TaskUI.lua:579
itemTable = <unnamed> {
}
CapUpdater = <function> defined @Interface\AddOns\ReforgeLite\TaskUI.lua:130
IsReforgeMatching = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1515
InitPresets = <function> defined @Interface\AddOns\ReforgeLite\Presets.lua:539
MovePriorityItem = <function> defined @Interface\AddOns\ReforgeLite\TaskUI.lua:248
GetCapScore = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:388
CapAllows = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:352
UpdateTask = <function> defined @Interface\AddOns\ReforgeLite\TaskUI.lua:314
dbkey = "Repthorn - Frostwolf"
GetNeededSpellHit = <function> defined @Interface\AddOns\ReforgeLite\Presets.lua:41
UpgradeDB = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:128
methodReset = ReforgeLiteMethodResetButton {
}
WeightsToPrio = <function> defined @Interface\AddOns\ReforgeLite\TaskUI.lua:646
StrengthToParry = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:38
ComputeReforgeCore = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:1014
debugButton = ReforgeLiteDebugButton {
}
db = <table> {
}
OnTooltipSetItem = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1663
presets = <table> {
}
deletePresetButton = ReforgeLiteDeletePresetButton {
}
statWeightsCategory = <unnamed> {
}
GetNeededMeleeHit = <function> defined @Interface\AddOns\ReforgeLite\Presets.lua:29
UpdateMethodCategory = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1043
pawnButton = ReforgeLiteDeletePresetButton {
}
UpdateWindowSize = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:383
presetMenu = ReforgeLitePresetMenu {
}
UpdatePriorityItem = <function> defined @Interface\AddOns\ReforgeLite\TaskUI.lua:276
GetMethodScore = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:146
ChooseReforgeS2H = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:793
SetAnchor = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:574
IsItemLocked = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:363
deleteMethodPresetButton = ReforgeLiteDeleteMethodPresetButton {
}
pdb = <table> {
}
AddPriorityItem = <function> defined @Interface\AddOns\ReforgeLite\TaskUI.lua:170
itemSlots = <table> {
}
GetPlayerBuffs = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:115
STATS = <table> {
}
methodPresetDelMenu = ReforgeLiteMethodPresetDelMenu {
}
ParsePawnString = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:412
UpdateMethodStats = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:265
methodStats = <unnamed> {
}
SetStatWeights = <function> defined @Interface\AddOns\ReforgeLite\TaskUI.lua:340
scrollBarShown = true
InitReforgeTank = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:900
GetExpertiseBonus = <function> defined @Interface\AddOns\ReforgeLite\Presets.lua:22
MakeReforgeOption = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:373
settingsCategory = <unnamed> {
}
ChooseReforgeTank = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:962
UpdateContentSize = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1219
capPresets = <table> {
}
close = <unnamed> {
}
QueueUpdate = <function> defined @Interface\AddOns\ReforgeLite
Uploaded v1.13, all presets should be up to date now.
It still doesn't support exp-to-hit, I'll work on that sometime later.
Get the following error with v1.13, can't swap presets at all.
2x ReforgeLite-v1.13\TaskUI.lua:330: attempt to call global "DeepCopy" (a nil value)
ReforgeLite-v1.13\TaskUI.lua:330: in function "SetStatWeights"
ReforgeLite-v1.13\Presets.lua:613: in function "func"
FrameXML\UIDropDownMenu.lua:710: in function "UIDropDownMenuButton_OnClick"
<string>:"*:OnClick":1: in function <string>:"*:OnClick":1
Locals:
v = <table> {
caps = <table> {}
weights = <table> {}
}
self = <unnamed> {
PrioToWeights = <func> @..\TaskUI.lua:558
itemTable = <unnamed> {}
CapUpdater = <func> @..\TaskUI.lua:109
IsReforgeMatching = <func> @..\ReforgeLite.lua:1515
InitPresets = <func> @..\Presets.lua:539
MovePriorityItem = <func> @..\TaskUI.lua:227
GetCapScore = <func> @..\ReforgeLite.lua:388
CapAllows = <func> @..\ReforgeEngine.lua:352
UpdateTask = <func> @..\TaskUI.lua:293
dbkey = "Kalrell - Lightning's Blade"
GetNeededSpellHit = <func> @..\Presets.lua:41
UpgradeDB = <func> @..\ReforgeLite.lua:128
methodReset = ReforgeLiteMethodResetButton {}
WeightsToPrio = <func> @..\TaskUI.lua:625
StrengthToParry = <func> @..\ReforgeEngine.lua:38
ComputeReforgeCore = <func> @..\ReforgeEngine.lua:1014
debugButton = ReforgeLiteDebugButton {}
db = <table> {}
OnTooltipSetItem = <func> @..\ReforgeLite.lua:1663
presets = <table> {}
deletePresetButton = ReforgeLiteDeletePresetButton {}
statWeightsCategory = <unnamed> {}
GetNeededMeleeHit = <func> @..\Presets.lua:29
UpdateMethodCategory = <func> @..\ReforgeLite.lua:1043
pawnButton = ReforgeLiteDeletePresetButton {}
UpdateWindowSize = <func> @..\ReforgeLite.lua:383
presetMenu = ReforgeLitePresetMenu {}
UpdatePriorityItem = <func> @..\TaskUI.lua:255
GetMethodScore = <func> @..\ReforgeEngine.lua:146
ChooseReforgeS2H = <func> @..\ReforgeEngine.lua:793
SetAnchor = <func> @..\ReforgeLite.lua:574
IsItemLocked = <func> @..\ReforgeEngine.lua:363
deleteMethodPresetButton = ReforgeLiteDeleteMethodPresetButton {}
pdb = <table> {}
AddPriorityItem = <func> @..\TaskUI.lua:149
itemSlots = <table> {}
GetPlayerBuffs = <func> @..\ReforgeEngine.lua:115
STATS = <table> {}
methodPresetDelMenu = ReforgeLiteMethodPresetDelMenu {}
ParsePawnString = <func> @..\ReforgeLite.lua:412
UpdateMethodStats = <func> @..\ReforgeEngine.lua:265
methodStats = <unnamed> {}
SetStatWeights = <func> @..\TaskUI.lua:319
scrollBarShown = true
InitReforgeTank = <func> @..\ReforgeEngine.lua:900
GetExpertiseBonus = <func> @..\Presets.lua:22
MakeReforgeOption = <func> @..\ReforgeEngine.lua:373
settingsCategory = <unnamed> {}
ChooseReforgeTank = <func> @..\ReforgeEngine.lua:962
UpdateContentSize = <func> @..\ReforgeLite.lua:1219
capPresets = <table> {}
close = <unnamed> {}
QueueUpdate = <func> @..\ReforgeLite.lua:1322
UpdatePriorityPreset = <func> @..\TaskUI.lua:239
methodPresetMenu = ReforgeLiteMethodPresetMenu {}
DiminishStat = <func> @..\ReforgeEngine.lua:129
UpdateCapPreset = <func> @..\TaskUI.lua:72
UpdateStatWeightList = <func> @..\TaskUI.lua:115
GetItemReforgeOptions = <function> define
Oooops, I'll upload a new one in a sec.
If you used the bad version, you will have to delete your profile in WTF/Account/<name>/SavedVariables/ReforgeLite.lua, sorry about that.
Same Problem here...it doesn't accurate works out the needed hit caps...well reforgenator doesn't too...
BUT
I question the values u set. For example frost mage...how did u get theses values....it doesn't works with elitist jerks values...so i'm curious.
Is it tuned up yet for new caps, like hit AND expertise for huntards? Or am I doing something wrong?
:-)
Got the same Problem here like mkcorp. It totally miscalculate the Expertise and Hit Cap. And the Spell Hit Cap is (at least for the Melee Classes) completely unnecessary.
I disabled the automatic option that bring up ReforgeLite, and now it's impossible to get it to show again.
Any ideas?
I'm still sort of working on it, but I have leveling and gearing up to do before next weeks raids so I don't have much time left. I still have quite a few things to finish/improve.
As for it hanging up and consuming gold, I heard of this multiple times, but never seen anything like that happen myself so I have no idea what causes it.
Auronity: Yes, I suppose it will take much longer to calculate now or even freeze, because items have way more stats now. You should probably move the speed slider to the right some more.
superswimmer: currently it doesn't distinguish between hit and spell hit so that won't be as easy, but I'll think of a way to do it. Actually, it's not even needed unless you want to reforge to expertise on items that already have hit.