bongarippa

SalCOR

May 10th, 2025
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 76.41 KB | None | 0 0
  1. -- Original: Motenten / Modified: Arislan
  2. -- Haste/DW Detection Requires Gearinfo Addon
  3.  
  4. -------------------------------------------------------------------------------------------------------------------
  5. -- Keybinds
  6. -------------------------------------------------------------------------------------------------------------------
  7.  
  8. -- Modes: [ F9 ] Cycle Offense Modes
  9. -- [ CTRL+F9 ] Cycle Hybrid Modes
  10. -- [ ALT+F9 ] Cycle Ranged Modes
  11. -- [ WIN+F9 ] Cycle Weapon Skill Modes
  12. -- [ F10 ] Emergency -PDT Mode
  13. -- [ ALT+F10 ] Toggle Kiting Mode
  14. -- [ F11 ] Emergency -MDT Mode
  15. -- [ F12 ] Update Current Gear / Report Current Status
  16. -- [ CTRL+F12 ] Cycle Idle Modes
  17. -- [ ALT+F12 ] Cancel Emergency -PDT/-MDT Mode
  18. -- [ WIN+C ] Toggle Capacity Points Mode
  19. -- [ WIN+` ] Toggle use of Luzaf Ring.
  20. -- [ WIN+Q ] Quick Draw shot mode selector.
  21. --
  22. -- Abilities: [ CTRL+- ] Quick Draw primary shot element cycle forward.
  23. -- [ CTRL+= ] Quick Draw primary shot element cycle backward.
  24. -- [ ALT+- ] Quick Draw secondary shot element cycle forward.
  25. -- [ ALT+= ] Quick Draw secondary shot element cycle backward.
  26. -- [ CTRL+[ ] Quick Draw toggle target type.
  27. -- [ CTRL+] ] Quick Draw toggle use secondary shot.
  28. --
  29. -- [ CTRL+C ] Crooked Cards
  30. -- [ CTRL+` ] Double-Up
  31. -- [ CTRL+X ] Fold
  32. -- [ CTRL+S ] Snake Eye
  33. -- [ CTRL+NumLock ] Triple Shot
  34. -- [ CTRL+Numpad/ ] Berserk
  35. -- [ CTRL+Numpad* ] Warcry
  36. -- [ CTRL+Numpad- ] Aggressor
  37. --
  38. -- Spells: [ WIN+, ] Utsusemi: Ichi
  39. -- [ WIN+. ] Utsusemi: Ni
  40. --
  41. -- Weapons: [ WIN+E/R ] Cycles between available Weapon Sets
  42. -- [ WIN+W ] Toggle Ranged Weapon Lock
  43. --
  44. -- WS: [ CTRL+Numpad7 ] Savage Blade
  45. -- [ CTRL+Numpad8 ] Last Stand
  46. -- [ CTRL+Numpad4 ] Leaden Salute
  47. -- [ CTRL+Numpad5 ] Requiescat
  48. -- [ CTRL+Numpad6 ] Wildfire
  49. -- [ CTRL+Numpad1 ] Aeolian Edge
  50. -- [ CTRL+Numpad2 ] Evisceration
  51. --
  52. -- RA: [ Numpad0 ] Ranged Attack
  53. --
  54. --
  55. -- (Global-Binds.lua contains additional non-job-related keybinds)
  56.  
  57.  
  58. -------------------------------------------------------------------------------------------------------------------
  59. -- Custom Commands (preface with /console to use these in macros)
  60. -------------------------------------------------------------------------------------------------------------------
  61.  
  62. -- gs c qd Uses the currently configured shot on the target, with either <t> or
  63. -- <stnpc> depending on setting.
  64. -- gs c qd t Uses the currently configured shot on the target, but forces use of <t>.
  65. --
  66. -- gs c cycle mainqd Cycles through the available steps to use as the primary shot when using
  67. -- one of the above commands.
  68. -- gs c cycle altqd Cycles through the available steps to use for alternating with the
  69. -- configured main shot.
  70. -- gs c toggle usealtqd Toggles whether or not to use an alternate shot.
  71. -- gs c toggle selectqdtarget Toggles whether or not to use <stnpc> (as opposed to <t>) when using a shot.
  72. --
  73. -- gs c toggle LuzafRing Toggles use of Luzaf Ring on and off
  74.  
  75.  
  76. -------------------------------------------------------------------------------------------------------------------
  77. -- Setup functions for this job. Generally should not be modified.
  78. -------------------------------------------------------------------------------------------------------------------
  79.  
  80. -- Initialization function for this job file.
  81. function get_sets()
  82. include('organizer-lib')
  83. mote_include_version = 2
  84.  
  85. -- Load and initialize the include file.
  86. include('Mote-Include.lua')
  87. end
  88.  
  89. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  90. function job_setup()
  91. -- QuickDraw Selector
  92. state.Mainqd = M{['description']='Primary Shot', 'Fire Shot', 'Ice Shot', 'Wind Shot', 'Earth Shot', 'Thunder Shot', 'Water Shot'}
  93. state.Altqd = M{['description']='Secondary Shot', 'Fire Shot', 'Ice Shot', 'Wind Shot', 'Earth Shot', 'Thunder Shot', 'Water Shot'}
  94. state.UseAltqd = M(false, 'Use Secondary Shot')
  95. state.SelectqdTarget = M(false, 'Select Quick Draw Target')
  96. state.IgnoreTargetting = M(false, 'Ignore Targetting')
  97.  
  98. state.QDMode = M{['description']='Quick Draw Mode', 'STP', 'Enhance', 'Magic Attack','TH'}
  99.  
  100. state.Currentqd = M{['description']='Current Quick Draw', 'Main', 'Alt'}
  101.  
  102. -- Whether to use Luzaf's Ring
  103. state.LuzafRing = M(false, "Luzaf's Ring")
  104. -- Whether a warning has been given for low ammo
  105. state.warned = M(false)
  106.  
  107. include('Mote-TreasureHunter')
  108. state.TreasureMode:set('Tag')
  109.  
  110.  
  111.  
  112. no_swap_gear = S{"Warp Ring", "Dim. Ring (Dem)", "Dim. Ring (Holla)", "Dim. Ring (Mea)",
  113. "Trizek Ring", "Echad Ring", "Facility Ring", "Capacity Ring",
  114. "Dev. Bul. Pouch", "Chr. Bul. Pouch", "Liv. Bul. Pouch"}
  115. elemental_ws = S{"Aeolian Edge", "Leaden Salute", "Wildfire"}
  116. no_shoot_ammo = S{"Hauksbok Bullet"}
  117.  
  118. define_roll_values()
  119.  
  120. lockstyleset = 37
  121. end
  122.  
  123. -------------------------------------------------------------------------------------------------------------------
  124. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  125. -------------------------------------------------------------------------------------------------------------------
  126.  
  127. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  128. function user_setup()
  129. state.OffenseMode:options('Normal', 'LowAcc', 'MidAcc', 'HighAcc', 'STP', 'EngagedShooting')
  130. state.HybridMode:options('Normal', 'DT', 'SubtleBlow', 'MeleeCrit', 'EP')
  131. state.RangedMode:options('Normal', 'Acc', 'Critical', 'SubtleBlow')
  132. state.WeaponskillMode:options('Normal', 'Acc')
  133. state.IdleMode:options('Normal', 'HP') --'Refresh', 'DT'
  134.  
  135. state.Gun = M{['description']='Current Gun', 'Death Penalty', 'Armageddon', 'Fomalhaut', 'Anarchy +3','Compensator'}
  136. -- state.CP = M(false, "Capacity Points Mode")
  137. state.WeaponLock = M(false, 'Weapon Lock')
  138.  
  139. gear.RAbullet = "Chrono Bullet"
  140. gear.RAccbullet = "Devastating Bullet"
  141. gear.WSbullet = "Chrono Bullet"
  142. gear.MAbullet = "Bullet"
  143. gear.QDbullet = "Hauksbok Bullet"
  144. options.ammo_warning_limit = 10
  145.  
  146. -- Additional local binds
  147. -- include('Global-Binds.lua') -- OK to remove this line
  148. -- include('Global-GEO-Binds.lua') -- OK to remove this line
  149.  
  150. send_command('lua l gearinfo')
  151.  
  152. -- send_command('bind @t gs c cycle treasuremode')
  153. send_command('bind !` input /ja "Bolter\'s Roll" <me>')
  154. send_command ('bind @` gs c toggle LuzafRing')
  155.  
  156. send_command('bind ^- gs c cycleback mainqd')
  157. send_command('bind ^= gs c cycle mainqd')
  158. send_command('bind !- gs c cycle altqd')
  159. send_command('bind != gs c cycleback altqd')
  160. send_command('bind ^[ gs c toggle selectqdtarget')
  161. send_command('bind ^] gs c toggle usealtqd')
  162.  
  163. -- send_command('bind @c gs c toggle CP')
  164. send_command('bind @q gs c cycle QDMode')
  165. send_command('bind @e gs c cycle Gun')
  166. send_command('bind @w gs c toggle WeaponLock')
  167.  
  168. -- send_command('bind numpad0 input /ra <t>')
  169.  
  170. select_default_macro_book()
  171. set_lockstyle()
  172.  
  173. state.Auto_Kite = M(false, 'Auto_Kite')
  174. Haste = 0
  175. DW_needed = 0
  176. DW = false
  177. moving = false
  178. update_combat_form()
  179. determine_haste_group()
  180. end
  181.  
  182.  
  183. -- Called when this job file is unloaded (eg: job change)
  184. function user_unload()
  185. -- send_command('unbind @t')
  186. send_command('unbind !`')
  187. send_command('unbind @`')
  188. send_command('unbind ^-')
  189. send_command('unbind ^=')
  190. send_command('unbind !-')
  191. send_command('unbind !=')
  192. send_command('unbind ^[')
  193. send_command('unbind ^]')
  194. -- send_command('unbind @c')
  195. send_command('unbind @q')
  196. send_command('unbind @e')
  197. send_command('unbind @w')
  198.  
  199. send_command('lua u gearinfo')
  200. end
  201.  
  202. -- Define sets and vars used by this job file.
  203. function init_gear_sets()
  204.  
  205. ------------------------------------------------------------------------------------------------
  206. ---------------------------------------- Precast Sets ------------------------------------------
  207. ------------------------------------------------------------------------------------------------
  208.  
  209.  
  210. sets.precast.JA['Double-Up'] = {legs="Lanun Trews +3"}
  211. sets.precast.JA['Snake Eye'] = {legs="Lanun Trews +3"}
  212. sets.precast.JA['Wild Card'] = {feet="Lanun Bottes +3"}
  213. sets.precast.JA['Random Deal'] = {body="Lanun Frac +3"}
  214. sets.precast.JA['Triple Shot'] = {head="Oshosi Mask",
  215. body="Chasseur's Frac +3",
  216. hands="Oshosi Gloves",
  217. legs="Oshosi Trousers",
  218. feet="Oshosi Leggings",
  219. back={ name="Camulus's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10','Phys. dmg. taken-10%',}},}
  220.  
  221. sets.precast.CorsairRoll = {range="Compensator",
  222. head={ name="Lanun Tricorne +3", augments={'Enhances "Winning Streak" effect',}},
  223. body="Malignance Tabard",
  224. hands="Chasseur's Gants +2",
  225. legs={ name="Carmine Cuisses +1", augments={'Accuracy+12','DEX+12','MND+20',}},
  226. feet={ name="Lanun Bottes +3", augments={'Enhances "Wild Card" effect',}},
  227. neck="Regal Necklace",
  228. waist="Plat. Mog. Belt",
  229. left_ear="Genmei Earring",
  230. right_ear="Odnowa Earring +1",
  231. left_ring="Defending Ring",
  232. right_ring="Luzaf's Ring",
  233. back={ name="Camulus's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','HP+20','Enmity-10','Phys. dmg. taken-10%',}}}
  234.  
  235. sets.precast.CorsairRoll.Duration = {}
  236. sets.precast.CorsairRoll.LowerDelay = {back="Gunslinger's Cape"}
  237. sets.precast.CorsairRoll["Caster\'s Roll"] = {}
  238. sets.precast.CorsairRoll["Courser\'s Roll"] = set_combine(sets.precast.CorsairRoll, {feet="Chass. Bottes +3"})
  239. sets.precast.CorsairRoll["Blitzer\'s Roll"] = set_combine(sets.precast.CorsairRoll, {head="Chass. Tricorne +3"})
  240. sets.precast.CorsairRoll["Tactician\'s Roll"] = set_combine(sets.precast.CorsairRoll, {body="Chasseur's Frac +3"})
  241. sets.precast.CorsairRoll["Allies' Roll"] = set_combine(sets.precast.CorsairRoll, {hands="Chasseur's Gants +3"})
  242.  
  243. sets.precast.LuzafRing = {ring1="Luzaf's Ring"}
  244.  
  245. sets.precast.FoldDoubleBust = {hands="Lanun Gants +3"}
  246.  
  247. sets.precast.Waltz = {
  248. body="Passion Jacket",
  249. ring1="Asklepian Ring",
  250. waist="Gishdubar Sash",
  251. }
  252.  
  253. sets.precast.Waltz['Healing Waltz'] = {}
  254.  
  255. sets.precast.FC = {head={ name="Carmine Mask", augments={'Accuracy+10','DEX+10','MND+15',}},
  256. body="Malignance Tabard",
  257. hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
  258. legs={ name="Carmine Cuisses +1", augments={'Accuracy+12','DEX+12','MND+20',}},
  259. feet={ name="Lanun Bottes +3", augments={'Enhances "Wild Card" effect',}},
  260. neck="Baetyl Pendant",
  261. waist="Plat. Mog. Belt",
  262. left_ear="Loquac. Earring",
  263. right_ear="Etiolation Earring",
  264. left_ring="Medada's Ring",
  265. right_ring="Kishar Ring",
  266. back={ name="Camulus's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','HP+20','Enmity-10','Phys. dmg. taken-10%',}}
  267. }
  268.  
  269. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {
  270. body="Passion Jacket",
  271. neck="Magoraga Beads",
  272. })
  273.  
  274. -- (10% Snapshot from JP Gifts)
  275. sets.precast.RA = {head="Chass. Tricorne +3",
  276. body="Oshosi Vest",
  277. hands={ name="Lanun Gants +3", augments={'Enhances "Fold" effect',}},
  278. legs={ name="Adhemar Kecks +1", augments={'AGI+12','"Rapid Shot"+13','Enmity-6',}},
  279. feet="Meg. Jam. +2",
  280. neck={ name="Comm. Charm +2", augments={'Path: A',}},
  281. waist="Yemaya Belt",
  282. left_ear="Odnowa Earring",
  283. right_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
  284. left_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  285. right_ring="Regal Ring",
  286. back={ name="Camulus's Mantle", augments={'"Snapshot"+10',}},
  287. }
  288.  
  289. sets.precast.RA.Flurry1 = set_combine(sets.precast.RA, {head="Chass. Tricorne +3",
  290. body="Laksa. Frac +3",
  291. hands="Lanun Gants +3",
  292. legs={ name="Adhemar Kecks +1", augments={'AGI+12','"Rapid Shot"+13','Enmity-6',}},
  293. feet="Meg. Jam. +2",
  294. neck={ name="Comm. Charm +2", augments={'Path: A',}},
  295. back={ name="Camulus's Mantle", augments={'"Snapshot"+10',}},})
  296.  
  297. sets.precast.RA.Flurry2 = set_combine(sets.precast.RA, {head="Chass. Tricorne +3",
  298. body="Laksa. Frac +3",
  299. hands={ name="Carmine Fin. Ga. +1", augments={'Rng.Atk.+20','"Mag.Atk.Bns."+12','"Store TP"+6',}},
  300. legs={ name="Adhemar Kecks +1", augments={'AGI+12','"Rapid Shot"+13','Enmity-6',}},
  301. feet="Meg. Jam. +2",
  302. neck={ name="Comm. Charm +2", augments={'Path: A',}},
  303. back={ name="Camulus's Mantle", augments={'"Snapshot"+10',}},})
  304.  
  305. ------------------------------------------------------------------------------------------------
  306. ------------------------------------- Weapon Skill Sets ----------------------------------------
  307. ------------------------------------------------------------------------------------------------
  308.  
  309. sets.precast.WS = {
  310. ammo=gear.WSbullet,
  311. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  312. body="Laksa. Frac +3",
  313. hands="Meg. Gloves +2",
  314. legs="Malignance Tights",
  315. feet={ name="Lanun Bottes +3", augments={'Enhances "Wild Card" effect',}},
  316. neck="Fotia Gorget",
  317. waist="Fotia Belt",
  318. left_ear="Ishvara Earring",
  319. right_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  320. left_ring="Cornelia's Ring",
  321. right_ring="Regal Ring",
  322. back={ name="Camulus's Mantle", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','AGI+10','Weapon skill damage +10%','Mag. Evasion+15',}},
  323. }
  324.  
  325. sets.precast.WS.Acc = set_combine(sets.precast.WS, {
  326. feet="Meg. Jam. +2",
  327. ear2="Telos Earring",
  328. neck="Iskur Gorget",
  329. ring2="Hajduk Ring +1",
  330. waist="Eschan Stone",
  331. })
  332.  
  333. sets.precast.WS['Last Stand'] = {ammo=gear.WSbullet,
  334. head={ name="Lanun Tricorne +3", augments={'Enhances "Winning Streak" effect',}},
  335. body="Laksa. Frac +2",
  336. hands="Chasseur's Gants +2",
  337. legs={ name="Lanun Trews +3", augments={'Enhances "Snake Eye" effect',}},
  338. feet={ name="Lanun Bottes +3", augments={'Enhances "Wild Card" effect',}},
  339. neck="Fotia Gorget",
  340. waist="Fotia Belt",
  341. left_ear="Ishvara Earring",
  342. right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
  343. left_ring="Epaminondas's Ring",
  344. right_ring="Regal Ring",
  345. back={ name="Camulus's Mantle", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','AGI+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}}}
  346.  
  347. sets.precast.WS['Last Stand'].Acc = set_combine(sets.precast.WS['Last Stand'], {
  348. feet="Meg. Jam. +2",
  349. neck="Iskur Gorget",
  350. ear2="Telos Earring",
  351. ring2="Hajduk Ring +1",
  352. waist="Eschan Stone",
  353. })
  354.  
  355. sets.precast.WS['Wildfire'] = {
  356. ammo=gear.MAbullet,
  357. head="Nyame Helm",
  358. body={ name="Lanun Frac +3", augments={'Enhances "Loaded Deck" effect',}},
  359. hands="Chasseur's Gants +2",
  360. legs="Nyame Flanchard",
  361. feet={ name="Lanun Bottes +3", augments={'Enhances "Wild Card" effect',}},
  362. neck="Baetyl Pendant",
  363. waist="Eschan Stone",
  364. left_ear="Friomisi Earring",
  365. right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
  366. left_ring="Epaminondas's Ring",
  367. right_ring="Medada's Ring",
  368. back={ name="Camulus's Mantle", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','AGI+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}}
  369. }
  370.  
  371. sets.precast.WS['Hot Shot'] = set_combine(sets.precast.WS['Wildfire'], {ammo="Bullet",
  372. neck="Sanctity Necklace"})
  373.  
  374. sets.precast.WS['Split Shot'] = set_combine(sets.precast.WS['Last Stand'], {ammo="Bullet"})
  375.  
  376. sets.precast.WS['Sniper Shot'] = set_combine(sets.precast.WS['Last Stand'], {ammo="Bullet"})
  377.  
  378. sets.precast.WS['Detonator'] = set_combine(sets.precast.WS['Last Stand'], {ammo="Bullet"})
  379.  
  380. sets.precast.WS['Leaden Salute'] = {ammo=gear.MAbullet,
  381. head="Pixie Hairpin +1",
  382. body={ name="Lanun Frac +3", augments={'Enhances "Loaded Deck" effect',}},
  383. hands="Chasseur's Gants +2",
  384. legs="Nyame Flanchard",
  385. feet={ name="Lanun Bottes +3", augments={'Enhances "Wild Card" effect',}},
  386. neck="Baetyl Pendant",
  387. waist="Eschan Stone",
  388. left_ear="Friomisi Earring",
  389. right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
  390. left_ring="Epaminondas's Ring",
  391. right_ring="Archon Ring",
  392. back={ name="Camulus's Mantle", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','AGI+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}}}
  393.  
  394. sets.precast.WS['Leaden Salute'].Acc = {ammo=gear.MAbullet,
  395. head="Pixie Hairpin +1",
  396. body={ name="Lanun Frac +3", augments={'Enhances "Loaded Deck" effect',}},
  397. hands="Nyame Gauntlets",
  398. legs="Nyame Flanchard",
  399. feet={ name="Lanun Bottes +3", augments={'Enhances "Wild Card" effect',}},
  400. neck={ name="Comm. Charm +2", augments={'Path: A',}},
  401. waist="Orpheus's Sash",
  402. left_ear="Friomisi Earring",
  403. right_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  404. left_ring="Cornelia's Ring",
  405. right_ring="Archon Ring",
  406. back={ name="Camulus's Mantle", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','AGI+10','Weapon skill damage +10%','Mag. Evasion+15',}},}
  407.  
  408. sets.precast.WS['Evisceration'] = {
  409. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  410. body="Meg. Cuirie +2",
  411. hands="Chasseur's Gants +3",
  412. legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  413. feet="Mummu Gamash. +2",
  414. neck="Fotia Gorget",
  415. waist="Fotia Belt",
  416. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  417. right_ear="Odr Earring",
  418. left_ring="Mummu Ring",
  419. right_ring="Regal Ring",
  420. back={ name="Camulus's Mantle", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','AGI+10','Weapon skill damage +10%','Mag. Evasion+15',}},
  421. }
  422.  
  423. sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {
  424. head="Mummu Bonnet +2",
  425. legs="Mummu Kecks +2",
  426. })
  427.  
  428. sets.precast.WS['Savage Blade'] = {head="Nyame Helm",
  429. body="Laksa. Frac +2",
  430. hands="Nyame Gauntlets",
  431. legs="Malignance Tights",
  432. feet={ name="Lanun Bottes +3", augments={'Enhances "Wild Card" effect',}},
  433. neck="Rep. Plat. Medal",
  434. waist="Fotia Belt",
  435. left_ear="Ishvara Earring",
  436. right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
  437. left_ring="Epaminondas's Ring",
  438. right_ring="Sroda Ring",
  439. back={ name="Camulus's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}}
  440. }
  441.  
  442. sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'], {
  443. body="Meg. Cuirie +2",
  444. ear2="Telos Earring",
  445. ring2="Rufescent Ring",
  446. waist="Kentarch belt +1",
  447. })
  448.  
  449. sets.precast.WS['Circle Blade'] = sets.precast.WS['Savage Blade']
  450.  
  451. sets.precast.WS['Swift Blade'] = {}
  452.  
  453. sets.precast.WS['Swift Blade'].Acc = {}
  454.  
  455. sets.precast.WS['Requiescat'] = {}
  456.  
  457. sets.precast.WS['Requiescat'].Acc = {}
  458.  
  459. sets.precast.WS['Aeolian Edge'] = {ammo=gear.MAbullet,
  460. head={ name="Nyame Helm", augments={'Path: B',}},
  461. body={ name="Lanun Frac +3", augments={'Enhances "Loaded Deck" effect',}},
  462. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  463. legs={ name="Nyame Flanchard", augments={'Path: B',}},
  464. feet={ name="Nyame Sollerets", augments={'Path: B',}},
  465. neck={ name="Comm. Charm +2", augments={'Path: A',}},
  466. waist="Orpheus's Sash",
  467. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  468. right_ear="Friomisi Earring",
  469. left_ring="Epaminondas's Ring",
  470. right_ring="Cornelia's Ring",
  471. back={ name="Camulus's Mantle", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','AGI+10','Weapon skill damage +10%','Mag. Evasion+15',}}}
  472.  
  473. sets.precast.WS['Last Start'] = {main={ name="Rostam", augments={'Path: A',}},}
  474.  
  475.  
  476. ------------------------------------------------------------------------------------------------
  477. ---------------------------------------- Midcast Sets ------------------------------------------
  478. ------------------------------------------------------------------------------------------------
  479.  
  480. sets.midcast.FastRecast = sets.precast.FC
  481.  
  482. sets.midcast.SpellInterrupt = {
  483. legs="Carmine Cuisses +1", --20
  484. ring1="Evanescence Ring", --5
  485. }
  486.  
  487. sets.midcast.Cure = {}
  488.  
  489. sets.midcast.Utsusemi = sets.midcast.SpellInterrupt
  490.  
  491. sets.midcast.CorsairShot = {
  492. ammo=gear.QDbullet,
  493. head={ name="Lanun Tricorne +3", augments={'Enhances "Winning Streak" effect',}},
  494. body={ name="Lanun Frac +3", augments={'Enhances "Loaded Deck" effect',}},
  495. hands="Chasseur's Gants +2",
  496. legs="Nyame Flanchard",
  497. feet="Nyame Sollerets",
  498. neck="Baetyl Pendant",
  499. waist="Eschan Stone",
  500. left_ear="Friomisi Earring",
  501. right_ear="Odnowa Earring +1",
  502. left_ring="Dingir Ring",
  503. right_ring="Medada's Ring",
  504. back={ name="Camulus's Mantle", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','AGI+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}}
  505. }
  506.  
  507. sets.midcast.CorsairShot.STP = {
  508. ammo=gear.QDbullet,
  509. head="Ikenga's Hat",
  510. body={ name="Lanun Frac +3", augments={'Enhances "Loaded Deck" effect',}},
  511. hands="Chasseur's Gants +3",
  512. legs={ name="Nyame Flanchard", augments={'Path: B',}},
  513. feet="Chass. Bottes +3",
  514. neck="Baetyl Pendant",
  515. waist="Skrymir Cord +1",
  516. left_ear="Friomisi Earring",
  517. right_ear="Novio Earring",
  518. left_ring="Dingir Ring",
  519. right_ring="Crepuscular Ring",
  520. back={ name="Camulus's Mantle", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','AGI+10','Weapon skill damage +10%','Mag. Evasion+15',}},
  521. }
  522. sets.midcast.CorsairShot.TH = {head="Volte Cap", legs="Volte hose", hands="Volte Bracers",feet="Volte boots",}
  523.  
  524. sets.midcast.CorsairShot['Light Shot'] = {
  525. ammo=gear.MAbullet,
  526. head="Ikenga's Hat",
  527. body="Malignance Tabard",
  528. hands="Malignance Gloves",
  529. legs="Malignance Tights",
  530. feet="Chass. Bottes +3",
  531. neck={ name="Comm. Charm +2", augments={'Path: A',}},
  532. waist="Skrymir Cord +1",
  533. left_ear="Digni. Earring",
  534. right_ear="Crep. Earring",
  535. left_ring="Stikini Ring +1",
  536. right_ring="Crepuscular Ring",
  537. back={ name="Camulus's Mantle", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','AGI+10','Weapon skill damage +10%','Mag. Evasion+15',}},
  538. }
  539.  
  540. sets.midcast.CorsairShot['Dark Shot'] = sets.midcast.CorsairShot['Light Shot']
  541. sets.midcast.CorsairShot.Enhance = {feet="Chass. Bottes +3"}
  542.  
  543. -- Ranged gear
  544. sets.midcast.RA = {
  545. ammo=gear.RAbullet,
  546. head="Ikenga's Hat",
  547. body="Malignance Tabard",
  548. hands="Malignance Gloves",
  549. legs="Ikenga's Trousers",
  550. feet="Meg. Jam. +2",
  551. neck="Iskur Gorget",
  552. waist="Yemaya Belt",
  553. left_ear="Telos Earring",
  554. right_ear="Digni. Earring",
  555. left_ring="Crepuscular Ring",
  556. right_ring="Ilabrat Ring",
  557. back={ name="Camulus's Mantle", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','Rng.Acc.+10','"Store TP"+10','Phys. dmg. taken-10%',}},}
  558.  
  559.  
  560. sets.midcast.RA.Acc = set_combine(sets.midcast.RA, {
  561. ammo=gear.RAccbullet,
  562. body="Laksa. Frac +3",
  563. legs="Malignance Tights",
  564. neck={ name="Comm. Charm +2", augments={'Path: A',}},
  565. right_ear="Beyla Earring",
  566. right_ring="Cacoethic Ring +1"})
  567.  
  568. sets.midcast.RA.Critical = set_combine(sets.midcast.RA, {
  569. head="Meghanada Visor +2",
  570. body="Meg. Cuirie +2",
  571. hands="Chasseur's Gants +3",
  572. legs="Darraigner's Brais",
  573. feet="Osh. Leggings",
  574. neck="Iskur Gorget",
  575. waist="Gerdr Belt",
  576. left_ear="Odr Earring",
  577. right_ear="Telos Earring",
  578. left_ring="Mummu Ring",
  579. right_ring="Begrudging Ring",
  580. back={ name="Camulus's Mantle", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','Rng.Acc.+10','Crit.hit rate+10',}},
  581. })
  582.  
  583.  
  584. sets.TripleShot = {body="Chasseur's Frac +3",hands="Oshosi Gloves",head="Oshosi mask",legs="Oshosi Trousers", feet="Oshosi Leggings"}
  585.  
  586. sets.TripleShotCritical = {
  587. head="Meghanada Visor +2",
  588. waist="Gerdr Belt",
  589. }
  590.  
  591. sets.midcast.RA.SubtleBlow = set_combine(sets.midcast.RA,
  592. {head="Volte Tiara",
  593. hands="Volte Mittens",
  594. legs="Volte Tights",
  595. left_ear="Beyla Earring",
  596. })
  597. ------------------------------------------------------------------------------------------------
  598. ----------------------------------------- Idle Sets --------------------------------------------
  599. ------------------------------------------------------------------------------------------------
  600.  
  601. sets.resting = {}
  602.  
  603. sets.idle = {head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  604. body="Malignance Tabard",
  605. hands={ name="Herculean Gloves", augments={'Accuracy+11','"Triple Atk."+4','AGI+8','Attack+8',}},
  606. legs="Malignance Tights",
  607. feet="Nyame Sollerets",
  608. neck="Lissome Necklace",
  609. waist="Reiki Yotai",
  610. left_ear="Suppanomimi",
  611. right_ear="Odnowa Earring +1",
  612. left_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  613. right_ring="Epona's Ring",
  614. back={ name="Camulus's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  615. }
  616.  
  617. sets.idle.DT = sets.idle
  618.  
  619. -- sets.idle.Refresh = set_combine{}
  620.  
  621. sets.idle.Town = set_combine(sets.idle,{waist="Skrymir Cord +1", right_ear="Balder Earring +1"})
  622.  
  623.  
  624. ------------------------------------------------------------------------------------------------
  625. ---------------------------------------- Defense Sets ------------------------------------------
  626. ------------------------------------------------------------------------------------------------
  627.  
  628. sets.defense.PDT = sets.idle.DT
  629. sets.defense.MDT = sets.idle.DT
  630.  
  631. sets.Kiting = {legs="Carmine Cuisses +1"}
  632.  
  633.  
  634. ------------------------------------------------------------------------------------------------
  635. ---------------------------------------- Engaged Sets ------------------------------------------
  636. ------------------------------------------------------------------------------------------------
  637.  
  638. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  639. -- sets if more refined versions aren't defined.
  640. -- If you create a set with both offense and defense modes, the offense mode should be first.
  641. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  642.  
  643. sets.engaged = {
  644. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  645. body={ name="Adhemar Jacket +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  646. hands={ name="Herculean Gloves", augments={'Accuracy+11','"Triple Atk."+4','AGI+8','Attack+8',}},
  647. legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  648. feet={ name="Lanun Bottes +3", augments={'Enhances "Wild Card" effect',}},
  649. neck="Lissome Necklace",
  650. waist="Windbuffet Belt +1",
  651. left_ear="Suppanomimi",
  652. right_ear="Dedition Earring",
  653. left_ring="Hetairoi Ring",
  654. right_ring="Epona's Ring",
  655. back={ name="Camulus's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  656. }
  657.  
  658. sets.engaged.LowAcc = set_combine(sets.engaged, {legs="Malignance Tights",
  659. right_ear="Telos Earring",
  660. left_ring="Chirich Ring",})
  661.  
  662. sets.engaged.MidAcc = set_combine(sets.engaged.LowAcc, {
  663. waist="Kentarch Belt +1",
  664. })
  665.  
  666. sets.engaged.HighAcc = set_combine(sets.engaged.MidAcc, {
  667. head="Blistering Sallet +1",
  668. left_ring="Chirich Ring +1",
  669. right_ring="Chirich Ring +1",
  670. legs="Meg. Chausses +2",})
  671.  
  672. sets.engaged.STP = set_combine(sets.engaged, {
  673. feet="Carmine Greaves +1",
  674. ring1={name="Chirich Ring +1", bag="wardrobe3"},
  675. ring2={name="Chirich Ring +1", bag="wardrobe4"},
  676. })
  677.  
  678. sets.engaged.EngagedShooting={head="Malignance Chapeau",
  679. body="Malignance Tabard",
  680. hands="Malignance Gloves",
  681. legs="Malignance Tights",
  682. feet="Malignance Boots",
  683. neck="Loricate Torque +1",
  684. waist="Windbuffet Belt +1",
  685. left_ear="Suppanomimi",
  686. right_ear="Sanare Earring",
  687. left_ring="Vocane Ring +1",
  688. right_ring="Defending Ring",
  689. back="Moonlight Cape",
  690. }
  691.  
  692.  
  693. -- * DNC Subjob DW Trait: +15%
  694. -- * NIN Subjob DW Trait: +25%
  695.  
  696. -- No Magic Haste (74% DW to cap)
  697. sets.engaged.DW = {
  698. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  699. body={ name="Adhemar Jacket +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  700. hands={ name="Herculean Gloves", augments={'Accuracy+11','"Triple Atk."+4','AGI+8','Attack+8',}},
  701. legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  702. feet={ name="Lanun Bottes +3", augments={'Enhances "Wild Card" effect',}},
  703. neck="Lissome Necklace",
  704. waist="Windbuffet Belt +1",
  705. left_ear="Suppanomimi",
  706. right_ear="Dedition Earring",
  707. left_ring="Hetairoi Ring",
  708. right_ring="Epona's Ring",
  709. back={ name="Camulus's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  710. } -- 48%
  711.  
  712. sets.engaged.DW.LowAcc = set_combine(sets.engaged.DW, {
  713. neck="Lissome Necklace",
  714. legs="Malignance Tights",
  715. right_ear="Telos Earring",
  716. left_ring="Chirich Ring",
  717. })
  718.  
  719. sets.engaged.DW.MidAcc = set_combine(sets.engaged.DW.LowAcc, {
  720. waist="Kentarch Belt +1",
  721. right_ear="Telos Earring"
  722. })
  723.  
  724. sets.engaged.DW.HighAcc = set_combine(sets.engaged.DW.MidAcc, {
  725. head="Blistering Sallet +1",
  726. left_ring="Chirich Ring +1",
  727. right_ring="Chirich Ring +1",
  728. })
  729.  
  730. sets.engaged.DW.STP = set_combine(sets.engaged.DW, {
  731. feet="Carmine Greaves +1",
  732. ring1={name="Chirich Ring +1", bag="wardrobe3"},
  733. ring2={name="Chirich Ring +1", bag="wardrobe4"},
  734. })
  735.  
  736. sets.engaged.DW.EngagedShooting={head="Malignance Chapeau",
  737. body="Malignance Tabard",
  738. hands="Malignance Gloves",
  739. legs="Malignance Tights",
  740. feet="Malignance Boots",
  741. --neck="Loricate Torque +1",
  742. neck={ name="Comm. Charm +2", augments={'Path: A',}},
  743. waist="Windbuffet Belt +1",
  744. left_ear="Suppanomimi",
  745. right_ear="Sanare Earring",
  746. left_ring="Vocane Ring +1",
  747. right_ring="Defending Ring",
  748. back="Moonlight Cape",
  749. }
  750.  
  751. -- 15% Magic Haste (67% DW to cap)
  752. sets.engaged.DW.LowHaste = {
  753. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  754. body={ name="Adhemar Jacket +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  755. hands={ name="Herculean Gloves", augments={'Accuracy+11','"Triple Atk."+4','AGI+8','Attack+8',}},
  756. legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  757. feet={ name="Lanun Bottes +3", augments={'Enhances "Wild Card" effect',}},
  758. neck="Lissome Necklace",
  759. waist="Windbuffet Belt +1",
  760. left_ear="Suppanomimi",
  761. right_ear="Dedition Earring",
  762. left_ring="Hetairoi Ring",
  763. right_ring="Epona's Ring",
  764. back={ name="Camulus's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  765. }
  766.  
  767. sets.engaged.DW.LowAcc.LowHaste = set_combine(sets.engaged.DW.LowHaste, {
  768. legs="Malignance Tights",
  769. neck="Lissome Necklace",
  770. right_ear="Telos Earring",
  771. left_ring="Chirich Ring",
  772. })
  773.  
  774. sets.engaged.DW.MidAcc.LowHaste = set_combine(sets.engaged.DW.LowAcc.LowHaste, {
  775. right_ear="Telos Earring",
  776. waist="Kentarch Belt +1",
  777. })
  778.  
  779. sets.engaged.DW.HighAcc.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, {
  780. head="Blistering Sallet +1",
  781. left_ring="Chirich Ring +1",
  782. right_ring="Chirich Ring +1",
  783. })
  784.  
  785. sets.engaged.DW.STP.LowHaste = set_combine(sets.engaged.DW.LowHaste, {
  786. feet="Carmine Greaves +1",
  787. ring1={name="Chirich Ring +1", bag="wardrobe3"},
  788. ring2={name="Chirich Ring +1", bag="wardrobe4"},
  789. })
  790.  
  791. sets.engaged.DW.EngagedShooting.LowHaste={head="Malignance Chapeau",
  792. body="Malignance Tabard",
  793. hands="Malignance Gloves",
  794. legs="Malignance Tights",
  795. feet="Malignance Boots",
  796. --neck="Loricate Torque +1",
  797. neck={ name="Comm. Charm +2", augments={'Path: A',}},
  798. waist="Windbuffet Belt +1",
  799. left_ear="Suppanomimi",
  800. right_ear="Sanare Earring",
  801. left_ring="Vocane Ring +1",
  802. right_ring="Defending Ring",
  803. back="Moonlight Cape",
  804. }
  805.  
  806. -- 30% Magic Haste (56% DW to cap)
  807. sets.engaged.DW.MidHaste = {
  808. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  809. body={ name="Adhemar Jacket +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  810. hands={ name="Herculean Gloves", augments={'Accuracy+11','"Triple Atk."+4','AGI+8','Attack+8',}},
  811. legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  812. feet={ name="Lanun Bottes +3", augments={'Enhances "Wild Card" effect',}},
  813. neck="Lissome Necklace",
  814. waist="Windbuffet Belt +1",
  815. left_ear="Suppanomimi",
  816. right_ear="Dedition Earring",
  817. left_ring="Hetairoi Ring",
  818. right_ring="Epona's Ring",
  819. back={ name="Camulus's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  820. } -- 31%
  821.  
  822. sets.engaged.DW.LowAcc.MidHaste = set_combine(sets.engaged.DW.MidHaste, {
  823. legs="Malignance Tights",
  824. neck="Lissome Necklace",
  825. right_ear="Telos Earring",
  826. left_ring="Chirich Ring",
  827. })
  828.  
  829. sets.engaged.DW.MidAcc.MidHaste = set_combine(sets.engaged.DW.LowAcc.MidHaste, {
  830. right_ear="Telos Earring",
  831. waist="Kentarch Belt +1",
  832. })
  833.  
  834. sets.engaged.DW.HighAcc.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, {
  835. head="Blistering Sallet +1",
  836. left_ring="Chirich Ring +1",
  837. right_ring="Chirich Ring +1",
  838. })
  839.  
  840. sets.engaged.DW.STP.MidHaste = set_combine(sets.engaged.DW.MidHaste, {
  841. feet="Carmine Greaves +1",
  842. ring1={name="Chirich Ring +1", bag="wardrobe3"},
  843. ring2={name="Chirich Ring +1", bag="wardrobe4"},
  844. })
  845.  
  846. sets.engaged.DW.EngagedShooting.MidHaste={head="Malignance Chapeau",
  847. body="Malignance Tabard",
  848. hands="Malignance Gloves",
  849. legs="Malignance Tights",
  850. feet="Malignance Boots",
  851. neck="Loricate Torque +1",
  852. waist="Windbuffet Belt +1",
  853. left_ear="Suppanomimi",
  854. right_ear="Sanare Earring",
  855. left_ring="Vocane Ring +1",
  856. right_ring="Defending Ring",
  857. back="Moonlight Cape",
  858. }
  859.  
  860. -- 35% Magic Haste (51% DW to cap)
  861. sets.engaged.DW.HighHaste = {
  862. ammo=gear.RAbullet,
  863. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  864. body={ name="Adhemar Jacket +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  865. hands={ name="Herculean Gloves", augments={'Accuracy+11','"Triple Atk."+4','AGI+8','Attack+8',}},
  866. legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  867. feet={ name="Lanun Bottes +3", augments={'Enhances "Wild Card" effect',}},
  868. neck="Lissome Necklace",
  869. waist="Windbuffet Belt +1",
  870. left_ear="Suppanomimi",
  871. right_ear="Dedition Earring",
  872. left_ring="Hetairoi Ring",
  873. right_ring="Epona's Ring",
  874. back={ name="Camulus's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  875. }
  876.  
  877. sets.engaged.DW.LowAcc.HighHaste = set_combine(sets.engaged.DW.HighHaste, {
  878. legs="Malignance Tights",
  879. neck="Lissome Necklace",
  880. right_ear="Telos Earring",
  881. left_ring="Chirich Ring",
  882. })
  883.  
  884. sets.engaged.DW.MidAcc.HighHaste = set_combine(sets.engaged.DW.LowAcc.HighHaste, {
  885. right_ear="Telos Earring",
  886. waist="Kentarch Belt +1",
  887. })
  888.  
  889. sets.engaged.DW.HighAcc.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, {
  890. head="Blistering Sallet +1",
  891. left_ring="Chirich Ring +1",
  892. right_ring="Chirich Ring +1",
  893. })
  894.  
  895. sets.engaged.DW.STP.HighHaste = set_combine(sets.engaged.DW.HighHaste, {
  896. feet="Carmine Greaves +1",
  897. ring1={name="Chirich Ring +1", bag="wardrobe3"},
  898. ring2={name="Chirich Ring +1", bag="wardrobe4"},
  899. })
  900.  
  901. sets.engaged.DW.EngagedShooting.HighHaste={head="Malignance Chapeau",
  902. body="Malignance Tabard",
  903. hands="Malignance Gloves",
  904. legs="Malignance Tights",
  905. feet="Malignance Boots",
  906. neck="Loricate Torque +1",
  907. waist="Windbuffet Belt +1",
  908. left_ear="Suppanomimi",
  909. right_ear="Sanare Earring",
  910. left_ring="Vocane Ring +1",
  911. right_ring="Defending Ring",
  912. back="Moonlight Cape",
  913. }
  914.  
  915. -- 45% Magic Haste (36% DW to cap)
  916. sets.engaged.DW.MaxHaste = {
  917. ammo=gear.RAbullet,
  918. head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  919. body={ name="Adhemar Jacket +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  920. hands={ name="Herculean Gloves", augments={'Accuracy+11','"Triple Atk."+4','AGI+8','Attack+8',}},
  921. legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  922. feet={ name="Lanun Bottes +3", augments={'Enhances "Wild Card" effect',}},
  923. neck="Lissome Necklace",
  924. waist="Windbuffet Belt +1",
  925. left_ear="Suppanomimi",
  926. right_ear="Dedition Earring",
  927. left_ring="Hetairoi Ring",
  928. right_ring="Epona's Ring",
  929. back={ name="Camulus's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}} -- 11%
  930.  
  931. sets.engaged.DW.LowAcc.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, {
  932. legs="Malignance Tights",
  933. neck="Lissome Necklace",
  934. right_ear="Telos Earring",
  935. left_ring="Chirich Ring",
  936. })
  937.  
  938. sets.engaged.DW.MidAcc.MaxHaste = set_combine(sets.engaged.DW.LowAcc.MaxHaste, {
  939. right_ear="Telos Earring",
  940. waist="Kentarch Belt +1",
  941. })
  942.  
  943. sets.engaged.DW.HighAcc.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, {
  944. head="Blistering Sallet +1",
  945. left_ring="Chirich Ring +1",
  946. right_ring="Chirich Ring +1",
  947. })
  948.  
  949. sets.engaged.DW.STP.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, {
  950. feet="Carmine Greaves +1",
  951. ring1={name="Chirich Ring +1", bag="wardrobe3"},
  952. ring2={name="Chirich Ring +1", bag="wardrobe4"},
  953. })
  954.  
  955. sets.engaged.DW.EngagedShooting.MaxHaste={head="Malignance Chapeau",
  956. body="Malignance Tabard",
  957. hands="Malignance Gloves",
  958. legs="Malignance Tights",
  959. feet="Malignance Boots",
  960. neck="Loricate Torque +1",
  961. waist="Windbuffet Belt +1",
  962. left_ear="Suppanomimi",
  963. right_ear="Sanare Earring",
  964. left_ring="Vocane Ring +1",
  965. right_ring="Defending Ring",
  966. back="Moonlight Cape",
  967. }
  968.  
  969. sets.engaged.DW.MaxHastePlus = set_combine(sets.engaged.DW.MaxHaste, {back="Moonlight Cape"})
  970. sets.engaged.DW.LowAcc.MaxHastePlus = set_combine(sets.engaged.DW.LowAcc.MaxHaste, {back="Moonlight Cape"})
  971. sets.engaged.DW.MidAcc.MaxHastePlus = set_combine(sets.engaged.DW.MidAcc.MaxHaste, {back="Moonlight Cape"})
  972. sets.engaged.DW.HighAcc.MaxHastePlus = set_combine(sets.engaged.DW.HighAcc.MaxHaste, {back="Moonlight Cape"})
  973. sets.engaged.DW.STP.MaxHastePlus = set_combine(sets.engaged.DW.STP.MaxHaste, {back="Moonlight Cape"})
  974.  
  975.  
  976. ------------------------------------------------------------------------------------------------
  977. ---------------------------------------- Hybrid Sets -------------------------------------------
  978. ------------------------------------------------------------------------------------------------
  979.  
  980. sets.engaged.Hybrid = {head={ name="Adhemar Bonnet +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  981. body="Malignance Tabard",
  982. hands={ name="Herculean Gloves", augments={'Accuracy+11','"Triple Atk."+4','AGI+8','Attack+8',}},
  983. legs="Malignance Tights",
  984. feet="Nyame Sollerets",
  985. neck="Lissome Necklace",
  986. waist="Reiki Yotai",
  987. left_ear="Suppanomimi",
  988. right_ear="Odnowa Earring +1",
  989. left_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  990. right_ring="Epona's Ring",
  991. back={ name="Camulus's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}}
  992.  
  993. sets.engaged.MCrit = {main="Naegling",
  994. head={ name="Nyame Helm", augments={'Path: B',}},
  995. body="Malignance Tabard",
  996. hands={ name="Adhemar Wrist. +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  997. legs="Malignance Tights",
  998. feet="Malignance Boots",
  999. neck="Lissome Necklace",
  1000. waist="Reiki Yotai",
  1001. left_ear="Suppanomimi",
  1002. right_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
  1003. left_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  1004. right_ring="Chirich Ring +1",
  1005. back={ name="Camulus's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  1006. }
  1007.  
  1008. sets.engaged.Subtle = {main={ name="Rostam", augments={'Path: A',}},
  1009. --main="Naegling",
  1010. head="Malignance Chapeau",
  1011. body="Malignance Tabard",
  1012. hands={ name="Adhemar Wrist. +1", augments={'DEX+12','AGI+12','Accuracy+20',}},
  1013. legs="Malignance Tights",
  1014. feet="Malignance Boots",
  1015. neck="Lissome Necklace",
  1016. waist="Reiki Yotai",
  1017. left_ear="Suppanomimi",
  1018. right_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
  1019. left_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  1020. right_ring="Chirich Ring +1",
  1021. back={ name="Camulus's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  1022. }
  1023.  
  1024. sets.engaged.DT = set_combine(sets.engaged, sets.engaged.Hybrid)
  1025. sets.engaged.LowAcc.DT = set_combine(sets.engaged.LowAcc, sets.engaged.Hybrid)
  1026. sets.engaged.MidAcc.DT = set_combine(sets.engaged.MidAcc, sets.engaged.Hybrid)
  1027. sets.engaged.HighAcc.DT = set_combine(sets.engaged.HighAcc, sets.engaged.Hybrid)
  1028. sets.engaged.STP.DT = set_combine(sets.engaged.STP, sets.engaged.Hybrid)
  1029.  
  1030. sets.engaged.SubtleBlow = set_combine(sets.engaged, sets.engaged.Subtle)
  1031. sets.engaged.LowAcc.SubtleBlow = set_combine(sets.engaged.LowAcc, sets.engaged.Subtle)
  1032. sets.engaged.MidAcc.SubtleBlow = set_combine(sets.engaged.MidAcc, sets.engaged.Subtle)
  1033. sets.engaged.HighAcc.SubtleBlow = set_combine(sets.engaged.HighAcc, sets.engaged.Subtle)
  1034. sets.engaged.STP.SubtleBlow = set_combine(sets.engaged.STP, sets.engaged.Subtle)
  1035.  
  1036. sets.engaged.MeleeCrit = set_combine(sets.engaged, sets.engaged.MCrit)
  1037. sets.engaged.LowAcc.MeleeCrit = set_combine(sets.engaged.LowAcc, sets.engaged.MCrit)
  1038. sets.engaged.MidAcc.MeleeCrit = set_combine(sets.engaged.MidAcc, sets.engaged.MCrit)
  1039. sets.engaged.HighAcc.MeleeCrit = set_combine(sets.engaged.HighAcc, sets.engaged.MCrit)
  1040. sets.engaged.STP.MeleeCrit = set_combine(sets.engaged.STP, sets.engaged.MCrit)
  1041.  
  1042. sets.engaged.DW.DT = set_combine(sets.engaged.DW, sets.engaged.Hybrid)
  1043. sets.engaged.DW.LowAcc.DT = set_combine(sets.engaged.DW.LowAcc, sets.engaged.Hybrid)
  1044. sets.engaged.DW.MidAcc.DT = set_combine(sets.engaged.DW.MidAcc, sets.engaged.Hybrid)
  1045. sets.engaged.DW.HighAcc.DT = set_combine(sets.engaged.DW.HighAcc, sets.engaged.Hybrid)
  1046. sets.engaged.DW.STP.DT = set_combine(sets.engaged.DW.STP, sets.engaged.Hybrid)
  1047.  
  1048. sets.engaged.DW.SubtleBlow = set_combine(sets.engaged.DW, sets.engaged.Subtle)
  1049. sets.engaged.DW.LowAcc.SubtleBlow = set_combine(sets.engaged.DW.LowAcc, sets.engaged.Subtle)
  1050. sets.engaged.DW.MidAcc.SubtleBlow = set_combine(sets.engaged.DW.MidAcc, sets.engaged.Subtle)
  1051. sets.engaged.DW.HighAcc.SubtleBlow = set_combine(sets.engaged.DW.HighAcc, sets.engaged.Subtle)
  1052. sets.engaged.DW.STP.SubtleBlow = set_combine(sets.engaged.DW.STP, sets.engaged.Subtle)
  1053.  
  1054. sets.engaged.DW.MeleeCrit = set_combine(sets.engaged.DW, sets.engaged.MCrit)
  1055. sets.engaged.DW.LowAcc.MeleeCrit = set_combine(sets.engaged.DW.LowAcc, sets.engaged.MCrit)
  1056. sets.engaged.DW.MidAcc.MeleeCrit = set_combine(sets.engaged.DW.MidAcc, sets.engaged.MCrit)
  1057. sets.engaged.DW.HighAcc.MeleeCrit = set_combine(sets.engaged.DW.HighAcc, sets.engaged.MCrit)
  1058. sets.engaged.DW.STP.MeleeCrit = set_combine(sets.engaged.DW.STP, sets.engaged.MCrit)
  1059.  
  1060. sets.engaged.DW.DT.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.Hybrid)
  1061. sets.engaged.DW.LowAcc.DT.LowHaste = set_combine(sets.engaged.DW.LowAcc.LowHaste, sets.engaged.Hybrid)
  1062. sets.engaged.DW.MidAcc.DT.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.Hybrid)
  1063. sets.engaged.DW.HighAcc.DT.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.Hybrid)
  1064. sets.engaged.DW.STP.DT.LowHaste = set_combine(sets.engaged.DW.STP.LowHaste, sets.engaged.Hybrid)
  1065.  
  1066. sets.engaged.DW.SubtleBlow.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.Subtle)
  1067. sets.engaged.DW.LowAcc.SubtleBlow.LowHaste = set_combine(sets.engaged.DW.LowAcc.LowHaste, sets.engaged.Subtle)
  1068. sets.engaged.DW.MidAcc.SubtleBlow.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.Subtle)
  1069. sets.engaged.DW.HighAcc.SubtleBlow.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.Subtle)
  1070. sets.engaged.DW.STP.SubtleBlow.LowHaste = set_combine(sets.engaged.DW.STP.LowHaste, sets.engaged.Subtle)
  1071.  
  1072. sets.engaged.DW.MeleeCrit.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.MCrit)
  1073. sets.engaged.DW.LowAcc.MeleeCrit.LowHaste = set_combine(sets.engaged.DW.LowAcc.LowHaste, sets.engaged.MCrit)
  1074. sets.engaged.DW.MidAcc.MeleeCrit.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.MCrit)
  1075. sets.engaged.DW.HighAcc.MeleeCrit.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.MCrit)
  1076. sets.engaged.DW.STP.MeleeCrit.LowHaste = set_combine(sets.engaged.DW.STP.LowHaste, sets.engaged.MCrit)
  1077.  
  1078. sets.engaged.DW.DT.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.Hybrid)
  1079. sets.engaged.DW.LowAcc.DT.MidHaste = set_combine(sets.engaged.DW.LowAcc.MidHaste, sets.engaged.Hybrid)
  1080. sets.engaged.DW.MidAcc.DT.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.Hybrid)
  1081. sets.engaged.DW.HighAcc.DT.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.Hybrid)
  1082. sets.engaged.DW.STP.DT.MidHaste = set_combine(sets.engaged.DW.STP.MidHaste, sets.engaged.Hybrid)
  1083.  
  1084. sets.engaged.DW.SubtleBlow.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.Subtle)
  1085. sets.engaged.DW.LowAcc.SubtleBlow.MidHaste = set_combine(sets.engaged.DW.LowAcc.MidHaste, sets.engaged.Subtle)
  1086. sets.engaged.DW.MidAcc.SubtleBlow.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.Subtle)
  1087. sets.engaged.DW.HighAcc.SubtleBlow.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.Subtle)
  1088. sets.engaged.DW.STP.SubtleBlow.MidHaste = set_combine(sets.engaged.DW.STP.MidHaste, sets.engaged.Subtle)
  1089.  
  1090. sets.engaged.DW.MeleeCrit.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.MCrit)
  1091. sets.engaged.DW.LowAcc.MeleeCrit.MidHaste = set_combine(sets.engaged.DW.LowAcc.MidHaste, sets.engaged.MCrit)
  1092. sets.engaged.DW.MidAcc.MeleeCrit.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.MCrit)
  1093. sets.engaged.DW.HighAcc.MeleeCrit.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.MCrit)
  1094. sets.engaged.DW.STP.MeleeCrit.MidHaste = set_combine(sets.engaged.DW.STP.MidHaste, sets.engaged.MCrit)
  1095.  
  1096. sets.engaged.DW.DT.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.Hybrid)
  1097. sets.engaged.DW.LowAcc.DT.HighHaste = set_combine(sets.engaged.DW.LowAcc.HighHaste, sets.engaged.Hybrid)
  1098. sets.engaged.DW.MidAcc.DT.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.Hybrid)
  1099. sets.engaged.DW.HighAcc.DT.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.Hybrid)
  1100. sets.engaged.DW.STP.DT.HighHaste = set_combine(sets.engaged.DW.HighHaste.STP, sets.engaged.Hybrid)
  1101.  
  1102. sets.engaged.DW.SubtleBlow.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.Subtle)
  1103. sets.engaged.DW.LowAcc.SubtleBlow.HighHaste = set_combine(sets.engaged.DW.LowAcc.HighHaste, sets.engaged.Subtle)
  1104. sets.engaged.DW.MidAcc.SubtleBlow.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.Subtle)
  1105. sets.engaged.DW.HighAcc.SubtleBlow.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.Subtle)
  1106. sets.engaged.DW.STP.SubtleBlow.HighHaste = set_combine(sets.engaged.DW.HighHaste.STP, sets.engaged.Subtle)
  1107.  
  1108. sets.engaged.DW.MeleeCrit.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.MCrit)
  1109. sets.engaged.DW.LowAcc.MeleeCrit.HighHaste = set_combine(sets.engaged.DW.LowAcc.HighHaste, sets.engaged.MCrit)
  1110. sets.engaged.DW.MidAcc.MeleeCrit.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.MCrit)
  1111. sets.engaged.DW.HighAcc.MeleeCrit.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.MCrit)
  1112. sets.engaged.DW.STP.MeleeCrit.HighHaste = set_combine(sets.engaged.DW.HighHaste.STP, sets.engaged.MCrit)
  1113.  
  1114. sets.engaged.DW.DT.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.Hybrid)
  1115. sets.engaged.DW.LowAcc.DT.MaxHaste = set_combine(sets.engaged.DW.LowAcc.MaxHaste, sets.engaged.Hybrid)
  1116. sets.engaged.DW.MidAcc.DT.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.Hybrid)
  1117. sets.engaged.DW.HighAcc.DT.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.Hybrid)
  1118. sets.engaged.DW.STP.DT.MaxHaste = set_combine(sets.engaged.DW.STP.MaxHaste, sets.engaged.Hybrid)
  1119.  
  1120. sets.engaged.DW.SubtleBlow.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.Subtle)
  1121. sets.engaged.DW.LowAcc.SubtleBlow.MaxHaste = set_combine(sets.engaged.DW.LowAcc.MaxHaste, sets.engaged.Subtle)
  1122. sets.engaged.DW.MidAcc.SubtleBlow.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.Subtle)
  1123. sets.engaged.DW.HighAcc.SubtleBlow.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.Subtle)
  1124. sets.engaged.DW.STP.SubtleBlow.MaxHaste = set_combine(sets.engaged.DW.STP.MaxHaste, sets.engaged.Subtle)
  1125.  
  1126. sets.engaged.DW.MeleeCrit.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.MCrit)
  1127. sets.engaged.DW.LowAcc.MeleeCrit.MaxHaste = set_combine(sets.engaged.DW.LowAcc.MaxHaste, sets.engaged.MCrit)
  1128. sets.engaged.DW.MidAcc.MeleeCrit.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.MCrit)
  1129. sets.engaged.DW.HighAcc.MeleeCrit.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.MCrit)
  1130. sets.engaged.DW.STP.MeleeCrit.MaxHaste = set_combine(sets.engaged.DW.STP.MaxHaste, sets.engaged.MCrit)
  1131.  
  1132. sets.engaged.DW.DT.MaxHastePlus = set_combine(sets.engaged.DW.MaxHastePlus, sets.engaged.Hybrid)
  1133. sets.engaged.DW.LowAcc.DT.MaxHastePlus = set_combine(sets.engaged.DW.LowAcc.MaxHastePlus, sets.engaged.Hybrid)
  1134. sets.engaged.DW.MidAcc.DT.MaxHastePlus = set_combine(sets.engaged.DW.MidAcc.MaxHastePlus, sets.engaged.Hybrid)
  1135. sets.engaged.DW.HighAcc.DT.MaxHastePlus = set_combine(sets.engaged.DW.HighAcc.MaxHastePlus, sets.engaged.Hybrid)
  1136. sets.engaged.DW.STP.DT.MaxHastePlus = set_combine(sets.engaged.DW.STP.MaxHastePlus, sets.engaged.Hybrid)
  1137.  
  1138. sets.engaged.DW.SubtleBlow.MaxHastePlus = set_combine(sets.engaged.DW.MaxHastePlus, sets.engaged.Subtle)
  1139. sets.engaged.DW.LowAcc.SubtleBlow.MaxHastePlus = set_combine(sets.engaged.DW.LowAcc.MaxHastePlus, sets.engaged.Subtle)
  1140. sets.engaged.DW.MidAcc.SubtleBlow.MaxHastePlus = set_combine(sets.engaged.DW.MidAcc.MaxHastePlus, sets.engaged.Subtle)
  1141. sets.engaged.DW.HighAcc.SubtleBlow.MaxHastePlus = set_combine(sets.engaged.DW.HighAcc.MaxHastePlus, sets.engaged.Subtle)
  1142. sets.engaged.DW.STP.SubtleBlow.MaxHastePlus = set_combine(sets.engaged.DW.STP.MaxHastePlus, sets.engaged.Subtle)
  1143.  
  1144. sets.engaged.DW.MeleeCrit.MaxHastePlus = set_combine(sets.engaged.DW.MaxHastePlus, sets.engaged.MCrit)
  1145. sets.engaged.DW.LowAcc.MeleeCrit.MaxHastePlus = set_combine(sets.engaged.DW.LowAcc.MaxHastePlus, sets.engaged.MCrit)
  1146. sets.engaged.DW.MidAcc.MeleeCrit.MaxHastePlus = set_combine(sets.engaged.DW.MidAcc.MaxHastePlus, sets.engaged.MCrit)
  1147. sets.engaged.DW.HighAcc.MeleeCrit.MaxHastePlus = set_combine(sets.engaged.DW.HighAcc.MaxHastePlus, sets.engaged.MCrit)
  1148. sets.engaged.DW.STP.MeleeCrit.MaxHastePlus = set_combine(sets.engaged.DW.STP.MaxHastePlus, sets.engaged.MCrit)
  1149.  
  1150.  
  1151.  
  1152.  
  1153. ------------------------------------------------------------------------------------------------
  1154. ---------------------------------------- Special Sets ------------------------------------------
  1155. ------------------------------------------------------------------------------------------------
  1156.  
  1157. sets.buff.Doom = {waist="Gishdubar Sash"}
  1158.  
  1159. sets.FullTP = {ear1="Crematio Earring"}
  1160. sets.Obi = {waist="Hachirin-no-Obi"}
  1161. -- sets.CP = {back="Mecisto. Mantle"}
  1162. --sets.Reive = {neck="Ygnas's Resolve +1"}
  1163.  
  1164. sets.TreasureHunter = {head="Volte Cap",
  1165. body="Volte Jupon",
  1166. feet="Volte Boots"}
  1167. end
  1168.  
  1169.  
  1170. -------------------------------------------------------------------------------------------------------------------
  1171. -- Job-specific hooks for standard casting events.
  1172. -------------------------------------------------------------------------------------------------------------------
  1173.  
  1174. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  1175. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  1176. function job_precast(spell, action, spellMap, eventArgs)
  1177. -- Check that proper ammo is available if we're using ranged attacks or similar.
  1178. if spell.action_type == 'Ranged Attack' or spell.type == 'WeaponSkill' or spell.type == 'CorsairShot' then
  1179. do_bullet_checks(spell, spellMap, eventArgs)
  1180. end
  1181. -- Gear
  1182. if spell.english == 'Fold' and buffactive['Bust'] == 2 then
  1183. if sets.precast.FoldDoubleBust then
  1184. equip(sets.precast.FoldDoubleBust)
  1185. eventArgs.handled = true
  1186. end
  1187. end
  1188. if spellMap == 'Utsusemi' then
  1189. if buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)'] then
  1190. cancel_spell()
  1191. add_to_chat(123, '**!! '..spell.english..' Canceled: [3+ IMAGES] !!**')
  1192. eventArgs.handled = true
  1193. return
  1194. elseif buffactive['Copy Image'] or buffactive['Copy Image (2)'] then
  1195. send_command('cancel 66; cancel 444; cancel Copy Image; cancel Copy Image (2)')
  1196. end
  1197. end
  1198. end
  1199.  
  1200. function job_post_precast(spell, action, spellMap, eventArgs)
  1201. if (spell.type == 'CorsairRoll' or spell.english == "Double-Up") then
  1202. if player.status ~= 'Engaged' and state.WeaponLock.value == false then
  1203. equip(sets.precast.CorsairRoll.Duration)
  1204. end
  1205. if state.LuzafRing.value then
  1206. equip(sets.precast.LuzafRing)
  1207. end
  1208. end
  1209. if spell.action_type == 'Ranged Attack' then--else @start
  1210. special_ammo_check()
  1211. if flurry == 2 then
  1212. equip(sets.precast.RA.Flurry2)
  1213. elseif flurry == 1 then
  1214. equip(sets.precast.RA.Flurry1)
  1215. end
  1216. elseif spell.type == 'WeaponSkill' then
  1217. if spell.skill == 'Marksmanship' then
  1218. special_ammo_check()
  1219. end
  1220. -- Replace TP-bonus gear if not needed.
  1221. if spell.english == 'Leaden Salute' or spell.english == 'Aeolian Edge' and player.tp > 2900 then
  1222. equip(sets.FullTP)
  1223. end
  1224. if elemental_ws:contains(spell.name) then
  1225. -- Matching double weather (w/o day conflict).
  1226. if spell.element == world.weather_element and (get_weather_intensity() == 2 and spell.element ~= elements.weak_to[world.day_element]) then
  1227. equip(sets.Obi)
  1228. -- Target distance under 1.7 yalms.
  1229. elseif spell.target.distance < (1.7 + spell.target.model_size) then
  1230. equip({waist="Orpheus's Sash"})
  1231. -- Matching day and weather.
  1232. elseif spell.element == world.day_element and spell.element == world.weather_element then
  1233. equip(sets.Obi)
  1234. -- Target distance under 8 yalms.
  1235. elseif spell.target.distance < (8 + spell.target.model_size) then
  1236. equip({waist="Orpheus's Sash"})
  1237. -- Match day or weather.
  1238. elseif spell.element == world.day_element or spell.element == world.weather_element then
  1239. equip(sets.Obi)
  1240. end
  1241. end
  1242. end
  1243. end
  1244.  
  1245. function job_post_midcast(spell, action, spellMap, eventArgs)
  1246. if spell.type == 'CorsairShot' then
  1247. if (spell.english ~= 'Light Shot' and spell.english ~= 'Dark Shot') then
  1248. -- Matching double weather (w/o day conflict).
  1249. if spell.element == world.weather_element and (get_weather_intensity() == 2 and spell.element ~= elements.weak_to[world.day_element]) then
  1250. equip(sets.Obi)
  1251. -- Target distance under 1.7 yalms.
  1252. elseif spell.target.distance < (1.7 + spell.target.model_size) then
  1253. equip({waist="Orpheus's Sash"})
  1254. -- Matching day and weather.
  1255. elseif spell.element == world.day_element and spell.element == world.weather_element then
  1256. equip(sets.Obi)
  1257. -- Target distance under 8 yalms.
  1258. elseif spell.target.distance < (8 + spell.target.model_size) then
  1259. equip({waist="Orpheus's Sash"})
  1260. -- Match day or weather.
  1261. elseif spell.element == world.day_element or spell.element == world.weather_element then
  1262. equip(sets.Obi)
  1263. end
  1264. if state.QDMode.value == 'Enhance' then
  1265. equip(sets.midcast.CorsairShot.Enhance)
  1266. elseif state.QDMode.value == 'STP' then
  1267. equip(sets.midcast.CorsairShot.STP)
  1268. elseif state.QDMode.value == 'TH' then
  1269. equip(sets.midcast.CorsairShot.TH)
  1270. end
  1271. end
  1272. elseif spell.action_type == 'Ranged Attack' then
  1273. if buffactive['Triple Shot'] then
  1274. equip(sets.TripleShot)
  1275. if buffactive['Aftermath: Lv.3'] and player.equipment.ranged == "Armageddon" then
  1276. equip(sets.TripleShotCritical)
  1277. end
  1278. elseif buffactive['Aftermath: Lv.3'] and player.equipment.ranged == "Armageddon" then
  1279. equip(sets.midcast.RA.Critical)
  1280. end
  1281. end
  1282. end
  1283.  
  1284. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  1285. function job_aftercast(spell, action, spellMap, eventArgs)
  1286. if (spell.type == 'CorsairRoll' or spell.english == "Double-Up") and not spell.interrupted then
  1287. display_roll_info(spell)
  1288. end
  1289. if spell.english == "Light Shot" then
  1290. send_command('@timers c "Light Shot ['..spell.target.name..']" 60 down abilities/00195.png')
  1291. end
  1292. end
  1293.  
  1294. function job_buff_change(buff,gain)
  1295. -- If we gain or lose any flurry buffs, adjust gear.
  1296. if S{'flurry'}:contains(buff:lower()) then
  1297. if not gain then
  1298. flurry = nil
  1299. --add_to_chat(122, "Flurry status cleared.")
  1300. end
  1301. if not midaction() then
  1302. handle_equipping_gear(player.status)
  1303. end
  1304. end
  1305.  
  1306. -- if buffactive['Reive Mark'] then
  1307. -- if gain then
  1308. -- equip(sets.Reive)
  1309. -- disable('neck')
  1310. -- else
  1311. -- enable('neck')
  1312. -- end
  1313. -- end
  1314.  
  1315. if buff == "doom" then
  1316. if gain then
  1317. equip(sets.buff.Doom)
  1318. send_command('@input /p Doomed.')
  1319. disable('ring1','ring2','waist')
  1320. else
  1321. enable('ring1','ring2','waist')
  1322. handle_equipping_gear(player.status)
  1323. end
  1324. end
  1325. end
  1326.  
  1327. -- Handle notifications of general user state change.
  1328. function job_state_change(stateField, newValue, oldValue)
  1329. if state.WeaponLock.value == true then
  1330. disable('ranged')
  1331. else
  1332. enable('ranged')
  1333. end
  1334. end
  1335.  
  1336. -------------------------------------------------------------------------------------------------------------------
  1337. -- User code that supplements standard library decisions.
  1338. -------------------------------------------------------------------------------------------------------------------
  1339.  
  1340. -- Called by the 'update' self-command, for common needs.
  1341. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  1342. function job_handle_equipping_gear(playerStatus, eventArgs)
  1343. check_gear()
  1344. update_combat_form()
  1345. determine_haste_group()
  1346. check_moving()
  1347. end
  1348.  
  1349. function job_update(cmdParams, eventArgs)
  1350. handle_equipping_gear(player.status)
  1351. end
  1352.  
  1353. function update_combat_form()
  1354. if DW == true then
  1355. state.CombatForm:set('DW')
  1356. elseif DW == false then
  1357. state.CombatForm:reset()
  1358. end
  1359. end
  1360.  
  1361. function get_custom_wsmode(spell, action, spellMap)
  1362. local wsmode
  1363. if spell.skill == 'Marksmanship' then
  1364. if state.RangedMode.value == 'Acc' or state.RangedMode.value == 'HighAcc' then
  1365. wsmode = 'Acc'
  1366. end
  1367. else
  1368. if state.OffenseMode.value == 'Acc' or state.OffenseMode.value == 'HighAcc' then
  1369. wsmode = 'Acc'
  1370. end
  1371. end
  1372.  
  1373. return wsmode
  1374. end
  1375.  
  1376. -- Modify the default idle set after it was constructed.
  1377. function customize_idle_set(idleSet)
  1378. if state.Gun.current == 'Death Penalty' then
  1379. equip({ranged="Death Penalty"})
  1380. elseif state.Gun.current == 'Armageddon' then
  1381. equip({ranged="Armageddon"})
  1382. elseif state.Gun.current == 'Fomalhaut' then
  1383. equip({ranged="Fomalhaut"})
  1384. elseif state.Gun.current == 'Anarchy +3' then
  1385. equip({ranged="Anarchy +3"})
  1386. elseif state.Gun.current == 'Compensator' then
  1387. equip({ranged="Compensator"})
  1388. end
  1389.  
  1390.  
  1391. -- if state.CP.current == 'on' then
  1392. -- equip(sets.CP)
  1393. -- disable('back')
  1394. -- else
  1395. -- enable('back')
  1396. -- end
  1397. if state.Auto_Kite.value == true then
  1398. idleSet = set_combine(idleSet, sets.Kiting)
  1399. end
  1400.  
  1401. return idleSet
  1402. end
  1403.  
  1404. -- Handle auto-targetting based on local setup.
  1405. function job_auto_change_target(spell, action, spellMap, eventArgs)
  1406. if spell.type == 'CorsairShot' then
  1407. if state.IgnoreTargetting.value == true then
  1408. state.IgnoreTargetting:reset()
  1409. eventArgs.handled = true
  1410. end
  1411.  
  1412. eventArgs.SelectNPCTargets = state.SelectqdTarget.value
  1413. end
  1414. end
  1415.  
  1416. -- Set eventArgs.handled to true if we don't want the automatic display to be run.
  1417. function display_current_job_state(eventArgs)
  1418. local cf_msg = ''
  1419. if state.CombatForm.has_value then
  1420. cf_msg = ' (' ..state.CombatForm.value.. ')'
  1421. end
  1422.  
  1423. local m_msg = state.OffenseMode.value
  1424. if state.HybridMode.value ~= 'Normal' then
  1425. m_msg = m_msg .. '/' ..state.HybridMode.value
  1426. end
  1427.  
  1428. local ws_msg = state.WeaponskillMode.value
  1429.  
  1430. local qd_msg = '(' ..string.sub(state.QDMode.value,1,1).. ')'
  1431.  
  1432. local e_msg = state.Mainqd.current
  1433. if state.UseAltqd.value == true then
  1434. e_msg = e_msg .. '/'..state.Altqd.current
  1435. end
  1436.  
  1437. local d_msg = 'None'
  1438. if state.DefenseMode.value ~= 'None' then
  1439. d_msg = state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value
  1440. end
  1441.  
  1442. local i_msg = state.IdleMode.value
  1443.  
  1444. local msg = ''
  1445. if state.Kiting.value then
  1446. msg = msg .. ' Kiting: On |'
  1447. end
  1448.  
  1449. add_to_chat(002, '| ' ..string.char(31,210).. 'Melee' ..cf_msg.. ': ' ..string.char(31,001)..m_msg.. string.char(31,002).. ' |'
  1450. ..string.char(31,207).. ' WS: ' ..string.char(31,001)..ws_msg.. string.char(31,002).. ' |'
  1451. ..string.char(31,060).. ' QD' ..qd_msg.. ': ' ..string.char(31,001)..e_msg.. string.char(31,002).. ' |'
  1452. ..string.char(31,004).. ' Defense: ' ..string.char(31,001)..d_msg.. string.char(31,002).. ' |'
  1453. ..string.char(31,008).. ' Idle: ' ..string.char(31,001)..i_msg.. string.char(31,002).. ' |'
  1454. ..string.char(31,002)..msg)
  1455.  
  1456. eventArgs.handled = true
  1457. end
  1458.  
  1459. -------------------------------------------------------------------------------------------------------------------
  1460. -- Utility functions specific to this job.
  1461. -------------------------------------------------------------------------------------------------------------------
  1462.  
  1463. --Read incoming packet to differentiate between Haste/Flurry I and II
  1464. windower.register_event('action',
  1465. function(act)
  1466. --check if you are a target of spell
  1467. local actionTargets = act.targets
  1468. playerId = windower.ffxi.get_player().id
  1469. isTarget = false
  1470. for _, target in ipairs(actionTargets) do
  1471. if playerId == target.id then
  1472. isTarget = true
  1473. end
  1474. end
  1475. if isTarget == true then
  1476. if act.category == 4 then
  1477. local param = act.param
  1478. if param == 845 and flurry ~= 2 then
  1479. add_to_chat(122, 'Flurry Status: Flurry I')
  1480. flurry = 1
  1481. elseif param == 846 then
  1482. add_to_chat(122, 'Flurry Status: Flurry II')
  1483. flurry = 2
  1484. end
  1485. end
  1486. end
  1487. end)
  1488.  
  1489. function determine_haste_group()
  1490. classes.CustomMeleeGroups:clear()
  1491. if DW == true then
  1492. if DW_needed <= 11 then
  1493. classes.CustomMeleeGroups:append('MaxHaste')
  1494. elseif DW_needed > 12 and DW_needed <= 23 then
  1495. classes.CustomMeleeGroups:append('MaxHaste')
  1496. elseif DW_needed > 24 and DW_needed <= 27 then
  1497. classes.CustomMeleeGroups:append('HighHaste')
  1498. elseif DW_needed > 28 and DW_needed <= 32 then
  1499. classes.CustomMeleeGroups:append('MidHaste')
  1500. elseif DW_needed > 33 then
  1501. classes.CustomMeleeGroups:append('')
  1502. end
  1503. end
  1504. end
  1505.  
  1506.  
  1507. function job_self_command(cmdParams, eventArgs)
  1508. if cmdParams[1] == 'qd' then
  1509. if cmdParams[2] == 't' then
  1510. state.IgnoreTargetting:set()
  1511. end
  1512.  
  1513. local doqd = ''
  1514. if state.UseAltqd.value == true then
  1515. doqd = state[state.Currentqd.current..'qd'].current
  1516. state.Currentqd:cycle()
  1517. else
  1518. doqd = state.Mainqd.current
  1519. end
  1520.  
  1521. send_command('@input /ja "'..doqd..'" <t>')
  1522. end
  1523. gearinfo(cmdParams, eventArgs)
  1524. end
  1525.  
  1526. function gearinfo(cmdParams, eventArgs)
  1527. if cmdParams[1] == 'gearinfo' then
  1528. if type(tonumber(cmdParams[2])) == 'number' then
  1529. if tonumber(cmdParams[2]) ~= DW_needed then
  1530. DW_needed = tonumber(cmdParams[2])
  1531. DW = true
  1532. end
  1533. elseif type(cmdParams[2]) == 'string' then
  1534. if cmdParams[2] == 'false' then
  1535. DW_needed = 0
  1536. DW = false
  1537. end
  1538. end
  1539. if type(tonumber(cmdParams[3])) == 'number' then
  1540. if tonumber(cmdParams[3]) ~= Haste then
  1541. Haste = tonumber(cmdParams[3])
  1542. end
  1543. end
  1544. if type(cmdParams[4]) == 'string' then
  1545. if cmdParams[4] == 'true' then
  1546. moving = true
  1547. elseif cmdParams[4] == 'false' then
  1548. moving = false
  1549. end
  1550. end
  1551. if not midaction() then
  1552. job_update()
  1553. end
  1554. end
  1555. end
  1556.  
  1557. function define_roll_values()
  1558. rolls = {
  1559. ["Corsair's Roll"] = {lucky=5, unlucky=9, bonus="Experience Points"},
  1560. ["Ninja Roll"] = {lucky=4, unlucky=8, bonus="Evasion"},
  1561. ["Hunter's Roll"] = {lucky=4, unlucky=8, bonus="Accuracy"},
  1562. ["Chaos Roll"] = {lucky=4, unlucky=8, bonus="Attack"},
  1563. ["Magus's Roll"] = {lucky=2, unlucky=6, bonus="Magic Defense"},
  1564. ["Healer's Roll"] = {lucky=3, unlucky=7, bonus="Cure Potency Received"},
  1565. ["Drachen Roll"] = {lucky=4, unlucky=8, bonus="Pet Magic Accuracy/Attack"},
  1566. ["Choral Roll"] = {lucky=2, unlucky=6, bonus="Spell Interruption Rate"},
  1567. ["Monk's Roll"] = {lucky=3, unlucky=7, bonus="Subtle Blow"},
  1568. ["Beast Roll"] = {lucky=4, unlucky=8, bonus="Pet Attack"},
  1569. ["Samurai Roll"] = {lucky=2, unlucky=6, bonus="Store TP"},
  1570. ["Evoker's Roll"] = {lucky=5, unlucky=9, bonus="Refresh"},
  1571. ["Rogue's Roll"] = {lucky=5, unlucky=9, bonus="Critical Hit Rate"},
  1572. ["Warlock's Roll"] = {lucky=4, unlucky=8, bonus="Magic Accuracy"},
  1573. ["Fighter's Roll"] = {lucky=5, unlucky=9, bonus="Double Attack Rate"},
  1574. ["Puppet Roll"] = {lucky=3, unlucky=7, bonus="Pet Magic Attack/Accuracy"},
  1575. ["Gallant's Roll"] = {lucky=3, unlucky=7, bonus="Defense"},
  1576. ["Wizard's Roll"] = {lucky=5, unlucky=9, bonus="Magic Attack"},
  1577. ["Dancer's Roll"] = {lucky=3, unlucky=7, bonus="Regen"},
  1578. ["Scholar's Roll"] = {lucky=2, unlucky=6, bonus="Conserve MP"},
  1579. ["Naturalist's Roll"] = {lucky=3, unlucky=7, bonus="Enh. Magic Duration"},
  1580. ["Runeist's Roll"] = {lucky=4, unlucky=8, bonus="Magic Evasion"},
  1581. ["Bolter's Roll"] = {lucky=3, unlucky=9, bonus="Movement Speed"},
  1582. ["Caster's Roll"] = {lucky=2, unlucky=7, bonus="Fast Cast"},
  1583. ["Courser's Roll"] = {lucky=3, unlucky=9, bonus="Snapshot"},
  1584. ["Blitzer's Roll"] = {lucky=4, unlucky=9, bonus="Attack Delay"},
  1585. ["Tactician's Roll"] = {lucky=5, unlucky=8, bonus="Regain"},
  1586. ["Allies' Roll"] = {lucky=3, unlucky=10, bonus="Skillchain Damage"},
  1587. ["Miser's Roll"] = {lucky=5, unlucky=7, bonus="Save TP"},
  1588. ["Companion's Roll"] = {lucky=2, unlucky=10, bonus="Pet Regain and Regen"},
  1589. ["Avenger's Roll"] = {lucky=4, unlucky=8, bonus="Counter Rate"},
  1590. }
  1591. end
  1592.  
  1593. function display_roll_info(spell)
  1594. rollinfo = rolls[spell.english]
  1595. local rollsize = (state.LuzafRing.value and string.char(129,157)) or ''
  1596.  
  1597. if rollinfo then
  1598. add_to_chat(001, string.char(129,115).. ' ' ..string.char(31,210)..spell.english..string.char(31,001)..
  1599. ' : '..rollinfo.bonus.. ' ' ..string.char(129,116).. ' ' ..string.char(129,195)..
  1600. ' Lucky: ' ..string.char(31,204).. tostring(rollinfo.lucky)..string.char(31,001).. ' /' ..
  1601. ' Unlucky: ' ..string.char(31,167).. tostring(rollinfo.unlucky)..string.char(31,002)..
  1602. ' ' ..rollsize)
  1603. end
  1604. end
  1605.  
  1606.  
  1607. -- Determine whether we have sufficient ammo for the action being attempted.
  1608. function do_bullet_checks(spell, spellMap, eventArgs)
  1609. local bullet_name
  1610. local bullet_min_count = 1
  1611.  
  1612. if spell.type == 'WeaponSkill' then
  1613. if spell.skill == "Marksmanship" then
  1614. if spell.english == 'Wildfire' or spell.english == 'Leaden Salute' then
  1615. -- magical weaponskills
  1616. bullet_name = gear.MAbullet
  1617. else
  1618. -- physical weaponskills
  1619. bullet_name = gear.WSbullet
  1620. end
  1621. else
  1622. -- Ignore non-ranged weaponskills
  1623. return
  1624. end
  1625. elseif spell.type == 'CorsairShot' then
  1626. bullet_name = gear.QDbullet
  1627. elseif spell.action_type == 'Ranged Attack' then
  1628. bullet_name = gear.RAbullet
  1629. if buffactive['Triple Shot'] then
  1630. bullet_min_count = 3
  1631. end
  1632. end
  1633.  
  1634. local available_bullets = player.inventory[bullet_name] or player.wardrobe[bullet_name]
  1635.  
  1636. -- If no ammo is available, give appropriate warning and end.
  1637. if not available_bullets then
  1638. if spell.type == 'CorsairShot' and player.equipment.ammo ~= 'empty' then
  1639. add_to_chat(104, 'No Quick Draw ammo left. Using what\'s currently equipped ('..player.equipment.ammo..').')
  1640. return
  1641. elseif spell.type == 'WeaponSkill' and player.equipment.ammo == gear.RAbullet then
  1642. add_to_chat(104, 'No weaponskill ammo left. Using what\'s currently equipped (standard ranged bullets: '..player.equipment.ammo..').')
  1643. return
  1644. else
  1645. add_to_chat(104, 'No ammo ('..tostring(bullet_name)..') available for that action.')
  1646. eventArgs.cancel = true
  1647. return
  1648. end
  1649. end
  1650.  
  1651. -- Don't allow shooting or weaponskilling with ammo reserved for quick draw.
  1652. if spell.type ~= 'CorsairShot' and bullet_name == gear.QDbullet and available_bullets.count <= bullet_min_count then
  1653. add_to_chat(104, 'No ammo will be left for Quick Draw. Cancelling.')
  1654. eventArgs.cancel = true
  1655. return
  1656. end
  1657.  
  1658. -- Low ammo warning.
  1659. if spell.type ~= 'CorsairShot' and state.warned.value == false
  1660. and available_bullets.count > 1 and available_bullets.count <= options.ammo_warning_limit then
  1661. local msg = '***** LOW AMMO WARNING: '..bullet_name..' *****'
  1662. --local border = string.repeat("*", #msg)
  1663. local border = ""
  1664. for i = 1, #msg do
  1665. border = border .. "*"
  1666. end
  1667.  
  1668. add_to_chat(104, border)
  1669. add_to_chat(104, msg)
  1670. add_to_chat(104, border)
  1671.  
  1672. state.warned:set()
  1673. elseif available_bullets.count > options.ammo_warning_limit and state.warned then
  1674. state.warned:reset()
  1675. end
  1676. end
  1677.  
  1678. function special_ammo_check()
  1679. -- Stop if Animikii/Hauksbok equipped
  1680. if no_shoot_ammo:contains(player.equipment.ammo) then
  1681. cancel_spell()
  1682. add_to_chat(123, '** Action Canceled: [ '.. player.equipment.ammo .. ' equipped!! ] **')
  1683. return
  1684. end
  1685. end
  1686.  
  1687. -- Check for various actions that we've specified in user code as being used with TH gear.
  1688. -- This will only ever be called if TreasureMode is not 'None'.
  1689. -- Category and Param are as specified in the action event packet.
  1690. function th_action_check(category, param)
  1691. if category == 2 or -- any ranged attack
  1692. --category == 4 or -- any magic action
  1693. (category == 3 and param == 30) or -- Aeolian Edge
  1694. (category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
  1695. (category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
  1696. then return true
  1697. end
  1698. end
  1699.  
  1700. function check_moving()
  1701. if state.DefenseMode.value == 'None' and state.Kiting.value == false then
  1702. if state.Auto_Kite.value == false and moving then
  1703. state.Auto_Kite:set(true)
  1704. elseif state.Auto_Kite.value == true and moving == false then
  1705. state.Auto_Kite:set(false)
  1706. end
  1707. end
  1708. end
  1709.  
  1710. function check_gear()
  1711. if no_swap_gear:contains(player.equipment.left_ring) then
  1712. disable("ring1")
  1713. else
  1714. enable("ring1")
  1715. end
  1716. if no_swap_gear:contains(player.equipment.right_ring) then
  1717. disable("ring2")
  1718. else
  1719. enable("ring2")
  1720. end
  1721. if no_swap_gear:contains(player.equipment.waist) then
  1722. disable("waist")
  1723. else
  1724. enable("waist")
  1725. end
  1726. end
  1727.  
  1728. windower.register_event('zone change',
  1729. function()
  1730. if no_swap_gear:contains(player.equipment.left_ring) then
  1731. enable("ring1")
  1732. equip(sets.idle)
  1733. end
  1734. if no_swap_gear:contains(player.equipment.right_ring) then
  1735. enable("ring2")
  1736. equip(sets.idle)
  1737. end
  1738. if no_swap_gear:contains(player.equipment.waist) then
  1739. enable("waist")
  1740. equip(sets.idle)
  1741. end
  1742. end
  1743. )
  1744.  
  1745. -- Select default macro book on initial load or subjob change.
  1746. function select_default_macro_book()
  1747. if player.sub_job == 'DNC' then
  1748. set_macro_page(1, 12)
  1749. else
  1750. set_macro_page(1, 12)
  1751. end
  1752. end
  1753.  
  1754. function set_lockstyle()
  1755. send_command('wait 2; input /lockstyleset ' .. lockstyleset)
  1756. end
  1757.  
Advertisement
Add Comment
Please, Sign In to add comment