|
Gearswap - Boots wont swap?
Server: Odin
Game: FFXI
Posts: 1
By Odin.Psykroe 2017-04-05 21:41:54
As the title says. I have been using this lua for almost a year now and tonight my boots just stopped swapping. Its quite a pain. anyways, here is those code, look at it, try it yourself.. Please leave feedback, or evne better. if you have a skeleton without motes.
Code -- (Original: Motenten / Modified: Arislan)
-------------------------------------------------------------------------------------------------------------------
--[[ Custom Features:
Step Selector Cycle through available primary and secondary step types,
and trigger with a single macro
Haste Detection Detects current magic haste level and equips corresponding engaged set to
optimize delay reduction (automatic)
Haste Mode Toggles between Haste II and Haste I recieved, used by Haste Detection [WinKey-H]
Capacity Pts. Mode Capacity Points Mode Toggle [WinKey-C]
Reive Detection Automatically equips Reive bonus gear
Auto. Lockstyle Automatically locks specified equipset on file load
--]]
-------------------------------------------------------------------------------------------------------------------
--[[
Custom step commands:
gs c step
Uses the currently configured step on the target, with either <t> or <stnpc> depending on setting.
gs c step t
Uses the currently configured step on the target, but forces use of <t>.
Configuration commands:
gs c cycle mainstep
Cycles through the available steps to use as the primary step when using one of the above commands.
gs c cycle altstep
Cycles through the available steps to use for alternating with the configured main step.
gs c toggle usealtstep
Toggles whether or not to use an alternate step.
gs c toggle selectsteptarget
Toggles whether or not to use <stnpc> (as opposed to <t>) when using a step.
--]]
-------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
state.Buff['Climactic Flourish'] = buffactive['climactic flourish'] or false
state.MainStep = M{['description']='Main Step', 'Box Step', 'Quickstep', 'Feather Step', 'Stutter Step'}
state.AltStep = M{['description']='Alt Step', 'Quickstep', 'Feather Step', 'Stutter Step', 'Box Step'}
state.UseAltStep = M(false, 'Use Alt Step')
state.SelectStepTarget = M(false, 'Select Step Target')
state.IgnoreTargetting = M(false, 'Ignore Targetting')
state.HasteMode = M{['description']='Haste Mode', 'Haste II', 'Haste I'}
state.CurrentStep = M{['description']='Current Step', 'Main', 'Alt'}
state.SkillchainPending = M(false, 'Skillchain Pending')
state.CP = M(false, "Capacity Points Mode")
determine_haste_group()
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('STP', 'Normal', 'LowAcc', 'MidAcc', 'HighAcc')
state.WeaponskillMode:options('Normal', 'Acc')
state.IdleMode:options('Normal', 'DT')
-- Additional local binds
send_command('bind ^- gs c cycleback mainstep')
send_command('bind ^= gs c cycle mainstep')
send_command('bind !- gs c cycleback altstep')
send_command('bind != gs c cycle altstep')
send_command('bind !p gs c toggle usealtstep')
send_command('bind ^` input /ja "Saber Dance" <me>')
send_command('bind !` input /ja "Chocobo Jig II" <me>')
send_command('bind ^, input /ja "Spectral Jig" <me>')
send_command('unbind ^.')
send_command('bind @h gs c cycle HasteMode')
send_command('bind @c gs c toggle CP')
end
-- Called when this job file is unloaded (eg: job change)
function user_unload()
send_command('unbind ^-')
send_command('unbind ^=')
send_command('unbind !-')
send_command('unbind !=')
send_command('unbind !p')
send_command('unbind ^`')
send_command('unbind !`')
send_command('unbind ^,')
send_command('unbind @h')
send_command('unbind @c')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- PRECAST SETS
-- Enmity set
sets.Enmity = {}
-- Job Ability Sets
sets.precast.JA['Provoke'] = sets.Enmity
sets.precast.JA['No Foot Rise'] = {
body="Horos Casaque +1"
}
sets.precast.JA['Trance'] = {
head="Horos Tiara"
}
sets.precast.Waltz = {
head="Horos Tiara",
body="Dancer's Casaque",
hands="Slither Gloves +1",
legs="Horos Tights +1",
feet="Maxixi Shoes +1",
ear1="Roundel Earring",
ring1="Asklepian Ring",
ring2="Valseur's Ring",
back="Toetapper Mantle",
waist="Gishdubar Sash",
} -- Waltz Potency
sets.precast.Waltz['Healing Waltz'] = {}
sets.precast.Samba = {head="Maxixi Tiara +1"}
sets.precast.Jig = {legs="Horos Tights +1", feet="Dancer's toe shoes"}
sets.precast.Step = {
ammo="Ginsen",
head="Mummu bonnet +1",
body="Adhemar jacket",
hands="Mummu wrists +1",
legs="Mummu kecks +1",
feet="Herculean boots",
neck="Ej necklace",
ear1="Mache earring",
ear2="Mache earring",
ring1="Chirich ring",
ring2="Chirich Ring",
back="Senuna's mantle",
waist="Chaac belt",
}
sets.precast.Step['Feather Step'] = set_combine(sets.precast.Step, {feet="Macu. Toeshoes +1"})
sets.precast.Flourish1 = {}
sets.precast.Flourish1['Animated Flourish'] = sets.Enmity
sets.precast.Flourish1['Violent Flourish'] = {
head="Dampening Tam",
body="Samnuha Coat",
hands="Leyline Gloves",
legs="Horos Tights +1",
ear1="Digni. Earring",
ear2="Hermetic Earring",
ring2="Weather. Ring",
} -- Magic Accuracy
sets.precast.Flourish1['Desperate Flourish'] = {
ammo="Charis Feather",
head="Meghanada Visor +1",
neck="Combatant's Torque",
ear1="Mache Earring",
ear2="Telos Earring",
ring1="Ramuh Ring +1",
ring2="Ramuh Ring +1",
} -- Accuracy
sets.precast.Flourish2 = {}
sets.precast.Flourish2['Reverse Flourish'] = {
hands="Macu. Bangles +1",
back="Toetapper Mantle",
}
sets.precast.Flourish3 = {}
sets.precast.Flourish3['Striking Flourish'] = {body="Macu. Casaque +1"}
sets.precast.Flourish3['Climactic Flourish'] = {head="Maculele Tiara +1",}
sets.precast.FC = {
ammo="Sapience Orb",
--7
body="Taeon Tabard", --9
hands="Leyline Gloves", --7
legs="Rawhide Trousers", --5
--2
neck="Orunmila's Torque", --5
ear1="Loquacious Earring", --2
ear2="Etiolation Earring", --1
ring1="Prolix Ring", --2
ring2="Weather. Ring", --5(3)
waist="Ninurta's Sash",
}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {
ammo="Impatiens",
neck="Magoraga Beads",
ring1="Lebeche Ring",
waist="Ninurta's Sash",
})
-- Weapon Skill Sets
sets.precast.WS = {
ammo="Charis feather",
head="Adhemar bonnet",
body="Adhemar jacket",
hands="Adhemar wristbands",
legs="Lustratio subligar +1",
feet="Lustratio leggings +1",
neck="Shadow gorget",
ear1="Mache Earring",
ear2="Mache Earring",
ring1="Ramuh Ring +1",
ring2="Ramuh Ring +1",
back="Senuna's mantle",
waist="Fotia Belt",
} -- default set
sets.precast.WS.Acc = set_combine(sets.precast.WS, {
})
sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {
})
sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {
})
sets.precast.WS['Pyrrhic Kleos'] = set_combine(sets.precast.WS, {
ammo="Potestas bomblet",
head="Lustratio cap",
body="Adhemar jacket",
hands="Adhemar wristbands",
legs="Lustratio subligar +1",
feet="Lustratio leggings +1",
neck="Shadow gorget",
ear1="Mache Earring",
ear2="Mache Earring",
ring1="Apate Ring",
ring2="Rajas Ring",
back="Senuna's mantle",
waist="Fotia Belt",
})
sets.precast.WS['Pyrrhic Kleos'].Acc = set_combine(sets.precast.WS['Pyrrhic Kleos'], {
})
sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, {
ammo="Charis feather",
head="Adhemar bonnet",
body="Adhemar jacket",
hands="Adhemar wristbands",
legs="Lustratio subligar +1",
feet="Lustratio leggings +1",
neck="Shadow gorget",
ear1="Mache Earring",
ear2="Mache Earring",
ring1="Ramuh Ring +1",
ring2="Ramuh Ring +1",
back="Senuna's mantle",
waist="Fotia Belt",
})
sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {
})
sets.precast.WS["Rudra's Storm"] = set_combine(sets.precast.WS, {
ammo="Charis feather",
head="Adhemar bonnet",
body="Herculean Vest",
hands="Adhemar wristbands",
legs="Lustratio subligar +1",
feet="Lustratio leggings +1",
neck="Caro necklace",
ear1="Moonshade Earring",
ear2="Ishvara Earring",
ring1="Ramuh Ring +1",
ring2="Ramuh Ring +1",
back="Senuna's mantle",
waist="Grunfeld rope",
})
sets.precast.WS["Rudra's Storm"].Acc = set_combine(sets.precast.WS["Rudra's Storm"], {})
sets.precast.WS['Aeolian Edge'] = {
ammo="",
head="Herculean helm",
body="",
hands="",
legs="",
feet="Herculean boots",
neck="Voltsurge torque",
ear1="Novio Earring",
ear2="Friomisi Earring",
ring1="Shiva Ring +1",
ring2="Acumen Ring",
back="Toro cape",
waist="Fotia belt",
}
sets.precast.Skillchain = {
hands="Macu. Bangles +1",
}
-- MIDCAST SETS
sets.midcast.FastRecast = {
ear1="Loquacious Earring",
ear2="Etiolation Earring",
}
-- Specific spells
sets.midcast.Utsusemi = {
ear2="Loquacious Earring",
waist="Ninurta's Sash",
}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {}
-- Idle sets
sets.idle = {
ammo="Staunch Tathlum",
head="Ocelomeh headpiece",
body="Mekosu. Harness",
hands="Umuthi gloves",
legs="Mummu kecks +1",
feet="Skd. Jambeaux +1",
neck="Loricate torque +1",
ear1="Odnowa Earring +1",
ear2="Odnowa Earring",
ring1="Chirich Ring",
ring2="Defending Ring",
back="Aptitude mantle +1",
waist="",
}
sets.idle.DT = set_combine (sets.idle, {})
sets.idle.Town = set_combine (sets.idle, {
})
sets.idle.Weak = sets.idle.DT
-- Defense sets
sets.defense.PDT = sets.idle.DT
sets.defense.MDT = sets.idle.DT
sets.Kiting = {
feet="Skd. Jambeaux +1",
}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- * DNC Native DW Trait: 30% DW
-- * DNC Job Points DW Gift: 5% DW
-- No Magic Haste (74% DW to cap)
sets.engaged = {
ammo="Ginsen",
head="Dampening Tam",
body="Adhemar jacket",
hands="Adhemar wristbands",
legs="Herculean trousers",
feet="Herculean boots",
neck="Lissome Necklace",
ear1="Cessance earring",
ear2="Telos earring",
ring1="Chirich ring",
ring2="Epona's Ring",
back="Senuna's mantle",
waist="windbuffet belt +1",
}
sets.engaged.LowAcc = set_combine(sets.engaged, {
ammo="Ginsen",
head="Adhemar bonnet",
body="Adhemar jacket",
hands="Adhemar wristbands",
legs="Samnuha tights",
feet="Qaaxo leggings",
neck="Asperity necklace",
ear1="Cessance earring",
ear2="Telos earring",
ring1="Petrov ring",
ring2="Rajas Ring",
back="Senuna's mantle",
waist="Windbuffet belt +1",
})
sets.engaged.MidAcc = set_combine(sets.engaged.LowAcc, {
ammo="Ginsen",
head="Dampening Tam",
body="Adhemar jacket",
hands="Adhemar wristbands",
legs="Herculean trousers",
feet="Herculean boots",
neck="Lissome Necklace",
ear1="Cessance earring",
ear2="Telos earring",
ring1="Petrov ring",
ring2="Epona's Ring",
back="Senuna's mantle",
waist="Windbuffet belt +1",
})
sets.engaged.HighAcc = set_combine(sets.engaged.MidAcc, {
ammo="Ginsen",
head="Mummu bonnet +1",
body="Adhemar jacket",
hands="Mummu wrists +1",
legs="Mummu kecks +1",
feet="Herculean boots",
neck="Ej necklace",
ear1="Cessance earring",
ear2="Telos earring",
ring1="Chirich ring",
ring2="Chirich Ring",
back="Senuna's mantle",
waist="Hurch'lan sash",
})
sets.engaged.STP = set_combine(sets.engaged, {
})
-- 15% Magic Haste (67% DW to cap)
sets.engaged.LowHaste = set_combine(sets.engaged, {}) -- 30%
sets.engaged.LowHaste.LowAcc = set_combine(sets.engaged.LowAcc, {})
sets.engaged.LowHaste.MidAcc = set_combine(sets.engaged.MidAcc, {})
sets.engaged.LowHaste.HighAcc = set_combine(sets.engaged.HighAcc, {})
sets.engaged.LowHaste.STP = set_combine(sets.engaged.LowHaste, {})
-- 30% Magic Haste (56% DW to cap)
sets.engaged.MidHaste = set_combine(sets.engaged, {}) -- 19%
sets.engaged.MidHaste.LowAcc = set_combine(sets.engaged.LowAcc, {})
sets.engaged.MidHaste.MidAcc = set_combine(sets.engaged.MidAcc, {})
sets.engaged.MidHaste.HighAcc = set_combine(sets.engaged.HighAcc, {})
sets.engaged.MidHaste.STP = set_combine(sets.engaged.MidHaste, {})
-- 35% Magic Haste (51% DW to cap)
sets.engaged.HighHaste = set_combine(sets.engaged, {}) -- 14% Gear
sets.engaged.HighHaste.LowAcc = set_combine(sets.engaged.LowAcc, {})
sets.engaged.HighHaste.MidAcc = set_combine(sets.engaged.MidAcc, {})
sets.engaged.HighHaste.HighAcc = set_combine(sets.engaged.HighAcc, {})
sets.engaged.HighHaste.STP = set_combine(sets.engaged.HighHaste, {})
-- 47% Magic Haste (36% DW to cap)
sets.engaged.MaxHaste = {} -- 0%
sets.engaged.MaxHaste.LowAcc = set_combine(sets.engaged.MaxHaste, {})
sets.engaged.MaxHaste.MidAcc = set_combine(sets.engaged.MaxHaste.LowAcc, {})
sets.engaged.MaxHaste.HighAcc = set_combine(sets.engaged.MaxHaste.MidAcc, {})
sets.engaged.MaxHaste.STP = set_combine(sets.engaged.MaxHaste, {})
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Saber Dance'] = {legs=""}
sets.buff['Fan Dance'] = {body=""}
sets.buff['Climactic Flourish'] = {head="Maculele Tiara +1"}
sets.CP = {back="Aptitude mantle +1"}
sets.Reive = {neck="Ygnas's Resolve +1"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
function job_precast(spell, action, spellMap, eventArgs)
--auto_presto(spell)
end
function job_post_precast(spell, action, spellMap, eventArgs)
if spell.type == "WeaponSkill" then
if state.Buff['Climactic Flourish'] then
equip(sets.buff['Climactic Flourish'])
end
if state.SkillchainPending.value == true then
equip(sets.precast.Skillchain)
end
end
end
-- Return true if we handled the aftercast work. Otherwise it will fall back
-- to the general aftercast() code in Mote-Include.
function job_aftercast(spell, action, spellMap, eventArgs)
if not spell.interrupted then
if spell.english == "Wild Flourish" then
state.SkillchainPending:set()
send_command('wait 5;gs c unset SkillchainPending')
elseif spell.type:lower() == "weaponskill" then
state.SkillchainPending:toggle()
send_command('wait 6;gs c unset SkillchainPending')
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff,gain)
-- If we gain or lose any haste buffs, adjust which gear set we target.
if S{'haste', 'march', 'mighty guard', 'embrava', 'haste samba', 'geo-haste', 'indi-haste'}:contains(buff:lower()) then
determine_haste_group()
if not midaction() then
handle_equipping_gear(player.status)
end
elseif buff == 'Saber Dance' or buff == 'Climactic Flourish' or buff == 'Fan Dance' then
handle_equipping_gear(player.status)
end
if buffactive['Reive Mark'] then
equip(sets.Reive)
disable('neck')
else
enable('neck')
end
end
function job_status_change(new_status, old_status)
if new_status == 'Engaged' then
determine_haste_group()
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Called by the default 'update' self-command.
function job_update(cmdParams, eventArgs)
determine_haste_group()
end
function customize_idle_set(idleSet)
if player.hpp < 80 and not areas.Cities:contains(world.area) then
idleSet = set_combine(idleSet, sets.ExtraRegen)
end
if state.CP.current == 'on' then
equip(sets.CP)
disable('back')
else
enable('back')
end
return idleSet
end
function customize_melee_set(meleeSet)
if state.DefenseMode.value ~= 'None' then
if buffactive['saber dance'] then
meleeSet = set_combine(meleeSet, sets.buff['Saber Dance'])
end
if state.Buff['Climactic Flourish'] then
meleeSet = set_combine(meleeSet, sets.buff['Climactic Flourish'])
end
end
return meleeSet
end
-- Handle auto-targetting based on local setup.
function job_auto_change_target(spell, action, spellMap, eventArgs)
if spell.type == 'Step' then
if state.IgnoreTargetting.value == true then
state.IgnoreTargetting:reset()
eventArgs.handled = true
end
eventArgs.SelectNPCTargets = state.SelectStepTarget.value
end
end
-- Function to display the current relevant user state when doing an update.
-- Set eventArgs.handled to true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
local msg = '[ Melee'
if state.CombatForm.has_value then
msg = msg .. ' (' .. state.CombatForm.value .. ')'
end
msg = msg .. ': '
msg = msg .. state.OffenseMode.value
if state.HybridMode.value ~= 'Normal' then
msg = msg .. '/' .. state.HybridMode.value
end
msg = msg .. ' ][ WS: ' .. state.WeaponskillMode.value .. ' ]'
if state.DefenseMode.value ~= 'None' then
msg = msg .. '[ Defense: ' .. state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ' ]'
end
msg = msg .. '[ ' .. state.HasteMode.value .. ' ]'
if state.Kiting.value then
msg = msg .. '[ Kiting Mode: ON ]'
end
msg = msg .. '[ *'..state.MainStep.current
if state.UseAltStep.value == true then
msg = msg .. '/'..state.AltStep.current
end
msg = msg .. '* ]'
add_to_chat(060, msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- User self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called for custom player commands.
function job_self_command(cmdParams, eventArgs)
if cmdParams[1] == 'step' then
if cmdParams[2] == 't' then
state.IgnoreTargetting:set()
end
local doStep = ''
if state.UseAltStep.value == true then
doStep = state[state.CurrentStep.current..'Step'].current
state.CurrentStep:cycle()
else
doStep = state.MainStep.current
end
send_command('@input /ja "'..doStep..'" <t>')
end
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function determine_haste_group()
-- Gearswap can't detect the difference between Haste I and Haste II
-- so use winkey-H to manually set Haste spell level.
-- Haste (buffactive[33]) - 15%
-- Haste II (buffactive[33]) - 30%
-- Haste Samba - 5%/10%
-- Victory March +0/+3/+4/+5 9.4%/14%/15.6%/17.1%
-- Advancing March +0/+3/+4/+5 6.3%/10.9%/12.5%/14%
-- Embrava - 30%
-- Mighty Guard (buffactive[604]) - 15%
-- Geo-Haste (buffactive[580]) - 40%
classes.CustomMeleeGroups:clear()
if state.HasteMode.value == 'Haste II' then
if(((buffactive[33] or buffactive[580] or buffactive.embrava) and (buffactive.march or buffactive[604])) or
(buffactive[33] and (buffactive[580] or buffactive.embrava)) or
(buffactive.march == 2 and buffactive[604])) then
--add_to_chat(215, '---------- <<<< | Magic Haste Level: 43% | >>>> ----------')
classes.CustomMeleeGroups:append('MaxHaste')
elseif ((buffactive[33] or buffactive.march == 2 or buffactive[580]) and buffactive['haste samba']) then
--add_to_chat(004, '---------- <<<< | Magic Haste Level: 35% | >>>> ----------')
classes.CustomMeleeGroups:append('HighHaste')
elseif ((buffactive[580] or buffactive[33] or buffactive.march == 2) or
(buffactive.march == 1 and buffactive[604])) then
--add_to_chat(008, '---------- <<<< | Magic Haste Level: 30% | >>>> ----------')
classes.CustomMeleeGroups:append('MidHaste')
elseif (buffactive.march == 1 or buffactive[604]) then
--add_to_chat(007, '---------- <<<< | Magic Haste Level: 15% | >>>> ----------')
classes.CustomMeleeGroups:append('LowHaste')
end
else
if (buffactive[580] and ( buffactive.march or buffactive[33] or buffactive.embrava or buffactive[604]) ) or
(buffactive.embrava and (buffactive.march or buffactive[33] or buffactive[604])) or
(buffactive.march == 2 and (buffactive[33] or buffactive[604])) or
(buffactive[33] and buffactive[604] and buffactive.march ) then
--add_to_chat(215, '---------- <<<< | Magic Haste Level: 43% | >>>> ----------')
classes.CustomMeleeGroups:append('MaxHaste')
elseif ((buffactive[604] or buffactive[33]) and buffactive['haste samba'] and buffactive.march == 1) or
(buffactive.march == 2 and buffactive['haste samba']) or
(buffactive[580] and buffactive['haste samba'] ) then
--add_to_chat(004, '---------- <<<< | Magic Haste Level: 35% | >>>> ----------')
classes.CustomMeleeGroups:append('HighHaste')
elseif (buffactive.march == 2 ) or
((buffactive[33] or buffactive[604]) and buffactive.march == 1 ) or -- MG or haste + 1 march
(buffactive[580] ) or -- geo haste
(buffactive[33] and buffactive[604]) then
--add_to_chat(008, '---------- <<<< | Magic Haste Level: 30% | >>>> ----------')
classes.CustomMeleeGroups:append('MidHaste')
elseif buffactive[33] or buffactive[604] or buffactive.march == 1 then
--add_to_chat(007, '---------- <<<< | Magic Haste Level: 15% | >>>> ----------')
classes.CustomMeleeGroups:append('LowHaste')
end
end
end
Server: Asura
Game: FFXI
Posts: 2666
By Asura.Ladyofhonor 2017-04-05 22:19:27
Are you able to reload gearswap and get it back to swapping the boots?
Server: Odin
Game: FFXI
Posts: 177
By Odin.Speedyjim 2017-04-05 23:15:51
Are you saying every single set and every single pair of boots will not equip? Are you confirming this with //gs showswaps? Have you accidentally disabled feet from swapping, like from another job's lua?
By sudsi 2017-04-05 23:19:35
yeah i've had a similar issue with gs where only a couple slots where affected. reloading gs fixed the issue.
Server: Asura
Game: FFXI
Posts: 2666
By Asura.Ladyofhonor 2017-04-05 23:35:15
yeah i've had a similar issue with gs where only a couple slots where affected. reloading gs fixed the issue.
Yeah, this seems to happen to me on certain zones, mostly say Merit BCNM's where I'm mid-swap when the fight ends (spamming WS button and it dies) and then the boots and maybe some other pieces won't swap. Reloading fixes it.
Server: Shiva
Game: FFXI
Posts: 1052
By Shiva.Arislan 2017-04-06 07:18:19
That's my lua, and I can confirm that the feet swap.
A lua that was working fine doesn't just break itself. Problem is usually on the user end (syntax, item not in inventory/wardrobe, packet loss, addon/resources need to be refreshed, etc).
Here's the latest version of the lua... maybe it'll solve your problems:
https://github.com/ArislanShiva/luas/blob/master/Arislan-DNC.lua
Server: Cerberus
Game: FFXI
Posts: 241
By Cerberus.Mrkillface 2017-04-06 10:26:40
If I had to guess, I'd say this:
sets.engaged.MaxHaste = {} -- 0%
SHould be this:
sets.engaged.MaxHaste = set_combine(sets.engaged, {}) -- 0% Gear
By OmniKroe 2017-04-06 17:41:26
Are you saying every single set and every single pair of boots will not equip? Are you confirming this with //gs showswaps? Have you accidentally disabled feet from swapping, like from another job's lua? Yes every single pair.
Asura.Ladyofhonor said: »Are you able to reload gearswap and get it back to swapping the boots? No reloading it hasnt fixed my problem, i changed the code a lot and reloaded it every change to test as well.
Asura.Ladyofhonor said: »yeah i've had a similar issue with gs where only a couple slots where affected. reloading gs fixed the issue.
Yeah, this seems to happen to me on certain zones, mostly say Merit BCNM's where I'm mid-swap when the fight ends (spamming WS button and it dies) and then the boots and maybe some other pieces won't swap. Reloading fixes it.
I first noticed it helping someone kill a adoulin mission nm, Then i tested it in SR, Escha ru'aun, Dho gates, Sauramongue campaign as well as ronfaure it doesnt work no matter what.
That's my lua, and I can confirm that the feet swap.
A lua that was working fine doesn't just break itself. Problem is usually on the user end (syntax, item not in inventory/wardrobe, packet loss, addon/resources need to be refreshed, etc).
Here's the latest version of the lua... maybe it'll solve your problems:
https://github.com/ArislanShiva/luas/blob/master/Arislan-DNC.lua
Thank you i will try it
By OmniKroe 2017-04-06 17:44:02
Cerberus.Mrkillface said: »If I had to guess, I'd say this:
sets.engaged.MaxHaste = {} -- 0%
SHould be this:
sets.engaged.MaxHaste = set_combine(sets.engaged, {}) -- 0% Gear
Woudlnt that only affect if i was at said max haste tho? I changed it and im going to test it right now.
As the title says. I have been using this lua for almost a year now and tonight my boots just stopped swapping. Its quite a pain. anyways, here is those code, look at it, try it yourself.. Please leave feedback, or evne better. if you have a skeleton without motes.
Code -- (Original: Motenten / Modified: Arislan)
-------------------------------------------------------------------------------------------------------------------
--[[ Custom Features:
Step Selector Cycle through available primary and secondary step types,
and trigger with a single macro
Haste Detection Detects current magic haste level and equips corresponding engaged set to
optimize delay reduction (automatic)
Haste Mode Toggles between Haste II and Haste I recieved, used by Haste Detection [WinKey-H]
Capacity Pts. Mode Capacity Points Mode Toggle [WinKey-C]
Reive Detection Automatically equips Reive bonus gear
Auto. Lockstyle Automatically locks specified equipset on file load
--]]
-------------------------------------------------------------------------------------------------------------------
--[[
Custom step commands:
gs c step
Uses the currently configured step on the target, with either <t> or <stnpc> depending on setting.
gs c step t
Uses the currently configured step on the target, but forces use of <t>.
Configuration commands:
gs c cycle mainstep
Cycles through the available steps to use as the primary step when using one of the above commands.
gs c cycle altstep
Cycles through the available steps to use for alternating with the configured main step.
gs c toggle usealtstep
Toggles whether or not to use an alternate step.
gs c toggle selectsteptarget
Toggles whether or not to use <stnpc> (as opposed to <t>) when using a step.
--]]
-------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
state.Buff['Climactic Flourish'] = buffactive['climactic flourish'] or false
state.MainStep = M{['description']='Main Step', 'Box Step', 'Quickstep', 'Feather Step', 'Stutter Step'}
state.AltStep = M{['description']='Alt Step', 'Quickstep', 'Feather Step', 'Stutter Step', 'Box Step'}
state.UseAltStep = M(false, 'Use Alt Step')
state.SelectStepTarget = M(false, 'Select Step Target')
state.IgnoreTargetting = M(false, 'Ignore Targetting')
state.HasteMode = M{['description']='Haste Mode', 'Haste II', 'Haste I'}
state.CurrentStep = M{['description']='Current Step', 'Main', 'Alt'}
state.SkillchainPending = M(false, 'Skillchain Pending')
state.CP = M(false, "Capacity Points Mode")
determine_haste_group()
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('STP', 'Normal', 'LowAcc', 'MidAcc', 'HighAcc')
state.WeaponskillMode:options('Normal', 'Acc')
state.IdleMode:options('Normal', 'DT')
-- Additional local binds
send_command('bind ^- gs c cycleback mainstep')
send_command('bind ^= gs c cycle mainstep')
send_command('bind !- gs c cycleback altstep')
send_command('bind != gs c cycle altstep')
send_command('bind !p gs c toggle usealtstep')
send_command('bind ^` input /ja "Saber Dance" <me>')
send_command('bind !` input /ja "Chocobo Jig II" <me>')
send_command('bind ^, input /ja "Spectral Jig" <me>')
send_command('unbind ^.')
send_command('bind @h gs c cycle HasteMode')
send_command('bind @c gs c toggle CP')
end
-- Called when this job file is unloaded (eg: job change)
function user_unload()
send_command('unbind ^-')
send_command('unbind ^=')
send_command('unbind !-')
send_command('unbind !=')
send_command('unbind !p')
send_command('unbind ^`')
send_command('unbind !`')
send_command('unbind ^,')
send_command('unbind @h')
send_command('unbind @c')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- PRECAST SETS
-- Enmity set
sets.Enmity = {}
-- Job Ability Sets
sets.precast.JA['Provoke'] = sets.Enmity
sets.precast.JA['No Foot Rise'] = {
body="Horos Casaque +1"
}
sets.precast.JA['Trance'] = {
head="Horos Tiara"
}
sets.precast.Waltz = {
head="Horos Tiara",
body="Dancer's Casaque",
hands="Slither Gloves +1",
legs="Horos Tights +1",
feet="Maxixi Shoes +1",
ear1="Roundel Earring",
ring1="Asklepian Ring",
ring2="Valseur's Ring",
back="Toetapper Mantle",
waist="Gishdubar Sash",
} -- Waltz Potency
sets.precast.Waltz['Healing Waltz'] = {}
sets.precast.Samba = {head="Maxixi Tiara +1"}
sets.precast.Jig = {legs="Horos Tights +1", feet="Dancer's toe shoes"}
sets.precast.Step = {
ammo="Ginsen",
head="Mummu bonnet +1",
body="Adhemar jacket",
hands="Mummu wrists +1",
legs="Mummu kecks +1",
feet="Herculean boots",
neck="Ej necklace",
ear1="Mache earring",
ear2="Mache earring",
ring1="Chirich ring",
ring2="Chirich Ring",
back="Senuna's mantle",
waist="Chaac belt",
}
sets.precast.Step['Feather Step'] = set_combine(sets.precast.Step, {feet="Macu. Toeshoes +1"})
sets.precast.Flourish1 = {}
sets.precast.Flourish1['Animated Flourish'] = sets.Enmity
sets.precast.Flourish1['Violent Flourish'] = {
head="Dampening Tam",
body="Samnuha Coat",
hands="Leyline Gloves",
legs="Horos Tights +1",
ear1="Digni. Earring",
ear2="Hermetic Earring",
ring2="Weather. Ring",
} -- Magic Accuracy
sets.precast.Flourish1['Desperate Flourish'] = {
ammo="Charis Feather",
head="Meghanada Visor +1",
neck="Combatant's Torque",
ear1="Mache Earring",
ear2="Telos Earring",
ring1="Ramuh Ring +1",
ring2="Ramuh Ring +1",
} -- Accuracy
sets.precast.Flourish2 = {}
sets.precast.Flourish2['Reverse Flourish'] = {
hands="Macu. Bangles +1",
back="Toetapper Mantle",
}
sets.precast.Flourish3 = {}
sets.precast.Flourish3['Striking Flourish'] = {body="Macu. Casaque +1"}
sets.precast.Flourish3['Climactic Flourish'] = {head="Maculele Tiara +1",}
sets.precast.FC = {
ammo="Sapience Orb",
--7
body="Taeon Tabard", --9
hands="Leyline Gloves", --7
legs="Rawhide Trousers", --5
--2
neck="Orunmila's Torque", --5
ear1="Loquacious Earring", --2
ear2="Etiolation Earring", --1
ring1="Prolix Ring", --2
ring2="Weather. Ring", --5(3)
waist="Ninurta's Sash",
}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {
ammo="Impatiens",
neck="Magoraga Beads",
ring1="Lebeche Ring",
waist="Ninurta's Sash",
})
-- Weapon Skill Sets
sets.precast.WS = {
ammo="Charis feather",
head="Adhemar bonnet",
body="Adhemar jacket",
hands="Adhemar wristbands",
legs="Lustratio subligar +1",
feet="Lustratio leggings +1",
neck="Shadow gorget",
ear1="Mache Earring",
ear2="Mache Earring",
ring1="Ramuh Ring +1",
ring2="Ramuh Ring +1",
back="Senuna's mantle",
waist="Fotia Belt",
} -- default set
sets.precast.WS.Acc = set_combine(sets.precast.WS, {
})
sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {
})
sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {
})
sets.precast.WS['Pyrrhic Kleos'] = set_combine(sets.precast.WS, {
ammo="Potestas bomblet",
head="Lustratio cap",
body="Adhemar jacket",
hands="Adhemar wristbands",
legs="Lustratio subligar +1",
feet="Lustratio leggings +1",
neck="Shadow gorget",
ear1="Mache Earring",
ear2="Mache Earring",
ring1="Apate Ring",
ring2="Rajas Ring",
back="Senuna's mantle",
waist="Fotia Belt",
})
sets.precast.WS['Pyrrhic Kleos'].Acc = set_combine(sets.precast.WS['Pyrrhic Kleos'], {
})
sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, {
ammo="Charis feather",
head="Adhemar bonnet",
body="Adhemar jacket",
hands="Adhemar wristbands",
legs="Lustratio subligar +1",
feet="Lustratio leggings +1",
neck="Shadow gorget",
ear1="Mache Earring",
ear2="Mache Earring",
ring1="Ramuh Ring +1",
ring2="Ramuh Ring +1",
back="Senuna's mantle",
waist="Fotia Belt",
})
sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {
})
sets.precast.WS["Rudra's Storm"] = set_combine(sets.precast.WS, {
ammo="Charis feather",
head="Adhemar bonnet",
body="Herculean Vest",
hands="Adhemar wristbands",
legs="Lustratio subligar +1",
feet="Lustratio leggings +1",
neck="Caro necklace",
ear1="Moonshade Earring",
ear2="Ishvara Earring",
ring1="Ramuh Ring +1",
ring2="Ramuh Ring +1",
back="Senuna's mantle",
waist="Grunfeld rope",
})
sets.precast.WS["Rudra's Storm"].Acc = set_combine(sets.precast.WS["Rudra's Storm"], {})
sets.precast.WS['Aeolian Edge'] = {
ammo="",
head="Herculean helm",
body="",
hands="",
legs="",
feet="Herculean boots",
neck="Voltsurge torque",
ear1="Novio Earring",
ear2="Friomisi Earring",
ring1="Shiva Ring +1",
ring2="Acumen Ring",
back="Toro cape",
waist="Fotia belt",
}
sets.precast.Skillchain = {
hands="Macu. Bangles +1",
}
-- MIDCAST SETS
sets.midcast.FastRecast = {
ear1="Loquacious Earring",
ear2="Etiolation Earring",
}
-- Specific spells
sets.midcast.Utsusemi = {
ear2="Loquacious Earring",
waist="Ninurta's Sash",
}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {}
-- Idle sets
sets.idle = {
ammo="Staunch Tathlum",
head="Ocelomeh headpiece",
body="Mekosu. Harness",
hands="Umuthi gloves",
legs="Mummu kecks +1",
feet="Skd. Jambeaux +1",
neck="Loricate torque +1",
ear1="Odnowa Earring +1",
ear2="Odnowa Earring",
ring1="Chirich Ring",
ring2="Defending Ring",
back="Aptitude mantle +1",
waist="",
}
sets.idle.DT = set_combine (sets.idle, {})
sets.idle.Town = set_combine (sets.idle, {
})
sets.idle.Weak = sets.idle.DT
-- Defense sets
sets.defense.PDT = sets.idle.DT
sets.defense.MDT = sets.idle.DT
sets.Kiting = {
feet="Skd. Jambeaux +1",
}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- * DNC Native DW Trait: 30% DW
-- * DNC Job Points DW Gift: 5% DW
-- No Magic Haste (74% DW to cap)
sets.engaged = {
ammo="Ginsen",
head="Dampening Tam",
body="Adhemar jacket",
hands="Adhemar wristbands",
legs="Herculean trousers",
feet="Herculean boots",
neck="Lissome Necklace",
ear1="Cessance earring",
ear2="Telos earring",
ring1="Chirich ring",
ring2="Epona's Ring",
back="Senuna's mantle",
waist="windbuffet belt +1",
}
sets.engaged.LowAcc = set_combine(sets.engaged, {
ammo="Ginsen",
head="Adhemar bonnet",
body="Adhemar jacket",
hands="Adhemar wristbands",
legs="Samnuha tights",
feet="Qaaxo leggings",
neck="Asperity necklace",
ear1="Cessance earring",
ear2="Telos earring",
ring1="Petrov ring",
ring2="Rajas Ring",
back="Senuna's mantle",
waist="Windbuffet belt +1",
})
sets.engaged.MidAcc = set_combine(sets.engaged.LowAcc, {
ammo="Ginsen",
head="Dampening Tam",
body="Adhemar jacket",
hands="Adhemar wristbands",
legs="Herculean trousers",
feet="Herculean boots",
neck="Lissome Necklace",
ear1="Cessance earring",
ear2="Telos earring",
ring1="Petrov ring",
ring2="Epona's Ring",
back="Senuna's mantle",
waist="Windbuffet belt +1",
})
sets.engaged.HighAcc = set_combine(sets.engaged.MidAcc, {
ammo="Ginsen",
head="Mummu bonnet +1",
body="Adhemar jacket",
hands="Mummu wrists +1",
legs="Mummu kecks +1",
feet="Herculean boots",
neck="Ej necklace",
ear1="Cessance earring",
ear2="Telos earring",
ring1="Chirich ring",
ring2="Chirich Ring",
back="Senuna's mantle",
waist="Hurch'lan sash",
})
sets.engaged.STP = set_combine(sets.engaged, {
})
-- 15% Magic Haste (67% DW to cap)
sets.engaged.LowHaste = set_combine(sets.engaged, {}) -- 30%
sets.engaged.LowHaste.LowAcc = set_combine(sets.engaged.LowAcc, {})
sets.engaged.LowHaste.MidAcc = set_combine(sets.engaged.MidAcc, {})
sets.engaged.LowHaste.HighAcc = set_combine(sets.engaged.HighAcc, {})
sets.engaged.LowHaste.STP = set_combine(sets.engaged.LowHaste, {})
-- 30% Magic Haste (56% DW to cap)
sets.engaged.MidHaste = set_combine(sets.engaged, {}) -- 19%
sets.engaged.MidHaste.LowAcc = set_combine(sets.engaged.LowAcc, {})
sets.engaged.MidHaste.MidAcc = set_combine(sets.engaged.MidAcc, {})
sets.engaged.MidHaste.HighAcc = set_combine(sets.engaged.HighAcc, {})
sets.engaged.MidHaste.STP = set_combine(sets.engaged.MidHaste, {})
-- 35% Magic Haste (51% DW to cap)
sets.engaged.HighHaste = set_combine(sets.engaged, {}) -- 14% Gear
sets.engaged.HighHaste.LowAcc = set_combine(sets.engaged.LowAcc, {})
sets.engaged.HighHaste.MidAcc = set_combine(sets.engaged.MidAcc, {})
sets.engaged.HighHaste.HighAcc = set_combine(sets.engaged.HighAcc, {})
sets.engaged.HighHaste.STP = set_combine(sets.engaged.HighHaste, {})
-- 47% Magic Haste (36% DW to cap)
sets.engaged.MaxHaste = {} -- 0%
sets.engaged.MaxHaste.LowAcc = set_combine(sets.engaged.MaxHaste, {})
sets.engaged.MaxHaste.MidAcc = set_combine(sets.engaged.MaxHaste.LowAcc, {})
sets.engaged.MaxHaste.HighAcc = set_combine(sets.engaged.MaxHaste.MidAcc, {})
sets.engaged.MaxHaste.STP = set_combine(sets.engaged.MaxHaste, {})
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Saber Dance'] = {legs=""}
sets.buff['Fan Dance'] = {body=""}
sets.buff['Climactic Flourish'] = {head="Maculele Tiara +1"}
sets.CP = {back="Aptitude mantle +1"}
sets.Reive = {neck="Ygnas's Resolve +1"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
function job_precast(spell, action, spellMap, eventArgs)
--auto_presto(spell)
end
function job_post_precast(spell, action, spellMap, eventArgs)
if spell.type == "WeaponSkill" then
if state.Buff['Climactic Flourish'] then
equip(sets.buff['Climactic Flourish'])
end
if state.SkillchainPending.value == true then
equip(sets.precast.Skillchain)
end
end
end
-- Return true if we handled the aftercast work. Otherwise it will fall back
-- to the general aftercast() code in Mote-Include.
function job_aftercast(spell, action, spellMap, eventArgs)
if not spell.interrupted then
if spell.english == "Wild Flourish" then
state.SkillchainPending:set()
send_command('wait 5;gs c unset SkillchainPending')
elseif spell.type:lower() == "weaponskill" then
state.SkillchainPending:toggle()
send_command('wait 6;gs c unset SkillchainPending')
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff,gain)
-- If we gain or lose any haste buffs, adjust which gear set we target.
if S{'haste', 'march', 'mighty guard', 'embrava', 'haste samba', 'geo-haste', 'indi-haste'}:contains(buff:lower()) then
determine_haste_group()
if not midaction() then
handle_equipping_gear(player.status)
end
elseif buff == 'Saber Dance' or buff == 'Climactic Flourish' or buff == 'Fan Dance' then
handle_equipping_gear(player.status)
end
if buffactive['Reive Mark'] then
equip(sets.Reive)
disable('neck')
else
enable('neck')
end
end
function job_status_change(new_status, old_status)
if new_status == 'Engaged' then
determine_haste_group()
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Called by the default 'update' self-command.
function job_update(cmdParams, eventArgs)
determine_haste_group()
end
function customize_idle_set(idleSet)
if player.hpp < 80 and not areas.Cities:contains(world.area) then
idleSet = set_combine(idleSet, sets.ExtraRegen)
end
if state.CP.current == 'on' then
equip(sets.CP)
disable('back')
else
enable('back')
end
return idleSet
end
function customize_melee_set(meleeSet)
if state.DefenseMode.value ~= 'None' then
if buffactive['saber dance'] then
meleeSet = set_combine(meleeSet, sets.buff['Saber Dance'])
end
if state.Buff['Climactic Flourish'] then
meleeSet = set_combine(meleeSet, sets.buff['Climactic Flourish'])
end
end
return meleeSet
end
-- Handle auto-targetting based on local setup.
function job_auto_change_target(spell, action, spellMap, eventArgs)
if spell.type == 'Step' then
if state.IgnoreTargetting.value == true then
state.IgnoreTargetting:reset()
eventArgs.handled = true
end
eventArgs.SelectNPCTargets = state.SelectStepTarget.value
end
end
-- Function to display the current relevant user state when doing an update.
-- Set eventArgs.handled to true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
local msg = '[ Melee'
if state.CombatForm.has_value then
msg = msg .. ' (' .. state.CombatForm.value .. ')'
end
msg = msg .. ': '
msg = msg .. state.OffenseMode.value
if state.HybridMode.value ~= 'Normal' then
msg = msg .. '/' .. state.HybridMode.value
end
msg = msg .. ' ][ WS: ' .. state.WeaponskillMode.value .. ' ]'
if state.DefenseMode.value ~= 'None' then
msg = msg .. '[ Defense: ' .. state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ' ]'
end
msg = msg .. '[ ' .. state.HasteMode.value .. ' ]'
if state.Kiting.value then
msg = msg .. '[ Kiting Mode: ON ]'
end
msg = msg .. '[ *'..state.MainStep.current
if state.UseAltStep.value == true then
msg = msg .. '/'..state.AltStep.current
end
msg = msg .. '* ]'
add_to_chat(060, msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- User self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called for custom player commands.
function job_self_command(cmdParams, eventArgs)
if cmdParams[1] == 'step' then
if cmdParams[2] == 't' then
state.IgnoreTargetting:set()
end
local doStep = ''
if state.UseAltStep.value == true then
doStep = state[state.CurrentStep.current..'Step'].current
state.CurrentStep:cycle()
else
doStep = state.MainStep.current
end
send_command('@input /ja "'..doStep..'" <t>')
end
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function determine_haste_group()
-- Gearswap can't detect the difference between Haste I and Haste II
-- so use winkey-H to manually set Haste spell level.
-- Haste (buffactive[33]) - 15%
-- Haste II (buffactive[33]) - 30%
-- Haste Samba - 5%/10%
-- Victory March +0/+3/+4/+5 9.4%/14%/15.6%/17.1%
-- Advancing March +0/+3/+4/+5 6.3%/10.9%/12.5%/14%
-- Embrava - 30%
-- Mighty Guard (buffactive[604]) - 15%
-- Geo-Haste (buffactive[580]) - 40%
classes.CustomMeleeGroups:clear()
if state.HasteMode.value == 'Haste II' then
if(((buffactive[33] or buffactive[580] or buffactive.embrava) and (buffactive.march or buffactive[604])) or
(buffactive[33] and (buffactive[580] or buffactive.embrava)) or
(buffactive.march == 2 and buffactive[604])) then
--add_to_chat(215, '---------- <<<< | Magic Haste Level: 43% | >>>> ----------')
classes.CustomMeleeGroups:append('MaxHaste')
elseif ((buffactive[33] or buffactive.march == 2 or buffactive[580]) and buffactive['haste samba']) then
--add_to_chat(004, '---------- <<<< | Magic Haste Level: 35% | >>>> ----------')
classes.CustomMeleeGroups:append('HighHaste')
elseif ((buffactive[580] or buffactive[33] or buffactive.march == 2) or
(buffactive.march == 1 and buffactive[604])) then
--add_to_chat(008, '---------- <<<< | Magic Haste Level: 30% | >>>> ----------')
classes.CustomMeleeGroups:append('MidHaste')
elseif (buffactive.march == 1 or buffactive[604]) then
--add_to_chat(007, '---------- <<<< | Magic Haste Level: 15% | >>>> ----------')
classes.CustomMeleeGroups:append('LowHaste')
end
else
if (buffactive[580] and ( buffactive.march or buffactive[33] or buffactive.embrava or buffactive[604]) ) or
(buffactive.embrava and (buffactive.march or buffactive[33] or buffactive[604])) or
(buffactive.march == 2 and (buffactive[33] or buffactive[604])) or
(buffactive[33] and buffactive[604] and buffactive.march ) then
--add_to_chat(215, '---------- <<<< | Magic Haste Level: 43% | >>>> ----------')
classes.CustomMeleeGroups:append('MaxHaste')
elseif ((buffactive[604] or buffactive[33]) and buffactive['haste samba'] and buffactive.march == 1) or
(buffactive.march == 2 and buffactive['haste samba']) or
(buffactive[580] and buffactive['haste samba'] ) then
--add_to_chat(004, '---------- <<<< | Magic Haste Level: 35% | >>>> ----------')
classes.CustomMeleeGroups:append('HighHaste')
elseif (buffactive.march == 2 ) or
((buffactive[33] or buffactive[604]) and buffactive.march == 1 ) or -- MG or haste + 1 march
(buffactive[580] ) or -- geo haste
(buffactive[33] and buffactive[604]) then
--add_to_chat(008, '---------- <<<< | Magic Haste Level: 30% | >>>> ----------')
classes.CustomMeleeGroups:append('MidHaste')
elseif buffactive[33] or buffactive[604] or buffactive.march == 1 then
--add_to_chat(007, '---------- <<<< | Magic Haste Level: 15% | >>>> ----------')
classes.CustomMeleeGroups:append('LowHaste')
end
end
end
|
|