Advertisement
Guest User

Untitled

a guest
Aug 16th, 2015
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 37.87 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job. Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. --[[
  6. Custom commands:
  7.  
  8. gs c step
  9. Uses the currently configured step on the target, with either <t> or <stnpc> depending on setting.
  10.  
  11. gs c step t
  12. Uses the currently configured step on the target, but forces use of <t>.
  13.  
  14.  
  15. Configuration commands:
  16.  
  17. gs c cycle mainstep
  18. Cycles through the available steps to use as the primary step when using one of the above commands.
  19.  
  20. gs c cycle altstep
  21. Cycles through the available steps to use for alternating with the configured main step.
  22.  
  23. gs c toggle usealtstep
  24. Toggles whether or not to use an alternate step.
  25.  
  26. gs c toggle selectsteptarget
  27. Toggles whether or not to use <stnpc> (as opposed to <t>) when using a step.
  28. --]]
  29.  
  30.  
  31. -- Initialization function for this job file.
  32. function get_sets()
  33. mote_include_version = 2
  34.  
  35. -- Load and initialize the include file.
  36. include('Mote-Include.lua')
  37. end
  38.  
  39.  
  40. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  41. function job_setup()
  42. state.Buff['Climactic Flourish'] = buffactive['climactic flourish'] or false
  43.  
  44. state.MainStep = M{['description']='Main Step', 'Box Step', 'Quickstep', 'Feather Step', 'Stutter Step'}
  45. state.AltStep = M{['description']='Alt Step', 'Quickstep', 'Feather Step', 'Stutter Step', 'Box Step'}
  46. state.UseAltStep = M(false, 'Use Alt Step')
  47. state.SelectStepTarget = M(false, 'Select Step Target')
  48. state.IgnoreTargetting = M(false, 'Ignore Targetting')
  49.  
  50. state.CurrentStep = M{['description']='Current Step', 'Main', 'Alt'}
  51. state.SkillchainPending = M(false, 'Skillchain Pending')
  52.  
  53. determine_haste_group()
  54. end
  55.  
  56. -------------------------------------------------------------------------------------------------------------------
  57. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  58. -------------------------------------------------------------------------------------------------------------------
  59.  
  60. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  61. function user_setup()
  62. state.OffenseMode:options('Normal', 'Acc', 'Fodder')
  63. state.HybridMode:options('Normal', 'Evasion', 'PDT')
  64. state.WeaponskillMode:options('Normal', 'Acc', 'Fodder')
  65. state.PhysicalDefenseMode:options('Evasion', 'PDT')
  66.  
  67.  
  68. gear.default.weaponskill_neck = "Asperity Necklace"
  69. gear.default.weaponskill_waist = "Caudata Belt"
  70. gear.AugQuiahuiz = {name="Quiahuiz Trousers", augments={'Haste+2','"Snapshot"+1','STR+8'}}
  71.  
  72. -- Additional local binds
  73. send_command('bind ^= gs c cycle mainstep')
  74. send_command('bind != gs c cycle altstep')
  75. send_command('bind ^- gs c toggle selectsteptarget')
  76. send_command('bind !- gs c toggle usealtstep')
  77. send_command('bind ^` input /ja "Chocobo Jig" <me>')
  78. send_command('bind !` input /ja "Chocobo Jig II" <me>')
  79.  
  80. select_default_macro_book()
  81. end
  82.  
  83.  
  84. -- Called when this job file is unloaded (eg: job change)
  85. function user_unload()
  86. send_command('unbind ^`')
  87. send_command('unbind !`')
  88. send_command('unbind ^=')
  89. send_command('unbind !=')
  90. send_command('unbind ^-')
  91. send_command('unbind !-')
  92. end
  93.  
  94.  
  95. -- Define sets and vars used by this job file.
  96. function init_gear_sets()
  97. --------------------------------------
  98. -- Start defining the sets
  99. --------------------------------------
  100.  
  101. -- Precast Sets
  102.  
  103. -- Precast sets to enhance JAs
  104.  
  105. sets.precast.JA['No Foot Rise'] = {body="Horos Casaque"}
  106.  
  107. sets.precast.JA['Trance'] = {head="Horos Tiara"}
  108.  
  109.  
  110. -- Waltz set (chr and vit)
  111. sets.precast.Waltz = {ammo="Sonia's Plectrum",
  112. head="Horos Tiara",ear1="Roundel Earring",
  113. body="Dancer's Casaque",hands="Buremte Gloves",ring1="Asklepian Ring",
  114. back="Toetapper Mantle",waist="Caudata Belt",legs="Nahtirah Trousers",feet="Maxixi Toe Shoes"}
  115.  
  116. -- Don't need any special gear for Healing Waltz.
  117. sets.precast.Waltz['Healing Waltz'] = {}
  118.  
  119. sets.precast.Samba = {head="Dancer's Tiara"}
  120.  
  121. sets.precast.Jig = {legs="Horos Tights", feet="Dancer's toe shoes"}
  122.  
  123. sets.precast.Step = {waist="Chaac Belt"}
  124. sets.precast.Step['Feather Step'] = {feet="Charis Shoes +1"}
  125.  
  126. sets.precast.Flourish1 = {}
  127. sets.precast.Flourish1['Violent Flourish'] = {ear1="Psystorm Earring",ear2="Lifestorm Earring",
  128. body="Etoile Casaque",hands="Buremte Gloves",ring2="Sangoma Ring",
  129. waist="Chaac Belt",legs="Iuitl Tights",feet="Iuitl Gaiters +1"} -- magic accuracy
  130. sets.precast.Flourish1['Desperate Flourish'] = {ammo="Charis Feather",
  131. head="Whirlpool Mask",neck="Ej Necklace",
  132. body="Horos Casaque",hands="Buremte Gloves",ring1="Beeline Ring",
  133. back="Toetapper Mantle",waist="Hurch'lan Sash",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"} -- acc gear
  134.  
  135. sets.precast.Flourish2 = {}
  136. sets.precast.Flourish2['Reverse Flourish'] = {hands="Charis Bangles +1"}
  137.  
  138. sets.precast.Flourish3 = {}
  139. sets.precast.Flourish3['Striking Flourish'] = {body="Charis Casaque +1"}
  140. sets.precast.Flourish3['Climactic Flourish'] = {head="Charis Tiara +1"}
  141.  
  142. -- Fast cast sets for spells
  143.  
  144. sets.precast.FC = {ammo="Impatiens",head="Haruspex Hat",ear2="Loquacious Earring",hands="Thaumas Gloves",ring1="Prolix Ring"}
  145.  
  146. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  147.  
  148.  
  149. -- Weaponskill sets
  150. -- Default set for any weaponskill that isn't any more specifically defined
  151. sets.precast.WS = {ammo="Thew Bomblet", ear1="Flame Pearl", ear2="Flame Pearl"}
  152. sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Honed Tathlum", back="Toetapper Mantle"})
  153.  
  154. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  155. sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {neck="Houyi's Gorget",
  156. hands="Iuitl Wristbands",ring1="Stormsoul Ring",
  157. waist="Caudata Belt",legs="Nahtirah Trousers"})
  158. sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {ammo="Honed Tathlum", back="Toetapper Mantle"})
  159. sets.precast.WS['Exenterator'].Fodder = set_combine(sets.precast.WS['Exenterator'], {waist=gear.ElementalBelt})
  160.  
  161. sets.precast.WS['Pyrrhic Kleos'] = set_combine(sets.precast.WS, {hands="Iuitl Wristbands"})
  162. sets.precast.WS['Pyrrhic Kleos'].Acc = set_combine(sets.precast.WS.Acc, {hands="Iuitl Wristbands"})
  163.  
  164. sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, {ammo="Charis Feather",head="Uk'uxkaj Cap",neck="Rancor Collar"})
  165. sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {ammo="Honed Tathlum", back="Toetapper Mantle"})
  166.  
  167. sets.precast.WS["Rudra's Storm"] = set_combine(sets.precast.WS, {ammo="Charis Feather",ear1="Brutal Earring"})
  168. sets.precast.WS["Rudra's Storm"].Acc = set_combine(sets.precast.WS["Rudra's Storm"], {back="Toetapper Mantle"})
  169.  
  170. sets.precast.WS['Aeolian Edge'] = {ammo="Charis Feather",
  171. head="Wayfarer Circlet",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Moonshade Earring",
  172. body="Wayfarer Robe",hands="Wayfarer Cuffs",ring1="Acumen Ring",ring2="Demon's Ring",
  173. back="Toro Cape",waist="Chaac Belt",legs="Shneddick Tights +1",feet="Wayfarer Clogs"}
  174.  
  175. sets.precast.Skillchain = {hands="Charis Bangles +1"}
  176.  
  177.  
  178. -- Midcast Sets
  179.  
  180. sets.midcast.FastRecast = {
  181. head="Felistris Mask",ear2="Loquacious Earring",
  182. body="Iuitl Vest",hands="Iuitl Wristbands",
  183. legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
  184.  
  185. -- Specific spells
  186. sets.midcast.Utsusemi = {
  187. head="Felistris Mask",neck="Ej Necklace",ear2="Loquacious Earring",
  188. body="Iuitl Vest",hands="Iuitl Wristbands",ring1="Beeline Ring",
  189. back="Toetapper Mantle",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
  190.  
  191.  
  192. -- Sets to return to when not performing an action.
  193.  
  194. -- Resting sets
  195. sets.resting = {head="Ocelomeh Headpiece +1",neck="Wiglen Gorget",
  196. ring1="Sheltered Ring",ring2="Paguroidea Ring"}
  197. sets.ExtraRegen = {head="Ocelomeh Headpiece +1"}
  198.  
  199.  
  200. -- Idle sets
  201.  
  202. sets.idle = {
  203. main="Homestead Dagger", sub="Atoyac",ammo="Charis Feather",
  204. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  205. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  206. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  207. legs="Kaabnax Trousers",feet="Tandava crackows",
  208. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  209. right_ear="Dudgeon Earring",left_ring={ name="Dark Ring",
  210. augments={'Phys. dmg. taken -5%','Breath dmg. taken -4%','Magic dmg. taken -4%',}},
  211. right_ring={ name="Dark Ring",
  212. augments={'Phys. dmg. taken -3%','Breath dmg. taken -4%','Spell interruption rate down -4%',}},
  213. back={ name="Toetapper Mantle",
  214. augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  215. }
  216.  
  217. sets.idle.Town = {
  218. main="Homestead Dagger", sub="Atoyac",ammo="Charis Feather",
  219. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  220. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  221. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  222. legs="Kaabnax Trousers",feet="Tandava crackows",
  223. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  224. right_ear="Dudgeon Earring",left_ring={ name="Dark Ring",
  225. augments={'Phys. dmg. taken -5%','Breath dmg. taken -4%','Magic dmg. taken -4%',}},
  226. right_ring={ name="Dark Ring",
  227. augments={'Phys. dmg. taken -3%','Breath dmg. taken -4%','Spell interruption rate down -4%',}},
  228. back={ name="Toetapper Mantle",
  229. augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  230. }
  231.  
  232. sets.idle.Weak = {
  233. main="Homestead Dagger", sub="Atoyac",ammo="Charis Feather",
  234. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  235. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  236. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  237. legs="Kaabnax Trousers",feet="Tandava crackows",
  238. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  239. right_ear="Dudgeon Earring",left_ring={ name="Dark Ring",
  240. augments={'Phys. dmg. taken -5%','Breath dmg. taken -4%','Magic dmg. taken -4%',}},
  241. right_ring={ name="Dark Ring",
  242. augments={'Phys. dmg. taken -3%','Breath dmg. taken -4%','Spell interruption rate down -4%',}},
  243. back={ name="Toetapper Mantle",
  244. augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  245. }
  246.  
  247. -- Defense sets
  248.  
  249. sets.defense.Evasion = {
  250. main="Homestead Dagger", sub="Atoyac",ammo="Charis Feather",
  251. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  252. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  253. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  254. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  255. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  256. right_ear="Dudgeon Earring",left_ring={ name="Dark Ring",
  257. augments={'Phys. dmg. taken -5%','Breath dmg. taken -4%','Magic dmg. taken -4%',}},
  258. right_ring={ name="Dark Ring",
  259. augments={'Phys. dmg. taken -3%','Breath dmg. taken -4%','Spell interruption rate down -4%',}},
  260. back={ name="Toetapper Mantle",
  261. augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  262. }
  263.  
  264. sets.defense.PDT = {
  265. main="Homestead Dagger", sub="Atoyac",ammo="Charis Feather",
  266. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  267. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  268. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  269. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  270. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  271. right_ear="Dudgeon Earring",left_ring={ name="Dark Ring",
  272. augments={'Phys. dmg. taken -5%','Breath dmg. taken -4%','Magic dmg. taken -4%',}},
  273. right_ring={ name="Dark Ring",
  274. augments={'Phys. dmg. taken -3%','Breath dmg. taken -4%','Spell interruption rate down -4%',}},
  275. back={ name="Toetapper Mantle",
  276. augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  277. }
  278.  
  279. sets.defense.MDT = {
  280. main="Homestead Dagger", sub="Atoyac",ammo="Charis Feather",
  281. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  282. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  283. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  284. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  285. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  286. right_ear="Dudgeon Earring",left_ring={ name="Dark Ring",
  287. augments={'Phys. dmg. taken -5%','Breath dmg. taken -4%','Magic dmg. taken -4%',}},
  288. right_ring={ name="Dark Ring",
  289. augments={'Phys. dmg. taken -3%','Breath dmg. taken -4%','Spell interruption rate down -4%',}},
  290. back={ name="Toetapper Mantle",
  291. augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  292. }
  293.  
  294. sets.Kiting = {feet="Tandava crackows"}
  295.  
  296. -- Engaged sets
  297.  
  298. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  299. -- sets if more refined versions aren't defined.
  300. -- If you create a set with both offense and defense modes, the offense mode should be first.
  301. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  302.  
  303. -- Normal melee group
  304. sets.engaged = {ammo="Charis Feather",
  305. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  306. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  307. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  308. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  309. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  310. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  311. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  312. }
  313.  
  314. sets.engaged.Fodder = {ammo="Charis Feather",
  315. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  316. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  317. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  318. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  319. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  320. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  321. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  322. }
  323.  
  324. sets.engaged.Fodder.Evasion = {ammo="Charis Feather",
  325. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  326. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  327. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  328. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  329. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  330. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  331. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  332. }
  333.  
  334. sets.engaged.Acc = {ammo="Charis Feather",
  335. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  336. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  337. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  338. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  339. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  340. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  341. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  342. }
  343.  
  344. sets.engaged.Evasion = {ammo="Charis Feather",
  345. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  346. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  347. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  348. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  349. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  350. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  351. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  352. }
  353.  
  354. sets.engaged.PDT = {ammo="Charis Feather",
  355. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  356. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  357. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  358. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  359. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  360. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  361. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  362. }
  363.  
  364. sets.engaged.Acc.Evasion = {ammo="Charis Feather",
  365. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  366. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  367. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  368. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  369. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  370. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  371. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  372. }
  373.  
  374. sets.engaged.Acc.PDT = {ammo="Charis Feather",
  375. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  376. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  377. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  378. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  379. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  380. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  381. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  382. }
  383.  
  384. -- Custom melee group: High Haste (2x March or Haste)
  385. sets.engaged.HighHaste = {ammo="Charis Feather",
  386. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  387. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  388. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  389. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  390. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  391. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  392. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  393. }
  394.  
  395. sets.engaged.Fodder.HighHaste = {ammo="Charis Feather",
  396. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  397. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  398. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  399. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  400. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  401. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  402. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  403. }
  404.  
  405. sets.engaged.Fodder.Evasion.HighHaste = {ammo="Charis Feather",
  406. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  407. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  408. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  409. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  410. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  411. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  412. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  413. }
  414.  
  415. sets.engaged.Acc.HighHaste = {ammo="Charis Feather",
  416. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  417. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  418. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  419. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  420. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  421. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  422. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  423. }
  424.  
  425. sets.engaged.Evasion.HighHaste = {ammo="Charis Feather",
  426. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  427. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  428. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  429. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  430. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  431. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  432. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  433. }
  434.  
  435. sets.engaged.Acc.Evasion.HighHaste = {ammo="Charis Feather",
  436. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  437. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  438. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  439. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  440. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  441. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  442. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  443. }
  444.  
  445. sets.engaged.PDT.HighHaste = {ammo="Charis Feather",
  446. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  447. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  448. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  449. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  450. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  451. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  452. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  453. }
  454.  
  455. sets.engaged.Acc.PDT.HighHaste = {ammo="Charis Feather",
  456. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  457. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  458. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  459. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  460. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  461. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  462. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  463. }
  464.  
  465.  
  466. -- Custom melee group: Max Haste (2x March + Haste)
  467. sets.engaged.MaxHaste = {ammo="Charis Feather",
  468. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  469. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  470. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  471. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  472. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  473. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  474. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  475. }
  476.  
  477. -- Getting Marches+Haste from Trust NPCs, doesn't cap delay.
  478. sets.engaged.Fodder.MaxHaste = {ammo="Charis Feather",
  479. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  480. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  481. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  482. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  483. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  484. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  485. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  486. }
  487.  
  488. sets.engaged.Fodder.Evasion.MaxHaste = {ammo="Charis Feather",
  489. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  490. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  491. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  492. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  493. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  494. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  495. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  496. }
  497.  
  498. sets.engaged.Acc.MaxHaste = {ammo="Charis Feather",
  499. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  500. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  501. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  502. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  503. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  504. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  505. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  506. }
  507.  
  508. sets.engaged.Evasion.MaxHaste = {ammo="Charis Feather",
  509. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  510. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  511. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  512. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  513. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  514. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  515. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  516. }
  517.  
  518. sets.engaged.Acc.Evasion.MaxHaste = {ammo="Charis Feather",
  519. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  520. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  521. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  522. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  523. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  524. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  525. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  526. }
  527.  
  528. sets.engaged.PDT.MaxHaste = {ammo="Charis Feather",
  529. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  530. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  531. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  532. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  533. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  534. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  535. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  536. }
  537.  
  538. sets.engaged.Acc.PDT.MaxHaste = {ammo="Charis Feather",
  539. head={ name="Ejekamal Mask", augments={'Haste+2','"Snapshot"+2','"Mag.Def.Bns."+2',}},
  540. body={ name="Taeon Tabard", augments={'"Dual Wield"+5',}},
  541. hands={ name="Taeon Gloves", augments={'"Triple Atk."+1',}},
  542. legs="Kaabnax Trousers",feet={ name="Taeon Boots", augments={'"Triple Atk."+2',}},
  543. neck="Asperity Necklace",waist="Cetl Belt",left_ear="Bladeborn Earring",
  544. right_ear="Dudgeon Earring",left_ring="Rajas Ring",
  545. right_ring="Enlivened Ring",back={ name="Toetapper Mantle", augments={'"Store TP"+1','"Dual Wield"+4','"Rev. Flourish"+24',}},
  546. }
  547.  
  548.  
  549.  
  550. -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  551. sets.buff['Saber Dance'] = {legs="Horos Tights"}
  552. sets.buff['Climactic Flourish'] = {head="Charis Tiara +1"}
  553. end
  554.  
  555.  
  556. -------------------------------------------------------------------------------------------------------------------
  557. -- Job-specific hooks for standard casting events.
  558. -------------------------------------------------------------------------------------------------------------------
  559.  
  560. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  561. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  562. function job_precast(spell, action, spellMap, eventArgs)
  563. --auto_presto(spell)
  564. end
  565.  
  566.  
  567. function job_post_precast(spell, action, spellMap, eventArgs)
  568. if spell.type == "WeaponSkill" then
  569. if state.Buff['Climactic Flourish'] then
  570. equip(sets.buff['Climactic Flourish'])
  571. end
  572. if state.SkillchainPending.value == true then
  573. equip(sets.precast.Skillchain)
  574. end
  575. end
  576. end
  577.  
  578.  
  579. -- Return true if we handled the aftercast work. Otherwise it will fall back
  580. -- to the general aftercast() code in Mote-Include.
  581. function job_aftercast(spell, action, spellMap, eventArgs)
  582. if not spell.interrupted then
  583. if spell.english == "Wild Flourish" then
  584. state.SkillchainPending:set()
  585. send_command('wait 5;gs c unset SkillchainPending')
  586. elseif spell.type:lower() == "weaponskill" then
  587. state.SkillchainPending:toggle()
  588. send_command('wait 6;gs c unset SkillchainPending')
  589. end
  590. end
  591. end
  592.  
  593. -------------------------------------------------------------------------------------------------------------------
  594. -- Job-specific hooks for non-casting events.
  595. -------------------------------------------------------------------------------------------------------------------
  596.  
  597. -- Called when a player gains or loses a buff.
  598. -- buff == buff gained or lost
  599. -- gain == true if the buff was gained, false if it was lost.
  600. function job_buff_change(buff,gain)
  601. -- If we gain or lose any haste buffs, adjust which gear set we target.
  602. if S{'haste','march','embrava','haste samba'}:contains(buff:lower()) then
  603. determine_haste_group()
  604. handle_equipping_gear(player.status)
  605. elseif buff == 'Saber Dance' or buff == 'Climactic Flourish' then
  606. handle_equipping_gear(player.status)
  607. end
  608. end
  609.  
  610.  
  611. function job_status_change(new_status, old_status)
  612. if new_status == 'Engaged' then
  613. determine_haste_group()
  614. end
  615. end
  616.  
  617.  
  618. -------------------------------------------------------------------------------------------------------------------
  619. -- User code that supplements standard library decisions.
  620. -------------------------------------------------------------------------------------------------------------------
  621.  
  622. -- Called by the default 'update' self-command.
  623. function job_update(cmdParams, eventArgs)
  624. determine_haste_group()
  625. end
  626.  
  627.  
  628. function customize_idle_set(idleSet)
  629. if player.hpp < 80 and not areas.Cities:contains(world.area) then
  630. idleSet = set_combine(idleSet, sets.ExtraRegen)
  631. end
  632.  
  633. return idleSet
  634. end
  635.  
  636. function customize_melee_set(meleeSet)
  637. if state.DefenseMode.value ~= 'None' then
  638. if buffactive['saber dance'] then
  639. meleeSet = set_combine(meleeSet, sets.buff['Saber Dance'])
  640. end
  641. if state.Buff['Climactic Flourish'] then
  642. meleeSet = set_combine(meleeSet, sets.buff['Climactic Flourish'])
  643. end
  644. end
  645.  
  646. return meleeSet
  647. end
  648.  
  649. -- Handle auto-targetting based on local setup.
  650. function job_auto_change_target(spell, action, spellMap, eventArgs)
  651. if spell.type == 'Step' then
  652. if state.IgnoreTargetting.value == true then
  653. state.IgnoreTargetting:reset()
  654. eventArgs.handled = true
  655. end
  656.  
  657. eventArgs.SelectNPCTargets = state.SelectStepTarget.value
  658. end
  659. end
  660.  
  661.  
  662. -- Function to display the current relevant user state when doing an update.
  663. -- Set eventArgs.handled to true if display was handled, and you don't want the default info shown.
  664. function display_current_job_state(eventArgs)
  665. local msg = 'Melee'
  666.  
  667. if state.CombatForm.has_value then
  668. msg = msg .. ' (' .. state.CombatForm.value .. ')'
  669. end
  670.  
  671. msg = msg .. ': '
  672.  
  673. msg = msg .. state.OffenseMode.value
  674. if state.HybridMode.value ~= 'Normal' then
  675. msg = msg .. '/' .. state.HybridMode.value
  676. end
  677. msg = msg .. ', WS: ' .. state.WeaponskillMode.value
  678.  
  679. if state.DefenseMode.value ~= 'None' then
  680. msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  681. end
  682.  
  683. if state.Kiting.value then
  684. msg = msg .. ', Kiting'
  685. end
  686.  
  687. msg = msg .. ', ['..state.MainStep.current
  688.  
  689. if state.UseAltStep.value == true then
  690. msg = msg .. '/'..state.AltStep.current
  691. end
  692.  
  693. msg = msg .. ']'
  694.  
  695. if state.SelectStepTarget.value == true then
  696. steps = steps..' (Targetted)'
  697. end
  698.  
  699. add_to_chat(122, msg)
  700.  
  701. eventArgs.handled = true
  702. end
  703.  
  704.  
  705. -------------------------------------------------------------------------------------------------------------------
  706. -- User self-commands.
  707. -------------------------------------------------------------------------------------------------------------------
  708.  
  709. -- Called for custom player commands.
  710. function job_self_command(cmdParams, eventArgs)
  711. if cmdParams[1] == 'step' then
  712. if cmdParams[2] == 't' then
  713. state.IgnoreTargetting:set()
  714. end
  715.  
  716. local doStep = ''
  717. if state.UseAltStep.value == true then
  718. doStep = state[state.CurrentStep.current..'Step'].current
  719. state.CurrentStep:cycle()
  720. else
  721. doStep = state.MainStep.current
  722. end
  723.  
  724. send_command('@input /ja "'..doStep..'" <t>')
  725. end
  726. end
  727.  
  728. -------------------------------------------------------------------------------------------------------------------
  729. -- Utility functions specific to this job.
  730. -------------------------------------------------------------------------------------------------------------------
  731.  
  732. function determine_haste_group()
  733. -- We have three groups of DW in gear: Charis body, Charis neck + DW earrings, and Patentia Sash.
  734.  
  735. -- For high haste, we want to be able to drop one of the 10% groups (body, preferably).
  736. -- High haste buffs:
  737. -- 2x Marches + Haste
  738. -- 2x Marches + Haste Samba
  739. -- 1x March + Haste + Haste Samba
  740. -- Embrava + any other haste buff
  741.  
  742. -- For max haste, we probably need to consider dropping all DW gear.
  743. -- Max haste buffs:
  744. -- Embrava + Haste/March + Haste Samba
  745. -- 2x March + Haste + Haste Samba
  746.  
  747. classes.CustomMeleeGroups:clear()
  748.  
  749. if buffactive.embrava and (buffactive.haste or buffactive.march) and buffactive['haste samba'] then
  750. classes.CustomMeleeGroups:append('MaxHaste')
  751. elseif buffactive.march == 2 and buffactive.haste and buffactive['haste samba'] then
  752. classes.CustomMeleeGroups:append('MaxHaste')
  753. elseif buffactive.embrava and (buffactive.haste or buffactive.march or buffactive['haste samba']) then
  754. classes.CustomMeleeGroups:append('HighHaste')
  755. elseif buffactive.march == 1 and buffactive.haste and buffactive['haste samba'] then
  756. classes.CustomMeleeGroups:append('HighHaste')
  757. elseif buffactive.march == 2 and (buffactive.haste or buffactive['haste samba']) then
  758. classes.CustomMeleeGroups:append('HighHaste')
  759. end
  760. end
  761.  
  762.  
  763. -- Automatically use Presto for steps when it's available and we have less than 3 finishing moves
  764. function auto_presto(spell)
  765. if spell.type == 'Step' then
  766. local allRecasts = windower.ffxi.get_ability_recasts()
  767. local prestoCooldown = allRecasts[236]
  768. local under3FMs = not buffactive['Finishing Move 3'] and not buffactive['Finishing Move 4'] and not buffactive['Finishing Move 5']
  769.  
  770. if player.main_job_level >= 77 and prestoCooldown < 1 and under3FMs then
  771. cast_delay(1.1)
  772. send_command('@input /ja "Presto" <me>')
  773. end
  774. end
  775. end
  776.  
  777.  
  778. -- Select default macro book on initial load or subjob change.
  779. function select_default_macro_book()
  780. -- Default macro set/book
  781. if player.sub_job == 'WAR' then
  782. set_macro_page(1, 2)
  783. elseif player.sub_job == 'NIN' then
  784. set_macro_page(1, 2)
  785. elseif player.sub_job == 'SAM' then
  786. set_macro_page(1, 2)
  787. else
  788. set_macro_page(1, 2)
  789. end
  790. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement