lotrointerface.com
Search Downloads

LoTROInterface SVN KragenBars

[/] [trunk/] [KragenPlugs/] [KragenBars/] [CaptainBars.lua] - Rev 135

Compare with Previous | Blame | View Log

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

CaptainBars = class( KragenPlugs.KragenBars.ClassBar );

function CaptainBars:Constructor()

        KragenPlugs.KragenBars.ClassBar.Constructor( self );
    
        -- CLASS SPECIFIC VARIABLES
    self.fear = 0;
        
        self.effectlist = {};
    self.effectlist['EnemyDefeatResponse'] = Effect();
        self.effectlist['FellowDefeatResponse'] = Effect();
        self.effectlist['BattleReadied'] = Effect();
        self.effectlist['BattleHardened'] = Effect();
        self.effectlist['Motivated'] = Effect();
        self.effectlist['InDefenceOfMiddleEarth'] = Effect();
        self.effectlist['OnGuard'] = Effect();
        self.effectlist['RelentlessAttack'] = Effect();
        self.effectlist['Focus'] = Effect();
        self.effectlist['BannerOfWar'] = Effect();
        self.effectlist['ImprovedBannerOfWar'] = Effect();
        self.effectlist['BannerOfHope'] = Effect();
        self.effectlist['ImprovedBannerOfHope'] = Effect();
        self.effectlist['BannerOfVictory'] = Effect();
        self.effectlist['ImprovedBannerOfVictory'] = Effect();
                        
        -- DEFINE THE EFFECT LIST BASED ON CLIENT LANGUAGE
        self.DefineEffectList = function()
                
                -- ENGLISH CLIENT
                if (settings.language == 1) then
                        self.effectlist['EnemyDefeatResponse']          :SetName('Enemy Defeat Response');
                        self.effectlist['FellowDefeatResponse']         :SetName('Fellow Defeat Response');
                        self.effectlist['BattleReadied']                        :SetName('Battle-readied');
                        self.effectlist['BattleHardened']                       :SetName('Battle-hardened');
                        self.effectlist['Motivated']                            :SetName('Motivated');
                        self.effectlist['InDefenceOfMiddleEarth']       :SetName('In Defence of Middle-earth');
                        self.effectlist['OnGuard']                                      :SetName('On Guard');
                        self.effectlist['RelentlessAttack']                     :SetName('Relentless Attack');
                        self.effectlist['Focus']                                        :SetName('Focus');
                        self.effectlist['BannerOfWar']                          :SetName('Banner of War');      
                        self.effectlist['ImprovedBannerOfWar']          :SetName('Improved Banner of War');
                        self.effectlist['BannerOfHope']                         :SetName('Banner of Hope');
                        self.effectlist['ImprovedBannerOfHope']         :SetName('Improved Banner of Hope');
                        self.effectlist['BannerOfVictory']                      :SetName('Banner of Victory');
                        self.effectlist['ImprovedBannerOfVictory']      :SetName('Improved Banner of Victory');
                        
                -- FRENCH CLIENT
                elseif (settings.language == 2) then
                        self.effectlist['EnemyDefeatResponse']          :SetName('Ev�nement de d�faite (ennemi)');
                        self.effectlist['FellowDefeatResponse']         :SetName('Evénement de défaite (allié)');
                        self.effectlist['BattleReadied']                        :SetName('Battle-readied');
                        self.effectlist['BattleHardened']                       :SetName('Battle-hardened');
                        self.effectlist['Motivated']                            :SetName('Motivation');
                        self.effectlist['InDefenceOfMiddleEarth']       :SetName('Défense de la Terre du Milieu');
                        self.effectlist['OnGuard']                                      :SetName('En garde');
                        self.effectlist['RelentlessAttack']                     :SetName('Attaque retenue');
                        self.effectlist['Focus']                                        :SetName('Concentration');
                        self.effectlist['BannerOfWar']                          :SetName('Bannière de Guerre');        
                        self.effectlist['ImprovedBannerOfWar']          :SetName('Bannière de Guerre améliorée');
                        self.effectlist['BannerOfHope']                         :SetName("Bannière d'Espoir");
                        self.effectlist['ImprovedBannerOfHope']         :SetName("Bannière d'Espoir améliorée");
                        self.effectlist['BannerOfVictory']                      :SetName('Bannière de Victoire');
                        self.effectlist['ImprovedBannerOfVictory']      :SetName('Bannière de Victoire améliorée');
                        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");
                        
                -- GERMAN CLIENT
                elseif (settings.language == 3) then
                        self.effectlist['EnemyDefeatResponse']          :SetName('Erwiderung "Vernichtung des Gegners"');
                        self.effectlist['FellowDefeatResponse']         :SetName('Erwiderung "Vernichtung eines Gefährten"');
                        self.effectlist['BattleReadied']                        :SetName('Kampfbereit');
                        self.effectlist['BattleHardened']                       :SetName('Kampfgestählt');
                        self.effectlist['Motivated']                            :SetName('Motiviert');
                        self.effectlist['InDefenceOfMiddleEarth']       :SetName('Verteidigung von Mittelerde');
                        self.effectlist['OnGuard']                                      :SetName('In Bereitschaft');
                        self.effectlist['RelentlessAttack']                     :SetName('Gnadenloser Angriff');
                        self.effectlist['Focus']                                        :SetName('Fokus');
                        self.effectlist['BannerOfWar']                          :SetName('Kriegsbanner');       
                        self.effectlist['ImprovedBannerOfWar']          :SetName('Verbesserung: Kriegsbanner');
                        self.effectlist['BannerOfHope']                         :SetName('Banner der Hoffnung');
                        self.effectlist['ImprovedBannerOfHope']         :SetName('Verbesserung: Banner der Hoffnung');
                        self.effectlist['BannerOfVictory']                      :SetName('Banner des Sieges');
                        self.effectlist['ImprovedBannerOfVictory']      :SetName('Verbesserung: Banner des Sieges');
                        -- 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 --
    
    -- Build Windows
        self.bars["Marks"]                      = SkillBar(self.windows["Marks"],                       1, 1, 3, 1, true, true);
    self.bars["MultiMark"]              = SkillBar(self.windows["Marks"],                       1, 1, 1, 1, true, true);

        -- Build Skills
    self.skills["DefensiveStrike"]                      = SkillSlot(self.bars["Attack"],        1, 1, true, { 1, 54 }, { "0x70002F73", "0x7000FF86" } );
    self.skills["SureStrike"]                           = SkillSlot(self.bars["Attack"],        2, 1, true, { 1, 66 }, { "0x700215CF", "0x70028DB4" } );
    self.skills["BattleShout"]                          = SkillSlot(self.bars["Attack"],        3, 1, true, 1, "0x70002F67");
    self.skills["CuttingAttack"]                        = SkillSlot(self.bars["Attack"],        4, 1, true, { 4, 72 }, { "0x70003E4C", "0x70028FA5" } );
    
    self.skills["DevastatingBlow"]                      = SkillSlot(self.bars["Gated"],         1, 1, not self.settings.features["GateSkills"], 2, "0x70002FCF");
    self.skills["PressingAttack"]                       = SkillSlot(self.bars["Gated"],         2, 1, not self.settings.features["GateSkills"], 10, "0x70003E50");
    self.skills["BladeOfElendil"]                       = SkillSlot(self.bars["Gated"],         3, 1, not self.settings.features["GateSkills"], { 30, 52 }, { "0x7000AD9A", "0x70017D31" } );
    
    self.skills["NobleMark"]                            = SkillSlot(self.bars["Marks"],         1, 1, not self.settings.features["MultiMarks"].active, 12, "0x70003E4F");
        self.skills["TellingMark"]                              = SkillSlot(self.bars["Marks"],         2, 1, not self.settings.features["MultiMarks"].active, 18, "0x70003E4D");
    self.skills["RevealingMark"]                        = SkillSlot(self.bars["Marks"],         3, 1, not self.settings.features["MultiMarks"].active, 30, "0x70003E56");
    
    self.skills["Inspire"]                                      = SkillSlot(self.bars["ShieldBro"], 2, 1, true, 22, "0x7000A1D7");
    self.skills["ToArms"]                                       = SkillSlot(self.bars["ShieldBro"], 3, 1, true, 40, "0x7000AA0D");
    self.skills["StrengthOfWill"]                       = SkillSlot(self.bars["ShieldBro"], 4, 1, true, 48, "0x7000B058");
    
    self.skills["RallyingCry"]                          = SkillSlot(self.bars["Defeat"],        1, 1, false, 2, "0x70002F4F");
    self.skills["WarCry"]                                       = SkillSlot(self.bars["Defeat"],        2, 1, false, 4, "0x70002F58");
    self.skills["RoutingCry"]                           = SkillSlot(self.bars["Defeat"],        3, 1, self.settings.traits["LeaderofMen"].active, 8, "0x70002F61");
    self.skills["ShadowsLament"]                        = SkillSlot(self.bars["Defeat"],        4, 1, self.settings.traits["MasterOfWar"].active, 60, "0x7000FF8B");
    
    self.skills["WordsOfCourage"]                       = SkillSlot(self.bars["Healing"],       1, 1, true, 14, "0x70003E51");
    self.skills["MusterCourage"]                        = SkillSlot(self.bars["Healing"],       2, 1, true, 16, "0x70002F99");
    self.skills["ValiantStrike"]                        = SkillSlot(self.bars["Healing"],       3, 1, true, 58, "0x7000FF6D");
    self.skills["ShieldOfTheDunadain"]          = SkillSlot(self.bars["Healing"],       4, 1, self.settings.traits["ShieldOfTheDunadain"].active, 41, "0x700012F9");
    
    self.skills["MotivatingSpeech"]                     = SkillSlot(self.bars["Buffs"],         1, 1, true, 16, "0x70003E52");
    self.skills["IDOME"]                                        = SkillSlot(self.bars["Buffs"],         2, 1, self.settings.traits["IDOME"].active, 41, "0x7000130D");
    
    self.skills["LastStand"]                            = SkillSlot(self.bars["Emergency"], 2, 1, true, 22, "0x70003E54");
        self.skills["InHarmsWay"]                               = SkillSlot(self.bars["Emergency"], 1, 1, true, 36, "0x70003E58");
    
    self.skills["EscapeFromDarkness"]           = SkillSlot(self.bars["Rez"],           1, 1, true, 20, "0x70002F45");
    self.skills["CryOfVengence"]                        = SkillSlot(self.bars["Rez"],           2, 1, false, 32, "0x70003E57");
    
    self.skills["Kick"]                                         = SkillSlot(self.bars["Utility"],       1, 1, true, 44, "0x7000AA0E");
    
        self.skills["ThreateningShout"]                 = SkillSlot(self.bars["Threat"],        1, 1, true, 26, "0x70002FD5");
    self.skills["GraveWound"]                           = SkillSlot(self.bars["Threat"],        2, 1, true, { 42, 68 }, { "0x7000AA0F", "0x70028E4B" } );
    self.skills["Withdraw"]                                     = SkillSlot(self.bars["Threat"],        3, 1, true, { 46, 62 }, { "0x7000AA10", "0x7001F4C9" } );
    
    self.skills["OathbreakersShame"]            = SkillSlot(self.bars["Debuff"],        1, 1, self.settings.traits["OathbreakersShame"].active, 41, "0x70001306");
    
    self.skills["MakeHaste"]                            = SkillSlot(self.bars["BattleBuffs"],   1, 1, true, 8, "0x70003E4E");
        self.skills["TimeOfNeed"]                               = SkillSlot(self.bars["BattleBuffs"],   2, 1, true, 50, "0x7000AA12");
        
        self.skills["SummoningHorn"]                    = ItemSlot(self.bars["ClassItems"],     1, 1, true, self.settings.quickslots["SummoningHorn"]);
        self.skills["BattleTonic"]                              = ItemSlot(self.bars["ClassItems"],     2, 1, true, self.settings.quickslots["BattleTonic"]);
        self.skills["BlazonedCrest"]                    = ItemSlot(self.bars["ClassItems"],     3, 1, true, self.settings.quickslots["BlazonedCrest"]);
    
    -- Build Brother Slot
        self.multi["Brothers"]                  = SkillMultiSlot(self.bars["ShieldBro"], 1, 1, true);
        if (vars.playerlevel >= 64) then
                self.multi["Brothers"]:AddShortCut("ShieldBro",         64, "0x70020DF6");
        else
                self.multi["Brothers"]:AddShortCut("ShieldBro",         22, "0x7000A1D8");
        end
        self.multi["Brothers"]:AddShortCut("SongBro",           70, "0x70028EFB");
        self.multi["Brothers"]:AddShortCut("BladeBro",          74, "0x70028EFF");
    self.multi["Brothers"]:LevelCheck();

        -- Build MultiMark Slot
        self.multi["Marks"]             = SkillMultiSlot(self.bars["MultiMark"], 1, 1, true);
        self.multi["Marks"]:AddShortCut("NobleMark",            12, "0x70003E4F");
    self.multi["Marks"]:AddShortCut("TellingMark",              18, "0x70003E4D");
    self.multi["Marks"]:AddShortCut("RevealingMark",    30, "0x70003E56");
    self.multi["Marks"]:LevelCheck();
        self.multi["Marks"]:SetSwap(false);
    
        -- Build Tactic Slot
    self.multi["Tactic"]                = SkillMultiSlot(self.bars["Buffs"], 3, 1, true);
        self.multi["Tactic"]:AddShortCut("OnGuard",              6, "0x70003E53");
    self.multi["Tactic"]:AddShortCut("Relentless",      28, "0x70003E55");
    self.multi["Tactic"]:AddShortCut("Focus",           38, "0x70003E59");
    self.multi["Tactic"]:LevelCheck();
    
        -- Build Herald Slot
    self.multi["Heralds"]               = SkillMultiSlot(self.bars["Banners"], 1, 1, true);
        self.multi["Heralds"]:AddShortCut("War",                10, "0x70002F7A");
    self.multi["Heralds"]:AddShortCut("Hope",           24, "0x70002FAF");
    self.multi["Heralds"]:AddShortCut("Victory",        34, "0x70002F1A");
    self.multi["Heralds"]:AddShortCut("Archer",         56, "0x7000FC78");
    self.multi["Heralds"]:LevelCheck();
    
        -- Build Banner Slot
    self.multi["Banners"]               = ItemMultiSlot(self.bars["Banners"], 2, 1, true);
        self.multi["Banners"]:AddShortCut("Banner1",    self.settings.quickslots["Banner1"]);
        self.multi["Banners"]:AddShortCut("Banner2",    self.settings.quickslots["Banner2"]);
        self.multi["Banners"]:AddShortCut("Banner3",    self.settings.quickslots["Banner3"]);
    self.multi["Banners"]:AddShortCut("Armament",       self.settings.quickslots["Armament"]);
        self.multi["Banners"]:Refresh(true);
        
    -- SET COMBAT STATES
    --self.multi["Heralds"]:SetCombat( false, true );
        --self.skills["SummoningHorn"]:SetCombat( false, true );
        
        -- ITEM MANAGER
        --self.itemmanager = ItemManager();
        --self.itemmanager:RegisterItem("Carved Rallying Horn", { "Finely" }, { }, self.skills["SummoningHorn"]);
        --self.itemmanager:RegisterItem("Battle Tonic", { "Expert","Artisan","Master","Supreme" }, {"Recipe"}, self.skills["BattleTonic"]);
        --self.itemmanager:RegisterItem("Blazoned Crest", { "Expert","Artisan","Master","Supreme" }, {"Recipe"}, self.skills["BlazonedCrest"]);
        --self.itemmanager:ParseItems();    
        
        -- CLASS SPECIFIC SETUP/DEFAULT CODE
        -- Default Marks (seperate or multi)
    if (not self.settings.features["MultiMarks"].active) then
                if (self.windows["Marks"].rotate == false) then
                self.windows["Marks"]:SetSize(35*3, 35);
                self.windows["Marks"].width = 3;
                self.windows["Marks"].height = 1;
                self.multi["Marks"]:SetActive(false);
                self.skills["NobleMark"]:SetActive(true);
                self.skills["TellingMark"]:SetActive(true);
                self.skills["RevealingMark"]:SetActive(true);
                self.bars["MultiMark"]:SetZOrder(-10);
                self.bars["Marks"]:SetZOrder(0);
                else
                    self.windows["Marks"]:SetSize(35, 35 * 3);
                self.windows["Marks"].width = 1;
                self.windows["Marks"].height = 3;
                self.multi["Marks"]:SetActive(false);
                self.skills["NobleMark"]:SetActive(true);
                self.skills["TellingMark"]:SetActive(true);
                self.skills["RevealingMark"]:SetActive(true);
                self.bars["MultiMark"]:SetZOrder(-10);
                self.bars["Marks"]:SetZOrder(0);
                end
        else
        self.windows["Marks"]:SetSize(35, 35);
        self.multi["Marks"]:SetPosition(0, 0);
        self.windows["Marks"].width = 1;
        self.windows["Marks"].height = 1;
        self.multi["Marks"]:SetActive(true);
        self.skills["NobleMark"]:SetActive(false);
        self.skills["TellingMark"]:SetActive(false);
        self.skills["RevealingMark"]:SetActive(false);
        self.bars["MultiMark"]:SetZOrder(0);
        self.bars["Marks"]:SetZOrder(-10);
        end
        
        -- CLASS SPECIFIC EVENTS
        
        -- INITIALIZE BARS
        self:InitBars();
        self:CombatChange(vars.player:IsInCombat());
        

end


-- ADD EFFECT EVENT
function CaptainBars:AddEffect( effectIndex )
        local effect = vars.player:GetEffects():Get( effectIndex );
        local effectname = effect:GetName();
        local effectid = effect:GetID();
        
    if (effectname == self.effectlist["EnemyDefeatResponse"]:GetName()) then
                if (self.effectlist["EnemyDefeatResponse"]:SetState( true, effectid )) then
                        self.skills["RallyingCry"]:SetActive( true );
                        self.skills["WarCry"]:SetActive( true );
                        self.skills["RoutingCry"]:SetActive( true );
                        self.skills["ShadowsLament"]:SetActive( true );
                end
                
    elseif (effectname == self.effectlist["BattleReadied"]:GetName()) then
                if (self.effectlist["BattleReadied"]:SetState( true, effectid) ) then
                        self.skills["DevastatingBlow"]:SetActive( true );
                        self.skills["PressingAttack"]:SetActive( true );
                end
                
    elseif (effectname == self.effectlist["BattleHardened"]:GetName()) then
                if (self.effectlist["BattleHardened"]:SetState( true, effectid )) then
                        self.skills["BladeOfElendil"]:SetActive( true );
                end
                
    elseif (effectname == self.effectlist["FellowDefeatResponse"]:GetName()) then
                if (self.effectlist["FellowDefeatResponse"]:SetState( true, effectid )) then
                        self.skills["CryOfVengence"]:SetActive( true );
                end
                
    elseif (effectname == self.effectlist["Motivated"]:GetName()) then
                if (self.effectlist["Motivated"]:SetState( true, effectid )) then
                        self.skills["MotivatingSpeech"]:SetActive( true );
                        if (self.settings.defaults["BuffActive"].selected == 2) then
                                self.skills["MotivatingSpeech"]:SetHover( true );
                        elseif (self.settings.defaults["BuffActive"].selected >= 3) then
                                self.skills["MotivatingSpeech"]:SetActive( false );
                        end
                        if (self.settings.defaults["BuffActive"].selected == 4) then
                                self.skills["MotivatingSpeech"]:StartTimer(effect:GetDuration() * .82, true);
                        end
                end
                
    elseif (effectname == self.effectlist["OnGuard"]:GetName() or effectname == self.effectlist["RelentlessAttack"]:GetName() or effectname == self.effectlist["Focus"]:GetName() ) then
                if (self.effectlist["OnGuard"]:SetState( true, effectid )) then
                        self.multi["Tactic"]:SetActive( true );
                        if (self.settings.defaults["TacticActive"].selected == 2) then
                                self.multi["Tactic"]:SetHover( true );
                        elseif (self.settings.defaults["TacticActive"].selected >= 3) then
                                self.multi["Tactic"]:SetActive(false);
                        end
                        if (self.settings.defaults["TacticActive"].selected == 4) then
                                self.multi["Tactic"]:StartTimer(effect:GetDuration() * .82, true);
                        end
                end
                
    elseif (effectname == self.effectlist["InDefenceOfMiddleEarth"]:GetName()) then
                if (self.effectlist["InDefenceOfMiddleEarth"]:SetState( true, effectid )) then
                        self.skills["IDOME"]:SetActive( self.settings.traits["IDOME"].active );
                        if (self.settings.defaults["IDoMEActive"].selected == 2) then
                                self.skills["IDOME"]:SetHover( true );
                        elseif (self.settings.defaults["IDoMEActive"].selected == 3) then
                                self.skills["IDOME"]:SetActive( false );
                        end
                end
                
        elseif (effectname == self.effectlist["BannerOfWar"]:GetName() or effectname == self.effectlist["BannerOfVictory"]:GetName() or effectname == self.effectlist["BannerOfHope"]:GetName() or effectname == self.effectlist["ImprovedBannerOfWar"]:GetName() or effectname == self.effectlist["ImprovedBannerOfVictory"]:GetName() or effectname == self.effectlist["ImprovedBannerOfHope"]:GetName() ) then
                if (self.effectlist["BannerOfWar"]:SetState( true, effectid )) then
                        self.multi["Heralds"]:SetHover(true);
                        self.multi["Banners"]:SetHover(true);
                end
                
        -- Fear
        elseif (effect:GetCategory() == Turbine.Gameplay.EffectCategory.Fear ) then
                self.fear = self.fear + 1;
                if (settings.skilldata["MusterCourage"].parent ~= nil and vars.playerlevel >= self.skills["MusterCourage"].level[1] and self.settings.features["FearIndicator"].active) then
                        if (self.settings.userconf[settings.skilldata["MusterCourage"].parent].active) then
                                self.skills["MusterCourage"]:SetColor("purple");
                        end
                end
                
        end
end

-- REMOVE EFFECT EVENT
function CaptainBars:RemoveEffect( effect )
        local effectname = effect:GetName();
        local effectid = effect:GetID();
        
        if (effectname == self.effectlist["EnemyDefeatResponse"]:GetName()) then
                if (not self.effectlist["EnemyDefeatResponse"]:SetState( false, effectid )) then
                        self.skills["RallyingCry"]:SetActive( false );
                        self.skills["WarCry"]:SetActive( false );
                        self.skills["RoutingCry"]:SetActive( self.settings.traits["LeaderofMen"].active );
                        self.skills["ShadowsLament"]:SetActive( self.settings.traits["MasterOfWar"].active );
                end

    elseif (effectname == self.effectlist["BattleReadied"]:GetName()) then
                if (not self.effectlist["BattleReadied"]:SetState( false, effectid )) then
                        self.skills["DevastatingBlow"]:SetActive( not self.settings.features["GateSkills"].active );
                        self.skills["PressingAttack"]:SetActive( not self.settings.features["GateSkills"].active );
                end

    elseif (effectname == self.effectlist["BattleHardened"]:GetName()) then
                if (not self.effectlist["BattleHardened"]:SetState( false, effectid )) then
                        self.skills["BladeOfElendil"]:SetActive( not self.settings.features["GateSkills"].active );
                end
                
        elseif (effectname == self.effectlist["FellowDefeatResponse"]:GetName()) then
            if (not self.effectlist["FellowDefeatResponse"]:SetState( false, effectid )) then
                        self.skills["CryOfVengence"]:SetActive( false );
                end
            
        elseif (effectname == self.effectlist["Motivated"]:GetName()) then
                if (not self.effectlist["Motivated"]:SetState( false, effectid )) then
                        self.skills["MotivatingSpeech"]:SetActive( true );
                        self.skills["MotivatingSpeech"]:SetHover( false );
                end
            
    elseif (effectname == self.effectlist["OnGuard"]:GetName() or effectname == self.effectlist["RelentlessAttack"]:GetName() or effectname == self.effectlist["Focus"]:GetName()) then
            if (not self.effectlist["OnGuard"]:SetState( false, effectid )) then
                        self.multi["Tactic"]:SetActive( true );
                        self.multi["Tactic"]:SetHover( false );
                end
            
    elseif (effectname == self.effectlist["InDefenceOfMiddleEarth"]:GetName()) then
                if (not self.effectlist["InDefenceOfMiddleEarth"]:SetState( false, effectid )) then
                        self.skills["IDOME"]:SetActive( self.settings.traits["IDOME"].active );
                        self.skills["IDOME"]:SetHover( false );
                end
                
        elseif (effectname == self.effectlist["BannerOfWar"]:GetName() or effectname == self.effectlist["BannerOfVictory"]:GetName() or effectname == self.effectlist["BannerOfHope"]:GetName() or effectname == self.effectlist["ImprovedBannerOfWar"]:GetName() or effectname == self.effectlist["ImprovedBannerOfVictory"]:GetName() or effectname == self.effectlist["ImprovedBannerOfHope"]:GetName() ) then
                if (not self.effectlist["BannerOfWar"]:SetState( false, effectid )) then
                        self.multi["Heralds"]:SetHover(false);
                        self.multi["Banners"]:SetHover(false);
                end
                
        -- Fear
        elseif (effect:GetCategory() == Turbine.Gameplay.EffectCategory.Fear ) then
                self.fear = self.fear - 1;
                if (self.fear == 0) then
                        self.skills["MusterCourage"]:SetColor();
                end

        end

end

-- DEFAULT SETTINGS
function CaptainBars:DefaultSettings()
        self.settings = { preconf = { }, userconf = { }, traits = { }, features = { }, defaults = { }, quickslots = { } };
        
        self.settings.preconf["Marks"]                  = { id = 1,     name = "Marks",                 defpos = {1,2},         size={3,1}, pos = {0,0}, combat = {true,true}, active = true };
        
        self.settings.userconf["Attack"]                = { id = 2,     name = "Attack Skills",         defpos = {1,4},         size={4,1}, pos = {0,0}, combat = {true,true}, active = true };
        self.settings.userconf["Gated"]                 = { id = 3,     name = "Gated Skills",          defpos = {5,4},         size={3,1}, pos = {0,0}, combat = {true,true}, active = true };
        self.settings.userconf["Defeat"]                = { id = 4,     name = "Defeat Responses",      defpos = {1,3},         size={4,1}, pos = {0,0}, combat = {true,true}, active = true };
        self.settings.userconf["Healing"]               = { id = 5,     name = "Healing",                       defpos = {1,1},         size={4,1}, pos = {0,0}, combat = {true,true}, active = true };
        self.settings.userconf["Buffs"]                 = { id = 6,     name = "Buffs",                         defpos = {5,1},         size={3,1}, pos = {0,0}, combat = {true,true}, active = true };
        self.settings.userconf["Threat"]                = { id = 7,     name = "Threat",                        defpos = {9,4},         size={3,1}, pos = {0,0}, combat = {true,true}, active = true };
        self.settings.userconf["Emergency"]     = { id = 8,     name = "Emergency",                     defpos = {5,3},         size={2,1}, pos = {0,0}, combat = {true,true}, active = true };
        self.settings.userconf["Rez"]                   = { id = 9,     name = "Rez",                           defpos = {7,3},         size={2,1}, pos = {0,0}, combat = {true,true}, active = true };
        self.settings.userconf["ShieldBro"]     = { id = 10,    name = "Shield Brother",        defpos = {4,2},         size={4,1}, pos = {0,0}, combat = {true,true}, active = true };
        self.settings.userconf["BattleBuffs"]   = { id = 11,    name = "Battle Buffs",          defpos = {9,2},         size={2,1}, pos = {0,0}, combat = {true,true}, active = true };
        self.settings.userconf["Debuff"]                = { id = 12,    name = "Debuff",                        defpos = {9,3},         size={1,1}, pos = {0,0}, combat = {true,true}, active = true };
        self.settings.userconf["Banners"]               = { id = 13,    name = "Banners",                       defpos = {10,3},        size={2,1}, pos = {0,0}, combat = {true,true}, active = true };
        self.settings.userconf["Utility"]               = { id = 14,    name = "Utility",                       defpos = {8,4},         size={1,1}, pos = {0,0}, combat = {true,true}, active = true };
        self.settings.userconf["ClassItems"]    = { id = 15,    name = "Class Items",           defpos = {9,1},         size={3,1}, pos = {0,0}, combat = {true,true}, active = true };
        
        self.settings.traits["IDOME"]                           = { id = 1, name = 'IDoME', active = false };
        self.settings.traits["OathbreakersShame"]       = { id = 2, name = 'Oathbreakers Shame', active = false };
        self.settings.traits["ShieldOfTheDunadain"]     = { id = 3, name = 'Shield of the Dunadain', active = false };
        self.settings.traits["MasterOfWar"]                     = { id = 4, name = 'Master of War', active = false };
        self.settings.traits["LeaderofMen"]                     = { id = 5, name = 'Leader of Men', active = false };
        
        self.settings.features["GateSkills"]            = { id = 1, name = 'Gate Skills', active = true };
        self.settings.features["MultiMarks"]            = { id = 2, name = 'Combine Marks', active = false };
        self.settings.features["FearIndicator"]         = { id = 3, name = 'Fear Indicator', active = true };
        
        self.settings.defaults["BuffActive"]            = { id = 1, name = 'Motivated Active', selected = 4, list = { "None", "Dim", "Hide", "Early Warning" } };
        self.settings.defaults["TacticActive"]          = { id = 2, name = 'Tactic Active', selected = 2, list = { "None", "Dim", "Hide", "Early Warning" } };    
        self.settings.defaults["IDoMEActive"]           = { id = 3, name = 'IDoME Active', selected = 2, list = { "None", "Dim", "Hide" } };    
    
        self.settings.quickslots["Banner1"]                     = {id = 1, name = "Banner 1", active = false, type = 0, data = ""};
        self.settings.quickslots["Banner2"]                     = {id = 2, name = "Banner 2", active = false, type = 0, data = ""};
        self.settings.quickslots["Banner3"]                     = {id = 3, name = "Banner 3", active = false, type = 0, data = ""};
        self.settings.quickslots["Armament"]            = {id = 4, name = "Armaments", active = false, type = 0, data = ""};
        self.settings.quickslots["SummoningHorn"]       = {id = 5, name = "Summoning Horn", active = false, type = 0, data = ""};
        self.settings.quickslots["BattleTonic"]         = {id = 6, name = "Battle Tonic", active = false, type = 0, data = ""};
        self.settings.quickslots["BlazonedCrest"]       = {id = 7, name = "Blazoned Crest", active = false, type = 0, data = ""};

end

-- UPDATE SETTINGS
function CaptainBars:UpdateSettings()
    if (settings.vers < 3.01) then

                if (self.settings["Features"].buffdisappear) then self.settings["Features"].buffactive = 4; else self.settings["Features"].buffactive = 2; end
                if (self.settings["Features"].tactichover) then self.settings["Features"].tacticactive = 2; else self.settings["Features"].tacticactive = 4; end

        self.settings["Features"].buffdisappear = nil;
                self.settings["Features"].tactichover = nil;
        end
        if (settings.vers < 3.20) then
                self.settings["ClassItems"] = { active = true, x = 0, y = 0, rotate = 0 };
                self.settings["Quickslots"].horn = { active = true,  type = Turbine.UI.Lotro.ShortcutType.Undefined, data = ""};
                self.settings["Quickslots"].tonic = { active = true,  type = Turbine.UI.Lotro.ShortcutType.Undefined, data = ""};
                self.settings["Quickslots"].crest = { active = true,  type = Turbine.UI.Lotro.ShortcutType.Undefined, data = ""};
        end
        if (settings.vers < 4.00) then
                local oldclassinfo = self.settings;
                self:DefaultSettings();
                for k,v in pairs(oldclassinfo) do
                        if (k ~= "Features" and k ~= "Quickslots") then
                                if (self.settings.preconf[k] == nil) then
                                        if (self.settings.userconf[k] ~= nil) then
                                                self.settings.userconf[k].pos = { v.x, v.y };
                                                self.settings.userconf[k].combat = { true, true };
                                                self.settings.userconf[k].active = v.active;
                                        end
                                else
                                        self.settings.preconf[k].pos = { v.x, v.y };
                                        self.settings.preconf[k].combat = { true, true };
                                        self.settings.preconf[k].active = v.active;
                                end
                        elseif (k == "Features") then
                                for key, value in pairs(v) do
                                        if (key == 'idome') then
                                                self.settings.traits["IDOME"].active = value;
                                        elseif (key == 'oathbreakers') then
                                                self.settings.traits["OathbreakersShame"].active = value;
                                        elseif (key == 'shield') then
                                                self.settings.traits["ShieldOfTheDunadain"].active = value;
                                        elseif (key == 'lament') then
                                                self.settings.traits["MasterOfWar"].active = value;
                                        elseif (key == 'fearindicator') then
                                                self.settings.features["FearIndicator"].active = value;
                                        elseif (key == 'multimarks') then
                                                self.settings.features["MultiMarks"].active = value;
                                        elseif (key == 'gated') then
                                                self.settings.features["GateSkills"].active = value;
                                        elseif (key == 'buffactive') then
                                                self.settings.defaults["BuffActive"].selected = value;
                                        elseif (key == 'tacticactive') then
                                                self.settings.defaults["TacticActive"].selected = value;
                                        end
                                end
                        elseif (k == "Quickslots") then
                                for key, value in pairs(v) do
                                        if (key == 'banner1') then
                                                self.settings.quickslots["Banner1"].active = value.active;
                                                self.settings.quickslots["Banner1"].type = value.type;
                                                self.settings.quickslots["Banner1"].data = value.data;
                                        elseif (key == 'banner2') then
                                                self.settings.quickslots["Banner2"].active = value.active;
                                                self.settings.quickslots["Banner2"].type = value.type;
                                                self.settings.quickslots["Banner2"].data = value.data;
                                        elseif (key == 'banner3') then
                                                self.settings.quickslots["Banner3"].active = value.active;
                                                self.settings.quickslots["Banner3"].type = value.type;
                                                self.settings.quickslots["Banner3"].data = value.data;
                                        elseif (key == 'armament') then
                                                self.settings.quickslots["Armament"].active = value.active;
                                                self.settings.quickslots["Armament"].type = value.type;
                                                self.settings.quickslots["Armament"].data = value.data;
                                        end
                                end
                        end
                end
        end
        
        if (settings.vers < 5.00) then
                self.settings.traits["LeaderofMen"]                     = { id = 5, name = 'Leader of Men', active = false };
                self.settings.defaults["IDoMEActive"]           = { id = 3, name = 'IDoME Active', selected = 2, list = { "None", "Dim", "Hide" } };    
                self.settings.defaults["BuffActive"].name = "Motivated Active";
                settings.multidata["Brothers"] = { current = { 1 }, lock = false, parent = settings.skilldata["ShieldBrother"].parent, layer = 1, pos = settings.skilldata["ShieldBrother"].pos };
                settings.skilldata["ShieldBrother"] = nil;
        end

        settings.vers = vars.vers;
end


-- REFRESH SKILLS AND BARS
function CaptainBars:Refresh()
        
        -- GENERIC REFRESH (Required for all classes)
        self:RefreshBars();
        
        -- REDEFINE EFFECTLIST IN CASE OF LANGUAGE CHANGE
        self.DefineEffectList();
    
    -- CLASS SPECIFIC REFRESH
    -- Setup Marks (Seperate or Multi)
    if (not self.settings.features["MultiMarks"].active) then
                if (self.windows["Marks"].rotate == false) then
                self.windows["Marks"]:SetSize(35*3, 35);
                self.windows["Marks"].width = 3;
                self.windows["Marks"].height = 1;
                self.multi["Marks"]:SetActive(false);
                self.skills["NobleMark"]:SetActive(true);
                self.skills["TellingMark"]:SetActive(true);
                self.skills["RevealingMark"]:SetActive(true);
                self.bars["MultiMark"]:SetZOrder(-10);
                self.bars["Marks"]:SetZOrder(0);
                else
                    self.windows["Marks"]:SetSize(35, 35 * 3);
                self.windows["Marks"].width = 1;
                self.windows["Marks"].height = 3;
                self.multi["Marks"]:SetActive(false);
                self.skills["NobleMark"]:SetActive(true);
                self.skills["TellingMark"]:SetActive(true);
                self.skills["RevealingMark"]:SetActive(true);
                self.bars["MultiMark"]:SetZOrder(-10);
                self.bars["Marks"]:SetZOrder(0);
                end
        else
        self.windows["Marks"]:SetSize(35, 35);
        self.multi["Marks"]:SetPosition(0, 0);
        self.windows["Marks"].width = 1;
        self.windows["Marks"].height = 1;
        self.multi["Marks"]:SetActive(true);
        self.skills["NobleMark"]:SetActive(false);
        self.skills["TellingMark"]:SetActive(false);
        self.skills["RevealingMark"]:SetActive(false);
        self.bars["MultiMark"]:SetZOrder(0);
        self.bars["Marks"]:SetZOrder(-10);
        end
        
        -- Setup Features
        self.skills["ShieldOfTheDunadain"]:SetActive(self.settings.traits["ShieldOfTheDunadain"].active);
        self.skills["OathbreakersShame"]:SetActive(self.settings.traits["OathbreakersShame"].active);
        self.skills["DevastatingBlow"]:SetActive(not self.settings.features["GateSkills"].active or self.effectlist["BattleReadied"]:GetState());
        self.skills["PressingAttack"]:SetActive(not self.settings.features["GateSkills"].active or self.effectlist["BattleReadied"]:GetState());
        self.skills["BladeOfElendil"]:SetActive(not self.settings.features["GateSkills"].active or self.effectlist["BattleHardened"]:GetState());
        self.skills["RoutingCry"]:SetActive(self.settings.traits["LeaderofMen"].active or self.effectlist["EnemyDefeatResponse"]:GetState());
        self.skills["ShadowsLament"]:SetActive(self.settings.traits["MasterOfWar"].active or self.effectlist["EnemyDefeatResponse"]:GetState());
        
        -- Level Check Multis
        self.multi["Brothers"]:LevelCheck();
    self.multi["Tactic"]:LevelCheck();
    self.multi["Marks"]:LevelCheck();
    self.multi["Heralds"]:LevelCheck();
        
        -- Set Quickslots
        self.skills["SummoningHorn"]:SetQuickslot(self.settings.quickslots["SummoningHorn"]);
        self.skills["BattleTonic"]:SetQuickslot(self.settings.quickslots["BattleTonic"]);
        self.skills["BlazonedCrest"]:SetQuickslot(self.settings.quickslots["BlazonedCrest"]);
        
        -- Rebuild Banner Multi
        self.multi["Banners"]:Clear();
        self.multi["Banners"]:AddShortCut("Banner 1",   self.settings.quickslots["Banner1"]);
        self.multi["Banners"]:AddShortCut("Banner 2",   self.settings.quickslots["Banner2"]);
        self.multi["Banners"]:AddShortCut("Banner 3",   self.settings.quickslots["Banner3"]);
    self.multi["Banners"]:AddShortCut("Armament",       self.settings.quickslots["Armament"]);
        self.multi["Banners"]:Refresh(true);
    
        -- Set Buff Visibility/Hover based on BuffActive settings
    self.skills["MotivatingSpeech"]:SetActive( true );
        self.skills["MotivatingSpeech"]:SetHover( false );
    self.skills["IDOME"]:SetActive( self.settings.traits["IDOME"].active );
        self.skills["IDOME"]:SetHover( false );
        if (self.settings.defaults["BuffActive"].selected == 2) then
                self.skills["MotivatingSpeech"]:SetHover( self.effectlist["Motivated"]:GetState() );
        elseif (self.settings.defaults["BuffActive"].selected >= 3) then
                self.skills["MotivatingSpeech"]:SetActive( not self.effectlist["Motivated"]:GetState() );
        end
        if (self.settings.defaults["IDoMEActive"].selected == 2) then
                self.skills["IDOME"]:SetHover( self.effectlist["InDefenceOfMiddleEarth"]:GetState() );
        elseif (self.settings.defaults["IDoMEActive"].selected == 3) then
                self.skills["IDOME"]:SetActive( not self.effectlist["InDefenceOfMiddleEarth"]:GetState() and self.settings.traits["IDOME"].active );
        end
        self.multi["Tactic"]:SetActive( true );
        self.multi["Tactic"]:SetHover( false );
        if (self.settings.defaults["TacticActive"].selected == 2) then
                self.multi["Tactic"]:SetHover( self.effectlist["OnGuard"]:GetState() );
        elseif (self.settings.defaults["TacticActive"].selected >= 3) then
                self.multi["Tactic"]:SetActive( not self.effectlist["OnGuard"]:GetState() );
        end
        
        -- Set Fear Indicator
        if (settings.skilldata["MusterCourage"].parent ~= nil and vars.playerlevel >= self.skills["MusterCourage"].level[1] and self.settings.features["FearIndicator"].active and self.fear > 0) then
                if (self.settings.userconf[settings.skilldata["MusterCourage"].parent].active) then
                        self.skills["MusterCourage"]:SetColor("purple");
                end
        else
                self.skills["MusterCourage"]:SetColor();
        end
    
    -- Refresh States
    self:CombatChange(vars.player:IsInCombat());

end

Compare with Previous | Blame


All times are GMT -5. The time now is 02:20 PM.


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