lotrointerface.com
Search Downloads

LoTROInterface SVN KragenBars

[/] [branches/] [3.21/] [KragenBars/] [HunterBars.lua] - Rev 72

Compare with Previous | Blame | View Log

import "Turbine.UI";
import "Turbine.UI.Lotro";
import "Turbine.Gameplay";
import "KragenPlugs.Utils";
import "KragenPlugs.KragenBars";

HunterBars =  class( KragenPlugs.KragenBars.ClassBar );

function HunterBars:Constructor()

        KragenPlugs.KragenBars.ClassBar.Constructor( self );

    -- SET AND UPDATE DEFAULT SETTINGS
    if (not settings.class) then
        settings.class = vars.playerclass;
        self:DefaultSettings();
        self:ShowSetup();
    else
        self.settings = settings.classinfo;
        if (settings.vers ~= vars.vers) then
                self:UpdateSettings();
        end
    end
    
        -- CLASS SPECIFIC VARIABLES
    
        
        -- DEFINE THE EFFECT LIST BASED ON CLIENT LANGUAGE
        self.DefineEffectList = function()
                self.effectlist = { };
                -- ENGLISH CLIENT
                if (settings.language == 1) then
                        self.effectlist["ParryResponse"]        = "Parry Response";
                        self.effectlist["FindthePath"]          = "Find the Path";
                        self.effectlist["SwiftStroke"]          = "Swift Stroke";
                        self.effectlist["SimpleFireoil"]        = "Simple Fire-oil";
                        self.effectlist["Fireoil"]                      = "Fire-oil";
                        self.effectlist["RefinedFireoil"]       = "Refined Fire-oil";
                        self.effectlist["PureFireoil"]          = "Pure Fire-oil";
                        self.effectlist["SimpleLightoil"]       = "Simple Light-oil";
                        self.effectlist["Lightoil"]                     = "Light-oil";
                        self.effectlist["RefinedLightoil"]      = "Refined Light-oil";
                        self.effectlist["PureLightoil"]         = "Pure Light-oil";
                        self.effectlist["BowChant"]                     = "Bow Chant";
                elseif (settings.language == 2) then
                        self.effectlist["ParryResponse"]        = "Parry Response";
                        self.effectlist["FindthePath"]          = "Find the Path";
                        self.effectlist["SwiftStroke"]          = "Swift Stroke";
                        self.effectlist["SimpleFireoil"]        = "Simple Fire-oil";
                        self.effectlist["Fireoil"]                      = "Fire-oil";
                        self.effectlist["RefinedFireoil"]       = "Refined Fire-oil";
                        self.effectlist["PureFireoil"]          = "Pure Fire-oil";
                        self.effectlist["SimpleLightoil"]       = "Simple Light-oil";
                        self.effectlist["Lightoil"]                     = "Light-oil";
                        self.effectlist["RefinedLightoil"]      = "Refined Light-oil";
                        self.effectlist["PureLightoil"]         = "Pure Light-oil";
                        self.effectlist["BowChant"]                     = "Bow Chant";
                        Turbine.Shell.WriteLine("Some features may not function with the French Client.  If you would like to help with French effect names goto http://www.lotrointerface.com/downloads/info384-KragenBars.html");
                elseif (settings.language == 3) then
                        self.effectlist["ParryResponse"]        = "Parry Response";
                        self.effectlist["FindthePath"]          = "Find the Path";
                        self.effectlist["SwiftStroke"]          = "Swift Stroke";
                        self.effectlist["SimpleFireoil"]        = "Simple Fire-oil";
                        self.effectlist["Fireoil"]                      = "Fire-oil";
                        self.effectlist["RefinedFireoil"]       = "Refined Fire-oil";
                        self.effectlist["PureFireoil"]          = "Pure Fire-oil";
                        self.effectlist["SimpleLightoil"]       = "Simple Light-oil";
                        self.effectlist["Lightoil"]                     = "Light-oil";
                        self.effectlist["RefinedLightoil"]      = "Refined Light-oil";
                        self.effectlist["PureLightoil"]         = "Pure Light-oil";
                        self.effectlist["BowChant"]                     = "Bow Chant";
                        Turbine.Shell.WriteLine("Some features may not function with the German Client.  If you would like to help with German effect names goto http://www.lotrointerface.com/downloads/info384-KragenBars.html");
                end
        end
        
    -- BUILD WINDOWS BARS SKILLS AND MULTIS --
    
    -- ALL X, Y, WIDTH, HEIGHT values are in quickslot (ie: 1 width = the width of one quickslot: 35 px);
    -- Build Windows        SkillWindow( name:String, defaultx:int, defaulty:int, width:int, height:int, settings:table);
    self.windows["Parry"]               = SkillWindow("Parry",          1, 1, 1, 1,     self.settings["Parry"]          );
    self.windows["Melee"]               = SkillWindow("Melee",          2, 1, 5, 1,     self.settings["Melee"]          );
    self.windows["BowInduct"]   = SkillWindow("BowInduct",      1, 2, 5, 1,     self.settings["BowInduct"]  );
    self.windows["BowFocus"]    = SkillWindow("BowFocus",       1, 3, 5, 1,     self.settings["BowFocus"]       );
    self.windows["Dethreat"]    = SkillWindow("Dethreat",       7, 2, 1, 1,     self.settings["Dethreat"]       );
        self.windows["Utility"]         = SkillWindow("Utility",        1, 4, 3, 1,     self.settings["Utility"]        );
        self.windows["Tracking"]        = SkillWindow("Tracking",       4, 4, 1, 1,     self.settings["Tracking"]       );
    self.windows["Fear"]                = SkillWindow("Fear",           5, 2, 2, 1,     self.settings["Fear"]           );
    self.windows["Stance"]              = SkillWindow("Stance",         7, 4, 2, 1,     self.settings["Stance"]         );
    self.windows["Focus"]               = SkillWindow("Focus",          1, 5, 4, 1,     self.settings["Focus"]          );
    self.windows["Restoration"] = SkillWindow("Restoration",5, 5, 3, 1,         self.settings["Restoration"]);
    self.windows["Trapping"]    = SkillWindow("Trapping",       5, 4, 2, 1,     self.settings["Trapping"]       );
    self.windows["Oils"]                = SkillWindow("Oils",           9, 4, 3, 1,     self.settings["Oils"]           );
    self.windows["Ports"]               = SkillWindow("Ports",          8, 5, 1, 1,     self.settings["Ports"]          );
    
    -- Build Bars           SkillBar( parent:SkillWindow, x:int, y:int, width:int, height:int, active:Boolean, exclusive:boolean);
    self.bars["Parry"]                  = SkillBar(self.windows["Parry"],               1, 1, 1, 1, true, false);
    self.bars["Melee"]                  = SkillBar(self.windows["Melee"],               1, 1, 5, 1, true, false);
    self.bars["BowInduct"]              = SkillBar(self.windows["BowInduct"],   1, 1, 5, 1, true, false);
    self.bars["BowFocus"]               = SkillBar(self.windows["BowFocus"],    1, 1, 5, 1, true, false);
    self.bars["Dethreat"]               = SkillBar(self.windows["Dethreat"],    1, 1, 1, 1, true, false);
    self.bars["Utility"]                = SkillBar(self.windows["Utility"],     1, 1, 3, 1, true, false);
    self.bars["Tracking"]               = SkillBar(self.windows["Tracking"],    1, 1, 1, 1, true, false);
    self.bars["Fear"]                   = SkillBar(self.windows["Fear"],                1, 1, 2, 1, true, false);
    self.bars["Stance"]                 = SkillBar(self.windows["Stance"],              1, 1, 2, 1, true, false);
    self.bars["Focus"]          = SkillBar(self.windows["Focus"],               1, 1, 4, 1, true, false);
    self.bars["Restoration"]    = SkillBar(self.windows["Restoration"], 1, 1, 3, 1, true, false);
    self.bars["Trapping"]               = SkillBar(self.windows["Trapping"],    1, 1, 2, 1, true, false);
    self.bars["Oils"]                   = SkillBar(self.windows["Oils"],                1, 1, 3, 1, true, false);
    self.bars["Ports"]                  = SkillBar(self.windows["Ports"],               1, 1, 1, 1, true, false);
    
        -- Build Skills         SkillSlot( parent:SkillBar, x:int, y:int, active:Boolean, level:int, hexcode:String );
    self.skills["AgileRejoinder"]                       = SkillSlot(self.bars["Parry"],         1, 1, false, 24, "0x70003F3C");
        
    self.skills["SwiftStroke"]                          = SkillSlot(self.bars["Melee"],         1, 1, true, 1, "0x70003F38");
    self.skills["Blindside"]                            = SkillSlot(self.bars["Melee"],         4, 1, true, 1, "0x70003F3B");
    self.skills["ScourgingBlow"]                        = SkillSlot(self.bars["Melee"],         2, 1, true, 4, "0x70003F3A");
    self.skills["LowCut"]                                       = SkillSlot(self.bars["Melee"],         3, 1, true, 16, "0x70003F39");
    self.skills["DazingBlow"]                           = SkillSlot(self.bars["Melee"],         5, 1, true, { 48, 52 }, { "0x70021D0E", "0x70021D18" });
    
    self.skills["QuickShot"]                            = SkillSlot(self.bars["BowInduct"], 1, 1, true, 1, "0x70003F32");
    self.skills["BarbedArrow"]                          = SkillSlot(self.bars["BowInduct"], 2, 1, true, 4, "0x70003F33");
    self.skills["SwiftBow"]                                     = SkillSlot(self.bars["BowInduct"], 3, 1, true, { 10, 54 }, { "0x70003F34", "0x700153E2" });
    self.skills["HeartSeeker"]                          = SkillSlot(self.bars["BowInduct"], 4, 1, true, 50, "0x7000A2D3");
    self.skills["DistractingShot"]                      = SkillSlot(self.bars["BowInduct"], 5, 1, true, 58, "0x7000F9AB");
   
    self.skills["PenetratingShot"]                      = SkillSlot(self.bars["BowFocus"],      1, 1, true, 2, "0x70003F35");
    self.skills["RainofArrows"]                         = SkillSlot(self.bars["BowFocus"],      2, 1, true, 20, "0x70003F36");
    self.skills["MercifulShot"]                         = SkillSlot(self.bars["BowFocus"],      3, 1, true, { 30, 52 }, { "0x70003F37", "0x700153E5" });
    self.skills["BloodArrow"]                           = SkillSlot(self.bars["BowFocus"],      4, 1, true, 44, "0x70021D0D");
    self.skills["RainofThorns"]                         = SkillSlot(self.bars["BowFocus"],      5, 1, self.settings["Features"].thorns, 41, "0x700010F4");
    
    self.skills["BeneathNotice"]                        = SkillSlot(self.bars["Dethreat"],      1, 1, true, { 38, 64 }, { "0x700030EC", "0x70020DF8" });
        
    self.skills["DesperateFlight"]                      = SkillSlot(self.bars["Utility"],       1, 1, true, 20, "0x70003F40");
    self.skills["BrightCampfire"]                       = SkillSlot(self.bars["Utility"],       2, 1, true, 22, "0x70003F3F");
    self.skills["Camouflage"]                           = SkillSlot(self.bars["Utility"],       3, 1, true, 40, "0x70003F48");
    
    self.skills["CryofthePredator"]                     = SkillSlot(self.bars["Fear"],          1, 1, true, 12, "0x70003F49");
    self.skills["BardsArrow"]                           = SkillSlot(self.bars["Fear"],          2, 1, self.settings["Features"].bards, 41, "0x700010D3");

    self.skills["FindthePath"]                          = SkillSlot(self.bars["Stance"],        2, 1, true, 14, "0x70003F3D");
        
    self.skills["Focus"]                                        = SkillSlot(self.bars["Focus"],         1, 1, true, 8, "0x70003F4C");
    self.skills["IntentConcentration"]          = SkillSlot(self.bars["Focus"],         2, 1, true, 20, "0x700030DE");
    self.skills["NeedfulHaste"]                         = SkillSlot(self.bars["Focus"],         3, 1, true, 34, "0x700030F3");
    self.skills["BurnHot"]                                      = SkillSlot(self.bars["Focus"],         4, 1, true, 60, "0x7000F835");
    
    self.skills["PurgePoison"]                          = SkillSlot(self.bars["Restoration"],1, 1, true, 16, "0x70003F3E");
    self.skills["StrengthoftheEarth"]           = SkillSlot(self.bars["Restoration"],2, 1, true, 42, "0x7000A2D4");
    self.skills["PressOnward"]                          = SkillSlot(self.bars["Restoration"],3, 1, self.settings["Features"].pressonward, 41, "0x700010E5");
    
        -- Build Quickslots         ItemSlot( parent:SkillBar, x:int, y:int, active:Boolean, type:int, data:String );
        self.skills["FireOil"]                                  = ItemSlot(self.bars["Oils"],           1, 1, self.settings["Quickslots"].fireoil["active"], self.settings["Quickslots"].fireoil["type"], self.settings["Quickslots"].fireoil["data"]);
        self.skills["LightOil"]                                 = ItemSlot(self.bars["Oils"],           2, 1, self.settings["Quickslots"].lightoil["active"], self.settings["Quickslots"].lightoil["type"], self.settings["Quickslots"].lightoil["data"]);
        self.skills["BowChant"]                                 = ItemSlot(self.bars["Oils"],           3, 1, self.settings["Quickslots"].bowchant["active"], self.settings["Quickslots"].bowchant["type"], self.settings["Quickslots"].bowchant["data"]);
        
    self.multi["TrapsSlot"]                     = ItemMultiSlot(self.bars["Trapping"], 2, 1, true);
        self.multi["TrapsSlot"]:AddShortCut("Trap1",            self.settings["Quickslots"].trap1["active"], self.settings["Quickslots"].trap1["type"], self.settings["Quickslots"].trap1["data"]);
        self.multi["TrapsSlot"]:AddShortCut("Trap2",            self.settings["Quickslots"].trap2["active"], self.settings["Quickslots"].trap2["type"], self.settings["Quickslots"].trap2["data"]);
        self.multi["TrapsSlot"]:AddShortCut("Trap3",            self.settings["Quickslots"].trap3["active"], self.settings["Quickslots"].trap3["type"], self.settings["Quickslots"].trap3["data"]);
        
    -- Build MultiSlots         SkillMultiSlot( parent:SkillBar, x:int, y:int, active:Boolean );
    --                                                  multi:AddShortCut(name:String, level:int, hex:String);
        self.multi["TrackingSlot"]              = SkillMultiSlot(self.bars["Tracking"], 1, 1, true);
        self.multi["TrackingSlot"]:AddShortCut("PassageofNature",       12, "0x70003F45");
    self.multi["TrackingSlot"]:AddShortCut("PassageofFoes",             22, "0x70003F46");
    self.multi["TrackingSlot"]:AddShortCut("PassageofShadow",   32, "0x70003F47");
    self.multi["TrackingSlot"]:LevelCheck();

        self.multi["StanceSlot"]                        = SkillMultiSlot(self.bars["Stance"], 1, 1, true);
        self.multi["StanceSlot"]:AddShortCut("StrengthStance",          6, "0x70003F4E");
    self.multi["StanceSlot"]:AddShortCut("PrecisionStance",             18, "0x70003F4D");
    self.multi["StanceSlot"]:AddShortCut("EnduranceStance",             28, "0x70003F4F");
    self.multi["StanceSlot"]:AddShortCut("FleetStance",                 56, "0x70010065");
    self.multi["StanceSlot"]:LevelCheck();
        self.multi["StanceSlot"]:SetIndex(self.settings["Features"].primarystance);

        self.multi["TrappingSlot"]              = SkillMultiSlot(self.bars["Trapping"], 1, 1, true);
        self.multi["TrappingSlot"]:AddShortCut("SetTrap",                       6, "0x700030BB");
    self.multi["TrappingSlot"]:AddShortCut("SetSnare",                  36, "0x7000A6B1");
    self.multi["TrappingSlot"]:LevelCheck();

        self.multi["PortsSlot"]                 = SkillMultiSlot(self.bars["Ports"], 1, 1, true);
    self.multi["PortsSlot"]:AddShortCut("GuidetoMichelDelving", 22, "0x7000A2C3");
    self.multi["PortsSlot"]:AddShortCut("GuidetoThorinsHall",   24, "0x70003F41");
        self.multi["PortsSlot"]:AddShortCut("ReturntoCamp",                     26, "0x7000A2C1");
    self.multi["PortsSlot"]:AddShortCut("GuidetoOstGuruth",             26, "0x7000A2C2");
    self.multi["PortsSlot"]:AddShortCut("GuidetoBree",                  32, "0x70003F42");
    self.multi["PortsSlot"]:AddShortCut("GuidetoEsteldin",              34, "0x70003F43");
    self.multi["PortsSlot"]:AddShortCut("GuidetoEvendim",               36, "0x7000A2C4");
    self.multi["PortsSlot"]:AddShortCut("GuidetoWestAngmar",    44, "0x7000A2C5");
    self.multi["PortsSlot"]:AddShortCut("GuidetoRivendell",             46, "0x70003F44");
    self.multi["PortsSlot"]:AddShortCut("GuidetoSuriKyla",              48, "0x70017C82");
    self.multi["PortsSlot"]:AddShortCut("GuidetoEastAngmar",    48, "0x7000A2C6");
    self.multi["PortsSlot"]:AddShortCut("GuidetoEchadDunann",   50, "0x70017C81");
    self.multi["PortsSlot"]:AddShortCut("GuidetoTwentyFirstHall",56, "0x70017C7A");
    self.multi["PortsSlot"]:AddShortCut("GuidetoMirkEaves",             62, "0x7001F459");
    self.multi["PortsSlot"]:AddShortCut("GuidetoHarndirion",    62, "0x700235EF");
    self.multi["PortsSlot"]:LevelCheck();
        

        -- SET COMBAT STATES
        self.skills["StrengthoftheEarth"]:SetCombat(true, false);
        self.skills["PressOnward"]:SetCombat(self.settings["Features"].combatpressonward, self.settings["Features"].pressonward);
        self.skills["Focus"]:SetCombat(false, true);
        self.skills["Camouflage"]:SetCombat(false, true);
        self.skills["BrightCampfire"]:SetCombat(false, true);
        self.multi["TrackingSlot"]:SetCombat(false, true);
        self.multi["TrappingSlot"]:SetCombat(self.settings["Features"].combattraps, true);

        -- CLASS SPECIFIC SETUP/DEFAULT CODE
        
        
    -- EVENTS
        
        -- Stance Change Event
        AddCallback(vars.classattr, "StanceChanged", function(sender, args)
                KragenBars:StanceChange(vars.classattr:GetStance());
        end);
        
        -- Focus Change Event
        AddCallback(vars.classattr, "FocusChanged", function(sender, args)
                KragenBars:FocusChange(vars.classattr:GetFocus());
        end);
        
        
         -- INITIALIZE BARS
        self:InitBars();
        self:CombatChange(vars.player:IsInCombat());
        self:StanceChange(vars.classattr:GetStance());
        self:FocusChange(vars.classattr:GetFocus());
        
end


-- ADD EFFECT EVENT
function HunterBars:AddEffect( effectIndex )
        local effect = vars.player:GetEffects():Get( effectIndex );

        if (effect:GetName() == self.effectlist["ParryResponse"]) then
                self.skills["AgileRejoinder"]:SetState( true , true, effect:GetID());
                
        elseif (effect:GetName() == self.effectlist["FindthePath"]) then
                if (self.settings["Features"].findpathactive == 1) then
                        self.skills["FindthePath"]:SetState(true, true, effect:GetID());
                elseif (self.settings["Features"].findpathactive == 2) then
                        self.skills["FindthePath"]:SetState(true, true, effect:GetID());
                        self.skills["FindthePath"]:SetHover(true);
                else
                        self.skills["FindthePath"]:SetState(true, false, effect:GetID());
                end

        elseif (string.find(effect:GetName(), self.effectlist["BowChant"]) ~= nil) then
                self.skills["BowChant"]:SetState(true, false, effect:GetID());
                self.skills["BowChant"]:SetHover(true);
                self.skills["BowChant"]:StartTimer(effect:GetDuration() * .85, true);           
                
        elseif (effect:GetName() == self.effectlist["SwiftStroke"] and self.settings["Features"].dimswiftstroke) then
                self.skills["SwiftStroke"]:SetState(true, true, effect:GetID());
                self.skills["SwiftStroke"]:SetHover(true);

        elseif (effect:GetName() == self.effectlist["SimpleFireoil"] or  effect:GetName() == self.effectlist["Fireoil"] or effect:GetName() == self.effectlist["RefinedFireoil"] or effect:GetName() == self.effectlist["PureFireoil"]) then
                self.skills["FireOil"]:SetState(true, false, effect:GetID());
                self.skills["FireOil"]:SetHover(true);
                self.skills["FireOil"]:StartTimer(effect:GetDuration() * .85, true);
                self.skills["LightOil"]:SetHover(true);

        elseif (effect:GetName() == self.effectlist["SimpleLightoil"] or  effect:GetName() == self.effectlist["Lightoil"] or effect:GetName() == self.effectlist["RefinedLightoil"] or effect:GetName() == self.effectlist["PureLightoil"]) then
                self.skills["LightOil"]:SetState(true, false, effect:GetID());
                self.skills["LightOil"]:SetHover(true);
                self.skills["LightOil"]:StartTimer(effect:GetDuration() * .85, true);
                self.skills["FireOil"]:SetHover(true);

                
    end
end


-- REMOVE EFFECT EVENT
function HunterBars:RemoveEffect( effect )

        -- SetState can be called on both bars and skills
        -- it will store the incoming effect id and flag the state as well as trigger visibility
        -- SetState(effectstate:Boolean,  visibility:Boolean,  effectid:int);

        if (effect:GetName() == self.effectlist["ParryResponse"]) then
        self.skills["AgileRejoinder"]:SetState( false , false, effect:GetID());
                
        elseif (effect:GetName() == self.effectlist["FindthePath"]) then
                self.skills["FindthePath"]:SetState (false, true, effect:GetID());
                self.skills["FindthePath"]:SetHover(self.skills["FindthePath"].state);

        elseif (string.find(effect:GetName(), self.effectlist["BowChant"]) ~= nil) then
                self.skills["BowChant"]:SetState(false, true, effect:GetID());
                self.skills["BowChant"]:SetHover(false);
                
        elseif (effect:GetName() == self.effectlist["SwiftStroke"]) then
                self.skills["SwiftStroke"]:SetState(false, true, effect:GetID());
                self.skills["SwiftStroke"]:SetHover(false);
                
        elseif (effect:GetName() == self.effectlist["SimpleFireoil"] or  effect:GetName() == self.effectlist["Fireoil"] or effect:GetName() == self.effectlist["RefinedFireoil"] or effect:GetName() == self.effectlist["PureFireoil"]) then
                self.skills["FireOil"]:SetState(false, true, effect:GetID());
                self.skills["LightOil"]:SetHover(false);
                self.skills["FireOil"]:SetHover(false);

        elseif (effect:GetName() == self.effectlist["SimpleLightoil"] or  effect:GetName() == self.effectlist["Lightoil"] or effect:GetName() == self.effectlist["RefinedLightoil"] or effect:GetName() == self.effectlist["PureLightoil"]) then
                self.skills["LightOil"]:SetState(false, true, effect:GetID());
                self.skills["FireOil"]:SetHover(false);
                self.skills["LightOil"]:SetHover(false);

        end
end


function HunterBars:FocusChange(focus)

        if (focus == 0) then
                self.skills["PenetratingShot"]:SetActive(false);
                self.skills["BloodArrow"]:SetActive(false);
                self.skills["RainofArrows"]:SetActive(false);
                self.skills["NeedfulHaste"]:SetActive(false);
                self.skills["MercifulShot"]:SetActive(false);
                self.skills["RainofThorns"]:SetActive(false);
        elseif (focus > 0 and focus < 2) then
                self.skills["PenetratingShot"]:SetActive(false);
                self.skills["BloodArrow"]:SetActive(false);
                self.skills["RainofArrows"]:SetActive(false);
                self.skills["NeedfulHaste"]:SetActive(false);
                self.skills["MercifulShot"]:SetActive(false);
                self.skills["RainofThorns"]:SetActive(false);
        elseif (focus >= 2 and focus < 3) then
                self.skills["PenetratingShot"]:SetActive(self.settings["Features"].strongdraw);
                self.skills["BloodArrow"]:SetActive(self.settings["Features"].strongdraw);
                self.skills["RainofArrows"]:SetActive(self.settings["Features"].arrowstorm);
                self.skills["NeedfulHaste"]:SetActive(false);
                self.skills["MercifulShot"]:SetActive(false);
                self.skills["RainofThorns"]:SetActive(false);
        elseif (focus >= 3 and focus < 6) then
                self.skills["PenetratingShot"]:SetActive(true);
                self.skills["BloodArrow"]:SetActive(true);
                self.skills["RainofArrows"]:SetActive(true);
                self.skills["NeedfulHaste"]:SetActive(true);
                self.skills["MercifulShot"]:SetActive(false);
                self.skills["RainofThorns"]:SetActive(false);
        elseif (focus >= 6) then
                self.skills["PenetratingShot"]:SetActive(true);
                self.skills["BloodArrow"]:SetActive(true);
                self.skills["RainofArrows"]:SetActive(true);
                self.skills["NeedfulHaste"]:SetActive(true);
                self.skills["MercifulShot"]:SetActive(true);
                self.skills["RainofThorns"]:SetActive(self.settings["Features"].thorns);

        end
end


function HunterBars:StanceChange(stance)
        local stancenew = 0;
        
        -- Hack because Turbine put the stances in the wrong order
        if (stance == 1) then
                stancenew = 2;
        elseif (stance == 2) then
                stancenew = 1;
        else
                stancenew = stance;
        end
        
        if (stancenew ~= self.settings["Features"].primarystance) then
                self.multi["StanceSlot"]:SetIndex(self.settings["Features"].primarystance);
        else
                self.multi["StanceSlot"]:SetIndex(self.settings["Features"].secondarystance);
        end
        
        if (stance == 0) then
                self.multi["StanceSlot"]:SetHover( false );
                self.multi["StanceSlot"]:SetActive( true );
        else
                self.multi["StanceSlot"]:SetActive( self.settings["Features"].stanceactive ~= 3);
        self.multi["StanceSlot"]:SetHover( self.settings["Features"].stanceactive == 2 );
        end

        
end

-- DEFAULT SETTINGS
function HunterBars:DefaultSettings()
        self.settings = { };

        local windowlist = {"Parry", "Melee", "BowInduct", "BowFocus", "Dethreat", "Utility", "Tracking", "Fear", "Stance", "Focus", "Restoration", "Trapping", "Oils", "Ports"};
        for k,v in pairs(windowlist) do
                self.settings[v] = { active = true, x = 0, y = 0, rotate = 0 };
        end

        self.settings["Features"] = { };
        self.settings["Features"].dimswiftstroke = true;
        self.settings["Features"].thorns = false;
        self.settings["Features"].bards = false;
        self.settings["Features"].pressonward = false;
        self.settings["Features"].combattraps = false;
        self.settings["Features"].strongdraw = false;
        self.settings["Features"].arrowstorm = false;
        self.settings["Features"].combatpressonward = false;
        self.settings["Features"].primarystance = 1;
        self.settings["Features"].secondarystance = 2;
        self.settings["Features"].findpathactive = 2;
        self.settings["Features"].stanceactive = 2;
        
        self.settings["Quickslots"] = { };
        self.settings["Quickslots"].fireoil = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
        self.settings["Quickslots"].lightoil = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
        self.settings["Quickslots"].bowchant = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
        self.settings["Quickslots"].trap1 = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
        self.settings["Quickslots"].trap2 = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
        self.settings["Quickslots"].trap3 = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };

end


-- UPDATE SETTINGS
function HunterBars:UpdateSettings()

        if (settings.vers < 3.10) then
                self.settings["Features"].stanceactive = 2;
                self.settings["Ports"] = { active = true, x = 0, y = 0, rotate = 0 };
                self.settings["Quickslots"].bowchant = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
                self.settings["Quickslots"].trap1 = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
                self.settings["Quickslots"].trap2 = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
                self.settings["Quickslots"].trap3 = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
        elseif (settings.vers < 3.20) then
                self.settings["Quickslots"].bowchant = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
                self.settings["Quickslots"].trap1 = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
                self.settings["Quickslots"].trap2 = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
                self.settings["Quickslots"].trap3 = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
        
                
        end

        settings.vers = vars.vers;

end


-- DISPLAY SETUP WINDOW AND SET ALL CHECKBOXES COMBOBOXES SLIDERS AND QUICKSLOTS
function HunterBars:ShowSetup()
        self.setup:SetVisible(true);

        self.setupbb.opacityslider:SetValue(settings.opacity * 100);
        self.setupbb.checkboxlock:SetChecked(settings.lockslots);
        self.setupbb.checkboxgrid:SetChecked(settings.snaptogrid);
        self.setupbb.combolangbox:SetSelection(settings.language);

        self.setupbb.checkboxbb1:SetText("Parry Response");
        self.setupbb.checkboxbb1:SetChecked (self.settings["Parry"].active);
        self.setupbb.checkboxbb1:SetVisible(true);
        self.setupbb.checkboxbb2:SetText("Melee");
        self.setupbb.checkboxbb2:SetChecked (self.settings["Melee"].active);
        self.setupbb.checkboxbb2:SetVisible(true);
        self.setupbb.checkboxbb3:SetText("Bow: Induction");
        self.setupbb.checkboxbb3:SetChecked (self.settings["BowInduct"].active);
        self.setupbb.checkboxbb3:SetVisible(true);
        self.setupbb.checkboxbb4:SetText("Bow: Focus");
        self.setupbb.checkboxbb4:SetChecked (self.settings["BowFocus"].active);
        self.setupbb.checkboxbb4:SetVisible(true);
        self.setupbb.checkboxbb5:SetText("Dethreat");
        self.setupbb.checkboxbb5:SetChecked (self.settings["Dethreat"].active);
        self.setupbb.checkboxbb5:SetVisible(true);
        self.setupbb.checkboxbb6:SetText("Utility");
        self.setupbb.checkboxbb6:SetChecked (self.settings["Utility"].active);
        self.setupbb.checkboxbb6:SetVisible(true);
        self.setupbb.checkboxbb7:SetText("Tracking");
        self.setupbb.checkboxbb7:SetChecked (self.settings["Tracking"].active);
        self.setupbb.checkboxbb7:SetVisible(true);
        self.setupbb.checkboxbb8:SetText("Fear");
        self.setupbb.checkboxbb8:SetChecked (self.settings["Fear"].active);
        self.setupbb.checkboxbb8:SetVisible(true);
        self.setupbb.checkboxbb9:SetText("Stance");
        self.setupbb.checkboxbb9:SetChecked (self.settings["Stance"].active);
        self.setupbb.checkboxbb9:SetVisible(true);
        self.setupbb.checkboxbb10:SetText("Focus");
        self.setupbb.checkboxbb10:SetChecked (self.settings["Focus"].active);
        self.setupbb.checkboxbb10:SetVisible(true);
        self.setupbb.checkboxbb11:SetText("Restoration");
        self.setupbb.checkboxbb11:SetChecked (self.settings["Restoration"].active);
        self.setupbb.checkboxbb11:SetVisible(true);
        self.setupbb.checkboxbb12:SetText("Trapping");
        self.setupbb.checkboxbb12:SetChecked (self.settings["Trapping"].active);
        self.setupbb.checkboxbb12:SetVisible(true);
        self.setupbb.checkboxbb13:SetText("Oils");
        self.setupbb.checkboxbb13:SetChecked (self.settings["Oils"].active);
        self.setupbb.checkboxbb13:SetVisible(true);
        self.setupbb.checkboxbb14:SetText("Ports");
        self.setupbb.checkboxbb14:SetChecked (self.settings["Ports"].active);
        self.setupbb.checkboxbb14:SetVisible(true);

        self.setupf.checkboxf1:SetText("Rain of Thorns");
        self.setupf.checkboxf1:SetChecked (self.settings["Features"].thorns);
        self.setupf.checkboxf1:SetVisible(true);
        self.setupf.checkboxf2:SetText("Bard's Arrow");
        self.setupf.checkboxf2:SetChecked (self.settings["Features"].bards);
        self.setupf.checkboxf2:SetVisible(true);
        self.setupf.checkboxf3:SetText("Press Onward");
        self.setupf.checkboxf3:SetChecked (self.settings["Features"].pressonward);
        self.setupf.checkboxf3:SetVisible(true);
        self.setupf.checkboxf4:SetText("Combat Traps");
        self.setupf.checkboxf4:SetChecked (self.settings["Features"].combattraps);
        self.setupf.checkboxf4:SetVisible(true);
        self.setupf.checkboxf5:SetText("Strong Draw");
        self.setupf.checkboxf5:SetChecked (self.settings["Features"].strongdraw);
        self.setupf.checkboxf5:SetVisible(true);
        self.setupf.checkboxf6:SetText("arrowstorm");
        self.setupf.checkboxf6:SetChecked (self.settings["Features"].arrowstorm);
        self.setupf.checkboxf6:SetVisible(true);
        self.setupf.checkboxf7:SetText("Combat Press Onward");
        self.setupf.checkboxf7:SetChecked (self.settings["Features"].combatpressonward);
        self.setupf.checkboxf7:SetVisible(true);
        
        self.setupf.checkboxf10:SetText("Dim Swift Stroke");
        self.setupf.checkboxf10:SetChecked (self.settings["Features"].dimswiftstroke);
        self.setupf.checkboxf10:SetVisible(true);

        self.setupf.combo1box.listBox:ClearItems();
        self.setupf.combo1Label:SetText("Primary Stance");
        self.setupf.combo1Label:SetVisible(true);
        local combolist = {"Strength", "Precision", "Endurance", "Fleet"}
        for k,v in pairs(combolist) do
                self.setupf.combo1box:AddItem(v, k);
        end
        self.setupf.combo1box:SetVisible(true);
        self.setupf.combo1box:SetSelection(self.settings["Features"].primarystance);
        
        self.setupf.combo2box.listBox:ClearItems();
        self.setupf.combo2Label:SetText("Secondary Stance");
        self.setupf.combo2Label:SetVisible(true);
        combolist = {"Strength", "Precision", "Endurance", "Fleet"}
        for k,v in pairs(combolist) do
            self.setupf.combo2box:AddItem(v, k);
        end
        self.setupf.combo2box:SetVisible(true);
        self.setupf.combo2box:SetSelection(self.settings["Features"].secondarystance);

        self.setupf.combo3box.listBox:ClearItems();
        self.setupf.combo3Label:SetText("Find Path Active");
        self.setupf.combo3Label:SetVisible(true);
        combolist = {"None", "Dim", "Hide"}
        for k,v in pairs(combolist) do
            self.setupf.combo3box:AddItem(v, k);
        end
        self.setupf.combo3box:SetVisible(true);
    self.setupf.combo3box:SetSelection(self.settings["Features"].findpathactive);

        self.setupf.combo4box.listBox:ClearItems();
        self.setupf.combo4Label:SetText("Stance Active");
        self.setupf.combo4Label:SetVisible(true);
        combolist = {"None", "Dim", "Hide"}
        for k,v in pairs(combolist) do
                self.setupf.combo4box:AddItem(v, k);
        end
        self.setupf.combo4box:SetVisible(true);
        self.setupf.combo4box:SetSelection(self.settings["Features"].stanceactive);

        pcall(function() self.setupqs.quickslot1:SetShortcut(Turbine.UI.Lotro.Shortcut( self.settings["Quickslots"].fireoil["type"], self.settings["Quickslots"].fireoil["data"] ) ); end);
        self.setupqs.quickslot1:SetVisible(true);
        self.setupqs.quickslot1cb:SetText("Fire Oil");
        self.setupqs.quickslot1cb:SetChecked(self.settings["Quickslots"].fireoil["active"]);
        self.setupqs.quickslot1cb:SetVisible(true);
        
        pcall(function() self.setupqs.quickslot2:SetShortcut(Turbine.UI.Lotro.Shortcut( self.settings["Quickslots"].lightoil["type"], self.settings["Quickslots"].lightoil["data"] ) ); end);
        self.setupqs.quickslot2:SetVisible(true);    
        self.setupqs.quickslot2cb:SetText("Light Oil");
        self.setupqs.quickslot2cb:SetChecked(self.settings["Quickslots"].lightoil["active"]);
        self.setupqs.quickslot2cb:SetVisible(true);
        
        pcall(function() self.setupqs.quickslot3:SetShortcut(Turbine.UI.Lotro.Shortcut( self.settings["Quickslots"].bowchant["type"], self.settings["Quickslots"].bowchant["data"] ) ); end);
        self.setupqs.quickslot3:SetVisible(true);
        self.setupqs.quickslot3cb:SetText("Bow Chant");
        self.setupqs.quickslot3cb:SetChecked(self.settings["Quickslots"].bowchant["active"]);
        self.setupqs.quickslot3cb:SetVisible(true);

    pcall(function() self.setupqs.quickslot4:SetShortcut(Turbine.UI.Lotro.Shortcut( self.settings["Quickslots"].trap1["type"], self.settings["Quickslots"].trap1["data"] ) ); end);
        self.setupqs.quickslot4:SetVisible(true);
        self.setupqs.quickslot4cb:SetText("Crafted Traps");
        self.setupqs.quickslot4cb:SetChecked(self.settings["Quickslots"].trap1["active"]);
        self.setupqs.quickslot4cb:SetVisible(true);
        
        pcall(function() self.setupqs.quickslot5:SetShortcut(Turbine.UI.Lotro.Shortcut( self.settings["Quickslots"].trap2["type"], self.settings["Quickslots"].trap2["data"] ) ); end);
        self.setupqs.quickslot5:SetVisible(true);
        self.setupqs.quickslot5cb:SetText("Crafted Traps");
        self.setupqs.quickslot5cb:SetChecked(self.settings["Quickslots"].trap2["active"]);
        self.setupqs.quickslot5cb:SetVisible(true);
        
        pcall(function() self.setupqs.quickslot6:SetShortcut(Turbine.UI.Lotro.Shortcut( self.settings["Quickslots"].trap3["type"], self.settings["Quickslots"].trap3["data"] ) ); end);
        self.setupqs.quickslot6:SetVisible(true);    
        self.setupqs.quickslot6cb:SetText("Crafted Traps");
        self.setupqs.quickslot6cb:SetChecked(self.settings["Quickslots"].trap3["active"]);
        self.setupqs.quickslot6cb:SetVisible(true);

        
end


-- SET ALL VARIABLES OFF OF SETUP WINDOW
function HunterBars:SetupClosing()
        self.settings["Parry"].active = self.setupbb.checkboxbb1:IsChecked();
    self.settings["Melee"].active = self.setupbb.checkboxbb2:IsChecked();
    self.settings["BowInduct"].active = self.setupbb.checkboxbb3:IsChecked();
    self.settings["BowFocus"].active = self.setupbb.checkboxbb4:IsChecked();
    self.settings["Dethreat"].active = self.setupbb.checkboxbb5:IsChecked();
    self.settings["Utility"].active = self.setupbb.checkboxbb6:IsChecked();
    self.settings["Tracking"].active = self.setupbb.checkboxbb7:IsChecked();
    self.settings["Fear"].active = self.setupbb.checkboxbb8:IsChecked();
    self.settings["Stance"].active = self.setupbb.checkboxbb9:IsChecked();
    self.settings["Focus"].active = self.setupbb.checkboxbb10:IsChecked();
    self.settings["Restoration"].active = self.setupbb.checkboxbb11:IsChecked();
    self.settings["Trapping"].active = self.setupbb.checkboxbb12:IsChecked();
    self.settings["Oils"].active = self.setupbb.checkboxbb13:IsChecked();
    self.settings["Ports"].active = self.setupbb.checkboxbb14:IsChecked();

        self.settings["Features"].thorns = self.setupf.checkboxf1:IsChecked();
    self.settings["Features"].bards = self.setupf.checkboxf2:IsChecked();
    self.settings["Features"].pressonward = self.setupf.checkboxf3:IsChecked();
    self.settings["Features"].combattraps = self.setupf.checkboxf4:IsChecked();
    self.settings["Features"].strongdraw = self.setupf.checkboxf5:IsChecked();
    self.settings["Features"].arrowstorm = self.setupf.checkboxf6:IsChecked();
    self.settings["Features"].combatpressonward = self.setupf.checkboxf7:IsChecked();

    self.settings["Features"].dimswiftstroke = self.setupf.checkboxf10:IsChecked();

    self.settings["Features"].primarystance = self.setupf.combo1box:GetSelection();
    self.settings["Features"].secondarystance = self.setupf.combo2box:GetSelection();
    self.settings["Features"].findpathactive = self.setupf.combo3box:GetSelection();
    self.settings["Features"].stanceactive = self.setupf.combo4box:GetSelection();
        
        if (self.setupqs.quickslot1:GetShortcut():GetData() ~= "" ) then
                self.settings["Quickslots"].fireoil = { active = self.setupqs.quickslot1cb:IsChecked(), type = self.setupqs.quickslot1:GetShortcut():GetType(), data = self.setupqs.quickslot1:GetShortcut():GetData() };
        else
                self.settings["Quickslots"].fireoil = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
        end
        if (self.setupqs.quickslot2:GetShortcut():GetData() ~= "" ) then
                self.settings["Quickslots"].lightoil = { active = self.setupqs.quickslot2cb:IsChecked(), type = self.setupqs.quickslot2:GetShortcut():GetType(), data = self.setupqs.quickslot2:GetShortcut():GetData() };
        else
                self.settings["Quickslots"].lightoil = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
        end
        if (self.setupqs.quickslot3:GetShortcut():GetData() ~= "" ) then
                self.settings["Quickslots"].bowchant = { active = self.setupqs.quickslot3cb:IsChecked(), type = self.setupqs.quickslot3:GetShortcut():GetType(), data = self.setupqs.quickslot3:GetShortcut():GetData() };
        else
                self.settings["Quickslots"].bowchant = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
        end
        if (self.setupqs.quickslot4:GetShortcut():GetData() ~= "" ) then
                self.settings["Quickslots"].trap1 = { active = self.setupqs.quickslot4cb:IsChecked(), type = self.setupqs.quickslot4:GetShortcut():GetType(), data = self.setupqs.quickslot4:GetShortcut():GetData() };
        else
                self.settings["Quickslots"].trap1 = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
        end
        if (self.setupqs.quickslot5:GetShortcut():GetData() ~= "" ) then
                self.settings["Quickslots"].trap2 = { active = self.setupqs.quickslot5cb:IsChecked(), type = self.setupqs.quickslot5:GetShortcut():GetType(), data = self.setupqs.quickslot5:GetShortcut():GetData() };
        else
                self.settings["Quickslots"].trap2 = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
        end
        if (self.setupqs.quickslot6:GetShortcut():GetData() ~= "" ) then
                self.settings["Quickslots"].trap3 = { active = self.setupqs.quickslot6cb:IsChecked(), type = self.setupqs.quickslot6:GetShortcut():GetType(), data = self.setupqs.quickslot6:GetShortcut():GetData() };
        else
                self.settings["Quickslots"].trap3 = { active = false, type = Turbine.UI.Lotro.ShortcutType.Undefined, data = "" };
        end

        settings.opacity = (self.setupbb.opacityslider:GetValue() / 100);
        settings.lockslots = self.setupbb.checkboxlock:IsChecked();
        settings.snaptogrid = self.setupbb.checkboxgrid:IsChecked();
    settings.language = self.setupbb.combolangbox:GetSelection();
        
        self:SaveSettings();
        self:Refresh();

end


-- REFRESH SKILLS AND BARS
function HunterBars:Refresh()
        
        -- GENERIC REFRESH (Required for all classes)
        self:RefreshBars();
        
        -- REDEFINE EFFECTLIST IN CASE OF LANGUAGE CHANGE
        self.DefineEffectList();

    -- CLASS SPECIFIC REFRESH
    -- Setup Features
        self.skills["RainofThorns"]:SetActive(self.settings["Features"].thorns);
        self.skills["BardsArrow"]:SetActive(self.settings["Features"].bards);
        self.skills["PressOnward"]:SetActive(self.settings["Features"].pressonward);

        self.skills["FireOil"]:SetQuickslot(self.settings["Quickslots"].fireoil["active"], self.settings["Quickslots"].fireoil["type"], self.settings["Quickslots"].fireoil["data"]);
        self.skills["LightOil"]:SetQuickslot(self.settings["Quickslots"].lightoil["active"], self.settings["Quickslots"].lightoil["type"], self.settings["Quickslots"].lightoil["data"]);
        self.skills["BowChant"]:SetQuickslot(self.settings["Quickslots"].bowchant["active"], self.settings["Quickslots"].bowchant["type"], self.settings["Quickslots"].bowchant["data"]);
        
    self.multi["TrapsSlot"]:Clear();
        self.multi["TrapsSlot"]:AddShortCut("Trap1",            self.settings["Quickslots"].trap1["active"], self.settings["Quickslots"].trap1["type"], self.settings["Quickslots"].trap1["data"]);
        self.multi["TrapsSlot"]:AddShortCut("Trap2",            self.settings["Quickslots"].trap2["active"], self.settings["Quickslots"].trap2["type"], self.settings["Quickslots"].trap2["data"]);
        self.multi["TrapsSlot"]:AddShortCut("Trap3",            self.settings["Quickslots"].trap3["active"], self.settings["Quickslots"].trap3["type"], self.settings["Quickslots"].trap3["data"]);
    self.multi["TrapsSlot"]:Refresh(true);
        
        self.multi["TrackingSlot"]:Clear();
        self.multi["TrackingSlot"]:AddShortCut("PassageofNature",       12, "0x70003F45");
    self.multi["TrackingSlot"]:AddShortCut("PassageofFoes",             22, "0x70003F46");
    self.multi["TrackingSlot"]:AddShortCut("PassageofShadow",   32, "0x70003F47");
    self.multi["TrackingSlot"]:LevelCheck();

        self.multi["StanceSlot"]:Clear();
        self.multi["StanceSlot"]:AddShortCut("StrengthStance",          6, "0x70003F4E");
    self.multi["StanceSlot"]:AddShortCut("PrecisionStance",             18, "0x70003F4D");
    self.multi["StanceSlot"]:AddShortCut("EnduranceStance",             28, "0x70003F4F");
    self.multi["StanceSlot"]:AddShortCut("FleetStance",                 56, "0x70010065");
    self.multi["StanceSlot"]:LevelCheck();

        self.multi["TrappingSlot"]:Clear();
        self.multi["TrappingSlot"]:AddShortCut("SetTrap",                       6, "0x700030BB");
    self.multi["TrappingSlot"]:AddShortCut("SetSnare",                  36, "0x7000A6B1");
    self.multi["TrappingSlot"]:LevelCheck();
        
        self.multi["PortsSlot"]:Clear();
    self.multi["PortsSlot"]:AddShortCut("GuidetoMichelDelving", 22, "0x7000A2C3");
    self.multi["PortsSlot"]:AddShortCut("GuidetoThorinsHall",   24, "0x70003F41");
        self.multi["PortsSlot"]:AddShortCut("ReturntoCamp",                     26, "0x7000A2C1");
    self.multi["PortsSlot"]:AddShortCut("GuidetoOstGuruth",             26, "0x7000A2C2");
    self.multi["PortsSlot"]:AddShortCut("GuidetoBree",                  32, "0x70003F42");
    self.multi["PortsSlot"]:AddShortCut("GuidetoEsteldin",              34, "0x70003F43");
    self.multi["PortsSlot"]:AddShortCut("GuidetoEvendim",               36, "0x7000A2C4");
    self.multi["PortsSlot"]:AddShortCut("GuidetoWestAngmar",    44, "0x7000A2C5");
    self.multi["PortsSlot"]:AddShortCut("GuidetoRivendell",             46, "0x70003F44");
    self.multi["PortsSlot"]:AddShortCut("GuidetoSuriKyla",              48, "0x70017C82");
    self.multi["PortsSlot"]:AddShortCut("GuidetoEastAngmar",    48, "0x7000A2C6");
    self.multi["PortsSlot"]:AddShortCut("GuidetoEchadDunann",   50, "0x70017C81");
    self.multi["PortsSlot"]:AddShortCut("GuidetoTwentyFirstHall",56, "0x70017C7A");
    self.multi["PortsSlot"]:AddShortCut("GuidetoMirkEaves",             62, "0x7001F459");
    self.multi["PortsSlot"]:AddShortCut("GuidetoHarndirion",    62, "0x700235EF");
    self.multi["PortsSlot"]:LevelCheck();
        
        if (self.settings["Features"].findpathactive == 1) then
                self.skills["FindthePath"]:SetActive(true);
                self.skills["FindthePath"]:SetHover(false);
        elseif (self.settings["Features"].findpathactive == 2) then
                self.skills["FindthePath"]:SetActive(true);
                self.skills["FindthePath"]:SetHover(self.skills["FindthePath"].state);
        else
                self.skills["FindthePath"]:SetActive(not self.skills["FindthePath"].state);
        end
        self.skills["PressOnward"]:SetCombat(self.settings["Features"].combatpressonward, self.settings["Features"].pressonward);
        self.multi["TrappingSlot"]:SetCombat(self.settings["Features"].combattraps, true);

    -- Refresh States
    self:CombatChange(vars.player:IsInCombat());
        self:StanceChange(vars.classattr:GetStance());
        self:FocusChange(vars.classattr:GetFocus());

        Turbine.Shell.WriteLine("KragenBars: Hunter Bars refresh completed successfully.");

end

Compare with Previous | Blame


All times are GMT -5. The time now is 08:29 AM.


Our Network
EQInterface | EQ2Interface | Minion | WoWInterface | ESOUI | LoTROInterface | MMOUI | Swtorui