Advertisement
Guest User

RNG.lua

a guest
Sep 5th, 2016
691
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 64.89 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job.  Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. hastetype=1
  6. hastesambatype=0
  7. autora = false
  8. --default_ws = "Jishnu's Radiance"
  9. default_ws = "Trueflight"
  10. print(world.weather_element)
  11.  
  12. function get_sets()
  13.     mote_include_version = 2
  14.  
  15.     -- Load and initialize the include file.
  16.     include('Mote-Include.lua')
  17.     include('organizer-lib')
  18.     send_command('lua u autora')
  19. end
  20.  
  21. -- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
  22. function job_setup()
  23. end
  24.  
  25. -------------------------------------------------------------------------------------------------------------------
  26. -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
  27. -------------------------------------------------------------------------------------------------------------------
  28.  
  29. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  30. function user_setup()
  31.     state.OffenseMode:options('Normal', 'Fodder', 'Acc', 'AccExtreme')
  32.     state.RangedMode:options('Normal', 'Fodder', 'Acc', 'AccExtreme','threehit')
  33.     --state.HybridMode:options('Normal', 'Evasion', 'PDT')
  34.     --state.RangedMode:options('Normal', 'Acc')
  35.     --state.WeaponskillMode:options('Normal', 'Acc', 'Mod')
  36.     --state.accuracy = M{['description']="Accuracy Level",'Normal','Light', 'All Out'}
  37.     state.damagetaken = M{['description']="Damage Taken",'None','DTLight', 'DT', 'MagicLight','MagicEvasion'}
  38.     state.hastemode = M{['description'] = 'Haste Mode'}
  39.     state.hastemode:options('NoHaste','HasteI','HasteII','Capped')
  40.     state.flurrymode = M{['description'] = 'Flurry Mode'}
  41.     state.flurrymode:options('Flurry','FlurryII')
  42.     state.rangetype = M{['description'] = 'Ranged Type'}
  43.     --state.rangetype:options('Crossbow','Bow','Gun','MartialGun','MachineCrossbow','Crossbow2','Throwing')
  44.     state.rangetype:options('Crossbow','Bow','Gun')
  45.     state.cpmode = M(false, 'CP Mode')
  46.     state.autows = M(false, 'AutoWS')
  47.     state.runaway2 = M(false, 'Run Away! (Jute Boot Version)')
  48.     state.idlemode = M{['description']="Idle Mode",'Normal','Regen'}
  49.     state.hasteknife = M(false, 'Blurred Dagger')
  50.     state.mabdagger = M(false, 'MAB Dagger')
  51.     state.mainweapon = M{['description'] = 'Main Weapon'}
  52.     --state.mainweapon:options('Perun','STPExtreme','Malevolence','Kustawi','Oneiros','KrakenClub')
  53.     state.mainweapon:options('Perun','STPExtreme','Malevolence','Kustawi','Oneiros')
  54.     state.pullmode = M(false, 'Pull Mode')
  55.    
  56.  
  57.     state.Buff.Barrage = buffactive.Barrage or false
  58.     state.Buff.Camouflage = buffactive.Camouflage or false
  59.     state.Buff.Overkill = buffactive.Overkill or false
  60.  
  61.     -- Additional local binds
  62.     --send_command('bind ^q gs c hastetype')
  63.     send_command('bind ^q gs c cycle flurrymode')
  64.     send_command('bind ^d gs c shoot')
  65.     send_command('bind !d gs c shootstop')
  66.     send_command('bind !q gs c rangetype')
  67.     send_command('bind @q gs c hastesambatype')
  68.     send_command('bind f10 gs c cycle idlemode')
  69.     send_command('bind @home gs c warpring')
  70.    
  71.     send_command('bind ^%m gs c cycle meleetype')
  72.     send_command('bind f11 gs c toggle_dt')
  73.     --send_command('bind @f9 gs c cycle mainweapon')
  74.     send_command('bind @f9 gs c mainweapon')
  75.     send_command('bind !f11 gs c cycle damagetaken')
  76.     send_command('bind ^f11 gs c toggle pullmode')
  77.     send_command('alias stp_m7 gs c toggle mabdagger')
  78.     send_command('alias cp input /checkparam <me>')
  79.     send_command('alias trust_levi input /ma "Amchuchu" <me>;wait 5;input /ma "Yoran-Oran (UC)" <me>;wait 5;input /ma "King of Hearts" <me>;wait 5;input /ma "Brygid" <me>;wait 5;input /ma "Ulmia" <me>')
  80.     --send_command('alias trust_bcnm input /ma "August" <me>;wait 5;input /ma "Yoran-Oran (UC)" <me>;wait 5;input /ma "Arciela II" <me>;wait 5;input /ma "Qultada" <me>;wait 5;input /ma "Ulmia" <me>')
  81.     send_command('alias trust_bcnm input /ma "August" <me>;wait 5;input /ma "Yoran-Oran (UC)" <me>;wait 5;input /ma "Arciela II" <me>;wait 5;input /ma "Qultada" <me>;')
  82.     send_command('alias rg lua r gearswap')
  83.     send_command('bind ^[ gs c toggle cpmode')
  84.     send_command('bind ![ gs c toggle autows')
  85.  
  86.     --send_command('bind !- gs c cycle targetmode')
  87.     --send_command('bind !\ gs c maxth')
  88.     --send_command('bind f11 gs c magicevasion')
  89.     --send_command('bind f11 gs c damagetaken')
  90.     --send_command('bind f10 gs c ranged')
  91.     --send_command('bind f9 gs c accmode')
  92.     --send_command('bind ^q gs c dw')
  93.  
  94.     --send_command('alias stp_m6 gs c maxth')
  95.     send_command('alias stp_m7 gs c hastemode')
  96.     --send_command('bind f12 gs equip idle')
  97.     send_command('bind ^/ gs c cycle runaway')
  98.     send_command('bind !/ gs c cycle runaway2')
  99.     --send_command('alias stp_m10 input /ma "Monomi: Ichi" <me>')
  100.     send_command('alias stp_m10 gs c switch_dualbox_binds')
  101.     send_command('bind numpad1 setkey f8 down;wait .1;setkey f8 up;input /attack <t>')
  102.     --send_command('bind numpad3 input /ws "Jishnu\'s Radiance" <t>')
  103.     send_command('bind %numpad3 input /ws "Trueflight" <t>')
  104.     send_command('bind @numpad1 gs c ammotype "Abrasion_Bolt"')
  105.     send_command('bind @numpad2 gs c ammotype "Quelling_Bolt"')
  106.     send_command('bind @numpad4 gs c ammotype "Bloody_Bolt"')
  107.     send_command('bind @numpad5 gs c ammotype "Righteous_Bolt"')
  108.  
  109.     --send_command('alias stp_m11 input /ws "Rudra\'s Storm" <t>')
  110.     --send_command('alias stp_m12 input /ws "Aeolean Edge" <t>')
  111.     --send_command('alias stp_m13 input /ws "Evisceration" <t>')
  112.     send_command('alias stp_m13 input /ws "Last Stand" <t>')
  113.     send_command('bind %numpad1 setkey f8 down;wait .1;setkey f8 up;input /attack <t>')
  114.     --send_command('bind %numpad3 input /ws "Jishnu\'s Radiance" <t>')
  115.     send_command('bind %numpad3 input /ws "Trueflight" <t>')
  116.     --send_command('bind %numpad3 input /ws "Refulgent Arrow" <t>')
  117.     send_command('bind ^%= setkey f8 down;wait .1;setkey f8 up;')
  118.     send_command('alias trust_wkr input /ma "August" <me>;wait 5;input /ma "Yoran-Oran (UC)" <me>;wait 5;input /ma "Qultada" <me>;wait 5;input /ma "Koru-Moru" <me>;wait 5;input /ma "Ulmia" <me>')
  119.     --send_command('alias trust_dmn input /ma "August" <me>;wait 5;input /ma "Yoran-Oran (UC)" <me>;wait 5;input /ma "Qultada" <me>;wait 5;input /ma "Selh\'teus" <me>;wait 5;input /ma "Ulmia" <me>')
  120.     send_command('alias trust_dmn input /ma "August" <me>;wait 5;input /ma "Yoran-Oran (UC)" <me>;wait 5;input /ma "Koru-Moru" <me>;wait 5;input /ma "Ulmia" <me>;wait 5;/ma "Selh\'teus" <me>')
  121.     send_command('alias trust_woe input /ma "August" <me>;wait 5;input /ma "Yoran-Oran (UC)" <me>;wait 5;input /ma "Ullegore" <me>;wait 5;input /ma "Adelheid" <me>;wait 5;input /ma "Zeid II" <me>')
  122.     send_command('alias trust_bcnm input /ma "Gessho" <me>;wait 5;input /ma "Yoran-Oran (UC)" <me>;wait 5;input /ma "Selh\'teus" <me>;wait 5;input /ma "Uka Tothlin" <me>;wait 5;input /ma "Arciela II" <me>')
  123.  
  124.    
  125.     send_command('bind @1 gs c setws Trueflight')
  126.     send_command('bind @3 gs c setws Last_Stand')
  127.  
  128.     --send_command('bind ^f11 gs c magicevasion')
  129.  
  130.     select_default_macro_book()
  131. end
  132.  
  133. -- Called when this job file is unloaded (eg: job change)
  134. function user_unload()
  135.     send_command('unbind ^`')
  136.     send_command('unbind !-')
  137.     send_command('unbind %numpad1')
  138.     send_command('unbind %numpad3')
  139. end
  140.  
  141. -- Define sets and vars used by this job file.
  142. function init_gear_sets()
  143.  
  144.     lutiancape={ name="Lutian Cape", augments={'STR+2','AGI+1','"Store TP"+3','"Snapshot"+2',}}
  145.     belenus={ name="Belenus's Cape", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','"Store TP"+10',}}
  146.     belenuswsd={ name="Belenus's Cape", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','Weapon skill damage +10%',}}
  147.     belenusjish={ name="Belenus's Cape", augments={'DEX+20','Rng.Acc.+20 Rng.Atk.+20','Crit.hit rate+10',}}
  148.     belenuswsdagi={ name="Belenus's Cape", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','AGI+10','Weapon skill damage +10%',}}
  149.    
  150.     --DefaultAmmo = {[gear.Bow] = "Cronos arrow", [gear.Gun] = "Achiyalabopa bullet"}
  151.     --U_Shot_Ammo = {[gear.Bow] = "Cronos arrow", [gear.Gun] = "Achiyalabopa bullet"}
  152.    
  153.     --sets.SilenceDagger = {main="Levante dagger"}
  154.     --sets.Mainhand = {main="Perun"}
  155.  
  156.     include('augmented-items.lua')
  157.     sets.cpmode = {back="Mecisto. Mantle"}
  158.     sets.basetp = {
  159.         head=ah_head,
  160.         hands=ah_hands,
  161.         body=ah_body,
  162.         legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  163.         feet={ name="Herculean Boots", augments={'Accuracy+29','"Triple Atk."+3','Attack+11',}},
  164.     }
  165.  
  166.     organizer_items = {
  167.         i1="Warp Ring",
  168.         i2="Dim. Ring (Mea)",
  169.         i3="Mephitas's Ring +1",
  170.         i5="Holy Water",
  171.         i6="Remedy",
  172.         i7="Echo Drops",
  173.         i8="Sublime Sushi",
  174.         i9="Sublime Sushi +1",
  175.         i10="Pot-au-feu",
  176.         i11="Pot-au-feu +1",
  177.         i12="Kohlrouladen +1",
  178.         i13="Kohlrouladen",
  179.         i14="Bloody Bolt",
  180.         i15="Miso Ramen",
  181.         i16="Panacea",
  182.         i17="Vile Elixir",
  183.         i18="Vile Elixir +1",
  184.         i19="Echad Ring",
  185.         i20="Trizek Ring",
  186.         i21="Capacity Ring",
  187.         i22="Anniversary Ring",
  188.         i23="Echad Ring",
  189.         i24="Expertise Ring",
  190.         i25="Warp Cudgel",
  191.         i26="Facility Ring",
  192.         i27="Pear Crepe",
  193.         --i28="Adlivun bullet pouch"
  194.     }
  195.    
  196.     if player.sub_job == "NIN" then
  197.         sets.ninsub = {
  198.             ammo="Toolbag (Shihe)",
  199.             ring1="Shihei",
  200.             ring2="Shinobi-Tabi",
  201.             head="Sanjaku-Tenugui",
  202.         }
  203.     end
  204.  
  205.  
  206.     ------------------------------------------------------------------
  207.     -- Default Base Gear Sets for Ranged Attacks. Geared for Bow
  208.     ------------------------------------------------------------------
  209.     sets.mainweapon = {}
  210.     sets.mainweapon.Kustawi = {
  211.         main="Kustawi +1",
  212.         sub="Legion Scutum"
  213.     }
  214.     sets.mainweapon.Oneiros = {
  215.         main="Oneiros Knife",
  216.         sub="Legion Scutum"
  217.     }
  218.     sets.mainweapon.Perun = {
  219.         main="Perun +1",
  220.         sub="Legion Scutum"
  221.     }
  222.     sets.mainweapon.Malevolence = {
  223.         main={ name="Malevolence", augments={'INT+10','Mag. Acc.+10','"Mag.Atk.Bns."+10','"Fast Cast"+5',}},
  224.         sub="Legion Scutum"
  225.     }
  226.     sets.mainweapon.KrakenClub={
  227.         main="Kraken Club",
  228.         sub="Legion Scutum"
  229.     }
  230.     sets.mainweapon.STPExtreme={
  231.         main="Mekki Shakki",
  232.         sub="Bloodrain Strap"
  233.     }
  234.     if player.sub_job == "DNC" or player.sub_job == "NIN" then
  235.         sets.mainweapon.Kustawi = {
  236.             main="Kustawi +1",
  237.             sub="Perun +1"
  238.         }
  239.         sets.mainweapon.Oneiros = {
  240.             main="Kustawi +1",
  241.             sub="Oneiros Knife",
  242.         }
  243.         sets.mainweapon.Perun = {
  244.             main="Perun +1",
  245.             sub="Perun"
  246.         }
  247.         sets.mainweapon.Malevolence = {
  248.             main={ name="Malevolence", augments={'INT+10','Mag. Acc.+10','"Mag.Atk.Bns."+10','"Fast Cast"+5',}},
  249.             sub={ name="Malevolence", augments={'INT+9','Mag. Acc.+10','"Mag.Atk.Bns."+9','"Fast Cast"+4',}},
  250.             --sub="Trilling Dagger"
  251.         }
  252.         sets.mainweapon.KrakenClub={
  253.             main="Kraken Club",
  254.             sub="Kustawi +1"
  255.         }
  256.     end
  257.     sets.alt = {
  258.         main="Oneiros Knife",
  259.         body="Sayadio's Kaftan",
  260.         feet=p_feet
  261.     }
  262.     sets.midcast.RA = {
  263.         head={ name="Arcadian Beret +1", augments={'Enhances "Recycle" effect',}},
  264.         neck="Gaudryi necklace",
  265.         hands="Carmine Finger Gauntlets +1",
  266.         body="Amini Caban +1",
  267.         left_ring="Apate Ring",
  268.         right_ring="Rajas Ring",
  269.         ear1="Telos earring",
  270.         ear2="Enervating earring",
  271.         legs=ah_legs2,
  272.         feet=ah_feet,
  273.         waist="Yemaya Belt",
  274.         back=belenus,
  275.     }
  276.     sets.midcast.RA.Fodder = set_combine(sets.midcast.RA, {
  277.         head={ name="Arcadian Beret +1", augments={'Enhances "Recycle" effect',}},
  278.         neck="Ainia Collar",
  279.         body=arc_body,
  280.         hands="Amini Glovelettes +1",
  281.         left_ear="Telos Earring",
  282.         right_ear="Dedition Earring",
  283.         left_ring="Apate Ring",
  284.         right_ring="Rajas Ring",
  285.         waist="Yemaya Belt",
  286.         legs="Amini Brague +1",
  287.         feet="Tatena. Sune.",
  288.         back=belenus
  289.     })
  290.     sets.midcast.RA.Acc = set_combine(sets.midcast.RA, {
  291.         head="Meghanada Visor +1",
  292.         body=hercvest_racc,
  293.         hands=ah_hands,
  294.         legs=ah_legs2,
  295.         feet=hercboots_agi,
  296.         neck="Gaudryi Necklace",
  297.         waist="Yemaya Belt",
  298.         left_ear="Telos Earring",
  299.         right_ear="Enervating Earring",
  300.         left_ring="Apate Ring",
  301.         right_ring="Rajas Ring",
  302.     })
  303.     sets.midcast.RA.AccExtreme = set_combine(sets.midcast.RA.Acc, {
  304.         head="Meghanada Visor +1",
  305.         body=hercvest_racc,
  306.         hands="Kobo Kote",
  307.         legs=ah_legs2,
  308.         feet=hercboots_agi,
  309.         neck="Marked Gorget",
  310.         waist="Kwahu Kachina Belt",
  311.         left_ear="Telos Earring",
  312.         right_ear="Enervating Earring",
  313.         left_ring="Hajduk Ring +1",
  314.         right_ring="Cacoethic Ring +1",
  315.     })
  316.     sets.midcast.RA.threehit = {
  317.         head=arc_head,
  318.         ear1="Telos Earring",
  319.         ear2="Dedition Earring",
  320.         body=hercvest_racc,
  321.         hands=ah_hands,
  322.         ring1="Apate Ring",
  323.         ring2="Rajas Ring",
  324.         legs=ah_legs2,
  325.         feet=hercboots_agi,
  326.         back=belenus,
  327.         neck="Ainia Collar",
  328.         waist="Yemaya Belt",
  329.     }
  330.     sets.racc = sets.midcast.RA.AccExtreme
  331.     --  sets.midcast.RA.Acc = set_combine(sets.midcast.Acc, {
  332.     --      back=lutiancape,
  333.     --      ring1="Longshot Ring",
  334.     --      body="Kyujutsugi",
  335.     --  })
  336.     --  sets.midcast.RA.AccExtreme = set_combine(sets.midcast.RA.AccExtreme, {
  337.     --      neck="Iqabi Necklace", hands="Sigyn's Bazubands",
  338.     --      ring1="Hajduk Ring", ring2="Longshot Ring",
  339.     --      legs="Arcadian Braccae +1"
  340.     --  })
  341.     sets.buff.Barrage = set_combine(sets.midcast.RA.AccExtreme, {
  342.         hands="Orion Bracers +1",
  343.     })
  344.     sets.BarrageExtra = {
  345.         legs=desultor,
  346.  
  347.     }
  348.  
  349.  
  350.     --------------------------------------
  351.     -- Precast sets
  352.     --------------------------------------
  353.  
  354.     -- Precast sets to enhance JAs
  355.     sets.precast.JA['Bounty Shot'] = {hands="Amini Glovelettes +1"}
  356.     sets.precast.JA['Double Shot'] = {head="Amini Gapette +1"}
  357.     sets.precast.JA['Camouflage'] = {body="Orion Jerkin +1"}
  358.     sets.precast.JA['Sharpshot'] = {legs="Orion Braccae +1"}
  359.     sets.precast.JA['Velocity Shot'] = {body="Amini Caban +1"}
  360.     sets.precast.JA['Scavenge'] = {feet="Orion Socks +1"}
  361.     sets.precast.JA['Unlimited Shot'] = {feet="Amini Bottillons +1"}
  362.     sets.precast.JA['Shadowbind'] = {hands="Orion Bracers +1"}
  363.  
  364.     sets.precast.JA['Eagle Eye Shot'] = set_combine(sets.midcast.RA, {--EES maxes accuracy, only worry about crit chance, boost to EES from relic, attack an crit damage
  365.         --head="Uk'uxkaj Cap",
  366.         --ear1="Flame Pearl",
  367.         --ear2="Flame Pearl",
  368.         --neck="Rancor Collar",
  369.         --back="Buquwik Cape",
  370.         --hands="Seiryu's Kote",
  371.         ring1="Ifrit Ring",
  372.         --ring2="Ifrit Ring +1",
  373.         --legs="Amini Brague +1",
  374.         legs=arc_legs, --+20% EES dmg
  375.         --feet="Arcadian Socks +1"
  376.     })
  377.  
  378.     --sets.slashing = {main="Pukulatmuj",sub="Deliverance +1"}
  379.     --sets.blunt = {main="Pukulatmuj"}
  380.  
  381.  
  382.     if player.sub_job == "DNC" then
  383.         sets.precast.Waltz  = {
  384.             ring1="Asklepian Ring",
  385.             --legs="Dashing Subligar",
  386.             body="Passion Jacket",
  387.             feet=rawhide_boots,
  388.         }
  389.     end
  390.     -- Waltz set (chr and vit)
  391.     --sets.precast.Waltz = {ammo="Sonia's Plectrum",
  392.     --    head="Whirlpool Mask",
  393.     --    body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Asklepian Ring",
  394.     --    back="Iximulew Cape",waist="Caudata Belt",legs="Pillager's Culottes +1",feet="Plunderer's Poulaines +1"}
  395.  
  396.     -- Fast cast sets for spells
  397.     sets.precast.FC = {
  398.         --head="Haruspex Hat",
  399.         head=herchelm_fastcast,
  400.         neck="Orunmila's Torque",
  401.         body="Dread Jupon",
  402.         hands="Leyline Gloves",
  403.         --ring1="Prolix Ring",
  404.         ring1="Weatherspoon Ring",
  405.         ring2="Rahab Ring",
  406.         --legs="Limbo Trousers",
  407.         ear1="Enchntr. Earring +1",
  408.         ear2="Loquac. Earring"
  409.     }
  410.  
  411.     --sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  412.     sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {body="Passion Jacket",back="Mujin Mantle"})
  413.  
  414.     sets.precast.RA = {
  415.         head="Orion Beret +1", --R:14
  416.         body="Amini Caban +1",--V:22
  417.         hands={ name="Carmine Fin. Ga. +1", augments={'Rng.Atk.+20','"Mag.Atk.Bns."+12','"Store TP"+6',}},--S:8 R:11
  418.         --waist="Yemaya Belt",--R:5
  419.         waist="Impulse Belt",--S:3
  420.         legs=ah_legs,--S:9 R:10
  421.         feet="Meghanada Jambeaux +1",--S:8
  422.         back=belenus, --V:2
  423.         --Kustawi+1 and Kustawi R:14
  424.     }
  425.     --Snapshot: 70
  426.     ---- Merits:10
  427.     ---- Gear: 22+8+9+8+3=50
  428.     ---- Gifts: 10
  429.     --Rapidshot: 84
  430.     ---- Merits:5
  431.     ---- Traits:30
  432.     ---- Gear: 14+11+10+14 = 49
  433.     sets.precast.RA.Flurry = {
  434.         head="Orion Beret +1", --R:14
  435.         body="Amini Caban +1",--V:22
  436.         hands={ name="Carmine Fin. Ga. +1", augments={'Rng.Atk.+20','"Mag.Atk.Bns."+12','"Store TP"+6',}},--S:8 R:11
  437.         waist="Yemaya Belt",--R:5
  438.         legs=ah_legs,--S:9 R:10
  439.         --feet="Meghanada Jambeaux +1",--S:8
  440.         feet=p_feet,--R:10
  441.         back=belenus, --V:2
  442.         --Kustawi+1 and Kustawi R:14
  443.     }
  444.     --Snapshot: 74
  445.     ---- Merits:10
  446.     ---- Gear: 22+9+8=39
  447.     ---- Flurry1: 15
  448.     ---- Gifts: 10
  449.     --Rapidshot: 94
  450.     ---- Merits:5
  451.     ---- Traits:30
  452.     ---- Gear:14+11+5+10+5+14=59
  453.     sets.precast.RA.Flurry2 = {
  454.         head="Orion Beret +1", --R:14
  455.         body=arc_body,--R:12
  456.         hands={ name="Carmine Fin. Ga. +1", augments={'Rng.Atk.+20','"Mag.Atk.Bns."+12','"Store TP"+6',}},--S:8 R:11
  457.         --waist="Yemaya Belt",--R:5
  458.         waist="Impulse Belt",--S:3
  459.         legs=ah_legs,--S:9 R:10
  460.         feet=p_feet,--R:10
  461.         back=belenus, --V:2
  462.         --Kustawi+1 and Kustawi R:14
  463.     }
  464.     --Snapshot: 72
  465.     ---- Merits:10
  466.     ---- Gear: 8+9+2=19
  467.     ---- Gifts: 10
  468.     ---- Flurry 2: 30
  469.     --Rapidshot: 106
  470.     ---- Merits:5
  471.     ---- Traits:30
  472.     ---- Gear:14+12+11+5+10+10+14=71
  473.  
  474.     -- Weaponskill sets
  475.  
  476.     -- Default set for any weaponskill that isn't any more specifically defined
  477.     --sets.precast.WS = {ammo="Thew Bomblet",
  478.     --    head="Whirlpool Mask",neck=gear.ElementalGorget,ear1="Bladeborn Earring",ear2="Steelflash Earring",
  479.     --    body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Rajas Ring",ring2="Epona's Ring",
  480.     --    back="Atheling Mantle",waist="Caudata Belt",legs="Manibozho Brais",feet="Iuitl Gaiters +1"}
  481.     --sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Falcon Eye", back="Letalis Mantle"})
  482.     --sets.precast.WS.Acc = set_combine(sets.precast.WS, {neck="Ej Necklace"})
  483.     sets.precast.WS = {
  484.         head=p_head,
  485.         neck="Fotia Gorget",
  486.         body="Abnoba Kaftan",
  487.         hands={ name="Carmine Fin. Ga. +1", augments={'Rng.Atk.+20','"Mag.Atk.Bns."+12','"Store TP"+6',}},
  488.         ear1="Ishvara earring",
  489.         ear2=moonshade,
  490.         ring1="Apate Ring",
  491.         ring2="Rajas Ring",
  492.         legs=herctrou_cdmg,
  493.         feet=ah_feet,
  494.         waist="Fotia Belt",
  495.         back=belenuswsd
  496.         --hands="Adhemar Wristbands",
  497.         --ear2="Domin. Earring +1",
  498.         --feet={ name="Herculean Boots", augments={'Accuracy+30','DEX+14','Attack+10',}},
  499.         --back=belenus,
  500.         --ring1="Ramuh Ring +1",
  501.         --legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  502.         --legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  503.         --legs="Darraigner's brais",
  504.         --ear1="Jupiter's pearl",
  505.         --ear2="Jupiter's pearl",
  506.         --ear2="Bladeborn Earring",
  507.         --ring1="Tyrant's Ring",
  508.         --ring1="Epona's Ring",
  509.         --ring2="Oneiros Ring",
  510.         --back="Mecisto. Mantle",
  511.     }
  512.  
  513.     -- fill missing slots with base set --
  514.     sets.precast.WS['Jishnu\'s Radiance'] = set_combine(sets.precast.WS, {
  515.         --head={ name="Arcadian Beret +1", augments={'Enhances "Recycle" effect',}},
  516.         head=ah_head,
  517.         --head=herchelm_crit,
  518.         ear1="Telos earring",
  519.         --body="Meghanada Cuirie +1",
  520.         body="Amini Caban +1",
  521.         hands="Meghanada Gloves +1",
  522.         ring2="Begrudging Ring",
  523.         legs=herctrou_cdmg,
  524.         feet=hercboots_cdmg,
  525.         back=belenusjish,
  526.         --feet="Thereoid Greaves",
  527.         --head="Adhemar Bonnet",
  528.         --legs="Amini Brague +1",
  529.         --      body="Sayadio's Kaftan",
  530.         --      hands="Adhemar Wristbands",
  531.         --      ring1="Ifrit Ring",
  532.         --      ring2="Garuda Ring",
  533.         --      ear1="Enervating earring",
  534.         --      ear2="Neritic earring",
  535.         --      legs={ name="Herculean Trousers", augments={'Rng.Acc.+29','Crit. hit damage +4%','Rng.Atk.+11',}},
  536.         --      feet="Orion Socks +1",
  537.         --      neck="Fotia Gorget",
  538.         --      ear2="Moonshade Earring",
  539.         --      waist="Fotia Belt",
  540.         --      legs="Amini Brague +1",
  541.         --      ring1="Rajas Ring",
  542.         --      ring2="Ramuh Ring",
  543.         --      back="Rancorous Mantle"
  544.         --body="Amini Caban +1",
  545.         --legs="Darraigner's brais",
  546.     })
  547.     sets.Jishnus = sets.precast.WS['Jishnu\'s Radiance']
  548.     sets.precast.WS['Jishnu\'s Radiance'].Acc = set_combine(sets.Jishnus, {
  549.         --body="Sayadio's Kaftan",
  550.         --feet={ name="Herculean Boots", augments={'Rng.Acc.+25 Rng.Atk.+25','Crit. hit damage +4%','DEX+11','Rng.Acc.+6',}},
  551.     })
  552.     sets.precast.WS['Jishnu\'s Radiance'].AccExtreme = set_combine(sets.Jishnus, {
  553.         --main="Perun",
  554.         --hands="Adhemar Wristbands",
  555.         --neck="Erudit. Necklace",
  556.         --left_ear="Enervating Earring",
  557.         --right_ear="Volley Earring",
  558.         --right_ear="Neritic Earring",
  559.         --right_ear=moonshade,
  560.         --ring1="Hajduk Ring",
  561.         --ring2="Cacoethic Ring +1",
  562.         --feet=p_feet,
  563.         --back="Quarrel Mantel"
  564.         --neck="Gaudryi Necklace",
  565.         head=herchelm_crit,
  566.         neck="Marked Gorget",
  567.         body=hercvest_racc
  568.         --back=belenus
  569.     })
  570.  
  571.  
  572.     sets.ApexArrow = {
  573.         --body="Sayadio's Kaftan",
  574.         body=hercvest_racc,
  575.         hands="Kobo Kote",
  576.         ring1="Hajduk Ring",
  577.         ring2="Cacoethic Ring +1",
  578.     }
  579.     sets.precast.WS['Apex Arrow'] = set_combine(sets.precast.WS, sets.ApexArrow)
  580.     sets.precast.WS['Apex Arrow'].Acc = set_combine(sets.ApexArrow, {
  581.         --body="Sayadio's Kaftan",
  582.     })
  583.     sets.precast.WS['Apex Arrow'].AccExtreme = set_combine(sets.ApexArrow, {
  584.         --body="Sayadio's Kaftan",
  585.     })
  586.     --sets.precast.WS['Apex Arrow'].Mid = set_combine(sets.precast.WS.Mid, sets.ApexArrow)
  587.     --sets.precast.WS['Apex Arrow'].Acc = set_combine(sets.precast.WS.Acc, sets.ApexArrow)
  588.  
  589.     sets.RefulgentArrow = {
  590.     }
  591.     sets.precast.WS['Refulgent Arrow'] = set_combine(sets.precast.WS, sets.RefulgentArrow)
  592.     sets.precast.WS['Refulgent Arrow'].Acc = set_combine(sets.RefulgentArrow, {
  593.         --body="Sayadio's Kaftan",
  594.     })
  595.     sets.precast.WS['Refulgent Arrow'].AccExtreme = set_combine(sets.RefulgentArrow, {
  596.         --body="Sayadio's Kaftan",
  597.         head=herchelm_racc,
  598.         neck="Marked Gorget",
  599.         body=hercvest_racc,
  600.         back=belenus
  601.     })
  602.     --sets.precast.WS['Refulgent Arrow'].Mid = set_combine(sets.precast.WS.Mid, sets.RefulgentArrow)
  603.     --sets.precast.WS['Refulgent Arrow'].Acc = set_combine(sets.precast.WS.Acc, sets.RefulgentArrow)
  604.  
  605.     -- AGI WS --
  606. --  sets.AGIWS = {
  607. --      head=herchelm_agiws,
  608. --      body="Amini Caban +1",
  609. --      neck="Marked Gorget",
  610. --      hands="Kobo Kote",
  611. --      left_ear="Neritic Earring",
  612. --      right_ear=moonshade,
  613. --      left_ring="Garuda Ring +1",
  614. --      right_ring="Apate Ring",
  615. --      legs="Amini Brague +1",
  616. --      feet=ah_feet,
  617. --      waist="Ponente Sash",
  618. --      --back=belenuswsd
  619. --      back=belenuswsdagi,
  620. --      --hands="Adhemar Wristbands",
  621. --      --right_ear="Infused Earring",
  622. --  }
  623.     sets.AGIWS = {
  624.         head=herchelm_agiws,
  625.         body="Amini Caban +1",
  626.         hands="Meghanada Gloves +1",
  627.         legs=herctrou_agi,
  628.         feet=hercboots_agi,
  629.         neck="Fotia Gorget",
  630.         waist="Fotia Belt",
  631.         left_ear="Ishvara Earring",
  632.         right_ear=moonshade,
  633.         left_ring="Garuda Ring +1",
  634.         right_ring="Apate Ring",
  635.         back=belenuswsdagi,
  636.         --body=hercvest_racc,
  637.         --hands="Kobo Kote",
  638.         --feet=ah_feet,
  639.     }
  640.     sets.AGIWS = set_combine(sets.precast.WS, sets.AGIWS)
  641.     sets.AGIWS_Acc = set_combine(sets.AGIWS, {
  642.         body=hercvest_racc,
  643.         --legs=herctrou_agi,
  644.     })
  645.     sets.AGIWS_AccExtreme = set_combine(sets.AGIWS_Acc, {
  646.         head=herchelm_agi,
  647.         body=hercvest_racc,
  648.         hands="Meg. Gloves +1",
  649.         legs=ah_legs2,
  650.         feet=hercboots_agi,
  651.         neck="Fotia Gorget",
  652.         waist="Fotia Belt",
  653.         left_ear="Telos Earring",
  654.         right_ear=moonshade,
  655.         left_ring="Hajduk Ring +1",
  656.         right_ring="Cacoethic Ring +1",
  657.  
  658.     })
  659.     sets.LastStand = { }
  660.     sets.precast.WS['Last Stand'] = set_combine(sets.AGIWS, sets.LastStand)
  661.     sets.precast.WS['Last Stand'].Acc = set_combine(sets.precast.WS['Last Stand'],sets.AGIWS_Acc)
  662.     sets.precast.WS['Last Stand'].AccExtreme = set_combine(sets.precast.WS['Last Stand'].Acc, sets.AGIWS_AccExtreme)
  663.     sets.precast.WS['Last Stand'].threehit = {
  664.         head=arc_head,
  665.         neck="Fotia Gorget",
  666.         ear1="Telos Earring",
  667.         ear2=moonshade,
  668.         body=hercvest_racc,
  669.         hands="Amini Glovelettes +1",
  670.         ring1="Apate Ring",
  671.         ring2="Rajas Ring",
  672.         waist="Fotia Belt",
  673.         legs=ah_legs2,
  674.         feet=hercboots_agi,
  675.         back=belenuswsdagi,
  676.     }
  677.     sets.precast.WS['Last Stand'].Fodder = {
  678.         head={ name="Arcadian Beret +1", augments={'Enhances "Recycle" effect',}},
  679.         neck="Ainia Collar",
  680.         body=p_body,
  681.         hands="Amini Glovelettes +1",
  682.         left_ear="Telos Earring",
  683.         right_ear="Dedition Earring",
  684.         left_ring="Apate Ring",
  685.         right_ring="Rajas Ring",
  686.         waist="Yemaya Belt",
  687.         legs="Amini Brague +1",
  688.         feet="Tatena. Sune.",
  689.         back=belenus
  690.     }
  691.  
  692.  
  693.     sets.Slugshot = {
  694.     }
  695.     sets.precast.WS['Slugshot'] = set_combine(sets.AGIWS, sets.Slugshot)
  696.     sets.precast.WS['Slugshot'].Acc = set_combine(sets.precast.WS['Slugshot'], {
  697.     })
  698.     sets.precast.WS['Slugshot'].AccExtreme = set_combine(sets.precast.WS['Slugshot'].Acc, sets.AGIWS_AccExtreme)
  699.  
  700.     sets.Detonator = {
  701.     }
  702.     sets.precast.WS['Detonator'] = set_combine(sets.AGIWS, sets.Detonator)
  703.     sets.precast.WS['Detonator'].Acc = set_combine(sets.precast.WS['Detonator'], {
  704.     })
  705.     sets.precast.WS['Detonator'].AccExtreme = set_combine(sets.precast.WS['Detonator'].Acc, sets.AGIWS_AccExtreme)
  706.  
  707.     sets.NumbingShot = {
  708.     }
  709.     sets.precast.WS['Numbing Shot'] = set_combine(sets.AGIWS, sets.NumbingShot)
  710.     sets.precast.WS['Numbing Shot'].Acc = set_combine(sets.precast.WS['Numbing Shot'], {
  711.     })
  712.     sets.precast.WS['Numbing Shot'].AccExtreme = set_combine(sets.precast.WS['Numbing Shot'].Acc, sets.AGIWS_AccExtreme)
  713.  
  714.     sets.HeavyShot = {
  715.     }
  716.     sets.precast.WS['Heavy Shot'] = set_combine(sets.AGIWS, sets.HeavyShot)
  717.     sets.precast.WS['Heavy Shot'].Acc = set_combine(sets.precast.WS['Heavy Shot'], {
  718.     })
  719.     sets.precast.WS['Heavy Shot'].AccExtreme = set_combine(sets.precast.WS['Heavy Shot'].Acc, sets.AGIWS_AccExtreme)
  720.  
  721.     sets.BlastShot = {
  722.     }
  723.     sets.precast.WS['Blast Shot'] = set_combine(sets.AGIWS, sets.BlastShot)
  724.     sets.precast.WS['Blast Shot'].Acc = set_combine(sets.precast.WS['Blast Shot'], {
  725.     })
  726.     sets.precast.WS['Blast Shot'].AccExtreme = set_combine(sets.precast.WS['Blast Shot'].Acc, sets.AGIWS_AccExtreme)
  727.  
  728.     sets.HotShot = {
  729.     }
  730.     sets.precast.WS['Hot Shot'] = set_combine(sets.AGIWS, sets.HotShot)
  731.     sets.precast.WS['Hot Shot'].Acc = set_combine(sets.precast.WS['Hot Shot'], {
  732.     })
  733.     sets.precast.WS['Hot Shot'].AccExtreme = set_combine(sets.precast.WS['Hot Shot'].Acc, sets.AGIWS_AccExtreme)
  734.  
  735.     sets.SniperShot = {
  736.     }
  737.     sets.precast.WS['Sniper Shot'] = set_combine(sets.AGIWS, sets.SniperShot)
  738.     sets.precast.WS['Sniper Shot'].Acc = set_combine(sets.precast.WS['Sniper Shot'], {
  739.     })
  740.     sets.precast.WS['Sniper Shot'].AccExtreme = set_combine(sets.precast.WS['Sniper Shot'].Acc, sets.AGIWS_AccExtreme)
  741.  
  742.     sets.SplitShot = {
  743.     }
  744.     sets.precast.WS['Split Shot'] = set_combine(sets.AGIWS, sets.SplitShot)
  745.     sets.precast.WS['Split Shot'].Acc = set_combine(sets.precast.WS['Split Shot'], {
  746.     })
  747.     sets.precast.WS['Split Shot'].AccExtreme = set_combine(sets.precast.WS['Split Shot'].Acc, sets.AGIWS_AccExtreme)
  748.  
  749.     --Archery AGI WS--
  750.     sets.FlamingArrow = {
  751.     }
  752.     sets.precast.WS['Flaming Arrow'] = set_combine(sets.AGIWS, sets.FlamingArrow)
  753.     sets.precast.WS['Flaming Arrow'].Acc = set_combine(sets.precast.WS['Flaming Arrow'], {
  754.     })
  755.     sets.precast.WS['Flaming Arrow'].AccExtreme = set_combine(sets.precast.WS['Flaming Arrow'], sets.AGIWS_AccExtreme)
  756.  
  757.     sets.PiercingArrow = {
  758.     }
  759.     sets.precast.WS['Piercing Arrow'] = set_combine(sets.AGIWS, sets.PiercingArrow)
  760.     sets.precast.WS['Piercing Arrow'].Acc = set_combine(sets.precast.WS['Piercing Arrow'], {
  761.     })
  762.     sets.precast.WS['Piercing Arrow'].AccExtreme = set_combine(sets.precast.WS['Piercing Arrow'].Acc, sets.AGIWS_AccExtreme)
  763.  
  764.     sets.DullingArrow = {
  765.     }
  766.     sets.precast.WS['Dulling Arrow'] = set_combine(sets.AGIWS, sets.DullingArrow)
  767.     sets.precast.WS['Dulling Arrow'].Acc = set_combine(sets.precast.WS['Dulling Arrow'], {
  768.     })
  769.     sets.precast.WS['Dulling Arrow'].AccExtreme = set_combine(sets.precast.WS['Dulling Arrow'].Acc, sets.AGIWS_AccExtreme)
  770.  
  771.     sets.Sidewinder = {
  772.     }
  773.     sets.precast.WS['Sidewinder'] = set_combine(sets.AGIWS, sets.Sidewinder)
  774.     sets.precast.WS['Sidewinder'].Acc = set_combine(sets.precast.WS['Sidewinder'], {
  775.     })
  776.     sets.precast.WS['Sidewinder'].AccExtreme = set_combine(sets.precast.WS['Sidewinder'].Acc, sets.AGIWS_AccExtreme)
  777.  
  778.     sets.BlastArrow = {
  779.     }
  780.     sets.precast.WS['Blast Arrow'] = set_combine(sets.AGIWS, sets.BlastArrow)
  781.     sets.precast.WS['Blast Arrow'].Acc = set_combine(sets.precast.WS['Blast Arrow'], {
  782.     })
  783.     sets.precast.WS['Blast Arrow'].AccExtreme = set_combine(sets.precast.WS['Blast Arrow'].Acc, sets.AGIWS_AccExtreme)
  784.  
  785.     sets.ArchingArrow = {
  786.     }
  787.     sets.precast.WS['Arching Arrow'] = set_combine(sets.AGIWS, sets.ArchingArrow)
  788.     sets.precast.WS['Arching Arrow'].Acc = set_combine(sets.precast.WS['Arching Arrow'], {
  789.     })
  790.     sets.precast.WS['Arching Arrow'].AccExtreme = set_combine(sets.precast.WS['Arching Arrow'].Acc, sets.AGIWS_AccExtreme)
  791.  
  792.     sets.EmpyrealArrow = {
  793.     }
  794.     sets.precast.WS['Empyreal Arrow'] = set_combine(sets.AGIWS, sets.EmpyrealArrow)
  795.     sets.precast.WS['Empyreal Arrow'].Acc = set_combine(sets.precast.WS['Empyreal Arrow'], {
  796.     })
  797.     sets.precast.WS['Empyreal Arrow'].AccExtreme = set_combine(sets.precast.WS['Empyreal Arrow'].Acc, sets.AGIWS_AccExtreme)
  798.  
  799.     sets.ApexArrow = {
  800.     }
  801.     sets.precast.WS['Apex Arrow'] = set_combine(sets.AGIWS, sets.ApexArrow)
  802.     sets.precast.WS['Apex Arrow'].Acc = set_combine(sets.precast.WS['Apex Arrow'], sets.AGIWS_Acc)
  803.     sets.precast.WS['Apex Arrow'].AccExtreme = set_combine(sets.precast.WS['Apex Arrow'].Acc, sets.AGIWS_AccExtreme)
  804.     -- MELEE WS --
  805.     sets.precast.MeleeWS = {
  806.     }
  807.     --multi hit , crit rate great here, fTP carries through on all hits
  808.     sets.Evisceration = {
  809.     }
  810.     sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, sets.Evisceration)
  811.  
  812.     -- MAGIC WS --
  813.     sets.precast.MagicWS = {
  814.         head=herchelm_mab,
  815.         neck="Sanctity Necklace",
  816.         --body="Gyve Doublet",
  817.         body=hercvest_mab,
  818.         hands={ name="Carmine Fin. Ga. +1", augments={'Rng.Atk.+20','"Mag.Atk.Bns."+12','"Store TP"+6',}},
  819.         --legs={ name="Herculean Trousers", augments={'"Mag.Atk.Bns."+22','Weapon skill damage +1%','MND+9','Mag. Acc.+14',}},
  820.         legs=herctrou_mab,
  821.         ear1="Friomisi Earring",
  822.         ear2=moonshade,
  823.         ring1="Garuda Ring +1",
  824.         ring2="Fenrir Ring",
  825.         waist="Eschan stone",
  826.         feet={ name="Herculean Boots", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Crit.hit rate+2','STR+10','Mag. Acc.+15','"Mag.Atk.Bns."+10',}},
  827.         back=belenuswsd
  828.         --waist="Fotia Belt",
  829.         --back="Toro Cape",
  830.         --back="Belenus's cape",
  831.         --body="Samnuha Coat",
  832.         --legs={ name="Herculean Trousers", augments={'"Mag.Atk.Bns."+22','Weapon skill damage +1%','MND+9','Mag. Acc.+14',}},
  833.         --legs="Gyve Trousers",
  834.         --feet={ name="Herculean Boots", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','Mag. Acc.+2','"Mag.Atk.Bns."+12',}},
  835.     }
  836.     sets.precast.WS['Flash Nova'] = set_combine(sets.precast.MagicWS, {
  837.     })
  838.     sets.precast.WS['Aeolian Edge'] = set_combine(sets.precast.MagicWS, {
  839.         ring1="Ramuh Ring",
  840.     })
  841.  
  842.     sets.precast.WS['Wildfire'] = set_combine(sets.precast.MagicWS, {
  843.     })
  844.  
  845.     sets.precast.WS['Trueflight'] = set_combine(sets.precast.MagicWS, {
  846.         --ring1="Garuda Ring",
  847.         ring1="Weatherspoon Ring",
  848.         ring2="Garuda Ring +1",
  849.         waist="Ponente Sash"
  850.     })
  851.     sets.precast.WS['Trueflight'].Acc = set_combine(sets.precast.WS['Trueflight'], {
  852.         ear1="Hermetic Earring",
  853.         ear2="Digni. Earring",
  854.         --ring1="Garuda Ring",
  855.         ring1="Weatherspoon Ring",
  856.         ring2="Garuda Ring +1",
  857.         waist="Eschan stone",
  858.     })
  859.     sets.precast.WS['Trueflight'].AccExtreme = set_combine(sets.precast.WS['Trueflight'].Acc, {
  860.         ring1="Weatherspoon Ring",
  861.         waist="Kwahu Kachina Belt",
  862.     })
  863.  
  864.     --------------------------------------
  865.     -- Midcast sets
  866.     --------------------------------------
  867.  
  868.     --    sets.midcast.FastRecast = {
  869.     --        head="Whirlpool Mask",ear2="Loquacious Earring",
  870.     --        back=cannycape,legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
  871.  
  872.     -- Specific spells
  873.     --    sets.midcast.Utsusemi = {
  874.     --        head="Whirlpool Mask",neck="Ej Necklace",ear2="Loquacious Earring",
  875.     --        body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Beeline Ring",
  876.     --        back=cannycape,legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
  877.     --
  878.  
  879.     --------------------------------------
  880.     -- Town sets
  881.     --------------------------------------
  882.     --When you zone into mog gardens, what you wear
  883.     sets.farmer = {
  884.         main="Hoe",
  885.         body="Overalls",
  886.         hands="Work gloves",
  887.         legs="",
  888.         --feet="Herald's Gaiters"
  889.         feet="Thatch Boots"
  890.     }
  891.    
  892.     sets.crafting = {
  893.         head="Magnifying Specs.",
  894.         --left_ring="Artificer's Ring",
  895.         left_ring="Craftmaster's Ring",
  896.         --right_ring="Orvail Ring",
  897.         right_ring="Artificer's Ring",
  898.         body="Weaver's Apron",
  899.     }
  900.  
  901.  
  902.     --For more movement in Adoulin
  903.     sets.adoulinmovement = {
  904.         body="Councilor's Garb"
  905.     }
  906.  
  907.  
  908.     --------------------------------------
  909.     -- Idle/resting/defense sets
  910.     --------------------------------------
  911.  
  912.     -- Resting sets
  913.     sets.rangetype = {}
  914.     sets.rangetype.None = {
  915.     }
  916.     sets.rangetype.Bow = {
  917.         range="Fail-Not",
  918.         ammo="Chrono Arrow",
  919.     }
  920.     sets.rangetype.Gun = {
  921.         range="Fomalhaut",
  922.         ammo="Chrono bullet",
  923.     }
  924.     sets.rangetype.MartialGun = {
  925.         range="Martial Gun",
  926.         ammo="Chrono bullet",
  927.     }
  928.     sets.rangetype.MachineCrossbow = {
  929.         range="Atalanta",
  930.         ammo="Bloody Bolt",
  931.         --ammo="Abrasion Bolt",
  932.     }
  933.     sets.rangetype.Crossbow = {
  934.         range="Gastraphetes",
  935.         ammo="Quelling Bolt",
  936.         --range="Tsoabichi Crossbow",
  937.         --ammo="Bloody Bolt",
  938.     }
  939.     sets.defdown = {
  940.         ammo="Abrasion Bolt",
  941.     }
  942.     sets.rangetype.Crossbow2 = {
  943.         range="Wochowsen",
  944.         --ammo="Bloody Bolt",
  945.         ammo="Righteous Bolt",
  946.     }
  947.     sets.rangetype.Throwing = {
  948.         range="Antitail",
  949.         ammo=""
  950.     }
  951.     sets.resting={
  952.         head="Oce. Headpiece +1",
  953.         feet="Jute Boots +1",
  954.         neck="Wiglen Gorget",
  955.         waist="Windbuffet Belt +1",
  956.         ring1="Sheltered Ring",
  957.         ring2="Paguroidea Ring",
  958.         back="Solemnity Cape"
  959.         --   range="Snakeeye",
  960.         --back="Engulfer Cape +1"
  961.         --back=cannycape,
  962.         --back="Mecistopins mantle",
  963.     }
  964.  
  965.     -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  966.  
  967.     sets.idle ={
  968.         --main/offhand determined by rangedmode
  969.         main="Kustawi +1",
  970.         range="Fail-Not",
  971.         ammo="Chrono Arrow",
  972.         head="Genmei Kabuto",--5PDT
  973.         --neck="Wiglen Gorget",
  974.         neck="Loricate Torque +1",--6
  975.         --hands="Adhemar Wristbands",
  976.         --body="Sayadio's Kaftan",
  977.         body="Meghanada Cuirie +1",
  978.         hands="Meghanada Gloves +1",
  979.         ring1="Defending Ring",
  980.         ring2="Paguroidea Ring",
  981.         ear1="Telos Earring",
  982.         ear2="Infused Earring",
  983.         --legs={ name="Herculean Trousers", augments={'Rng.Acc.+29','Crit. hit damage +4%','Rng.Atk.+11',}},
  984.         legs=herctrou_dt,
  985.         feet="Jute Boots +1",
  986.         waist="Flume Belt +1",--4PDT
  987.         --back="Repulse Mantle",
  988.         back="Solemnity Cape"
  989.         --back="Mollusca Mantle"--5
  990.         --back="Lutian Cape",
  991.         --neck="Ej Necklace",
  992.         --head="Oce. Headpiece +1",
  993.         --body="Adhemar Jacket",
  994.         --body="Mekosuchinae harness",
  995.         --legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  996.         --waist="Windbuffet Belt +1",
  997.         --ring1="Sheltered Ring",
  998.         --back="Engulfer Cape +1"
  999.         --back="Mecistopins mantle",
  1000.         --ear2="Neritic earring",
  1001.     }
  1002.     sets.idle = set_combine(sets.basetp,sets.idle)
  1003.     sets.idle.Regen = {
  1004.         ring1="Sheltered Ring",
  1005.         ring2="Paguroidea Ring",
  1006.         ear2="Infused Earring",
  1007.         --head="Oce. Headpiece +1",
  1008.         neck="Wiglen Gorget",
  1009.     }
  1010.  
  1011.     --    sets.idle.Weak = {ammo="Thew Bomblet",
  1012.     --        head="Pillager's Bonnet +1",neck="Wiglen Gorget",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  1013.     --        body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  1014.     --        back="Shadow Mantle",waist="Flume Belt",legs="Pillager's Culottes +1",feet="Skadi's Jambeaux +1"}
  1015.  
  1016.  
  1017.     -- Defense sets
  1018.  
  1019.     --    sets.defense.Evasion = {
  1020.     --        head="Pillager's Bonnet +1",neck="Ej Necklace",
  1021.     --        body="Qaaxo Harness",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2="Beeline Ring",
  1022.     --        back=cannycape,waist="Flume Belt",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
  1023.     --
  1024.     --    sets.defense.PDT = {ammo="Iron Gobbet",
  1025.     --        head="Pillager's Bonnet +1",neck="Loricate Torque +1",
  1026.     --        body="Iuitl Vest",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2=gear.DarkRing.physical,
  1027.     --        back="Iximulew Cape",waist="Flume Belt",legs="Pillager's Culottes +1",feet="Iuitl Gaiters +1"}
  1028.     --
  1029.     --    sets.defense.MDT = {ammo="Demonry Stone",
  1030.     --        head="Pillager's Bonnet +1",neck="Loricate Torque +1",
  1031.     --        body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2="Shadow Ring",
  1032.     --        back="Engulfer Cape",waist="Flume Belt",legs="Pillager's Culottes +1",feet="Iuitl Gaiters +1"}
  1033.     --
  1034.     sets.runaway2 = {
  1035.         main="Mafic Cudgel",--10PDT
  1036.         neck="Wiglen Gorget",--6PDT
  1037.         ear2="Infused Earring",
  1038.         ring2="Gelatinous Ring +1",--6PDT
  1039.         ring1="Defending Ring",--10
  1040.         waist="Flume Belt +1",--4PDT
  1041.         legs=herctrou_dt,
  1042.         feet="Jute Boots +1",
  1043.         --back="Repulse Mantle"--4PDT
  1044.         back="Solemnity Cape",--4DT
  1045.         --hands={ name="Herculean Gloves", augments={'Accuracy+23 Attack+23','"Store TP"+2','AGI+5','Accuracy+11','Attack+7',}},--2PDT
  1046.         --neck="Inq. Bead Necklace",
  1047.     }
  1048.     --38 PDT 10 DT
  1049.     sets.damagetaken = {}
  1050.     sets.damagetaken.None = {
  1051.     }
  1052.     sets.damagetaken.DTLight = {
  1053.         ring1="Defending Ring",
  1054.         neck="Loricate Torque +1",
  1055.         back="Mollusca Mantle"
  1056.         --ring2="Gelatinous Ring",
  1057.         --waist="Flume Belt +1",
  1058.         --back="Repulse Mantle"
  1059.     }
  1060.     sets.damagetaken.DT = {
  1061.         head="Genmei kabuto",--5PDT
  1062.         ring2="Dark Ring",--6MDT 6BDT
  1063.         ring1="Defending Ring",--10
  1064.         neck="Loricate Torque +1",--6
  1065.         waist="Flume Belt +1",--4PDT
  1066.         legs=herctrou_dt,
  1067.         feet={ name="Herculean Boots", augments={'Accuracy+25 Attack+25','Phys. dmg. taken -4%','STR+4','Accuracy+11',}},--6PDT
  1068.         back="Mollusca Mantle",--5
  1069.         body="Meghanada Cuirie +1",--7
  1070.         hands="Meghanada Gloves +1",--3
  1071.         ear1="Etiolation Earring",
  1072.         ear2="Genmei Earring",
  1073.         --back="Engulfer Cape +1"
  1074.         --hands={ name="Herculean Gloves", augments={'Accuracy+23 Attack+23','"Store TP"+2','AGI+5','Accuracy+11','Attack+7',}},--2PDT
  1075.  
  1076.         --hands="Kurys Gloves", --2
  1077.         --neck="Inq. Bead Necklace",
  1078.         --neck="Wiglen Gorget",--6
  1079.     }
  1080.     --DT 24
  1081.     --PDT 29
  1082.     --MDT 9
  1083.     --BDT 6
  1084.     -- 53 PDT 33 MDT 30 BDT
  1085.     sets.damagetaken.DTFull = {
  1086.     }
  1087.     sets.damagetaken.MagicLight = {
  1088.         ring1="Defending Ring",--10
  1089.         ring2="Vengeful Ring",
  1090.         waist="Engraved belt",
  1091.         neck="Inq. Bead Necklace",
  1092.         back="Engulfer Cape +1"
  1093.         --back="Mollusca Mantle",--5
  1094.         --neck="Loricate Torque +1",
  1095.     }
  1096.     sets.damagetaken.PDT = {
  1097.     }
  1098.     sets.damagetaken.MDT = {
  1099.     }
  1100.     sets.damagetaken.MagicEvasion = {
  1101.         neck="Inq. Bead Necklace",
  1102.         body="Lapidary Tunic",
  1103.         feet="Jute Boots +1",
  1104.         ear1="Sanare Earring",
  1105.         ring1="Defending Ring",
  1106.         ring2="Vengeful Ring",
  1107.         back="Engulfer Cape +1"
  1108.         --back="Mollusca Mantle"
  1109.     }
  1110.     sets.pullmode = {
  1111.         main="Mafic Cudgel", --10
  1112.         sub="Genmei Shield", --10
  1113.         head="Genmei kabuto",--5PDT
  1114.         neck="Loricate Torque +1",--6
  1115.         body="Meghanada Cuirie +1",--7
  1116.         hands="Meghanada Gloves +1",--3
  1117.         left_ear="Etiolation Earring", --3mdt
  1118.         right_ear="Infused Earring",
  1119.         ring2="Gelatinous Ring +1",--7PDT
  1120.         ring1="Defending Ring",--10
  1121.         waist="Flume Belt +1",--4PDT
  1122.         legs=herctrou_dt,
  1123.         feet="Hippomenes socks +1",
  1124.         back="Solemnity Cape"--4
  1125.     }
  1126.     --DT: 6+10+4+3=23
  1127.     --PDT: 5+7+4+2+4+4=26
  1128.     --MDT: 3
  1129.    
  1130.  
  1131.  
  1132.     --------------------------------------
  1133.     -- Melee sets
  1134.     --------------------------------------
  1135.     -- Normal melee group
  1136.     --sets.engaged= sets.basetp
  1137.     --Caphaste: dw5
  1138.     --Cape 4
  1139.     --feet 4 + 5
  1140.     sets.engaged={
  1141.         neck="Asperity Necklace",
  1142.         waist="Windbuffet Belt +1",
  1143.         ear1="Telos Earring",
  1144.         ear2="Cessance Earring",
  1145.         ring1="Epona's Ring",
  1146.         ring2="Petrov Ring",
  1147.         back=belenus,
  1148.     }
  1149.     sets.engaged = set_combine(sets.basetp,sets.engaged)
  1150.     --ring1="Tyrant's Ring",
  1151.  
  1152.     -- earrings 7
  1153.     -- taeon 23 + 4  = 27
  1154.     -- cape 4 --38
  1155.     -- sash 5 --43
  1156.     -- missing 5
  1157.     -- raiders 3 XOff
  1158.     -- blurred 6 XOff
  1159.  
  1160.     --Dw4: 30%
  1161.     --No haste magic: dw43
  1162.     --Haste samba: dw39
  1163.     --Haste1: dw37
  1164.     --Haste2: dw26
  1165.     --Caphaste: dw5
  1166.     --Taeon 27
  1167.     --Sash 5
  1168.     --Earrings 7
  1169.     --Cape 4
  1170.    
  1171.     sets.hastemode = {}
  1172.     -- no dw if not sub nin or dnc
  1173.     if player.sub_job == 'NIN' or player.sub_job=='DNC' then
  1174.         sets.TaeonDW = {
  1175.             head={ name="Taeon Chapeau", augments={'Accuracy+15 Attack+15','"Dual Wield"+5','STR+4',}},
  1176.             --body={ name="Taeon Tabard", augments={'Accuracy+15 Attack+15','"Dual Wield"+5','STR+4 AGI+4',}},
  1177.             --hands={ name="Taeon Gloves", augments={'Accuracy+18 Attack+18','"Dual Wield"+4','STR+8',}},
  1178.             legs={ name="Taeon Tights", augments={'Accuracy+17 Attack+17','"Dual Wield"+4','STR+2 DEX+2',}},
  1179.             feet={ name="Taeon Boots", augments={'Accuracy+17 Attack+17','"Dual Wield"+5','STR+4 DEX+4',}},
  1180.         }
  1181.         --Max: acc 100 att 100 STR 35 DEX 35
  1182.         --At: acc 82 att 82 STR 18 DEX 10
  1183.         --Missing: acc 18 att 18 STR 17 DEX 25
  1184.         sets.hastemode.NoHaste={ -- need 43, at 45
  1185.             --taeon: 18
  1186.             waist="Reiki Yotai", --7
  1187.             hands={ name="Floral Gauntlets", augments={'Rng.Acc.+13','Accuracy+14','"Triple Atk."+1','Magic dmg. taken -2%',}},
  1188.  
  1189.             body=ah_body,--5
  1190.             ear1="Eabani Earring",--4
  1191.             ear2="Suppanomimi",--5
  1192.             --back=lutiancape,
  1193.         }
  1194.         sets.hastemode.HasteI={ -- need 37, at 39
  1195.             --taeon: 18
  1196.             body=ah_body,--5
  1197.             --hands="Floral Gauntlets",--5
  1198.             waist="Reiki Yotai", --7
  1199.             ear1="Eabani Earring",--4
  1200.             ear2="Suppanomimi",--5
  1201.         }
  1202.         sets.hastemode.HasteII={ -- need 26, at 26
  1203.             --taeon: 18 - 4 - 9 = 5
  1204.             --head="Adhemar Bonnet",
  1205.             body=ah_body,--5
  1206.             ear1="Eabani Earring",--4
  1207.             ear2="Suppanomimi",--5
  1208.             waist="Reiki Yotai", --7
  1209.             legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  1210.             feet={ name="Herculean Boots", augments={'Accuracy+29','"Triple Atk."+3','Attack+11',}},
  1211.         }
  1212.         sets.TaeonDW = set_combine(sets.engaged,sets.TaeonDW)
  1213.         sets.hastemode.NoHaste=set_combine(sets.TaeonDW,sets.hastemode.NoHaste)
  1214.         sets.hastemode.HasteI=set_combine(sets.TaeonDW,sets.hastemode.HasteI)
  1215.         sets.hastemode.HasteII=set_combine(sets.TaeonDW,sets.hastemode.HasteII)
  1216.         sets.hastemode.Capped=sets.engaged
  1217.     end
  1218.  
  1219.     sets.mabdagger={
  1220.         main={ name="Malevolence", augments={'INT+10','Mag. Acc.+10','"Mag.Atk.Bns."+10','"Fast Cast"+5',}},
  1221.         --sub={ name="Malevolence", augments={'INT+6','Mag. Acc.+7','"Mag.Atk.Bns."+4','"Fast Cast"+3',}},
  1222.         sub={ name="Malevolence", augments={'INT+9','Mag. Acc.+10','"Mag.Atk.Bns."+9','"Fast Cast"+4',}},
  1223.     }
  1224.  
  1225.     sets.engaged.Acc={
  1226.         --head={ name="Herculean Helm", augments={'Accuracy+18 Attack+18','"Triple Atk."+2','AGI+8','Accuracy+10','Attack+12',}},
  1227.         head=ah_head,
  1228.         neck="Lissome Necklace",
  1229.         hands="Meghanada Gloves +1",
  1230.         ring1="Epona's Ring",
  1231.         ring2="Rajas Ring",
  1232.         back="Lupine Cape",
  1233.         legs="Meg. Chausses +1",
  1234.  
  1235.         --waist="Grunfeld Rope",
  1236.         --ring2="Hetairoi Ring",
  1237.         --waist="Olseni Belt",
  1238.         --range="",
  1239.         --ammo="Seething Bomblet",
  1240.         --body="Adhemar Jacket",
  1241.         --neck="Ej Necklace",
  1242.     }
  1243.     sets.engaged.Acc=set_combine(sets.engaged,sets.engaged.Acc)
  1244.     sets.engaged.AccExtreme={
  1245.         head="Meghanada Visor +1",
  1246.         --body="Sayadio's Kaftan",
  1247.         body="Meghanada Cuirie +1",
  1248.         --hands={ name="Herculean Gloves", augments={'Accuracy+23 Attack+23','"Store TP"+2','AGI+5','Accuracy+11','Attack+7',}},
  1249.         --hands="Floral Gauntlets",
  1250.         hands="Meghanada Gloves +1",
  1251.         --legs={ name="Herculean Trousers", augments={'Accuracy+18 Attack+18','"Dual Wield"+2','DEX+13','Accuracy+12','Attack+9',}},
  1252.         --legs="Meghanda Chausses +1",
  1253.         legs="Meg. Chausses +1",
  1254.         feet={ name="Herculean Boots", augments={'DEX+9','Accuracy+27','Accuracy+13 Attack+13','Mag. Acc.+13 "Mag.Atk.Bns."+13',}},
  1255.         neck="Ej Necklace",
  1256.         waist="Olseni Belt",
  1257.         --left_ear="Dignitary's earring",
  1258.         left_ear="Telos Earring",
  1259.         right_ear="Zennaroi Earring",
  1260.         left_ring="Cacoethic Ring +1",
  1261.         right_ring="Ramuh Ring +1",
  1262.         back="Ground. Mantle +1",
  1263.         --head="Skulker's Bonnet +1",
  1264.         --body={ name="Adhemar Jacket", augments={'DEX+10','AGI+10','Accuracy+15',}},
  1265.         --hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
  1266.     }
  1267.     sets.engaged.AccExtreme=set_combine(sets.engaged,sets.engaged.AccExtreme)
  1268.     sets.engaged.Fodder={
  1269.         --head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},
  1270.  
  1271.     }
  1272.     sets.engaged.Fodder = set_combine(sets.engaged,sets.engaged.Fodder)
  1273.  
  1274.     --sets.buff.Barrage = {
  1275.         --body="Orion Jerkin +1",
  1276.         --legs="Amini Brague +1",
  1277.         --legs={ name="Desultor Tassets", augments={'"Phantom Roll" ability delay -5','"Barrage"+1',}},
  1278.  
  1279. --      head={ name="Arcadian Beret +1", augments={'Enhances "Recycle" effect',}},
  1280. --      neck="Ocachi Gorget",
  1281. --      hands="Orion Bracers +1",
  1282. --      body="Sayadio's Kaftan",
  1283. --      left_ring="Apate Ring",
  1284. --      right_ring="Haverton Ring",--S:6
  1285. --      --right_ring="Rajas Ring",
  1286. --      ear1="Enervating earring",
  1287. --      ear2="Neritic earring",
  1288. --      legs={ name="Herculean Trousers", augments={'Rng.Acc.+29','Crit. hit damage +4%','Rng.Atk.+11',}},
  1289. --      feet="Adhemar Gamashes",
  1290. --      waist="Yemaya Belt",
  1291. --      back=lutiancape,
  1292.  
  1293.         --neck="Rancor Collar",
  1294.         --ear1="Flame Pearl",
  1295.         --ear2="Flame Pearl",
  1296.         --head={ name="Herculean Helm", augments={'Rng.Acc.+29','Crit.hit rate+2','AGI+8','Rng.Atk.+14',}},
  1297. --      head="Arcadian Beret +1",
  1298. --      --hands={ name="Adhemar Wristbands", augments={'AGI+10','Rng.Acc.+15','Rng.Atk.+15',}},
  1299. --      hands="Orion Bracers +1",
  1300. --      legs={ name="Herculean Trousers", augments={'Rng.Acc.+29','Crit. hit damage +4%','Rng.Atk.+11',}},
  1301. --      feet={ name="Herculean Boots", augments={'Rng.Acc.+25 Rng.Atk.+25','Crit. hit damage +4%','DEX+11','Rng.Acc.+6',}},
  1302. --      neck="Gaudryi Necklace",
  1303. --      waist="Yemaya Belt",
  1304. --      left_ear="Enervating Earring",
  1305. --      right_ear="Neritic Earring",
  1306. --      left_ring="Haverton Ring",
  1307. --      right_ring="Cacoethic Ring +1",
  1308. --      back=belenus
  1309.     --}
  1310.     -- placeholder until I can get to it
  1311.     --sets.buff.Barrage.Mid = sets.buff.Barrage
  1312.     --sets.buff.Barrage.Acc = sets.buff.Barrage
  1313.  
  1314.     sets.buff.Camouflage =  {body="Orion Jerkin +1"}
  1315.  
  1316.     sets.Overkill =  {
  1317.         body="Arcadian Jerkin +1"
  1318.     }
  1319.     sets.Overkill.Preshot = set_combine(sets.precast.RA, sets.Overkill)
  1320. end
  1321.  
  1322.  
  1323. -------------------------------------------------------------------------------------------------------------------
  1324. -- Job-specific hooks for standard casting events.
  1325. -------------------------------------------------------------------------------------------------------------------
  1326.  
  1327. -- Run after the general precast() is done.
  1328. function job_precast(spell, action, spellMap, eventArgs)
  1329. end
  1330.  
  1331. function job_post_precast(spell, action, spellMap, eventArgs)
  1332.     if state.Buff.Camouflage then
  1333.         equip(sets.buff.Camouflage)
  1334.     --elseif state.Buff.Overkill then
  1335.         --equip(sets.Overkill.Preshot)
  1336.     end
  1337.     --log_data_structure(midshot_real)
  1338.     if spell.action_type=="Ranged Attack" then
  1339.         if not midshot_real then
  1340.             if buffactive['Flurry'] then
  1341.                 if state.flurrymode.value == 'FlurryII' then
  1342.                     equip(sets.precast.RA.Flurry2)
  1343.                 else
  1344.                     equip(sets.precast.RA.Flurry)
  1345.                 end
  1346.                 --add_to_chat(122,"Flurry found")
  1347.             else
  1348.                 equip(sets.precast.RA)
  1349.                 --equip(sets.precast.RA.noFlurry)
  1350.                 --add_to_chat(122,"No flurry")
  1351.             end
  1352.         end
  1353.     end
  1354.     --print('weather mode')
  1355.     if spell.english == "Trueflight" and (buffactive['Aurorastorm'] or buffactive['Aurorastorm II']) then
  1356.         --print('weather mode')
  1357.         equip({waist="Hachirin-no-obi"})
  1358.     end
  1359.     --print(player.tp)
  1360.     if spell.english == "Trueflight" and player.tp > 2850 then
  1361.         equip({ear2="Ishvara Earring"})
  1362.     end
  1363. end
  1364.  
  1365. -- Run after the general midcast() set is constructed.
  1366. function job_post_midcast(spell, action, spellMap, eventArgs)
  1367.     --    if state.TreasureMode.value ~= 'None' and spell.action_type == 'Ranged Attack' then
  1368.     --        equip(sets.TreasureHunter)
  1369.     --    end
  1370.     if spell.name == 'Ranged' then
  1371.         --print('ranged')
  1372.         if buffactive.Barrage then
  1373.             --print('equipping barrage')
  1374.             equip(sets.buff.Barrage)
  1375.         end
  1376.     end
  1377. end
  1378.  
  1379. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  1380. function job_aftercast(spell, action, spellMap, eventArgs)
  1381.     -- Weaponskills wipe SATA/Feint.  Turn those state vars off before default gearing is attempted.
  1382.     if spell.type == 'WeaponSkill' and not spell.interrupted then
  1383.         state.Buff['Sneak Attack'] = false
  1384.         state.Buff['Trick Attack'] = false
  1385.         state.Buff['Feint'] = false
  1386.     end
  1387. end
  1388.  
  1389. -- Called after the default aftercast handling is complete.
  1390. function job_post_aftercast(spell, action, spellMap, eventArgs)
  1391. end
  1392.  
  1393. -------------------------------------------------------------------------------------------------------------------
  1394. -- Job-specific hooks for non-casting events.
  1395. -------------------------------------------------------------------------------------------------------------------
  1396.  
  1397. -- Called when a player gains or loses a buff.
  1398. -- buff == buff gained or lost
  1399. -- gain == true if the buff was gained, false if it was lost.
  1400. hastetbl = S{'haste','march','geo-haste','indi-haste','embrava','haste samba','aftermath','mighty guard'}
  1401. function job_buff_change(buff, gain)
  1402.     buff_lower = buff:lower()
  1403.     --print(buff_lower)
  1404.     if hastetbl:contains(buff_lower) then
  1405.         --print('buff '..buff)
  1406.         check_haste_level()
  1407.         handle_equipping_gear(player.status)
  1408.         --handle_equipping_gear(player.status)
  1409.     end
  1410.     if state.Buff[buff] ~= nil then
  1411.         if not midaction() then
  1412.  
  1413.             handle_equipping_gear(player.status)
  1414.         end
  1415.     end
  1416. end
  1417.  
  1418.  
  1419. -------------------------------------------------------------------------------------------------------------------
  1420. -- User code that supplements standard library decisions.
  1421. -------------------------------------------------------------------------------------------------------------------
  1422.  
  1423. function get_custom_wsmode(spell, spellMap, defaut_wsmode)
  1424.     local wsmode
  1425.     if state.RangedMode.current == 'Normal' then
  1426.     elseif state.RangedMode.current == "Acc" then
  1427.         wsmode = 'Acc'
  1428.     elseif state.RangedMode.current == 'AccExtreme' then
  1429.         wsmode = 'AccExtreme'
  1430.     end
  1431.  
  1432.     if state.Buff['Sneak Attack'] then
  1433.         wsmode = 'SA'
  1434.     end
  1435.     if state.Buff['Trick Attack'] then
  1436.         wsmode = (wsmode or '') .. 'TA'
  1437.     end
  1438.     return wsmode
  1439. end
  1440.  
  1441. -- Check for proper ammo when shooting or weaponskilling
  1442. function check_ammo(spell, action, spellMap, eventArgs)
  1443.     -- Filter ammo checks depending on Unlimited Shot
  1444.     if state.Buff['Unlimited Shot'] then
  1445.         if player.equipment.ammo ~= U_Shot_Ammo[player.equipment.range] then
  1446.             if player.inventory[U_Shot_Ammo[player.equipment.range]] or player.wardrobe[U_Shot_Ammo[player.equipment.range]] then
  1447.                 add_to_chat(122,"Unlimited Shot active. Using custom ammo.")
  1448.                 equip({ammo=U_Shot_Ammo[player.equipment.range]})
  1449.             elseif player.inventory[DefaultAmmo[player.equipment.range]] or player.wardrobe[DefaultAmmo[player.equipment.range]] then
  1450.                 add_to_chat(122,"Unlimited Shot active but no custom ammo available. Using default ammo.")
  1451.                 equip({ammo=DefaultAmmo[player.equipment.range]})
  1452.             else
  1453.                 add_to_chat(122,"Unlimited Shot active but unable to find any custom or default ammo.")
  1454.             end
  1455.         end
  1456.     else
  1457.         if player.equipment.ammo == U_Shot_Ammo[player.equipment.range] and player.equipment.ammo ~= DefaultAmmo[player.equipment.range] then
  1458.             if DefaultAmmo[player.equipment.range] then
  1459.                 if player.inventory[DefaultAmmo[player.equipment.range]] then
  1460.                     add_to_chat(122,"Unlimited Shot not active. Using Default Ammo")
  1461.                     equip({ammo=DefaultAmmo[player.equipment.range]})
  1462.                 else
  1463.                     add_to_chat(122,"Default ammo unavailable.  Removing Unlimited Shot ammo.")
  1464.                     equip({ammo=empty})
  1465.                 end
  1466.             else
  1467.                 add_to_chat(122,"Unable to determine default ammo for current weapon.  Removing Unlimited Shot ammo.")
  1468.                 equip({ammo=empty})
  1469.             end
  1470.         elseif player.equipment.ammo == 'empty' then
  1471.             if DefaultAmmo[player.equipment.range] then
  1472.                 if player.inventory[DefaultAmmo[player.equipment.range]] then
  1473.                     add_to_chat(122,"Using Default Ammo")
  1474.                     equip({ammo=DefaultAmmo[player.equipment.range]})
  1475.                 else
  1476.                     add_to_chat(122,"Default ammo unavailable.  Leaving empty.")
  1477.                 end
  1478.             else
  1479.                 add_to_chat(122,"Unable to determine default ammo for current weapon.  Leaving empty.")
  1480.             end
  1481.         elseif player.inventory[player.equipment.ammo].count < 15 then
  1482.             add_to_chat(122,"Ammo '"..player.inventory[player.equipment.ammo].shortname.."' running low ("..player.inventory[player.equipment.ammo].count..")")
  1483.         end
  1484.     end
  1485. end
  1486.  
  1487. -- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
  1488. function job_handle_equipping_gear(playerStatus, eventArgs)
  1489.     -- Check for SATA when equipping gear.  If either is active, equip
  1490.     -- that gear specifically, and block equipping default gear.
  1491.     check_buff('Haste', eventArgs)
  1492. end
  1493.  
  1494.  
  1495. function check_haste_level()
  1496.     --pr(buffactive)
  1497.     --33 is haste 1 and haste 2 580 is indi and geo haste
  1498.     hastelevel = 0
  1499.     if buffactive[33] and hastetype==1 then
  1500.         hastelevel=hastelevel+15
  1501.         add_to_chat(122,'Haste I detected')
  1502.     elseif buffactive[33] and hastetype==2 then
  1503.         hastelevel=hastelevel+30
  1504.         add_to_chat(122,'Haste II detected')
  1505.     end
  1506.     if hastesambatype==1 then
  1507.         hastelevel=hastelevel+5
  1508.         add_to_chat(122,'Haste samba detected')
  1509.     end
  1510.     if hastesambatype==2 then
  1511.         hastelevel=hastelevel+10
  1512.         add_to_chat(122,'Haste samba (dnc) detected')
  1513.     end
  1514.     if buffactive.march ==2 then --assuming song +3 at least
  1515.         hastelevel=hastelevel+25
  1516.         --add_to_chat(122,'2 marches detected')
  1517.     elseif buffactive.march ==1 then
  1518.         hastelevel=hastelevel+15
  1519.         --add_to_chat(122,'1 march detected')
  1520.     end
  1521.     if buffactive[580] then --assuming non idris, indi/geo haste
  1522.         hastelevel=hastelevel+33
  1523.         --add_to_chat(122,'Geo Haste detected')
  1524.     end
  1525.     if buffactive['Mighty Guard'] then
  1526.         hastelevel=hastelevel+15
  1527.         --add_to_chat(122,'Mighty Guard detected')
  1528.     end
  1529.     if buffactive['Slow'] then
  1530.         hastelevel=hastelevel-15
  1531.         add_to_chat(122,'Slow Detected')
  1532.     end
  1533.     add_to_chat(122,'Haste level '..hastelevel)
  1534.  
  1535.     --    if buffactive[579] then --mighty guard
  1536.     --      hastelevel=hastelevel+15
  1537.     --      add_to_chat(122,'Mighty Guard detected')
  1538.     --    end
  1539.     --add_to_chat(122,'Haste number '..hastelevel)
  1540.  
  1541.     if hastelevel == 0 then
  1542.         add_to_chat(122,'Haste level set to NoHaste')
  1543.         state.hastemode:set('NoHaste')
  1544.     elseif hastelevel >= 40 then
  1545.         add_to_chat(122,'Haste level set to Capped')
  1546.         state.hastemode:set('Capped')
  1547.     elseif hastelevel >= 25 then
  1548.         add_to_chat(122,'Haste level set to HasteII')
  1549.         state.hastemode:set('HasteII')
  1550.     elseif hastelevel >= 15 then
  1551.         add_to_chat(122,'Haste level set to HasteI')
  1552.         state.hastemode:set('HasteI')
  1553.     end
  1554. end
  1555.  
  1556. function customize_idle_set(idleSet)
  1557.     if player.hpp < 80 then
  1558.         idleSet = set_combine(idleSet, sets.ExtraRegen)
  1559.     end
  1560.     --add_to_chat(122,'Idle Set ')
  1561.  
  1562.     if state.RangedMode.current == 'Normal' then
  1563.         idleSet = set_combine(sets.midcast.RA,idleSet)
  1564.     else
  1565.         idleSet = set_combine(sets.midcast.RA[state.RangedMode.current],idleSet)
  1566.     end
  1567.     if state.rangetype.value ~= "None" then idleSet = set_combine(idleSet,sets.rangetype[state.rangetype.value]) end
  1568.     if state.idlemode.value ~= "Normal" then idleSet = set_combine(idleSet,sets.idle[state.idlemode.value]) end
  1569.     if state.damagetaken.value ~= "None" then idleSet = set_combine(idleSet,sets.damagetaken[state.damagetaken.value]) end
  1570.     if state.runaway2.current == 'on' then idleSet = set_combine(idleSet,sets.runaway2) end
  1571.     if mainswap then
  1572.         mainswap=0
  1573.         enable('main','sub')
  1574.         equip(sets.mainweapon[state.mainweapon.value])
  1575.         disable('main','sub')
  1576.     end
  1577.     if state.pullmode.current == 'on' then
  1578.         enable('main','sub')
  1579.         idleSet = set_combine(idleSet,sets.pullmode)
  1580.         equip(idleSet)
  1581.         disable('main','sub')
  1582.     end
  1583.  
  1584.    
  1585.     if state.cpmode.current == 'on' then idleSet = set_combine(idleSet,sets.cpmode) end
  1586.     if areas.Cities:contains(world.area) and world.area:contains("Adoulin") then
  1587.         idleSet = set_combine(idleSet, sets.adoulinmovement)
  1588.     elseif  world.area:contains("Mog Garden") then
  1589.         enable('main','sub')
  1590.         idleSet = set_combine(idleSet, sets.farmer)
  1591.         --windower.send_command('input /ja Release <me>;wait 2;input /ma '..tosummon..' <me>')
  1592.     end
  1593.  
  1594.  
  1595.     return idleSet
  1596. end
  1597.  
  1598. mainswap = 1
  1599. function customize_melee_set(meleeSet)
  1600.     meleeSet = set_combine(meleeSet,sets.hastemode[state.hastemode.value])
  1601.     if state.RangedMode.current == 'Normal' then meleeSet = set_combine(sets.midcast.RA,meleeSet)
  1602.     else meleeSet = set_combine(sets.midcast.RA[state.RangedMode.current],meleeSet) end
  1603.  
  1604.     if state.rangetype.value ~= "None" then meleeSet = set_combine(meleeSet,sets.rangetype[state.rangetype.value]) end
  1605.     if rangeswap then
  1606.         rangeswap=0
  1607.         equip(sets.rangetype[state.rangetype.value])
  1608.         if state.rangetype.value == "None" then
  1609.             enable('ranged','ammo')
  1610.         else
  1611.             disable('ranged','ammo')
  1612.         end
  1613.     end
  1614.     if state.OffenseMode.current ~= 'Normal' then meleeSet = set_combine(meleeSet,sets.engaged[state.OffenseMode.current]) end
  1615.     if state.damagetaken.value ~= "None" then meleeSet = set_combine(meleeSet,sets.damagetaken[state.damagetaken.value]) end
  1616.     if state.runaway2.current == 'on' then meleeSet = set_combine(meleeSet,sets.runaway2) end
  1617.     --if state.hasteknife.current == 'on' then meleeSet = set_combine(meleeSet,sets.hasteknife) end
  1618.     --if state.mabdagger.current == 'on' then meleeSet = set_combine(meleeSet,sets.mabdagger) end
  1619.     if mainswap then
  1620.         mainswap=0
  1621.         enable('main','sub')
  1622.         equip(sets.mainweapon[state.mainweapon.value])
  1623.         disable('main','sub')
  1624.     end
  1625.     if state.pullmode.current == 'on' then
  1626.         enable('main','sub')
  1627.         meleeSet = set_combine(meleeSet,sets.pullmode)
  1628.         equip(meleeSet)
  1629.         disable('main','sub')
  1630.     end
  1631.     --if state.RangedMode.current ~= 'Normal' then meleeSet = set_combine(idleSet,sets.engaged[state.RangedMode.current]) end
  1632.     if state.cpmode.current == 'on' then meleeSet = set_combine(meleeSet,sets.cpmode) end
  1633.  
  1634.     return meleeSet
  1635. end
  1636. function customize_resting_set(restingSet)
  1637.     if state.cpmode.current == 'on' then restingSet = set_combine(restingSet,sets.cpmode) end
  1638.     return restingSet
  1639. end
  1640.  
  1641.  
  1642. -- Called by the 'update' self-command.
  1643. function job_update(cmdParams, eventArgs)
  1644.     --th_update(cmdParams, eventArgs)
  1645. end
  1646. dw = 0;
  1647. dtmode = 0;
  1648. accmode = 0;
  1649. runaway = 0;
  1650. rangeswap = 0;
  1651. use_dualbox=false
  1652. function job_self_command(cmdParams, eventArgs)
  1653.     command = cmdParams[1]:lower()
  1654.     if command=='hastetype' then
  1655.         if hastetype == 1 then hastetype=2
  1656.         else hastetype = 1 end
  1657.         add_to_chat(122,'Haste '..hastetype)
  1658.         check_haste_level()
  1659.         handle_equipping_gear(player.status)
  1660.     elseif command=='shoot' then
  1661.         send_command('input /shoot <t>')
  1662.         if player.status == 'Engaged' then
  1663.             autora = true
  1664.         end
  1665.     elseif command=='setws' then
  1666.         ws_set = string.gsub(cmdParams[2],"_"," ")
  1667.         print (ws_set)
  1668.         default_ws = ws_set
  1669.         send_command('bind %numpad3 input /ws '..ws_set)
  1670.     elseif command=='checkandshoot' then
  1671.         if player.status == 'Engaged' and autora == true and not midshot_real then
  1672.             send_command('input /shoot <t>')
  1673.             midshot = true
  1674.         end
  1675.     elseif command=='shootstop' then
  1676.         --print('stopping ')
  1677.         --print(autora)
  1678.         autora = false
  1679.         midshot = false
  1680.         midshot_real = false
  1681.     elseif command=='hastesambatype' then
  1682.         if hastesambatype == 0 then hastesambatype=1
  1683.         elseif hastesambatype == 1 then hastesambatype = 2
  1684.         else hastesambatype = 0 end
  1685.         add_to_chat(122,'Hastesambatype '..hastesambatype)
  1686.     elseif command=='rangetype' then
  1687.         enable('range','ammo')
  1688.         rangeswap=1
  1689.         send_command('gs c cycle rangetype')
  1690.         if state.rangetype.value == "Throwing" then
  1691.             default_ws = "Trueflight"
  1692.             send_command('bind %numpad3 input /ws "Trueflight" <t>')
  1693.             send_command('bind @numpad1 gs c ammotype "Abrasion_Bolt"')
  1694.             send_command('bind @numpad2 gs c ammotype "Quelling_Bolt"')
  1695.             send_command('bind @numpad4 gs c ammotype "Bloody_Bolt"')
  1696.             send_command('bind @numpad5 gs c ammotype "Righteous_Bolt"')
  1697.         elseif state.rangetype.value == "Crossbow" then
  1698.             default_ws = "Jishnu's Radiance"
  1699.             send_command('bind %numpad3 input /ws "Jishnu\'s Radiance" <t>')
  1700.             --print('jishnu')
  1701.         end
  1702.     elseif command=='ammotype' then
  1703.         if state.rangetype.value ~= "None" then
  1704.             atype = string.gsub(cmdParams[2],"_"," ")
  1705.             add_to_chat(122,atype)
  1706.             sets.rangetype[state.rangetype.value] = set_combine(sets.rangetype[state.rangetype.value],{ammo=atype})
  1707.             enable('ammo')
  1708.             equip(sets.rangetype[state.rangetype.value])
  1709.             disable('ammo')
  1710.         end
  1711.     elseif command=='mainweapon' then
  1712.         enable('main','sub')
  1713.         mainswap=1
  1714.         send_command('gs c cycle mainweapon')
  1715.     elseif command=='test' then
  1716.         print('equipping set')
  1717.         equip(sets.precast.WS["Rudra's Storm SA"])
  1718.         --pr(sets.precast.WS)
  1719.     elseif command == 'warpring' then
  1720.         equip({left_ring="Warp Ring"})
  1721.         send_command('gs disable left_ring;wait 10;input /item "Warp Ring" <me>;wait 1;input /item "Warp Ring" <me>;wait 1;input /item "Warp Ring" <me>;wait 10;gs enable left_ring')
  1722.     elseif cmdParams[1] == "switch_dualbox_binds" then -- disables stp_m1 to stp_m10 for dual box commands, or enables them
  1723.         if use_dualbox then
  1724.             send_command('alias stp_m6 gs c toggle hasteknife')
  1725.             send_command('alias stp_m7 gs c toggle mabdagger')
  1726.             use_dualbox=false
  1727.         else
  1728.             send_command('alias stp_m1 nil')
  1729.             send_command('alias stp_m2 nil')
  1730.             send_command('alias stp_m3 nil')
  1731.             send_command('alias stp_m4 nil')
  1732.             send_command('alias stp_m5 nil')
  1733.             send_command('alias stp_m6 nil')
  1734.             send_command('alias stp_m7 nil')
  1735.             send_command('alias stp_m8 nil')
  1736.             send_command('alias stp_m9 nil')
  1737.             --send_command('alias stp_m10 nil')
  1738.             use_dualbox=true
  1739.         end
  1740.         --
  1741.     elseif cmdParams[1] == "toggle_dt" then
  1742.         if state.damagetaken.value == 'DT' then
  1743.             send_command('gs c set damagetaken None')
  1744.         else
  1745.             send_command('gs c set damagetaken DT')
  1746.         end
  1747.  
  1748.     end
  1749. end
  1750.  
  1751. -- Function to display the current relevant user state when doing an update.
  1752. -- Return true if display was handled, and you don't want the default info shown.
  1753. function display_current_job_state(eventArgs)
  1754.     local msg = 'Melee'
  1755.  
  1756.     if state.CombatForm.has_value then
  1757.         msg = msg .. ' (' .. state.CombatForm.value .. ')'
  1758.     end
  1759.  
  1760.     msg = msg .. ': '
  1761.  
  1762.     msg = msg .. state.OffenseMode.value
  1763.     if state.HybridMode.value ~= 'Normal' then
  1764.         msg = msg .. '/' .. state.HybridMode.value
  1765.     end
  1766.     msg = msg .. ', WS: ' .. state.WeaponskillMode.value
  1767.  
  1768.     if state.DefenseMode.value ~= 'None' then
  1769.         msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  1770.     end
  1771.  
  1772.     if state.Kiting.value == true then
  1773.         msg = msg .. ', Kiting'
  1774.     end
  1775.  
  1776.     if state.PCTargetMode.value ~= 'default' then
  1777.         msg = msg .. ', Target PC: '..state.PCTargetMode.value
  1778.     end
  1779.  
  1780.     if state.SelectNPCTargets.value == true then
  1781.         msg = msg .. ', Target NPCs'
  1782.     end
  1783.  
  1784.     --msg = msg .. ', TH: ' .. state.TreasureMode.value
  1785.  
  1786.     add_to_chat(122, msg)
  1787.  
  1788.     eventArgs.handled = true
  1789. end
  1790.  
  1791. -------------------------------------------------------------------------------------------------------------------
  1792. -- Utility functions specific to this job.
  1793. -------------------------------------------------------------------------------------------------------------------
  1794.  
  1795. -- State buff checks that will equip buff gear and mark the event as handled.
  1796. function check_buff(buff_name, eventArgs)
  1797.     if state.Buff[buff_name] then
  1798.         equip(sets.buff[buff_name] or {})
  1799.         eventArgs.handled = true
  1800.     end
  1801.  
  1802.     --    if buffactive['Haste'] and player.tp < 200 and usehasteknife == 1 then
  1803.     --      sets.engaged = set_combine(sets.engaged,sets.Mainhand)
  1804.     --      sets.idle = set_combine(sets.idle,sets.Mainhand)
  1805.     --    elseif player.tp < 200 and usehasteknife == 1 then
  1806.     --          sets.engaged = set_combine(sets.engaged,sets.Haste)
  1807.     --          sets.idle = set_combine(sets.idle,sets.Haste)
  1808.     --    end
  1809. end
  1810.  
  1811. -- Select default macro book on initial load or subjob change.
  1812. function select_default_macro_book()
  1813.     if player.sub_job == 'WAR' then
  1814.         set_macro_page(1, 3)
  1815.     elseif player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1816.         set_macro_page(1, 3)
  1817.     end
  1818. end
  1819.  
  1820. require 'actions-custom'
  1821.  
  1822.  
  1823. midshot = false
  1824. function event_action(raw_actionpacket)
  1825.     local actionpacket = ActionPacket.new(raw_actionpacket)
  1826.     if not autora then
  1827.         return
  1828.     end
  1829.    
  1830.     actionstr = actionpacket:get_category_string()
  1831.  
  1832.     if actionstr == 'ranged_begin' then
  1833.         --print('ranged begin')
  1834.         midshot_real=true
  1835.     end
  1836.     if actionstr == 'ranged_finish' and player.status == 'Engaged' then
  1837.         --print('ranged end')
  1838.         --send_command('wait .5;input /shoot <t>')
  1839.         --send_command('wait .6;input /shoot <t>')
  1840.         midshot=false
  1841.         midshot_real=false
  1842.         --print('autora')
  1843.         if autora and player.tp >= 1000 and state.autows.current == 'on' then
  1844.             send_command('wait 1;input /ws "'..default_ws..'" <t>;wait 3.4;gs c checkandshoot')
  1845.             --send_command('wait 1.3;input /ws "'..default_ws..'" <t>;')
  1846.         elseif autora then
  1847.             --send_command('wait .7;input /shoot <t>')
  1848.             --send_command('wait .8;input /shoot <t>')
  1849.             --send_command('wait .9;input /shoot <t>')
  1850.             --send_command('wait .6;gs c checkandshoot')
  1851.             --send_command('wait .7;gs c checkandshoot')
  1852.             --send_command('wait .8;gs c checkandshoot')
  1853.             --send_command('wait .9;gs c checkandshoot')
  1854.             send_command('wait 1;gs c checkandshoot')
  1855.             --send_command('wait 1.3;gs c checkandshoot')
  1856.             --send_command('wait 1;gs c checkandshoot')
  1857.             --send_command('wait 1.3;gs c checkandshoot')
  1858.         end
  1859.     end
  1860.    
  1861. end
  1862. function ActionPacket.open_raw_listener(funct)
  1863.     if not funct or type(funct) ~= 'function' then return end
  1864.     local id = windower.raw_register_event('incoming chunk',function(id, org, modi, is_injected, is_blocked)
  1865.         if id == 0x28 then
  1866.             local act_org = windower.packets.parse_action(org)
  1867.             act_org.size = org:byte(5)
  1868.             local act_mod = windower.packets.parse_action(modi)
  1869.             act_mod.size = modi:byte(5)
  1870.             return act_to_string(org,funct(act_org,act_mod))
  1871.         end
  1872.     end)
  1873.     return id
  1874. end
  1875.  
  1876.  
  1877. ActionPacket.open_raw_listener(event_action)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement