import "Turbine.UI";
import "Turbine.UI.Lotro";
import "Turbine.Gameplay";
import "KragenPlugs.Utils";
import "KragenPlugs.KragenBars";
BurglarBars = class( KragenPlugs.KragenBars.ClassBar );
function BurglarBars: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
self.mischiefflag = 0;
self.poison = 0;
self.effectlist['CriticalResponse'] = Effect();
self.effectlist['DoubleEdged'] = Effect();
self.effectlist['FMResponse'] = Effect();
self.effectlist['ImprovedFeint'] = Effect();
self.effectlist['Campsite'] = Effect();
self.effectlist['Stunned'] = Effect();
self.effectlist['Dazed'] = Effect();
self.effectlist['KnockedDown'] = Effect();
self.effectlist['KnockedOut'] = Effect();
-- DEFINE THE EFFECT LIST BASED ON CLIENT LANGUAGE
self.DefineEffectList = function()
-- ENGLISH CLIENT
if (settings.language == 1) then
self.effectlist['CriticalResponse'] :SetName('Critical Response');
self.effectlist['DoubleEdged'] :SetName('Double Edged');
self.effectlist['FMResponse'] :SetName('Fellowship Manoeuvre Response');
self.effectlist['ImprovedFeint'] :SetName('Improved Feint');
self.effectlist['Campsite'] :SetName('Campsite');
self.effectlist['Stunned'] :SetName('Stunned');
self.effectlist['Dazed'] :SetName('Dazed');
self.effectlist['KnockedDown'] :SetName('Knocked Down');
self.effectlist['KnockedOut'] :SetName('Knocked Out');
-- FRENCH CLIENT
elseif (settings.language == 2) then
self.effectlist['CriticalResponse'] :SetName('Critical Response');
self.effectlist['DoubleEdged'] :SetName('Double Edged');
self.effectlist['FMResponse'] :SetName('Fellowship Manoeuvre Response');
self.effectlist['ImprovedFeint'] :SetName('Improved Feint');
self.effectlist['Campsite'] :SetName('Campsite');
self.effectlist['Stunned'] :SetName('Etourdissement');
self.effectlist['Dazed'] :SetName('Hébété');
self.effectlist['KnockedDown'] :SetName('Renversé');
self.effectlist['KnockedOut'] :SetName('Knocked Out');
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['CriticalResponse'] :SetName('Kritische Erwiderung');
self.effectlist['DoubleEdged'] :SetName('Zweischneidiger Schlag');
self.effectlist['FMResponse'] :SetName('Erwiderung "Gefährtenmanöver"');
self.effectlist['ImprovedFeint'] :SetName('Improved Feint');
self.effectlist['Campsite'] :SetName('Campsite');
self.effectlist['Stunned'] :SetName('Bewusstlos geschlagen');
self.effectlist['Dazed'] :SetName('Benommenheit');
self.effectlist['KnockedDown'] :SetName('Zu Boden geschlagen');
self.effectlist['KnockedOut'] :SetName('Knocked Out');
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
for k,v in pairs(self.settings.userconf) do
self.barlist[v.id] = k;
self.windows[k] = SkillWindow(v.name, v.defpos[1], v.defpos[2], v.size[1], v.size[2], {active = v.active, x = v.x, y = v.y, rotate = v.rotate});
self.bars[k] = SkillBar(self.windows[k], 1, 1, v.size[1], v.size[2], true, false);
self.barcount = self.barcount + 1;
end
for k,v in pairs(self.settings.preconf) do
self.barlist[v.id] = k;
self.windows[k] = SkillWindow(v.name, v.defpos[1], v.defpos[2], v.size[1], v.size[2], {active = v.active, x = v.x, y = v.y, rotate = v.rotate});
self.barcount = self.barcount + 1;
end
-- Build Bars
self.bars["CritTier3"] = SkillBar(self.windows["Crit"], 1, 1, 3, 2, true, true);
self.bars["CritTier1"] = SkillBar(self.windows["Crit"], 1, 2, 1, 1, true, true);
self.bars["CritTier2"] = SkillBar(self.windows["Crit"], 1, 2, 1, 1, true, true);
-- Build Skills
self.skills["BurglarsAdvantage"] = SkillSlot(self.bars["CritTier1"], 1, 1, false, 2, "0x70003F0B");
self.skills["DoubleEdgedStrike"] = SkillSlot(self.bars["CritTier2"], 1, 1, false, 24, "0x70003F0C");
self.skills["ExposedThroat"] = SkillSlot(self.bars["CritTier3"], 2, 2, false, 41, "0x70000F80");
self.skills["FlashingBlades"] = SkillSlot(self.bars["CritTier3"], 3, 2, false, 41, "0x70000F5D");
self.skills["LuckyStrike"] = SkillSlot(self.bars["CritTier3"], 1, 1, false, 56, "0x7000FD86");
self.skills["FeintAttack"] = SkillSlot(self.bars["CritTier3"], 2, 1, false, 58, "0x7000FB71");
self.skills["SmallSnag"] = SkillSlot(self.bars["CritTier3"], 3, 1, false, 60, "0x7000FB73");
self.skills["SeizeInitiative"] = SkillSlot(self.bars["FMReactives"], 1, 1, false, 44, "0x7000D447");
self.skills["EscapeClause"] = SkillSlot(self.bars["FMReactives"], 2, 1, false, 48, "0x7000D443");
self.skills["Sneak"] = SkillSlot(self.bars["Stance"], 1, 1, true, 4, "0x70003212");
self.skills["Mischief"] = SkillSlot(self.bars["Stance"], 2, 1, true, 20, "0x7000D4A4");
self.skills["FindFooting"] = SkillSlot(self.bars["Stunned"], 1, 1, false, 32, "0x70003F14");
self.skills["SurpriseStrike"] = SkillSlot(self.bars["QuickBar1"], 1, 1, true, 1, "0x70003F08");
self.skills["CunningAttack"] = SkillSlot(self.bars["QuickBar1"], 2, 1, true, 1, "0x70003F09");
self.skills["SubtleStab"] = SkillSlot(self.bars["QuickBar1"], 3, 1, true, 1, "0x700031D3");
self.skills["Disable"] = SkillSlot(self.bars["QuickBar1"], 4, 1, true, 4, "0x700031FA");
self.skills["DITE"] = SkillSlot(self.bars["QuickBar1"], 5, 1, true, 16, "0x700031E7");
self.skills["CounterDefences"] = SkillSlot(self.bars["QuickBar1"], 6, 1, true, 26, "0x70003200");
self.skills["Riddle"] = SkillSlot(self.bars["QuickBar2"], 1, 1, true, 8, "0x700031D8");
self.skills["Addle"] = SkillSlot(self.bars["QuickBar2"], 2, 1, true, 14, "0x70003F0E");
self.skills["Provoke"] = SkillSlot(self.bars["QuickBar2"], 3, 1, true, 34, "0x70003F0A");
self.skills["Diversion"] = SkillSlot(self.bars["QuickBar2"], 4, 1, true, 18, "0x700031F5");
self.skills["HideInPlainSight"] = SkillSlot(self.bars["QuickBar2"], 5, 1, true, { 30, 54 }, { "0x7000320D", "0x70015A02" });
self.skills["ShareTheFun"] = SkillSlot(self.bars["QuickBar2"], 6, 1, true, 42, "0x7000D448");
self.skills["MischieviousGlee"] = SkillSlot(self.bars["QuickBar3"], 4, 1, true, {10, 64}, { "0x70003F10", "0x70020DD0" });
self.skills["StartlingTwist"] = SkillSlot(self.bars["QuickBar3"], 5, 1, true, {20, 52}, { "0x70003F0F", "0x70015A04" });
self.skills["CleverRetort"] = SkillSlot(self.bars["QuickBar3"], 6, 1, self.settings.traits["HonedWit"].active or vars.classattr:GetStance() == 1, 30, "0x7000D440");
self.skills["Enrage"] = SkillSlot(self.bars["QuickBar4"], 1, 1, true, 38, "0x70003218");
self.skills["ExploitOpening"] = SkillSlot(self.bars["QuickBar4"], 2, 1, true, 12, "0x70003F0D");
self.skills["Trip"] = SkillSlot(self.bars["QuickBar4"], 3, 1, true, 28, "0x70003F07");
self.skills["Aim"] = SkillSlot(self.bars["QuickBar5"], 4, 1, true, 12, "0x700031E1");
self.skills["LIE"] = SkillSlot(self.bars["QuickBar5"], 5, 1, true, 50, "0x7000D445");
self.skills["RevealWeakness"] = SkillSlot(self.bars["QuickBar5"], 6, 1, true, 22, "0x70003F11");
self.skills["WellPlacedStrike"] = SkillSlot(self.bars["QuickBar6"], 1, 1, true, 40, "0x7000D43E");
self.skills["Confound"] = SkillSlot(self.bars["QuickBar6"], 2, 1, vars.classattr:GetStance() == 1, 46, "0x7000D441");
self.skills["Marbles"] = ItemSlot(self.bars["QuickBar6"], 3, 1, self.settings.quickslots["Marbles"].active, self.settings.quickslots["Marbles"].type, self.settings.quickslots["Marbles"].data);
self.skills["Caltrops"] = ItemSlot(self.bars["QuickBar6"], 4, 1, self.settings.quickslots["Caltrops"].active, self.settings.quickslots["Caltrops"].type, self.settings.quickslots["Caltrops"].data);
self.skills["StunDust"] = ItemSlot(self.bars["QuickBar6"], 5, 1, self.settings.quickslots["StunDust"].active, self.settings.quickslots["StunDust"].type, self.settings.quickslots["StunDust"].data);
self.skills["Knives"] = ItemSlot(self.bars["QuickBar6"], 6, 1, self.settings.quickslots["Knives"].active, self.settings.quickslots["Knives"].type, self.settings.quickslots["Knives"].data);
self.skills["TouchAndGo"] = SkillSlot(self.bars["QuickBar7"], 1, 1, true, 6, "0x70003F13");
self.skills["CurePoison"] = SkillSlot(self.bars["QuickBar7"], 2, 1, true, { 26, 62 }, {"0x70003F17", "0x7001F4A4" });
self.skills["ReadyAndAble"] = SkillSlot(self.bars["QuickBar7"], 3, 1, true, 36, "0x70003F12");
self.skills["KnivesOut"] = SkillSlot(self.bars["QuickBar7"], 4, 1, true, 42, "0x7000D444");
self.skills["Burgle"] = SkillSlot(self.bars["QuickBar8"], 4, 1, true, 14, "0x70003F16");
self.skills["ContactPedlar"] = SkillSlot(self.bars["QuickBar8"], 5, 1, false, 26, "0x7000D442");
self.skills["TrackTreasure"] = SkillSlot(self.bars["QuickBar8"], 6, 1, true, 20, "0x70003F15");
-- SET COMBAT STATES
self.skills["Mischief"]:SetCombat(false, true);
self.skills["Sneak"]:SetCombat(false, true);
self.skills["ShareTheFun"]:SetCombat(false, true);
self.skills["ContactPedlar"]:SetCombat(false, true);
self.skills["Burgle"]:SetCombat(false, true);
self.skills["Trip"]:SetCombat(false, true);
self.skills["Diversion"]:SetCombat(false, true);
self.skills["LIE"]:SetCombat(false, true);
-- CLASS SPECIFIC SETUP/DEFAULT CODE
self.bars["CritTier2"]:SetZOrder(-10);
if (vars.classattr:GetStance() == 1) then
self.mischiefflag = 2;
else
self.mischiefflag = 0;
end
-- Stance Event
AddCallback(vars.classattr, "StanceChanged", function(sender, args)
KragenBars:StanceChange();
end);
-- INITIALIZE BARS
self:InitBars();
self:CombatChange(vars.player:IsInCombat());
end
-- ADD EFFECT EVENT
function BurglarBars:AddEffect( effectIndex )
local effect = vars.player:GetEffects():Get( effectIndex );
local name = effect:GetName();
local id = effect:GetID();
-- Crit Response
if (name == self.effectlist["CriticalResponse"]:GetName()) then
if (self.effectlist["CriticalResponse"]:SetState(true, id)) then
self.skills["BurglarsAdvantage"]:SetActive(true);
end
-- Double Edged
elseif (name == self.effectlist["DoubleEdged"]:GetName()) then
if (self.effectlist["DoubleEdged"]:SetState(true, id)) then
self.bars["CritTier2"]:SetZOrder(-10);
self.skills["DoubleEdgedStrike"]:SetActive(false);
self.skills["ExposedThroat"]:SetActive(self.settings.traits["ExposedThroat"].active);
self.skills["FlashingBlades"]:SetActive(self.settings.traits["FlashingBlades"].active);
self.skills["LuckyStrike"]:SetActive(true);
self.skills["FeintAttack"]:SetActive(vars.classattr:GetStance() == 0);
self.skills["SmallSnag"]:SetActive(true);
end
-- Stunned, Dazed, Knocked Down
elseif (name == self.effectlist["Stunned"]:GetName() or name == self.effectlist["Dazed"]:GetName() or name == self.effectlist["KnockedDown"]:GetName() or name == self.effectlist["KnockedOut"]:GetName()) then
if (self.effectlist["Stunned"]:SetState(true, id)) then
self.skills["FindFooting"]:SetActive( true );
end
-- Fellowship Manoeuvre Response
elseif (name == self.effectlist["FMResponse"]:GetName()) then
if (self.effectlist["FMResponse"]:SetState(true, id)) then
self.skills["EscapeClause"]:SetActive(true);
self.skills["SeizeInitiative"]:SetActive(true);
end
-- Improved Feint Attack
elseif (name == self.effectlist["ImprovedFeint"]:GetName()) then
if (self.effectlist["ImprovedFeint"]:SetState(true, id)) then
self.skills["LIE"]:SetActive( true );
self.skills["LIE"]:SetCombat(true, true);
self.skills["Trip"]:SetCombat(true, true);
self.skills["Diversion"]:SetCombat(true, true);
end
elseif (name == self.effectlist["Campsite"]:GetName()) then
if (self.effectlist["Campsite"]:SetState(true, id)) then
self.skills["ContactPedlar"]:SetActive( true );
end
-- Fear
elseif (effect:GetCategory() == Turbine.Gameplay.EffectCategory.Poison ) then
self.poison = self.poison + 1;
if (self.settings.features["PoisonIndicator"]) then
self.skills["CurePoison"]:SetColor("green");
end
end
end
-- REMOVE EFFECT EVENT
function BurglarBars:RemoveEffect( effect )
local name = effect:GetName();
local id = effect:GetID();
-- Crit Response
if (name == self.effectlist["CriticalResponse"]:GetName()) then
if (not self.effectlist["CriticalResponse"]:SetState(false, id)) then
self.skills["BurglarsAdvantage"]:SetActive(false);
self.skills["DoubleEdgedStrike"]:SetActive(true);
self.skills["DoubleEdgedStrike"]:StartTimer(5, false);
if (vars.playerlevel > 24) then
self.bars["CritTier2"]:SetZOrder(0);
end
end
-- Double Edged
elseif (name == self.effectlist["DoubleEdged"]:GetName()) then
if (not self.effectlist["DoubleEdged"]:SetState(false, id)) then
self.skills["ExposedThroat"]:SetActive(false);
self.skills["FlashingBlades"]:SetActive(false);
self.skills["LuckyStrike"]:SetActive(false);
self.skills["FeintAttack"]:SetActive(false);
self.skills["SmallSnag"]:SetActive(false);
end
-- Stunned, Dazed or Knocked Down
elseif ((name == self.effectlist["Stunned"]:GetName() or name == self.effectlist["Dazed"]:GetName() or name == self.effectlist["KnockedDown"]:GetName() or name == self.effectlist["KnockedOut"]:GetName())) then
if (not self.effectlist["Stunned"]:SetState(false, id)) then
self.skills["FindFooting"]:SetActive(false);
end
-- Fellowship Manoeuvre Response
elseif (name == self.effectlist["FMResponse"]:GetName()) then
if (not self.effectlist["FMResponse"]:SetState(false, id)) then
self.skills["EscapeClause"]:SetActive(false);
self.skills["SeizeInitiative"]:SetActive(false);
end
-- Improved Feint Attack
elseif (name == self.effectlist["ImprovedFeint"]:GetName()) then
if (not self.effectlist["ImprovedFeint"]:SetState(false, id)) then
self.skills["LIE"]:SetCombat(false, true);
self.skills["Diversion"]:SetCombat(false, true);
self.skills["Trip"]:SetCombat(false, true);
end
elseif (name == self.effectlist["Campsite"]:GetName()) then
if (not self.effectlist["Campsite"]:SetState(false, id)) then
self.skills["ContactPedlar"]:SetActive(false);
end
-- Poison
elseif (effect:GetCategory() == Turbine.Gameplay.EffectCategory.Poison ) then
self.poison = self.poison - 1;
if (self.poison == 0) then
self.skills["CurePoison"]:SetColor();
end
end
end
-- STANCE CHANGED EVENT
function BurglarBars:StanceChange()
if(vars.classattr:GetStance() == 1) then
self.mischiefflag = self.mischiefflag + 1;
self.skills["Mischief"]:SetHover( true );
self.skills["Sneak"]:SetActive( false );
self.skills["ShareTheFun"]:SetActive( false );
self.skills["Confound"]:SetActive( true );
self.skills["CleverRetort"]:SetActive( true );
self.skills["FeintAttack"]:SetActive( false );
self.skills["LIE"]:SetActive( false );
self.skills["Diversion"]:SetActive( false );
self.skills["Burgle"]:SetActive( false );
self.skills["Trip"]:SetActive( false );
else
if (self.mischiefflag == 2) then
self.skills["Mischief"]:SetHover( false );
self.skills["Sneak"]:SetActive( true );
self.skills["ShareTheFun"]:SetActive( true );
self.skills["Confound"]:SetActive( false );
self.skills["CleverRetort"]:SetActive( self.settings.traits["HonedWit"].active );
self.skills["FeintAttack"]:SetActive( self.bars["CritTier3"].state );
self.skills["LIE"]:SetActive( true );
self.skills["Diversion"]:SetActive( true );
self.skills["Burgle"]:SetActive( true );
self.skills["Trip"]:SetActive( true );
self.mischiefflag = 0;
end
end
end
-- CRIT CHANGED EVENT
function BurglarBars:CritChange(tier, state)
if (tier == 2) then
self.bars["CritTier1"]:SetVisible( not state and vars.classattr:IsCriticalTier1Available() );
self.bars["CritTier2"]:SetVisible( state );
elseif (tier == 3) then
self.bars["CritTier3"]:SetVisible( state );
end
end
-- DEFAULT SETTINGS
function BurglarBars:DefaultSettings()
self.settings = { preconf = { }, userconf = { }, traits = { }, features = { }, defaults = { }, quickslots = { } };
self.settings.preconf["Crit"] = { id = 1, name = "Crit Reactives", defpos = {1,2}, size={3,2}, active = true, x=0, y=0, rotate=0 };
self.settings.userconf["FMReactives"] = { id = 2, name = "FM Reactives", defpos = {7,1}, size={2,1}, active = true, x=0, y=0, rotate=0 };
self.settings.userconf["Stance"] = { id = 3, name = "Stance", defpos = {11,3}, size={2,1}, active = true, x=0, y=0, rotate=0 };
self.settings.userconf["Stunned"] = { id = 4, name = "Stun", defpos = {12,2}, size={1,1}, active = true, x=0, y=0, rotate=0 };
self.settings.userconf["QuickBar1"] = { id = 5, name = "KB: Bar1", defpos = {1,4}, size={6,1}, active = true, x=0, y=0, rotate=0 };
self.settings.userconf["QuickBar2"] = { id = 6, name = "KB: Bar2", defpos = {7,4}, size={6,1}, active = true, x=0, y=0, rotate=0 };
self.settings.userconf["QuickBar3"] = { id = 7, name = "KB: Bar3", defpos = {1,3}, size={6,1}, active = true, x=0, y=0, rotate=0 };
self.settings.userconf["QuickBar4"] = { id = 8, name = "KB: Bar4", defpos = {7,3}, size={6,1}, active = true, x=0, y=0, rotate=0 };
self.settings.userconf["QuickBar5"] = { id = 9, name = "KB: Bar5", defpos = {1,2}, size={6,1}, active = true, x=0, y=0, rotate=0 };
self.settings.userconf["QuickBar6"] = { id = 10, name = "KB: Bar6", defpos = {7,2}, size={6,1}, active = true, x=0, y=0, rotate=0 };
self.settings.userconf["QuickBar7"] = { id = 11, name = "KB: Bar7", defpos = {1,1}, size={6,1}, active = true, x=0, y=0, rotate=0 };
self.settings.userconf["QuickBar8"] = { id = 12, name = "KB: Bar8", defpos = {7,1}, size={6,1}, active = true, x=0, y=0, rotate=0 };
self.settings.traits["ExposedThroat"] = { id = 1, name = 'Exposed Throat', active = false };
self.settings.traits["FlashingBlades"] = { id = 2, name = 'Flashing Blades', active = false };
self.settings.traits["HonedWit"] = { id = 3, name = 'Honed Wit', active = false };
self.settings.features["PoisonIndicator"] = { id = 1, name = 'Poison Indicator', active = true };
self.settings.quickslots["Marbles"] = {id = 1, name = "Marbles", active = false, type = 0, data = ""};
self.settings.quickslots["Caltrops"] = {id = 2, name = "Caltops",active = false, type = 0, data = ""};
self.settings.quickslots["StunDust"] = {id = 3, name = "StunDust", active = false, type = 0, data = ""};
self.settings.quickslots["Knives"] = {id = 4, name = "Knives/Hatchets", active = false, type = 0, data = ""};
end
-- UPDATE SETTINGS
function BurglarBars:UpdateSettings()
if (settings.vers < 3.20) then
self.settings.quickslots.knives = {active = false, type = 0, data = ""};
end
if (settings.vers < 3.21) 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].x = v.x;
self.settings.userconf[k].y = v.y;
self.settings.userconf[k].rotate = v.rotate;
self.settings.userconf[k].active = v.active;
end
else
self.settings.preconf[k].x = v.x;
self.settings.preconf[k].y = v.y;
self.settings.preconf[k].rotate = v.rotate;
self.settings.preconf[k].active = v.active;
end
elseif (k == "Features") then
for key, value in pairs(v) do
if (key == 'exposedthroat') then
self.settings.traits["ExposedThroat"].active = value;
elseif (key == 'flashingblades') then
self.settings.traits["FlashingBlades"].active = value;
elseif (key == 'honedwit') then
self.settings.traits["HonedWit"].active = value;
elseif (key == 'poisonindicator') then
self.settings.features["PoisonIndicator"].active = value;
end
end
elseif (k == "Quickslots") then
for key, value in pairs(v) do
if (key == 'marbles') then
self.settings.quickslots["Marbles"].active = value.active;
self.settings.quickslots["Marbles"].type = value.type;
self.settings.quickslots["Marbles"].data = value.data;
elseif (key == 'caltrops') then
self.settings.quickslots["Caltrops"].active = value.active;
self.settings.quickslots["Caltrops"].type = value.type;
self.settings.quickslots["Caltrops"].data = value.data;
elseif (key == 'stundust') then
self.settings.quickslots["StunDust"].active = value.active;
self.settings.quickslots["StunDust"].type = value.type;
self.settings.quickslots["StunDust"].data = value.data;
elseif (key == 'knives') then
self.settings.quickslots["Knives"].active = value.active;
self.settings.quickslots["Knives"].type = value.type;
self.settings.quickslots["Knives"].data = value.data;
end
end
end
end
end
settings.vers = vars.vers;
end
-- DISPLAY SETUP WINDOW AND SET ALL CHECKBOXES COMBOBOXES SLIDERS AND QUICKSLOTS
function BurglarBars: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);
for k, v in pairs (self.settings.preconf) do
self.setupbb["checkboxbb"..tostring(v.id)]:SetText(v.name);
self.setupbb["checkboxbb"..tostring(v.id)]:SetChecked (v.active);
self.setupbb["checkboxbb"..tostring(v.id)]:SetVisible(true);
end
for k, v in pairs (self.settings.userconf) do
self.setupbb["checkboxbb"..tostring(v.id)]:SetText(v.name);
self.setupbb["checkboxbb"..tostring(v.id)]:SetChecked (v.active);
self.setupbb["checkboxbb"..tostring(v.id)]:SetVisible(true);
end
for k,v in pairs(self.settings.traits) do
self.setupf["checkboxf"..tostring(v.id)]:SetText(v.name);
self.setupf["checkboxf"..tostring(v.id)]:SetChecked (v.active);
self.setupf["checkboxf"..tostring(v.id)]:SetVisible(true);
end
for k,v in pairs(self.settings.features) do
self.setupf["checkboxf"..tostring(v.id+9)]:SetText(v.name);
self.setupf["checkboxf"..tostring(v.id+9)]:SetChecked (v.active);
self.setupf["checkboxf"..tostring(v.id+9)]:SetVisible(true);
end
for k,v in pairs(self.settings.quickslots) do
pcall(function() self.setupqs["quickslot"..tostring(v.id)]:SetShortcut(Turbine.UI.Lotro.Shortcut( v.type, v.data ) ); end);
self.setupqs["quickslot"..tostring(v.id)]:SetVisible(true);
self.setupqs["quickslot"..tostring(v.id).."cb"]:SetText(v.name);
self.setupqs["quickslot"..tostring(v.id).."cb"]:SetChecked(v.active);
self.setupqs["quickslot"..tostring(v.id).."cb"]:SetVisible(true);
end
end
-- SET ALL VARIABLES OFF OF SETUP WINDOW
function BurglarBars:SetupClosing()
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();
for k, v in pairs (self.settings.preconf) do
v.active = self.setupbb["checkboxbb"..tostring(v.id)]:IsChecked();
end
for k, v in pairs (self.settings.userconf) do
v.active = self.setupbb["checkboxbb"..tostring(v.id)]:IsChecked();
end
for k, v in pairs (self.settings.traits) do
v.active = self.setupf["checkboxf"..tostring(v.id)]:IsChecked();
end
for k, v in pairs (self.settings.features) do
v.active = self.setupf["checkboxf"..tostring(v.id+9)]:IsChecked();
end
for k, v in pairs (self.settings.quickslots) do
v.active = self.setupqs["quickslot"..tostring(v.id).."cb"]:IsChecked();
v.type = self.setupqs["quickslot"..tostring(v.id)]:GetShortcut():GetType();
v.data = self.setupqs["quickslot"..tostring(v.id)]:GetShortcut():GetData();
end
self:SaveSettings();
self:Refresh();
end
-- REFRESH SKILLS AND BARS
function BurglarBars: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["ExposedThroat"]:SetActive(self.effectlist["DoubleEdged"]:GetState() and self.settings.traits["ExposedThroat"].active);
self.skills["FlashingBlades"]:SetActive(self.effectlist["DoubleEdged"]:GetState() and self.settings.traits["FlashingBlades"].active);
self.skills["CleverRetort"]:SetActive(self.settings.traits["HonedWit"].active or vars.classattr:GetStance() == 1);
-- Setup Quickslots
self.skills["Marbles"]:SetQuickslot(self.settings.quickslots["Marbles"].active, self.settings.quickslots["Marbles"].type, self.settings.quickslots["Marbles"].data);
self.skills["Caltrops"]:SetQuickslot(self.settings.quickslots["Caltrops"].active, self.settings.quickslots["Caltrops"].type, self.settings.quickslots["Caltrops"].data);
self.skills["StunDust"]:SetQuickslot(self.settings.quickslots["StunDust"].active, self.settings.quickslots["StunDust"].type, self.settings.quickslots["StunDust"].data);
self.skills["Knives"]:SetQuickslot(self.settings.quickslots["Knives"].active, self.settings.quickslots["Knives"].type, self.settings.quickslots["Knives"].data);
-- Set Poison Indicator
if (self.settings.features["PoisonIndicator"].active and self.poison > 0) then
self.skills["CurePoison"]:SetColor("green");
else
self.skills["CurePoison"]:SetColor();
end
-- Refresh States
self:CombatChange(vars.player:IsInCombat());
--Turbine.Shell.WriteLine("KragenBars: Burglar Bars refresh completed successfully.");
end