import "Turbine.UI";
import "Turbine.UI.Lotro";
import "Turbine.Gameplay";
import "KragenPlugs.Utils";
import "KragenPlugs.KragenBars";
ChampionBars = class( KragenPlugs.KragenBars.ClassBar );
function ChampionBars:Constructor()
KragenPlugs.KragenBars.ClassBar.Constructor( self );
-- CLASS SPECIFIC VARIABLES
self.fear = 0;
self.controlledburnflag = false;
self.stance = 0;
self.effectlist = {};
self.effectlist['EnemyDefeatResponse'] = Effect();
self.effectlist['BlockingBlades'] = Effect();
self.effectlist['ArdentFlurry'] = Effect();
self.effectlist['GloriousExchange'] = Effect();
self.effectlist['Flurry'] = Effect();
self.effectlist['ImprovedFlurry'] = Effect();
self.effectlist['ExchangeOfBlows'] = Effect();
self.effectlist['ImprovedExchange'] = Effect();
self.effectlist['Stunned'] = Effect();
self.effectlist['Dazed'] = Effect();
self.effectlist['KnockedDown'] = Effect();
self.effectlist['Rooted'] = Effect();
self.effectlist['Silenced'] = Effect();
self.effectlist['Disarmed'] = Effect();
self.effectlist['ControlledBurn'] = Effect();
self.effectlist['GreatCleave'] = Effect();
self.effectlist['DeathStorm'] = Effect();
self.effectlist['Fervor'] = Effect();
self.effectlist['Ardor'] = Effect();
self.effectlist['Glory'] = 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['BlockingBlades'] :SetName('Blocking Blades');
self.effectlist['ArdentFlurry'] :SetName('Ardent Flurry');
self.effectlist['GloriousExchange'] :SetName('Glorious Exchange');
self.effectlist['Flurry'] :SetName('Flurry');
self.effectlist['ImprovedFlurry'] :SetName('Improved Flurry');
self.effectlist['ExchangeOfBlows'] :SetName('Exchange of Blows');
self.effectlist['ImprovedExchange'] :SetName('Improved Exchange of Blows');
self.effectlist['Stunned'] :SetName('Stunned');
self.effectlist['Dazed'] :SetName('Dazed');
self.effectlist['KnockedDown'] :SetName('Knocked Down');
self.effectlist['Rooted'] :SetName('Rooted');
self.effectlist['Silenced'] :SetName('Silenced');
self.effectlist['Disarmed'] :SetName('Primary Weapon: Disarmed');
self.effectlist['ControlledBurn'] :SetName('Controlled Burn');
self.effectlist['GreatCleave'] :SetName('Great Cleave');
self.effectlist['DeathStorm'] :SetName('Death Storm');
self.effectlist['Fervor'] :SetName("Champion's Fervour");
self.effectlist['Ardor'] :SetName("Ardour");
self.effectlist['Glory'] :SetName("Glory");
-- FRENCH CLIENT
elseif (settings.language == 2) then
self.effectlist['EnemyDefeatResponse'] :SetName('Evènement de défaite (ennemi)');
self.effectlist['BlockingBlades'] :SetName('Lames bloquantes');
self.effectlist['ArdentFlurry'] :SetName('Rafale ardente');
self.effectlist['GloriousExchange'] :SetName('Echange glorieux');
self.effectlist['Flurry'] :SetName('Rafale');
self.effectlist['ImprovedFlurry'] :SetName('Rafale améliorée');
self.effectlist['ExchangeOfBlows'] :SetName('Echange de coups');
self.effectlist['ImprovedExchange'] :SetName('Echange de coups am�lior�');
self.effectlist['Stunned'] :SetName('Etourdissement');
self.effectlist['Dazed'] :SetName('Hébété');
self.effectlist['KnockedDown'] :SetName('Renversé');
self.effectlist['Rooted'] :SetName('Rooted');
self.effectlist['Silenced'] :SetName('Silenced');
self.effectlist['Disarmed'] :SetName('Arme primaire : Désarmée');
self.effectlist['ControlledBurn'] :SetName('Brûlure Contrôlée');
self.effectlist['GreatCleave'] :SetName('Great Cleave');
self.effectlist['DeathStorm'] :SetName('Death Storm');
self.effectlist['Fervor'] :SetName("Ferveur du Champion (Ferveur tout court)");
self.effectlist['Ardor'] :SetName("Ardeur");
self.effectlist['Glory'] :SetName("Gloire");
-- GERMAN CLIENT
elseif (settings.language == 3) then
self.effectlist['EnemyDefeatResponse'] :SetName('Erwiderung "Vernichtung des Gegners"');
self.effectlist['BlockingBlades'] :SetName('Blockende Klingen');
self.effectlist['ArdentFlurry'] :SetName('Leidenschaftlicher Wirbel');
self.effectlist['GloriousExchange'] :SetName('Glorreicher Schlagabtausch');
self.effectlist['Flurry'] :SetName('Wirbel');
self.effectlist['ImprovedFlurry'] :SetName('Verbesserung: Wirbel');
self.effectlist['ExchangeOfBlows'] :SetName('Schlagabtausch');
self.effectlist['ImprovedExchange'] :SetName('Verbesserung: Schlagabtausch');
self.effectlist['Stunned'] :SetName('Bewusstlos geschlagen');
self.effectlist['Dazed'] :SetName('Benommenheit');
self.effectlist['KnockedDown'] :SetName('Zu Boden geschlagen');
self.effectlist['Rooted'] :SetName('Angewurzelt');
self.effectlist['Silenced'] :SetName('Silenced');
self.effectlist['Disarmed'] :SetName('Primärwaffe: Entwaffnet');
self.effectlist['ControlledBurn'] :SetName('Kontrolliertes Verbrennen');
self.effectlist['GreatCleave'] :SetName('Great Cleave');
self.effectlist['DeathStorm'] :SetName('Death Storm');
self.effectlist['Fervor'] :SetName("Leidenschaft des Waffenmeisters");
self.effectlist['Ardor'] :SetName("Eifer");
self.effectlist['Glory'] :SetName("Ruhm");
end
end
-- BUILD WINDOWS BARS SKILLS AND MULTIS --
-- Build Skills
self.skills["WildAttack"] = SkillSlot(self.bars["Melee"], 1, 1, true, 1, "0x70003DFC");
self.skills["BladeWall"] = SkillSlot(self.bars["Melee"], 2, 1, true, 1, "0x70003DFD");
self.skills["SwiftStrike"] = SkillSlot(self.bars["Melee"], 3, 1, true, 1, "0x7000300F");
self.skills["SavageStrikes"] = SkillSlot(self.bars["Fervor:ST"], 1, 1, true, { 2, 52 }, { "0x70003DFE", "0x7000F661" } );
self.skills["BrutalStrikes"] = SkillSlot(self.bars["Fervor:ST"], 2, 1, true, 6, "0x70003E01");
self.skills["RelentlessStrike"] = SkillSlot(self.bars["Fervor:ST"], 3, 1, true, { 20, 62 }, { "0x70003E07", "0x7001F4B3" } );
self.skills["FerociousStrikes"] = SkillSlot(self.bars["Fervor:ST"], 4, 1, self.settings.traits["FerociousStrikes"].active, 41, "0x70002D8D");
self.skills["BladeStorm"] = SkillSlot(self.bars["Fervor:AOE"], 1, 1, true, 10, "0x70003E03");
self.skills["Cleave"] = SkillSlot(self.bars["Fervor:AOE"], 2, 1, true, { 16, 54 }, { "0x70003E05", "0x7000F660" } );
self.skills["SoundTheAttack"] = SkillSlot(self.bars["Fervor:AOE"], 3, 1, true, 34, "0x70003E0D");
self.skills["RagingBlades"] = SkillSlot(self.bars["Fervor:AOE"], 4, 1, self.settings.traits["RagingBlades"].active, 41, "0x70002DA9");
self.skills["BracingAttack"] = SkillSlot(self.bars["Fervor:Util"], 3, 1, true, 14, "0x70003E04");
self.skills["Clobber"] = SkillSlot(self.bars["Fervor:Util"], 1, 1, true, 32, "0x70003E0C");
self.skills["Hamstring"] = SkillSlot(self.bars["Fervor:Util"], 2, 1, true, 36, "0x70003E0E" );
self.skills["MercifulStrike"] = SkillSlot(self.bars["Conditional"], 1, 1, true, 24, "0x70003E09");
self.skills["FightingDirty"] = SkillSlot(self.bars["Conditional"], 2, 1, true, 26, "0x70003E0A" );
self.skills["SecondWind"] = SkillSlot(self.bars["Defeat"], 1, 1, false, 14, "0x7000D47A");
self.skills["Heroics"] = SkillSlot(self.bars["Defeat"], 2, 1, false, { 40, 64 }, { "0x70009678", "0x70020DF3" } );
self.skills["RedHaze"] = SkillSlot(self.bars["Defeat"], 3, 1, false, 50, "0x7000967D");
self.skills["ArdentFlurry"] = SkillSlot(self.bars["Defeat"], 1, 2, false, 10, "0x7000D606");
self.skills["GloriousExchange"] = SkillSlot(self.bars["Defeat"], 2, 2, false, 30, "0x7000D626");
self.skills["BlockingBlades"] = SkillSlot(self.bars["Defeat"], 3, 2, false, 48, "0x70009679");
self.skills["Flurry"] = SkillSlot(self.bars["Buffs"], 1, 1, true, 4, "0x70003E00");
self.skills["ExchangeOfBlows"] = SkillSlot(self.bars["Buffs"], 2, 1, true, 8, "0x70003E02");
self.skills["BattleFrenzy"] = SkillSlot(self.bars["SelfBuffs"], 1, 1, true, 8, "0x70003043");
self.skills["SuddenDefence"] = SkillSlot(self.bars["SelfBuffs"], 2, 1, true, 18, "0x70003E06");
self.skills["Sprint"] = SkillSlot(self.bars["SelfBuffs"], 3, 1, true, 28, "0x70003E0B");
self.skills["DireNeed"] = SkillSlot(self.bars["SelfBuffs"], 4, 1, true, 30, "0x70003047");
self.skills["FightOn"] = SkillSlot(self.bars["SelfBuffs"], 5, 1, self.settings.traits["FightOn"].active, 41, "0x70002D9D");
self.skills["FearNothing"] = SkillSlot(self.bars["SelfBuffs"], 6, 1, true, 46, "0x70021D27");
self.skills["Adamant"] = SkillSlot(self.bars["SelfBuffs"], 7, 1, true, 56, "0x7000F70B");
self.skills["GreatCleave"] = SkillSlot(self.bars["SelfBuffs"], 8, 1, true, 58, "0x7000F70C");
self.skills["CBR"] = SkillSlot(self.bars["SelfBuffs"], 9, 1, self.settings.traits["CBR"].active, 60, "0x7000F70A");
self.skills["Challenge"] = SkillSlot(self.bars["Threat"], 1, 1, true, 22, "0x70003E08");
self.skills["RisingIre"] = SkillSlot(self.bars["Threat"], 2, 1, true, 42, "0x70009E5C");
self.skills["EbbingIre"] = SkillSlot(self.bars["Threat"], 3, 1, true, 44, "0x70009E5B");
self.skills["Hedge"] = SkillSlot(self.bars["Stunned"], 1, 1, false, 38, "0x70003E0F");
self.skills["BloodRage"] = SkillSlot(self.bars["Stunned"], 2, 1, false, 60, "0x7000F70E");
self.skills["LetFly"] = SkillSlot(self.bars["Ranged"], 1, 1, true, 30, "0x70003E14");
self.skills["CraftedHorn"] = ItemSlot(self.bars["ClassItems"], 1, 1, true, self.settings.quickslots["CraftedHorn"]);
self.skills["FervorPotions"] = ItemSlot(self.bars["ClassItems"], 2, 1, true, self.settings.quickslots["FervorPotions"]);
-- Build Stance Slot
self.multi["StanceSlot"] = SkillMultiSlot(self.bars["Stances"], 1, 1, true);
self.multi["StanceSlot"]:AddShortCut("Fervour", 4, "0x70003DFF");
self.multi["StanceSlot"]:AddShortCut("Ardour", 10, "0x7000D46C");
self.multi["StanceSlot"]:AddShortCut("Glory", 30, "0x7000967C");
if (self.settings.traits["ControlledBurn"].active) then self.multi["StanceSlot"]:AddShortCut("ControlledBurn", 45, "0x70002DB5"); end
self.multi["StanceSlot"]:LevelCheck();
-- SET COMBAT STATES
self.skills["Hamstring"]:SetCombat(true, false);
self.skills["SuddenDefence"]:SetCombat(true, false);
-- ITEM MANAGER
--self.itemmanager = ItemManager();
--self.itemmanager:RegisterItem("Horn", { "Simple","Exquisite Simple","Carved","Exquisite Carved","Battle","Exquisite Battle","Combat","Exquisite Combat","War","Exquisite War","Campaign","Exquisite Campaign" }, {"Recipe", "Dwarrowdelf"}, self.skills["CraftedHorn"]);
--self.itemmanager:RegisterItem("Potion of Fervour", { "Journeyman","Expert","Artisan","Master","Supreme" }, {"Recipe"}, self.skills["FervorPotions"]);
--self.itemmanager:ParseItems();
-- CLASS SPECIFIC SETUP/DEFAULT CODE
-- CLASS SPECIFIC EVENTS
-- Stance Change Event
AddCallback(vars.classattr, "StanceChanged", function(sender, args)
if (vars.classattr:GetStance() == 0) then
KragenBars:StanceChange(0);
end
end);
-- Fervor Changed Event
AddCallback(vars.classattr, "FervorChanged", function(sender, args)
KragenBars:FervorChange(vars.classattr:GetFervor());
end);
-- INITIALIZE BARS
self:InitBars();
self:FervorChange(vars.classattr:GetFervor());
self:CombatChange(vars.player:IsInCombat());
end
-- ADD EFFECT EVENT
function ChampionBars:AddEffect( effectIndex )
local effect = vars.player:GetEffects():Get( effectIndex );
local effectname = effect:GetName();
local effectid = effect:GetID();
-- Defeat Response
if (effectname == self.effectlist["EnemyDefeatResponse"]:GetName()) then
if (self.effectlist["EnemyDefeatResponse"]:SetState( true, effectid )) then
self.skills["SecondWind"]:SetActive( true );
self.skills["Heroics"]:SetActive( true );
self.skills["RedHaze"]:SetActive( true );
self.skills["ArdentFlurry"]:SetActive( (self.stance == 2 or self.controlledburnflag) and not self.effectlist["ArdentFlurry"]:GetState());
self.skills["GloriousExchange"]:SetActive( (self.stance == 3 or self.controlledburnflag) and not self.effectlist["GloriousExchange"]:GetState());
self.skills["BlockingBlades"]:SetActive( (self.stance ~= 1) and not self.effectlist["BlockingBlades"]:GetState());
end
-- Blocking Blades
elseif (effectname == self.effectlist["BlockingBlades"]:GetName()) then
self.effectlist["BlockingBlades"]:SetState( true, effectid );
-- Ardent Flurry
elseif (effectname == self.effectlist["ArdentFlurry"]:GetName()) then
self.effectlist["ArdentFlurry"]:SetState( true, effectid );
-- Glorious Exchange
elseif (effectname == self.effectlist["GloriousExchange"]:GetName()) then
self.effectlist["GloriousExchange"]:SetState( true, effectid );
-- Flurry
elseif (effectname == self.effectlist["Flurry"]:GetName() or effectname == self.effectlist["ImprovedFlurry"]:GetName()) then
if (self.effectlist["Flurry"]:SetState( true, effectid )) then
self.skills["Flurry"]:SetActive(self.settings.defaults["BuffActive"].selected < 3);
if (self.settings.defaults["BuffActive"].selected == 2) then
self.skills["Flurry"]:SetHover( true );
elseif (self.settings.defaults["BuffActive"].selected == 4) then
self.skills["Flurry"]:StartTimer( effect:GetDuration() * .70, true );
end
end
-- Exchange
elseif (effectname == self.effectlist["ExchangeOfBlows"]:GetName() or effectname == self.effectlist["ImprovedExchange"]:GetName()) then
if (self.effectlist["ExchangeOfBlows"]:SetState( true, effectid )) then
self.skills["ExchangeOfBlows"]:SetActive(self.settings.defaults["BuffActive"].selected < 3);
if (self.settings.defaults["BuffActive"].selected == 2) then
self.skills["ExchangeOfBlows"]:SetHover( true );
elseif (self.settings.defaults["BuffActive"].selected == 4) then
self.skills["ExchangeOfBlows"]:StartTimer( effect:GetDuration() * .80, true );
end
end
-- Stances
elseif (effectname == self.effectlist["Fervor"]:GetName()) then
if (self.effectlist["Fervor"]:SetState( true, effectid )) then
self:StanceChange(1);
end
elseif (effectname == self.effectlist["Ardor"]:GetName()) then
if (self.effectlist["Ardor"]:SetState( true, effectid )) then
self:StanceChange(2);
end
elseif (effectname == self.effectlist["Glory"]:GetName()) then
if (self.effectlist["Glory"]:SetState( true, effectid )) then
self:StanceChange(3);
end
-- Stunned, Dazed, Knocked Down
elseif (effectname == self.effectlist["Stunned"]:GetName() or effectname == self.effectlist["Dazed"]:GetName() or effectname == self.effectlist["KnockedDown"]:GetName() or effectname == self.effectlist["Rooted"]:GetName()) then
if (self.effectlist["Stunned"]:SetState( true, effectid )) then
self.skills["BloodRage"]:SetActive( true );
end
-- Disarmed
elseif (effectname == self.effectlist["Disarmed"]:GetName()) then
if (self.effectlist["Disarmed"]:SetState( true, effectid )) then
self.skills["Hedge"]:SetActive( true );
end
-- Silenced
elseif (effectname == self.effectlist["Silenced"]:GetName()) then
if (self.effectlist["Silenced"]:SetState( true, effectid )) then
self.skills["Challenge"]:SetActive(false);
end
-- Controlled Burn
elseif (effectname == self.effectlist["ControlledBurn"]:GetName()) then
if (self.effectlist["ControlledBurn"]:SetState( true, effectid )) then
self.controlledburnflag = true;
self.skills["ArdentFlurry"]:SetActive(not self.skills["ArdentFlurry"].state);
self.skills["GloriousExchange"]:SetActive(not self.effectlist["GloriousExchange"]:GetState());
self.skills["BlockingBlades"]:SetActive(not self.effectlist["BlockingBlades"]:GetState());
self.skills["Flurry"]:SetActive(false);
self.skills["ExchangeOfBlows"]:SetActive(false);
self.skills["Flurry"].timer:Stop();
self.skills["ExchangeOfBlows"].timer:Stop();
self.multi["StanceSlot"]:SetActive( false );
end
-- Great Cleave
elseif (effectname == self.effectlist["GreatCleave"]:GetName()) then
if (self.effectlist["GreatCleave"]:SetState( true, effectid )) then
self:FervorChange(vars.classattr:GetFervor());
end
-- Deathstorm
elseif (effectname == self.effectlist["DeathStorm"]:GetName()) then
if (self.effectlist["DeathStorm"]:SetState( true, effectid )) then
self:FervorChange(vars.classattr:GetFervor());
end
-- Fear
elseif (effect:GetCategory() == Turbine.Gameplay.EffectCategory.Fear ) then
self.fear = self.fear + 1;
if (self.settings.features["FearIndicator"].active) then
self.skills["FearNothing"]:SetColor("purple");
end
end
end
-- REMOVE EFFECT EVENT
function ChampionBars: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["SecondWind"]:SetActive( false );
self.skills["Heroics"]:SetActive( false );
self.skills["RedHaze"]:SetActive( false );
self.skills["ArdentFlurry"]:SetActive( false );
self.skills["GloriousExchange"]:SetActive( false );
self.skills["BlockingBlades"]:SetActive( false );
end
-- Blocking Blades
elseif (effectname == self.effectlist["BlockingBlades"]:GetName()) then
if (not self.effectlist["BlockingBlades"]:SetState( false, effectid )) then
self.skills["BlockingBlades"]:SetActive( self.effectlist["EnemyDefeatResponse"]:GetState() );
end
-- Ardent Flurry
elseif (effectname == self.effectlist["ArdentFlurry"]:GetName()) then
if (not self.effectlist["ArdentFlurry"]:SetState( false, effectid )) then
self.skills["ArdentFlurry"]:SetActive( self.effectlist["EnemyDefeatResponse"]:GetState() );
end
-- Glorious Exchange
elseif (effectname == self.effectlist["GloriousExchange"]:GetName()) then
if (not self.effectlist["GloriousExchange"]:SetState( false, effectid )) then
self.skills["GloriousExchange"]:SetActive( self.effectlist["EnemyDefeatResponse"]:GetState() );
end
-- Flurry
elseif (effectname == self.effectlist["Flurry"]:GetName() or effectname == self.effectlist["ImprovedFlurry"]:GetName()) then
if (not self.effectlist["Flurry"]:SetState( false, effectid )) then
if (self.stance == 2 or self.controlledburnflag) then
self.skills["Flurry"]:SetActive( false );
else
self.skills["Flurry"]:SetActive( true );
end
self.skills["Flurry"]:SetHover(false);
end
-- Exchange
elseif (effectname == self.effectlist["ExchangeOfBlows"]:GetName() or effectname == self.effectlist["ImprovedExchange"]:GetName()) then
if (not self.effectlist["ExchangeOfBlows"]:SetState( false, effectid )) then
if (self.stance == 3 or self.controlledburnflag) then
self.skills["ExchangeOfBlows"]:SetActive( false );
else
self.skills["ExchangeOfBlows"]:SetActive( true );
end
self.skills["ExchangeOfBlows"]:SetHover(false);
end
-- Stances
elseif (effectname == self.effectlist["Fervor"]:GetName()) then
self.effectlist["Fervor"]:SetState( false, effectid )
elseif (effectname == self.effectlist["Ardor"]:GetName()) then
self.effectlist["Ardor"]:SetState( false, effectid )
elseif (effectname == self.effectlist["Glory"]:GetName()) then
self.effectlist["Glory"]:SetState( false, effectid )
-- Stunned, Dazed or Knocked Down
elseif (effectname == self.effectlist["Stunned"]:GetName() or effectname == self.effectlist["Dazed"]:GetName() or effectname == self.effectlist["KnockedDown"]:GetName() or effectname == self.effectlist["Rooted"]:GetName()) then
if (not self.effectlist["Stunned"]:SetState( false, effectid )) then
self.skills["BloodRage"]:SetActive( false );
end
-- Disarmed
elseif (effectname == self.effectlist["Disarmed"]:GetName()) then
if (not self.effectlist["Disarmed"]:SetState( false, effectid )) then
self.skills["Hedge"]:SetActive( false );
end
-- Silenced
elseif (effectname == self.effectlist["Silenced"]:GetName()) then
if (not self.effectlist["Silenced"]:SetState( false, effectid )) then
self.skills["Challenge"]:SetActive(true);
end
-- Controlled Burn
elseif (effectname == self.effectlist["ControlledBurn"]:GetName()) then
if (not self.effectlist["ControlledBurn"]:SetState( false, effectid )) then
self.controlledburnflag = false;
self:StanceChange(vars.classattr:GetStance());
self.multi["StanceSlot"]:SetActive( true );
end
-- Great Cleave
elseif (effectname == self.effectlist["GreatCleave"]:GetName()) then
if (not self.effectlist["GreatCleave"]:SetState( false, effectid )) then
self:FervorChange(vars.classattr:GetFervor());
end
-- DeathStorm
elseif (effectname == self.effectlist["DeathStorm"]:GetName()) then
if (not self.effectlist["DeathStorm"]:SetState( false, effectid )) then
self:FervorChange(vars.classattr:GetFervor());
end
-- Fear
elseif (effect:GetCategory() == Turbine.Gameplay.EffectCategory.Fear ) then
self.fear = self.fear - 1;
if (self.fear == 0) then
self.skills["FearNothing"]:SetColor();
end
end
end
-- FERVOR CHANGED EVENT
function ChampionBars:FervorChange(fervor)
if (fervor == 0) then
self.skills["SavageStrikes"]:SetActive(false);
self.skills["BrutalStrikes"]:SetActive(false);
self.skills["RelentlessStrike"]:SetActive(false);
self.skills["FerociousStrikes"]:SetActive(false);
self.skills["Cleave"]:SetActive(self.effectlist["DeathStorm"]:GetState());
self.skills["BladeStorm"]:SetActive(self.effectlist["DeathStorm"]:GetState());
self.skills["RagingBlades"]:SetActive(self.effectlist["DeathStorm"]:GetState() and self.settings.traits["RagingBlades"].active);
self.skills["SoundTheAttack"]:SetActive(self.effectlist["DeathStorm"]:GetState());
self.skills["Clobber"]:SetActive(false);
self.skills["Hamstring"]:SetActive(false);
self.skills["BracingAttack"]:SetActive(false);
self.skills["SuddenDefence"]:SetActive(false);
self.skills["RisingIre"]:SetActive(false);
self.skills["EbbingIre"]:SetActive(false);
self.skills["GreatCleave"]:SetActive(false);
elseif (fervor == 1) then
self.skills["SavageStrikes"]:SetActive(false);
self.skills["BrutalStrikes"]:SetActive(false);
self.skills["RelentlessStrike"]:SetActive(false);
self.skills["FerociousStrikes"]:SetActive(false);
self.skills["Cleave"]:SetActive(self.effectlist["DeathStorm"]:GetState() or self.effectlist["GreatCleave"]:GetState());
self.skills["BladeStorm"]:SetActive(self.effectlist["DeathStorm"]:GetState());
self.skills["RagingBlades"]:SetActive(self.effectlist["DeathStorm"]:GetState() and self.settings.traits["RagingBlades"].active);
self.skills["SoundTheAttack"]:SetActive(self.effectlist["DeathStorm"]:GetState());
self.skills["Clobber"]:SetActive(true);
self.skills["Hamstring"]:SetActive(true);
self.skills["BracingAttack"]:SetActive(false);
self.skills["SuddenDefence"]:SetActive(true);
self.skills["RisingIre"]:SetActive(false);
self.skills["EbbingIre"]:SetActive(false);
self.skills["GreatCleave"]:SetActive(false);
elseif (fervor == 2) then
self.skills["SavageStrikes"]:SetActive(true);
self.skills["BrutalStrikes"]:SetActive(false);
self.skills["RelentlessStrike"]:SetActive(false);
self.skills["FerociousStrikes"]:SetActive(false);
self.skills["Cleave"]:SetActive(true);
self.skills["BladeStorm"]:SetActive(self.effectlist["DeathStorm"]:GetState() or (self.effectlist["GreatCleave"]:GetState() and self.settings.traits["EyeOfTheStorm"].active));
self.skills["RagingBlades"]:SetActive(self.effectlist["DeathStorm"]:GetState() and self.settings.traits["RagingBlades"].active);
self.skills["SoundTheAttack"]:SetActive(self.effectlist["DeathStorm"]:GetState());
self.skills["Clobber"]:SetActive(true);
self.skills["Hamstring"]:SetActive(true);
self.skills["BracingAttack"]:SetActive(false);
self.skills["SuddenDefence"]:SetActive(true);
self.skills["RisingIre"]:SetActive(true);
self.skills["EbbingIre"]:SetActive(false);
self.skills["GreatCleave"]:SetActive(false);
elseif (fervor == 3) then
self.skills["SavageStrikes"]:SetActive(true);
self.skills["BrutalStrikes"]:SetActive(true);
self.skills["RelentlessStrike"]:SetActive(false);
self.skills["FerociousStrikes"]:SetActive(false);
self.skills["Cleave"]:SetActive(true);
self.skills["BladeStorm"]:SetActive(self.settings.traits["EyeOfTheStorm"].active or self.effectlist["DeathStorm"]:GetState() or self.effectlist["GreatCleave"]:GetState());
self.skills["RagingBlades"]:SetActive(self.effectlist["DeathStorm"]:GetState() and self.settings.traits["RagingBlades"].active);
self.skills["SoundTheAttack"]:SetActive(self.effectlist["DeathStorm"]:GetState());
self.skills["Clobber"]:SetActive(true);
self.skills["Hamstring"]:SetActive(true);
self.skills["BracingAttack"]:SetActive(true);
self.skills["SuddenDefence"]:SetActive(true);
self.skills["RisingIre"]:SetActive(true);
self.skills["EbbingIre"]:SetActive(false);
self.skills["GreatCleave"]:SetActive(false);
elseif (fervor == 4) then
self.skills["SavageStrikes"]:SetActive(true);
self.skills["BrutalStrikes"]:SetActive(true);
self.skills["RelentlessStrike"]:SetActive(true);
self.skills["FerociousStrikes"]:SetActive(false);
self.skills["Cleave"]:SetActive(true);
self.skills["BladeStorm"]:SetActive(true);
self.skills["RagingBlades"]:SetActive((self.effectlist["DeathStorm"]:GetState() or self.effectlist["GreatCleave"]:GetState()) and self.settings.traits["RagingBlades"].active);
self.skills["SoundTheAttack"]:SetActive(self.effectlist["DeathStorm"]:GetState() or self.effectlist["GreatCleave"]:GetState());
self.skills["Clobber"]:SetActive(true);
self.skills["Hamstring"]:SetActive(true);
self.skills["BracingAttack"]:SetActive(true);
self.skills["SuddenDefence"]:SetActive(true);
self.skills["RisingIre"]:SetActive(true);
self.skills["EbbingIre"]:SetActive(true);
self.skills["GreatCleave"]:SetActive(false);
elseif (fervor == 5) then
self.skills["SavageStrikes"]:SetActive(true);
self.skills["BrutalStrikes"]:SetActive(true);
self.skills["RelentlessStrike"]:SetActive(true);
self.skills["FerociousStrikes"]:SetActive(self.settings.traits["FerociousStrikes"].active);
self.skills["Cleave"]:SetActive(true);
self.skills["BladeStorm"]:SetActive(true);
self.skills["RagingBlades"]:SetActive(self.settings.traits["RagingBlades"].active);
self.skills["SoundTheAttack"]:SetActive(true);
self.skills["Clobber"]:SetActive(true);
self.skills["Hamstring"]:SetActive(true);
self.skills["BracingAttack"]:SetActive(true);
self.skills["SuddenDefence"]:SetActive(true);
self.skills["RisingIre"]:SetActive(true);
self.skills["EbbingIre"]:SetActive(true);
self.skills["GreatCleave"]:SetActive(true);
end
end
-- STANCE CHANGED EVENT
function ChampionBars:StanceChange(stance)
self.stance = stance;
if (stance == 1) then
self.skills["Flurry"]:SetActive(not self.effectlist["Flurry"]:GetState());
self.skills["ExchangeOfBlows"]:SetActive(not self.effectlist["ExchangeOfBlows"]:GetState());
elseif (stance == 2) then
self.skills["ArdentFlurry"]:SetActive(not self.effectlist["ArdentFlurry"]:GetState() and self.effectlist["EnemyDefeatResponse"]:GetState());
self.skills["GloriousExchange"]:SetActive(false);
self.skills["BlockingBlades"]:SetActive(not self.effectlist["BlockingBlades"]:GetState() and self.effectlist["EnemyDefeatResponse"]:GetState());
self.skills["Flurry"]:SetActive(false);
self.skills["ExchangeOfBlows"]:SetActive(not self.effectlist["ExchangeOfBlows"]:GetState());
self.skills["Flurry"].timer:Stop();
elseif (stance == 3) then
self.skills["ArdentFlurry"]:SetActive(false);
self.skills["GloriousExchange"]:SetActive(not self.effectlist["GloriousExchange"]:GetState() and self.effectlist["EnemyDefeatResponse"]:GetState());
self.skills["BlockingBlades"]:SetActive(not self.effectlist["BlockingBlades"]:GetState() and self.effectlist["EnemyDefeatResponse"]:GetState());
self.skills["Flurry"]:SetActive(not self.effectlist["Flurry"]:GetState());
self.skills["ExchangeOfBlows"]:SetActive(false);
self.skills["ExchangeOfBlows"].timer:Stop();
elseif (stance == 0) then
self.skills["ArdentFlurry"]:SetActive(self.controlledburnflag and self.effectlist["EnemyDefeatResponse"]:GetState() and not self.effectlist["ArdentFlurry"]:GetState());
self.skills["GloriousExchange"]:SetActive(self.controlledburnflag and self.effectlist["EnemyDefeatResponse"]:GetState() and not self.effectlist["GloriousExchange"]:GetState());
self.skills["BlockingBlades"]:SetActive(not self.effectlist["BlockingBlades"]:GetState() and self.effectlist["EnemyDefeatResponse"]:GetState());
self.skills["Flurry"]:SetActive(not self.controlledburnflag and not self.effectlist["Flurry"]:GetState());
self.skills["ExchangeOfBlows"]:SetActive(not self.controlledburnflag and not self.effectlist["ExchangeOfBlows"]:GetState());
end
-- PRIMARY STANCE SWITCHING
if ( self.settings.features["StancePriority"].active ) then
if (stance == self.settings.defaults["PrimaryStance"].selected) then
self.multi["StanceSlot"]:SetIndex(self.settings.defaults["SecondaryStance"].selected);
else
self.multi["StanceSlot"]:SetIndex(self.settings.defaults["PrimaryStance"].selected);
end
end
-- HOVER/DISAPPEAR SWITCHING
if (stance == 0) then
self.multi["StanceSlot"]:SetHover( false );
self.multi["StanceSlot"]:SetActive( true );
else
self.multi["StanceSlot"]:SetActive(self.settings.defaults["StanceActive"].selected ~= 3);
self.multi["StanceSlot"]:SetHover(self.settings.defaults["StanceActive"].selected == 2);
end
if (self.controlledburnflag) then
self.multi["StanceSlot"]:SetActive( false );
end
end
-- DEFAULT SETTINGS
function ChampionBars:DefaultSettings()
self.settings = { preconf = { }, userconf = { }, traits = { }, features = { }, defaults = { }, quickslots = { } };
self.settings.userconf["Melee"] = { id = 1, name = "Melee", defpos = {1,4}, size={3,1}, pos = {0,0}, combat = {true,true}, active = true };
self.settings.userconf["Fervor:ST"] = { id = 2, name = "Fervor: ST", defpos = {4,4}, size={4,1}, pos = {0,0}, combat = {true,true}, active = true };
self.settings.userconf["Fervor:AOE"] = { id = 3, name = "Fervor: AOE", defpos = {1,3}, size={4,1}, pos = {0,0}, combat = {true,true}, active = true };
self.settings.userconf["Fervor:Util"] = { id = 4, name = "Fervor: Utility", defpos = {1,2}, size={3,1}, pos = {0,0}, combat = {true,true}, active = true };
self.settings.userconf["Conditional"] = { id = 5, name = "Conditional", defpos = {4,2}, size={2,1}, pos = {0,0}, combat = {true,true}, active = true };
self.settings.userconf["Defeat"] = { id = 6, name = "Defeat Responses", defpos = {10,1}, size={3,2}, pos = {0,0}, combat = {true,true}, active = true };
self.settings.userconf["Buffs"] = { id = 7, name = "Buffs", defpos = {8,4}, size={2,1}, pos = {0,0}, combat = {true,true}, active = true };
self.settings.userconf["SelfBuffs"] = { id = 8, name = "Self Buffs", defpos = {1,1}, size={9,1}, pos = {0,0}, combat = {true,true}, active = true };
self.settings.userconf["Threat"] = { id = 9, name = "Threat", defpos = {5,3}, size={3,1}, pos = {0,0}, combat = {true,true}, active = true };
self.settings.userconf["Stances"] = { id = 10, name = "Stances", defpos = {12,4}, size={1,1}, pos = {0,0}, combat = {true,true}, active = true };
self.settings.userconf["Stunned"] = { id = 11, name = "Status Effect", defpos = {11,3}, size={2,1}, pos = {0,0}, combat = {true,true}, active = true };
self.settings.userconf["Ranged"] = { id = 12, name = "Ranged", defpos = {10,3}, size={1,1}, pos = {0,0}, combat = {true,true}, active = true };
self.settings.userconf["ClassItems"] = { id = 13, name = "ClassItems", defpos = {8,3}, size={2,1}, pos = {0,0}, combat = {true,true}, active = true };
self.settings.traits["ControlledBurn"] = { id = 1, name = 'Controlled Burn', active = false };
self.settings.traits["FerociousStrikes"] = { id = 2, name = 'Ferocious Strikes', active = false };
self.settings.traits["RagingBlades"] = { id = 3, name = 'Raging Blades', active = false };
self.settings.traits["FightOn"] = { id = 4, name = 'Fight On', active = false };
self.settings.traits["CBR"] = { id = 5, name = 'CBR', active = false };
self.settings.traits["EyeOfTheStorm"] = { id = 6, name = 'Eye of the Storm', active = false };
self.settings.features["StancePriority"] = { id = 1, name = 'Stance Priority', active = true };
self.settings.features["FearIndicator"] = { id = 2, name = 'Fear Indicator', active = true };
self.settings.defaults["PrimaryStance"] = { id = 1, name = 'Primary Stance', selected = 1, list = { "Fervor", "Ardor", "Glory", "Controlled Burn" } };
self.settings.defaults["SecondaryStance"] = { id = 2, name = 'Secondary Stance', selected = 3, list = { "Fervor", "Ardor", "Glory", "Controlled Burn" } };
self.settings.defaults["StanceActive"] = { id = 3, name = 'Stance Active', selected = 2, list = { "None", "Dim", "Hide" } };
self.settings.defaults["BuffActive"] = { id = 4, name = 'Buff Active', selected = 4, list = { "None", "Dim", "Hide", "Early Warning" } };
self.settings.quickslots["CraftedHorn"] = {id = 1, name = "Crafted Horn", active = false, type = 0, data = ""};
self.settings.quickslots["FervorPotions"] = {id = 2, name = "Fervor Potions", active = false, type = 0, data = ""};
end
-- UPDATE SETTINGS
function ChampionBars:UpdateSettings()
if (settings.vers < 3.01) then
if (self.settings["Features"].stancehover) then self.settings.defaults["StanceActive"].selected = 2; else if (self.settings["Features"].stancedisappear) then self.settings.defaults["StanceActive"].selected = 3; else self.settings.defaults["StanceActive"].selected = 1; end end
self.settings["Features"].stancehover = nil;
self.settings["Features"].stancedisappear = nil;
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].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 == 'controlled') then
self.settings.traits["ControlledBurn"].active = value;
elseif (key == 'ferocious') then
self.settings.traits["FerociousStrikes"].active = value;
elseif (key == 'raging') then
self.settings.traits["RagingBlades"].active = value;
elseif (key == 'fighton') then
self.settings.traits["FightOn"].active = value;
elseif (key == 'cbr') then
self.settings.traits["CBR"].active = value;
elseif (key == 'eyeofthestorm') then
self.settings.traits["EyeOfTheStorm"].active = value;
elseif (key == 'fearindicator') then
self.settings.features["FearIndicator"].active = value;
elseif (key == 'stancepriority') then
self.settings.features["StancePriority"].active = value;
elseif (key == 'stanceactive') then
self.settings.defaults["StanceActive"].selected = value;
elseif (key == 'wardwarning') then
if (value) then
self.settings.defaults["BuffActive"].selected = 4;
else
self.settings.defaults["BuffActive"].selected = 3;
end
elseif (key == 'stanceactive') then
self.settings.defaults["PrimaryStance"].selected = value;
elseif (key == 'secondarystance') then
self.settings.defaults["SecondaryStance"].selected = value;
end
end
elseif (k == "Quickslots") then
for key, value in pairs(v) do
if (key == 'horn') then
self.settings.quickslots["CraftedHorn"].active = value.active;
self.settings.quickslots["CraftedHorn"].type = value.type;
self.settings.quickslots["CraftedHorn"].data = value.data;
elseif (key == 'fervorpot') then
self.settings.quickslots["FervorPotions"].active = value.active;
self.settings.quickslots["FervorPotions"].type = value.type;
self.settings.quickslots["FervorPotions"].data = value.data;
end
end
end
end
end
settings.vers = vars.vers;
end
-- REFRESH SKILLS AND BARS
function ChampionBars: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["FerociousStrikes"]:SetActive(self.settings.traits["FerociousStrikes"].active);
self.skills["RagingBlades"]:SetActive(self.settings.traits["RagingBlades"].active);
self.skills["FightOn"]:SetActive(self.settings.traits["FightOn"].active);
self.skills["CBR"]:SetActive(self.settings.traits["CBR"].active);
self.skills["CraftedHorn"]:SetQuickslot(self.settings.quickslots["CraftedHorn"]);
self.skills["FervorPotions"]:SetQuickslot(self.settings.quickslots["FervorPotions"]);
-- Rebuild Stance Slot (Multi)
self.multi["StanceSlot"]:Clear();
self.multi["StanceSlot"]:AddShortCut("Fervour", 4, "0x70003DFF");
self.multi["StanceSlot"]:AddShortCut("Ardour", 10, "0x7000D46C");
self.multi["StanceSlot"]:AddShortCut("Glory", 30, "0x7000967C");
if (self.settings.traits["ControlledBurn"].active) then self.multi["StanceSlot"]:AddShortCut("ControlledBurn", 45, "0x70002DB5"); end
self.multi["StanceSlot"]:LevelCheck();
-- Set Fear Indicator
if (self.settings.features["FearIndicator"].active and self.fear > 0) then
self.skills["FearNothing"]:SetColor("purple");
else
self.skills["FearNothing"]:SetColor();
end
-- Refresh States
self:CombatChange(vars.player:IsInCombat());
self:FervorChange(vars.classattr:GetFervor());
--Turbine.Shell.WriteLine("KragenBars: Champion Bars refresh completed successfully.");
end