Advertisement
KGrinols

Cambion_Dnc

Jan 5th, 2019
9,248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 38.22 KB | None | 0 0
  1. -- Original: Motenten / Modified: Arislan
  2. -- Haste/DW Detection Requires Gearinfo Addon
  3.  
  4. -- Initialization function for this job file.
  5. function get_sets()
  6.     mote_include_version = 2
  7.  
  8.     -- Load and initialize the include file.
  9.     include('Mote-Include.lua')
  10. end
  11.  
  12. -- Setup variables that are user-independent.  state.Buff vars initialized here will automatically be tracked.
  13. function job_setup()
  14.     state.Buff['Climactic Flourish'] = buffactive['climactic flourish'] or false
  15.     state.Buff['Sneak Attack'] = buffactive['sneak attack'] or false
  16.  
  17.     state.MainStep = M{['description']='Main Step', 'Box Step', 'Quickstep', 'Feather Step', 'Stutter Step'}
  18.     state.AltStep = M{['description']='Alt Step', 'Quickstep', 'Feather Step', 'Stutter Step', 'Box Step'}
  19.     state.UseAltStep = M(false, 'Use Alt Step')
  20.     state.SelectStepTarget = M(false, 'Select Step Target')
  21.     state.IgnoreTargetting = M(true, 'Ignore Targetting')
  22.  
  23.     state.ClosedPosition = M(false, 'Closed Position')
  24.  
  25.     state.CurrentStep = M{['description']='Current Step', 'Main', 'Alt'}
  26. --  state.SkillchainPending = M(false, 'Skillchain Pending')
  27.  
  28.     state.CP = M(false, "Capacity Points Mode")
  29.  
  30.     lockstyleset = 1
  31. end
  32.  
  33. -------------------------------------------------------------------------------------------------------------------
  34. -- User setup functions for this job.
  35. -------------------------------------------------------------------------------------------------------------------
  36.  
  37. -- Gear Modes
  38. function user_setup()
  39.     state.OffenseMode:options('Normal', 'LowAcc', 'MidAcc', 'HighAcc')
  40.     state.HybridMode:options('Normal', 'HIGH', 'MID', 'LOW')
  41.     state.WeaponskillMode:options('Normal', 'Acc')
  42.    
  43. -- Allows the use of Ctrl + ~ and Alt + ~ for 2 more macros of your choice.
  44.     send_command('bind ^` input /ja "Chocobo Jig II" <me>') --Ctrl'~'
  45.     send_command('bind !` input /ja "Spectral Jig" <me>') --Alt'~'
  46.     send_command('bind f9 gs c cycle OffenseMode') --F9
  47.     send_command('bind ^f9 gs c cycle WeaponSkillMode') --Ctrl'F9'
  48.     send_command('bind f10 gs c cycle HybridMode') --F10
  49.     send_command('bind f11 gs c cycle mainstep') --F11
  50.     send_command('bind @c gs c toggle CP') --WindowKey'C'
  51.  
  52.     select_default_macro_book()
  53.     set_lockstyle()
  54.  
  55.     Haste = 0
  56.     DW_needed = 0
  57.     DW = false
  58.     moving = false
  59.     update_combat_form()
  60.     determine_haste_group()
  61. end
  62.  
  63. -- Erases the Key Binds above when you switch to another job.
  64. function user_unload()
  65.     send_command('unbind ^`')
  66.     send_command('unbind !`')
  67.     send_command('unbind !-')
  68.     send_command('unbind ^=')
  69.     send_command('unbind f11')
  70.     send_command('bind @c')
  71. end
  72.  
  73. -- Define sets and vars used by this job file.
  74. function init_gear_sets()
  75.  
  76.     ------------------------------------------------------------------------------------------------
  77.     ---------------------------------------- Precast Sets ------------------------------------------
  78.     ------------------------------------------------------------------------------------------------
  79.  
  80.     sets.Enmity = {head="Highwing Helm",neck="Unmoving Collar +1",hands="Kurys Gloves",ear2="Friomisi Earring",ring1="Petrov Ring",body="Emet Harness +1",legs="Samnuha Tights",feet="Ahosi Leggings"}
  81.  
  82.     sets.precast.JA['Provoke'] = sets.Enmity
  83.     sets.precast.JA['No Foot Rise'] = {body="Horos Casaque +2"}
  84.     sets.precast.JA['Trance'] = {head="Horos Tiara +3"}
  85.  
  86.     sets.precast.Waltz = {ammo="Yamarang",
  87.         head="Anwig Salade",
  88.         neck="Unmoving Collar +1",
  89.         lear="Handler's Earring",
  90.         body="Maxixi Casaque +2",
  91.         hands={ name="Herculean Gloves", augments={'Accuracy+14','"Waltz" potency +11%','DEX+9','Attack+9',}},
  92.         ring1="Asklepian Ring",
  93.         ring2="Carbuncle Ring",
  94.         back="Toetapper Mantle",
  95.         waist="Aristo Belt",
  96.         legs="Dashing Subligar",
  97.         feet="Maxixi Toe shoes +1"}
  98.  
  99.     sets.precast.WaltzSelf = set_combine(sets.precast.Waltz, {ring1="Asklepian Ring"})
  100.     sets.precast.Waltz['Healing Waltz'] = {}
  101.     sets.precast.Samba = {head="Maxixi Tiara +1",body="Mummu Jacket +2",back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}}}
  102.     sets.precast.Jig = {feet="Maxixi Toe shoes +1",legs="Horos Tights +3"}
  103.  
  104.     sets.precast.Step = {ammo="Yamarang",neck="Ej Necklace",waist="Eschan Stone",back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}},feet="Horos T. Shoes +2"}
  105.     sets.precast.Step['Feather Step'] = set_combine(sets.precast.Step, {})
  106.    
  107.     sets.precast.Flourish1 = {}
  108.     sets.precast.Flourish1['Animated Flourish'] = sets.Enmity
  109.     sets.precast.Flourish1['Violent Flourish'] = {ammo="Yamarang",body="Horos Casaque +2",waist="Eschan Stone",feet={ name="Herculean Boots", augments={'Accuracy+23 Attack+23','"Store TP"+2','STR+15','Accuracy+15','Attack+4',}}}
  110.     sets.precast.Flourish1['Desperate Flourish'] = {}
  111.  
  112.     sets.precast.Flourish2 = {}
  113.     sets.precast.Flourish2['Reverse Flourish'] = {hands="Macu. Bangles +1",back="Toetapper Mantle"}
  114.    
  115.     sets.precast.Flourish3 = {}
  116.     sets.precast.Flourish3['Striking Flourish'] = {body="Macu. Casaque +1"}
  117.     sets.precast.Flourish3['Climactic Flourish'] = {head="Maculele Tiara +1",}
  118.  
  119.     sets.precast.FC = {ammo="Impatiens",ear2="Loquacious Earring"}
  120.  
  121.     sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  122.  
  123.     ------------------------------------------------------------------------------------------------
  124.     ------------------------------------- Weapon Skill Sets ----------------------------------------
  125.     ------------------------------------------------------------------------------------------------
  126.  
  127.     sets.precast.WS = {
  128.         ammo="Ginsen",
  129.         head="Adhemar Bonnet",
  130.         neck="Asperity Necklace",
  131.         ear1="Brutal Earring",
  132.         ear2="Sherida Earring",
  133.         body="Rawhide Vest",
  134.         hands={ name="Herculean Gloves", augments={'Accuracy+25 Attack+25','"Triple Atk."+3','STR+4','Accuracy+11','Attack+12',}},
  135.         ring1="Epona's Ring",
  136.         ring2="Ilabrat Ring",
  137.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}},
  138.         waist="Fotia Belt",
  139.         legs="Samnuha Tights",
  140.         feet={ name="Herculean Boots", augments={'Accuracy+23 Attack+23','"Store TP"+2','STR+15','Accuracy+15','Attack+4',}}
  141.         }
  142.  
  143.     sets.precast.WS.Acc = set_combine(sets.precast.WS, {})
  144.  
  145.     sets.precast.WS.Critical = {body="Meg. Cuirie +2"}
  146.  
  147.     sets.precast.WS['Exenterator'] = {}
  148.  
  149.     sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {})
  150.  
  151.     sets.precast.WS['Pyrrhic Kleos'] = {ammo="Ginsen",
  152.         head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},
  153.         neck="Aqua Gorget",
  154.         left_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
  155.         right_ear="Tati Earring",
  156.         body="Rawhide Vest",
  157.         hands={ name="Herculean Gloves", augments={'Accuracy+25 Attack+25','"Triple Atk."+3','STR+4','Accuracy+11','Attack+12',}},
  158.         left_ring="Epona's Ring",
  159.         right_ring="Ilabrat Ring",
  160.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}},
  161.         waist="Fotia Belt",
  162.         legs="Lustratio Subligar",
  163.         feet={ name="Herculean Boots", augments={'Accuracy+23 Attack+23','"Store TP"+2','STR+15','Accuracy+15','Attack+4',}}}
  164.  
  165.     sets.precast.WS['Pyrrhic Kleos'].Acc = set_combine(sets.precast.WS['Pyrrhic Kleos'], {})
  166.  
  167.     sets.precast.WS['Evisceration'] = {
  168.         ammo="Charis Feather",
  169.         head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},
  170.         neck="Soil Gorget",
  171.         left_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
  172.         right_ear="Brutal Earring",
  173.         body={ name="Rawhide Vest", augments={'DEX+10','STR+7','INT+7',}},
  174.         hands={ name="Herculean Gloves", augments={'Crit.hit rate+5','Attack+15',}},
  175.         left_ring="Epona's Ring",
  176.         right_ring="Apate Ring",
  177.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}},
  178.         waist="Fotia Belt",
  179.         legs="Lustratio Subligar",
  180.         feet={ name="Herculean Boots", augments={'Attack+29','Crit.hit rate+5','STR+2',}}
  181.         }
  182.  
  183.     sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {})
  184.  
  185.     sets.precast.WS['Rudra\'s Storm'] = {
  186.         ammo="Charis Feather",
  187.         head="Horos Tiara +3",
  188.         body="Horos Casaque +2",
  189.         hands="Meg. Gloves +2",
  190.         legs="Horos Tights +3",
  191.         feet={ name="Herculean Boots", augments={'Attack+29','Weapon skill damage +5%','DEX+8','Accuracy+7',}},
  192.         neck="Caro Necklace",
  193.         waist="Artful Belt +1",
  194.         left_ear="Sherida Earring",
  195.         right_ear="Moonshade Earring",
  196.         left_ring="Epona's Ring",
  197.         right_ring="Ilabrat Ring",
  198.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Weapon skill damage +10%'}}
  199.         }
  200.  
  201.     sets.precast.WS['Rudra\'s Storm'].Acc = set_combine(sets.precast.WS['Rudra\'s Storm'], {})
  202.  
  203.     sets.precast.WS['Aeolian Edge'] = {
  204.         ammo="Yamarang",
  205.         head={ name="Herculean Helm", augments={'"Mag.Atk.Bns."+23','"Store TP"+2','MND+9','Mag. Acc.+15',}},
  206.         body={ name="Samnuha Coat", augments={'Mag. Acc.+13','"Mag.Atk.Bns."+14','"Fast Cast"+3','"Dual Wield"+4',}},
  207.         hands="Leyline Gloves",
  208.         legs={ name="Herculean Trousers", augments={'"Mag.Atk.Bns."+23','Enmity-3','STR+13','Mag. Acc.+11',}},
  209.         feet={ name="Herculean Boots", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Enmity-3','INT+1','Mag. Acc.+9','"Mag.Atk.Bns."+8',}},
  210.         neck="Sanctity Necklace",
  211.         waist="Eschan Stone",
  212.         left_ear="Friomisi Earring",
  213.         right_ear="Hecate's Earring",
  214.         left_ring="Acumen Ring",
  215.         right_ring="Ilabrat Ring",
  216.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}}
  217.         }
  218.  
  219.     ------------------------------------------------------------------------------------------------
  220.     ---------------------------------------- Midcast Sets ------------------------------------------
  221.     ------------------------------------------------------------------------------------------------
  222.  
  223.     sets.midcast.FastRecast = sets.precast.FC
  224.     sets.midcast.SpellInterrupt = {}
  225.     sets.midcast.Utsusemi = sets.midcast.SpellInterrupt
  226.  
  227.     ------------------------------------------------------------------------------------------------
  228.     ----------------------------------------- Idle Sets --------------------------------------------
  229.     ------------------------------------------------------------------------------------------------
  230.  
  231.     sets.idle = {
  232.         ammo="Staunch Tathlum",
  233.         head={ name="Herculean Helm", augments={'Accuracy+24 Attack+24','Damage taken-3%',}},
  234.         neck="Loricate Torque +1",
  235.         ear1="Sherida Earring",
  236.         ear2="Telos Earring",
  237.         body={ name="Herculean Vest", augments={'Damage taken-3%','AGI+9','Accuracy+13','Attack+9',}},
  238.         hands={ name="Herculean Gloves", augments={'Attack+15','Damage taken-3%','STR+2','Accuracy+15',}},
  239.         ring2="Vocane Ring",
  240.         ring1="Defending Ring",
  241.         back="Moonbeam Cape",
  242.         waist="Windbuffet Belt +1",
  243.         legs="Mummu Kecks +1",
  244.         feet="Tandava Crackows"
  245.         }
  246.  
  247.     sets.idle.Town = {
  248.         ammo="Yamarang",
  249.         head="Horos Tiara +3",
  250.         neck="Anu Torque",
  251.         ear1="Sherida Earring",
  252.         ear2="Telos Earring",
  253.         body="Horos Casaque +2",
  254.         hands="Adhemar Wrist. +1",
  255.         ring2="Epona's Ring",
  256.         ring1="Ilabrat Ring",
  257.         back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10'}},
  258.         waist="Windbuffet Belt +1",
  259.         legs="Horos Tights +3",
  260.         feet="Tandava Crackows"
  261.         }
  262.  
  263.     ------------------------------------------------------------------------------------------------
  264.     ---------------------------------------- Engaged Sets ------------------------------------------
  265.     ------------------------------------------------------------------------------------------------
  266. -- This is a Set that would only be used when you are NOT Dual Wielding.  Most likely Airy Buckler Builds with Fencer as War Sub.
  267. -- There are no haste parameters set for this build, because you wouldn't be juggling DW gear, you would always use the same gear, other than Damage Taken and Accuracy sets which ARE included below.
  268.    sets.engaged = {
  269.        }
  270.  
  271.    ------------------------------------------------------------------------------------------------
  272.    -------------------------------------- Dual Wield Sets -----------------------------------------
  273.     ------------------------------------------------------------------------------------------------
  274.    -- * DNC Native DW Trait: 30% DW
  275.    -- * DNC Job Points DW Gift: 5% DW
  276.  
  277.    -- No Magic Haste (39% DW to cap)
  278.    sets.engaged.DW = {
  279.         ammo="Ginsen",
  280.        head="Adhemar Bonnet",
  281.         neck="Charis Necklace", --5
  282.         ear1="Dudgeon Earring", --3
  283.         ear2="Heartseeker Earring", --4
  284.        body="Maculele Casaque +1", --11
  285.         hands="Adhemar Wrist. +1",
  286.         ring1="Hetairoi Ring",
  287.         ring2="Epona's Ring",
  288.        back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}},
  289.         waist="Patentia Sash", --5
  290.         legs="Samnuha Tights",
  291.         feet="Horos Toe Shoes +2"
  292.        } -- 28%
  293.  
  294.    -- 15% Magic Haste (32% DW to cap)
  295.    sets.engaged.DW.LowHaste = {
  296.         ammo="Ginsen",
  297.        head="Adhemar Bonnet",
  298.         neck="Charis Necklace", --5
  299.         ear1="Dudgeon Earring", --3
  300.         ear2="Heartseeker Earring", --4
  301.        body="Maculele Casaque +1", --11
  302.         hands="Adhemar Wrist. +1",
  303.         ring1="Hetairoi Ring",
  304.         ring2="Epona's Ring",
  305.        back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}},
  306.         waist="Patentia Sash", --5
  307.         legs="Samnuha Tights",
  308.         feet="Horos Toe Shoes +2"
  309.        } -- 28%
  310.  
  311.    -- 30% Magic Haste (21% DW to cap)
  312.    sets.engaged.DW.MidHaste = {
  313.         ammo="Ginsen",
  314.        head="Adhemar Bonnet",
  315.         neck="Charis Necklace", --5
  316.         ear1="Brutal Earring",
  317.         ear2="Sherida Earring",
  318.        body="Maculele Casaque +1", --11
  319.         hands="Adhemar Wrist. +1",
  320.         ring1="Hetairoi Ring",
  321.         ring2="Epona's Ring",
  322.        back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}},
  323.         waist="Patentia Sash", --5
  324.         legs="Samnuha Tights",
  325.         feet="Horos Toe Shoes +2"
  326.        } -- 21%
  327.  
  328.    -- 35% Magic Haste (16% DW to cap)
  329.    sets.engaged.DW.HighHaste = {
  330.        ammo="Ginsen",
  331.        head="Adhemar Bonnet",
  332.         neck="Anu Torque",
  333.         ear1="Brutal Earring",
  334.         ear2="Sherida Earring",
  335.        body="Maculele Casaque +1", --11
  336.         hands="Adhemar Wrist. +1",
  337.         ring1="Hetairoi Ring",
  338.         ring2="Epona's Ring",
  339.        back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}},
  340.         waist="Patentia Sash", --5
  341.         legs="Samnuha Tights",
  342.         feet="Horos Toe Shoes +2"
  343.         } -- 16% Gear
  344.  
  345.    -- 45% Magic Haste (1% DW to cap)
  346.    sets.engaged.DW.MaxHaste = {
  347.        ammo="Charis Feather",
  348.        head="Adhemar Bonnet",
  349.         neck="Anu Torque",
  350.         ear1="Brutal Earring",
  351.         ear2="Sherida Earring",
  352.        body="Mummu Jacket +2",
  353.         hands="Adhemar Wrist. +1",
  354.         ring1="Hetairoi Ring",
  355.         ring2="Epona's Ring",
  356.        back={ name="Senuna's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}},
  357.         waist="Windbuffet Belt +1",
  358.         legs="Samnuha Tights",
  359.         feet="Horos Toe Shoes +2"
  360.        } -- 0%
  361.    
  362.     ------------------------------------------------------------------------------------------------
  363.    --------------------------------------- Accuracy Sets ------------------------------------------
  364.    ------------------------------------------------------------------------------------------------
  365. -- Define three tiers of Accuracy.  These sets are cycled with the F9 Button to increase accuracy in stages as desired.
  366.    sets.engaged.Acc1 = {head="Horos Tiara +3"}
  367.    sets.engaged.Acc2 = {head="Horos Tiara +3",legs="Mummu Kecks +1",ammo="Yamarang"}
  368.    sets.engaged.Acc3 = {head="Horos Tiara +3",legs="Mummu Kecks +1",ammo="Yamarang",neck="Ej Necklace",waist="Eschan Stone",feet={ name="Herculean Boots", augments={'Accuracy+23 Attack+23','"Store TP"+2','STR+15','Accuracy+15','Attack+4',}}}
  369. -- Base Shield
  370.     sets.engaged.LowAcc = set_combine(sets.engaged, sets.engaged.Acc1)
  371.    sets.engaged.MidAcc = set_combine(sets.engaged, sets.engaged.Acc2)
  372.    sets.engaged.HighAcc = set_combine(sets.engaged, sets.engaged.Acc3)
  373. -- Base DW
  374.    sets.engaged.DW.LowAcc = set_combine(sets.engaged.DW, sets.engaged.Acc1)
  375.    sets.engaged.DW.MidAcc = set_combine(sets.engaged.DW, sets.engaged.Acc2)
  376.    sets.engaged.DW.HighAcc = set_combine(sets.engaged.DW, sets.engaged.Acc3)
  377. -- LowHaste DW
  378.     sets.engaged.DW.LowAcc.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.Acc1)
  379.    sets.engaged.DW.MidAcc.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.Acc2)
  380.    sets.engaged.DW.HighAcc.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.Acc3)
  381. -- MidHaste DW
  382.    sets.engaged.DW.LowAcc.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.Acc1)
  383.    sets.engaged.DW.MidAcc.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.Acc2)
  384.     sets.engaged.DW.HighAcc.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.Acc3)
  385. -- HighHaste DW
  386.     sets.engaged.DW.LowAcc.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.Acc1)
  387.    sets.engaged.DW.MidAcc.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.Acc2)
  388.    sets.engaged.DW.HighAcc.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.Acc3)
  389. -- HighHaste DW
  390.     sets.engaged.DW.LowAcc.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.LowAcc)
  391.    sets.engaged.DW.MidAcc.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.MidAcc)
  392.    sets.engaged.DW.HighAcc.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.HighAcc)
  393.  
  394.    ------------------------------------------------------------------------------------------------
  395.    ---------------------------------------- Hybrid Sets -------------------------------------------
  396.    ------------------------------------------------------------------------------------------------
  397. -- Define three tiers of Defense Taken.  These sets are cycled with the F10 Button. DT1-16%, DT2-28%, DT3-47%
  398.    sets.engaged.DT1 = {neck="Loricate Torque +1",ring1="Defending Ring"}
  399.     sets.engaged.DT2 = {neck="Loricate Torque +1",ring1="Defending Ring",ring2="Vocane Ring",back="Moonbeam Cape"}
  400.     sets.engaged.DT3 = {head={ name="Herculean Helm", augments={'Accuracy+24 Attack+24','Damage taken-3%',}},neck="Loricate Torque +1",hands={ name="Herculean Gloves", augments={'Attack+15','Damage taken-3%','STR+2','Accuracy+15',}},ring1="Defending Ring",ring2="Vocane Ring",back="Moonbeam Cape",waist="Flume Belt",legs="Mummu Kecks +1",feet={ name="Herculean Boots", augments={'Accuracy+15','Damage taken-3%','Attack+4',}},ammo="Staunch Tathlum",body={ name="Herculean Vest", augments={'Damage taken-3%','AGI+9','Accuracy+13','Attack+9',}}}
  401.  
  402. -- Shield Base
  403.    sets.engaged.LOW = set_combine(sets.engaged, sets.engaged.DT1)
  404.    sets.engaged.LowAcc.LOW = set_combine(sets.engaged.LowAcc, sets.engaged.DT1)
  405.    sets.engaged.MidAcc.LOW = set_combine(sets.engaged.MidAcc, sets.engaged.DT1)
  406.    sets.engaged.HighAcc.LOW = set_combine(sets.engaged.HighAcc, sets.engaged.DT1)
  407.    
  408.     sets.engaged.MID = set_combine(sets.engaged, sets.engaged.DT2)
  409.    sets.engaged.LowAcc.MID = set_combine(sets.engaged.LowAcc, sets.engaged.DT2)
  410.    sets.engaged.MidAcc.MID = set_combine(sets.engaged.MidAcc, sets.engaged.DT2)
  411.    sets.engaged.HighAcc.MID = set_combine(sets.engaged.HighAcc, sets.engaged.DT2)
  412.    
  413.     sets.engaged.HIGH = set_combine(sets.engaged, sets.engaged.DT3)
  414.    sets.engaged.LowAcc.HIGH = set_combine(sets.engaged.LowAcc, sets.engaged.DT3)
  415.    sets.engaged.MidAcc.HIGH = set_combine(sets.engaged.MidAcc, sets.engaged.DT3)
  416.     sets.engaged.HighAcc.HIGH = set_combine(sets.engaged.HighAcc, sets.engaged.DT3)
  417. -- No Haste DW
  418.    sets.engaged.DW.LOW = set_combine(sets.engaged.DW, sets.engaged.DT1)
  419.    sets.engaged.DW.LowAcc.LOW = set_combine(sets.engaged.DW.LowAcc, sets.engaged.DT1)
  420.    sets.engaged.DW.MidAcc.LOW = set_combine(sets.engaged.DW.MidAcc, sets.engaged.DT1)
  421.    sets.engaged.DW.HighAcc.LOW = set_combine(sets.engaged.DW.HighAcc, sets.engaged.DT1)
  422.    
  423.    sets.engaged.DW.MID = set_combine(sets.engaged.DW, sets.engaged.DT2)
  424.    sets.engaged.DW.LowAcc.MID = set_combine(sets.engaged.DW.LowAcc, sets.engaged.DT2)
  425.    sets.engaged.DW.MidAcc.MID = set_combine(sets.engaged.DW.MidAcc, sets.engaged.DT2)
  426.    sets.engaged.DW.HighAcc.MID = set_combine(sets.engaged.DW.HighAcc, sets.engaged.DT2)
  427.  
  428.    sets.engaged.DW.HIGH = set_combine(sets.engaged.DW, sets.engaged.DT3)
  429.    sets.engaged.DW.LowAcc.HIGH = set_combine(sets.engaged.DW.LowAcc, sets.engaged.DT3)
  430.    sets.engaged.DW.MidAcc.HIGH = set_combine(sets.engaged.DW.MidAcc, sets.engaged.DT3)
  431.     sets.engaged.DW.HighAcc.HIGH = set_combine(sets.engaged.DW.HighAcc, sets.engaged.DT3)  
  432. -- Low Haste DW
  433.    sets.engaged.DW.LOW.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT1)
  434.    sets.engaged.DW.LowAcc.LOW.LowHaste = set_combine(sets.engaged.DW.LowAcc.LowHaste, sets.engaged.DT1)
  435.    sets.engaged.DW.MidAcc.LOW.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.DT1)
  436.    sets.engaged.DW.HighAcc.LOW.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.DT1)
  437.    
  438.    sets.engaged.DW.MID.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT2)
  439.    sets.engaged.DW.LowAcc.MID.LowHaste = set_combine(sets.engaged.DW.LowAcc.LowHaste, sets.engaged.DT2)
  440.    sets.engaged.DW.MidAcc.MID.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.DT2)
  441.    sets.engaged.DW.HighAcc.MID.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.DT2)
  442.    
  443.     sets.engaged.DW.HIGH.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT3)
  444.    sets.engaged.DW.LowAcc.HIGH.LowHaste = set_combine(sets.engaged.DW.LowAcc.LowHaste, sets.engaged.DT3)
  445.    sets.engaged.DW.MidAcc.HIGH.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.DT3)
  446.    sets.engaged.DW.HighAcc.HIGH.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.DT3)
  447. -- Mid Haste
  448.    sets.engaged.DW.LOW.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT1)
  449.    sets.engaged.DW.LowAcc.LOW.MidHaste = set_combine(sets.engaged.DW.LowAcc.MidHaste, sets.engaged.DT1)
  450.    sets.engaged.DW.MidAcc.LOW.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.DT1)
  451.    sets.engaged.DW.HighAcc.LOW.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.DT1)
  452.    
  453.    sets.engaged.DW.MID.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT2)
  454.    sets.engaged.DW.LowAcc.MID.MidHaste = set_combine(sets.engaged.DW.LowAcc.MidHaste, sets.engaged.DT2)
  455.    sets.engaged.DW.MidAcc.MID.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.DT2)
  456.    sets.engaged.DW.HighAcc.MID.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.DT2)
  457.  
  458.    sets.engaged.DW.HIGH.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT3)
  459.    sets.engaged.DW.LowAcc.HIGH.MidHaste = set_combine(sets.engaged.DW.LowAcc.MidHaste, sets.engaged.DT3)
  460.    sets.engaged.DW.MidAcc.HIGH.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.DT3)
  461.     sets.engaged.DW.HighAcc.HIGH.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.DT3)    
  462. -- High Haste
  463.    sets.engaged.DW.LOW.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT1)
  464.    sets.engaged.DW.LowAcc.LOW.HighHaste = set_combine(sets.engaged.DW.LowAcc.HighHaste, sets.engaged.DT1)
  465.    sets.engaged.DW.MidAcc.LOW.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.DT1)
  466.    sets.engaged.DW.HighAcc.LOW.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.DT1)
  467.    
  468.     sets.engaged.DW.MID.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT2)
  469.    sets.engaged.DW.LowAcc.MID.HighHaste = set_combine(sets.engaged.DW.LowAcc.HighHaste, sets.engaged.DT2)
  470.    sets.engaged.DW.MidAcc.MID.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.DT2)
  471.    sets.engaged.DW.HighAcc.MID.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.DT2)
  472.    
  473.     sets.engaged.DW.HIGH.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT3)
  474.    sets.engaged.DW.LowAcc.HIGH.HighHaste = set_combine(sets.engaged.DW.LowAcc.HighHaste, sets.engaged.DT3)
  475.    sets.engaged.DW.MidAcc.HIGH.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.DT3)
  476.    sets.engaged.DW.HighAcc.HIGH.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.DT3)
  477. -- Max Haste
  478.    sets.engaged.DW.LOW.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT1)
  479.    sets.engaged.DW.LowAcc.LOW.MaxHaste = set_combine(sets.engaged.DW.LowAcc.MaxHaste, sets.engaged.DT1)
  480.    sets.engaged.DW.MidAcc.LOW.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.DT1)
  481.    sets.engaged.DW.HighAcc.LOW.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.DT1)
  482.    
  483.     sets.engaged.DW.MID.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT2)
  484.    sets.engaged.DW.LowAcc.MID.MaxHaste = set_combine(sets.engaged.DW.LowAcc.MaxHaste, sets.engaged.DT2)
  485.    sets.engaged.DW.MidAcc.MID.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.DT2)
  486.    sets.engaged.DW.HighAcc.MID.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.DT2)
  487.    
  488.    sets.engaged.DW.HIGH.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT3)
  489.    sets.engaged.DW.LowAcc.HIGH.MaxHaste = set_combine(sets.engaged.DW.LowAcc.MaxHaste, sets.engaged.DT3)
  490.    sets.engaged.DW.MidAcc.HIGH.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.DT3)
  491.     sets.engaged.DW.HighAcc.HIGH.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.DT3)
  492.  
  493.    ------------------------------------------------------------------------------------------------
  494.    ---------------------------------------- Special Sets ------------------------------------------
  495.    ------------------------------------------------------------------------------------------------
  496.  
  497. --  sets.buff['Saber Dance'] = {legs="Horos Tights +3"}
  498. --  sets.buff['Fan Dance'] = {body="Horos Bangles +1"}
  499.    sets.buff['Climactic Flourish'] = {head="Maculele Tiara +1"} --body="Meg. Cuirie +2"}
  500.    sets.buff['Closed Position'] = {feet="Horos T. Shoes +3"}
  501.  
  502.    sets.buff.Doom = {
  503.        neck="Nicander's Necklace", --20
  504.        ring1="Eshmun's Ring", --20
  505.        ring2="Eshmun's Ring", --20
  506.        waist="Gishdubar Sash", --10
  507.        }
  508.  
  509.    sets.CP = {back="Mecisto. Mantle"}
  510. --  sets.Reive = {neck="Ygnas's Resolve +1"}
  511.  
  512. end
  513.  
  514. -------------------------------------------------------------------------------------------------------------------
  515. -- Job-specific hooks for standard casting events.
  516. -------------------------------------------------------------------------------------------------------------------
  517.  
  518. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  519. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  520. function job_precast(spell, action, spellMap, eventArgs)
  521.     if spellMap == 'Utsusemi' then
  522.         if buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)'] then
  523.             cancel_spell()
  524.             add_to_chat(123, '**!! '..spell.english..' Canceled: [3+ IMAGES] !!**')
  525.             eventArgs.handled = true
  526.             return
  527.         elseif buffactive['Copy Image'] or buffactive['Copy Image (2)'] then
  528.             send_command('cancel 66; cancel 444; cancel Copy Image; cancel Copy Image (2)')
  529.         end
  530.     end
  531.    
  532. -- Used to overwrite Moonshade Earring if TP is more than 2750.
  533.     if spell.type == 'WeaponSkill' then
  534.         if player.tp > 2750 then
  535.         equip({right_ear = "Sherida Earring"})
  536.         end
  537.     end
  538.    
  539. -- Used to optimize Rudra's Storm when Climactic Flourish is active.
  540.    if spell.type == 'WeaponSkill' then
  541.        if spell.english == "Rudra's Storm" and buffactive['Climactic Flourish'] then
  542.             equip({head="Maculele Tiara +1", left_ear="Ishvara Earring"})
  543.        end
  544.    end
  545.    
  546. -- Forces Maculele Tiara +1 to override your WS Head slot if Climactic Flourish is active.  Corresponds with sets.buff['Climactic Flourish'].
  547.    if spell.type == "WeaponSkill" then
  548.        if state.Buff['Climactic Flourish'] then
  549.            equip(sets.buff['Climactic Flourish'])
  550.        end
  551.    end
  552. end
  553.  
  554. function job_post_precast(spell, action, spellMap, eventArgs)
  555.    if spell.type == "WeaponSkill" then
  556.        if state.Buff['Sneak Attack'] == true then
  557.            equip(sets.precast.WS.Critical)
  558.        end
  559.        if state.Buff['Climactic Flourish'] then
  560.            equip(sets.buff['Climactic Flourish'])
  561.        end
  562.    end
  563.    if spell.type=='Waltz' and spell.target.type == 'SELF' then
  564.        equip(sets.precast.WaltzSelf)
  565.    end
  566. end
  567.  
  568. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  569. function job_aftercast(spell, action, spellMap, eventArgs)
  570.    -- Weaponskills wipe SATA.  Turn those state vars off before default gearing is attempted.
  571.    if spell.type == 'WeaponSkill' and not spell.interrupted then
  572.        state.Buff['Sneak Attack'] = false
  573.    end
  574. end
  575.  
  576. -------------------------------------------------------------------------------------------------------------------
  577. -- Job-specific hooks for non-casting events.
  578. -------------------------------------------------------------------------------------------------------------------
  579. function job_buff_change(buff,gain)
  580.    if buff == 'Saber Dance' or buff == 'Climactic Flourish' or buff == 'Fan Dance' then
  581.        handle_equipping_gear(player.status)
  582.    end
  583.  
  584.    if buff == "doom" then
  585.        if gain then
  586.            equip(sets.buff.Doom)
  587.            send_command('@input /p Doomed.')
  588.             disable('ring1','ring2','waist','neck')
  589.        else
  590.            enable('ring1','ring2','waist','neck')
  591.            handle_equipping_gear(player.status)
  592.        end
  593.    end
  594.  
  595. end
  596.  
  597. -------------------------------------------------------------------------------------------------------------------
  598. -- User code that supplements standard library decisions.
  599. -------------------------------------------------------------------------------------------------------------------
  600. function job_handle_equipping_gear(playerStatus, eventArgs)
  601.    update_combat_form()
  602.    determine_haste_group()
  603. end
  604.  
  605. function job_update(cmdParams, eventArgs)
  606.    handle_equipping_gear(player.status)
  607. end
  608.  
  609. function update_combat_form()
  610.    if DW == true then
  611.        state.CombatForm:set('DW')
  612.    elseif DW == false then
  613.        state.CombatForm:reset()
  614.    end
  615. end
  616.  
  617. function get_custom_wsmode(spell, spellMap, defaut_wsmode)
  618.    local wsmode
  619.  
  620.    if state.Buff['Sneak Attack'] then
  621.        wsmode = 'SA'
  622.    end
  623.  
  624.    return wsmode
  625. end
  626.  
  627. function customize_idle_set(idleSet)
  628.    if state.CP.current == 'on' then
  629.        equip(sets.CP)
  630.        disable('back')
  631.    else
  632.        enable('back')
  633.    end
  634.  
  635.    return idleSet
  636. end
  637.  
  638. function customize_melee_set(meleeSet)
  639.    if state.Buff['Climactic Flourish'] then
  640.         meleeSet = set_combine(meleeSet, sets.buff['Climactic Flourish'])
  641.    end
  642.    if state.ClosedPosition.value == true then
  643.        meleeSet = set_combine(meleeSet, sets.buff['Closed Position'])
  644.    end
  645.  
  646.    return meleeSet
  647. end
  648.  
  649. -- Handle auto-targetting based on local setup.
  650. function job_auto_change_target(spell, action, spellMap, eventArgs)
  651.    if spell.type == 'Step' then
  652.        if state.IgnoreTargetting.value == true then
  653.            state.IgnoreTargetting:reset()
  654.            eventArgs.handled = true
  655.        end
  656.  
  657.        eventArgs.SelectNPCTargets = state.SelectStepTarget.value
  658.    end
  659. end
  660.  
  661.  
  662. -- Function to display the current relevant user state when doing an update.
  663. -- Set eventArgs.handled to true if display was handled, and you don't want the default info shown.
  664. function display_current_job_state(eventArgs)
  665.    local msg = '[ Melee'
  666.  
  667.    if state.CombatForm.has_value then
  668.        msg = msg .. ' (' .. state.CombatForm.value .. ')'
  669.    end
  670.  
  671.    msg = msg .. ': '
  672.  
  673.    msg = msg .. state.OffenseMode.value
  674.    if state.HybridMode.value ~= 'Normal' then
  675.        msg = msg .. '/' .. state.HybridMode.value
  676.    end
  677.    msg = msg .. ' ][ WS: ' .. state.WeaponskillMode.value .. ' ]'
  678.  
  679.    if state.DefenseMode.value ~= 'None' then
  680.        msg = msg .. '[ Defense: ' .. state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ' ]'
  681.    end
  682.  
  683.    if state.ClosedPosition.value then
  684.        msg = msg .. '[ Closed Position: ON ]'
  685.    end
  686.  
  687.    if state.Kiting.value then
  688.        msg = msg .. '[ Kiting Mode: ON ]'
  689.    end
  690.  
  691.    msg = msg .. '[ '..state.MainStep.current
  692.  
  693.    if state.UseAltStep.value == true then
  694.        msg = msg .. '/'..state.AltStep.current
  695.    end
  696.  
  697.    msg = msg .. ' ]'
  698.  
  699.    add_to_chat(060, msg)
  700.  
  701.    eventArgs.handled = true
  702. end
  703.  
  704.  
  705. -------------------------------------------------------------------------------------------------------------------
  706. -- User self-commands.
  707. -------------------------------------------------------------------------------------------------------------------
  708.  
  709. -------------------------------------------------------------------------------------------------------------------
  710. -- Utility functions specific to this job.
  711. -------------------------------------------------------------------------------------------------------------------
  712.  
  713. function determine_haste_group()
  714.    classes.CustomMeleeGroups:clear()
  715.    if DW == true then
  716.        if DW_needed <= 1 then
  717.            classes.CustomMeleeGroups:append('MaxHaste')
  718.        elseif DW_needed > 1 and DW_needed <= 9 then
  719.            classes.CustomMeleeGroups:append('HighHaste')
  720.        elseif DW_needed > 9 and DW_needed <= 21 then
  721.            classes.CustomMeleeGroups:append('MidHaste')
  722.        elseif DW_needed > 21 and DW_needed <= 39 then
  723.            classes.CustomMeleeGroups:append('LowHaste')
  724.        elseif DW_needed > 39 then
  725.            classes.CustomMeleeGroups:append('')
  726.        end
  727.    end
  728. end
  729.  
  730. function job_self_command(cmdParams, eventArgs)
  731.    if cmdParams[1] == 'step' then
  732.        if cmdParams[2] == 't' then
  733.            state.IgnoreTargetting:set()
  734.        end
  735.  
  736.        local doStep = ''
  737.        if state.UseAltStep.value == true then
  738.            doStep = state[state.CurrentStep.current..'Step'].current
  739.            state.CurrentStep:cycle()
  740.        else
  741.            doStep = state.MainStep.current
  742.        end
  743.  
  744.        send_command('@input /ja "'..doStep..'" <t>')
  745.    end
  746.    gearinfo(cmdParams, eventArgs)
  747. end
  748.  
  749. function gearinfo(cmdParams, eventArgs)
  750.    if cmdParams[1] == 'gearinfo' then
  751.        if type(tonumber(cmdParams[2])) == 'number' then
  752.            if tonumber(cmdParams[2]) ~= DW_needed then
  753.            DW_needed = tonumber(cmdParams[2])
  754.            DW = true
  755.            end
  756.        elseif type(cmdParams[2]) == 'string' then
  757.            if cmdParams[2] == 'false' then
  758.                 DW_needed = 0
  759.                DW = false
  760.             end
  761.        end
  762.        if type(tonumber(cmdParams[3])) == 'number' then
  763.             if tonumber(cmdParams[3]) ~= Haste then
  764.                 Haste = tonumber(cmdParams[3])
  765.            end
  766.        end
  767.        if type(cmdParams[4]) == 'string' then
  768.            if cmdParams[4] == 'true' then
  769.                moving = true
  770.            elseif cmdParams[4] == 'false' then
  771.                moving = false
  772.            end
  773.        end
  774.        if not midaction() then
  775.            job_update()
  776.        end
  777.    end
  778. end
  779.  
  780. -- If you attempt to use a step, this will automatically use Presto if you are under 5 Finishing moves and resend step.
  781. function job_pretarget(spell, action, spellMap, eventArgs)
  782.    if spell.type == 'Step' then
  783.        local allRecasts = windower.ffxi.get_ability_recasts()
  784.        local prestoCooldown = allRecasts[236]
  785.        local under5FMs = not buffactive['Finishing Move 5'] and not buffactive['Finishing Move (6+)']
  786.        
  787.        if player.main_job_level >= 77 and prestoCooldown < 1 and under5FMs then
  788.            cast_delay(1.1)
  789.            send_command('input /ja "Presto" <me>')
  790.        end
  791.    end
  792.    
  793. -- If you attempt to use Climactic Flourish with zero finishing moves, this will automatically use Box Step and then resend Climactic Flourish.
  794.         local under1FMs = not buffactive['Finishing Move 1'] and not buffactive['Finishing Move 2'] and not buffactive['Finishing Move 3'] and not buffactive['Finishing Move 4'] and not buffactive['Finishing Move 5'] and not buffactive['Finishing Move (6+)']
  795.  
  796.    if spell.english == "Climactic Flourish" and under1FMs then
  797.            cast_delay(1.9)
  798.            send_command('input /ja "Box Step" <t>')
  799.     end
  800. end
  801.  
  802. -- My Waltz Rules to Overwrite Mote's
  803. -- My Current Waltz Amounts: I:372 II:697 III:1134
  804. function refine_waltz(spell, action, spellMap, eventArgs)
  805.    if missingHP ~= nil then
  806.        if player.main_job == 'DNC' then
  807.            if missingHP < 40 and spell.target.name == player.name then
  808.                -- Not worth curing yourself for so little.
  809.                -- Don't block when curing others to allow for waking them up.
  810.                add_to_chat(122,'Full HP!')
  811.                eventArgs.cancel = true
  812.                return
  813.            elseif missingHP < 475 then
  814.                newWaltz = 'Curing Waltz'
  815.                waltzID = 190
  816.            elseif missingHP < 850 then
  817.                newWaltz = 'Curing Waltz II'
  818.                waltzID = 191
  819.            else
  820.                newWaltz = 'Curing Waltz III'
  821.                waltzID = 192
  822.            end
  823.        else
  824.            -- Not dnc main or sub; ignore
  825.            return
  826.        end
  827.    end
  828. end
  829.  
  830. -- Automatically loads a Macro Set by: (Pallet,Book)
  831. function select_default_macro_book()
  832.    if player.sub_job == 'SAM' then
  833.        set_macro_page(1, 5)
  834.    elseif player.sub_job == 'WAR' then
  835.        set_macro_page(2, 5)
  836.    elseif player.sub_job == 'RUN' then
  837.        set_macro_page(3, 5)    
  838.    elseif player.sub_job == 'BLU' then
  839.        set_macro_page(4, 5)
  840.    elseif player.sub_job == 'THF' then
  841.        set_macro_page(9, 5)
  842.    elseif player.sub_job == 'NIN' then
  843.        set_macro_page(10, 5)
  844.    else
  845.        set_macro_page(1, 5)
  846.    end
  847. end
  848.  
  849. function set_lockstyle()
  850.    send_command('wait 2; input /lockstyleset ' .. lockstyleset)
  851. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement