I 'think' it was working when I last played 3 months ago, but I could be wrong.
Whole thing is here:
Code
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Defines whether certain buffs are active or not and defines them as true or false.
function job_setup()
state.Buff['Climactic Flourish'] = buffactive['Climactic Flourish'] or false
state.SkillchainPending = M(false, 'Skillchain Pending')
determine_haste_group()
end
-- Offensive Modes are cycled with F9.
function user_setup()
state.OffenseMode:options('Normal', 'PDT', 'PDTH', 'Acc', 'Exp')
-- Allows the use of Ctrl + ~ and Alt + ~ for 2 more macros of your choice.
send_command('bind ^` input /ja "Chocobo Jig II" <me>')
send_command('bind !` input /ja "Spectral Jig" <me>')
send_command('bind !- input /ja "Contradance" <me>')
select_default_macro_book()
end
-- Erases the binds above when you change jobs.
function user_unload()
send_command('unbind ^`')
send_command('unbind !`')
send_command('unbind !-')
end
function init_gear_sets()
-- Precast Sets
sets.precast.Waltz = {
head="Anwig Salade",neck="Twilight Torque",lear="Brutal Earring",rear="Roundel Earring",
body="Maxixi Casaque +1",hands={ name="Taeon Gloves", augments={'"Mag.Atk.Bns."+20','"Waltz" potency +5%',}},lring="Asklepian Ring",rring="Valseur's Ring",
back="Toetapper Mantle",waist="Flume Belt",legs={ name="Taeon Tights", augments={'"Waltz" potency +5%',}},feet="Maxixi Toe shoes"}
sets.precast.Waltz['Healing Waltz'] = {}
sets.precast.JA['No Foot Rise'] = {body="Horos Casaque"}
sets.precast.JA['Trance'] = {head="Horos Tiara"}
sets.precast.Samba = {head="Maxixi Tiara"}
sets.precast.Jig = {feet="Maxixi Toe shoes"}
sets.precast.Step = {ammo="Honed Tathlum",head="Taeon Chapeau",neck="Ej Necklace",body="Taeon Tabard",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},waist="Eschan Stone",legs={ name="Taeon Tights", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+2 AGI+2',}},feet="Horos Toe Shoes +1"}
sets.precast.Flourish1 = {}
sets.precast.Flourish1['Violent Flourish'] = {body="Horos Casaque",hands={ name="Taeon Gloves", augments={'"Mag.Atk.Bns."+20','"Waltz" potency +5%',}},legs="Iuitl Tights +1",feet="Herculean Boots"}
sets.precast.Flourish2 = {}
sets.precast.Flourish2['Reverse Flourish'] = {hands="Maculele Bangles +1",back="Toetapper Mantle"}
sets.precast.Flourish3 = {}
sets.precast.Flourish3['Striking Flourish'] = {body="Charis Casaque +2"}
sets.precast.Flourish3['Climactic Flourish'] = {head="Maculele Tiara +1"}
sets.precast.FC = {ammo="Impatiens",ear2="Loquacious Earring"}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
sets.precast.Skillchain = {hands="Maculele Bangles +1"}
sets.Kiting = {feet="Tandava Crackows"}
sets.buff['Saber Dance'] = {}
sets.buff['Climactic Flourish'] = {head="Maculele Tiara +1"}
sets.midcast.FastRecast = {}
sets.midcast.Utsusemi = {}
-- Weaponskill sets
-- Default set for any weaponskill that isn't defined below.
sets.precast.WS = {ammo="Focal Orb",
head="Dampening Tam",neck="Asperity Necklace",ear1="Brutal Earring",ear2="Cessance Earring",
body="Rawhide Vest",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},ring1="Epona's Ring",ring2="Rajas Ring",
back="Vespid Mantle",waist="Fotia Belt",legs="Samnuha Tights",feet="Herculean Boots"}
-- Specific Weaponskill sets. These sets use everything from above and will overwrite any slot you include below, with the gear listed.
sets.precast.WS['Pyrrhic Kleos'] = set_combine(sets.precast.WS, {ammo="Honed Tathlum",head="Dampening Tam",ear2="Tati Earring",neck="Aqua Gorget",ring2="Ramuh Ring +1"})
sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, {ammo="Charis Feather",neck="Soil Gorget",ear1="Moonshade Earring",ear2="Brutal Earring",back="Rancorous Mantle"})
sets.precast.WS["Rudra's Storm"] = set_combine(sets.precast.WS, {ammo="Charis Feather",ring1="Ramuh Ring +1",neck="Shifting Necklace +1",ear1="Tati Earring",ear2="Moonshade Earring",back="Toetapper Mantle", waist="Artful Belt"})
sets.precast.WS['Aeolian Edge'] = {ammo="Floestone",
head="Thaumas Hat",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Samnuha Coat",hands="Leyline Gloves",ring1="Acumen Ring",ring2="Arvina Ringlet +1",
back="Toro Cape",waist="Eschan Stone",legs="Limbo Trousers",feet="Taeon Boots"}
-- Idle sets
sets.idle = {ammo="Ginsen",
head="Iuitl Headgear +1",neck="Twilight Torque",ear1="Gelai Earring",ear2="Novia Earring",
body="Emet Harness +1",hands="Umuthi Gloves",ring1="Vocane Ring",ring2="Defending Ring",
back="Shadow Mantle",waist="Flume Belt",legs="Iuitl Tights +1",feet="Tandava Crackows"}
sets.idle.Town = {ammo="Ginsen",
head="Dampening Tam",neck="Ej Necklace",ear1="Tati Earring",ear2="Tati Earring",
body="Councilor's Garb",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},ring1="Ifrit Ring +1",ring2="Ramuh Ring +1",
back="Toetapper Mantle",waist="Windbuffet Belt +1",legs="Samnuha Tights",feet="Tandava Crackows"}
sets.idle.Weak = {ammo="Honed Tathlum",
head="Iuitl Headgear +1",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Emet Harness +1",hands="Umuthi Gloves",ring1="Vocane Ring",ring2="Defending Ring",
back="Mullusca Mantle",waist="Flume Belt",legs="Iuitl Tights +1",feet="Herculean Boots"}
sets.ExtraRegen = {ammo="Honed Tathlum",
head="Ocelomeh Headpiece +1",neck="Wiglen Gorget",ear1="Gelai Earring",ear2="Novia Earring",
body="Emet Harness +1",hands="Umuthi Gloves",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Shadow Mantle",waist="Flume Belt",legs="Iuitl Tights +1",feet="Tandava Crackows"}
-- Engaged sets
-- Normal melee group (anything under 30% magic haste)
sets.engaged = {ammo="Ginsen",
head="Dampening Tam",neck="Charis Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Maculele Casaque +1",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Patentia Sash",legs="Samnuha Tights",feet="Herculean Boots"}
sets.engaged.Exp = {ammo="Honed Tathlum",
head="Dampening Tam",neck="Charis Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Maculele Casaque +1",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},ring1="Ramuh Ring +1",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Patentia Sash",legs={ name="Samnuha Tights",feet="Rawhide Boots"}
sets.engaged.Acc = {ammo="Honed Tathlum",
head="Dampening Tam",neck="Ej Necklace",ear1="Tati Earring",ear2="Cessance Earring",
body="Rawhide Vest",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Eschan Stone",legs={ name="Taeon Tights", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+2 AGI+2',}},feet="Rawhide Boots"}
sets.engaged.PDT = {ammo="Ginsen",
head="Iuitl Headgear +1",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Emet Harness +1",hands="Umuthi Gloves",ring1="Vocane Ring",ring2="Defending Ring",
back="Mollusca Mantle",waist="Flume Belt",legs="Iuitl Tights +1",feet="Herculean Boots"}
sets.engaged.PDTH = {ammo="Charis Feather",
head="Dampening Tam",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Maculele Casaque +1",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},ring1="Vocane Ring",ring2="Defending Ring",
back="Toetapper Mantle",waist="Patentia Sash",legs="Samnuha Tights",feet="Herculean Boots"}
-- Custom melee group: High Haste (Triggered by Haste1+V.March+Haste Samba= 34%) (When using Trust: Haste2+Samba+March)
sets.engaged.HighHaste = {ammo="Focal Orb",
head="Dampening Tam",neck="Asperity Necklace",ear1="Brutal Earring",ear2="Cessance Earring",
body="Rawhide Vest",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Windbuffet Belt +1",legs="Samnuha Tights",feet="Herculean Boots"}
sets.engaged.Exp.HighHaste = {ammo="Honed Tathlum",
head="Dampening Tam",neck="Asperity Necklace",ear1="Brutal Earring",ear2="Cessance Earring",
body="Rawhide Vest",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Windbuffet Belt +1",legs="Samnuha Tights",feet="Herculean Boots"}
sets.engaged.Acc.HighHaste = {ammo="Honed Tathlum",
head="Dampening Tam",neck="Ej Necklace",ear1="Tati Earring",ear2="Cessance Earring",
body="Rawhide Vest",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Eschan Stone",legs="Samnuha Tights",feet="Rawhide Boots"}
sets.engaged.PDT.HighHaste = {ammo="Charis Feather",
head="Iuitl Headgear +1",neck="Twilight Torque",ear1="Brutal Earring",ear2="Cessance Earring",
body="Emet Harness +1",hands="Umuthi Gloves",ring1="Vocane Ring",ring2="Defending Ring",
back="Mollusca Mantle",waist="Flume Belt",legs="Iuitl Tights +1",feet="Herculean Boots"}
sets.engaged.PDTH.HighHaste = {ammo="Focal Orb",
head="Dampening Tam",neck="Asperity Necklace",ear1="Brutal Earring",ear2="Cessance Earring",
body="Rawhide Vest",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Windbuffet Belt +1",legs="Samnuha Tights",feet="Herculean Boots"}
-- Custom melee group: Max Haste (2x March + Haste)
sets.engaged.MaxHaste = {ammo="Focal Orb",
head="Dampening Tam",neck="Asperity Necklace",ear1="Brutal Earring",ear2="Cessance Earring",
body="Rawhide Vest",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Windbuffet Belt +1",legs="Samnuha Tights",feet="Herculean Boots"}
sets.engaged.Exp.MaxHaste = {ammo="Honed Tathlum",
head="Dampening Tam",neck="Asperity Necklace",ear1="Brutal Earring",ear2="Cessance Earring",
body="Rawhide Vest",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Windbuffet Belt +1",legs="Samnuha Tights",feet="Herculean Boots"}
sets.engaged.Acc.MaxHaste = {ammo="Honed Tathlum",
head="Dampening Tam",neck="Ej Necklace",ear1="Tati Earring",ear2="Cessance Earring",
body="Rawhide Vest",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Eschan Stone",legs="Samnuha Tights",feet="Rawhide Boots"}
sets.engaged.PDT.MaxHaste = {ammo="Charis Feather",
head="Iuitl Headgear +1",neck="Twilight Torque",ear1="Brutal Earring",ear2="Cessance Earring",
body="Emet Harness +1",hands="Umuthi Gloves",ring1="Vocane Ring",ring2="Defending Ring",
back="Mollusca Mantle",waist="Flume Belt",legs="Iuitl Tights +1",feet="Herculean Boots"}
sets.engaged.PDTH.MaxHaste = {ammo="Focal Orb",
head="Dampening Tam",neck="Asperity Necklace",ear1="Brutal Earring",ear2="Cessance Earring",
body="Rawhide Vest",hands={ name="Taeon Gloves", augments={'Accuracy+19 Attack+19','"Triple Atk."+2','STR+3 DEX+3',}},ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Windbuffet Belt +1",legs="Samnuha Tights",feet="Herculean Boots"}
end
-- Used to overwrite Moonshade Earring if TP is more than 2750. (Needs to be Tati or Jupiter Pearl)
function job_precast(spell, action, spellMap, eventArgs)
if spell.type == 'WeaponSkill' then
if player.tp > 2750 then
equip({ear2 = "Tati Earring"})
end
end
-- Used to optimize Rudra's Storm when Climactic Flourish is active.
if spell.type == 'WeaponSkill' then
if spell.english == "Rudra's Storm" and buffactive['Climactic Flourish'] then
equip({body="Enforcer's Harness"})
end
end
-- Forces Maculele Tiara +1 to override your WS Head slot if Climactic Flourish is active. Corresponds with sets.buff['Climactic Flourish'].
if spell.type == "WeaponSkill" then
if state.Buff['Climactic Flourish'] then
equip(sets.buff['Climactic Flourish'])
end
-- Forces Maculele Bangles +1 to override your WS Hand slot if a Skillchain is pending, from a weaponskill or wild flourish. Corresponds with sets.precast.Skillchain.
if state.SkillchainPending.value == true then
equip(sets.precast.Skillchain)
end
end
-- If you attempt to use Climactic Flourish with zero finishing moves, this will automatically use Box Step and then resend Climactic Flourish.
local under1FMs = not buffactive['Finishing Move 1'] and not buffactive['Finishing Move 2'] and not buffactive['Finishing Move 3'] and not buffactive['Finishing Move 4'] and not buffactive['Finishing Move 5'] and not buffactive['Finishing Move 6'] and not buffactive['Finishing Move 7']
if spell.english == "Climactic Flourish" and under1FMs then
cast_delay(1.9)
send_command('input /ja "Box Step" <t>')
end
-- If you attempt to use a step, this will automatically use Presto if you are under 5 Finishing moves and resend step.
if spell.type == 'Step' then
local allRecasts = windower.ffxi.get_ability_recasts()
local prestoCooldown = allRecasts[236]
local under5FMs = not buffactive['Finishing Move 5'] and not buffactive['Finishing Move 6'] and not buffactive['Finishing Move 7']
if player.main_job_level >= 77 and prestoCooldown < 1 and under5FMs then
cast_delay(1.1)
send_command('input /ja "Presto" <me>')
end
end
end
-- Forces Maculele Tiara +1 to override your melee Head slot if Climactic Flourish is active. Corresponds with sets.buff['Climactic Flourish'].
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
-- Used to define whether a Skillchain is pending from a previous Weaponskill or Wild Flourish.
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
-- Used to track buffs you gain or lose.
function job_buff_change(buff,gain)
if S{'haste','march','embrava','haste samba'}:contains(buff:lower()) then
determine_haste_group()
handle_equipping_gear(player.status)
elseif buff == 'Saber Dance' then
if gain then
equip(sets.buff['Saber Dance'])
disable('legs')
else
enable('legs')
handle_equipping_gear(player.status)
end
elseif buff == 'Climactic Flourish' then
if gain then
equip(sets.buff['Climactic Flourish'])
disable('head')
else
enable('head')
handle_equipping_gear(player.status)
end
end
end
-- Used to equip the correct gear based on buffs when engaging.
function job_status_change(new_status, old_status)
if new_status == 'Engaged' then
determine_haste_group()
end
end
-- Used to equip the correct gear based on buffs after an action.
function job_update(cmdParams, eventArgs)
determine_haste_group()
end
-- Used to trigger your Extra Regen Idle set when HP is less than 80%.
function customize_idle_set(idleSet)
if player.hpp < 80 and not areas.Cities:contains(world.area) then
idleSet = set_combine(idleSet, sets.ExtraRegen)
end
return idleSet
end
-- Used to define Haste Tiers.
function determine_haste_group()
classes.CustomMeleeGroups:clear()
if buffactive.embrava and (buffactive.haste or buffactive.march) and buffactive['haste samba'] then
classes.CustomMeleeGroups:append('MaxHaste')
elseif buffactive.march == 2 and buffactive.haste and buffactive['haste samba'] then
classes.CustomMeleeGroups:append('MaxHaste')
elseif buffactive.embrava and (buffactive.haste or buffactive.march or buffactive['haste samba']) then
classes.CustomMeleeGroups:append('HighHaste')
elseif buffactive.march == 1 and buffactive.haste and buffactive['haste samba'] then
classes.CustomMeleeGroups:append('HighHaste')
elseif buffactive.march == 2 and (buffactive.haste or buffactive['haste samba']) then
classes.CustomMeleeGroups:append('HighHaste')
end
end
-- Automatically loads a Macro Set by: (Pallet,Book)
function select_default_macro_book()
if player.sub_job == 'SAM' then
set_macro_page(1, 5)
elseif player.sub_job == 'WAR' then
set_macro_page(2, 5)
elseif player.sub_job == 'RUN' then
set_macro_page(3, 5)
elseif player.sub_job == 'BLU' then
set_macro_page(4, 5)
elseif player.sub_job == 'THF' then
set_macro_page(9, 5)
elseif player.sub_job == 'NIN' then
set_macro_page(10, 5)
else
set_macro_page(2, 5)
end
endBut the current issue I'm having is really just isolated down to lines 208-226 here:
Code
-- If you attempt to use Climactic Flourish with zero finishing moves, this will automatically use Box Step and then resend Climactic Flourish.
local under1FMs = not buffactive['Finishing Move 1'] and not buffactive['Finishing Move 2'] and not buffactive['Finishing Move 3'] and not buffactive['Finishing Move 4'] and not buffactive['Finishing Move 5'] and not buffactive['Finishing Move 6'] and not buffactive['Finishing Move 7']
if spell.english == "Climactic Flourish" and under1FMs then
cast_delay(1.9)
send_command('input /ja "Box Step" <t>')
end
-- If you attempt to use a step, this will automatically use Presto if you are under 5 Finishing moves and resend step.
if spell.type == 'Step' then
local allRecasts = windower.ffxi.get_ability_recasts()
local prestoCooldown = allRecasts[236]
local under5FMs = not buffactive['Finishing Move 5'] and not buffactive['Finishing Move 6'] and not buffactive['Finishing Move 7']
if player.main_job_level >= 77 and prestoCooldown < 1 and under5FMs then
cast_delay(1.1)
send_command('input /ja "Presto" <me>')
end
endTechnically it works, but it forces a step, and presto 100% of the time, regardless of my current FM count, which throws off my timing, and cuts into my efficiency.
I guess this means, only the 'local' parts are wrong? Is there a new way to write the finishing move buff, buff code, or did an update change on server side, or GS coding?
Basically, for steps, I only want it to use Presto if FM are less than 5. For Climactic, I only want it to step, if my FM are less than 1.
When I first pieced it together, someone offered this alternative, but I could never get it to work, but in case it makes it easy for you:
Code
function step_check(spell, action, spellMap, eventArgs)
local allRecasts = windower.ffxi.get_ability_recasts()
local prestoCooldown = allRecasts[236]
local FinishingMoves = buffactive['Finishing Move 1'] and 1
or buffactive['Finishing Move 2'] and 2
or buffactive['Finishing Move 3'] and 3
or buffactive['Finishing Move 4'] and 4
or buffactive['Finishing Move 5'] and 5
or buffactive['Finishing Move 6'] and 6
or buffactive['Finishing Move 7'] and 7
or 0
if spell.english:endswith('Flourish') and FinishingMoves < 1 then
if player.tp >= 100 or buffactive['Grand Pas'] then
send_command('input /ja "Box Step" <t>;wait 3;input /ja '..spell.english..' '..spell.target.raw..'')
eventArgs.cancel = true
else
add_to_chat(122,'***No Finishing Moves available to execute '..spell.english..' and not enough TP to produce any. Cancelling flourish.***')
eventArgs.cancel = true
end
end
if spell.english:endswith('Step') or spell.english == 'Quickstep' then
if player.main_job_level >= 77 and player.main_job == 'DNC' and prestoCooldown < 1 and not buffactive.Presto and FinishingMoves < 5 then
if player.tp >= 100 or buffactive['Trance'] then
send_command('input /ja "Presto" <me>;wait 1.1;input /ja '..spell.english..' <t>')
eventArgs.cancel = true
else
add_to_chat(122,'***Not enough TP available to execute '..spell.english..'. Cancelling step.***')
eventArgs.cancel = true
end
end
end
end*This one never uses Presto when stepping, and never steps when trying to use Climactic w/o FM.







