Visual Combat Table

This project is abandoned.

Whether this project is out of date or its author marked it as abandoned, this project is no longer maintained.

If you wish to take this project over, please report it and state your intentions.

Visual Combat Table v1.3 - Level 84 Warrior

This addon began as an attempt to visualize the attack table coverage when playing a tank. Every tank knows (or should know) the magical values for reaching the coveted "Unhittable" status; however not everyone understands why those are the exact numbers and how exactly the attack table works, what is attack precedence, how certain attacks can be pushed off, etc. So this addon represents the combat table as a multi-colored bar, and shows you the exact probabilities of normal hits, critical hits, crushing blows, etc. It takes into account the difference between you and your attacker, and also your talents, stats, gear, and, well, pretty much everything. There is also a tooltip with detailed information.

Normally it will calculate the attack table in reference to your own level. However if you have a current target it will use the level of the target as a baseline, which should give you a more clear info in regards to raid bosses, lower level mobs, etc.

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of XylanTrueheart XylanTrueheart Feb 28, 2012 at 21:55 UTC - 0 likes

    Ahh ok thanks for the explanation Bareideru and attempting to address this slight issue. Thanks for the addon =)

  • Avatar of Bareideru Bareideru Feb 24, 2012 at 18:22 UTC - 0 likes

    @XylanTrueheart: Go

    Yeah, that happens sometimes, however this is not really my fault, as far as I can say. It's just that sometimes, during the login process, WoW loads the unit level data after the addon requests it, as opposed to before that. That only happens very rarely (I think it's something like once every 20-30 logins or so) and I can't control that. Best thing I can do on my end is to put a timer that artificially delays my addon from starting up the calculations by a few seconds.

    Last edited Feb 27, 2012 by Bareideru
  • Avatar of XylanTrueheart XylanTrueheart Feb 07, 2012 at 00:53 UTC - 0 likes

    Got this error when I logged onto my level 85 Humnan Paladin, He was logged out as ret and logged in as ret. His LFD was set at DPS also.

    As seen by BugGrabber, enUS client

    6x VisualCombatTable-1.5a\Core.lua:328: attempt to perform arithmetic on upvalue "LevDiff" (a nil value) VisualCombatTable-1.5a\Core.lua:328: in function <VisualCombatTable\Core.lua:325>


  • Avatar of nikkoroforge nikkoroforge Dec 21, 2011 at 08:31 UTC - 0 likes

    @Bareideru: Go

    It's your rodeo but as a warrior this is a great add for me. I hear what you are saying and yes I understand crit block is a second roll, but you are already doing the math to express it as a single table in the tooltip so why not visualize it. Since critical block is simply a percentage of total block you just have to split it out.

    BTW I also added the extra critical block calculation from the shield block ability which pushes any CTC over 100% and converts to critical block.

    Great addon by the way it has really been helpful tuning gear for perfect CTC and reforging just enough mitigation to avoidance while staying covered.

  • Avatar of Bareideru Bareideru Nov 02, 2011 at 18:56 UTC - 0 likes

    @nikkoroforge: Go

    Thanks for the effort, but I'd prefer it if the bar only displays the actual combat table. The crit block kinda ruins that whole idea because it does not have an exact place in the combat table. It is essentially a two-roll system. That said, I might consider that as an option in the future.

  • Avatar of nikkoroforge nikkoroforge Nov 02, 2011 at 05:13 UTC - 0 likes

    I added support for critical block to display in the bar if you want to use the code:

    VCT.Textures.GYTexture = VCT.MainFrame:CreateTexture("", "BACKGROUND") VCT.Textures.GYTexture:SetTexture(.5,.75,0,1)

    if CTBlock>0 and VCTFill<(VCT_Var.Width-4) then VCT.Textures.GYTexture:ClearAllPoints() if VCTFill+((CTBlock*CTCBlockChance/100)*((VCT_Var.Width-8)/100))<(VCT_Var.Width-4) then VCT.Textures.GYTexture:SetWidth((CTBlock*CTCBlockChance/100)*((VCT_Var.Width-8)/100)) else VCT.Textures.GYTexture:SetWidth((VCT_Var.Width-4)-VCTFill) end VCT.Textures.GYTexture:SetHeight(VCT.MainFrame:GetHeight()-6) VCT.Textures.GYTexture:SetPoint("TOPLEFT", VCT.MainFrame, VCTFill, -3) VCTFill=VCTFill+VCT.Textures.GYTexture:GetWidth() VCT.Textures.GYTexture:Show() if VCTFill>(VCT_Var.Width-4) then VCTFill=(VCT_Var.Width-4) end else VCT.Textures.GYTexture:Hide() end

    if CTBlock>0 and VCTFill<(VCT_Var.Width-4) then VCT.Textures.YTexture:ClearAllPoints() if VCTFill+((CTBlock/100*(100-CTCBlockChance))*((VCT_Var.Width-8)/100))<(VCT_Var.Width-4) then VCT.Textures.YTexture:SetWidth((CTBlock/100*(100-CTCBlockChance))*((VCT_Var.Width-8)/100)) else VCT.Textures.YTexture:SetWidth((VCT_Var.Width-4)-VCTFill) end VCT.Textures.YTexture:SetHeight(VCT.MainFrame:GetHeight()-6) VCT.Textures.YTexture:SetPoint("TOPLEFT", VCT.MainFrame, VCTFill, -3) VCTFill=VCTFill+VCT.Textures.YTexture:GetWidth() VCT.Textures.YTexture:Show() if VCTFill>(VCT_Var.Width-4) then VCTFill=(VCT_Var.Width-4) end else VCT.Textures.YTexture:Hide() end



Date created
Mar 14, 2011
Last update
Sep 17, 2012
Development stage
All Rights Reserved
Recent files