Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -------------------------------------------------------------------------------------------------------------------
- -- Setup functions for this job.
- -------------------------------------------------------------------------------------------------------------------
- function get_sets()
- mote_include_version = 2
- -- Load and initialize the include file
- include('Xathe-Include')
- end
- -------------------------------------------------------------------------------------------------------------------
- -- User setup functions for this job.
- -------------------------------------------------------------------------------------------------------------------
- function user_setup()
- state.OffenseMode:options('Normal', 'Acc')
- state.WeaponskillMode:options('Normal', 'Acc')
- state.HybridMode:options('Normal', 'DT')
- -- Additional local binds
- send_command('bind %` gs c cycle HybridMode')
- set_lockstyle()
- toggle_display()
- end
- function user_unload()
- send_command('unbind %`')
- end
- function init_gear_sets()
- -- Precast sets
- sets.precast.JA['Dark Seal'] = {head="Fall. Burgeonet +1"}
- sets.precast.JA['Last Resort'] = {back="Ankou's Mantle", feet="Fall. Sollerets +1"}
- sets.precast.JA['Nether Void'] = {legs="Heath. Flanchard +1"}
- sets.precast.FC_Base = { -- 50
- head="Carmine Mask +1", --14
- neck="Voltsurge Torque", -- 4
- ear2="Loquac. Earring", -- 2
- body="Odyss. Chestplate", -- 5
- hands="Leyline Gloves", -- 5
- ring2="Weather. Ring", -- 5
- back=Ankou.FC, -- 10
- legs="Eschite Cuisses" -- 5
- }
- sets.precast.QuickMagic = { -- 7
- ammo="Impatiens", -- 2
- ring1="Lebeche Ring", -- 2
- ring2="Weather. Ring" -- 3
- }
- sets.precast.FC = set_combine(sets.precast.FC_Base, sets.precast.QuickMagic)
- -- Midcast sets
- sets.midcast['Dark Magic'] = {
- ammo="Pemphredo Tathlum",
- head="Carmine Mask +1",
- neck="Erra Pendant", -- 10
- ear2="Digni. Earring",
- body="Carm. Sc. Mail +1", -- 16
- hands="Fall. Fin. Gaunt. +2", -- 16
- ring1="Evanescence Ring", -- 10
- ring2="Stikini Ring", -- 5
- back="Niht Mantle", -- 10
- legs="Fall. Flanchard +3", -- 18
- feet="Ratri Sollerets"
- }
- sets.midcast.Absorb = set_combine(sets.midcast['Dark Magic'], {
- hands="Pavor Gauntlets",
- ring2="Kishar Ring",
- back="Chuparrosa Mantle"
- })
- gear.default.obi_waist = "Austerity Belt +1"
- sets.midcast.Aspir = set_combine(sets.midcast['Dark Magic'], {
- ear1="Hirudinea Earring",
- ring2="Archon Ring",
- waist=gear.ElementalObi
- })
- sets.midcast.Drain = sets.midcast.Aspir
- sets.midcast['Dread Spikes'] = { -- 2933
- head="Odyssean Helm",
- body="Heath. Cuirass +1",
- hands="Flam. Manopolas +2",
- ring2="Moonlight Ring",
- back="Moonbeam Cape",
- legs="Flamma Dirs +1",
- feet="Ratri Sollerets"
- }
- sets.midcast.Endark = set_combine(sets.midcast['Dark Magic'], {legs="Eschite Cuisses"})
- -- Idle sets
- sets.idle = {
- main="Caladbolg",
- sub="Utu Grip",
- ammo="Ginsen",
- head="Sulevia's Mask +2",
- neck="Loricate Torque +1",
- ear1="Brutal Earring",
- ear2="Cessance Earring",
- body="Sulevia's Plate. +1",
- hands="Sulev. Gauntlets +2",
- ring1="Defending Ring",
- ring2="Moonlight Ring",
- back=Ankou.DA,
- waist="Flume Belt +1",
- legs="Carmine Cuisses +1",
- feet="Sulev. Leggings +2"
- }
- sets.Kiting = {legs="Carmine Cuisses +1"}
- -- Defense sets
- sets.DT_Base = { -- 39
- head="Sulevia's Mask +2", -- 6
- neck="Loricate Torque +1", -- 6
- hands="Sulev. Gauntlets +2", -- 5
- ring1="Defending Ring", -- 10
- ring2="Moonlight Ring", -- 5
- back=Ankou.DA, -- [10]
- legs="Sulev. Cuisses +2" -- 7
- }
- sets.defense.PDT = set_combine(sets.DT_Base, {body="Sulevia's Plate. +1", feet="Sulev. Leggings +2"}) -- 50
- sets.defense.MDT = sets.defense.PDT
- -- Engaged sets
- sets.engaged = set_combine(sets.idle, {
- head="Flam. Zucchetto +2",
- neck="Abyssal Beads +1",
- body=Valorous.Body.DA,
- hands="Flam. Manopolas +2",
- ring1="Hetairoi Ring",
- ring2="Niqmaddu Ring",
- waist="Ioskeha Belt +1",
- legs=Odyssean.Legs.DA,
- feet="Flam. Gambieras +2"
- })
- sets.engaged.Acc = set_combine(sets.engaged, { -- 86 (1236)
- ammo="Seeth. Bomblet +1", -- 8
- ear1="Telos Earring", -- 10
- body="Emicho Haubert +1", -- 23
- hands="Emi. Gauntlets +1", -- 8
- ring1="Flamma Ring", -- 12
- legs="Flamma Dirs +1" -- 25
- })
- -- Weaponskill sets
- sets.precast.WS = set_combine(sets.engaged, {
- ammo="Knobkierrie",
- head=Odyssean.Head.WSD,
- ear1="Ishvara Earring",
- ear2="Brutal Earring",
- body="Ignominy Cuirass +3",
- hands=Odyssean.Hands.WSD,
- ring1="Regal Ring",
- back=Ankou.WSD,
- legs="Fall. Flanchard +3",
- feet="Sulev. Leggings +2"
- })
- sets.precast.WS.Acc = set_combine(sets.precast.WS, { -- 106 (1175)
- head="Flam. Zucchetto +2", -- 21
- ear1="Telos Earring", -- 10
- ear2="Ishvara Earring",
- hands="Emi. Gauntlets +1" -- 46
- })
- sets.precast.WS['Resolution'] = set_combine(sets.precast.WS, {
- head="Flam. Zucchetto +2",
- ear1="Brutal Earring",
- ear2="Ishvara Earring",
- hands="Sulev. Gauntlets +2",
- waist="Soil Belt",
- feet="Flam. Gambieras +2"
- })
- sets.precast.WS['Resolution'].Acc = set_combine(sets.precast.WS.Acc, {
- ear2="Brutal Earring",
- hands="Sulev. Gauntlets +2",
- waist="Soil Belt",
- feet="Flam. Gambieras +2"
- })
- sets.precast.WS['Torcleaver'] = set_combine(sets.precast.WS, {waist="Light Belt"})
- sets.precast.WS['Torcleaver'].Acc = set_combine(sets.precast.WS.Acc, {waist="Light Belt"})
- end
- -------------------------------------------------------------------------------------------------------------------
- -- Job-specific hooks for standard casting events.
- -------------------------------------------------------------------------------------------------------------------
- function job_precast(spell, action, spellMap, eventArgs)
- if spell.type == 'WeaponSkill' and range_check(spell) then
- print_message('Canceled %s (Too Far)':format(spell.name), 167)
- eventArgs.cancel = true
- end
- if spell.name == 'Torcleaver' and dynamis_zone() then
- eventArgs.handled = true
- end
- end
- function job_post_precast(spell, action, spellMap, eventArgs)
- if spell.type == 'WeaponSkill' and moonshade_ws(spell) then
- equip({ear2="Moonshade Earring"})
- end
- end
- function job_post_midcast(spell, action, spellMap, eventArgs)
- if spell.name == 'Drain III' then
- if buffactive['Dark Seal'] then
- if buffactive['Nether Void'] and player.tp < 600 and not buffactive['Aftermath: Lv.3'] then
- equip({main="Dacnomania"})
- end
- equip({head="Fall. Burgeonet +1"})
- end
- end
- end
- function job_aftercast(spell, action, spellMap, eventArgs)
- if not buffactive['Last Resort'] then
- if windower.ffxi.get_ability_recasts()[87] == 0 and spell.name ~= 'Last Resort' then
- print_message('Last Resort is ready!', 167)
- elseif not buffactive.Hasso and spell.name ~= 'Hasso' and player.sub_job == 'SAM' then
- print_message('Hasso is inactive!', 167)
- end
- end
- end
- -------------------------------------------------------------------------------------------------------------------
- -- Job-specific hooks for non-casting events.
- -------------------------------------------------------------------------------------------------------------------
- function job_buff_change(buff, gain, eventArgs)
- local name = buff:lower()
- if disables:contains(name) then
- if gain then
- equip(sets.defense.PDT)
- elseif not has_any_buff_of(disables) then
- handle_equipping_gear(player.status)
- end
- elseif name == 'aftermath: lv.3' then
- if gain then
- send_command('timers c "Aftermath: Lv.3" 180')
- print_message('==== Aftermath: Lv.3 Gained ====')
- end
- elseif name == 'blood weapon' then
- if not gain then
- enable('main')
- equip({main="Caladbolg"})
- send_command('cancel souleater')
- end
- elseif name == 'last resort' or name == 'hasso' then
- if not gain and not buffactive.Hasso then
- print_message('Hasso is inactive!', 167)
- end
- end
- end
- function job_state_change(stateField, newValue, oldValue)
- update_display()
- end
- -------------------------------------------------------------------------------------------------------------------
- -- User code that supplements standard library decisions.
- -------------------------------------------------------------------------------------------------------------------
- function customize_melee_set(meleeSet)
- if buffactive['Blood Weapon'] and buffactive['Souleater'] and player.max_hp > 8000 then
- meleeSet = set_combine(meleeSet, {main="Dacnomania"})
- end
- if state.HybridMode.value == 'DT' then
- meleeSet = set_combine(meleeSet, sets.DT_Base)
- end
- if state.Kiting.value then
- meleeSet = set_combine(meleeSet, sets.Kiting)
- end
- return meleeSet
- end
- function display_current_job_state(eventArgs)
- print_message('Refreshed gear.')
- eventArgs.handled = true
- end
- -------------------------------------------------------------------------------------------------------------------
- -- User code that supplements self-commands.
- -------------------------------------------------------------------------------------------------------------------
- function job_self_command(cmdParams, eventArgs)
- if cmdParams[1] == 'dac' then
- equip({main="Dacnomania"})
- disable('main')
- print_message('Locked %s %s':format('Dacnomania':color(258), 'to main.':color(207)))
- elseif cmdParams[1] == 'raetic' then
- equip({main="Raetic Algol +1"})
- disable('main')
- print_message('Locked %s %s':format('Raetic Algol +1':color(258), 'to main.':color(207)))
- elseif cmdParams[1] == 'dyna' then
- handle_equipping_gear(player.status)
- print_message('Forcing gear update.', 167)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement