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.
As a resto druid i want to be able to soft cap myself on Haste and Spirit, but then make sure my Mastery is at a full point so soft cap that to the nearest effective place.
As far as I know, mastery isn't rounded down (testing seems to prove it), so you don't have to worry about that.
@nefariouslover
Oh I didn't realise str also gives parry ={
Kings and the warrior/dk/cat buff that gives str/agi both affect avoidance.
Anyway, glad to hear that manual input will possibly make it's way in for future versions, thanks for the response!
@nefariouslover
The only buffs that affect avoidance are food and elixirs, since agility only impacts dodge for druids now, and they don't have any dodge caps (in sight). Currently the only way to take those into account are to have them active while doing the calculations. Sorry if that's a little rough, I'll probably add a way to manually enter them in next version or so.
Second, the algorithm doesn't have room for more than 2 non-linear stats to keep track of (in the case of tanking model, dodge and parry), and I don't think there's a way to add more without drastically losing efficiency, making it unusable in lua. So you can't have an expertise cap while maximizing avoidance. What you can do is select a couple items with expertise on them and disable any reforging on those items. That's rough, but then tanks don't really need any expertise caps, especially with recent threat buffs. You need to define what you want to maximize, you can't maximize avoidance if you're sacrificing it for threat stats.
Hi Iroared,
Having some issues with getting Reforge Lite to recognize/factor in raid buffs.
Also kudos for the tanking models part, but without taking into account Kings/BattleShout/Elixir/Food, it's totally worthless! Super fantastic idea, I was actually just commenting in guild the other day how hard it is to reforge for precisely 102.4% manually, but the addon still has a long way to go before it's usable by tanks: There's currently no way to reforge to paladin expertise softcap while using the Tanking Model feature. (481 expertise is the softcap btw)
Would be happy to discuss this more if there's details that you would find helpful.
Best wishes.
Also one closing note would be that it would be easiest to just let users input custom "Outside influence" stats, like say for example a box for extra stats of the following type that impact tanks:
STR AGI (bear) Mastery Dodge Parry
Just to cover all the bases, so that if someone is fooding or flasking for something, they can just toss that in the box so that the addon could correctly hit the caps without a lot of extra coding.
Currently when I try to utilize this for my balance druid, it tries to change all the spirit to hit rather than viewing spirit as if it were hit.
With the way blizzard currently designs caster/healer gear for mail and leather to work without having to make a separate piece with hit on it through spec talent points that tells your character to view spirit on your items as if it were hit. Primarily, balance druids and elemental shamans will only get hit rating from weapons, off hand items, cloaks, necks, rings, trinkets, and relic/ranged slot items while the rest of your main pieces will be with spirit on it in lieu of hit (to a degree, shadow priests observe this same itemization, but cloth has hit items unlike the other two armor classes).
Your addon should be looking at hit/spirit as one stat for elemental shamans, balance druids, and shadow priests (possibly mages, but not sure if they have anything like the previously mentioned classes and roles have to translate spirit to hit). By this I mean 1 spirit = 1 hit. This way your program can look for more beneficial ways to reforge gear for these oddball classes rather than telling me I need to turn 40% of the spirit already on an item into pure hit (which is wasted money at the reforger).
@Ravengus
It works, you just have to reequip something or rebuff something so the addon recognises that. Its blizzard's bug, they don't send a stats changed event when you use seal of truth. Its even present in the default interface - if you open character pane, expertise won't update when you buff seal of truth.
FOr some reason I can't see it in my addons list now, do you know why? (can't tick or untick cos its not there)
Message: Interface\AddOns\ReforgeLite\ReforgeEngine.lua:719: attempt to perform arithmetic on field 'dd' (a nil value)
Time: 08/24/11 20:50:28
Count: 2
Stack: [C]: ?
Interface\AddOns\ReforgeLite\ReforgeEngine.lua:719: in function `?'
Interface\AddOns\ReforgeLite\ReforgeEngine.lua:805: in function <Interface\AddOns\ReforgeLite\ReforgeEngine.lua:795>
(tail call): ?
Interface\AddOns\ReforgeLite\ReforgeLite.lua:1264: in function <Interface\AddOns\ReforgeLite\ReforgeLite.lua:1263>
Locals:
Currently the paladin prime Glyphe for Seal of Truth (which adds 10 expertise flat) isn't recognized by your addon. Even if I have the seal active it won't be recognized. Can you add it please?
Message: Interface\AddOns\ReforgeLite\ReforgeEngine.lua:719: attempt to perform arithmetic on field 'dd' (a nil value)
Time: 08/21/11 18:34:40
Count: 2
Stack: Interface\AddOns\ReforgeLite\ReforgeEngine.lua:719: in function `?'
Interface\AddOns\ReforgeLite\ReforgeEngine.lua:805: in function <Interface\AddOns\ReforgeLite\ReforgeEngine.lua:795>
(tail call): ?
Interface\AddOns\ReforgeLite\ReforgeLite.lua:1264: in function <Interface\AddOns\ReforgeLite\ReforgeLite.lua:1263>
Locals: self = <unnamed> {
0 = <userdata>
capPresets =
}
close = <unnamed> {
}
QueueUpdate = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1749
itemTable = <unnamed> {
}
CapUpdater = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1070
IsReforgeMatching = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1939
InitPresets = <function> defined @Interface\AddOns\ReforgeLite\Presets.lua:674
DiminishStat = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:32
UpdateCapPreset = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:992
CapAllows = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:120
UpdateStatWeightList = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1076
ChooseReforgeClassic = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:356
dbkey = "Xeronas - Tirion"
GetItemReforgeOptions = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:192
itemStats =
}
AddCapPoint = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:921
s2hFactor = 0
statWeights = <unnamed> {
}
reforgeTable =
}
ReorderCapPoint = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:977
UpgradeDB = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:117
settings = <unnamed> {
}
spiritBonus = 1
FinalizeReforge = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:102
storedRestore = ReforgeLiteStoredRestore {
}
Compute = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:826
storedClear = ReforgeLiteStoredClear {
}
ADDON_LOADED = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:2145
leftGrip = <unnamed> {
}
storedScore = <unnamed> {
}
storedCategory = <unnamed> {
}
quality = <unnamed> {
}
computeButton = ReforgeLiteConfirmButton {
}
statCaps = <unnamed> {
}
CreateCategory = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:500
GetReforgeID = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1643
InitReforgeClassic = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:273
db =
}
lastElement = <unnamed> {
}
InitReforgeS2H = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:469
presetDelMenu = ReforgeLitePresetDelMenu {
}
OnTooltipSetItem = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:2087
scrollBg = <unnamed> {
}
tankingStats =
}
itemData =
}
convertSpirit = <unnamed> {
}
scrollFrame = <unnamed> {
}
deletePresetButton = ReforgeLiteDeletePresetButton {
}
savePresetButton = ReforgeLiteSavePresetButton {
}
statWeightsCategory = <unnamed> {
}
presetsButton = ReforgeLiteWidget1 {
}
MoveScroll = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:650
content = <unnamed> {
}
SetScroll = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:634
RestoreStoredMethod = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1632
tankingModelTip = <unnamed> {
}
GetNeededMeleeHit = <function> defined @Interface\AddOns\ReforgeLite\Presets.lua:61
scrollBar = ReforgeLiteScrollBar {
}
UpdateMethodCategory = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1441
pawnButton = ReforgeLiteDeletePresetButton {
}
UpdateCapPoints = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1006
RefreshM