Merlinffxi

Rng

Apr 2nd, 2014
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 26.64 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Initialization function that defines sets and variables to be used.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. -- IMPORTANT: Make sure to also get the Mote-Include.lua file to go with this.
  6.  
  7. --[[
  8.     gs c toggle luzaf -- Toggles use of Luzaf Ring on and off
  9.    
  10.     Offense mode is melee or ranged.  Used ranged offense mode if you are engaged
  11.     for ranged weaponskills, but not actually meleeing.
  12.     Acc on offense mode (which is intended for melee) will currently use .Acc weaponskill
  13.     mode for both melee and ranged weaponskills.  Need to fix that in core.
  14. --]]
  15.  
  16.  
  17. -- Initialization function for this job file.
  18. function get_sets()
  19.     -- Load and initialize the include file.
  20.     include('Mote-Include.lua')
  21.    
  22.     --Default Macro Set for RNG
  23.         send_command('input /macro book 14;wait .1;input /macro set 8')
  24.        
  25.         ranged_ws = S{
  26.             "Hot Shot","Split Shot","Sniper Shot","Slug Shot","Blast Shot","Heavy Shot","Detonator",
  27.             "Numbing Shot","Last Stand","Coronach","Trueflight","Wildfire","Flaming Arrow",
  28.             "Piercing Arrow","Dulling Arrow","Sidewinder","Blast Arrow","Arching Arrow",
  29.             "Empyreal Arrow","Refulgent Arrow","Apex Arrow","Namas Arrow","Jishnu's Radiance"}
  30. end
  31.  
  32. -- Called when this job file is unloaded (eg: job change)
  33. function file_unload()
  34.     if binds_on_unload then
  35.         binds_on_unload()
  36.     end
  37.  
  38.     windower.send_command('unbind ^`')
  39.     windower.send_command('unbind !`')
  40. end
  41.  
  42. -- Define sets and vars used by this job file.
  43. function init_gear_sets()
  44.     -- Additional local binds
  45.  
  46.     -- Cor doesn't use hybrid defense mode; using that for ranged mode adjustments.
  47.     windower.send_command('bind ^f9 gs c cycle RangedMode')
  48.  
  49.     windower.send_command('bind ^` input /ja "Double-up" <me>')
  50.     windower.send_command('bind !` input /ja "Bolter\'s Roll" <me>')
  51.  
  52.  
  53.     -- Options: Override default values
  54.     options.OffenseModes = {'Ranged', 'Melee', 'Acc', 'MAXAcc', 'DW'}
  55.     options.RangedModes = {'Normal', 'Acc', 'MAXAcc'}
  56.     options.WeaponskillModes = {'Normal', 'WAcc', 'Att', 'Mod'}
  57.     options.CastingModes = {'Normal', 'Resistant'}
  58.     options.IdleModes = {'Normal'}
  59.     options.RestingModes = {'Normal'}
  60.     options.PhysicalDefenseModes = {'PDT'}
  61.     options.MagicalDefenseModes = {'MDT'}
  62.  
  63.     state.Defense.PhysicalMode = 'PDT'
  64.  
  65.    
  66.     gear.RAbullet = "Achiyal. Bullet"
  67.     gear.WSbullet = "Achiyal. Bullet"
  68.     gear.MAbullet = "Orichalc. Bullet"
  69.     gear.QDbullet = "Adlivun Bullet"
  70.     state.warned = True
  71.     options.ammo_warning_limit = 10
  72.    
  73.     --------------------------------------
  74.     -- Start defining the sets
  75.     --------------------------------------
  76.    
  77.     -- Precast Sets
  78.  
  79.     -- Precast sets to enhance JAs
  80.     sets.precast.JA['Bounty Shot'] = {head="Arcadian Beret +1",hands="Sylvan Glovelettes +2",waist="Chaac Belt"}
  81.     sets.precast.JA['Scavenge'] = {feet="Orion Socks +1"}
  82.     sets.precast.JA['Shadowbind'] = {head="Arcadian Beret +1",hands="Orion Bracer's +1"}
  83.     sets.precast.JA['Sharpshot'] = {legs="Orion Braccae +1"}
  84.     sets.precast.JA['Camouflage'] = {body="Orion Jerkin +1"}
  85.     sets.precast.JA['Eagle Eye Shot'] = {
  86.          head="Uk'uxkaj Cap",
  87.          body="Orion Jerkin +1",
  88.          hands="Arcadian Bracers +1",
  89.          legs="Arcadian Braccae +1",
  90.          feet="Arcadian Socks +1",
  91.          neck="Nefarious Collar",
  92.          waist="Metalsinger Belt",
  93.          ear1="Sylvan Earring",
  94.          ear2="Sylvan Earring",
  95.          ring1="Ifrit Ring +1",
  96.          ring2="Ifrit Ring +1",
  97.          back="Rancorous Mantle",}
  98.        
  99.    
  100.  
  101.     -- Waltz set (chr and vit)
  102.     sets.precast.Waltz = {
  103.          head="Whirlpool Mask",
  104.          body="Arcadian Jerkin +1",hands="Iuitl Wristbands +1",
  105.          legs="Nahtirah Trousers",feet="Iuitl Gaiters"}
  106.        
  107.     -- Don't need any special gear for Healing Waltz.
  108.     sets.precast.Waltz['Healing Waltz'] = {}
  109.  
  110.     -- Fast cast sets for spells
  111.    
  112.     sets.precast.FC = {ear2="Loquacious Earring",hands="Thaumas Gloves",ring1="Prolix Ring"}
  113.  
  114.     sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  115.  
  116.     -- Snapshot set
  117.     sets.precast.RA = {ammo="Achiyal. Bullet",head="Sylvan Gapette +2",body="Sylvan Caban +2",
  118.          hands="Iuitl Wristbands +1",legs="Nahtirah Trousers",feet="Khepri Gamashes",waist="Impulse Belt"}
  119.  
  120.     -- Overkill set
  121.     sets.precast.RA.Overkill = {ammo="Achiyal. Bullet",head="Orion Beret +1",body="Arcadian Jerkin +1",
  122.          hands="Iuitl Wristbands +1",legs="Murzim Cosciales",feet="Arcadian Socks +1",waist="Impulse Belt"}
  123.        
  124.        
  125.     -- Weaponskill sets
  126.     -- Default set for any weaponskill that isn't any more specifically defined
  127.     sets.precast.WS = {ammo="Adlivun Arrow",
  128.          head="Arcadian Beret +1",body="Khepri Jacket",hands="Arcadian Bracers +1",
  129.          legs="Nahtirah Trousers",feet="Arcadian Socks +1",
  130.          neck=gear.ElementalGorget,waist=gear.ElementalBelt,
  131.          ear1="Sylvan Earring",ear2="Moonshade Earring",
  132.          ring1="Ifrit Ring +1",ring2="Rajas Ring",
  133.          back="Buquwik Cape"}
  134.        
  135.     sets.precast.WS.WAcc = set_combine(sets.precast.WS, {legs="Arcadian Braccae +1",
  136.          feet="Orion Socks +1",
  137.          ring1="Hajduk Ring +1",
  138.          ring2="Hajduk Ring +1"})
  139.  
  140.     -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
  141.     sets.precast.WS['Evisceration'] = sets.precast.WS
  142.  
  143.     sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {legs="Nahtirah Trousers"})
  144.  
  145.     -- ammo="Achiyal. Arrow",
  146.     -- ammo="Adlivun Arrow"
  147.     sets.precast.WS['Jishnu\'s Radiance'] = {ammo="Achiyal. Arrow",
  148.          head="Arcadian Beret +1",body="Orion Jerkin +1",hands="Arcadian Bracers +1",
  149.          legs="Nahtirah Trousers",feet="Arcadian Socks +1",
  150.          neck="Light Gorget",waist="Light Belt",
  151.          ear1="Vulcan's Pearl", ear2="Moonshade Earring",
  152.          ring1="Ifrit Ring +1",ring2="Ramuh Ring +1",
  153.          back="Rancorous Mantle"}
  154.          
  155.          --"Ramuh Ring +1",
  156.          
  157.     sets.precast.WS['Jishnu\'s Radiance'].WAcc = set_combine(sets.precast.WS['Jishnu\'s Radiance'], {range={ name="Phaosphaelia", augments={'Accuracy+11','"Store TP"+6',}},ammo="Achiyal. Arrow",
  158.          legs="Arcadian Braccae +1",
  159.          feet="Orion Socks +1",
  160.          ring1="Hajduk Ring +1",
  161.          ring2="Hajduk Ring +1"})
  162.    
  163.     sets.precast.WS['Coronach'] = {ammo="Achiyal. Bullet",
  164.         head="Arcadian Beret +1",
  165.         body="Orion Jerkin +1",
  166.         hands="Arcadian Bracers +1",
  167.         legs="Nahtirah Trousers",
  168.         feet="Arcadian Socks +1",
  169.         neck="Breeze Gorget",waist="Breeze Belt",
  170.         ear1="Sylvan Earring",ear2="Vulcan's Pearl",
  171.         ring1="Ifrit Ring +1",ring2="Rajas Ring",
  172.         back="Buquwik Cape"}
  173.        
  174.         sets.precast.WS['Coronach'].WAcc = set_combine(sets.precast.WS['Coronach'], {})
  175.  
  176.    
  177.  
  178.     sets.precast.WS['Last Stand'] = {ammo=gear.WSbullet,
  179.         head="Arcadian Beret +1",
  180.         body="Orion Jerkin +1",
  181.         hands="Orion Bracers +1",
  182.         legs="Nahtirah Trousers",
  183.         feet="Arcadian Socks +1",
  184.         neck="Light Gorget",
  185.         waist="Light Belt",
  186.         ear1="Sylvan Earring",
  187.         ear2="Moonshade Earring",      
  188.         ring1="Garuda Ring +1",
  189.         ring2="Garuda Ring +1",
  190.         back="Buquwik Cape"}
  191.        
  192.     sets.precast.WS['Last Stand'].WAcc = set_combine(sets.precast.WS['Last Stand'], {
  193.         legs="Arcadian Braccae +1",
  194.         feet="Orion Socks +1"})
  195.  
  196.     sets.precast.WS['Last Stand'].Mod = set_combine(sets.precast.WS['Last Stand'], {body="Dread Jupon",
  197.         legs="Orion Braccae +1",back="Ik cape",feet="Vanir Boots"})
  198.    
  199.        
  200.     sets.precast.WS['Wildfire'] = {ammo=gear.MAbullet,
  201.         head="Arcadian Beret +1",
  202.         body="Orion Jerkin +1",
  203.         hands="Seiryu's Kote",
  204.         legs="Shneddick Tights +1",
  205.         feet={ name="Qaaxo Leggings", augments={'Attack+15','"Mag.Atk.Bns."+15','STR+12',}},
  206.         neck="Stoicheion Medal",
  207.         waist="Aquiline Belt",
  208.         ear1="Friomisi Earring",
  209.         ear2="Hecate's Earring",
  210.         ring1="Garuda Ring +1",
  211.         ring2="Garuda Ring +1",
  212.         back="Toro Cape"}
  213.  
  214.     sets.precast.WS['Wildfire'].Brew = {ammo=gear.MAbullet,
  215.         head="Arcadian Beret +1",
  216.         body="Orion Jerkin +1",
  217.         hands="Orion Bracers +1",
  218.         legs="Shneddick Tights +1",
  219.         feet={ name="Qaaxo Leggings", augments={'Attack+15','"Mag.Atk.Bns."+15','STR+12',}},
  220.         neck="Stoicheion Medal",
  221.         waist="Aquiline Belt",
  222.         ear1="Friomisi Earring",
  223.         ear2="Hecate's Earring",
  224.         ring1="Garuda Ring +1",
  225.         ring2="Garuda Ring +1",
  226.         back="Toro Cape"}
  227.    
  228.     sets.precast.WS['Leaden Salute'] = sets.precast.WS['Wildfire']
  229.    
  230.    
  231.     -- Midcast Sets
  232.     sets.midcast.FastRecast = {
  233.         head="Orion Beret +1",
  234.         body="Orion Jerkin +1",hands="Orion Bracers +1",
  235.         legs="Orion Braccae +1",feet="Orion Socks +1"}
  236.        
  237.     -- Specific spells
  238.     sets.midcast.Utsusemi = sets.midcast.FastRecast
  239.  
  240.     sets.midcast.CorsairShot = {ammo=gear.QDbullet,
  241.         head="Blood Mask",body="Laksamana's Frac",hands="Schutzen Mittens",
  242.         legs="Iuitl Tights",feet="Commodore Bottes +2",
  243.         neck="Stoicheion Medal",waist="Aquiline Belt",
  244.         ear1="Friomisi Earring",ear2="Hecate's Earring",
  245.         ring1="Hajduk Ring",ring2="Demon's Ring",
  246.         back="Toro Cape"}
  247.  
  248.     sets.midcast.CorsairShot.Acc = {ammo=gear.QDbullet,
  249.         head="Laksamana's Hat",body="Laksamana's Frac",hands="Schutzen Mittens",
  250.         legs="Iuitl Tights",feet="Iuitl Gaiters",
  251.         neck="Stoicheion Medal",waist="Aquiline Belt",
  252.         ear1="Lifestorm Earring",ear2="Psystorm Earring",
  253.         ring1="Garuda Ring +1",ring2="Sangoma Ring",
  254.         back="Navarch's Mantle"}
  255.  
  256.     sets.midcast.CorsairShot['Light Shot'] = {ammo=gear.QDbullet,
  257.         head="Laksamana's Hat",body="Laksamana's Frac",hands="Schutzen Mittens",
  258.         legs="Iuitl Tights",feet="Iuitl Gaiters",
  259.         neck="Stoicheion Medal",waist="Aquiline Belt",
  260.         ear1="Lifestorm Earring",ear2="Psystorm Earring",
  261.         ring1="Garuda Ring +1",ring2="Sangoma Ring",
  262.         back="Navarch's Mantle"}
  263.  
  264.     sets.midcast.CorsairShot['Dark Shot'] = sets.midcast.CorsairShot['Light Shot']
  265.  
  266.  
  267.     -- Ranged gear
  268.     sets.midcast.RA = {main="Atoyac",sub="Legion Scutum",ammo="Achiyal. Bullet",
  269.     --main="Atoyac",sub="Legion Scutum",
  270.     --ammo="Achiyal. Bullet",
  271.     --head={ name="Arcadian Beret +1", augments={'Enhances "Recycle" effect',}},
  272.     --body="Arcadian Jerkin +1",
  273.     --hands="Syl. Glvltte. +2",
  274.     --legs="Sylvan Bragues +2",
  275.     --feet={ name="Qaaxo Leggings", augments={'Attack+15','"Mag.Atk.Bns."+15','STR+12',}},
  276.     --neck="Ocachi Gorget",
  277.     --waist="Patentia Sash",
  278.     --left_ear="Volley Earring",
  279.     --right_ear="Tripudio Earring",
  280.     --left_ring="K'ayres Ring",
  281.     --right_ring="Rajas Ring",
  282.     --back="Sylvan Chlamys"}
  283.        
  284.   -- OLD SET
  285.      head="Arcadian Beret +1",
  286.         body="Arcadian Jerkin +1",
  287.         hands="Sylvan Glovelettes +2",
  288.         legs="Arcadian Braccae +1",
  289.         feet={ name="Qaaxo Leggings", augments={'Attack+15','"Mag.Atk.Bns."+15','STR+12',}},
  290.         neck="Ocachi Gorget",
  291.         waist="Elanid Belt",
  292.         ear1="Volley Earring",
  293.         ear2="Tripudio Earring",   
  294.         ring1="Ifrit Ring +1",
  295.         ring2="Rajas Ring",
  296.         back="Rancorous Mantle"}
  297.        
  298.             sets.midcast.RA.Acc = {main="Atoyac",sub="Legion Scutum",ammo="Achiyal. Bullet",
  299.         head="Arcadian Beret +1",
  300.         body="Arcadian Jerkin +1",
  301.         hands="Sylvan Glovelettes +2",
  302.         legs="Arcadian Braccae +1",feet={ name="Qaaxo Leggings", augments={'Attack+15','"Mag.Atk.Bns."+15','STR+12',}},
  303.         neck="Ocachi Gorget",waist="Elanid Belt",ear1="Volley Earring",ear2="Tripudio Earring",
  304.         ring1="Hajduk Ring +1",ring2="Rajas Ring",
  305.         back="Lutian Cape"}
  306.                    
  307.                    
  308.     --sets.midcast.RA.MAXAcc = {main="Mekki shakki",sub="Bloodrain Strap",ammo="Achiyal. Bullet",
  309.         --head="Arcadian Beret +1",
  310.         --body="Arcadian Jerkin +1",
  311.         --hands="Sylvan Glovelettes +2",
  312.         --legs="Arcadian Braccae +1",feet="Orion Socks +1",
  313.         --neck="Ej Necklace +1",waist="Elanid Belt",
  314.         --ear1="Volley Earring",ear2="Tripudio Earring",
  315.         --ring1="Hajduk Ring +1",ring2="Hajduk Ring +1",
  316.         --back="Lutian Cape"}      
  317.        
  318.  
  319.        
  320.     --sets.midcast.RA.Acc = {main="Mekki Shakki",
  321.   --  sub="Bloodrain Strap",
  322.    -- ammo="Achiyal. Bullet",
  323.    -- head={ name="Arcadian Beret +1", augments={'Enhances "Recycle" effect',}},
  324.    -- body="Kyujutsugi",
  325.    -- hands="Syl. Glvltte. +2",
  326.    -- legs="Sylvan Bragues +2",
  327.    -- feet={ name="Qaaxo Leggings", augments={'Attack+15','"Mag.Atk.Bns."+15','STR+12',}},
  328.    -- neck="Ocachi Gorget",
  329.    -- waist="Patentia Sash",
  330.    -- left_ear="Volley Earring",
  331.    -- right_ear="Tripudio Earring",
  332.    -- left_ring="K'ayres Ring",
  333.    -- right_ring="Rajas Ring",
  334.     --back="Sylvan Chlamys"}
  335.                    
  336.                    
  337.     sets.midcast.RA.MAXAcc = {main="Mekki shakki",sub="Bloodrain Strap",ammo="Achiyal. Bullet",
  338.         head="Arcadian Beret +1",
  339.         body="Arcadian Jerkin +1",
  340.         hands="Sylvan Glovelettes +2",
  341.         legs="Arcadian Braccae +1",feet="Orion Socks +1",
  342.         neck="Ej Necklace +1",waist="Elanid Belt",
  343.         ear1="Volley Earring",ear2="Tripudio Earring",
  344.         ring1="Hajduk Ring +1",ring2="Hajduk Ring +1",
  345.         back="Lutian Cape"}    
  346.        
  347.  
  348.     -- Barrage Sets
  349.    
  350.     sets.BarrageMid = {
  351.         head="Uk'uxkaj Cap",
  352.         body="Orion Jerkin +1",
  353.         hands="Orion Bracers +1",
  354.         legs="Desultor Tassets",
  355.         feet="Arcadian Socks +1",
  356.         neck="Nefarious Collar",
  357.         waist="Metalsinger Belt",
  358.         ear1="Vulcan's Pearl",
  359.         ear2="Sylvan Earring",
  360.         ring1="Ifrit Ring +1",
  361.         ring2="Ifrit Ring +1",
  362.         back="Rancorous Mantle"}
  363.        
  364.        
  365.     sets.BarrageMid.Acc = {
  366.         head="Uk'uxkaj Cap",
  367.         body="Orion Jerkin +1",
  368.         hands="Orion Bracers +1",
  369.         legs="Desultor Tassets",
  370.         feet="Orion Socks +1",
  371.         neck="Ej Necklace +1",
  372.         waist="Elanid Belt",
  373.         ear1="Volley Earring",
  374.         ear2="Clearview Earring",      
  375.         ring1="Hajduk Ring +1",
  376.         ring2="Hajduk Ring +1",
  377.         back="Rancorous Mantle"}
  378.        
  379.        
  380.     sets.BarrageMid.MAXAcc = {
  381.         head="Uk'uxkaj Cap",
  382.         body="Orion Jerkin +1",
  383.         hands="Orion Bracers +1",
  384.         legs="Desultor Tassets",
  385.         feet="Orion Socks +1",
  386.         neck="Ej Necklace +1",
  387.         waist="Elanid Belt",
  388.         ear1="Volley Earring",
  389.         ear2="Clearview Earring",      
  390.         ring1="Hajduk Ring +1",
  391.         ring2="Hajduk Ring +1",
  392.         back="Lutian Cape"}
  393.        
  394.  
  395.     -- Sets to return to when not performing an action.
  396.    
  397.     -- Resting sets
  398.     sets.resting = {neck="Wiglen Gorget",ring1="Sheltered Ring",ring2="Paguroidea Ring"}
  399.    
  400.  
  401.     -- Idle sets
  402.     sets.idle = {head="Iuitl Headgear +1",body="Dread Jupon",hands="Iuitl Wristbands +1",
  403.         legs="Nahtirah Trousers",feet="Fajin Boots",
  404.         neck="Twilight Torque",waist="Flume Belt",
  405.         ear1="Darkness Earring",ear2="Black Earring",
  406.         ring1="Patricius Ring",ring2="Defending Ring",
  407.         back="Shadow Mantle"}
  408.  
  409.     sets.idle.Town = {ammo="Achiyal. Bullet",
  410.         head="Arcadian Beret +1",
  411.         body="Arcadian Jerkin +1",
  412.         hands="Sylvan Glovelettes +2",
  413.         legs="Nahtirah Trousers",
  414.         feet="Fajin Boots",
  415.         neck="Ocachi Gorget",
  416.         waist="Elanid Belt",
  417.         ear1="Volley Earring",
  418.         ear2="Tripudio Earring",   
  419.         ring1="Ifrit Ring +1",
  420.         ring2="Rajas Ring",
  421.         back="Rancorous Mantle"}
  422.    
  423.     -- Defense sets
  424.     sets.defense.PDT = {
  425.         head="Iuitl Headgear +1",body="Orion Jerkin +1",hands="Iuitl Wristbands +1",
  426.         legs="Nahtirah Trousers",feet="Iuitl Gaiters",
  427.         neck="Twilight Torque",waist="Flume Belt",
  428.         ear1="Darkness Earring",ear2="Black Earring",
  429.         ring1="Dark Ring",ring2="Defending Ring",
  430.         back="Mollusca Mantle"}
  431.  
  432.     sets.defense.MDT = {
  433.         head="Whirlpool Mask",body="Orion Jerkin +1",hands="Iuitl Wristbands +1",
  434.         legs="Nahtirah Trousers",feet="Iuitl Gaiters",
  435.         neck="Twilight Torque",waist="Flume Belt",
  436.         ring1="Shadow Ring",ring2="Defending Ring",
  437.         back="Engulfer Cape"}
  438.    
  439.  
  440.     sets.Kiting = {feet="Fajin Boots"}
  441.  
  442.     -- Engaged sets
  443.  
  444.     -- Variations for TP weapon and (optional) offense/defense modes.  Code will fall back on previous
  445.     -- sets if more refined versions aren't defined.
  446.     -- If you create a set with both offense and defense modes, the offense mode should be first.
  447.     -- EG: sets.engaged.Dagger.Accuracy.Evasion
  448.    
  449.     -- Normal melee group
  450.     sets.engaged.Melee = {
  451.         head="Whirlpool Mask",body="Kyujutsugi",hands="Sylvan Glovelettes +2",
  452.         legs="Byakko's Haidate",feet={ name="Qaaxo Leggings", augments={'Accuracy+15','STR+7','Phys. dmg. taken -3',}},
  453.         neck="Ocachi Gorget",waist="Goading Belt",
  454.         ear1="Volley Earring",ear2="Tripudio Earring",
  455.         ring1="K'ayres Ring",ring2="Rajas Ring",
  456.         back="Sylvan Chlamys"}
  457.    
  458.     sets.engaged.Acc = {
  459.         main="Kraken Club",
  460.     sub="Legion Scutum",
  461.     range={ name="Phaosphaelia", augments={'Accuracy+11','"Store TP"+6',}},
  462.     ammo="Achiyal. Arrow",
  463.     head="Whirlpool Mask",
  464.     body="Shneddick Tabard +1",
  465.     hands={ name="Qaaxo Mitaines", augments={'Accuracy+15','STR+7','Phys. dmg. taken -3',}},
  466.     legs={ name="Manibozho Brais", augments={'Attack+15','Accuracy+10','STR+10',}},
  467.     feet={ name="Qaaxo Leggings", augments={'Accuracy+15','STR+7','Phys. dmg. taken -3',}},
  468.     neck="Ej necklace +1",
  469.     waist="Hurch'lan Sash",
  470.     left_ear="Steelflash Earring",
  471.     right_ear="Heartseeker Earring",
  472.     left_ring="Mars's Ring",
  473.     right_ring="Ramuh Ring +1",
  474.     back="Kayapa Cape"}
  475.        
  476.     sets.engaged.MAXAcc = {
  477.         head="Whirlpool Mask",body="Thaumas Coat",hands="Qaaxo Mitaines",
  478.         legs="Manibozho Brais",feet={ name="Qaaxo Leggings", augments={'Accuracy+15','STR+7','Phys. dmg. taken -3',}},
  479.         neck="Ej Necklace +1",
  480.         --waist="Hurch'lan Sash",
  481.         waist="Patentia Sash",
  482.         ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  483.         ring1="Epona's Ring",ring2="Rajas Ring",
  484.         back="Letalis Mantle"}
  485.  
  486.     sets.engaged.Melee.DW = {
  487.         head="Whirlpool Mask",body="Thaumas Coat",hands="Qaaxo Mitaines",
  488.         legs="Manibozho Brais",feet={ name="Qaaxo Leggings", augments={'Accuracy+15','STR+7','Phys. dmg. taken -3',}},
  489.         neck="Asperity Necklace",waist="Patentia Sash",
  490.         ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  491.         ring1="Epona's Ring",ring2="Rajas Ring",
  492.         back="Atheling Mantle"}
  493.    
  494.     sets.engaged.Acc.DW = {
  495.         head="Whirlpool Mask",body="Thaumas Coat",hands="Qaaxo Mitaines",
  496.         legs="Manibozho Brais",feet={ name="Qaaxo Leggings", augments={'Accuracy+15','STR+7','Phys. dmg. taken -3',}},
  497.         neck="Ej Necklace +1",waist="Hurch'lan Sash",
  498.         ear1="Brutal Earring",ear2="Suppanomimi",
  499.         ring1="Epona's Ring",ring2="Rajas Ring",
  500.         back="Letalis Mantle"}
  501.  
  502.  
  503.     sets.engaged.Ranged = {
  504.         head="Whirlpool Mask",body="Iuitl Vest",hands="Iuitl Wristbands +1",
  505.         legs="Nahtirah Trousers",feet="Iuitl Gaiters",
  506.         neck="Twilight Torque",waist="Flume Belt",
  507.         ear1="Volley Earring",ear2="Clearview Earring",
  508.         ring1="Dark Ring",ring2="Defending Ring",
  509.         back="Shadow Mantle"}
  510.    
  511.  
  512.  
  513.  
  514.     define_roll_values()
  515. end
  516.  
  517. -------------------------------------------------------------------------------------------------------------------
  518. -- Job-specific hooks that are called to process player actions at specific points in time.
  519. -------------------------------------------------------------------------------------------------------------------
  520.  
  521.  
  522. -- function pretarget(spell,action)
  523.   --  if (spell.english == 'Ranged' and spell.target.distance > 21.1) or (player.status == 'Engaged' and ((ranged_ws:contains(spell.english) and spell.target.distance > 16+target_distance) or (spell.type == "WeaponSkill" and not ranged_ws:contains(spell.english) and spell.target.distance > target_distance))) then -- Cancel Ranged Attack or WS If You Are Out Of Range --
  524.     --  cancel_spell()
  525. --      add_to_chat(123, spell.name..' Canceled: [Out of Range]')
  526.     --  return
  527. --  end
  528.  
  529. --  end
  530.  
  531.  
  532.  
  533. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  534. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  535. function job_precast(spell, action, spellMap, eventArgs)
  536.  
  537.  
  538.      
  539.     -- bullet checks
  540.     --local check_bullet
  541. --  local check_bullet_count = 1
  542.     --if spell.type == 'WeaponSkill' and bow_gun_weaponskills:contains(spell.english) then
  543.     --  if spell.element == 'None' then
  544.             -- physical weaponskills
  545.         --  check_bullet = gear.WSbullet
  546.     --  else
  547.             -- magical weaponskills
  548.             --check_bullet = gear.MAbullet
  549.     --  end
  550.     --elseif spell.type == 'CorsairShot' then
  551.         --check_bullet = gear.QDbullet
  552.     --elseif spell.action_type == 'Ranged Attack' then
  553.     --  check_bullet = gear.RAbullet
  554.     --  if buffactive['Triple Shot'] then
  555.     --      check_bullet_count = 3
  556.            
  557.     --  end
  558.        
  559.     --end
  560.    
  561.    
  562.     -- gear sets
  563.     if (spell.type == 'CorsairRoll' or spell.english == "Double-Up") and state.LuzafRing then
  564.         equip(sets.precast.LuzafRing)
  565.     elseif spell.type == 'CorsairShot' and state.CastingMode == 'Resistant' then
  566.         classes.CustomClass = 'Acc'
  567.     elseif spell.type == 'Waltz' then
  568.         refine_waltz(spell, action, spellMap, eventArgs)
  569.     end
  570. end
  571.  
  572.  
  573. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  574. function job_aftercast(spell, action, spellMap, eventArgs)
  575.     if spell.type == 'CorsairRoll' and not spell.interrupted then
  576.         display_roll_info(spell)
  577.     end
  578. end
  579.  
  580. -- Run after the default midcast() is done.
  581. -- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
  582. function job_post_midcast(spell, action, spellMap, eventArgs)
  583.    
  584.  
  585.    if buffactive.Barrage and sets.BarrageMid[state.RangedMode] then
  586.                         equip(sets.BarrageMid[state.RangedMode])    
  587.       elseif buffactive.Barrage then
  588.         equip(sets.BarrageMid)                     
  589.            
  590.     end  
  591.    
  592. end
  593. -------------------------------------------------------------------------------------------------------------------
  594. -- Customization hooks for idle and melee sets, after they've been automatically constructed.
  595. -------------------------------------------------------------------------------------------------------------------
  596.  
  597. -- Return a customized weaponskill mode to use for weaponskill sets.
  598. -- Don't return anything if you're not overriding the default value.
  599. function get_custom_wsmode(spell, action, spellMap)
  600.     if buffactive['Transcendancy'] then
  601.         return 'Brew'
  602.     end
  603. end
  604.  
  605. -------------------------------------------------------------------------------------------------------------------
  606. -- General hooks for other events.
  607. -------------------------------------------------------------------------------------------------------------------
  608.  
  609. -- Called when the player's status changes.
  610. function job_status_change(newStatus, oldStatus, eventArgs)
  611.     if newStatus == 'Engaged' and player.equipment.main == 'Chatoyant Staff' then
  612.         state.OffenseMode = 'Ranged'
  613.     end
  614. end
  615.  
  616. -- Called when a player gains or loses a buff.
  617. -- buff == buff gained or lost
  618. -- gain == true if the buff was gained, false if it was lost.
  619. function job_buff_change(buff, gain)
  620.     if status == "Camouflage" then
  621.         if gain_or_loss == "gain" then
  622.                         send_command('@wait .5;gs disable body')
  623.         else
  624.             enable('body')
  625.         end
  626.     end
  627. end
  628.  
  629.  
  630. -------------------------------------------------------------------------------------------------------------------
  631. -- User code that supplements self-commands.
  632. -------------------------------------------------------------------------------------------------------------------
  633.  
  634. -- Called by the 'update' self-command, for common needs.
  635. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  636. function job_update(cmdParams, eventArgs)
  637.     if newStatus == 'Engaged' and player.equipment.main == 'Chatoyant Staff' then
  638.         state.OffenseMode = 'Ranged'
  639.     end
  640. end
  641.  
  642. -- Job-specific toggles.
  643. function job_toggle(field)
  644.     if field:lower() == 'luzaf' then
  645.         state.LuzafRing = not state.LuzafRing
  646.         return "Use of Luzaf Ring", state.LuzafRing
  647.     end
  648. end
  649.  
  650. -- Set eventArgs.handled to true if we don't want the automatic display to be run.
  651. function display_current_job_state(eventArgs)
  652.     local defenseString = ''
  653.     if state.Defense.Active then
  654.         local defMode = state.Defense.PhysicalMode
  655.         if state.Defense.Type == 'Magical' then
  656.             defMode = state.Defense.MagicalMode
  657.         end
  658.  
  659.         defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
  660.     end
  661.    
  662.     local rollsize = 'Small'
  663.     if state.LuzafRing then
  664.         rollsize = 'Large'
  665.     end
  666.    
  667.     local pcTarget = ''
  668.     if state.PCTargetMode ~= 'default' then
  669.         pcTarget = ', Target PC: '..state.PCTargetMode
  670.     end
  671.  
  672.     local npcTarget = ''
  673.     if state.SelectNPCTargets then
  674.         pcTarget = ', Target NPCs'
  675.     end
  676.    
  677.  
  678.     add_to_chat(122,'Offense: '..state.OffenseMode..', Ranged: '..state.RangedMode..', WS: '..state.WeaponskillMode..
  679.         ', Quick Draw: '..state.CastingMode..', '..defenseString..'Kiting: '..on_off_names[state.Kiting]..
  680.         ', Roll Size: '..rollsize..pcTarget..npcTarget)
  681.  
  682.     eventArgs.handled = true
  683. end
  684.  
  685. -------------------------------------------------------------------------------------------------------------------
  686. -- Utility functions specific to this job.
  687. -------------------------------------------------------------------------------------------------------------------
  688.  
  689. function define_roll_values()
  690.     rolls = {
  691.         ["Corsair's Roll"]   = {lucky=5, unlucky=9, bonus="Experience Points"},
  692.         ["Ninja Roll"]       = {lucky=4, unlucky=8, bonus="Evasion"},
  693.         ["Hunter's Roll"]    = {lucky=4, unlucky=8, bonus="Accuracy"},
  694.         ["Chaos Roll"]       = {lucky=4, unlucky=8, bonus="Attack"},
  695.         ["Magus's Roll"]     = {lucky=2, unlucky=6, bonus="Magic Defense"},
  696.         ["Healer's Roll"]    = {lucky=3, unlucky=7, bonus="Cure Potency Received"},
  697.         ["Puppet Roll"]      = {lucky=4, unlucky=8, bonus="Pet Magic Accuracy/Attack"},
  698.         ["Choral Roll"]      = {lucky=2, unlucky=6, bonus="Spell Interruption Rate"},
  699.         ["Monk's Roll"]      = {lucky=3, unlucky=7, bonus="Subtle Blow"},
  700.         ["Beast Roll"]       = {lucky=4, unlucky=8, bonus="Pet Attack"},
  701.         ["Samurai Roll"]     = {lucky=2, unlucky=6, bonus="Store TP"},
  702.         ["Evoker's Roll"]    = {lucky=5, unlucky=9, bonus="Refresh"},
  703.         ["Rogue's Roll"]     = {lucky=5, unlucky=9, bonus="Critical Hit Rate"},
  704.         ["Warlock's Roll"]   = {lucky=4, unlucky=8, bonus="Magic Accuracy"},
  705.         ["Fighter's Roll"]   = {lucky=5, unlucky=9, bonus="Double Attack Rate"},
  706.         ["Drachen Roll"]     = {lucky=3, unlucky=7, bonus="Pet Accuracy"},
  707.         ["Gallant's Roll"]   = {lucky=3, unlucky=7, bonus="Defense"},
  708.         ["Wizard's Roll"]    = {lucky=5, unlucky=9, bonus="Magic Attack"},
  709.         ["Dancer's Roll"]    = {lucky=3, unlucky=7, bonus="Regen"},
  710.         ["Scholar's Roll"]   = {lucky=2, unlucky=6, bonus="Conserve MP"},
  711.         ["Bolter's Roll"]    = {lucky=3, unlucky=9, bonus="Movement Speed"},
  712.         ["Caster's Roll"]    = {lucky=2, unlucky=7, bonus="Fast Cast"},
  713.         ["Courser's Roll"]   = {lucky=3, unlucky=9, bonus="Snapshot"},
  714.         ["Blitzer's Roll"]   = {lucky=4, unlucky=9, bonus="Attack Delay"},
  715.         ["Tactician's Roll"] = {lucky=5, unlucky=8, bonus="Regain"},
  716.         ["Allies's Roll"]    = {lucky=3, unlucky=10, bonus="Skillchain Damage"},
  717.         ["Miser's Roll"]     = {lucky=5, unlucky=7, bonus="Save TP"},
  718.         ["Companion's Roll"] = {lucky=2, unlucky=10, bonus="Pet Regain and Regen"},
  719.         ["Avenger's Roll"]   = {lucky=4, unlucky=8, bonus="Counter Rate"},
  720.     }
  721. end
  722.  
  723.                
  724. function display_roll_info(spell)
  725.     rollinfo = rolls[spell.english]
  726.     local rollsize = 'Small'
  727.     if state.LuzafRing then
  728.         rollsize = 'Large'
  729.     end
  730.     if rollinfo then
  731.         add_to_chat(104, spell.english..' provides a bonus to '..rollinfo.bonus..'.  Roll size: '..rollsize)
  732.         add_to_chat(104, 'Lucky roll is '..tostring(rollinfo.lucky)..', Unlucky roll is '..tostring(rollinfo.unlucky)..'.')
  733.     end
  734. end
Advertisement
Add Comment
Please, Sign In to add comment