|
DRK LUA Assistance
Quetzalcoatl.Balthor
Serveur: Quetzalcoatl
Game: FFXI
Posts: 18
By Quetzalcoatl.Balthor 2023-04-18 15:34:56
I need some help getting this DRK Lua to run. I copied Arislan's, and added my current (still up-and-coming) gear into each section and added my Ragnarok into the "Weapon List" and Weapon Set" sections. I "--" the lines I didn't understand/feel like I needed. I didn't change much of anything else, as far as I know. When I go to load it, it gives me a "Windower/addon/gearswap/data/Dark.lua:88: '<eof>' expected near 'end' " error.
I have no idea of the "language" of Gearswap except to add equipment. Could someone assist me in figuring out what I'm missing? It would be greatly appreciated.
Code -------------------------------------------------------------------------------------------------------------------
-- 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.Hasso = buffactive.Hasso or false
state.Buff.Souleater = buffactive.souleater or false
state.Buff['Last Resort'] = buffactive['Last Resort'] or false
weapon_list = S{"Apocalypse", "Ragnarok", "Naegling",}
no_swap_gear = S{"Warp Ring", "Dim. Ring (Dem)", "Dim. Ring (Holla)", "Dim. Ring (Mea)",
"Facility Ring", "Capacity Ring"}
elemental_ws = S{'Dark Harvest','Shadow of Death','Infernal Scythe','Frostbite','Freezebite',"Herculean Slash",
'Burning Blade','Red Lotus Blade','Shining Blade','Seraph Blade','Sanguine Blade'}
lockstyleset = 3
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent.
function user_setup()
state.OffenseMode:options('STP', 'Normal', 'LowAcc', 'MidAcc', 'HighAcc')
state.HybridMode:options('Normal', 'DT')
state.WeaponskillMode:options('Normal', 'Acc')
state.PhysicalDefenseMode:options('PDT', 'MDT')
state.IdleMode:options('Normal', 'DT')
state.WeaponSet = M{['description']='Weapon Set', 'Ragnarok', 'Apocalypse'}
state.MagicBurst = M(false, 'Magic Burst')
state.Critical = M(false, 'Critical Aftermath TP')
state.CP = M(false, "Capacity Points Mode")
-- Additional local binds
include('Global-Binds.lua') -- OK to remove this line
include('Global-BRD-Binds.lua') -- OK to remove this line
--send_command('bind !` gs c toggle MagicBurst')
--send_command('bind @a gs c toggle Critical')
--send_command('bind @c gs c toggle CP')
--send_command('bind @e gs c cycleback WeaponSet')
--send_command('bind @r gs c cycle WeaponSet')
--send_command('bind !q input /ma "Drain III" <t>')
--send_command('bind !w input /ja "Last Resort" <me>')
--send_command('bind !e input /ja "Hasso" <me>')
--send_command('bind !p input /ma "Dread Spikes" <me>')
-- if player.sub_job == 'WAR' then
-- send_command('bind ^numpad/ input /ja "Berserk" <me>')
-- send_command('bind ^numpad* input /ja "Warcry" <me>')
--send_command('bind ^numpad- input /ja "Aggressor" <me>')
-- elseif player.sub_job == 'SAM' then
-- send_command('bind ^numpad/ input /ja "Meditate" <me>')
-- send_command('bind ^numpad* input /ja "Sekkanoki" <me>')
-- send_command('bind ^numpad- input /ja "Third Eye" <me>')
end
-- send_command('bind ^numpad7 input /ws "Resolution" <t>')
-- send_command('bind ^numpad5 input /ws "Torcleaver" <t>')
--send_command('bind ^numpad1 input /ws "Freezebite" <t>')
select_default_macro_book()
set_lockstyle()
state.Auto_Kite = M(false, 'Auto_Kite')
Haste = 0
DW_needed = 0
DW = false
moving = false
update_combat_form()
determine_haste_group()
get_combat_weapon()
end
-- Called when this job file is unloaded (eg: job change)
function user_unload()
send_command('unbind !`')
send_command('unbind !q')
send_command('unbind !w')
send_command('bind !e input /ma "Haste" <stpc>')
send_command('unbind !p')
send_command('unbind @a')
send_command('unbind @c')
send_command('unbind @e')
send_command('unbind @r')
send_command('unbind ^numpad/')
send_command('unbind ^numpad*')
send_command('unbind ^numpad-')
send_command('unbind ^numpad7')
send_command('unbind ^numpad8')
send_command('unbind ^numpad4')
send_command('unbind ^numpad5')
send_command('unbind ^numpad6')
send_command('unbind ^numpad1')
end
function get_sets()
-- JSE
AF = {} -- leave this empty
RELIC = {} -- leave this empty
EMPY = {} -- leave this empty
-- Fill this with your own JSE.
--Ignominy
AF.Head = ""
AF.Body = "Ignominy Cuirass +1"
AF.Hands = ""
AF.Legs = "Ignominy Flanchard +1"
AF.Feet = ""
--Fallen's
RELIC.Head = "Fallen's Burgeonet +3"
RELIC.Body = "Fallen's Cuirass +1"
RELIC.Hands = "Fallen's Finger Gauntlets +1"
RELIC.Legs = "Fallen's Flanchard +3"
RELIC.Feet = "Fallen's Sollerets"
--Heathen's
EMPY.Head = "Heathen's Burgeonet +2"
EMPY.Body = "Heathen's Cuirass +2"
EMPY.Hands = "Heathen's Gauntlets +2"
EMPY.Legs = "Heathen's Flanchard +2"
EMPY.Feet = "Heathen's Sollerets +2"
--Sulevia's
SulHead = "Sulevia's Mask"
SulBod = "Sulevia's Platemail +1"
SulHands = "Sulevia's Gauntlets +1"
SulLegs = "Sulevia's Cuisses +1"
SulFeet = "Sulevia's Leggings +1"
--Flamma
FlamHead = "Flamma Zucchetto"
FlamBod = "Flamma Korazin"
FlamHand = "Flamma Manopolas"
FlamLeg = "Flamma Dirs"
FlamFeet = "Flamma Gambieras +2"
-- Capes:
-- Sucellos's And such, add your own.
AthMan = "Atheling Mantle"
DRKCape = {}
--DRKCape.TP = { name="", augments={}}
DRKCape.WS = { name="Niht Mantle", augments={'Attack+5','Dark magic skill +6','"Drain" and "Aspir" potency +19','Weapon skill damage +2%',}}
end
-- Define sets and vars used by this job file.
function init_gear_sets()
------------------------------------------------------------------------------------------------
---------------------------------------- Precast Sets ------------------------------------------
------------------------------------------------------------------------------------------------
---- Precast Sets ----
-- Enmity set
sets.Enmity = {}
-- Precast sets to enhance JAs
--sets.precast.JA['Arcane Circle'] = {feet="Ig. Sollerets +3"}
sets.precast.JA['Blood Weapon'] = {body=RELIC.Body}
sets.precast.JA['Dark Seal'] = {head=RELIC.Head}
sets.precast.JA['Diabolic Eye'] = {hands=RELIC.Hands}
sets.precast.JA['Last Resort'] = {feet=RELIC.Feet} --back=gear.DRK_DA_Cape,}
sets.precast.JA['Nether Void'] = {legs=EMPY.Legs}
--sets.precast.JA['Souleater'] = {head="Ig. Burgonet +3"}
--sets.precast.JA['Weapon Bash'] = {hands="Ig. Gauntlets +2"}
sets.precast.FC = {
head="Cizin Helm +1", --5
neck="Orunmila's Torque", --5
ear1="Malignance Earring", --4
ear2="Loquacious Earring", --2
hands="Buremte Gloves", --3
ring1="Kishar Ring", --4
ring2="Prolix Ring", --2, 10 macc
legs="Enif Cosciales", --8
feet="Carmine Greaves +1", --8
back=""
--41 Total
}
sets.precast.FC['Dark Magic'] = set_combine(sets.precast.FC, {head="Fallen's Burgeonet +3"})
sets.precast.FC['Drain'] = set_combine(sets.precast.FC, {head="Fallen's Burgeonet +3"}) --12
sets.precast.FC['Drain II'] = set_combine(sets.precast.FC, {head="Fallen's Burgeonet +3"}) --12
sets.precast.FC['Drain III'] = set_combine(sets.precast.FC, {head="Fallen's Burgeonet +3"}) --12
--48 with above
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {
neck = "Stoicheion Medal", --44 FC
})
------------------------------------------------------------------------------------------------
------------------------------------- Weapon Skill Sets ----------------------------------------
------------------------------------------------------------------------------------------------
sets.precast.WS = {
ammo = "Seething Bomblet",
head = RELIC.Head,
body = EMPY.Body,
hands = EMPY.Hands,
left_ring = "Mars's Ring",
legs = RELIC.Legs,
feet = EMPY.Feet,
neck = "Justiciar's Torque",
waist = "Fotia Belt",
left_ear = "Bladeborn Earring",
right_ear = "Heathen's Earring",
right_ring = "Niqmaddu Ring",
back = DRKCape.WS,
}
sets.precast.WS.Acc = set_combine(sets.precast.WS, {
head = EMPY.Head,
right_ring = "Patricius Ring",
waist = "Eschan Stone",
left_ear = "Steelflash Earring",
})
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Catastrophe'] = set_combine(sets.precast.WS, {waist="Prosilio Belt +1"})
--sets.precast.WS['Catastrophe'].Acc = {}
sets.precast.WS['Sanguine Blade'] = {}
sets.precast.WS['Torcleaver'] = set_combine(sets.precast.WS, {waist="Prosilio Belt +1"})
--sets.precast.WS['Torcleaver'].Acc = {}
sets.precast.WS['Scourge'] = set_combine(sets.precast.WS, {waist="Prosilio Belt +1"})
--sets.precast.WS['Scourge'].Acc = {}
sets.precast.WS['Savage Blade'] = set_combine(sets.precast.WS, {waist="Prosilio Belt +1"})
--sets.precast.WS['Requiescat'] = {}
sets.precast.WS['Cross Reaper'] = set_combine(sets.precast.WS, {waist="Prosilio Belt +1"})
--sets.precast.WS['Cross Reaper'].Acc = {}
sets.precast.WS['Quietus'] = set_combine(sets.precast.WS, {waist="Prosilio Belt +1"})
--sets.precast.WS['Quietus'].Acc = {}
--sets.precast.WS['Entropy'] = {}
--sets.precast.WS['Entropy'].Acc = {}
sets.precast.WS['Insurgency'] = set_combine(sets.precast.WS, {waist="Prosilio Belt +1"})
--sets.precast.WS['Insurgency'].Acc = {}
--sets.precast.WS['Resolution'] = {}
--sets.precast.WS['Resolution'].Acc = {}
------------------------------------------------------------------------------------------------
---------------------------------------- Midcast Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.midcast.FastRecast = sets.precast.FC
sets.midcast['Enfeebling Magic'] = {
ammo = "Plumose Sachet",
head = "Befouled Crown",
body = EMPY.Body,
hands = EMPY.Hands,
left_ring = "Kishar Ring",
legs = EMPY.Legs,
feet = EMPY.Feet,
neck = "Eddy Necklace",
waist = "Eschan Stone",
left_ear = "Malignance Earring",
right_ear = "Heathen's Earring",
right_ring = "Fenrir Ring +1",
back = "Mollusca Mantle",
}
sets.midcast['Dark Magic'] = {
ammo = "Plumose Sachet",
head = EMPY.Head,
body = EMPY.Body,
hands = RELIC.Hands,
left_ring = "Kishar Ring",
legs = EMPY.Legs,
feet = EMPY.Feet,
neck = "Erra Pendant",
waist = "Eschan Stone",
left_ear = "Malignance Earring",
right_ear = "Friomisi Earring",
right_ring = "Fenrir Ring +1",
back = DRKCape.WS,
}
sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {
hands = EMPY.Hands,
--feet="Ig. Sollerets +3",
--ear1="Hirudinea Earring",
--ring1="Evanescence Ring",
right_ring = "Archon Ring",
back = "Niht Mantle",
--waist="Austerity Belt +1",
})
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Absorb = set_combine(sets.midcast['Dark Magic'], {
head="Ig. Burgonet +3",
hands="Pavor Gauntlets",
ring1="Kishar Ring",
back="Chuparrosa Mantle",
waist="Casso Sash",
})
sets.midcast['Absorb-TP'] = set_combine(sets.midcast.Absorb, {hands="Heath. Gauntlets +2"})
sets.midcast.Stun = {
ammo = "Plumose Sachet",
head = "Befouled Crown",
body = EMPY.Body,
hands = EMPY.Hands,
left_ring = "Kishar Ring",
legs = EMPY.Legs,
feet = EMPY.Feet,
neck = "Eddy Necklace",
waist = "Eschan Stone",
left_ear = "Malignance Earring",
right_ear = "Heathen's Earring",
right_ring = "Fenrir Ring +1",
back = "Mollusca Mantle",
}
sets.midcast['Dread Spikes'] = set_combine(sets.midcast['Dark Magic'], {
body = AF.Body,
left_ear = "Moonshade Earring",
right_ear = "Ethereal Earring",
left_ring = "Kunaj Ring",
right_ring = "Gelatinous Ring",
legs = RELIC.Legs,
feet = FlamFeet,
})
sets.midcast['Elemental Magic'] = {
ammo = "Plumose Sachet",
head = "Jumalik Helm",
body = AF.Body,
hands = AF.Hands,
left_ring = "Kishar Ring",
legs = EMPY.Legs,
feet = EMPY.Feet,
neck = "Stoicheion Medal",
waist = "Eschan Stone",
left_ear = "Malignance Earring",
right_ear = "Friomisi Earring",
right_ring = "Fenrir Ring +1",
back = "Argochampsa Mantle",
}
------------------------------------------------------------------------------------------------
----------------------------------------- Idle Sets --------------------------------------------
------------------------------------------------------------------------------------------------
sets.idle = {
ammo = "Demonry Stone",
head = "Jumalik Helm",
body = EMPY.Body,
hands = EMPY.Hands,
left_ring = "Defending Ring",
legs = EMPY.Legs,
feet = EMPY.Feet,
neck = "Twilight Torque",
waist = "Flume Belt",
left_ear = "Ethereal Earring",
right_ear = "Moonshade Earring",
right_ring = "Woltaris Ring +1",
back = "Mollusca Mantle",
}
-- sets.idle.DT = set_combine(sets.idle, {
-- ammo="Staunch Tathlum +1", --3/3
-- head="Hjarrandi Helm", --10/10
-- body="Hjarrandi Breast.", --12/12
--neck="Loricate Torque +1", --6/6
-- ear1="Odnowa Earring +1", --3/5
-- ring1="Defending Ring", --10/10
-- back="Moonlight Cape", --6/6
-- })
-- sets.idle.Town = set_combine(sets.idle, {
-- head="Volte Salade",
-- body="Ignominy Cuirass +3",
-- hands="Rat. Gadlings +1",
--legs="Fall. Flanchard +3",
-- feet="Rat. Sollerets +1",
-- neck="Abyssal Beads +2",
-- ear1="Odnowa Earring +1",
-- ear2="Thrud Earring",
--ring1={name="Chirich Ring +1", bag="wardrobe3"},
-- ring2={name="Chirich Ring +1", bag="wardrobe4"},
-- back=gear.DRK_DA_Cape,
-- })
sets.idle.Weak = set_combine(sets.idle, {})
------------------------------------------------------------------------------------------------
---------------------------------------- Defense Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.defense.PDT = sets.idle.DT
sets.defense.MDT = sets.idle.DT
------------------------------------------------------------------------------------------------
---------------------------------------- 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
sets.engaged = {
ammo = "Ginsen",
head = EMPY.Head,
body = EMPY.Body,
hands = "Eschite Gauntlets",
left_ring = "Cacoethic Ring +1",
legs = EMPY.Legs,
feet = EMPY.Feet,
neck = "Asperity Necklace",
waist = "Ioskeha Belt",
left_ear = "Brutal Earring",
right_ear = "Heathen's Earring",
right_ring = "Niqmaddu Ring",
back = "Atheling Mantle",
}
sets.engaged.LowAcc = set_combine(sets.engaged, {})
sets.engaged.MidAcc = set_combine(sets.engaged.LowAcc, {})
sets.engaged.HighAcc = set_combine(sets.engaged.MidAcc, {})
sets.engaged.STP = set_combine(sets.engaged, {})
sets.engaged.Caladbolg = set_combine(sets.engaged, {})
sets.engaged.Caladbolg.LowAcc = set_combine(sets.engaged.Apocalypse, {})
sets.engaged.Caladbolg.MidAcc = set_combine(sets.engaged.Apocalypse, {})
sets.engaged.Caladbolg.HighAcc = set_combine(sets.engaged.Apocalypse, {})
-- sets.engaged.Caladbolg.Aftermath = {
-- ammo="Yetshila +1", --2/6
-- --head="Blistering Sallet +1", --10/0
-- body="Hjarrandi Breast.", --13/0
--hands="Flam. Manopolas +2", --8/0,
--legs="Zoar Subligar +1", --5/0
--feet="Valorous Greaves", --0/4
-- neck="Abyssal Beads +2", --4/0
-- ring1="Hetairoi Ring", --1/0
--back=gear.DRK_Crit_Cape, --10/0
-- }
sets.engaged.Ragnarok = set_combine(sets.engaged, {
hands = EMPY.Hands,
})
sets.engaged.Apocalypse = set_combine(sets.engaged, {})
sets.engaged.Apocalypse.LowAcc = set_combine(sets.engaged.Apocalypse, {})
sets.engaged.Apocalypse.MidAcc = set_combine(sets.engaged.Apocalypse, {})
sets.engaged.Apocalypse.HighAcc = set_combine(sets.engaged.Apocalypse, {})
------------------------------------------------------------------------------------------------
---------------------------------------- Hybrid Sets -------------------------------------------
------------------------------------------------------------------------------------------------
-- sets.engaged.Hybrid = {
-- ammo="Seeth. Bomblet +1",
-- legs="Sulev. Cuisses +2",
-- ring1="Defending Ring",
--}
sets.engaged.DT = set_combine(sets.engaged, sets.engaged.Hybrid)
sets.engaged.LowAcc.DT = set_combine(sets.engaged.LowAcc, sets.engaged.Hybrid)
sets.engaged.MidAcc.DT = set_combine(sets.engaged.MidAcc, sets.engaged.Hybrid)
sets.engaged.HighAcc.DT = set_combine(sets.engaged.HighAcc, sets.engaged.Hybrid)
sets.engaged.STP.DT = set_combine(sets.engaged.STP, sets.engaged.Hybrid)
------------------------------------------------------------------------------------------------
---------------------------------------- Special Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.magic_burst = {}
sets.Kiting = {legs="Carmine Cuisses +1"}
sets.latent_refresh = {waist="Fucho-no-obi"}
-- sets.buff.Doom = {ring1={name="Saida Ring", bag="wardrobe3"}, ring2={name="Saida Ring", bag="wardrobe4"},}
-- sets.CP = {back="Mecisto. Mantle"}
sets.Caladbolg = {main="Caladbolg", sub="Utu Grip"}
sets.Apocalypse = {main="Apocalypse", sub="Utu Grip"}
sets.Ragnarok = {main="Ragnarok", sub="Dilettante's Grip +1"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Run after the default precast() is done.
-- eventArgs is the same one used in job_precast, in case information needs to be persisted.
function job_precast(spell, action, spellMap, eventArgs)
end
-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_aftercast(spell, action, spellMap, eventArgs)
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
check_weaponset()
end
-- 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 buffactive['Reive Mark'] then
-- if gain then
-- equip(sets.Reive)
-- disable('neck')
-- else
-- enable('neck')
-- end
-- end
if buff == "doom" then
if gain then
equip(sets.buff.Doom)
send_command('@input /p Doomed.')
disable('ring1','ring2','waist')
else
enable('ring1','ring2','waist')
handle_equipping_gear(player.status)
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_handle_equipping_gear(playerStatus, eventArgs)
check_gear()
update_combat_form()
determine_haste_group()
check_moving()
end
function job_update(cmdParams, eventArgs)
handle_equipping_gear(player.status)
get_combat_weapon()
end
function update_combat_form()
if DW == true then
state.CombatForm:set('DW')
elseif DW == false then
state.CombatForm:reset()
end
end
function get_custom_wsmode(spell, action, spellMap)
local wsmode
if state.OffenseMode.value == 'MidAcc' or state.OffenseMode.value == 'HighAcc' then
wsmode = 'Acc'
end
return wsmode
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
if state.CP.current == 'on' then
equip(sets.CP)
disable('back')
else
enable('back')
end
if state.Auto_Kite.value == true then
idleSet = set_combine(idleSet, sets.Kiting)
end
return idleSet
end
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
if buffactive['Aftermath: Lv.3'] and player.equipment.main == "Caladbolg"
and state.Critical.value then
meleeSet = set_combine(meleeSet, sets.engaged.Caladbolg.Aftermath)
end
return meleeSet
end
-- Function to display the current relevant user state when doing an update.
-- Return true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
local cf_msg = ''
if state.CombatForm.has_value then
cf_msg = ' (' ..state.CombatForm.value.. ')'
end
local m_msg = state.OffenseMode.value
if state.HybridMode.value ~= 'Normal' then
m_msg = m_msg .. '/' ..state.HybridMode.value
end
local ws_msg = state.WeaponskillMode.value
local c_msg = state.CastingMode.value
local d_msg = 'None'
if state.DefenseMode.value ~= 'None' then
d_msg = state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value
end
local i_msg = state.IdleMode.value
local msg = ''
if state.MagicBurst.value then
msg = ' Burst: On |'
end
if state.Kiting.value then
msg = msg .. ' Kiting: On |'
end
add_to_chat(002, '| ' ..string.char(31,210).. 'Melee' ..cf_msg.. ': ' ..string.char(31,001)..m_msg.. string.char(31,002).. ' |'
..string.char(31,207).. ' WS: ' ..string.char(31,001)..ws_msg.. string.char(31,002).. ' |'
..string.char(31,060).. ' Magic: ' ..string.char(31,001)..c_msg.. string.char(31,002).. ' |'
..string.char(31,004).. ' Defense: ' ..string.char(31,001)..d_msg.. string.char(31,002).. ' |'
..string.char(31,008).. ' Idle: ' ..string.char(31,001)..i_msg.. string.char(31,002).. ' |'
..string.char(31,002)..msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function get_combat_weapon()
state.CombatWeapon:reset()
if weapon_list:contains(player.equipment.main) then
state.CombatWeapon:set(player.equipment.main)
end
end
function determine_haste_group()
classes.CustomMeleeGroups:clear()
if DW == true then
if DW_needed <= 11 then
classes.CustomMeleeGroups:append('MaxHaste')
elseif DW_needed > 11 and DW_needed <= 21 then
classes.CustomMeleeGroups:append('HighHaste')
elseif DW_needed > 21 and DW_needed <= 27 then
classes.CustomMeleeGroups:append('MidHaste')
elseif DW_needed > 27 and DW_needed <= 37 then
classes.CustomMeleeGroups:append('LowHaste')
elseif DW_needed > 37 then
classes.CustomMeleeGroups:append('')
end
end
end
function job_self_command(cmdParams, eventArgs)
gearinfo(cmdParams, eventArgs)
end
function gearinfo(cmdParams, eventArgs)
if cmdParams[1] == 'gearinfo' then
if type(tonumber(cmdParams[2])) == 'number' then
if tonumber(cmdParams[2]) ~= DW_needed then
DW_needed = tonumber(cmdParams[2])
DW = true
end
elseif type(cmdParams[2]) == 'string' then
if cmdParams[2] == 'false' then
DW_needed = 0
DW = false
end
end
if type(tonumber(cmdParams[3])) == 'number' then
if tonumber(cmdParams[3]) ~= Haste then
Haste = tonumber(cmdParams[3])
end
end
if type(cmdParams[4]) == 'string' then
if cmdParams[4] == 'true' then
moving = true
elseif cmdParams[4] == 'false' then
moving = false
end
end
if not midaction() then
job_update()
end
end
end
function check_moving()
if state.DefenseMode.value == 'None' and state.Kiting.value == false then
if state.Auto_Kite.value == false and moving then
state.Auto_Kite:set(true)
elseif state.Auto_Kite.value == true and moving == false then
state.Auto_Kite:set(false)
end
end
end
function check_gear()
if no_swap_gear:contains(player.equipment.left_ring) then
disable("ring1")
else
enable("ring1")
end
if no_swap_gear:contains(player.equipment.right_ring) then
disable("ring2")
else
enable("ring2")
end
end
function check_weaponset()
equip(sets[state.WeaponSet.current])
end
windower.register_event('zone change',
function()
if no_swap_gear:contains(player.equipment.left_ring) then
enable("ring1")
equip(sets.idle)
end
if no_swap_gear:contains(player.equipment.right_ring) then
enable("ring2")
equip(sets.idle)
end
end
)
-- Select default macro book on initial load or subjob change.
--function select_default_macro_book()
-- Default macro set/book
-- if player.sub_job == 'SAM' then
-- set_macro_page(1, 4)
-- elseif player.sub_job == 'WAR' then
-- set_macro_page(1, 4)
-- else
-- set_macro_page(1, 4)
--end
end
function set_lockstyle()
send_command('wait 2; input /lockstyle on ' .. lockstyleset)
end
By Vaerix 2023-04-18 16:30:48
Comment out(--) the end at line 70 should fix the problem or give more error codes that need to be fixed. You don't have to copy the whole Lua again, if it keeps giving error codes keep reporting them and I'll look at it.
Quetzalcoatl.Balthor
Serveur: Quetzalcoatl
Game: FFXI
Posts: 18
By Quetzalcoatl.Balthor 2023-04-18 16:34:44
Done. Now it has same error, but says "****/Dark.lua:556: '<eof>' expected near 'end' .
By Vaerix 2023-04-18 16:35:40
Because you have an undeclared function at 554, either create a function or comment out lines 555/556
I need some help getting this DRK Lua to run. I copied Arislan's, and added my current (still up-and-coming) gear into each section and added my Ragnarok into the "Weapon List" and Weapon Set" sections. I "--" the lines I didn't understand/feel like I needed. I didn't change much of anything else, as far as I know. When I go to load it, it gives me a "Windower/addon/gearswap/data/Dark.lua:88: '<eof>' expected near 'end' " error.
I have no idea of the "language" of Gearswap except to add equipment. Could someone assist me in figuring out what I'm missing? It would be greatly appreciated.
Code -------------------------------------------------------------------------------------------------------------------
-- 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.Hasso = buffactive.Hasso or false
state.Buff.Souleater = buffactive.souleater or false
state.Buff['Last Resort'] = buffactive['Last Resort'] or false
weapon_list = S{"Apocalypse", "Ragnarok", "Naegling",}
no_swap_gear = S{"Warp Ring", "Dim. Ring (Dem)", "Dim. Ring (Holla)", "Dim. Ring (Mea)",
"Facility Ring", "Capacity Ring"}
elemental_ws = S{'Dark Harvest','Shadow of Death','Infernal Scythe','Frostbite','Freezebite',"Herculean Slash",
'Burning Blade','Red Lotus Blade','Shining Blade','Seraph Blade','Sanguine Blade'}
lockstyleset = 3
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent.
function user_setup()
state.OffenseMode:options('STP', 'Normal', 'LowAcc', 'MidAcc', 'HighAcc')
state.HybridMode:options('Normal', 'DT')
state.WeaponskillMode:options('Normal', 'Acc')
state.PhysicalDefenseMode:options('PDT', 'MDT')
state.IdleMode:options('Normal', 'DT')
state.WeaponSet = M{['description']='Weapon Set', 'Ragnarok', 'Apocalypse'}
state.MagicBurst = M(false, 'Magic Burst')
state.Critical = M(false, 'Critical Aftermath TP')
state.CP = M(false, "Capacity Points Mode")
-- Additional local binds
include('Global-Binds.lua') -- OK to remove this line
include('Global-BRD-Binds.lua') -- OK to remove this line
--send_command('bind !` gs c toggle MagicBurst')
--send_command('bind @a gs c toggle Critical')
--send_command('bind @c gs c toggle CP')
--send_command('bind @e gs c cycleback WeaponSet')
--send_command('bind @r gs c cycle WeaponSet')
--send_command('bind !q input /ma "Drain III" <t>')
--send_command('bind !w input /ja "Last Resort" <me>')
--send_command('bind !e input /ja "Hasso" <me>')
--send_command('bind !p input /ma "Dread Spikes" <me>')
-- if player.sub_job == 'WAR' then
-- send_command('bind ^numpad/ input /ja "Berserk" <me>')
-- send_command('bind ^numpad* input /ja "Warcry" <me>')
--send_command('bind ^numpad- input /ja "Aggressor" <me>')
-- elseif player.sub_job == 'SAM' then
-- send_command('bind ^numpad/ input /ja "Meditate" <me>')
-- send_command('bind ^numpad* input /ja "Sekkanoki" <me>')
-- send_command('bind ^numpad- input /ja "Third Eye" <me>')
end
-- send_command('bind ^numpad7 input /ws "Resolution" <t>')
-- send_command('bind ^numpad5 input /ws "Torcleaver" <t>')
--send_command('bind ^numpad1 input /ws "Freezebite" <t>')
select_default_macro_book()
set_lockstyle()
state.Auto_Kite = M(false, 'Auto_Kite')
Haste = 0
DW_needed = 0
DW = false
moving = false
update_combat_form()
determine_haste_group()
get_combat_weapon()
end
-- Called when this job file is unloaded (eg: job change)
function user_unload()
send_command('unbind !`')
send_command('unbind !q')
send_command('unbind !w')
send_command('bind !e input /ma "Haste" <stpc>')
send_command('unbind !p')
send_command('unbind @a')
send_command('unbind @c')
send_command('unbind @e')
send_command('unbind @r')
send_command('unbind ^numpad/')
send_command('unbind ^numpad*')
send_command('unbind ^numpad-')
send_command('unbind ^numpad7')
send_command('unbind ^numpad8')
send_command('unbind ^numpad4')
send_command('unbind ^numpad5')
send_command('unbind ^numpad6')
send_command('unbind ^numpad1')
end
function get_sets()
-- JSE
AF = {} -- leave this empty
RELIC = {} -- leave this empty
EMPY = {} -- leave this empty
-- Fill this with your own JSE.
--Ignominy
AF.Head = ""
AF.Body = "Ignominy Cuirass +1"
AF.Hands = ""
AF.Legs = "Ignominy Flanchard +1"
AF.Feet = ""
--Fallen's
RELIC.Head = "Fallen's Burgeonet +3"
RELIC.Body = "Fallen's Cuirass +1"
RELIC.Hands = "Fallen's Finger Gauntlets +1"
RELIC.Legs = "Fallen's Flanchard +3"
RELIC.Feet = "Fallen's Sollerets"
--Heathen's
EMPY.Head = "Heathen's Burgeonet +2"
EMPY.Body = "Heathen's Cuirass +2"
EMPY.Hands = "Heathen's Gauntlets +2"
EMPY.Legs = "Heathen's Flanchard +2"
EMPY.Feet = "Heathen's Sollerets +2"
--Sulevia's
SulHead = "Sulevia's Mask"
SulBod = "Sulevia's Platemail +1"
SulHands = "Sulevia's Gauntlets +1"
SulLegs = "Sulevia's Cuisses +1"
SulFeet = "Sulevia's Leggings +1"
--Flamma
FlamHead = "Flamma Zucchetto"
FlamBod = "Flamma Korazin"
FlamHand = "Flamma Manopolas"
FlamLeg = "Flamma Dirs"
FlamFeet = "Flamma Gambieras +2"
-- Capes:
-- Sucellos's And such, add your own.
AthMan = "Atheling Mantle"
DRKCape = {}
--DRKCape.TP = { name="", augments={}}
DRKCape.WS = { name="Niht Mantle", augments={'Attack+5','Dark magic skill +6','"Drain" and "Aspir" potency +19','Weapon skill damage +2%',}}
end
-- Define sets and vars used by this job file.
function init_gear_sets()
------------------------------------------------------------------------------------------------
---------------------------------------- Precast Sets ------------------------------------------
------------------------------------------------------------------------------------------------
---- Precast Sets ----
-- Enmity set
sets.Enmity = {}
-- Precast sets to enhance JAs
--sets.precast.JA['Arcane Circle'] = {feet="Ig. Sollerets +3"}
sets.precast.JA['Blood Weapon'] = {body=RELIC.Body}
sets.precast.JA['Dark Seal'] = {head=RELIC.Head}
sets.precast.JA['Diabolic Eye'] = {hands=RELIC.Hands}
sets.precast.JA['Last Resort'] = {feet=RELIC.Feet} --back=gear.DRK_DA_Cape,}
sets.precast.JA['Nether Void'] = {legs=EMPY.Legs}
--sets.precast.JA['Souleater'] = {head="Ig. Burgonet +3"}
--sets.precast.JA['Weapon Bash'] = {hands="Ig. Gauntlets +2"}
sets.precast.FC = {
head="Cizin Helm +1", --5
neck="Orunmila's Torque", --5
ear1="Malignance Earring", --4
ear2="Loquacious Earring", --2
hands="Buremte Gloves", --3
ring1="Kishar Ring", --4
ring2="Prolix Ring", --2, 10 macc
legs="Enif Cosciales", --8
feet="Carmine Greaves +1", --8
back=""
--41 Total
}
sets.precast.FC['Dark Magic'] = set_combine(sets.precast.FC, {head="Fallen's Burgeonet +3"})
sets.precast.FC['Drain'] = set_combine(sets.precast.FC, {head="Fallen's Burgeonet +3"}) --12
sets.precast.FC['Drain II'] = set_combine(sets.precast.FC, {head="Fallen's Burgeonet +3"}) --12
sets.precast.FC['Drain III'] = set_combine(sets.precast.FC, {head="Fallen's Burgeonet +3"}) --12
--48 with above
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {
neck = "Stoicheion Medal", --44 FC
})
------------------------------------------------------------------------------------------------
------------------------------------- Weapon Skill Sets ----------------------------------------
------------------------------------------------------------------------------------------------
sets.precast.WS = {
ammo = "Seething Bomblet",
head = RELIC.Head,
body = EMPY.Body,
hands = EMPY.Hands,
left_ring = "Mars's Ring",
legs = RELIC.Legs,
feet = EMPY.Feet,
neck = "Justiciar's Torque",
waist = "Fotia Belt",
left_ear = "Bladeborn Earring",
right_ear = "Heathen's Earring",
right_ring = "Niqmaddu Ring",
back = DRKCape.WS,
}
sets.precast.WS.Acc = set_combine(sets.precast.WS, {
head = EMPY.Head,
right_ring = "Patricius Ring",
waist = "Eschan Stone",
left_ear = "Steelflash Earring",
})
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Catastrophe'] = set_combine(sets.precast.WS, {waist="Prosilio Belt +1"})
--sets.precast.WS['Catastrophe'].Acc = {}
sets.precast.WS['Sanguine Blade'] = {}
sets.precast.WS['Torcleaver'] = set_combine(sets.precast.WS, {waist="Prosilio Belt +1"})
--sets.precast.WS['Torcleaver'].Acc = {}
sets.precast.WS['Scourge'] = set_combine(sets.precast.WS, {waist="Prosilio Belt +1"})
--sets.precast.WS['Scourge'].Acc = {}
sets.precast.WS['Savage Blade'] = set_combine(sets.precast.WS, {waist="Prosilio Belt +1"})
--sets.precast.WS['Requiescat'] = {}
sets.precast.WS['Cross Reaper'] = set_combine(sets.precast.WS, {waist="Prosilio Belt +1"})
--sets.precast.WS['Cross Reaper'].Acc = {}
sets.precast.WS['Quietus'] = set_combine(sets.precast.WS, {waist="Prosilio Belt +1"})
--sets.precast.WS['Quietus'].Acc = {}
--sets.precast.WS['Entropy'] = {}
--sets.precast.WS['Entropy'].Acc = {}
sets.precast.WS['Insurgency'] = set_combine(sets.precast.WS, {waist="Prosilio Belt +1"})
--sets.precast.WS['Insurgency'].Acc = {}
--sets.precast.WS['Resolution'] = {}
--sets.precast.WS['Resolution'].Acc = {}
------------------------------------------------------------------------------------------------
---------------------------------------- Midcast Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.midcast.FastRecast = sets.precast.FC
sets.midcast['Enfeebling Magic'] = {
ammo = "Plumose Sachet",
head = "Befouled Crown",
body = EMPY.Body,
hands = EMPY.Hands,
left_ring = "Kishar Ring",
legs = EMPY.Legs,
feet = EMPY.Feet,
neck = "Eddy Necklace",
waist = "Eschan Stone",
left_ear = "Malignance Earring",
right_ear = "Heathen's Earring",
right_ring = "Fenrir Ring +1",
back = "Mollusca Mantle",
}
sets.midcast['Dark Magic'] = {
ammo = "Plumose Sachet",
head = EMPY.Head,
body = EMPY.Body,
hands = RELIC.Hands,
left_ring = "Kishar Ring",
legs = EMPY.Legs,
feet = EMPY.Feet,
neck = "Erra Pendant",
waist = "Eschan Stone",
left_ear = "Malignance Earring",
right_ear = "Friomisi Earring",
right_ring = "Fenrir Ring +1",
back = DRKCape.WS,
}
sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {
hands = EMPY.Hands,
--feet="Ig. Sollerets +3",
--ear1="Hirudinea Earring",
--ring1="Evanescence Ring",
right_ring = "Archon Ring",
back = "Niht Mantle",
--waist="Austerity Belt +1",
})
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Absorb = set_combine(sets.midcast['Dark Magic'], {
head="Ig. Burgonet +3",
hands="Pavor Gauntlets",
ring1="Kishar Ring",
back="Chuparrosa Mantle",
waist="Casso Sash",
})
sets.midcast['Absorb-TP'] = set_combine(sets.midcast.Absorb, {hands="Heath. Gauntlets +2"})
sets.midcast.Stun = {
ammo = "Plumose Sachet",
head = "Befouled Crown",
body = EMPY.Body,
hands = EMPY.Hands,
left_ring = "Kishar Ring",
legs = EMPY.Legs,
feet = EMPY.Feet,
neck = "Eddy Necklace",
waist = "Eschan Stone",
left_ear = "Malignance Earring",
right_ear = "Heathen's Earring",
right_ring = "Fenrir Ring +1",
back = "Mollusca Mantle",
}
sets.midcast['Dread Spikes'] = set_combine(sets.midcast['Dark Magic'], {
body = AF.Body,
left_ear = "Moonshade Earring",
right_ear = "Ethereal Earring",
left_ring = "Kunaj Ring",
right_ring = "Gelatinous Ring",
legs = RELIC.Legs,
feet = FlamFeet,
})
sets.midcast['Elemental Magic'] = {
ammo = "Plumose Sachet",
head = "Jumalik Helm",
body = AF.Body,
hands = AF.Hands,
left_ring = "Kishar Ring",
legs = EMPY.Legs,
feet = EMPY.Feet,
neck = "Stoicheion Medal",
waist = "Eschan Stone",
left_ear = "Malignance Earring",
right_ear = "Friomisi Earring",
right_ring = "Fenrir Ring +1",
back = "Argochampsa Mantle",
}
------------------------------------------------------------------------------------------------
----------------------------------------- Idle Sets --------------------------------------------
------------------------------------------------------------------------------------------------
sets.idle = {
ammo = "Demonry Stone",
head = "Jumalik Helm",
body = EMPY.Body,
hands = EMPY.Hands,
left_ring = "Defending Ring",
legs = EMPY.Legs,
feet = EMPY.Feet,
neck = "Twilight Torque",
waist = "Flume Belt",
left_ear = "Ethereal Earring",
right_ear = "Moonshade Earring",
right_ring = "Woltaris Ring +1",
back = "Mollusca Mantle",
}
-- sets.idle.DT = set_combine(sets.idle, {
-- ammo="Staunch Tathlum +1", --3/3
-- head="Hjarrandi Helm", --10/10
-- body="Hjarrandi Breast.", --12/12
--neck="Loricate Torque +1", --6/6
-- ear1="Odnowa Earring +1", --3/5
-- ring1="Defending Ring", --10/10
-- back="Moonlight Cape", --6/6
-- })
-- sets.idle.Town = set_combine(sets.idle, {
-- head="Volte Salade",
-- body="Ignominy Cuirass +3",
-- hands="Rat. Gadlings +1",
--legs="Fall. Flanchard +3",
-- feet="Rat. Sollerets +1",
-- neck="Abyssal Beads +2",
-- ear1="Odnowa Earring +1",
-- ear2="Thrud Earring",
--ring1={name="Chirich Ring +1", bag="wardrobe3"},
-- ring2={name="Chirich Ring +1", bag="wardrobe4"},
-- back=gear.DRK_DA_Cape,
-- })
sets.idle.Weak = set_combine(sets.idle, {})
------------------------------------------------------------------------------------------------
---------------------------------------- Defense Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.defense.PDT = sets.idle.DT
sets.defense.MDT = sets.idle.DT
------------------------------------------------------------------------------------------------
---------------------------------------- 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
sets.engaged = {
ammo = "Ginsen",
head = EMPY.Head,
body = EMPY.Body,
hands = "Eschite Gauntlets",
left_ring = "Cacoethic Ring +1",
legs = EMPY.Legs,
feet = EMPY.Feet,
neck = "Asperity Necklace",
waist = "Ioskeha Belt",
left_ear = "Brutal Earring",
right_ear = "Heathen's Earring",
right_ring = "Niqmaddu Ring",
back = "Atheling Mantle",
}
sets.engaged.LowAcc = set_combine(sets.engaged, {})
sets.engaged.MidAcc = set_combine(sets.engaged.LowAcc, {})
sets.engaged.HighAcc = set_combine(sets.engaged.MidAcc, {})
sets.engaged.STP = set_combine(sets.engaged, {})
sets.engaged.Caladbolg = set_combine(sets.engaged, {})
sets.engaged.Caladbolg.LowAcc = set_combine(sets.engaged.Apocalypse, {})
sets.engaged.Caladbolg.MidAcc = set_combine(sets.engaged.Apocalypse, {})
sets.engaged.Caladbolg.HighAcc = set_combine(sets.engaged.Apocalypse, {})
-- sets.engaged.Caladbolg.Aftermath = {
-- ammo="Yetshila +1", --2/6
-- --head="Blistering Sallet +1", --10/0
-- body="Hjarrandi Breast.", --13/0
--hands="Flam. Manopolas +2", --8/0,
--legs="Zoar Subligar +1", --5/0
--feet="Valorous Greaves", --0/4
-- neck="Abyssal Beads +2", --4/0
-- ring1="Hetairoi Ring", --1/0
--back=gear.DRK_Crit_Cape, --10/0
-- }
sets.engaged.Ragnarok = set_combine(sets.engaged, {
hands = EMPY.Hands,
})
sets.engaged.Apocalypse = set_combine(sets.engaged, {})
sets.engaged.Apocalypse.LowAcc = set_combine(sets.engaged.Apocalypse, {})
sets.engaged.Apocalypse.MidAcc = set_combine(sets.engaged.Apocalypse, {})
sets.engaged.Apocalypse.HighAcc = set_combine(sets.engaged.Apocalypse, {})
------------------------------------------------------------------------------------------------
---------------------------------------- Hybrid Sets -------------------------------------------
------------------------------------------------------------------------------------------------
-- sets.engaged.Hybrid = {
-- ammo="Seeth. Bomblet +1",
-- legs="Sulev. Cuisses +2",
-- ring1="Defending Ring",
--}
sets.engaged.DT = set_combine(sets.engaged, sets.engaged.Hybrid)
sets.engaged.LowAcc.DT = set_combine(sets.engaged.LowAcc, sets.engaged.Hybrid)
sets.engaged.MidAcc.DT = set_combine(sets.engaged.MidAcc, sets.engaged.Hybrid)
sets.engaged.HighAcc.DT = set_combine(sets.engaged.HighAcc, sets.engaged.Hybrid)
sets.engaged.STP.DT = set_combine(sets.engaged.STP, sets.engaged.Hybrid)
------------------------------------------------------------------------------------------------
---------------------------------------- Special Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.magic_burst = {}
sets.Kiting = {legs="Carmine Cuisses +1"}
sets.latent_refresh = {waist="Fucho-no-obi"}
-- sets.buff.Doom = {ring1={name="Saida Ring", bag="wardrobe3"}, ring2={name="Saida Ring", bag="wardrobe4"},}
-- sets.CP = {back="Mecisto. Mantle"}
sets.Caladbolg = {main="Caladbolg", sub="Utu Grip"}
sets.Apocalypse = {main="Apocalypse", sub="Utu Grip"}
sets.Ragnarok = {main="Ragnarok", sub="Dilettante's Grip +1"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Run after the default precast() is done.
-- eventArgs is the same one used in job_precast, in case information needs to be persisted.
function job_precast(spell, action, spellMap, eventArgs)
end
-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_aftercast(spell, action, spellMap, eventArgs)
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
check_weaponset()
end
-- 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 buffactive['Reive Mark'] then
-- if gain then
-- equip(sets.Reive)
-- disable('neck')
-- else
-- enable('neck')
-- end
-- end
if buff == "doom" then
if gain then
equip(sets.buff.Doom)
send_command('@input /p Doomed.')
disable('ring1','ring2','waist')
else
enable('ring1','ring2','waist')
handle_equipping_gear(player.status)
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_handle_equipping_gear(playerStatus, eventArgs)
check_gear()
update_combat_form()
determine_haste_group()
check_moving()
end
function job_update(cmdParams, eventArgs)
handle_equipping_gear(player.status)
get_combat_weapon()
end
function update_combat_form()
if DW == true then
state.CombatForm:set('DW')
elseif DW == false then
state.CombatForm:reset()
end
end
function get_custom_wsmode(spell, action, spellMap)
local wsmode
if state.OffenseMode.value == 'MidAcc' or state.OffenseMode.value == 'HighAcc' then
wsmode = 'Acc'
end
return wsmode
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
if state.CP.current == 'on' then
equip(sets.CP)
disable('back')
else
enable('back')
end
if state.Auto_Kite.value == true then
idleSet = set_combine(idleSet, sets.Kiting)
end
return idleSet
end
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
if buffactive['Aftermath: Lv.3'] and player.equipment.main == "Caladbolg"
and state.Critical.value then
meleeSet = set_combine(meleeSet, sets.engaged.Caladbolg.Aftermath)
end
return meleeSet
end
-- Function to display the current relevant user state when doing an update.
-- Return true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
local cf_msg = ''
if state.CombatForm.has_value then
cf_msg = ' (' ..state.CombatForm.value.. ')'
end
local m_msg = state.OffenseMode.value
if state.HybridMode.value ~= 'Normal' then
m_msg = m_msg .. '/' ..state.HybridMode.value
end
local ws_msg = state.WeaponskillMode.value
local c_msg = state.CastingMode.value
local d_msg = 'None'
if state.DefenseMode.value ~= 'None' then
d_msg = state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value
end
local i_msg = state.IdleMode.value
local msg = ''
if state.MagicBurst.value then
msg = ' Burst: On |'
end
if state.Kiting.value then
msg = msg .. ' Kiting: On |'
end
add_to_chat(002, '| ' ..string.char(31,210).. 'Melee' ..cf_msg.. ': ' ..string.char(31,001)..m_msg.. string.char(31,002).. ' |'
..string.char(31,207).. ' WS: ' ..string.char(31,001)..ws_msg.. string.char(31,002).. ' |'
..string.char(31,060).. ' Magic: ' ..string.char(31,001)..c_msg.. string.char(31,002).. ' |'
..string.char(31,004).. ' Defense: ' ..string.char(31,001)..d_msg.. string.char(31,002).. ' |'
..string.char(31,008).. ' Idle: ' ..string.char(31,001)..i_msg.. string.char(31,002).. ' |'
..string.char(31,002)..msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function get_combat_weapon()
state.CombatWeapon:reset()
if weapon_list:contains(player.equipment.main) then
state.CombatWeapon:set(player.equipment.main)
end
end
function determine_haste_group()
classes.CustomMeleeGroups:clear()
if DW == true then
if DW_needed <= 11 then
classes.CustomMeleeGroups:append('MaxHaste')
elseif DW_needed > 11 and DW_needed <= 21 then
classes.CustomMeleeGroups:append('HighHaste')
elseif DW_needed > 21 and DW_needed <= 27 then
classes.CustomMeleeGroups:append('MidHaste')
elseif DW_needed > 27 and DW_needed <= 37 then
classes.CustomMeleeGroups:append('LowHaste')
elseif DW_needed > 37 then
classes.CustomMeleeGroups:append('')
end
end
end
function job_self_command(cmdParams, eventArgs)
gearinfo(cmdParams, eventArgs)
end
function gearinfo(cmdParams, eventArgs)
if cmdParams[1] == 'gearinfo' then
if type(tonumber(cmdParams[2])) == 'number' then
if tonumber(cmdParams[2]) ~= DW_needed then
DW_needed = tonumber(cmdParams[2])
DW = true
end
elseif type(cmdParams[2]) == 'string' then
if cmdParams[2] == 'false' then
DW_needed = 0
DW = false
end
end
if type(tonumber(cmdParams[3])) == 'number' then
if tonumber(cmdParams[3]) ~= Haste then
Haste = tonumber(cmdParams[3])
end
end
if type(cmdParams[4]) == 'string' then
if cmdParams[4] == 'true' then
moving = true
elseif cmdParams[4] == 'false' then
moving = false
end
end
if not midaction() then
job_update()
end
end
end
function check_moving()
if state.DefenseMode.value == 'None' and state.Kiting.value == false then
if state.Auto_Kite.value == false and moving then
state.Auto_Kite:set(true)
elseif state.Auto_Kite.value == true and moving == false then
state.Auto_Kite:set(false)
end
end
end
function check_gear()
if no_swap_gear:contains(player.equipment.left_ring) then
disable("ring1")
else
enable("ring1")
end
if no_swap_gear:contains(player.equipment.right_ring) then
disable("ring2")
else
enable("ring2")
end
end
function check_weaponset()
equip(sets[state.WeaponSet.current])
end
windower.register_event('zone change',
function()
if no_swap_gear:contains(player.equipment.left_ring) then
enable("ring1")
equip(sets.idle)
end
if no_swap_gear:contains(player.equipment.right_ring) then
enable("ring2")
equip(sets.idle)
end
end
)
-- Select default macro book on initial load or subjob change.
--function select_default_macro_book()
-- Default macro set/book
-- if player.sub_job == 'SAM' then
-- set_macro_page(1, 4)
-- elseif player.sub_job == 'WAR' then
-- set_macro_page(1, 4)
-- else
-- set_macro_page(1, 4)
--end
end
function set_lockstyle()
send_command('wait 2; input /lockstyle on ' .. lockstyleset)
end
|
|