Advertisement
icewell

cor 268 error

Oct 12th, 2016
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 26.62 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job.  Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. --[[
  6.     gs c toggle LuzafRing -- Toggles use of Luzaf Ring on and off
  7.    
  8.     Offense mode is melee or ranged.  Used ranged offense mode if you are engaged
  9.     for ranged weaponskills, but not actually meleeing.
  10.    
  11.     Weaponskill mode, if set to 'Normal', is handled separately for melee and ranged weaponskills.
  12. --]]
  13.  
  14.  
  15. -- Initialization function for this job file.
  16. function get_sets()
  17.     mote_include_version = 2
  18.    
  19.     -- Load and initialize the include file.
  20.     include('Mote-Include.lua')
  21. end
  22.  
  23. -- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
  24. function job_setup()
  25.     -- Whether to use Luzaf's Ring
  26.     state.LuzafRing = M(false, "Luzaf's Ring")
  27.     -- Whether a warning has been given for low ammo
  28.     state.warned = M(false)
  29.  
  30.     define_roll_values()
  31. end
  32.  
  33. -------------------------------------------------------------------------------------------------------------------
  34. -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
  35. -------------------------------------------------------------------------------------------------------------------
  36.  
  37. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  38. function user_setup()
  39.     state.OffenseMode:options('Ranged', 'Melee', 'Acc','Capacity')
  40.     state.RangedMode:options('Normal', 'Acc')
  41.     state.WeaponskillMode:options('Normal', 'Acc', 'Att', 'Mod')
  42.     state.CastingMode:options('Normal', 'Resistant')
  43.     state.IdleMode:options('Normal', 'PDT', 'Refresh','Capacity')
  44.  
  45.     gear.RAbullet = "Chrono bullet"
  46.     gear.WSbullet = "Chrono Bullet"
  47.     gear.MAbullet = "Chrono Bullet"
  48.     gear.QDbullet = "Animikii Bullet"
  49.     options.ammo_warning_limit = 10
  50.  
  51.     -- Additional local binds
  52.     --^ ctrl key
  53.     --! alt key
  54.     --@ windows key
  55.     --# apps key
  56.     --COR JA--
  57.     send_command('bind !space input /map')
  58.     send_command('bind !- gs c toggle LuzafRing')
  59.     send_command('bind !` input /ja "Double-up" <me>')
  60.     send_command('bind ^` input /ja "Bolter\'s Roll" <me>')
  61.     send_command('bind @` input /ja "Snake eye" <me>')
  62.     send_command('bind #^f input /ja "Fold" <me>')
  63.     send_command('bind !c input /ra <t>')
  64.    
  65.     --COR WS--
  66.     send_command('bind !a input /ws "Requiescat" <t>')
  67.     send_command('bind !f input /ws "Leaden Salute" <t>')
  68.     send_command('bind !n input /ws "Last stand" <t>')
  69.    
  70.    
  71.     send_command('bind ` input /ja "Spectral Jig" <me>')
  72.     send_command('bind [ input /ja "Healing Waltz" <me>')
  73.     send_command('bind !; input /ja "Curing Waltz III" <stpt>')
  74.     send_command('bind ^h input /ja "Haste samba" <me>')
  75.     send_command('bind ^m input /ja "Quickstep" <t>')
  76.     send_command('bind ^, input /ja "Box step" <t>')
  77.     send_command('bind ^. input /ja "Stutter step" <t>')
  78.     send_command('bind ^o input /ja "Reverse flourish" <me>')
  79.     send_command('bind !/ input /checkparam <me>')
  80.    
  81.    
  82.         --Lara spellbinds offensive--
  83.     send_command('bind ^#q input //send larael geofrailty <bt>')
  84.     send_command('bind ^#w input //send larael geotorpor <bt>')
  85.     send_command('bind ^#a input //send larael geomalaise <bt>')
  86.     send_command('bind ^#s input //send larael geolanguor <bt>')
  87.     send_command('bind #q input //send larael indifury')
  88.     send_command('bind #w input //send larael indiprecision')
  89.     send_command('bind #a input //send larael indiacumen')
  90.     send_command('bind #s input //send larael indifocus')
  91.     send_command('bind #f input //send larael indihaste')
  92.     send_command('bind #v input //send larael cure4 icewell')
  93.    
  94.     --Lara tagging--
  95.    
  96.     send_command('bind ^space input //send larael frazzle <bt>')
  97.     send_command('bind #v input //send larael dia2 <bt>')
  98.     send_command('bind ^@o input //send larael aspir2 <bt>')
  99.    
  100.     --Lara spellbinds defensive--
  101.    
  102.     send_command('bind @^u input //send larael geowilt <bt>')
  103.     send_command('bind @^i input //send larael geoslip <bt>')
  104.     send_command('bind @^j input //send larael geofade <bt>')
  105.     send_command('bind @^k input //send larael geovex <bt>')
  106.     send_command('bind @u input //send larael indibarrier')
  107.     send_command('bind @i input //send larael indivoidance')
  108.     send_command('bind @j input //send larael indifend')
  109.     send_command('bind @k input //send larael indiattunement')
  110.    
  111.    
  112.    
  113.    
  114.     --Lara JA
  115.     send_command('bind ^#` input //send larael fullcircle')
  116.     send_command('bind ^#b input //send larael blazeofglory')
  117.     send_command('bind ^#d input //send larael dematerialize')
  118.     send_command('bind #d input //send larael lifecycle')
  119.     --Lara following commands
  120.     send_command('bind #delete input //send larael /fe')
  121.     send_command('bind #end input //send larael follow icewell')
  122.     send_command('bind #pagedown input //send larael /dismount')
  123.    
  124. --    select_default_macro_book()
  125. end
  126.  
  127.  
  128. -- Called when this job file is unloaded (eg: job change)
  129. function user_unload()
  130.     send_command('unbind ^`')
  131.     send_command('unbind !`')
  132.     send_command('unbind @`')
  133.     send_command('unbind !`')
  134.     send_command('unbind ^`')
  135.     send_command('unbind @`')
  136.    
  137. end
  138.  
  139. -- Define sets and vars used by this job file.
  140. function init_gear_sets()
  141.     --------------------------------------
  142.     -- Start defining the sets
  143.     --------------------------------------
  144.    
  145.     -- Precast Sets
  146.  
  147.     -- Precast sets to enhance JAs
  148.    
  149.     sets.precast.JA['Triple Shot'] = {body="Chasseur's Frac +1"}
  150.     sets.precast.JA['Snake Eye'] = {legs="Lanun Culottes"}
  151.     sets.precast.JA['Wild Card'] = {feet="Lanun Bottes"}
  152.     sets.precast.JA['Random Deal'] = {body="Lanun Frac"}
  153.  
  154.    
  155.     sets.precast.CorsairRoll = {head="Lanun Tricorne",hands="Chasseur's gants +1",
  156.     ring1="Barataria ring",back="Gunslinger's cape",legs="Desultor tassets"}
  157.    
  158.     sets.precast.CorsairRoll["Caster's Roll"] = set_combine(sets.precast.CorsairRoll, {legs="Chasseur's Culottes"})
  159.     sets.precast.CorsairRoll["Courser's Roll"] = set_combine(sets.precast.CorsairRoll, {feet="Navarch's Bottes +2"})
  160.     sets.precast.CorsairRoll["Blitzer's Roll"] = set_combine(sets.precast.CorsairRoll, {head="Chasseur's Tricorne"})
  161.     sets.precast.CorsairRoll["Tactician's Roll"] = set_combine(sets.precast.CorsairRoll, {body="Chasseur's Frac +1"})
  162.     sets.precast.CorsairRoll["Allies' Roll"] = set_combine(sets.precast.CorsairRoll, {hands="Chasseur's gants +1"})
  163.    
  164.     sets.precast.LuzafRing = {ring2="Luzaf's Ring"}
  165.     sets.precast.FoldDoubleBust = {hands="Lanun Gants"}
  166.    
  167.     sets.precast.CorsairShot = {ammo=gear.QDbullet}
  168.    
  169.  
  170.     -- Waltz set (chr and vit)
  171.     sets.precast.Waltz = {
  172.         head="Haruspex hat",
  173.         body="Lak. frac +1",hands={ name="Herculean Gloves", augments={'Attack+24','"Waltz" potency +9%','STR+13',}},ring1="Kunaji Ring",ring2="Asklepian Ring",
  174.         feet="Rawhide boots"}
  175.        
  176.     -- Don't need any special gear for Healing Waltz.
  177.     sets.precast.Waltz['Healing Waltz'] = {}
  178.  
  179.     -- Fast cast sets for spells
  180.    
  181.     sets.precast.FC = {head="Herculean helm",neck="Orunmila's torque",
  182.     ear2="Loquacious Earring",hands="Thaumas Gloves",ring1="Prolix Ring"}
  183.  
  184.     sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Orunmila's torque"})
  185.  
  186.        
  187.     sets.precast.RA = {ammo=gear.RAbullet,
  188.         head="Chasseur's tricorne",neck="Marked gorget",ear1="Clearview earring",ear2="Enervating Earring",
  189.         body="Laksamana's Frac +1",hands="Carmine finger gauntlets",ring1="Hajduk ring",ring2="Hajduk ring",
  190.         back="Gunslinger's cape",waist="Impulse belt",legs="Meghanada chausses +1",feet="Meghanada jambeaux +1"}
  191.        
  192.     -- Put recycle gear in here
  193.    
  194.  
  195.     sets.midcast.RA.Acc = {ammo=gear.RAbullet,
  196.         head="Meghanada visor +1",neck="Marked gorget",ear1="Clearview earring",ear2="Enervating Earring",
  197.         body="Meghanada cuirie +1",hands="Meghanada gloves +1",ring1="Hajduk Ring",ring2="Hajduk Ring",
  198.         back="Gunslinger's cape",waist="Eschan stone",legs="Meghanada chausses +1",feet="Meghanada jambeaux +1"}
  199.    
  200.        
  201.     -- Weaponskill sets
  202.     -- Default set for any weaponskill that isn't any more specifically defined
  203.     sets.precast.WS = {
  204.         head="Herculean helm",neck="Fotia gorget",ear1="Friomisi Earring",ear2="Hecate's Earring",
  205.         body="Samnuha coat",ring1="Rajas Ring",ring2="Hajduk Ring",
  206.         back="Camulus's mantle",waist="Fotia belt",feet="Herculean boots"}
  207.  
  208.  
  209.     -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
  210.     sets.precast.WS['Evisceration'] = sets.precast.WS
  211.  
  212.     sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {legs="Nahtirah Trousers"})
  213.  
  214.     sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {
  215.     head="Laksamana's hat +1",neck="Fotia gorget",ear1="Brutal earring",ear2="Moonshade earring",
  216.     body="Samnuha coat",hands="Rawhide gloves",
  217.     back="Vespid mantle",waist="Fotia belt",legs="Nahtirah Trousers",feet={ name="Herculean Boots", augments={'Accuracy+27','"Triple Atk."+3','AGI+10','Attack+3',}}})
  218.  
  219.     sets.precast.WS['Last Stand'] = {ammo=gear.WSbullet,
  220.         head="Meghanada visor +1",neck="Fotia gorget",ear1="Clearview Earring",ear2="Moonshade earring",
  221.         body="Meghanada cuirie +1",hands="Meghanada gloves +1",ring1="Garuda Ring",ring2="Garuda Ring",
  222.         back="Gunslinger's cape",waist="Fotia belt",legs="Meghanada chausses +1",feet="Meghanada jambeaux +1"}
  223.  
  224.     sets.precast.WS['Last Stand'].Acc = {ammo=gear.WSbullet,
  225.         head="Laksamana's hat +1",neck=gear.ElementalGorget,ear1="Clearview Earring",ear2="",
  226.         body="Laksamana's Frac",hands="Buremte Gloves",ring1="Hajduk Ring",ring2="Stormsoul Ring",
  227.         back="Gunslinger's cape",waist="Fotia belt",legs="Thurandaut Tights +1",feet="Laksamana's Bottes"}
  228.  
  229.  
  230.     sets.precast.WS['Wildfire'] = {ammo=gear.MAbullet,
  231.         head="Herculean helm",neck="Sanctity necklace",ear1="Friomisi Earring",ear2="Hecate's Earring",
  232.         body="Samnuha coat",hands={ name="Herculean Gloves", augments={'"Mag.Atk.Bns."+23','Rng.Atk.+23','Accuracy+5 Attack+5','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},ring1="Garuda Ring",ring2="Garuda Ring",
  233.         back={ name="Camulus's Mantle", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','Weapon skill damage +10%',}},waist="Eschan stone",
  234.         legs={ name="Herculean Trousers", augments={'"Mag.Atk.Bns."+29','"Fast Cast"+3','Accuracy+8 Attack+8','Mag. Acc.+12 "Mag.Atk.Bns."+12',}},feet={ name="Herculean Boots", augments={'Mag. Acc.+16 "Mag.Atk.Bns."+16','Mag. Acc.+7','"Mag.Atk.Bns."+13',}}}
  235.  
  236.     sets.precast.WS['Wildfire'].Brew = {ammo=gear.MAbullet,
  237.         head="Lak. hat+1",neck="Sanctity necklace",ear1="Moldavite Earring",ear2="Hecate's Earring",
  238.         body="Samnuha coat",hands={ name="Herculean Gloves", augments={'"Mag.Atk.Bns."+23','Rng.Atk.+23','Accuracy+5 Attack+5','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},ring1="Garuda Ring",ring2="Garuda Ring",
  239.         back="Camulus's mantle",waist="Fotia belt",legs="Ta'lab trousers",feet="Herculean boots"}
  240.    
  241.     sets.precast.WS['Leaden Salute'] = set_combine(sets.precast.WS['Wildfire'],
  242.     {head="Pixie hairpin +1",ring2="Archon ring"})
  243.    
  244.     sets.precast.WS['Leaden Salute'].Mod = set_combine(sets.precast.WS['Wildfire'],
  245.     {head="Pixie hairpin +1",ring1="Garuda ring",ring2="Archon ring",waist="Hachirin-no-obi"})
  246.    
  247.     --set_combine(sets.precast.WS['Exenterator'].Mod, {ammo="Qirmiz Tathlum"})
  248.    
  249.     -- Midcast Sets
  250.     sets.midcast.FastRecast = {}
  251.        
  252.     -- Specific f
  253.     sets.midcast.Utsusemi = sets.midcast.FastRecast
  254.  
  255.     sets.midcast.CorsairRoll = {back="Camulus's mantle"}
  256.    
  257.     sets.midcast.CorsairShot = {ammo=gear.QDbullet,
  258.         head="Laksamana's hat +1",neck="Sanctity necklace",ear1="Friomisi Earring",ear2="Hecate's Earring",
  259.         body="Samnuha coat",hands="Leyline gloves",ring1="Garuda Ring",ring2="Garuda Ring",
  260.         back="Gunslinger's Cape",waist="Eschan stone",legs="Feast hose",feet="Pursuer's gaiters"}
  261.  
  262.     sets.midcast.CorsairShot.Acc = {ammo=gear.QDbullet,
  263.         head="Laksamana's hat +1",neck="Sanctity necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
  264.         body="Samnuha coat",hands="Leyline gloves",ring1="Garuda Ring",ring2="Garuda Ring",
  265.         back="Gunslinger's Mantle",waist="Eschan stone",legs="Chasseur's culottes",feet="Chasseur's bottes"}
  266.  
  267.     sets.midcast.CorsairShot['Light Shot'] = {ammo=gear.QDbullet,
  268.         head="Laksamana's hat +1",neck="Sanctity necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
  269.         body="Samnuha coat",hands="Leyline gloves",ring1="Garuda Ring",ring2="Garuda Ring",
  270.         back="Gunslinger's Mantle",waist="Eschan stone",legs="Chasseur's culottes",feet="Chasseur's bottes"}
  271.  
  272.     sets.midcast.CorsairShot['Dark Shot'] = sets.midcast.CorsairShot['Light Shot']
  273.  
  274.  
  275.     -- Ranged gear
  276.     sets.midcast.RA = {ammo=gear.RAbullet,
  277.         head="Meghanada visor +1",neck="Marked gorget",ear1="Clearview Earring",ear2="Matanki Earring",
  278.         body="Meghanada cuirie +1",hands="Meghanada gloves +1",ring1="Hajduk Ring",ring2="Hajduk Ring",
  279.         back="Gunslinger's cape",waist="Eschan stone",legs="Feast hose",feet="Meghanada jambeaux +1"}
  280.    
  281.  
  282.     sets.midcast.RA.Acc = {ammo=gear.RAbullet,
  283.         head="Chasseur's tricorne",neck="Marked gorget",ear1="Clearview Earring",ear2="Matanki Earring",
  284.         body="Laksamana's Frac +1",hands="Floral gauntlets",ring1="Hajduk Ring",ring2="Hajduk Ring",
  285.         back="Gunslinger's cape",waist="Eschan stone",legs="Samnuha tights",feet="Pursuer's gaiters"}
  286.  
  287.    
  288.     -- Sets to return to when not performing an action.
  289.    
  290.     -- Resting sets
  291.     sets.resting = {ring2="Paguroidea Ring"}
  292.    
  293.  
  294.     -- Idle sets
  295.     sets.idle = {range="",ammo=gear.RAbullet,
  296.         head="Chasseur's tricorne",neck="Loricate torque",ear1="Clearview Earring",ear2="Matanki Earring",
  297.         body="Samnuha coat",hands={ name="Herculean Gloves", augments={'"Mag.Atk.Bns."+23','Rng.Atk.+23','Accuracy+5 Attack+5','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},ring1="Rajas Ring",
  298.         back="Gunslinger's cape",waist="Eschan stone",legs="Crimson cuisses"}
  299.        
  300.     sets.idle.Capacity = set_combine(sets.idle, {back="Aptitude mantle"})
  301.  
  302.     sets.idle.Town = {main="Fettering blade",sub="Odium",ammo=gear.RAbullet,
  303.         head="Chasseur's tricorne",neck="Loricate torque",ear1="Clearview Earring",ear2="Matanki Earring",
  304.         body="Samnuha coat",hands={ name="Herculean Gloves", augments={'"Mag.Atk.Bns."+23','Rng.Atk.+23','Accuracy+5 Attack+5','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},ring1="Rajas Ring",
  305.         back="Gunslinger's cape",waist="Eschan stone",legs="Crimson cuisses"}
  306.  
  307.     -- Defense sets
  308.     sets.defense.PDT = {
  309.         neck="Loricate torque",ear1="Clearview Earring",ear2="Matanki Earring",
  310.         ring2="Dark ring",
  311.         waist="Flume Belt"}
  312.  
  313.     sets.defense.MDT = {
  314.         neck="Loricate torque",ear1="Clearview Earring",ear2="Matanki Earring",
  315.         ring2="Dark Ring",
  316.         waist="Flume Belt"}
  317.    
  318.  
  319.     sets.Kiting = {legs="Lanun culottes"}
  320.  
  321.     -- Engaged sets
  322.  
  323.     -- Variations for TP weapon and (optional) offense/defense modes.  Code will fall back on previous
  324.     -- sets if more refined versions aren't defined.
  325.     -- If you create a set with both offense and defense modes, the offense mode should be first.
  326.     -- EG: sets.engaged.Dagger.Accuracy.Evasion
  327.    
  328.     -- Normal melee group
  329.     sets.engaged.Melee = {main="Fettering blade",sub="Atoyac",ammo=gear.RAbullet,
  330.         head="Adhemar bonnet",neck="Ej necklace",ear1="Bladeborn earring",ear2="Steelflash Earring",
  331.         body="Adhemar Jacket",hands="Adhemar wristbands",ring1="Cacoethic Ring",ring2="Enlivened Ring",
  332.         waist="Kentarch belt +1",legs="Samnuha tights"}
  333.    
  334.     sets.engaged.Acc = {main="Fettering blade",ammo=gear.RAbullet,
  335.         head="Meghanada visor +1",neck="Ej necklace",ear1="Tati earring",ear2="Steelflash Earring",
  336.         body="Meg. cuirie +1",hands="Meg. gloves +1",ring1="Cacoethic Ring",ring2="Enlivened Ring",
  337.         back="Kayapa cape",waist="Eschan stone",legs="Meghanada chausses +1",feet="Meghanada jambeaux +1"}
  338.  
  339.     sets.engaged.Melee.DW = {main="Fettering blade",sub="Odium",ammo=gear.RAbullet,
  340.         head="Adhemar bonnet",neck="Ej necklace",ear1="Tati earring",ear2="Steelflash Earring",
  341.         body="Adhemar Jacket",hands="Rawhide gloves",ring1="Cacoethic Ring",ring2="Enlivened Ring",
  342.         back="Kayapa cape",waist="Kentarch belt",legs="Samnuha tights"}
  343.    
  344.     sets.engaged.Acc.DW = {main="Fettering blade",sub="Odium",ammo=gear.RAbullet,
  345.         head="Adhemar bonnet",neck="Ej necklace",ear1="Tati earring",ear2="Steelflash Earring",
  346.         body="Adhemar Jacket",hands="Rawhide gloves",ring1="Cacoethic Ring",ring2="Enlivened Ring",
  347.         back="Kayapa cape",waist="Eschan stone",legs="Samnuha tights"}
  348.  
  349.  
  350.     sets.engaged.Ranged = {ammo=gear.RAbullet,
  351.         head="Umbani cap",neck="Ej necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  352.         hands="Floral gauntlets",ring1="Hajduk Ring",ring2="Hajduk ring",
  353.         back="Gunslinger's cape",waist="Eschan stone",legs="Feast hose",feet="Pursuer's gaiters"}
  354.        
  355.     sets.engaged.Capacity = set_combine(sets.engaged.Ranged, {back="Aptitude mantle"}) 
  356. end
  357.  
  358. -------------------------------------------------------------------------------------------------------------------
  359. -- Job-specific hooks for standard casting events.
  360. -------------------------------------------------------------------------------------------------------------------
  361.  
  362. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  363. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  364. function job_precast(spell, action, spellMap, eventArgs)
  365.     -- Check that proper ammo is available if we're using ranged attacks or similar.
  366.     if spell.action_type == 'Ranged Attack' or spell.type == 'WeaponSkill' or spell.type == 'CorsairShot' then
  367.         do_bullet_checks(spell, spellMap, eventArgs)
  368.     end
  369.  
  370.     if spell.skill == "Leaden salute" and spell.element == world.weather_element
  371.         then equipSet = set_combine(equipSet,{waist="Hachirin-no-Obi"})
  372.     end
  373.    
  374.     -- gear sets
  375.     if (spell.type == 'CorsairRoll' or spell.english == "Double-Up") and state.LuzafRing.value then
  376.         equip(sets.precast.LuzafRing)
  377.     elseif spell.type == 'CorsairShot' and state.CastingMode.value == 'Resistant' then
  378.         classes.CustomClass = 'Acc'
  379.     elseif spell.english == 'Fold' and buffactive['Bust'] == 2 then
  380.         if sets.precast.FoldDoubleBust then
  381.             equip(sets.precast.FoldDoubleBust)
  382.             eventArgs.handled = true
  383.         end
  384.     end
  385. end
  386.  
  387.  
  388. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  389. function job_aftercast(spell, action, spellMap, eventArgs)
  390.     if spell.type == 'CorsairRoll' and not spell.interrupted then
  391.         display_roll_info(spell)
  392.     end
  393. end
  394.  
  395. -------------------------------------------------------------------------------------------------------------------
  396. -- User code that supplements standard library decisions.
  397. -------------------------------------------------------------------------------------------------------------------
  398.  
  399. -- Return a customized weaponskill mode to use for weaponskill sets.
  400. -- Don't return anything if you're not overriding the default value.
  401. function get_custom_wsmode(spell, spellMap, default_wsmode)
  402.     if buffactive['Transcendancy'] then
  403.         return 'Brew'
  404.     end
  405. end
  406.  
  407.  
  408. -- Called by the 'update' self-command, for common needs.
  409. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  410. function job_update(cmdParams, eventArgs)
  411.     if newStatus == 'Engaged' and player.equipment.main == 'Chatoyant Staff' then
  412.         state.OffenseMode:set('Ranged')
  413.     end
  414. end
  415.  
  416.  
  417. -- Set eventArgs.handled to true if we don't want the automatic display to be run.
  418. function display_current_job_state(eventArgs)
  419.     local msg = ''
  420.    
  421.     msg = msg .. 'Off.: '..state.OffenseMode.current
  422.     msg = msg .. ', Rng.: '..state.RangedMode.current
  423.     msg = msg .. ', WS.: '..state.WeaponskillMode.current
  424.     msg = msg .. ', QD.: '..state.CastingMode.current
  425.  
  426.     if state.DefenseMode.value ~= 'None' then
  427.         local defMode = state[state.DefenseMode.value ..'DefenseMode'].current
  428.         msg = msg .. ', Defense: '..state.DefenseMode.value..' '..defMode
  429.     end
  430.    
  431.     if state.Kiting.value then
  432.         msg = msg .. ', Kiting'
  433.     end
  434.    
  435.     if state.PCTargetMode.value ~= 'default' then
  436.         msg = msg .. ', Target PC: '..state.PCTargetMode.value
  437.     end
  438.  
  439.     if state.SelectNPCTargets.value then
  440.         msg = msg .. ', Target NPCs'
  441.     end
  442.  
  443.     msg = msg .. ', Roll Size: ' .. ((state.LuzafRing.value and 'Large') or 'Small')
  444.    
  445.     add_to_chat(122, msg)
  446.  
  447.     eventArgs.handled = true
  448. end
  449.  
  450.  
  451. -------------------------------------------------------------------------------------------------------------------
  452. -- Utility functions specific to this job.
  453. -------------------------------------------------------------------------------------------------------------------
  454.  
  455. function define_roll_values()
  456.     rolls = {
  457.         ["Corsair's Roll"]   = {lucky=5, unlucky=9, bonus="Experience Points"},
  458.         ["Ninja Roll"]       = {lucky=4, unlucky=8, bonus="Evasion"},
  459.         ["Hunter's Roll"]    = {lucky=4, unlucky=8, bonus="Accuracy"},
  460.         ["Chaos Roll"]       = {lucky=4, unlucky=8, bonus="Attack"},
  461.         ["Magus's Roll"]     = {lucky=2, unlucky=6, bonus="Magic Defense"},
  462.         ["Healer's Roll"]    = {lucky=3, unlucky=7, bonus="Cure Potency Received"},
  463.         ["Puppet Roll"]      = {lucky=4, unlucky=8, bonus="Pet Magic Accuracy/Attack"},
  464.         ["Choral Roll"]      = {lucky=2, unlucky=6, bonus="Spell Interruption Rate"},
  465.         ["Monk's Roll"]      = {lucky=3, unlucky=7, bonus="Subtle Blow"},
  466.         ["Beast Roll"]       = {lucky=4, unlucky=8, bonus="Pet Attack"},
  467.         ["Samurai Roll"]     = {lucky=2, unlucky=6, bonus="Store TP"},
  468.         ["Evoker's Roll"]    = {lucky=5, unlucky=9, bonus="Refresh"},
  469.         ["Rogue's Roll"]     = {lucky=5, unlucky=9, bonus="Critical Hit Rate"},
  470.         ["Warlock's Roll"]   = {lucky=4, unlucky=8, bonus="Magic Accuracy"},
  471.         ["Fighter's Roll"]   = {lucky=5, unlucky=9, bonus="Double Attack Rate"},
  472.         ["Drachen Roll"]     = {lucky=3, unlucky=8, bonus="Pet Accuracy"},
  473.         ["Gallant's Roll"]   = {lucky=3, unlucky=7, bonus="Defense"},
  474.         ["Wizard's Roll"]    = {lucky=5, unlucky=9, bonus="Magic Attack"},
  475.         ["Dancer's Roll"]    = {lucky=3, unlucky=7, bonus="Regen"},
  476.         ["Scholar's Roll"]   = {lucky=2, unlucky=6, bonus="Conserve MP"},
  477.         ["Bolter's Roll"]    = {lucky=3, unlucky=9, bonus="Movement Speed"},
  478.         ["Caster's Roll"]    = {lucky=2, unlucky=7, bonus="Fast Cast"},
  479.         ["Courser's Roll"]   = {lucky=3, unlucky=9, bonus="Snapshot"},
  480.         ["Blitzer's Roll"]   = {lucky=4, unlucky=9, bonus="Attack Delay"},
  481.         ["Tactician's Roll"] = {lucky=5, unlucky=8, bonus="Regain"},
  482.         ["Allies's Roll"]    = {lucky=3, unlucky=10, bonus="Skillchain Damage"},
  483.         ["Miser's Roll"]     = {lucky=5, unlucky=7, bonus="Save TP"},
  484.         ["Companion's Roll"] = {lucky=2, unlucky=10, bonus="Pet Regain and Regen"},
  485.         ["Avenger's Roll"]   = {lucky=4, unlucky=8, bonus="Counter Rate"},
  486.     }
  487. end
  488.  
  489. function display_roll_info(spell)
  490.     rollinfo = rolls[spell.english]
  491.     local rollsize = (state.LuzafRing.value and 'Large') or 'Small'
  492.  
  493.     if rollinfo then
  494.        -- add_to_chat(104, spell.english..' provides a bonus to '..rollinfo.bonus..'.  Roll size: '..rollsize)
  495.         add_to_chat(104, spell.english..' >> '..rollinfo.bonus..'.  Roll size: '..rollsize)
  496.         add_to_chat(104, 'Lucky '..tostring(rollinfo.lucky)..', Unlucky '..tostring(rollinfo.unlucky)..'.')
  497.     end
  498. end
  499.  
  500.  
  501. -- Determine whether we have sufficient ammo for the action being attempted.
  502. function do_bullet_checks(spell, spellMap, eventArgs)
  503.     local bullet_name
  504.     local bullet_min_count = 1
  505.    
  506.     if spell.type == 'WeaponSkill' then
  507.         if spell.skill == "Marksmanship" then
  508.             if spell.element == 'None' then
  509.                 -- physical weaponskills
  510.                 bullet_name = gear.WSbullet
  511.             else
  512.                 -- magical weaponskills
  513.                 bullet_name = gear.MAbullet
  514.             end
  515.         else
  516.             -- Ignore non-ranged weaponskills
  517.             return
  518.         end
  519.     elseif spell.type == 'CorsairShot' then
  520.         bullet_name = gear.QDbullet
  521.     elseif spell.action_type == 'Ranged Attack' then
  522.         bullet_name = gear.RAbullet
  523.         if buffactive['Triple Shot'] then
  524.             bullet_min_count = 3
  525.         end
  526.     end
  527.    
  528.     local available_bullets = player.inventory[bullet_name] or player.wardrobe[bullet_name]
  529.    
  530.     -- If no ammo is available, give appropriate warning and end.
  531.     if not available_bullets then
  532.         if spell.type == 'CorsairShot' and player.equipment.ammo ~= 'empty' then
  533.             add_to_chat(104, 'No Quick Draw ammo left.  Using what\'s currently equipped ('..player.equipment.ammo..').')
  534.             return
  535.         elseif spell.type == 'WeaponSkill' and player.equipment.ammo == gear.RAbullet then
  536.             add_to_chat(104, 'No weaponskill ammo left.  Using what\'s currently equipped (standard ranged bullets: '..player.equipment.ammo..').')
  537.             return
  538.         else
  539.             add_to_chat(104, 'No ammo ('..tostring(bullet_name)..') available for that action.')
  540.             eventArgs.cancel = true
  541.             return
  542.         end
  543.     end
  544.    
  545.     -- Don't allow shooting or weaponskilling with ammo reserved for quick draw.
  546.     if spell.type ~= 'CorsairShot' and bullet_name == gear.QDbullet and available_bullets.count <= bullet_min_count then
  547.         add_to_chat(104, 'No ammo will be left for Quick Draw.  Cancelling.')
  548.         eventArgs.cancel = true
  549.         return
  550.     end
  551.    
  552.     -- Low ammo warning.
  553.     if spell.type ~= 'CorsairShot' and state.warned.value == false
  554.         and available_bullets.count > 1 and available_bullets.count <= options.ammo_warning_limit then
  555.         local msg = '*****  Low ammo warning: '..bullet_name..' *****'
  556.         --local border = string.repeat("*", #msg)
  557.         local border = ""
  558.         for i = 1, #msg do
  559.             border = border .. "="
  560.         end
  561.        
  562.         --add_to_chat(104, border)
  563.         add_to_chat(104, msg)
  564.         --add_to_chat(104, border)
  565.  
  566.         state.warned:set()
  567.     elseif available_bullets.count > options.ammo_warning_limit and state.warned then
  568.         state.warned:reset()
  569.     end
  570. end
  571.  
  572. -- Select default macro book on initial load or subjob change.
  573. --function select_default_macro_book()
  574. --    set_macro_page(1, 19)
  575. --end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement