------------------------------------------------------------------------------------------------------------------- -- Setup functions for this job. Generally should not be modified. ------------------------------------------------------------------------------------------------------------------- --[[ Custom commands: gs c step Uses the currently configured step on the target, with either or depending on setting. gs c step t Uses the currently configured step on the target, but forces use of . 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 (as opposed to ) when using a step. --]] -- Initialization function for this job file. function get_sets() mote_include_version = 2 -- Load and initialize the include file. include('Mote-Include.lua') include('organizer-lib') end -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked. function job_setup() include('Mote-TreasureHunter') state.TreasureMode:set('Tag') state.Buff['Climactic Flourish'] = buffactive['climactic flourish'] or false state.Buff.Doom = buffactive.doom or false state.Buff.sleep = buffactive.sleep 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'} --Haste mode state.HasteMode = M{['description']='Haste Mode', 'Normal' , 'Haste2'} state.UseAltStep = M(false, 'Use Alt Step') state.SelectStepTarget = M(false, 'Select Step Target') state.IgnoreTargetting = M(false, 'Ignore Targetting') state.CurrentStep = M{['description']='Current Step', 'Main', 'Alt'} state.SkillchainPending = M(false, 'Skillchain Pending') -- JA IDs for actions that always have TH: Provoke, Animated Flourish info.default_ja_ids = S{35, 204} -- Unblinkable JA IDs for actions that always have TH: Quick/Box/Stutter Step, Desperate/Violent Flourish info.default_u_ja_ids = S{201, 202, 203, 205, 207} 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('Normal' , 'Acc', 'NoDW') state.HybridMode:options('Normal', 'PDT') state.WeaponskillMode:options('Normal') state.PhysicalDefenseMode:options('PDT') -- Haste modes state.HasteMode:options('Normal', 'Haste2') -- Additional local binds send_command('bind ^= gs c cycle mainstep') -- Haste mode keybind --send_command('bind != gs c cycle HasteMode') send_command('bind ^- gs c toggle selectsteptarget') send_command('bind !- gs c toggle usealtstep') send_command('bind ^` gs c cycle HasteMode') send_command('bind !` input /ja "Chocobo Jig II" ') select_default_macro_book() 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 ^-') send_command('unbind !-') end -- Define sets and vars used by this job file. function init_gear_sets() -------------------------------------- -- Start defining the sets -------------------------------------- --TH on first hit sets.TreasureHunter = {legs={ name="Herculean Trousers", augments={'CHR+5','Accuracy+2 Attack+2','"Treasure Hunter"+1','Mag. Acc.+6 "Mag.Atk.Bns."+6',}}, waist="Chaac Belt"} -- Precast Sets -- Precast sets to enhance JAs sets.precast.JA['No Foot Rise'] = {body="Horos Casaque +1"} sets.precast.JA['Trance'] = {head="Horos Tiara +1"} sets.precast.JA['Climactic FLourish'] = sets.buff['Climactic FLourish'] -- Waltz set (chr and vit) sets.precast.Waltz = {ammo="Light Sachet", head="Anwig Salade",ear1="Roundel earring",ear2="Handler's earring +1", body="Passion Jacket",neck="Dualism Collar +1", hands={ name="Herculean Gloves", augments={'Accuracy+5','"Waltz" potency +11%',}}, legs="Dashing Subligar",waist="Aristo Belt", ring1="Asklepian Ring",ring2="Valseur's Ring", back={ name="Senuna's Mantle", augments={'CHR+20','Eva.+20 /Mag. Eva.+20','CHR+10','"Waltz" potency +10%',}}, feet={ name="Herculean Boots", augments={'"Waltz" potency +10%','CHR+8',}}} -- Don't need any special gear for Healing Waltz. sets.precast.Waltz['Healing Waltz'] = {} sets.precast.Samba = {head="Maxixi Tiara +1",back="Senuna's Mantle"} sets.precast.Jig = {legs="Horos Tights +1", feet="Maxixi Toe Shoes +1"} sets.precast.Step = {ammo="Falcon Eye", head="Meghanada Visor +1",neck="Subtlety Spectacles",ear1="Zennaroi Earring",ear2="Digni. Earring", body="Meghanada Cuirie +1",hands="Meg. Gloves +1",ring1="Cacoethic Ring +1",ring2="Defending Ring", back="Senuna's Mantle",waist="Olseni Belt", legs="Meg. Chausses +1", feet="Meg. Jam. +1"} sets.precast.Step['Feather Step'] = {feet="Maculele Toeshoes +1"} sets.precast.Step['Stutter Step'] = {} sets.precast.Flourish1 = {} sets.precast.Flourish1['Violent Flourish'] = {ammo="Pemphredo Tathlum", head="Dampening Tam",body="Horos Casaque +1", hands="Rawhide Gloves", ring1="Sangoma Ring",ring2="Etana Ring",ear1="Digni. Earring",ear2="Gwati Earring", waist="Eschan Stone",neck="Voltsurge Torque",back="Aput Mantle", legs={ name="Herculean Trousers", augments={'Rng.Atk.+9','Mag. Acc.+30','Mag. Acc.+16 "Mag.Atk.Bns."+16',}}, feet={ name="Herculean Boots", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Weapon skill damage +1%','MND+5','Mag. Acc.+12','"Mag.Atk.Bns."+11',}}} -- magic accuracy sets.precast.Flourish1['Desperate Flourish'] = {ammo="Falcon Eye", head="Maculele Tiara +1",neck="Subtlety Spectacles",ear1="Zennaroi Earring",ear2="Digni. Earring", body="Horos Casaque +1",hands="Maculele Bangles +1",ring1="Cacoethic Ring +1",ring2="Etana Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},waist="Olseni Belt", legs={ name="Herculean Trousers", augments={'Accuracy+24 Attack+24','"Dual Wield"+1','DEX+14','Accuracy+8','Attack+3',}}, feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} -- acc gear sets.precast.Flourish2 = {} sets.precast.Flourish2['Reverse Flourish'] = {hands="Maculele Bangles +1", back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+5','"Rev. Flourish"+30','Weapon skill damage +2%',}}} sets.precast.Flourish2['Wild Flourish'] = {ammo="Falcon Eye", head="Meghanada Visor +1",neck="Subtlety Spectacles",ear1="Zennaroi Earring",ear2="Digni. Earring", body="Meghanada Cuirie +1",hands="Meg. Gloves +1",ring1="Cacoethic Ring +1",ring2="Defending Ring", back="Senuna's Mantle",waist="Olseni Belt", legs="Meg. Chausses +1", feet="Meg. Jam. +1"} sets.precast.Flourish3 = {} sets.precast.Flourish3['Striking Flourish'] = {body="Maculele Casaque +1"} sets.precast.Flourish3['Climactic Flourish'] = {head="Maculele Tiara +1"} -- Fast cast sets for spells sets.precast.FC = {ammo="Impatiens", head={ name="Herculean Helm", augments={'Mag. Acc.+25','"Fast Cast"+5','MND+5','"Mag.Atk.Bns."+12',}}, neck="Voltsurge Torque",ear1="Etiolation Earring",ear2="Loquacious Earring", body="Foppish Tunica",hands="Leyline Gloves", legs={ name="Herculean Trousers", augments={'Mag. Acc.+6','"Fast Cast"+6','INT+9','"Mag.Atk.Bns."+10',}}, ring1="Lebeche Ring",ring2="Prolix Ring", back={ name="Senuna's Mantle", augments={'AGI+20','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10',}}, feet={ name="Herculean Boots", augments={'"Mag.Atk.Bns."+15','"Fast Cast"+5','Mag. Acc.+14',}}} sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads",body="Passion Jacket"}) -- Weaponskill sets -- Default set for any weaponskill that isn't any more specifically defined sets.precast.WS = {ammo="Ginsen", head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}}, neck="Fotia Gorget",ear1="Ishvara Earring",ear2="Moonshade Earring", body="Adhemar Jacket",hands="Maculele Bangles +1",ring1="Epona's Ring",ring2="Apate Ring", back="Senuna's Mantle",waist="Fotia Belt", legs="Samnuha Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found. sets.precast.WS['Shark Bite'] = set_combine(sets.precast.WS, { ammo="Floestone", head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}}, body={ name="Adhemar Jacket", augments={'STR+10','DEX+10','Attack+15',}}, hands={ name="Adhemar Wristbands", augments={'STR+10','DEX+10','Attack+15',}}, legs={ name="Lustratio Subligar", augments={'Accuracy+15','DEX+5','Crit. hit rate+2%',}}, feet="Macu. Toeshoes +1",neck="Fotia Gorget",waist="Fotia Belt", ear1="Jupiter's Pearl",ear2="Ishvara Earring",ring1="Ramuh Ring +1",ring2="Apate Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}}}) sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, { ammo="Ginsen", head={ name="Lilitu Headpiece", augments={'STR+10','DEX+10','Attack+15','Weapon skill damage +3%',}}, body={ name="Adhemar Jacket", augments={'STR+10','DEX+10','Attack+15',}}, hands={ name="Adhemar Wristbands", augments={'STR+10','DEX+10','Attack+15',}}, legs="Maculele Tights +1", feet="Macu. Toeshoes +1",neck="Fotia Gorget",waist="Fotia Belt",ear1="Tati Earring", ear2="Tati Earring",ring1="Ramuh Ring +1",ring2="Apate Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}}}) sets.precast.WS['Pyrrhic Kleos'] = {ammo="Floestone", head={ name="Herculean Helm", augments={'Accuracy+24 Attack+24','"Triple Atk."+2','STR+9','Accuracy+12',}}, body="Adhemar Jacket",neck="Fotia Gorget", ear1="Tati Earring",ear2="Tati Earring", hands={ name="Adhemar Wristbands", augments={'STR+10','DEX+10','Attack+15',}}, legs="Samnuha Tights",feet="Lustratio Leggings", waist="Fotia Belt",ring1="Ifrit Ring +1",ring2="Ifrit Ring +1", back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}}} sets.precast.WS['Evisceration'] = {ammo="Charis Feather", head={ name="Herculean Helm", augments={'Accuracy+10 Attack+10','Crit.hit rate+4','Attack+11',}}, body="Foppish Tunica", neck="Fotia Gorget",ear1="Jupiter's Pearl",ear2="Moonshade Earring", hands={ name="Adhemar Wristbands", augments={'STR+10','DEX+10','Attack+15',}}, ring1="Ramuh Ring +1",ring2="Ramuh Ring +1",waist="Fotia Belt",legs="Lustratio Subligar", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}}, feet={ name="Herculean Boots", augments={'Attack+23','Crit.hit rate+4','DEX+10','Accuracy+9',}}} sets.precast.WS["Rudra's Storm"] = { ammo="Floestone", head="Lilitu Headpiece", body={ name="Adhemar Jacket", augments={'STR+10','DEX+10','Attack+15',}}, hands="Meghanada Gloves +1", legs="Lustratio Subligar", feet={ name="Herculean Boots", augments={'Attack+11','Weapon skill damage +5%','DEX+6','Accuracy+15',}}, neck="Caro Necklace",waist="Grunfeld Rope", ear1="Moonshade Earring",ear2="Ishvara Earring",ring1="Shiva Ring",ring2="Shiva Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}} sets.precast.WS["Rudra's Storm"].CF = {ammo="Charis Feather", neck="Caro Necklace", ear1="Ishvara Earring", ear2="Moonshade Earring",body="Meghanada Cuirie +1", hands="Meghanada Gloves +1", ring1="Ramuh Ring +1",ring2="Ramuh Ring +1", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}, waist="Grunfeld Rope",legs="Lustratio Subligar", feet={ name="Herculean Boots", augments={'Attack+11','Weapon skill damage +5%','DEX+6','Accuracy+15',}}} sets.precast.WS['Aeolian Edge'] = {ammo="Pemphredo Tathlum", head={ name="Herculean Helm", augments={'Mag. Acc.+17 "Mag.Atk.Bns."+17','Mag. Acc.+4','"Mag.Atk.Bns."+12',}}, neck="Sanctity Necklace",ear1="Friomisi Earring",ear2="Crematio Earring", body="Samnuha Coat",hands="Leyline Gloves", ring1="Shiva Ring",ring2="Shiva Ring", back={ name="Senuna's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Weapon skill damage +10%',}}, waist="Eschan Stone", legs={ name="Herculean Trousers", augments={'Mag. Acc.+16 "Mag.Atk.Bns."+16','"Fast Cast"+5','"Mag.Atk.Bns."+15',}}, feet={ name="Herculean Boots", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Weapon skill damage +1%','MND+5','Mag. Acc.+12','"Mag.Atk.Bns."+11',}}} sets.precast.Skillchain = {} -- Midcast Sets sets.midcast.FastRecast = { ammo="Impatiens", head={ name="Herculean Helm", augments={'Mag. Acc.+25','"Fast Cast"+5','MND+5','"Mag.Atk.Bns."+12',}}, neck="Voltsurge Torque",ear1="Etiolation Earring",ear2="Loquacious Earring", body="Foppish Tunica",hands="Leyline Gloves", legs={ name="Herculean Trousers", augments={'Mag. Acc.+6','"Fast Cast"+6','INT+9','"Mag.Atk.Bns."+10',}}, ring1="Lebeche Ring",ring2="Prolix Ring", feet={ name="Herculean Boots", augments={'"Mag.Atk.Bns."+15','"Fast Cast"+5','Mag. Acc.+14',}}} -- Specific spells sets.midcast.Utsusemi = { head={ name="Herculean Helm", augments={'Accuracy+19','Damage taken-3%','STR+7','Attack+7',}}, body="Emet Harness +1",neck="Twilight Torque",ear1="Etiolation Earring",ear2="Loquacious Earring", hands="Leyline Gloves",ring1="Defending Ring",ring2="Patricius Ring", back="Fravashi Mantle", legs={ name="Herculean Trousers", augments={'Mag. Acc.+6','"Fast Cast"+6','INT+9','"Mag.Atk.Bns."+10',}}, feet={ name="Herculean Boots", augments={'"Mag.Atk.Bns."+15','"Fast Cast"+5','Mag. Acc.+14',}}} sets.midcast['Yoran-Oran (UC)'] = set_combine(sets.midcast.FastRecast, {body="Yoran Unity Shirt"}) -- Sets to return to when not performing an action. -- Resting sets sets.resting = {head={ name="Herculean Helm", augments={'Accuracy+19','Damage taken-3%','STR+7','Attack+7',}},body={ name="Rawhide Vest", augments={'HP+50','Accuracy+15','Evasion+20',}}, neck="Bathy Choker +1",ear1="Infused Earring", ring1="Shneddick Ring",ring2="Paguroidea Ring",feet="Maculele Toeshoes +1"} -- Idle sets sets.idle = { head={ name="Herculean Helm", augments={'Accuracy+19','Damage taken-3%','STR+7','Attack+7',}}, neck="Bathy Choker +1",ear1="Infused Earring",ear2="Eabani Earring", body={ name="Rawhide Vest", augments={'HP+50','Accuracy+15','Evasion+20',}}, hands="Maculele Bangles +1",legs="Maculele Tights +1", ring1="Shneddick Ring",ring2="Paguroidea Ring", back="Solemnity Cape", feet={ name="Rawhide Boots", augments={'HP+50','Accuracy+15','Evasion+20',}}} sets.idle.Town = {main="Terpsichore",head="Moogle Masque",neck="Bathy Choker +1", ear1="Infused Earring",ear2="Hearty Earring", body="Tidal Talisman",hands="Maculele Bangles +1",ring1="Shneddick Ring",ring2="Paguroidea Ring", back="Solemnity Cape",waist="Patentia Sash",legs="Gemini Subligar", feet={ name="Rawhide Boots", augments={'HP+50','Accuracy+15','Evasion+20',}}} sets.idle.Weak = { neck="Bathy Choker +1",ear1="Dudgeon Earring",ear2="Hearty Earring", body="Horos Casaque +1",hands="Maculele Bangles +1",ring1="Shneddick Ring",ring2="Paguroidea Ring", back="Solemnity Cape",feet={ name="Rawhide Boots", augments={'HP+50','Accuracy+15','Evasion+20',}}} -- Defense sets -- sets.defense.Evasion = {} sets.defense.PDT = { head={ name="Herculean Helm", augments={'Accuracy+19','Damage taken-3%','STR+7','Attack+7',}},neck="Twilight Torque", body="Meghanada Cuirie +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}}, ring1="Defending Ring",ring2="Patricius Ring",waist="Dynamic Belt", legs="Meghanada Chausses +1",back="Agema Cape", feet={ name="Herculean Boots", augments={'Accuracy+14 Attack+14','Phys. dmg. taken -4%','STR+7','Accuracy+9',}}} sets.defense.MDT = { neck="Twilight Torque", ring1="Defending Ring",ring2="Purity Ring", back="Mubvumbamiri Mantle"} sets.Kiting = {} -- 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 -- NoDW is Single wield mode. -- Normal melee group sets.engaged = {ammo="Ginsen", head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}}, neck="Charis Necklace", ear1="Eabani Earring",ear2="Suppanomimi", body="Maculele Casaque +1",hands="Adhemar Wristbands", ring1="Epona's Ring",ring2="Hetairoi Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}}, waist="Patentia Sash",legs="Taeon Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} -- No magical haste during single wield sets.engaged.NoDW = {ammo="Ginsen", head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}}, neck="Combatant's Torque",ear1="Dedition Earring",ear2="Tripudio Earring", body={ name="Herculean Vest", augments={'Accuracy+19 Attack+19','"Triple Atk."+4','DEX+4','Attack+2',}},hands="Adhemar Wristbands", ring1="Epona's Ring",ring2="Hetairoi Ring", back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}}, waist="Windbuffet Belt +1",legs="Samnuha Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.Acc = {ammo="Falcon Eye", head="Dampening Tam",neck="Combatant's Torque",ear1="Eabani Earring",ear2="Suppanomimi", body="Maculele Casaque +1",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Hetairoi Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}}, waist="Patentia Sash",legs="Meg. Chausses +1", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.PDT = {main="Terpsichore",ammo="Ginsen", head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}}, neck="Twilight Torque",ear1="Eabani Earring",ear2="Suppanomimi", body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}}, ring1="Defending Ring",ring2="Patricius Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}}, waist="Patentia Sash",legs="Taeon Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.Acc.PDT = {main="Terpsichore",ammo="Ginsen", head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}}, neck="Twilight Torque",ear1="Eabani Earring",ear2="Suppanomimi", body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}}, ring1="Defending Ring",ring2="Patricius Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}},waist="Patentia Sash", legs="Taeon Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} -- Haste at 15% sets.engaged.Haste_15 = {ammo="Ginsen", head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}}, neck="Combatant's Torque", ear1="Eabani Earring",ear2="Suppanomimi", body="Adhemar Jacket",hands="Adhemar Wristbands", ring1="Epona's Ring",ring2="Hetairoi Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}}, waist="Patentia Sash",legs="Taeon Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} -- 15% magical haste during single wield sets.engaged.NoDW.Haste_15 = {ammo="Ginsen", head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}}, neck="Combatant's Torque",ear1="Dedition Earring",ear2="Tripudio Earring", body={ name="Herculean Vest", augments={'Accuracy+19 Attack+19','"Triple Atk."+4','DEX+4','Attack+2',}},hands="Adhemar Wristbands", ring1="Epona's Ring",ring2="Hetairoi Ring", back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}}, waist="Windbuffet Belt +1",legs="Samnuha Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.Acc.Haste_15 = {ammo="Falcon Eye", head="Dampening Tam",neck="Combatant's Torque",ear1="Eabani Earring",ear2="Suppanomimi", body="Maculele Casaque +1",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Hetairoi Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}}, waist="Patentia Sash",legs="Meg. Chausses +1", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.PDT.Haste_15 = {main="Terpsichore",ammo="Ginsen", head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}}, neck="Twilight Torque",ear1="Eabani Earring",ear2="Suppanomimi", body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}}, ring1="Defending Ring",ring2="Patricius Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}}, waist="Patentia Sash",legs="Taeon Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.Acc.PDT.Haste_15 = {main="Terpsichore",ammo="Ginsen", head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}}, neck="Twilight Torque",ear1="Eabani Earring",ear2="Suppanomimi", body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}}, ring1="Defending Ring",ring2="Patricius Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}},waist="Patentia Sash", legs="Taeon Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} --Custom melee group: Mid Haste 25% sets.engaged.Haste_25 = {ammo="Ginsen", head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}}, neck="Combatant's Torque", ear1="Dudgeon Earring",ear2="Heartseeker Earring", body="Adhemar Jacket",hands="Adhemar Wristbands", ring1="Epona's Ring",ring2="Hetairoi Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}}, waist="Patentia Sash",legs="Samnuha Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} -- 25% magical haste during single wield sets.engaged.NoDW.Haste_25 = {ammo="Ginsen", head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}}, neck="Combatant's Torque",ear1="Dedition Earring",ear2="Tripudio Earring", body={ name="Herculean Vest", augments={'Accuracy+19 Attack+19','"Triple Atk."+4','DEX+4','Attack+2',}},hands="Adhemar Wristbands", ring1="Epona's Ring",ring2="Hetairoi Ring", back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}}, waist="Windbuffet Belt +1",legs="Samnuha Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.Acc.Haste_25 = {ammo="Falcon Eye", head="Dampening Tam",neck="Combatant's Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring", body="Maculele Casaque +1",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Hetairoi Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}}, waist="Patentia Sash",legs="Meg. Chausses +1", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.PDT.Haste_25 = {main="Terpsichore",ammo="Ginsen", head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}}, neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring", body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}}, ring1="Defending Ring",ring2="Patricius Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}}, waist="Patentia Sash",legs="Taeon Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.Acc.PDT.Haste_25 = {main="Terpsichore",ammo="Ginsen", head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring", body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}}, ring1="Defending Ring",ring2="Patricius Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}},waist="Patentia Sash", legs="Taeon Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} -- Custom melee group: High Haste (2x March and Haste or Haste 2 or Mighty Guard and Haste 1) sets.engaged.Haste_35 = {ammo="Ginsen", head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}}, neck="Combatant's Torque", ear1="Tripudio Earring",ear2="Brutal Earring", body="Adhemar Jacket",hands="Adhemar Wristbands", ring1="Epona's Ring",ring2="Hetairoi Ring", back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},waist="Patentia Sash", legs="Samnuha Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} --35% magical haste during single wield sets.engaged.NoDW.Haste_35 = {ammo="Ginsen", head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}}, neck="Combatant's Torque",ear1="Dedition Earring",ear2="Tripudio Earring", body={ name="Herculean Vest", augments={'Accuracy+19 Attack+19','"Triple Atk."+4','DEX+4','Attack+2',}},hands="Adhemar Wristbands", ring1="Epona's Ring",ring2="Hetairoi Ring", back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}}, waist="Windbuffet Belt +1",legs="Samnuha Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.Acc.Haste_35 = {ammo="Falcon Eye", head="Dampening Tam",neck="Combatant's Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring", body="Adhemar jacket",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Hetairoi Ring", back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}}, waist="Patentia Sash",legs="Meg. Chausses +1", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.PDT.Haste_35 = {main="Terpsichore",ammo="Ginsen", head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}}, neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring", body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}}, ring1="Defending Ring",ring2="Patricius Ring", back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},waist="Patentia Sash", legs="Samnuha Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.Acc.PDT.Haste_35 = {main="Terpsichore",ammo="Falcon Eye", head="Maculele Tiara +1",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring", body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}}, ring1="Defending Ring",ring2="Patricius Ring", back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}}, waist="Patentia Sash", legs={ name="Herculean Trousers", augments={'Accuracy+24 Attack+24','"Dual Wield"+1','DEX+14','Accuracy+8','Attack+3',}}, feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} -- Custom melee group: Max Haste (2x March + Haste or Geo-Haste and Haste 1 or Geo-haste and March or Geo-haste and Mighty Guard) sets.engaged.MaxHaste = {ammo="Ginsen", head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}}, neck="Combatant's Torque",ear1="Brutal Earring",ear2="Cessance Earring", body={ name="Herculean Vest", augments={'Accuracy+19 Attack+19','"Triple Atk."+4','DEX+4','Attack+2',}}, hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Hetairoi Ring", back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}}, waist="Windbuffet Belt +1", legs="Samnuha Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} -- Capped magical haste during single wield sets.engaged.NoDW.MaxHaste = {ammo="Ginsen", head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}}, neck="Combatant's Torque",ear1="Dedition Earring",ear2="Tripudio Earring", body={ name="Herculean Vest", augments={'Accuracy+19 Attack+19','"Triple Atk."+4','DEX+4','Attack+2',}},hands="Adhemar Wristbands", ring1="Epona's Ring",ring2="Hetairoi Ring", back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}}, waist="Windbuffet Belt +1",legs="Samnuha Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.Acc.MaxHaste = {ammo="Falcon Eye", head="Dampening Tam",neck="Combatant's Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring", body="Maculele Casaque +1",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Ramuh Ring +1", back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}}, waist="Kentarch Belt +1",legs="Meg. Chausses +1", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.PDT.MaxHaste = {main="Terpsichore",ammo="Ginsen", head="Maculele Tiara +1", neck="Twilight Torque",ear1="Tripudio Earring",ear2="Cessance Earring", body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}}, ring1="Defending Ring",ring2="Patricius Ring", back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},waist="Windbuffet Belt +1", legs="Samnuha Tights", feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} sets.engaged.Acc.PDT.MaxHaste = {main="Terpsichore",ammo="Falcon Eye", head="Maculele Tiara +1",neck="Twilight Torque",ear1="Tripudio Earring",ear2="Cessance Earring", body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}}, ring1="Defending Ring",ring2="Patricius Ring", back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}}, waist="Windbuffet Belt +1", legs={ name="Herculean Trousers", augments={'Accuracy+24 Attack+24','"Dual Wield"+1','DEX+14','Accuracy+8','Attack+3',}}, feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} -- Buff sets: Gear that needs to be worn to actively enhance a current player buff. sets.buff['Saber Dance'] = {} sets.buff['Climactic Flourish'] = {head="Maculele Tiara +1"} sets.buff.Doom = {ring1="Blenmot's Ring",ring2="Purity Ring"} sets.buff.sleep = {head="Frenzy Sallet"} --Organizer organizer_items = {head="Shobuhouou Kabuto", ring="Warp Ring",sub="Airy Buckler"} 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) cancel_conflicting_buffs(spell, action, spellMap, eventArgs) custom_aftermath_timers_precast(spell, action, spellMap, eventArgs) 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) custom_aftermath_timers_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, eventArgs) --If we gain or lose any haste buffs, adjust which gear set we target. if S{'haste','march','embrava','haste samba','indi-haste','geo-haste','mighty guard'}:contains(buff:lower()) then determine_haste_group() handle_equipping_gear(player.status) --elseif (buff == "terror" or buff == "petrification" or buff == "stun") and gain then -- equip(sets.defense.PDT) elseif (buff == "sleep" and gain) and player.hp > 100 and player.status == "Engaged" then equip(sets.buff.sleep) if buffactive.stoneskin then send_command('cancel Stoneskin') end elseif state.Buff.Doom then handle_equipping_gear(player.status) add_to_chat(122, 'Use Holy Waters ASAP') elseif buff == 'Saber Dance' or buff == 'Climactic Flourish' then handle_equipping_gear(player.status) 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 get_custom_wsmode(spell, spellMap, defaut_wsmode) local wsmode if state.Buff['Climactic Flourish'] then wsmode = 'CF' end return wsmode 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 -- if player.equipment.sub == 'shield' then -- meleeSet = set_combine(meleeSet, sets.NoDW) -- end if state.TreasureMode.value == 'Fulltime' then meleeSet = set_combine(meleeSet, sets.TreasureHunter) 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 if state.Kiting.value then msg = msg .. ', Kiting' end msg = msg .. ', ['..state.MainStep.current if state.UseAltStep.value == true then msg = msg .. '/'..state.AltStep.current end msg = msg .. ']' if state.SelectStepTarget.value == true then steps = steps..' (Targetted)' end add_to_chat(122, 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..'" ') end end ------------------------------------------------------------------------------------------------------------------- -- Utility functions specific to this job. ------------------------------------------------------------------------------------------------------------------- function determine_haste_group() -- We have three groups of DW in gear: Charis body, Charis neck + DW earrings, and Patentia Sash. -- For high haste, we want to be able to drop one of the 10% groups (body, preferably). -- High haste buffs: -- 2x Marches + Haste -- 2x Marches + Haste Samba -- 1x March + Haste + Haste Samba -- Embrava + any other haste buff -- For max haste, we probably need to consider dropping all DW gear. -- Max haste buffs: -- Embrava + Haste/March + Haste Samba -- 2x March + Haste + Haste Samba -- I put in GEO haste with 580 as buff and buff ID 33 is haste 1/2. -- Mighty Guard was added from the extra +15% haste --Added Haste 1/2 + Mighty Guard + haste samba combo to try to circumvent no toggle for hastes --Need haste samba to cap with twashtar classes.CustomMeleeGroups:clear() -- if buffactive.embrava and (buffactive.haste or buffactive.march or buffactive['Mighty Guard']) and buffactive['haste samba'] then -- add_to_chat(8, '------------- Max Haste -------------') -- classes.CustomMeleeGroups:append('MaxHaste') -- elseif buffactive.haste == 2 then -- add_to_chat(8, '------------- Max Haste -------------') -- classes.CustomMeleeGroups:append('MaxHaste') -- elseif buffactive.march == 2 and (buffactive.haste or buffactive['Mighty Guard']) then -- add_to_chat(8, '------------- Max Haste -------------') -- classes.CustomMeleeGroups:append('MaxHaste') -- elseif buffactive[580] and (buffactive[33] or buffactive.march or buffactive['Mighty Guard'] or buffactive['haste samba']) then -- add_to_chat(8, '------------- Max Haste --------------') -- classes.CustomMeleeGroups:append('MaxHaste') -- elseif buffactive[580] and not buffactive[33] then -- add_to_chat(8, '-------------High Haste-------------') -- classes.CustomMeleeGroups:append('HighHaste') -- elseif buffactive.march == 1 and (buffactive.haste or buffactive['Mighty Guard']) and buffactive['haste samba'] then -- add_to_chat(8, '-------------High Haste-------------') -- classes.CustomMeleeGroups:append('HighHaste') -- elseif buffactive.march == 2 and (buffactive.haste or buffactive['Mighty Guard'] or buffactive['haste samba']) then -- add_to_chat(8, '-------------High Haste-------------') -- classes.CustomMeleeGroups:append('HighHaste') -- elseif buffactive.haste == 1 and (buffactive['haste samba'] or buffactive['Mighty Guard']) then -- add_to_chat(8, '-------------High Haste-------------') -- classes.CustomMeleeGroups:append('HighHaste') -- end --Alternative haste mechanics with toggle -- Haste: 15% -- Haste Samba: 10% -- Victory March +0/+3/+4/+5 9.4/14%/15.6%/17.1% +0 -- Advancing March +0/+3/+4/+5 6.3/10.9%/12.5%/14% +0 -- Embrava 30% with 500 enhancing skill -- Mighty Guard: 15% -- buffactive[580] = geo haste -- buffactive[33] = regular haste -- buffactive[604] = mighty guard -- state.HasteMode = toggle for when you know Haste II is being cast on you -- Hi = Haste II is being cast. This is clunky to use when both haste II and haste I are being cast --print(state.HasteMode.value) if state.HasteMode.value == 'Haste2' then if buffactive.embrava and (buffactive.haste or buffactive.march or buffactive['Mighty Guard']) and buffactive['haste samba'] then add_to_chat(8, '------------- Max Haste -------------') classes.CustomMeleeGroups:append('MaxHaste') elseif buffactive.haste == 2 then add_to_chat(8, '------------- Max Haste -------------') classes.CustomMeleeGroups:append('MaxHaste') elseif buffactive.march == 2 and (buffactive.haste or buffactive['Mighty Guard']) then add_to_chat(8, '------------- Max Haste -------------') classes.CustomMeleeGroups:append('MaxHaste') elseif buffactive[580] and (buffactive[33] or buffactive.march or buffactive['Mighty Guard'] or buffactive['haste samba']) then add_to_chat(8, '------------- Max Haste --------------') classes.CustomMeleeGroups:append('MaxHaste') elseif buffactive.march == 2 and (buffactive.haste or buffactive['Mighty Guard'] or buffactive['haste samba']) then add_to_chat(8, '-------------Haste 35%-------------') classes.CustomMeleeGroups:append('Haste_35') elseif buffactive.march == 1 and (buffactive.haste or buffactive['Mighty Guard'] or buffactive['haste samba']) then add_to_chat(8, '-------------Haste 35%-------------') classes.CustomMeleeGroups:append('Haste_35') elseif buffactive[580] and not buffactive[33] then add_to_chat(8, '-------------Haste 30%-------------') classes.CustomMeleeGroups:append('Haste_30') elseif buffactive.haste == 1 and (buffactive['haste samba']) then add_to_chat(8, '-------------Haste 30%-------------') classes.CustomMeleeGroups:append('Haste_30') elseif buffactive.haste == 1 then add_to_chat(8, '-------------Haste 30%-------------') classes.CustomMeleeGroups:append('Haste_30') elseif buffactive.march == 2 then classes.CustomMeleeGroups:append('Haste_30') elseif buffactive['haste samba'] and (buffactive['Might Guard'] or buffactive.march == 1) then add_to_chat(8, '-------------Haste 25%-------------') classes.CustomMeleeGroups:append('Haste_25') elseif buffactive.march == 1 or buffactive['Might Guard'] then add_to_chat(8, '-------------Haste 15%-------------') classes.CustomMeleeGroups:append('Haste_15') end else if buffactive.embrava and (buffactive.haste or buffactive.march or buffactive['Mighty Guard']) and buffactive['haste samba'] then add_to_chat(8, '------------- Max Haste -------------') classes.CustomMeleeGroups:append('MaxHaste') elseif buffactive.haste == 2 then add_to_chat(8, '------------- Max Haste -------------') classes.CustomMeleeGroups:append('MaxHaste') elseif buffactive.march == 2 and (buffactive.haste or buffactive['Mighty Guard']) then add_to_chat(8, '------------- Max Haste -------------') classes.CustomMeleeGroups:append('MaxHaste') elseif buffactive[580] and (buffactive[33] or buffactive.march or buffactive['Mighty Guard'] or buffactive['haste samba']) then add_to_chat(8, '------------- Max Haste --------------') classes.CustomMeleeGroups:append('MaxHaste') elseif ( (buffactive['Might Guard'] or buffactive[33]) and buffactive.march == 1 and buffactive['haste samba']) or -- MG or haste + samba with 1 march ( buffactive.march == 2 and buffactive['haste samba'] ) or ( buffactive[580] and buffactive['haste samba'] ) then add_to_chat(8, '-------------Haste 35%-------------') classes.CustomMeleeGroups:append('Haste_35') elseif ( buffactive.march == 2 ) or -- two marches from ghorn ( (buffactive.haste or buffactive['Might Guard'] or buffactive['haste samba']) and buffactive.march == 1 ) or -- MG or haste + 1 march ( buffactive[580] ) or -- geo haste ( buffactive.haste and buffactive['Might Guard'] ) then -- haste with MG add_to_chat(8, '-------------Haste 30%-------------') classes.CustomMeleeGroups:append('Haste_30') elseif ( (buffactive['haste samba']) and (buffactive.haste or buffactive.march == 1 or buffactive['Might Guard']) ) then classes.CustomMeleeGroups:append('Haste_25') elseif buffactive.haste or buffactive['Might Guard'] or buffactive.march == 1 then add_to_chat(8, '-------------Haste 15%-------------') classes.CustomMeleeGroups:append('Haste_15') end end end -- Automatically use Presto. The working code. function job_pretarget(spell, action, spellMap, eventArgs) if spell.type == 'Step' then local allRecasts = windower.ffxi.get_ability_recasts() local prestoCooldown = allRecasts[236] local under5FMs = 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" ') end end end --Custom hook -- Select default macro book on initial load or subjob change. function select_default_macro_book() -- Default macro set/book if player.sub_job == 'WAR' then set_macro_page(1, 15) elseif player.sub_job == 'NIN' then set_macro_page(1, 15) elseif player.sub_job == 'SAM' then set_macro_page(1, 15) else set_macro_page(1, 15) end end