vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
AdWSSettings = {DamageBonus = 1.3, ACPreset= "No Reduction", AClass=0, ACReduction=0, cAP=0};
AdWSWarrior = {Build = "arms", Crit = 2.2, OffHand = 0.5, THSpec = 1, Sspec = "on"};
AdWSRogue = {Lethality = 2.3, ImpEvi = 1.15, OffHand = 0.75, Aggression = 1.06, Opportunity = 1.20};


local AdWS_Hook = {
        AuctionFrame_LoadUI = AuctionFrame_LoadUI,

        SetItemRef = SetItemRef,
        ContainerFrameItemButton_OnEnter = ContainerFrameItemButton_OnEnter,
        ContainerFrame_Update = ContainerFrame_Update,
        AuctionFrameItem_OnEnter = nil,

        SetInventoryItem = GameTooltip.SetInventoryItem,
        SetLootItem = GameTooltip.SetLootItem,
        
        SetMerchantItem = GameTooltip.SetMerchantItem,
        
        SetMerchantCompareItem1 = ShoppingTooltip1.SetMerchantCompareItem,
        SetAuctionCompareItem1 = ShoppingTooltip1.SetAuctionCompareItem,

        SetMerchantCompareItem2 = ShoppingTooltip2.SetMerchantCompareItem,
        SetAuctionCompareItem2 = ShoppingTooltip2.SetAuctionCompareItem,
};

--===================================================================================================================--

function AdWS_OnLoad()
        SlashCmdList[ "ADWS" ] = AdWS_SlashHandler;
        SLASH_ADWS1 = "/adws";
        ChatFrame1:AddMessage( "Advanced Weapon Stats loaded. Type /adws for more information." ); 
end

--===================================================================================================================--

function AdWS_GetCmd(msg)
        if msg then
                local a,b,c=strfind(msg, "(%S+)"); --contiguous string of non-space characters
                if a then return c, strsub(msg, b+2); else      return ""; end
        end
end

function AdWS_GetArgument(msg)
        if msg then
                local a,b=strfind(msg, "=");
                if a then return strsub(msg,1,a-1), strsub(msg, b+1); else return ""; end
        end
end

--============================================================================================ 

function AdWS_SlashHandler(msg)
        local Cmd, SubCmd = AdWS_GetCmd(msg); --call to above function
        
        if (Cmd == "settings") then AdWS_DisplaySettings();

        elseif (Cmd == "help") then AdWS_DisplayHelp();

        elseif (Cmd == "damagebonus") then
                if (SubCmd == "") then
                        ChatFrame1:AddMessage("[Help] Damage Bonus");
                        ChatFrame1:AddMessage( "Usage: /adws damagebonus 1.25 - which means 125 % Damage Bonus (ie. Enrage)" );
                else
                        AdWSSettings.DamageBonus = SubCmd; 
                        ChatFrame1:AddMessage("Custom Damage bonus multiplier set to "..SubCmd);
                end;

        elseif (Cmd == "warrioroffhand") then
                if (SubCmd == "") then
                        ChatFrame1:AddMessage("[Help] Warrior OffHand handicap");
                        ChatFrame1:AddMessage("0.500 - Default");
                        ChatFrame1:AddMessage("0.525 - DW Spec 1/5 (5 %)");
                        ChatFrame1:AddMessage("0.550 - DW Spec 2/5 (10 %)");
                        ChatFrame1:AddMessage("0.575 - DW Spec 3/5 (15 %)");
                        ChatFrame1:AddMessage("0.600 - DW Spec 4/5 (20 %)");
                        ChatFrame1:AddMessage("0.625 - DW Spec 5/5 (25 %)");
                        ChatFrame1:AddMessage( "Usage: /adws warrioroffhand 0.575" );
                else
                        AdWSWarrior.OffHand = SubCmd; 
                        ChatFrame1:AddMessage("Warrior OffHand handicap set to "..SubCmd);
                end; 

        elseif (Cmd == "cap") then
                if (SubCmd == "") then
                        ChatFrame1:AddMessage("[Help] Custom Attack Power Bonus");
                        ChatFrame1:AddMessage("25 - Elixir of Giants (Rogue)");
                        ChatFrame1:AddMessage("50 - Elixir of Giants (Warrior)");
                        ChatFrame1:AddMessage("40 - Juju Might");
                        ChatFrame1:AddMessage("140 - Onyxia Buff");
                        ChatFrame1:AddMessage("x - Your own Buff ;)");
                        ChatFrame1:AddMessage( "Usage: /adws cap 140" );
                else
                        AdWSSettings.cAP = SubCmd; 
                        ChatFrame1:AddMessage("Custom +Attack Power bonus set to "..SubCmd);
                end; 
 
        elseif (Cmd == "rogueoffhand") then
                if (SubCmd == "") then
                        ChatFrame1:AddMessage("[Help] Rogue OffHand handicap");
                        ChatFrame1:AddMessage("0.50 - Default");
                        ChatFrame1:AddMessage("0.55 - DW Spec 1/5 (10 %)");
                        ChatFrame1:AddMessage("0.60 - DW Spec 2/5 (20 %)");
                        ChatFrame1:AddMessage("0.65 - DW Spec 3/5 (30 %)");
                        ChatFrame1:AddMessage("0.70 - DW Spec 4/5 (40 %)");
                        ChatFrame1:AddMessage("0.75 - DW Spec 5/5 (50 %)");
                        ChatFrame1:AddMessage( "Usage: /adws rogueoffhand 0.60" );
                else
                        AdWSRogue.OffHand = SubCmd; 
                        ChatFrame1:AddMessage("Rogue OffHand handicap set to "..SubCmd);
                end;            
        
        elseif (Cmd == "lethality") then
                if (SubCmd == "") then
                        ChatFrame1:AddMessage("[Help] Rogue Lethality");
                        ChatFrame1:AddMessage("2.00 - Default (200 %)");
                        ChatFrame1:AddMessage("2.06 - Lethality 1/5 (206 %)");
                        ChatFrame1:AddMessage("2.12 - Lethality 2/5 (212 %)");
                        ChatFrame1:AddMessage("2.18 - Lethality 3/5 (218 %)");
                        ChatFrame1:AddMessage("2.24 - Lethality 4/5 (224 %)");
                        ChatFrame1:AddMessage("2.30 - Lethality 5/5 (230 %)");
                        ChatFrame1:AddMessage( "Usage: /adws lethality 2.30" );
                else
                        AdWSRogue.Lethality = SubCmd; 
                        ChatFrame1:AddMessage("Rogue Lethality bonus set to "..SubCmd);
                end;                    
        
        elseif (Cmd == "impevi") then
                if (SubCmd == "") then
                        ChatFrame1:AddMessage("[Help] Rogue Improved Eviscerate");
                        ChatFrame1:AddMessage("1.00 - Default");
                        ChatFrame1:AddMessage("1.05 - Improved Eviscerate 1/3 (5 %)");
                        ChatFrame1:AddMessage("1.10 - Improved Eviscerate 2/3 (10 %)");
                        ChatFrame1:AddMessage("1.15 - Improved Eviscerate 3/3 (15 %)");
                        ChatFrame1:AddMessage( "Usage: /adws impevi 1.15" );
                else
                        AdWSRogue.ImpEvi = SubCmd; 
                        ChatFrame1:AddMessage("Rogue Improved Eviscerate bonus set to "..SubCmd);
                end; 

        elseif (Cmd == "aggression") then
                if (SubCmd == "") then
                        ChatFrame1:AddMessage("[Help] Rogue Improved Eviscerate");
                        ChatFrame1:AddMessage("1.00 - Default");
                        ChatFrame1:AddMessage("1.02 - Aggression 1/3 (2 %)");
                        ChatFrame1:AddMessage("1.04 - Aggression 2/3 (4 %)");
                        ChatFrame1:AddMessage("1.06 - Aggression 3/3 (6 %)");
                        ChatFrame1:AddMessage( "Usage: /adws aggression 1.06" );
                else
                        AdWSRogue.Aggression = SubCmd; 
                        ChatFrame1:AddMessage("Rogue Aggression bonus set to "..SubCmd);
                end;  

        elseif (Cmd == "opportunity") then
                if (SubCmd == "") then
                        ChatFrame1:AddMessage("[Help] Rogue Opportunity");
                        ChatFrame1:AddMessage("1.00 - Default");
                        ChatFrame1:AddMessage("1.02 - Opportunity 1/5 (4 %)");
                        ChatFrame1:AddMessage("1.04 - Opportunity 2/5 (8 %)");
                        ChatFrame1:AddMessage("1.06 - Opportunity 3/5 (12 %)");
                        ChatFrame1:AddMessage("1.06 - Opportunity 4/5 (16 %)");
                        ChatFrame1:AddMessage("1.06 - Opportunity 5/5 (20 %)");
                        ChatFrame1:AddMessage( "Usage: /adws opportunity 1.20" );
                else
                        AdWSRogue.Opportunity = SubCmd; 
                        ChatFrame1:AddMessage("Rogue Opportunity bonus set to "..SubCmd);
                end;  
                                                                
        elseif (Cmd == "warriorcrit") then
                if (SubCmd == "impale") then
                        AdWSWarrior.Crit = 2.2;
                        ChatFrame1:AddMessage("Warrior Critical Strike bonus set to 2.2 (220 %)"); 
                elseif (SubCmd == "noimpale") then
                        AdWSWarrior.Crit = 2.0;
                        ChatFrame1:AddMessage("Warrior Critical Strike bonus set to 2.0 (200 %)");
                else
                        ChatFrame1:AddMessage("[Help] Warrior Critical Strike");
                        ChatFrame1:AddMessage( "Usage: /adws warriorcrit impale - 220 % Crit Bonus" );
                        ChatFrame1:AddMessage( "Usage: /adws warriorcrit noimpale - 200 % Crit Bonus" );
                end;    

        elseif (Cmd == "swordspec") then
                if (SubCmd == "on") then
                        AdWSWarrior.Sspec = "on";
                        ChatFrame1:AddMessage("Sword Specialization proc stats ON"); 
                elseif (SubCmd == "off") then
                        AdWSWarrior.Sspec = "off";
                        ChatFrame1:AddMessage("Sword Specialization proc stats OFF");
                else
                        ChatFrame1:AddMessage("[Help] Warrior Sword Spec Proc");
                        ChatFrame1:AddMessage( "Usage: /adws swordspec on - Enable Sword Spec stats" );
                        ChatFrame1:AddMessage( "Usage: /adws swordspec off - Disable Sword Spec stats" );
                end;    
                        
        elseif (Cmd == "2hspec") then
                if (SubCmd == "") then
                        ChatFrame1:AddMessage("[Help] Warrior 2H Spec");
                        ChatFrame1:AddMessage("1.00 - Default");
                        ChatFrame1:AddMessage("1.01 - 2H Specialisation 1/5 (1 %)");
                        ChatFrame1:AddMessage("1.02 - 2H Specialisation 2/5 (2 %)");
                        ChatFrame1:AddMessage("1.03 - 2H Specialisation 3/5 (3 %)");
                        ChatFrame1:AddMessage("1.04 - 2H Specialisation 4/5 (4 %)");
                        ChatFrame1:AddMessage("1.05 - 2H Specialisation 5/5 (5 %)");
                        ChatFrame1:AddMessage( "Usage: /adws 2hspec 1.05" );
                else
                        AdWSWarrior.THSpec = SubCmd; 
                        ChatFrame1:AddMessage("Warrior 2H Specialisation bonus set to "..SubCmd);
                end;  
        
        elseif (Cmd == "warriorbuild") then
                if (SubCmd == "fury") then
                        AdWSWarrior.Build = SubCmd; 
                        ChatFrame1:AddMessage("Bloodthirst stats ON"); 
                elseif (SubCmd == "arms") then
                        AdWSWarrior.Build = SubCmd; 
                        ChatFrame1:AddMessage("Mortal Strike stats ON"); 
                else
                        ChatFrame1:AddMessage("[Help] Warrior Build");
                        ChatFrame1:AddMessage( "Usage: /adws warriorbuild arms - Show Mortal Strike" );
                        ChatFrame1:AddMessage( "Usage: /adws warriorcrit fury - Show Bloodthirst" );
                end;

        elseif (Cmd == "ac") then
                if (SubCmd == "mager14") then
                        AdWSSettings.AClass = 706;
                        AdWSSettings.ACReduction = 0.114; 
                        AdWSSettings.ACPreset= "Mage Rank 14";
                        ChatFrame1:AddMessage("AC Reduction set to: Mage Rank14 Preset"); 
                elseif (SubCmd == "mager14b") then
                        AdWSSettings.AClass = 1266;
                        AdWSSettings.ACReduction = 0.187; 
                        AdWSSettings.ACPreset= "Mage Rank 14 B";
                        ChatFrame1:AddMessage("AC Reduction set to: Mage Rank14 Buffed Preset"); 
                elseif (SubCmd == "tankt2prot") then
                        AdWSSettings.AClass = 9044;
                        AdWSSettings.ACReduction = 0.622; 
                        AdWSSettings.ACPreset= "Tank Tier2 Prot";
                        ChatFrame1:AddMessage("AC Reduction set to: Tank Tier2 Prot Preset");   
                elseif (SubCmd == "shamt1") then
                        AdWSSettings.AClass = 5401;
                        AdWSSettings.ACReduction = 0.495; 
                        AdWSSettings.ACPreset= "Shaman Tier1";
                        ChatFrame1:AddMessage("AC Reduction set to: Shaman Tier1 Preset");  

                elseif (SubCmd == "roguet2") then
                        AdWSSettings.AClass = 2170;
                        AdWSSettings.ACReduction = 0.2829; 
                        AdWSSettings.ACPreset= "Rogue Tier2";
                        ChatFrame1:AddMessage("AC Reduction set to: Rogue Tier2 Preset");  

                elseif (SubCmd == "huntert2") then
                        AdWSSettings.AClass = 4327;
                        AdWSSettings.ACReduction = 0.4403; 
                        AdWSSettings.ACPreset= "Hunter Tier2";
                        ChatFrame1:AddMessage("AC Reduction set to: Hunter Tier2 Preset");  
                         
                elseif (SubCmd == "maget2") then
                        AdWSSettings.AClass = 787;
                        AdWSSettings.ACReduction = 0.1252; 
                        AdWSSettings.ACPreset= "Mage Tier2";
                        ChatFrame1:AddMessage("AC Reduction set to: Mage Tier2 Unbuff Preset");  

                elseif (SubCmd == "priestt2") then
                        AdWSSettings.AClass = 790;
                        AdWSSettings.ACReduction = 0.1256; 
                        AdWSSettings.ACPreset= "Priest Tier2";
                        ChatFrame1:AddMessage("AC Reduction set to: Priest Tier2 Preset");  

                elseif (SubCmd == "priestt2b") then
                        AdWSSettings.AClass = 2185;
                        AdWSSettings.ACReduction = 0.2843; 
                        AdWSSettings.ACPreset= "Priest Tier2 B";
                        ChatFrame1:AddMessage("AC Reduction set to: Priest Tier2 Inner Fire Preset");  
                        
                elseif (SubCmd == "warrfury") then
                        AdWSSettings.AClass = 5017;
                        AdWSSettings.ACReduction = 0.477; 
                        AdWSSettings.ACPreset= "Warrior Fury";
                        ChatFrame1:AddMessage("AC Reduction set to: Warrior Fury (BWL level) Preset");                                                                                                                          
                elseif (SubCmd == "nored") then
                        AdWSSettings.AClass = 0;
                        AdWSSettings.ACReduction = 0; 
                        AdWSSettings.ACPreset= "No Reduction";
                        ChatFrame1:AddMessage("AC Reduction set to: No Reduction Preset");      
                else
                        ChatFrame1:AddMessage( "[Help] Damage Reductions");
                        ChatFrame1:AddMessage( "Usage: /adws ac mager14 - Mage Rank 14" );
                        ChatFrame1:AddMessage( "Usage: /adws ac mager14b - Mage Rank 14 Buffed" );
                        ChatFrame1:AddMessage( "Usage: /adws ac shamt1 - Shaman Tier1 Set + Shield" );
                        ChatFrame1:AddMessage( "Usage: /adws ac tankt2prot - Tank Tier II Prot" );
                        ChatFrame1:AddMessage( "Usage: /adws ac warrfury - Warrior Fury (BWL level)" );
                        
                        ChatFrame1:AddMessage( "Usage: /adws ac roguet2 - Rogue Tier2 Set" );
                        ChatFrame1:AddMessage( "Usage: /adws ac huntert2 - Hunter Tier2 Set" );
                        ChatFrame1:AddMessage( "Usage: /adws ac maget2 - Mage Tier2 Set" );
                        ChatFrame1:AddMessage( "Usage: /adws ac priestt2 - Priest Tier2 Set" );
                        ChatFrame1:AddMessage( "Usage: /adws ac priestt2b - Priest Tier2 Set Buffed" );
                        
                end; 
        else
                AdWS_DisplayHelp();
        end;
end;

--============================================================================================ 

function AdWS_DisplaySettings()
        ChatFrame1:AddMessage( "..:: Advanced Weapon Stats Settings ::..",1.0, 0.85, 0.33);
        ChatFrame1:AddMessage( "=== General Settings ===",1.0, 0.85, 0.33);
        
        ChatFrame1:AddMessage( "Damage bonus multiplier = "..AdWSSettings.DamageBonus,0.66,1,0.96 );
        ChatFrame1:AddMessage( "Custom Attack Power bonus = "..AdWSSettings.cAP,0.66,1,0.96 );
        ChatFrame1:AddMessage( "Armor Class reduction = "..AdWSSettings.ACPreset,0.66,1,0.96 );
        
        ChatFrame1:AddMessage( "=== Warrior Settings ===",1.0, 0.85, 0.33);
        
        if (AdWSWarrior.Build=="arms") then
                ChatFrame1:AddMessage( "Show Mortal Strike stats",0.66,1,0.96 );
        else
                ChatFrame1:AddMessage( "Show Bloodthirst stats",0.66,1,0.96 );
        end
        
        ChatFrame1:AddMessage( "Warrior Sword Spec proc display = "..AdWSWarrior.Sspec,0.66,1,0.96 );
        ChatFrame1:AddMessage( "Warrior Critical Strike bonus = "..AdWSWarrior.Crit,0.66,1,0.96 );
        ChatFrame1:AddMessage( "Warrior 2Hand Spec bonus = "..AdWSWarrior.THSpec,0.66,1,0.96 );
        ChatFrame1:AddMessage( "Warrior OffHand Weapon handicap = "..AdWSWarrior.OffHand,0.66,1,0.96 );
        
        ChatFrame1:AddMessage( "=== Rogue Settings ===",1.0, 0.85, 0.33);
        ChatFrame1:AddMessage( "Rogue Lethality bonus = "..AdWSRogue.Lethality,0.66,1,0.96 );
        ChatFrame1:AddMessage( "Rogue Opportunity bonus = "..AdWSRogue.Opportunity,0.66,1,0.96 );
        ChatFrame1:AddMessage( "Rogue Aggression bonus = "..AdWSRogue.Aggression,0.66,1,0.96 );
        ChatFrame1:AddMessage( "Rogue Eviscerate bonus = "..AdWSRogue.ImpEvi,0.66,1,0.96 );
        ChatFrame1:AddMessage( "Rogue OffHand Weapon handicap = "..AdWSRogue.OffHand,0.66,1,0.96 ); 
end

--============================================================================================ 

function AdWS_DisplayHelp()
        ChatFrame1:AddMessage( "..:: Advanced Weapon Stats - Help ::..",1.0, 0.85, 0.33);
        ChatFrame1:AddMessage( "=== General ===",1.0, 0.85, 0.33);

        ChatFrame1:AddMessage( "Show current settings",0.66,1,0.96 );
        ChatFrame1:AddMessage( "Usage: /adws settings" );
        ChatFrame1:AddMessage( "Set Custom Damage bonus ie. 1.25 = Enrage",0.66,1,0.96 );
        ChatFrame1:AddMessage( "Usage: /adws damagebonus" );
        ChatFrame1:AddMessage( "Set Custom Attack Power bonus",0.66,1,0.96 );
        ChatFrame1:AddMessage( "Usage: /adws cap" );
        ChatFrame1:AddMessage( "Set AC Reduction Level",0.66,1,0.96);
        ChatFrame1:AddMessage( "Usage: /adws ac" );

        ChatFrame1:AddMessage( "=== Warrior ===",1.0, 0.85, 0.33);

        ChatFrame1:AddMessage( "Show Mortal Strike stats",0.66,1,0.96 );
        ChatFrame1:AddMessage( "Usage: /adws warriorbuild" );
        ChatFrame1:AddMessage( "Set Warrior Critical Strike bonus",0.66,1,0.96 );
        ChatFrame1:AddMessage( "Usage: /adws warriorcrit" );
        ChatFrame1:AddMessage( "Set Warrior 2Hand Spec bonus",0.66,1,0.96 );
        ChatFrame1:AddMessage( "Usage: /adws 2hspec" );
        ChatFrame1:AddMessage( "Set Warrior OffHand handicap",0.66,1,0.96 );
        ChatFrame1:AddMessage( "Usage: /adws warrioroffhand" );
        ChatFrame1:AddMessage( "Set Warrior Sword Spec proc display",0.66,1,0.96 );
        ChatFrame1:AddMessage( "Usage: /adws swordspec" );

        ChatFrame1:AddMessage( "=== Rogue ===",1.0, 0.85, 0.33);

        ChatFrame1:AddMessage( "Set Rogue Lethality bonus",0.66,1,0.96 );
        ChatFrame1:AddMessage( "Usage: /adws lethality" )
        ChatFrame1:AddMessage( "Set Rogue Opportunity bonus",0.66,1,0.96 );
        ChatFrame1:AddMessage( "Usage: /adws opportunity" )
        ChatFrame1:AddMessage( "Set Rogue Aggression bonus",0.66,1,0.96 );
        ChatFrame1:AddMessage( "Usage: /adws aggression" )
        ChatFrame1:AddMessage( "Set Rogue Eviscerate bonus",0.66,1,0.96 );
        ChatFrame1:AddMessage( "Usage: /adws impevi" )
        ChatFrame1:AddMessage( "Set Rogue OffHand handicap",0.66,1,0.96 );
        ChatFrame1:AddMessage( "Usage: /adws rogueoffhand" )
end

--===================================================================================================================--

function AuctionFrame_LoadUI ()
        AdWS_Hook.AuctionFrame_LoadUI ();

        if (not AdWS_Hook.AuctionFrameItem_OnEnter) then
                AdWS_Hook.AuctionFrameItem_OnEnter = AuctionFrameItem_OnEnter;
                AuctionFrameItem_OnEnter = function (type, index)
                        AdWS_Hook.AuctionFrameItem_OnEnter (type, index);
                        AdWS_CheckTooltipInfo (GameTooltip);
                end;
        end
end

function SetItemRef (link, text, button)
        AdWS_Hook.SetItemRef (link, text, button);
        AdWS_CheckTooltipInfo (ItemRefTooltip);
end

function ContainerFrameItemButton_OnEnter ()
        AdWS_Hook.ContainerFrameItemButton_OnEnter ();
        AdWS_CheckTooltipInfo (GameTooltip);
end

function ContainerFrame_Update (frame)
        AdWS_Hook.ContainerFrame_Update (frame);
        AdWS_CheckTooltipInfo (GameTooltip);
end

function GameTooltip.SetInventoryItem (unit, slotID, name)
        local hasItem, hasCooldown, repairCost = AdWS_Hook.SetInventoryItem (unit, slotID, name);
        if (hasItem) and (name ~=17) then
                AdWS_CheckTooltipInfo (GameTooltip);
        end
        
        return hasItem, hasCooldown, repairCost;
end

function GameTooltip.SetLootItem (this, slot)
        AdWS_Hook.SetLootItem (this, slot);
        AdWS_CheckTooltipInfo (GameTooltip);
end

function GameTooltip.SetMerchantItem (unit, slotID)
        AdWS_Hook.SetMerchantItem (unit, slotID);
        AdWS_CheckTooltipInfo (GameTooltip);
end

function ShoppingTooltip1.SetMerchantCompareItem (this, id, num)
        local retval = AdWS_Hook.SetMerchantCompareItem1 (this, id, num);
        AdWS_CheckTooltipInfo (ShoppingTooltip1);
        return retval;
end

function ShoppingTooltip1.SetAuctionCompareItem (this, _type, index, num)
        local retval = AdWS_Hook.SetAuctionCompareItem1 (this, _type, index, num);
        AdWS_CheckTooltipInfo (ShoppingTooltip1);
        return retval;
end

function ShoppingTooltip2.SetMerchantCompareItem (this, id, num)
        local retval = AdWS_Hook.SetMerchantCompareItem2 (this, id, num);
        AdWS_CheckTooltipInfo (ShoppingTooltip2);
        return retval;
end

function ShoppingTooltip2.SetAuctionCompareItem (this, _type, index, num)
        local retval = AdWS_Hook.SetAuctionCompareItem2 (this, _type, index, num);
        AdWS_CheckTooltipInfo (ShoppingTooltip2);
        return retval;
end

--=====================================================================================

function AdWS_RemoveEquipEffect (AdWS, slotname)
        AdWSTooltip:Hide();
        AdWSTooltip:SetOwner(AdWSTooltip, "ANCHOR_NONE");
        
        if (AdWSTooltip:SetInventoryItem ("player", GetInventorySlotInfo(slotname)) == false) then return; end

        local index = 2;
        local ltext = getglobal(AdWSTooltip:GetName().."TextLeft"..index):GetText();
        while (ltext ~= nil) do
                if (string.find (ltext, AdWS_Locale.ID_Strength)) then
                        local v;
                        _, _, v = string.find (ltext, "%+(%d+)");
                        if (v) then
                                if (AdWS.playerclass == AdWS_Locale.ID_Warrior) then
                                        AdWS.power = AdWS.power - (v * 2);
                                elseif (AdWS.playerclass == AdWS_Locale.ID_Shaman) then
                                        AdWS.power = AdWS.power - (v * 2);
                                elseif (AdWS.playerclass == AdWS_Locale.ID_Paladin) then
                                        AdWS.power = AdWS.power - (v * 2);              
                                elseif (AdWS.playerclass == AdWS_Locale.ID_Rogue) then
                                        AdWS.power = AdWS.power - v;
                                        
                                end
                        else
                                _, _, v = string.find (ltext, "%-(%d+)");
                                if (v) then
                                        if (AdWS.playerclass == AdWS_Locale.ID_Warrior) then
                                                AdWS.power = AdWS.power + (v * 2);
                                        elseif (AdWS.playerclass == AdWS_Locale.ID_Shaman) then
                                                AdWS.power = AdWS.power + (v * 2);
                                        elseif (AdWS.playerclass == AdWS_Locale.ID_Paladin) then
                                                AdWS.power = AdWS.power + (v * 2);              
                                        elseif (AdWS.playerclass == AdWS_Locale.ID_Rogue) then
                                                AdWS.power = AdWS.power + v;
                                        end
                                end
                        end
                elseif (string.find (ltext, AdWS_Locale.ID_Agility)) then
                        local v;
                        _, _, v = string.find (ltext, "%+(%d+)");
                        if (v) then
                                if (AdWS.playerclass == AdWS_Locale.ID_Rogue) then
                                        AdWS.power = AdWS.power - v;
                                end
                        else
                                _, _, v = string.find (ltext, "%-(%d+)");
                                if (v) then
                                        if (AdWS.playerclass == AdWS_Locale.ID_Rogue) then
                                                AdWS.power = AdWS.power + v;
                                        end
                                end
                        end
                elseif (string.find (ltext, AdWS_Locale.ID_Rockbiter)) then 
                        local v;
                        _, _, v = string.find (ltext, "(%d+)");
                        if (v=="1") then AdWS.power = AdWS.power - 44;  
                        elseif (v=="2") then AdWS.power = AdWS.power - 72;      
                        elseif (v=="3") then AdWS.power = AdWS.power - 80;      
                        end
                        
                elseif (string.find (ltext, AdWS_Locale.ID_Attack_Power)) then
                        local v;
                        _, _, v = string.find (ltext, "+(%d+)");
                        AdWS.power = AdWS.power - v;
                                        
                end

                index = index + 1;
                ltext = getglobal(AdWSTooltip:GetName().."TextLeft"..index):GetText();
        end
        
        AdWSTooltip:ClearLines();
end

--===========================================================================

function AdWS_CheckTooltipInfo(frame)
        if (frame:IsVisible()) then
                local pclass = UnitClass("player");
                local field = getglobal(frame:GetName().."TextLeft1");
        
                if (pclass ~= AdWS_Locale.ID_Warrior and pclass ~= AdWS_Locale.ID_Rogue and pclass ~= AdWS_Locale.ID_Shaman and pclass ~= AdWS_Locale.ID_Paladin) then
                -- NOTE:  trying to stay out of this if you don't need it...
                        return; 
                end             
                 
                if (field and field:IsVisible()) then
                -- NOTE:  trying to fix the quick roll in/out problem...            
                        local fname = frame:GetName();
        
                        if(field:GetText()) then
                                local index = 2;
                                local ltext = getglobal(fname.."TextLeft"..index):GetText();
                                while(ltext) do
                                        if (string.find (ltext, AdWS_Locale.ID_Output_Normal)) then return; end
                                        index = index + 1;
                                        local glob = getglobal(fname.."TextLeft"..index);
                                        if (glob) then
                                                ltext = glob:GetText();
                                        else
                                                -- NOTE:  getting here means there's a problem...
                                                return;
                                        end
                                end     
                        return AdWS_AddTooltipInfo(frame);
                        end
                end
        end
end

--=====================================================================

function AdWS_AddTooltipInfo(frame)
        local AdWS = {
                power = 0, weapondamage =0, sharpened = 0, rockbiter=0, windfury=0,
        };

        AdWS.playerclass = UnitClass("player");
        if (AdWS.playerclass ~= AdWS_Locale.ID_Warrior and AdWS.playerclass ~= AdWS_Locale.ID_Rogue and AdWS.playerclass ~= AdWS_Locale.ID_Shaman and AdWS.playerclass ~= AdWS_Locale.ID_Paladin) then return; end

        local index = 2;
        local ltext = getglobal(frame:GetName().."TextLeft"..index):GetText();
        local rtext = getglobal(frame:GetName().."TextRight"..index):GetText();
        while (ltext ~= nil) do
                if (not AdWS.weapon and ltext == AdWS_Locale.ID_Two_Hand) then
                        if (AdWS.playerclass == AdWS_Locale.ID_Rogue) then return; end

                        AdWS.weapon = ltext;
                        if (rtext == AdWS_Locale.ID_Mace or rtext == AdWS_Locale.ID_Axe or rtext == AdWS_Locale.ID_Polearm or rtext == AdWS_Locale.ID_Staff) then
                        elseif (rtext == AdWS_Locale.ID_Sword) then
                                AdWS.issword = true;     
                        else
                                return;
                        end
                elseif (not AdWS.weapon and (ltext == AdWS_Locale.ID_Main_Hand or ltext == AdWS_Locale.ID_One_Hand)) then
                        AdWS.weapon = ltext;
                        if (rtext == AdWS_Locale.ID_Mace or rtext == AdWS_Locale.ID_Axe or rtext == AdWS_Locale.ID_Fist_Weapon) then
                        elseif (rtext == AdWS_Locale.ID_Dagger) then
                                AdWS.isdagger = true;
                        elseif (rtext == AdWS_Locale.ID_Sword) then
                                AdWS.issword = true;    
                        else
                                return;
                        end
                elseif (not AdWS.damage and string.find (ltext, AdWS_Locale.ID_Damage)) then
                        
                        local low, high
                        _, _, low, high = string.find (ltext, "(%d+) %- (%d+)");
                        AdWS.damage = (low + high) / 2;
                        _, _, AdWS.speed = string.find(rtext, "(%d+%.%d+)");
                        if (not AdWS.speed) then
                                AdWS.speed = string.find(rtext, "(%d+%,%d+)");
                                AdWS.speed = string.gsub (AdWS.speed, "%,", "%.");
                        end

                        --=================== additional spell damage (like nature damage , thunderfury) 
                elseif (string.find (ltext, AdWS_Locale.ID_Nature_Damage)) then 
                        local slow, shigh
                        _, _, slow, shigh = string.find (ltext, "(%d+) %- (%d+) Nature Damage");
                        AdWS.damage = AdWS.damage + ((slow + shigh) / 2)
                        
                elseif (string.find (ltext, AdWS_Locale.ID_Frost_Damage)) then  
                        local slow, shigh
                        _, _, slow, shigh = string.find (ltext, "(%d+) %- (%d+) Frost Damage");
                        AdWS.damage = AdWS.damage + ((slow + shigh) / 2)                        
                        
                elseif (string.find (ltext, AdWS_Locale.ID_Strength)) then
                        local v;
                        _, _, v = string.find (ltext, "%+(%d+)");
                        if (v) then
                                if (AdWS.playerclass == AdWS_Locale.ID_Warrior) then
                                        AdWS.power = AdWS.power + v * 2;
                                elseif (AdWS.playerclass == AdWS_Locale.ID_Shaman) then
                                        AdWS.power = AdWS.power + v * 2;
                                elseif (AdWS.playerclass == AdWS_Locale.ID_Paladin) then
                                        AdWS.power = AdWS.power + v * 2;                                                                                
                                elseif (AdWS.playerclass == AdWS_Locale.ID_Rogue) then
                                        AdWS.power = AdWS.power + v;
                                end
                        else
                                _, _, v = string.find (ltext, "%-(%d+)");
                                if (v) then
                                        if (AdWS.playerclass == AdWS_Locale.ID_Warrior) then
                                                AdWS.power = AdWS.power - v * 2;
                                        elseif (AdWS.playerclass == AdWS_Locale.ID_Shaman) then
                                                AdWS.power = AdWS.power - v * 2;
                                        elseif (AdWS.playerclass == AdWS_Locale.ID_Paladin) then
                                                AdWS.power = AdWS.power - v * 2;                                                                                
                                        elseif (AdWS.playerclass == AdWS_Locale.ID_Rogue) then
                                                AdWS.power = AdWS.power - v;
                                        end
                                end
                        end

                elseif (string.find (ltext, AdWS_Locale.ID_Weapon_Damage)) then
                        local v;
                        _, _, v = string.find (ltext, "%+(%d+)");
                        if (v) then
                                AdWS.weapondamage = v;
                        end

                elseif (string.find (ltext, AdWS_Locale.ID_Sharpened)) then
                        local v;
                        _, _, v = string.find (ltext, "%+(%d+)");
                        if (v) then
                                AdWS.sharpened = v;
                        end                                             
                elseif (string.find (ltext, AdWS_Locale.ID_Agility)) then
                        local v;
                        _, _, v = string.find (ltext, "%+(%d+)");
                        if (v) then
                                if (AdWS.playerclass == AdWS_Locale.ID_Rogue) then
                                        AdWS.power = AdWS.power + v;
                                end
                        else
                                _, _, v = string.find (ltext, "%-(%d+)");
                                if (v) then
                                        if (AdWS.playerclass == AdWS_Locale.ID_Rogue) then
                                                AdWS.power = AdWS.power - v;
                                        end
                                end
                        end
                elseif (string.find (ltext, AdWS_Locale.ID_Rockbiter)) then 
                        AdWS.isrockbiter = true;
                        local v;
                        _, _, v = string.find (ltext, "(%d+)");
                        if (v=="1") then AdWS.power = AdWS.power + 44;  
                        elseif (v=="2") then AdWS.power = AdWS.power + 72;      
                        elseif (v=="3") then AdWS.power = AdWS.power + 80;      
                        end
                        
                        
                elseif (string.find (ltext, AdWS_Locale.ID_Attack_Power)) then
                        local v;
                        _, _, v = string.find (ltext, "+(%d+)");
                        AdWS.power = AdWS.power + v;
                        
                        
                end

                index = index + 1;
                ltext = getglobal(frame:GetName().."TextLeft"..index):GetText();
                rtext = getglobal(frame:GetName().."TextRight"..index):GetText();
        end

        if (AdWS.weapon) then
                local base, posBuff, negBuff = UnitAttackPower("player");
                AdWS.power = AdWS.power + base + posBuff + negBuff + AdWSSettings.cAP;
                
                AdWS_RemoveEquipEffect (AdWS, "MainHandSlot");
                
                if (AdWS.weapon == AdWS_Locale.ID_Two_Hand) then AdWS_RemoveEquipEffect (AdWS, "SecondaryHandSlot"); end
                
                --=========================================
                --============== FORMULAS
                --=========================================
                
                local normal = (AdWS.damage + AdWS.weapondamage + AdWS.sharpened) + (AdWS.power * AdWS.speed / 14);
                local instant;
                
                local rockbiter = (AdWS.damage + AdWS.weapondamage + AdWS.sharpened) + ((AdWS.power + 504) * AdWS.speed / 14);
                local windfury = (AdWS.damage + AdWS.weapondamage + AdWS.sharpened) + ((AdWS.power + 665) * AdWS.speed / 14);
                
                local flurryspeed = AdWS.speed/1.3;
                local flurrydps = normal / flurryspeed;
                
                local roguespeed = AdWS.speed/1.56;
                local roguedps = normal / roguespeed;
                
                local bloodthirst = AdWS.power * 0.45;
                local dps = normal / AdWS.speed;
                local ten_dmg = 10/AdWS.speed*14;
                local ten_ap = 10/14*AdWS.speed;

                if (AdWS.issword) then spss = 100 * AdWS.speed / 5; else spss = 0; end;
                
                if (AdWS.isdagger) then 
                        instant = (AdWS.damage + AdWS.weapondamage + AdWS.sharpened) + (AdWS.power * 1.7 / 14);
                elseif (AdWS.weapon == AdWS_Locale.ID_Two_Hand) then 
                        instant = (AdWS.damage + AdWS.weapondamage + AdWS.sharpened) + (AdWS.power * 3.3 / 14);
                else 
                        instant = (AdWS.damage + AdWS.weapondamage + AdWS.sharpened) + (AdWS.power * 2.4 / 14); 
                end

                local backstab = (AdWS.damage + AdWS.weapondamage + AdWS.sharpened) * 1.5 + (AdWS.power * 1.7 / 14) + 225;
                local ambush = (AdWS.damage + AdWS.weapondamage + AdWS.sharpened) * 2.5 + (AdWS.power * 1.7 / 14) + 290;
                local ghostlystrike = (AdWS.damage + AdWS.weapondamage + AdWS.sharpened) * 1.25 + (AdWS.power * 1.7 / 14);
                local riposte = (AdWS.damage + AdWS.weapondamage + AdWS.sharpened) * 1.5 + (AdWS.power * 1.7 / 14);
                
                frame:AddLine(" " , 1,1,1);
                
                --=================== GENERAL STATS (dps, 10ap, 10dmg, sword spec)
                
                if (AdWS.playerclass == AdWS_Locale.ID_Warrior) or (AdWS.playerclass == AdWS_Locale.ID_Shaman) then
                        frame:AddDoubleLine (AdWS_Locale.ID_Output_DPS..string.format ("%.1f (%.1f)",dps, flurrydps), AdWS_Locale.ID_Output_FlurrySpeed..string.format ("%.2f", flurryspeed), 1.0, 0.85, 0.33, 1.0, 1.0, 1.0);
                elseif (AdWS.playerclass == AdWS_Locale.ID_Rogue) and (AdWS.weapon ~= AdWS_Locale.ID_Two_Hand) then
                        frame:AddDoubleLine (AdWS_Locale.ID_Output_DPS..string.format ("%.1f (%.1f)",dps, roguedps), AdWS_Locale.ID_Output_RogueSpeed..string.format ("%.2f", roguespeed), 1.0, 0.85, 0.33, 1.0, 1.0, 1.0);
                end;
                
                frame:AddDoubleLine (AdWS_Locale.ID_Output_TenDmg..string.format ("%.0f AP", ten_dmg), AdWS_Locale.ID_Output_TenAp..string.format ("%.2f DMG", ten_ap), 1.0, 1.0, 1.0, 1.0, 1.0, 1.0);
                
                if (AdWS.issword) and (AdWS.playerclass == AdWS_Locale.ID_Warrior) and (AdWSWarrior.Sspec == "on") then 
                        frame:AddLine("Sword Spec - per "..spss.." secs" , 1,1,1); 
                end;
                
                frame:AddLine(" " , 1,1,1);
                
                --=========================================
                --============== MAIN HAND STATS
                --=========================================
                
                frame:AddDoubleLine("Main hand stats", "Hit / Crit / x"..AdWSSettings.DamageBonus, 0.46,0.91,0.99,0.46,0.91,0.99);
                
                AdWSWarrior.THSpec = tonumber (AdWSWarrior.THSpec);
                
                --======= WARRIOR
                
                if (AdWS.playerclass == AdWS_Locale.ID_Warrior) then 
                        if (AdWS.weapon == AdWS_Locale.ID_Two_Hand) and (AdWSWarrior.THSpec > 1) then
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_Normal, string.format ("%.0f / %.0f / %.0f", normal*AdWSWarrior.THSpec*(1-AdWSSettings.ACReduction), normal * AdWSWarrior.THSpec * 2*(1-AdWSSettings.ACReduction), normal * AdWSWarrior.THSpec * 2 * AdWSSettings.DamageBonus*(1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                        else
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_Normal, string.format ("%.0f / %.0f / %.0f", normal*(1-AdWSSettings.ACReduction), normal * 2*(1-AdWSSettings.ACReduction), normal * 2 * AdWSSettings.DamageBonus*(1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                        end     
                
                --======= OTHER CLASSES
                        
                else
                        frame:AddDoubleLine (AdWS_Locale.ID_Output_Normal, string.format ("%.0f / %.0f / %.0f", normal*(1-AdWSSettings.ACReduction), normal * 2*(1-AdWSSettings.ACReduction), normal * 2 * AdWSSettings.DamageBonus*(1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                end
                
                --=========================================
                --============== WARRIOR PART DISPLAY
                --=========================================
                
                if (AdWS.playerclass == AdWS_Locale.ID_Warrior) then

                        if (AdWSWarrior.Build=="fury") then
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_Bloodthirst, string.format ("%.0f / %.0f / %.0f", bloodthirst*(1-AdWSSettings.ACReduction), bloodthirst * AdWSWarrior.Crit*(1-AdWSSettings.ACReduction), bloodthirst * AdWSWarrior.Crit * AdWSSettings.DamageBonus*(1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                        end
                
                --======= 2H SPEC
                        
                        if (AdWS.weapon == AdWS_Locale.ID_Two_Hand) and (AdWSWarrior.THSpec > 1) then
                                
                                if (AdWSWarrior.Build=="arms") then
                                        frame:AddDoubleLine (AdWS_Locale.ID_Output_MortalStrike, string.format ("%.0f / %.0f / %.0f", (instant + 160) * AdWSWarrior.THSpec * (1-AdWSSettings.ACReduction), (instant + 160) * AdWSWarrior.THSpec * AdWSWarrior.Crit * (1-AdWSSettings.ACReduction), (instant + 160) * AdWSWarrior.THSpec * AdWSWarrior.Crit * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                                end
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_Whirlwind, string.format ("%.0f / %.0f / %.0f", instant * AdWSWarrior.THSpec * (1-AdWSSettings.ACReduction), instant * AdWSWarrior.THSpec * AdWSWarrior.Crit * (1-AdWSSettings.ACReduction), instant * AdWSWarrior.THSpec * AdWSWarrior.Crit * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);           
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_Overpower, string.format ("%.0f / %.0f / %.0f", (instant + 35) * AdWSWarrior.THSpec * (1-AdWSSettings.ACReduction), (instant + 35) * AdWSWarrior.THSpec * AdWSWarrior.Crit * (1-AdWSSettings.ACReduction), (instant + 35) * AdWSWarrior.THSpec * AdWSWarrior.Crit * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_HeroicStrike, string.format ("%.0f / %.0f / %.0f", (normal + 157) * AdWSWarrior.THSpec * (1-AdWSSettings.ACReduction), (normal + 157) * AdWSWarrior.THSpec * AdWSWarrior.Crit * (1-AdWSSettings.ACReduction), (normal + 157) * AdWSWarrior.THSpec * AdWSWarrior.Crit * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                                                
                --======= NO 2H SPEC
                        else
                                if (AdWSWarrior.Build=="arms") then
                                        frame:AddDoubleLine (AdWS_Locale.ID_Output_MortalStrike, string.format ("%.0f / %.0f / %.0f", (instant + 160) * (1-AdWSSettings.ACReduction), (instant + 160) * AdWSWarrior.Crit * (1-AdWSSettings.ACReduction), (instant + 160) * AdWSWarrior.Crit * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                                end
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_Whirlwind, string.format ("%.0f / %.0f / %.0f", instant * (1-AdWSSettings.ACReduction), instant * AdWSWarrior.Crit * (1-AdWSSettings.ACReduction), instant * AdWSWarrior.Crit * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);          
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_Overpower, string.format ("%.0f / %.0f / %.0f", (instant + 35) * (1-AdWSSettings.ACReduction), (instant + 35) * AdWSWarrior.Crit * (1-AdWSSettings.ACReduction), (instant + 35) * AdWSWarrior.Crit * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_HeroicStrike, string.format ("%.0f / %.0f / %.0f", (normal + 157) * (1-AdWSSettings.ACReduction), (normal + 157) * AdWSWarrior.Crit * (1-AdWSSettings.ACReduction), (normal + 157) * AdWSWarrior.Crit * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);                  
                        end
                        
                        if (AdWS.weapon == AdWS_Locale.ID_One_Hand) then
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_OffHand, string.format ("%.0f / %.0f / %.0f", normal * (1-AdWSSettings.ACReduction)*AdWSWarrior.OffHand, normal * 2 * (1-AdWSSettings.ACReduction)*AdWSWarrior.OffHand, normal * 2 * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)*AdWSWarrior.OffHand), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                        elseif (AdWS.weapon == AdWS_Locale.ID_Off_Hand) then
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_OffHand, string.format ("%.0f / %.0f / %.0f", normal * (1-AdWSSettings.ACReduction)*AdWSWarrior.OffHand, normal * 2 * (1-AdWSSettings.ACReduction)*AdWSWarrior.OffHand, normal * 2 * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)*AdWSWarrior.OffHand), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                        end

                end
                
                --=========================================
                --============== ROGUE PART DISPLAY
                --=========================================
                
                if (AdWS.playerclass == AdWS_Locale.ID_Rogue) then
                
                        if (AdWS.weapon == AdWS_Locale.ID_One_Hand) or (AdWS.weapon == AdWS_Locale.ID_Main_Hand) then 
                
                                if (AdWS.isdagger) then
                                        frame:AddDoubleLine (AdWS_Locale.ID_Output_Ambush, string.format ("%.0f / %.0f / %.0f", ambush * AdWSRogue.Opportunity * (1-AdWSSettings.ACReduction), ambush * AdWSRogue.Opportunity * 2 * (1-AdWSSettings.ACReduction), ambush * AdWSRogue.Opportunity * 2 * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                                        frame:AddDoubleLine (AdWS_Locale.ID_Output_Backstab, string.format ("%.0f / %.0f / %.0f", backstab * AdWSRogue.Opportunity * (1-AdWSSettings.ACReduction), backstab * AdWSRogue.Opportunity * AdWSRogue.Lethality * (1-AdWSSettings.ACReduction), backstab * AdWSRogue.Opportunity * AdWSRogue.Lethality * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                                end
                
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_SinisterStrike, string.format ("%.0f / %.0f / %.0f", (instant + 68) * AdWSRogue.Aggression * (1-AdWSSettings.ACReduction), (instant + 68) * AdWSRogue.Aggression * AdWSRogue.Lethality * (1-AdWSSettings.ACReduction), (instant + 68) * AdWSRogue.Aggression * AdWSRogue.Lethality * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_Eviscerate, string.format ("%.0f / %.0f / %.0f", 936 * AdWSRogue.ImpEvi * AdWSRogue.Aggression * (1-AdWSSettings.ACReduction), 936 * AdWSRogue.ImpEvi * AdWSRogue.Aggression * 2 * (1-AdWSSettings.ACReduction), 936 * AdWSRogue.ImpEvi * AdWSRogue.Aggression * 2 * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_Ghostly_Strike, string.format ("%.0f / %.0f / %.0f", ghostlystrike * (1-AdWSSettings.ACReduction), ghostlystrike * AdWSRogue.Lethality * (1-AdWSSettings.ACReduction), ghostlystrike * AdWSRogue.Lethality * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_Riposte, string.format ("%.0f / %.0f / %.0f", riposte * (1-AdWSSettings.ACReduction), riposte * 2 * (1-AdWSSettings.ACReduction), riposte * 2 * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_Hemorrhage, string.format ("%.0f / %.0f / %.0f", normal * (1-AdWSSettings.ACReduction), normal * AdWSRogue.Lethality * (1-AdWSSettings.ACReduction), normal * AdWSRogue.Lethality * AdWSSettings.DamageBonus * (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                        end
                        
                        if (AdWS.weapon == AdWS_Locale.ID_One_Hand) then
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_OffHand, string.format ("%.0f / %.0f / %.0f", normal* (1-AdWSSettings.ACReduction)*AdWSRogue.OffHand, normal * 2* (1-AdWSSettings.ACReduction)*AdWSRogue.OffHand, normal * 2 * AdWSSettings.DamageBonus* (1-AdWSSettings.ACReduction)*AdWSRogue.OffHand), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                        elseif (AdWS.weapon == AdWS_Locale.ID_Off_Hand) then
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_OffHand, string.format ("%.0f / %.0f / %.0f", normal* (1-AdWSSettings.ACReduction)*AdWSRogue.OffHand, normal * 2* (1-AdWSSettings.ACReduction)*AdWSRogue.OffHand, normal * 2 * AdWSSettings.DamageBonus* (1-AdWSSettings.ACReduction)*AdWSRogue.OffHand), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);
                        end

                end

                --=========================================
                --============== SHAMAN PART DISPLAY
                --=========================================

                if (AdWS.playerclass == AdWS_Locale.ID_Shaman) then
                        if (AdWS.iswindfury~=true) and (AdWS.isrockbiter~=true) then
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_Windfury.."(4) x2:", string.format ("%.0f / %.0f / %.0f", windfury* (1-AdWSSettings.ACReduction) *2, windfury * 2* (1-AdWSSettings.ACReduction) *2, windfury * 2 * AdWSSettings.DamageBonus* (1-AdWSSettings.ACReduction) *2), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);             
                                frame:AddDoubleLine (AdWS_Locale.ID_Output_Rockbiter.."(7):", string.format ("%.0f / %.0f / %.0f", rockbiter* (1-AdWSSettings.ACReduction), rockbiter * 2* (1-AdWSSettings.ACReduction), rockbiter * 2 * AdWSSettings.DamageBonus* (1-AdWSSettings.ACReduction)), 0.99, 0.99, 0.65, 1.0, 1.0, 1.0);             
                        end
                end
                                 
                --=========================================
                --============== FOOTER - REDUCTION
                --=========================================
 
                frame:AddLine(" ", 1,1,1);
                frame:AddDoubleLine("Dmg Red:", AdWSSettings.ACPreset.." ("..AdWSSettings.AClass.." AC)", 1,1,1,0.66,1,0.96);
                        
                frame:Show();
        end
end

Generated by GNU Enscript 1.6.5.90.