Guest User

DNC

a guest
Oct 13th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 50.99 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job.  Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4. --[[
  5.     Custom commands:
  6.    
  7.     gs c step
  8.         Uses the currently configured step on the target, with either <t> or <stnpc> depending on setting.
  9.  
  10.     gs c step t
  11.         Uses the currently configured step on the target, but forces use of <t>.
  12.    
  13.    
  14.     Configuration commands:
  15.    
  16.     gs c cycle mainstep
  17.         Cycles through the available steps to use as the primary step when using one of the above commands.
  18.        
  19.     gs c cycle altstep
  20.         Cycles through the available steps to use for alternating with the configured main step.
  21.        
  22.     gs c toggle usealtstep
  23.         Toggles whether or not to use an alternate step.
  24.        
  25.     gs c toggle selectsteptarget
  26.         Toggles whether or not to use <stnpc> (as opposed to <t>) when using a step.
  27. --]]
  28.  
  29.  
  30. -- Initialization function for this job file.
  31. function get_sets()
  32.     mote_include_version = 2
  33.    
  34.     -- Load and initialize the include file.
  35.     include('Mote-Include.lua')
  36.     include('organizer-lib')
  37.  
  38. end
  39.  
  40.  
  41. -- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
  42. function job_setup()
  43.  
  44.     include('Mote-TreasureHunter')
  45.     state.TreasureMode:set('Tag')
  46.    
  47.     state.Buff['Climactic Flourish'] = buffactive['climactic flourish'] or false
  48.    
  49.     state.Buff.Doom = buffactive.doom or false
  50.    
  51.     state.Buff.sleep = buffactive.sleep or false
  52.  
  53.     state.MainStep = M{['description']='Main Step', 'Box Step', 'Quickstep', 'Feather Step', 'Stutter Step'}
  54.     state.AltStep = M{['description']='Alt Step', 'Quickstep', 'Feather Step', 'Stutter Step', 'Box Step'}
  55.    
  56.     --Haste mode
  57.     state.HasteMode = M{['description']='Haste Mode', 'Normal' , 'Haste2'}
  58.     state.UseAltStep = M(false, 'Use Alt Step')
  59.     state.SelectStepTarget = M(false, 'Select Step Target')
  60.     state.IgnoreTargetting = M(false, 'Ignore Targetting')
  61.  
  62.     state.CurrentStep = M{['description']='Current Step', 'Main', 'Alt'}
  63.     state.SkillchainPending = M(false, 'Skillchain Pending')
  64.    
  65.     -- JA IDs for actions that always have TH: Provoke, Animated Flourish
  66.     info.default_ja_ids = S{35, 204}
  67.     -- Unblinkable JA IDs for actions that always have TH: Quick/Box/Stutter Step, Desperate/Violent Flourish
  68.     info.default_u_ja_ids = S{201, 202, 203, 205, 207}
  69.      
  70.     determine_haste_group()
  71. end
  72.  
  73. -------------------------------------------------------------------------------------------------------------------
  74. -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
  75. -------------------------------------------------------------------------------------------------------------------
  76.  
  77. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  78. function user_setup()
  79.     state.OffenseMode:options('Normal' , 'Acc', 'NoDW')
  80.     state.HybridMode:options('Normal', 'PDT')
  81.     state.WeaponskillMode:options('Normal')
  82.     state.PhysicalDefenseMode:options('PDT')
  83. -- Haste modes
  84.     state.HasteMode:options('Normal', 'Haste2')
  85.    
  86.  
  87.     -- Additional local binds
  88.     send_command('bind ^= gs c cycle mainstep')
  89. -- Haste mode keybind
  90.     --send_command('bind != gs c cycle HasteMode')
  91.     send_command('bind ^- gs c toggle selectsteptarget')
  92.     send_command('bind !- gs c toggle usealtstep')
  93.     send_command('bind ^` gs c cycle HasteMode')
  94.     send_command('bind !` input /ja "Chocobo Jig II" <me>')
  95.  
  96.     select_default_macro_book()
  97. end
  98.  
  99.  
  100. -- Called when this job file is unloaded (eg: job change)
  101. function user_unload()
  102.     send_command('unbind ^`')
  103.     send_command('unbind !`')
  104.     send_command('unbind ^=')
  105.     send_command('unbind !=')
  106.     send_command('unbind ^-')
  107.     send_command('unbind !-')
  108. end
  109.  
  110.  
  111. -- Define sets and vars used by this job file.
  112. function init_gear_sets()
  113.     --------------------------------------
  114.     -- Start defining the sets
  115.     --------------------------------------
  116.    
  117.     --TH on first hit
  118.     sets.TreasureHunter = {legs={ name="Herculean Trousers", augments={'CHR+5','Accuracy+2 Attack+2','"Treasure Hunter"+1','Mag. Acc.+6 "Mag.Atk.Bns."+6',}},
  119.     waist="Chaac Belt"}
  120.    
  121.     -- Precast Sets
  122.    
  123.     -- Precast sets to enhance JAs
  124.  
  125.     sets.precast.JA['No Foot Rise'] = {body="Horos Casaque +1"}
  126.  
  127.     sets.precast.JA['Trance'] = {head="Horos Tiara +1"}
  128.    
  129.     sets.precast.JA['Climactic FLourish'] = sets.buff['Climactic FLourish']
  130.  
  131.     -- Waltz set (chr and vit)
  132.     sets.precast.Waltz = {ammo="Light Sachet",
  133.         head="Anwig Salade",ear1="Roundel earring",ear2="Handler's earring +1",
  134.         body="Passion Jacket",neck="Dualism Collar +1",
  135.         hands={ name="Herculean Gloves", augments={'Accuracy+5','"Waltz" potency +11%',}},
  136.         legs="Dashing Subligar",waist="Aristo Belt",
  137.         ring1="Asklepian Ring",ring2="Valseur's Ring",
  138.         back={ name="Senuna's Mantle", augments={'CHR+20','Eva.+20 /Mag. Eva.+20','CHR+10','"Waltz" potency +10%',}},
  139.         feet={ name="Herculean Boots", augments={'"Waltz" potency +10%','CHR+8',}}}
  140.        
  141.     -- Don't need any special gear for Healing Waltz.
  142.     sets.precast.Waltz['Healing Waltz'] = {}
  143.    
  144.     sets.precast.Samba = {head="Maxixi Tiara +1",back="Senuna's Mantle"}
  145.  
  146.     sets.precast.Jig = {legs="Horos Tights +1", feet="Maxixi Toe Shoes +1"}
  147.  
  148.     sets.precast.Step = {ammo="Falcon Eye",
  149.         head="Meghanada Visor +1",neck="Subtlety Spectacles",ear1="Zennaroi Earring",ear2="Digni. Earring",
  150.         body="Meghanada Cuirie +1",hands="Meg. Gloves +1",ring1="Cacoethic Ring +1",ring2="Defending Ring",
  151.         back="Senuna's Mantle",waist="Olseni Belt",
  152.         legs="Meg. Chausses +1",
  153.         feet="Meg. Jam. +1"}
  154.        
  155.     sets.precast.Step['Feather Step'] = {feet="Maculele Toeshoes +1"}
  156.    
  157.     sets.precast.Step['Stutter Step'] = {}
  158.  
  159.     sets.precast.Flourish1 = {}
  160.     sets.precast.Flourish1['Violent Flourish'] = {ammo="Pemphredo Tathlum",
  161.         head="Dampening Tam",body="Horos Casaque +1",
  162.         hands="Rawhide Gloves",
  163.         ring1="Sangoma Ring",ring2="Etana Ring",ear1="Digni. Earring",ear2="Gwati Earring",
  164.         waist="Eschan Stone",neck="Voltsurge Torque",back="Aput Mantle",
  165.         legs={ name="Herculean Trousers", augments={'Rng.Atk.+9','Mag. Acc.+30','Mag. Acc.+16 "Mag.Atk.Bns."+16',}},
  166.         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
  167.        
  168.     sets.precast.Flourish1['Desperate Flourish'] = {ammo="Falcon Eye",
  169.         head="Maculele Tiara +1",neck="Subtlety Spectacles",ear1="Zennaroi Earring",ear2="Digni. Earring",
  170.         body="Horos Casaque +1",hands="Maculele Bangles +1",ring1="Cacoethic Ring +1",ring2="Etana Ring",
  171.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}},waist="Olseni Belt",
  172.         legs={ name="Herculean Trousers", augments={'Accuracy+24 Attack+24','"Dual Wield"+1','DEX+14','Accuracy+8','Attack+3',}},
  173.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}} -- acc gear
  174.  
  175.     sets.precast.Flourish2 = {}
  176.     sets.precast.Flourish2['Reverse Flourish'] = {hands="Maculele Bangles +1",
  177.       back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+5','"Rev. Flourish"+30','Weapon skill damage +2%',}}}
  178.     sets.precast.Flourish2['Wild Flourish'] = {ammo="Falcon Eye",
  179.         head="Meghanada Visor +1",neck="Subtlety Spectacles",ear1="Zennaroi Earring",ear2="Digni. Earring",
  180.         body="Meghanada Cuirie +1",hands="Meg. Gloves +1",ring1="Cacoethic Ring +1",ring2="Defending Ring",
  181.         back="Senuna's Mantle",waist="Olseni Belt",
  182.         legs="Meg. Chausses +1",
  183.         feet="Meg. Jam. +1"}
  184.      
  185.      
  186.      
  187.     sets.precast.Flourish3 = {}
  188.     sets.precast.Flourish3['Striking Flourish'] = {body="Maculele Casaque +1"}
  189.     sets.precast.Flourish3['Climactic Flourish'] = {head="Maculele Tiara +1"}
  190.  
  191.     -- Fast cast sets for spells
  192.    
  193.     sets.precast.FC = {ammo="Impatiens",
  194.       head={ name="Herculean Helm", augments={'Mag. Acc.+25','"Fast Cast"+5','MND+5','"Mag.Atk.Bns."+12',}},
  195.       neck="Voltsurge Torque",ear1="Etiolation Earring",ear2="Loquacious Earring",
  196.       body="Foppish Tunica",hands="Leyline Gloves",
  197.       legs={ name="Herculean Trousers", augments={'Mag. Acc.+6','"Fast Cast"+6','INT+9','"Mag.Atk.Bns."+10',}},
  198.       ring1="Lebeche Ring",ring2="Prolix Ring",
  199.       back={ name="Senuna's Mantle", augments={'AGI+20','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10',}},
  200.       feet={ name="Herculean Boots", augments={'"Mag.Atk.Bns."+15','"Fast Cast"+5','Mag. Acc.+14',}}}
  201.  
  202.     sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads",body="Passion Jacket"})
  203.  
  204.        
  205.     -- Weaponskill sets
  206.     -- Default set for any weaponskill that isn't any more specifically defined
  207.     sets.precast.WS = {ammo="Ginsen",
  208.         head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}},
  209.         neck="Fotia Gorget",ear1="Ishvara Earring",ear2="Moonshade Earring",
  210.         body="Adhemar Jacket",hands="Maculele Bangles +1",ring1="Epona's Ring",ring2="Apate Ring",
  211.         back="Senuna's Mantle",waist="Fotia Belt",
  212.         legs="Samnuha Tights",
  213.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  214.    
  215.    
  216.     -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
  217.     sets.precast.WS['Shark Bite'] = set_combine(sets.precast.WS, {
  218.         ammo="Floestone",
  219.         head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},
  220.         body={ name="Adhemar Jacket", augments={'STR+10','DEX+10','Attack+15',}},
  221.         hands={ name="Adhemar Wristbands", augments={'STR+10','DEX+10','Attack+15',}},
  222.         legs={ name="Lustratio Subligar", augments={'Accuracy+15','DEX+5','Crit. hit rate+2%',}},
  223.         feet="Macu. Toeshoes +1",neck="Fotia Gorget",waist="Fotia Belt",
  224.         ear1="Jupiter's Pearl",ear2="Ishvara Earring",ring1="Ramuh Ring +1",ring2="Apate Ring",
  225.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}}})
  226.    
  227.     sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {
  228.         ammo="Ginsen",
  229.         head={ name="Lilitu Headpiece", augments={'STR+10','DEX+10','Attack+15','Weapon skill damage +3%',}},
  230.         body={ name="Adhemar Jacket", augments={'STR+10','DEX+10','Attack+15',}},
  231.         hands={ name="Adhemar Wristbands", augments={'STR+10','DEX+10','Attack+15',}},
  232.         legs="Maculele Tights +1",
  233.         feet="Macu. Toeshoes +1",neck="Fotia Gorget",waist="Fotia Belt",ear1="Tati Earring",
  234.         ear2="Tati Earring",ring1="Ramuh Ring +1",ring2="Apate Ring",
  235.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}}})
  236.    
  237.  
  238.     sets.precast.WS['Pyrrhic Kleos'] = {ammo="Floestone",
  239.         head={ name="Herculean Helm", augments={'Accuracy+24 Attack+24','"Triple Atk."+2','STR+9','Accuracy+12',}},
  240.         body="Adhemar Jacket",neck="Fotia Gorget",
  241.         ear1="Tati Earring",ear2="Tati Earring",
  242.         hands={ name="Adhemar Wristbands", augments={'STR+10','DEX+10','Attack+15',}},
  243.         legs="Samnuha Tights",feet="Lustratio Leggings",
  244.         waist="Fotia Belt",ring1="Ifrit Ring +1",ring2="Ifrit Ring +1",
  245.         back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}}}
  246.  
  247.     sets.precast.WS['Evisceration'] = {ammo="Charis Feather",
  248.         head={ name="Herculean Helm", augments={'Accuracy+10 Attack+10','Crit.hit rate+4','Attack+11',}},
  249.         body="Foppish Tunica",
  250.         neck="Fotia Gorget",ear1="Jupiter's Pearl",ear2="Moonshade Earring",
  251.         hands={ name="Adhemar Wristbands", augments={'STR+10','DEX+10','Attack+15',}},
  252.         ring1="Ramuh Ring +1",ring2="Ramuh Ring +1",waist="Fotia Belt",legs="Lustratio Subligar",
  253.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}},
  254.         feet={ name="Herculean Boots", augments={'Attack+23','Crit.hit rate+4','DEX+10','Accuracy+9',}}}
  255.    
  256.  
  257.     sets.precast.WS["Rudra's Storm"] = {
  258.         ammo="Floestone",
  259.         head="Lilitu Headpiece",
  260.         body={ name="Adhemar Jacket", augments={'STR+10','DEX+10','Attack+15',}},
  261.         hands="Meghanada Gloves +1",
  262.         legs="Lustratio Subligar",
  263.         feet={ name="Herculean Boots", augments={'Attack+11','Weapon skill damage +5%','DEX+6','Accuracy+15',}},
  264.         neck="Caro Necklace",waist="Grunfeld Rope",
  265.         ear1="Moonshade Earring",ear2="Ishvara Earring",ring1="Shiva Ring",ring2="Shiva Ring",
  266.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}}
  267.        
  268.     sets.precast.WS["Rudra's Storm"].CF = {ammo="Charis Feather",
  269.         neck="Caro Necklace",
  270.         ear1="Ishvara Earring",
  271.         ear2="Moonshade Earring",body="Meghanada Cuirie +1",
  272.         hands="Meghanada Gloves +1",
  273.         ring1="Ramuh Ring +1",ring2="Ramuh Ring +1",
  274.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}},
  275.         waist="Grunfeld Rope",legs="Lustratio Subligar",
  276.         feet={ name="Herculean Boots", augments={'Attack+11','Weapon skill damage +5%','DEX+6','Accuracy+15',}}}
  277.  
  278.     sets.precast.WS['Aeolian Edge'] = {ammo="Pemphredo Tathlum",
  279.         head={ name="Herculean Helm", augments={'Mag. Acc.+17 "Mag.Atk.Bns."+17','Mag. Acc.+4','"Mag.Atk.Bns."+12',}},
  280.         neck="Sanctity Necklace",ear1="Friomisi Earring",ear2="Crematio Earring",
  281.         body="Samnuha Coat",hands="Leyline Gloves",
  282.         ring1="Shiva Ring",ring2="Shiva Ring",
  283.         back={ name="Senuna's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Weapon skill damage +10%',}},
  284.         waist="Eschan Stone",
  285.         legs={ name="Herculean Trousers", augments={'Mag. Acc.+16 "Mag.Atk.Bns."+16','"Fast Cast"+5','"Mag.Atk.Bns."+15',}},
  286.         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',}}}
  287.    
  288.     sets.precast.Skillchain = {}
  289.    
  290.    
  291.     -- Midcast Sets
  292.    
  293.     sets.midcast.FastRecast = {
  294.       ammo="Impatiens",
  295.       head={ name="Herculean Helm", augments={'Mag. Acc.+25','"Fast Cast"+5','MND+5','"Mag.Atk.Bns."+12',}},
  296.       neck="Voltsurge Torque",ear1="Etiolation Earring",ear2="Loquacious Earring",
  297.       body="Foppish Tunica",hands="Leyline Gloves",
  298.       legs={ name="Herculean Trousers", augments={'Mag. Acc.+6','"Fast Cast"+6','INT+9','"Mag.Atk.Bns."+10',}},
  299.       ring1="Lebeche Ring",ring2="Prolix Ring",
  300.       feet={ name="Herculean Boots", augments={'"Mag.Atk.Bns."+15','"Fast Cast"+5','Mag. Acc.+14',}}}
  301.        
  302.     -- Specific spells
  303.     sets.midcast.Utsusemi = {
  304.         head={ name="Herculean Helm", augments={'Accuracy+19','Damage taken-3%','STR+7','Attack+7',}},
  305.         body="Emet Harness +1",neck="Twilight Torque",ear1="Etiolation Earring",ear2="Loquacious Earring",
  306.         hands="Leyline Gloves",ring1="Defending Ring",ring2="Patricius Ring",
  307.         back="Fravashi Mantle",
  308.         legs={ name="Herculean Trousers", augments={'Mag. Acc.+6','"Fast Cast"+6','INT+9','"Mag.Atk.Bns."+10',}},
  309.         feet={ name="Herculean Boots", augments={'"Mag.Atk.Bns."+15','"Fast Cast"+5','Mag. Acc.+14',}}}
  310.    
  311.     sets.midcast['Yoran-Oran (UC)'] = set_combine(sets.midcast.FastRecast, {body="Yoran Unity Shirt"})
  312.  
  313.     -- Sets to return to when not performing an action.
  314.    
  315.     -- Resting sets
  316.     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',}},
  317.         neck="Bathy Choker +1",ear1="Infused Earring",
  318.         ring1="Shneddick Ring",ring2="Paguroidea Ring",feet="Maculele Toeshoes +1"}
  319.  
  320.    
  321.  
  322.     -- Idle sets
  323.  
  324.     sets.idle = {
  325.         head={ name="Herculean Helm", augments={'Accuracy+19','Damage taken-3%','STR+7','Attack+7',}},
  326.         neck="Bathy Choker +1",ear1="Infused Earring",ear2="Eabani Earring",
  327.         body={ name="Rawhide Vest", augments={'HP+50','Accuracy+15','Evasion+20',}},
  328.         hands="Maculele Bangles +1",legs="Maculele Tights +1",
  329.         ring1="Shneddick Ring",ring2="Paguroidea Ring",
  330.         back="Solemnity Cape",
  331.         feet={ name="Rawhide Boots", augments={'HP+50','Accuracy+15','Evasion+20',}}}
  332.  
  333.     sets.idle.Town = {main="Terpsichore",head="Moogle Masque",neck="Bathy Choker +1",
  334.         ear1="Infused Earring",ear2="Hearty Earring",
  335.         body="Tidal Talisman",hands="Maculele Bangles +1",ring1="Shneddick Ring",ring2="Paguroidea Ring",
  336.         back="Solemnity Cape",waist="Patentia Sash",legs="Gemini Subligar",
  337.         feet={ name="Rawhide Boots", augments={'HP+50','Accuracy+15','Evasion+20',}}}
  338.  
  339.     sets.idle.Weak = {
  340.         neck="Bathy Choker +1",ear1="Dudgeon Earring",ear2="Hearty Earring",
  341.         body="Horos Casaque +1",hands="Maculele Bangles +1",ring1="Shneddick Ring",ring2="Paguroidea Ring",
  342.         back="Solemnity Cape",feet={ name="Rawhide Boots", augments={'HP+50','Accuracy+15','Evasion+20',}}}
  343.    
  344.     -- Defense sets
  345.  
  346.    -- sets.defense.Evasion = {}
  347.  
  348.     sets.defense.PDT = {
  349.         head={ name="Herculean Helm", augments={'Accuracy+19','Damage taken-3%','STR+7','Attack+7',}},neck="Twilight Torque",
  350.         body="Meghanada Cuirie +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}},
  351.         ring1="Defending Ring",ring2="Patricius Ring",waist="Dynamic Belt",
  352.         legs="Meghanada Chausses +1",back="Agema Cape",
  353.         feet={ name="Herculean Boots", augments={'Accuracy+14 Attack+14','Phys. dmg. taken -4%','STR+7','Accuracy+9',}}}
  354.  
  355.     sets.defense.MDT = {
  356.         neck="Twilight Torque",
  357.         ring1="Defending Ring",ring2="Purity Ring",
  358.         back="Mubvumbamiri Mantle"}
  359.  
  360.     sets.Kiting = {}
  361.  
  362.     -- Engaged sets
  363.  
  364.     -- Variations for TP weapon and (optional) offense/defense modes.  Code will fall back on previous
  365.     -- sets if more refined versions aren't defined.
  366.     -- If you create a set with both offense and defense modes, the offense mode should be first.
  367.     -- EG: sets.engaged.Dagger.Accuracy.Evasion
  368.     -- NoDW is Single wield mode.
  369.    
  370.     -- Normal melee group
  371.     sets.engaged = {ammo="Ginsen",
  372.         head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}},
  373.         neck="Charis Necklace",
  374.         ear1="Eabani Earring",ear2="Suppanomimi",
  375.         body="Maculele Casaque +1",hands="Adhemar Wristbands",
  376.         ring1="Epona's Ring",ring2="Hetairoi Ring",
  377.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  378.         waist="Patentia Sash",legs="Taeon Tights",
  379.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  380.  
  381.     -- No magical haste during single wield
  382.     sets.engaged.NoDW = {ammo="Ginsen",
  383.         head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}},
  384.         neck="Combatant's Torque",ear1="Dedition Earring",ear2="Tripudio Earring",
  385.         body={ name="Herculean Vest", augments={'Accuracy+19 Attack+19','"Triple Atk."+4','DEX+4','Attack+2',}},hands="Adhemar Wristbands",
  386.         ring1="Epona's Ring",ring2="Hetairoi Ring",
  387.         back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},
  388.         waist="Windbuffet Belt +1",legs="Samnuha Tights",
  389.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  390.        
  391.     sets.engaged.Acc = {ammo="Falcon Eye",
  392.         head="Dampening Tam",neck="Combatant's Torque",ear1="Eabani Earring",ear2="Suppanomimi",
  393.         body="Maculele Casaque +1",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Hetairoi Ring",
  394.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  395.         waist="Patentia Sash",legs="Meg. Chausses +1",
  396.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}  
  397.     sets.engaged.PDT = {main="Terpsichore",ammo="Ginsen",
  398.         head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},
  399.         neck="Twilight Torque",ear1="Eabani Earring",ear2="Suppanomimi",
  400.         body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}},
  401.         ring1="Defending Ring",ring2="Patricius Ring",
  402.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}},
  403.         waist="Patentia Sash",legs="Taeon Tights",
  404.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}  
  405.     sets.engaged.Acc.PDT = {main="Terpsichore",ammo="Ginsen",
  406.         head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},
  407.         neck="Twilight Torque",ear1="Eabani Earring",ear2="Suppanomimi",
  408.         body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}},
  409.         ring1="Defending Ring",ring2="Patricius Ring",
  410.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}},waist="Patentia Sash",
  411.         legs="Taeon Tights",
  412.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  413.    
  414.     -- Haste at 15%
  415.     sets.engaged.Haste_15 = {ammo="Ginsen",
  416.         head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}},
  417.         neck="Combatant's Torque",
  418.         ear1="Eabani Earring",ear2="Suppanomimi",
  419.         body="Adhemar Jacket",hands="Adhemar Wristbands",
  420.         ring1="Epona's Ring",ring2="Hetairoi Ring",
  421.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  422.         waist="Patentia Sash",legs="Taeon Tights",
  423.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  424.  
  425.     -- 15% magical haste during single wield
  426.     sets.engaged.NoDW.Haste_15 = {ammo="Ginsen",
  427.         head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}},
  428.         neck="Combatant's Torque",ear1="Dedition Earring",ear2="Tripudio Earring",
  429.         body={ name="Herculean Vest", augments={'Accuracy+19 Attack+19','"Triple Atk."+4','DEX+4','Attack+2',}},hands="Adhemar Wristbands",
  430.         ring1="Epona's Ring",ring2="Hetairoi Ring",
  431.         back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},
  432.         waist="Windbuffet Belt +1",legs="Samnuha Tights",
  433.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  434.        
  435.  
  436.     sets.engaged.Acc.Haste_15 = {ammo="Falcon Eye",
  437.         head="Dampening Tam",neck="Combatant's Torque",ear1="Eabani Earring",ear2="Suppanomimi",
  438.         body="Maculele Casaque +1",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Hetairoi Ring",
  439.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  440.         waist="Patentia Sash",legs="Meg. Chausses +1",
  441.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  442.     sets.engaged.PDT.Haste_15 = {main="Terpsichore",ammo="Ginsen",
  443.         head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},
  444.         neck="Twilight Torque",ear1="Eabani Earring",ear2="Suppanomimi",
  445.         body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}},
  446.         ring1="Defending Ring",ring2="Patricius Ring",
  447.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}},
  448.         waist="Patentia Sash",legs="Taeon Tights",
  449.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}  
  450.     sets.engaged.Acc.PDT.Haste_15 = {main="Terpsichore",ammo="Ginsen",
  451.         head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},
  452.         neck="Twilight Torque",ear1="Eabani Earring",ear2="Suppanomimi",
  453.         body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}},
  454.         ring1="Defending Ring",ring2="Patricius Ring",
  455.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}},waist="Patentia Sash",
  456.         legs="Taeon Tights",
  457.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  458.  
  459.     --Custom melee group: Mid Haste 25%
  460.     sets.engaged.Haste_25 = {ammo="Ginsen",
  461.         head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}},
  462.         neck="Combatant's Torque",
  463.         ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  464.         body="Adhemar Jacket",hands="Adhemar Wristbands",
  465.         ring1="Epona's Ring",ring2="Hetairoi Ring",
  466.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  467.         waist="Patentia Sash",legs="Samnuha Tights",
  468.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  469.        
  470.     -- 25% magical haste during single wield
  471.     sets.engaged.NoDW.Haste_25 = {ammo="Ginsen",
  472.         head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}},
  473.         neck="Combatant's Torque",ear1="Dedition Earring",ear2="Tripudio Earring",
  474.         body={ name="Herculean Vest", augments={'Accuracy+19 Attack+19','"Triple Atk."+4','DEX+4','Attack+2',}},hands="Adhemar Wristbands",
  475.         ring1="Epona's Ring",ring2="Hetairoi Ring",
  476.         back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},
  477.         waist="Windbuffet Belt +1",legs="Samnuha Tights",
  478.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  479.        
  480.     sets.engaged.Acc.Haste_25 = {ammo="Falcon Eye",
  481.         head="Dampening Tam",neck="Combatant's Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  482.         body="Maculele Casaque +1",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Hetairoi Ring",
  483.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  484.         waist="Patentia Sash",legs="Meg. Chausses +1",
  485.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  486.     sets.engaged.PDT.Haste_25 = {main="Terpsichore",ammo="Ginsen",
  487.         head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},
  488.         neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  489.         body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}},
  490.         ring1="Defending Ring",ring2="Patricius Ring",
  491.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}},
  492.         waist="Patentia Sash",legs="Taeon Tights",
  493.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  494.     sets.engaged.Acc.PDT.Haste_25 = {main="Terpsichore",ammo="Ginsen",
  495.         head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  496.         body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}},
  497.         ring1="Defending Ring",ring2="Patricius Ring",
  498.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}},waist="Patentia Sash",
  499.         legs="Taeon Tights",
  500.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  501.        
  502.     -- Custom melee group: High Haste (2x March and Haste or Haste 2 or Mighty Guard and Haste 1)
  503.     sets.engaged.Haste_35 = {ammo="Ginsen",
  504.         head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}},
  505.         neck="Combatant's Torque",
  506.         ear1="Tripudio Earring",ear2="Brutal Earring",
  507.         body="Adhemar Jacket",hands="Adhemar Wristbands",
  508.         ring1="Epona's Ring",ring2="Hetairoi Ring",
  509.         back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},waist="Patentia Sash",
  510.         legs="Samnuha Tights",
  511.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  512.        
  513.     --35% magical haste during single wield
  514.     sets.engaged.NoDW.Haste_35 = {ammo="Ginsen",
  515.         head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}},
  516.         neck="Combatant's Torque",ear1="Dedition Earring",ear2="Tripudio Earring",
  517.         body={ name="Herculean Vest", augments={'Accuracy+19 Attack+19','"Triple Atk."+4','DEX+4','Attack+2',}},hands="Adhemar Wristbands",
  518.         ring1="Epona's Ring",ring2="Hetairoi Ring",
  519.         back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},
  520.         waist="Windbuffet Belt +1",legs="Samnuha Tights",
  521.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  522.        
  523.     sets.engaged.Acc.Haste_35 = {ammo="Falcon Eye",
  524.         head="Dampening Tam",neck="Combatant's Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  525.         body="Adhemar jacket",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Hetairoi Ring",
  526.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10',}},
  527.         waist="Patentia Sash",legs="Meg. Chausses +1",
  528.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  529.     sets.engaged.PDT.Haste_35 = {main="Terpsichore",ammo="Ginsen",
  530.         head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},
  531.         neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  532.         body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}},
  533.         ring1="Defending Ring",ring2="Patricius Ring",
  534.         back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},waist="Patentia Sash",
  535.         legs="Samnuha Tights",
  536.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  537.     sets.engaged.Acc.PDT.Haste_35 = {main="Terpsichore",ammo="Falcon Eye",
  538.         head="Maculele Tiara +1",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  539.         body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}},
  540.         ring1="Defending Ring",ring2="Patricius Ring",
  541.         back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},
  542.         waist="Patentia Sash",
  543.         legs={ name="Herculean Trousers", augments={'Accuracy+24 Attack+24','"Dual Wield"+1','DEX+14','Accuracy+8','Attack+3',}},
  544.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  545.  
  546.  
  547.     -- 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)
  548.     sets.engaged.MaxHaste = {ammo="Ginsen",
  549.         head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}},
  550.         neck="Combatant's Torque",ear1="Brutal Earring",ear2="Cessance Earring",
  551.         body={ name="Herculean Vest", augments={'Accuracy+19 Attack+19','"Triple Atk."+4','DEX+4','Attack+2',}},
  552.         hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Hetairoi Ring",
  553.         back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},
  554.         waist="Windbuffet Belt +1",
  555.         legs="Samnuha Tights",
  556.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  557.  
  558.     -- Capped magical haste during single wield
  559.     sets.engaged.NoDW.MaxHaste = {ammo="Ginsen",
  560.         head={ name="Herculean Helm", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+10','Accuracy+8','Attack+5',}},
  561.         neck="Combatant's Torque",ear1="Dedition Earring",ear2="Tripudio Earring",
  562.         body={ name="Herculean Vest", augments={'Accuracy+19 Attack+19','"Triple Atk."+4','DEX+4','Attack+2',}},hands="Adhemar Wristbands",
  563.         ring1="Epona's Ring",ring2="Hetairoi Ring",
  564.         back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},
  565.         waist="Windbuffet Belt +1",legs="Samnuha Tights",
  566.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  567.  
  568.     sets.engaged.Acc.MaxHaste = {ammo="Falcon Eye",
  569.         head="Dampening Tam",neck="Combatant's Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  570.         body="Maculele Casaque +1",hands="Adhemar Wristbands",ring1="Epona's Ring",ring2="Ramuh Ring +1",
  571.         back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},
  572.         waist="Kentarch Belt +1",legs="Meg. Chausses +1",
  573.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  574.     sets.engaged.PDT.MaxHaste = {main="Terpsichore",ammo="Ginsen",
  575.         head="Maculele Tiara +1",
  576.         neck="Twilight Torque",ear1="Tripudio Earring",ear2="Cessance Earring",
  577.         body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}},
  578.         ring1="Defending Ring",ring2="Patricius Ring",
  579.         back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},waist="Windbuffet Belt +1",
  580.         legs="Samnuha Tights",
  581.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  582.     sets.engaged.Acc.PDT.MaxHaste = {main="Terpsichore",ammo="Falcon Eye",
  583.         head="Maculele Tiara +1",neck="Twilight Torque",ear1="Tripudio Earring",ear2="Cessance Earring",
  584.         body="Horos Casaque +1",hands={ name="Herculean Gloves", augments={'Accuracy+12 Attack+12','Phys. dmg. taken -3%','STR+14','Accuracy+9','Attack+8',}},
  585.         ring1="Defending Ring",ring2="Patricius Ring",
  586.         back={ name="Senuna's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10',}},
  587.         waist="Windbuffet Belt +1",
  588.         legs={ name="Herculean Trousers", augments={'Accuracy+24 Attack+24','"Dual Wield"+1','DEX+14','Accuracy+8','Attack+3',}},
  589.         feet={ name="Herculean Boots", augments={'Accuracy+16 Attack+16','"Triple Atk."+4','DEX+7','Accuracy+15','Attack+4',}}}
  590.  
  591.  
  592.  
  593.     -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  594.     sets.buff['Saber Dance'] = {}
  595.     sets.buff['Climactic Flourish'] = {head="Maculele Tiara +1"}
  596.     sets.buff.Doom = {ring1="Blenmot's Ring",ring2="Purity Ring"}
  597.     sets.buff.sleep = {head="Frenzy Sallet"}
  598.  
  599.     --Organizer
  600.     organizer_items = {head="Shobuhouou Kabuto",
  601.         ring="Warp Ring",sub="Airy Buckler"}
  602. end
  603.  
  604.  
  605. -------------------------------------------------------------------------------------------------------------------
  606. -- Job-specific hooks for standard casting events.
  607. -------------------------------------------------------------------------------------------------------------------
  608.  
  609. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  610. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  611. function job_precast(spell, action, spellMap, eventArgs)
  612.      cancel_conflicting_buffs(spell, action, spellMap, eventArgs)
  613.      custom_aftermath_timers_precast(spell, action, spellMap, eventArgs)
  614. end
  615.  
  616.  
  617. function job_post_precast(spell, action, spellMap, eventArgs)
  618.     if spell.type == "WeaponSkill" then
  619.         if state.Buff['Climactic Flourish'] then
  620.             equip(sets.buff['Climactic Flourish'])
  621.         end
  622.         if state.SkillchainPending.value == true then
  623.             equip(sets.precast.Skillchain)
  624.         end
  625.     end
  626. end
  627.  
  628. -- Return true if we handled the aftercast work.  Otherwise it will fall back
  629. -- to the general aftercast() code in Mote-Include.
  630. function job_aftercast(spell, action, spellMap, eventArgs)
  631.    custom_aftermath_timers_aftercast(spell, action, spellMap, eventArgs)
  632. --   if not spell.interrupted then
  633.  --       if spell.english == "Wild Flourish" then
  634. --            state.SkillchainPending:set()
  635.  --           send_command('wait 5;gs c unset SkillchainPending')
  636.  --       elseif spell.type:lower() == "weaponskill" then
  637.  --           state.SkillchainPending:toggle()
  638.  --           send_command('wait 6;gs c unset SkillchainPending')
  639.  --       end
  640.   --  end
  641. end
  642.  
  643. -------------------------------------------------------------------------------------------------------------------
  644. -- Job-specific hooks for non-casting events.
  645. -------------------------------------------------------------------------------------------------------------------
  646.  
  647. -- Called when a player gains or loses a buff.
  648. -- buff == buff gained or lost
  649. -- gain == true if the buff was gained, false if it was lost.
  650. function job_buff_change(buff,gain, eventArgs)
  651.     --If we gain or lose any haste buffs, adjust which gear set we target.
  652.     if S{'haste','march','embrava','haste samba','indi-haste','geo-haste','mighty guard'}:contains(buff:lower()) then
  653.         determine_haste_group()
  654.         handle_equipping_gear(player.status)
  655.     --elseif (buff == "terror" or buff == "petrification" or buff == "stun") and gain then
  656.            -- equip(sets.defense.PDT)
  657.    
  658.     elseif (buff == "sleep" and gain) and player.hp > 100 and player.status == "Engaged" then
  659.         equip(sets.buff.sleep)
  660.                 if buffactive.stoneskin then
  661.                     send_command('cancel Stoneskin')
  662.                 end
  663.     elseif state.Buff.Doom then
  664.         handle_equipping_gear(player.status)
  665.         add_to_chat(122, 'Use Holy Waters ASAP')
  666.  
  667.     elseif buff == 'Saber Dance' or buff == 'Climactic Flourish' then
  668.         handle_equipping_gear(player.status)
  669.     end
  670. end
  671.        
  672.  
  673.  
  674.  
  675.  
  676.  
  677. function job_status_change(new_status, old_status)
  678.     if new_status == 'Engaged' then
  679.          determine_haste_group()
  680.     end
  681. end
  682.  
  683.  
  684.  
  685.  
  686. -------------------------------------------------------------------------------------------------------------------
  687. -- User code that supplements standard library decisions.
  688. -------------------------------------------------------------------------------------------------------------------
  689.  
  690. -- Called by the default 'update' self-command.
  691. function job_update(cmdParams, eventArgs)
  692.     determine_haste_group()
  693. end
  694.  
  695.  
  696. function get_custom_wsmode(spell, spellMap, defaut_wsmode)
  697.     local wsmode
  698.  
  699.     if state.Buff['Climactic Flourish'] then
  700.         wsmode = 'CF'
  701.     end
  702.    
  703.     return wsmode
  704. end
  705.  
  706. function customize_melee_set(meleeSet)
  707.     if state.DefenseMode.value ~= 'None' then
  708.         if buffactive['Saber dance'] then
  709.             meleeSet = set_combine(meleeSet, sets.buff['Saber Dance'])
  710.         end
  711.         if state.Buff['Climactic Flourish'] then
  712.             meleeSet = set_combine(meleeSet, sets.buff['Climactic Flourish'])
  713.         end
  714.     end
  715.    
  716.    -- if player.equipment.sub == 'shield' then
  717.    --     meleeSet = set_combine(meleeSet, sets.NoDW)
  718.    -- end
  719.    
  720.     if state.TreasureMode.value == 'Fulltime' then
  721.         meleeSet = set_combine(meleeSet, sets.TreasureHunter)
  722.     end
  723.  
  724.     return meleeSet
  725. end
  726.  
  727. -- Handle auto-targetting based on local setup.
  728. function job_auto_change_target(spell, action, spellMap, eventArgs)
  729.     if spell.type == 'Step' then
  730.         if state.IgnoreTargetting.value == true then
  731.             state.IgnoreTargetting:reset()
  732.             eventArgs.handled = true
  733.         end
  734.        
  735.         eventArgs.SelectNPCTargets = state.SelectStepTarget.value
  736.     end
  737. end
  738.  
  739.  
  740. -- Function to display the current relevant user state when doing an update.
  741. -- Set eventArgs.handled to true if display was handled, and you don't want the default info shown.
  742. function display_current_job_state(eventArgs)
  743.     local msg = 'Melee'
  744.    
  745.     if state.CombatForm.has_value then
  746.         msg = msg .. ' (' .. state.CombatForm.value .. ')'
  747.     end
  748.    
  749.     msg = msg .. ': '
  750.    
  751.     msg = msg .. state.OffenseMode.value
  752.     if state.HybridMode.value ~= 'Normal' then
  753.         msg = msg .. '/' .. state.HybridMode.value
  754.     end
  755.     msg = msg .. ', WS: ' .. state.WeaponskillMode.value
  756.    
  757.     if state.DefenseMode.value ~= 'None' then
  758.         msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  759.     end
  760.    
  761.     if state.Kiting.value then
  762.         msg = msg .. ', Kiting'
  763.     end
  764.  
  765.     msg = msg .. ', ['..state.MainStep.current
  766.  
  767.     if state.UseAltStep.value == true then
  768.         msg = msg .. '/'..state.AltStep.current
  769.     end
  770.    
  771.     msg = msg .. ']'
  772.  
  773.     if state.SelectStepTarget.value == true then
  774.         steps = steps..' (Targetted)'
  775.     end
  776.  
  777.     add_to_chat(122, msg)
  778.  
  779.     eventArgs.handled = true
  780. end
  781.  
  782.  
  783. -------------------------------------------------------------------------------------------------------------------
  784. -- User self-commands.
  785. -------------------------------------------------------------------------------------------------------------------
  786.  
  787. -- Called for custom player commands.
  788. function job_self_command(cmdParams, eventArgs)
  789.     if cmdParams[1] == 'step' then
  790.         if cmdParams[2] == 't' then
  791.             state.IgnoreTargetting:set()
  792.         end
  793.  
  794.         local doStep = ''
  795.         if state.UseAltStep.value == true then
  796.             doStep = state[state.CurrentStep.current..'Step'].current
  797.             state.CurrentStep:cycle()
  798.         else
  799.             doStep = state.MainStep.current
  800.         end        
  801.        
  802.         send_command('@input /ja "'..doStep..'" <t>')
  803.     end
  804. end
  805.  
  806. -------------------------------------------------------------------------------------------------------------------
  807. -- Utility functions specific to this job.
  808. -------------------------------------------------------------------------------------------------------------------
  809.  
  810. function determine_haste_group()
  811.     -- We have three groups of DW in gear: Charis body, Charis neck + DW earrings, and Patentia Sash.
  812.  
  813.     -- For high haste, we want to be able to drop one of the 10% groups (body, preferably).
  814.     -- High haste buffs:
  815.     -- 2x Marches + Haste
  816.     -- 2x Marches + Haste Samba
  817.     -- 1x March + Haste + Haste Samba
  818.     -- Embrava + any other haste buff
  819.    
  820.     -- For max haste, we probably need to consider dropping all DW gear.
  821.     -- Max haste buffs:
  822.     -- Embrava + Haste/March + Haste Samba
  823.     -- 2x March + Haste + Haste Samba
  824.     -- I put in GEO haste with 580 as buff and buff ID 33 is haste 1/2.
  825.     -- Mighty Guard was added from the extra +15% haste
  826.     --Added Haste 1/2 + Mighty Guard + haste samba combo to try to circumvent no toggle for hastes
  827.     --Need haste samba to cap with twashtar
  828.     classes.CustomMeleeGroups:clear()
  829.    
  830. --   if buffactive.embrava and (buffactive.haste or buffactive.march or buffactive['Mighty Guard']) and buffactive['haste samba'] then
  831. --      add_to_chat(8, '------------- Max Haste -------------')
  832. --        classes.CustomMeleeGroups:append('MaxHaste')
  833. --  elseif buffactive.haste == 2 then
  834. --      add_to_chat(8, '------------- Max Haste -------------')
  835. --      classes.CustomMeleeGroups:append('MaxHaste')
  836. --    elseif buffactive.march == 2 and (buffactive.haste or buffactive['Mighty Guard']) then
  837. --        add_to_chat(8, '------------- Max Haste -------------')
  838. --      classes.CustomMeleeGroups:append('MaxHaste')
  839. --  elseif buffactive[580] and (buffactive[33] or buffactive.march or buffactive['Mighty Guard'] or buffactive['haste samba']) then
  840. --        add_to_chat(8, '------------- Max Haste --------------')
  841. --      classes.CustomMeleeGroups:append('MaxHaste')
  842. --  elseif buffactive[580] and not buffactive[33] then
  843. --      add_to_chat(8, '-------------High Haste-------------')
  844. --      classes.CustomMeleeGroups:append('HighHaste')
  845. --    elseif buffactive.march == 1 and (buffactive.haste or buffactive['Mighty Guard']) and buffactive['haste samba'] then
  846. --        add_to_chat(8, '-------------High Haste-------------')
  847. --      classes.CustomMeleeGroups:append('HighHaste')
  848. --    elseif buffactive.march == 2 and (buffactive.haste or buffactive['Mighty Guard'] or buffactive['haste samba']) then
  849. --      add_to_chat(8, '-------------High Haste-------------')
  850. --      classes.CustomMeleeGroups:append('HighHaste')
  851. --  elseif buffactive.haste == 1 and (buffactive['haste samba'] or buffactive['Mighty Guard']) then
  852. --      add_to_chat(8, '-------------High Haste-------------')
  853. --      classes.CustomMeleeGroups:append('HighHaste')
  854.  
  855. --    end
  856.  
  857.     --Alternative haste mechanics with toggle
  858.     -- Haste: 15%
  859.     -- Haste Samba: 10%
  860.     -- Victory March +0/+3/+4/+5    9.4/14%/15.6%/17.1% +0
  861.     -- Advancing March +0/+3/+4/+5  6.3/10.9%/12.5%/14%  +0
  862.     -- Embrava 30% with 500 enhancing skill
  863.     -- Mighty Guard: 15%
  864.     -- buffactive[580] = geo haste
  865.     -- buffactive[33] = regular haste
  866.     -- buffactive[604] = mighty guard
  867.     -- state.HasteMode = toggle for when you know Haste II is being cast on you
  868.     -- Hi = Haste II is being cast. This is clunky to use when both haste II and haste I are being cast
  869.     --print(state.HasteMode.value)
  870.     if state.HasteMode.value == 'Haste2' then
  871.         if buffactive.embrava and (buffactive.haste or buffactive.march or buffactive['Mighty Guard']) and buffactive['haste samba'] then
  872.             add_to_chat(8, '------------- Max Haste -------------')
  873.             classes.CustomMeleeGroups:append('MaxHaste')
  874.         elseif buffactive.haste == 2 then
  875.             add_to_chat(8, '------------- Max Haste -------------')
  876.             classes.CustomMeleeGroups:append('MaxHaste')
  877.         elseif buffactive.march == 2 and (buffactive.haste or buffactive['Mighty Guard']) then
  878.             add_to_chat(8, '------------- Max Haste -------------')
  879.             classes.CustomMeleeGroups:append('MaxHaste')
  880.         elseif buffactive[580] and (buffactive[33] or buffactive.march or buffactive['Mighty Guard'] or buffactive['haste samba']) then
  881.             add_to_chat(8, '------------- Max Haste --------------')
  882.             classes.CustomMeleeGroups:append('MaxHaste')
  883.         elseif buffactive.march == 2 and (buffactive.haste or buffactive['Mighty Guard'] or buffactive['haste samba']) then
  884.             add_to_chat(8, '-------------Haste 35%-------------')
  885.             classes.CustomMeleeGroups:append('Haste_35')
  886.         elseif buffactive.march == 1 and (buffactive.haste or buffactive['Mighty Guard'] or buffactive['haste samba']) then
  887.             add_to_chat(8, '-------------Haste 35%-------------')
  888.             classes.CustomMeleeGroups:append('Haste_35')
  889.         elseif buffactive[580] and not buffactive[33] then
  890.             add_to_chat(8, '-------------Haste 30%-------------')
  891.             classes.CustomMeleeGroups:append('Haste_30')
  892.         elseif buffactive.haste == 1 and (buffactive['haste samba']) then
  893.             add_to_chat(8, '-------------Haste 30%-------------')
  894.             classes.CustomMeleeGroups:append('Haste_30')
  895.         elseif buffactive.haste == 1  then
  896.             add_to_chat(8, '-------------Haste 30%-------------')
  897.             classes.CustomMeleeGroups:append('Haste_30')
  898.         elseif buffactive.march == 2 then
  899.             classes.CustomMeleeGroups:append('Haste_30')
  900.         elseif buffactive['haste samba'] and (buffactive['Might Guard'] or buffactive.march == 1) then
  901.             add_to_chat(8, '-------------Haste 25%-------------')
  902.             classes.CustomMeleeGroups:append('Haste_25')
  903.         elseif buffactive.march == 1 or buffactive['Might Guard'] then
  904.             add_to_chat(8, '-------------Haste 15%-------------')
  905.             classes.CustomMeleeGroups:append('Haste_15')
  906.         end
  907.     else
  908.         if buffactive.embrava and (buffactive.haste or buffactive.march or buffactive['Mighty Guard']) and buffactive['haste samba'] then
  909.             add_to_chat(8, '------------- Max Haste -------------')
  910.             classes.CustomMeleeGroups:append('MaxHaste')
  911.         elseif buffactive.haste == 2 then
  912.             add_to_chat(8, '------------- Max Haste -------------')
  913.             classes.CustomMeleeGroups:append('MaxHaste')
  914.         elseif buffactive.march == 2 and (buffactive.haste or buffactive['Mighty Guard']) then
  915.             add_to_chat(8, '------------- Max Haste -------------')
  916.             classes.CustomMeleeGroups:append('MaxHaste')
  917.         elseif buffactive[580] and (buffactive[33] or buffactive.march or buffactive['Mighty Guard'] or buffactive['haste samba']) then
  918.             add_to_chat(8, '------------- Max Haste --------------')
  919.             classes.CustomMeleeGroups:append('MaxHaste')
  920.         elseif ( (buffactive['Might Guard'] or buffactive[33]) and buffactive.march == 1 and buffactive['haste samba']) or -- MG or haste + samba with 1 march
  921.                ( buffactive.march == 2 and buffactive['haste samba'] ) or
  922.                ( buffactive[580] and buffactive['haste samba'] ) then
  923.             add_to_chat(8, '-------------Haste 35%-------------')
  924.             classes.CustomMeleeGroups:append('Haste_35')
  925.         elseif ( buffactive.march == 2 ) or -- two marches from ghorn
  926.                ( (buffactive.haste or buffactive['Might Guard'] or buffactive['haste samba']) and buffactive.march == 1 ) or  -- MG or haste + 1 march
  927.                ( buffactive[580] ) or  -- geo haste
  928.                ( buffactive.haste and buffactive['Might Guard'] ) then  -- haste with MG
  929.             add_to_chat(8, '-------------Haste 30%-------------')
  930.             classes.CustomMeleeGroups:append('Haste_30')
  931.         elseif  ( (buffactive['haste samba']) and
  932.                 (buffactive.haste or buffactive.march == 1 or buffactive['Might Guard']) ) then
  933.             classes.CustomMeleeGroups:append('Haste_25')
  934.         elseif buffactive.haste or buffactive['Might Guard'] or buffactive.march == 1 then
  935.             add_to_chat(8, '-------------Haste 15%-------------')
  936.             classes.CustomMeleeGroups:append('Haste_15')
  937.         end
  938.     end
  939. end
  940.  
  941.  
  942.  
  943. -- Automatically use Presto. The working code.
  944. function job_pretarget(spell, action, spellMap, eventArgs)
  945.     if spell.type == 'Step' then
  946.         local allRecasts = windower.ffxi.get_ability_recasts()
  947.         local prestoCooldown = allRecasts[236]
  948.         local under5FMs = not buffactive['Finishing Move 6'] and not buffactive['Finishing Move 7']
  949.          
  950.         if player.main_job_level >= 77 and prestoCooldown < 1 and under5FMs then
  951.             cast_delay(1.1)
  952.             send_command('input /ja "Presto" <me>')
  953.         end
  954.     end
  955. end
  956.  
  957. --Custom hook
  958.  
  959.  
  960.  
  961. -- Select default macro book on initial load or subjob change.
  962. function select_default_macro_book()
  963.     -- Default macro set/book
  964.     if player.sub_job == 'WAR' then
  965.         set_macro_page(1, 15)
  966.     elseif player.sub_job == 'NIN' then
  967.         set_macro_page(1, 15)
  968.     elseif player.sub_job == 'SAM' then
  969.         set_macro_page(1, 15)
  970.     else
  971.         set_macro_page(1, 15)
  972.     end
  973. end
Advertisement
Add Comment
Please, Sign In to add comment