Advertisement
Guest User

Untitled

a guest
Mar 30th, 2015
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.97 KB | None | 0 0
  1.  
  2. --[[
  3. === Notes ===
  4. Souleater: By default, souleater will cancel after any weaponskill is used.
  5. However, if Blood Weapon is used, Souleater will remain active for it's duration.
  6. It will be canceled after your next weaponskill, following Blood Weapon wearing off.
  7. This behavior can be toggled off/on with @f9 (window key + f9)
  8. Last Resort: There is an LR Hybrid Mode toggle present. This is useful when Last Resort may be risky.
  9. I simplified this lua since I got Liberator. There are no longer sets for greatswords. - Sorry
  10. Set format is as follows:
  11. sets.engaged.[CombatForm][CombatWeapon][Offense or DefenseMode][CustomGroup]
  12. CombatForm = War
  13. CustomGroups = AM3
  14. --]]
  15. --
  16. -- Initialization function for this job file.
  17. function get_sets()
  18. mote_include_version = 2
  19. -- Load and initialize the include file.
  20. include('Mote-Include.lua')
  21. end
  22. -- Setup vars that are user-independent.
  23. function job_setup()
  24. state.CapacityMode = M(false, 'Capacity Point Mantle')
  25. state.Buff.Souleater = buffactive.souleater or false
  26. state.Buff['Last Resort'] = buffactive['Last Resort'] or false
  27. state.LookCool = M{['description']='Look Cool', 'Normal', 'On' }
  28. state.SouleaterMode = M(true, 'Soul Eater Mode')
  29. --wsList = S{'Spiral Hell'}
  30. get_combat_form()
  31. update_melee_groups()
  32. end
  33. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  34. function user_setup()
  35. -- Options: Override default values
  36. state.OffenseMode:options('Normal', 'Mid', 'Acc')
  37. state.HybridMode:options('Normal', 'LR', 'PDT', 'Reraise')
  38. state.WeaponskillMode:options('Normal', 'Mid', 'Acc')
  39. state.CastingMode:options('Normal')
  40. state.IdleMode:options('Normal')
  41. state.RestingMode:options('Normal')
  42. state.PhysicalDefenseMode:options('PDT', 'Reraise')
  43. state.MagicalDefenseMode:options('MDT')
  44. war_sj = player.sub_job == 'WAR' or false
  45. -- Additional local binds
  46. send_command('bind != gs c toggle CapacityMode')
  47. send_command('bind @f9 gs c toggle SouleaterMode')
  48. send_command('bind ^` input /ja "Hasso" <me>')
  49. send_command('bind !` input /ja "Seigan" <me>')
  50. send_command('bind ^[ gs c cycle LookCool')
  51. select_default_macro_book()
  52. end
  53. -- Called when this job file is unloaded (eg: job change)
  54. function file_unload()
  55. send_command('unbind ^`')
  56. send_command('unbind !=')
  57. send_command('unbind ^[')
  58. send_command('unbind ![')
  59. send_command('unbind @f9')
  60. end
  61. -- Define sets and vars used by this job file.
  62. function init_gear_sets()
  63. --------------------------------------
  64. -- Start defining the sets
  65. --------------------------------------
  66. -- Precast Sets
  67. -- Precast sets to enhance JAs
  68. sets.precast.JA['Diabolic Eye'] = {hands="Fallen's Finger Gauntlets +1"}
  69. sets.precast.JA['Arcane Circle'] = {feet="Ignominy Sollerets"}
  70. sets.precast.JA['Nether Void'] = {legs="Bale Flanchard +2"}
  71. sets.precast.JA['Dark Seal'] = {head="Fallen's burgeonet +1"}
  72. sets.precast.JA['Souleater'] = {head="Ignominy burgeonet +1"}
  73. --sets.precast.JA['Last Resort'] = {feet="Fallen's Sollerets +1"}
  74. sets.precast.JA['Blood Weapon'] = {body="Fallen's Cuirass +1"}
  75. sets.precast.JA['Weapon Bash'] = {hands="Ignominy Gauntlets +1"}
  76. sets.CapacityMantle = { back="Mecistopins Mantle" }
  77. sets.Berserker = { neck="Berserker's Torque" }
  78. sets.WSDayBonus = { head="Gavialis Helm" }
  79. sets.WSBack = { back="Trepidity Mantle" }
  80. sets.NightAmmo = { ammo="Ginsen" }
  81. sets.DayAmmo = { ammo="Tengu-No-Hane" }
  82. -- Waltz set (chr and vit)
  83. sets.precast.Waltz = {
  84. head="Yaoyotl Helm",
  85. body="Mes'yohi Haubergeon",
  86. legs="Cizin Breeches +1",
  87. feet="Whirlpool Greaves"
  88. }
  89. -- Fast cast sets for spells
  90. sets.precast.FC = {
  91. ammo="Impatiens",
  92. head="Fallen's Burgeonet +1",
  93. ear1="Loquacious Earring",
  94. hands="Buremte Gloves",
  95. ring2="Prolix Ring"
  96. }
  97. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, { neck="Magoraga Beads" })
  98. sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {
  99. head="Cizin Helm +1",
  100. neck="Stoicheion Medal"
  101. })
  102. sets.precast.FC['Enfeebling Magic'] = set_combine(sets.precast.FC, {
  103. head="Cizin Helm +1",
  104. })
  105. -- Midcast Sets
  106. sets.midcast.FastRecast = {
  107. ammo="Impatiens",
  108. head="Otomi Helm",
  109. hands="Cizin Mufflers +1",
  110. feet="Ejekamal Boots"
  111. }
  112. -- Specific spells
  113. sets.midcast.Utsusemi = {
  114. head="Otomi Helm",
  115. feet="Ejekamal Boots"
  116. }
  117. sets.midcast['Dark Magic'] = {
  118. ammo="Impatiens",
  119. head="Ignominy burgeonet +1",
  120. neck="Dark Torque",
  121. ear1="Lifestorm Earring",
  122. ear2="Psystorm Earring",
  123. body="Haruspex Coat",
  124. hands="Fallen's Finger Gauntlets +1",
  125. waist="Casso Sash",
  126. ring1="Perception Ring",
  127. ring2="Sangoma Ring",
  128. back="Niht Mantle",
  129. legs="Fallen's Flanchard",
  130. feet="Ignominy sollerets"
  131. }
  132. sets.midcast['Enfeebling Magic'] = set_combine(sets.midcast['Dark Magic'], {
  133. neck="Eddy Necklace",
  134. head="Otomi Helm",
  135. body="Ignominy Cuirass +1",
  136. ring1="Globidonta Ring",
  137. back="Aput Mantle"
  138. })
  139. sets.midcast['Elemental Magic'] = {
  140. ammo="Impatiens",
  141. head="Ignominy burgeonet +1",
  142. neck="Eddy Necklace",
  143. ear1="Friomisi Earring",
  144. ear2="Crematio Earring",
  145. body="Fallen's Cuirass +1",
  146. hands="Fallen's Finger Gauntlets +1",
  147. ring1="Shiva Ring",
  148. ring2="Acumen Ring",
  149. waist="Caudata Belt",
  150. --legs="Haruspex Slops",
  151. legs="Ignominy Flanchard +1",
  152. back="Aput Mantle",
  153. feet="Bale Sollerets +2"
  154. }
  155. sets.midcast['Dread Spikes'] = set_combine(sets.midcast['Dark Magic'], {
  156. ammo="Impatiens",
  157. head="Gavialis Helm",
  158. body="Bale Cuirass +2",
  159. hands="Boor Bracelets",
  160. ring1="Beeline Ring",
  161. ring2="K'ayres Ring",
  162. back="Trepidity Mantle",
  163. legs="Ignominy Flanchard +1",
  164. feet="Ejekamal Boots"
  165. })
  166. sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {
  167. ring2="Excelsis Ring",
  168. })
  169. sets.midcast.Aspir = sets.midcast.Drain
  170. sets.midcast.Absorb = set_combine(sets.midcast['Dark Magic'], {
  171. back="Chuparrosa Mantle",
  172. hands="Pavor Gauntlets",
  173. feet="Black Sollerets"
  174. })
  175. sets.midcast['Absorb-TP'] = set_combine(sets.midcast.Absorb, {
  176. hands="Bale Gauntlets +2"
  177. })
  178. sets.midcast['Absorb-STR'] = sets.midcast.Absorb
  179. sets.midcast['Absorb-DEX'] = sets.midcast.Absorb
  180. sets.midcast['Absorb-AGI'] = sets.midcast.Absorb
  181. sets.midcast['Absorb-MND'] = sets.midcast.Absorb
  182. sets.midcast['Absorb-VIT'] = sets.midcast.Absorb
  183. sets.midcast['Absorb-Attri'] = sets.midcast.Absorb
  184. sets.midcast['Absorb-Acc'] = sets.midcast.Absorb
  185. -- Ranged for xbow
  186. sets.precast.RA = {
  187. head="Otomi Helm",
  188. hands="Buremte Gloves",
  189. feet="Ejekamal Boots"
  190. }
  191. sets.midcast.RA = {
  192. neck="Iqabi Necklace",
  193. ear2="Tripudio Earring",
  194. hands="Buremte Gloves",
  195. ring1="Beeline Ring",
  196. ring2="Garuda Ring",
  197. waist="Chaac Belt",
  198. legs="Aetosaur Trousers +1",
  199. feet="Whirlpool Greaves"
  200. }
  201. -- WEAPONSKILL SETS
  202. -- General sets
  203. sets.precast.WS = {
  204. ammo="Aqreqaq Bomblet",
  205. head="Otomi Helm",
  206. neck="Fotia Gorget",
  207. ear1="Brutal Earring",
  208. ear2="Moonshade Earring",
  209. body="Mes'yohi Haubergeon",
  210. hands="Acro Gauntlets",
  211. ring1="Ifrit Ring +1",
  212. ring2="Ifrit Ring +1",
  213. back="Niht Mantle",
  214. waist="Fotia Belt",
  215. legs="Ignominy Flanchard +1",
  216. feet={name="Acro Leggings", augments={'Attack+23','"Dbl. Atk."+3','Crit. hit damage +2%'}}
  217. }
  218. sets.precast.WS.Mid = set_combine(sets.precast.WS, {
  219. ammo="Ginsen",
  220. head="Yaoyotl Helm",
  221. body="Mes'yohi Haubergeon",
  222. hands="Ignominy Gauntlets +1"
  223. })
  224. sets.precast.WS.Acc = set_combine(sets.precast.WS.Mid, {
  225. ear1="Zennaroi Earring",
  226. hands="Buremte Gloves",
  227. body="Fallen's Cuirass +1",
  228. waist="Olseni Belt",
  229. feet="Acro Leggings"
  230. })
  231. -- RESOLUTION
  232. -- 86-100% STR
  233. sets.precast.WS.Resolution = set_combine(sets.precast.WS, {
  234. })
  235. sets.precast.WS.Resolution.Mid = set_combine(sets.precast.WS.Resolution, {
  236. ammo="Ginsen",
  237. head="Yaoyotl Helm",
  238. body="Mes'yohi Haubergeon",
  239. hands="Ignominy Gauntlets +1",
  240. feet="Whirlpool Greaves"
  241. })
  242. sets.precast.WS.Resolution.Acc = set_combine(sets.precast.WS.Resolution.Mid, sets.precast.WS.Acc)
  243. -- TORCLEAVER
  244. -- VIT 80%
  245. sets.precast.WS.Torcleaver = set_combine(sets.precast.WS, {
  246. body="Phorcys Korazin",
  247. legs="Scuffler's Cosciales"
  248. })
  249. sets.precast.WS.Torcleaver.Mid = set_combine(sets.precast.WS.Mid, {
  250. ammo="Ginsen",
  251. neck="Aqua Gorget",
  252. body="Mes'yohi Haubergeon"
  253. })
  254. sets.precast.WS.Torcleaver.Acc = set_combine(sets.precast.WS.Torcleaver.Mid, sets.precast.WS.Acc)
  255. -- INSURGENCY
  256. -- 20% STR / 20% INT
  257. sets.precast.WS.Insurgency = set_combine(sets.precast.WS, {
  258. neck="Shadow Gorget",
  259. ear1="Brutal Earring",
  260. legs="Scuffler's Cosciales",
  261. feet="Ejekamal Boots",
  262. })
  263. sets.precast.WS.Insurgency.AM3 = set_combine(sets.precast.WS.Insurgency, {
  264. back="Bleating Mantle",
  265. legs="Ignominy Flanchard +1"
  266. })
  267. sets.precast.WS.Insurgency.Mid = set_combine(sets.precast.WS.Insurgency, {
  268. ammo="Ginsen",
  269. head="Yaoyotl Helm",
  270. body="Mes'yohi Haubergeon",
  271. hands="Ignominy Gauntlets +1",
  272. waist="Light Belt"
  273. })
  274. sets.precast.WS.Insurgency.AM3Mid = set_combine(sets.precast.WS.Insurgency.Mid, {
  275. body="Fallen's Cuirass +1",
  276. ear1="Bale Earring",
  277. ring1="Rajas Ring",
  278. back={name="Niht Mantle", augments={'Attack +15','"Drain" and "Aspir" potency +10', 'Weapon skill damage +3%'}},
  279. legs="Ignominy Flanchard +1"
  280. })
  281. sets.precast.WS.Insurgency.Acc = set_combine(sets.precast.WS.Insurgency.Mid, {
  282. head="Gavialis Helm",
  283. ear1="Zennaroi Earring",
  284. body="Fallen's Cuirass +1",
  285. hands="Ignominy Gauntlets +1",
  286. ring1="Mars's Ring",
  287. waist="Anguinius Belt",
  288. legs="Xaddi Cuisses",
  289. feet="Xaddi Boots"
  290. })
  291. sets.precast.WS.Insurgency.AM3Acc = set_combine(sets.precast.WS.Insurgency.Acc, {})
  292. -- CROSS REAPER
  293. -- 60% STR / 60% MND
  294. sets.precast.WS['Cross Reaper'] = set_combine(sets.precast.WS, {
  295. neck="Ganesha's Mala",
  296. hands="Fallen's Finger Gauntlets +1",
  297. legs="Scuffler's Cosciales",
  298. feet="Ejekamal Boots"
  299. })
  300. sets.precast.WS['Cross Reaper'].AM3 = set_combine(sets.precast.WS['Cross Reaper'], {})
  301. sets.precast.WS['Cross Reaper'].Mid = set_combine(sets.precast.WS.Mid, {
  302. ammo="Ginsen",
  303. neck="Aqua Gorget",
  304. body="Fallen's Cuirass +1",
  305. ring1="Rajas Ring",
  306. waist="Windbuffet Belt +1",
  307. })
  308. sets.precast.WS['Cross Reaper'].AM3Mid = set_combine(sets.precast.WS['Cross Reaper'].Mid, {
  309. head="Gavialis Helm",
  310. ear1="Bale Earring",
  311. waist="Caudata Belt"
  312. })
  313. sets.precast.WS['Cross Reaper'].Acc = set_combine(sets.precast.WS['Cross Reaper'].Mid, sets.precast.WS.Acc)
  314. -- ENTROPY
  315. -- 86-100% INT
  316. sets.precast.WS.Entropy = set_combine(sets.precast.WS, {
  317. ammo="Ginsen",
  318. head="Otomi Helm",
  319. neck="Shadow Gorget",
  320. body="Fallen's Cuirass +1",
  321. hands="Fallen's Finger Gauntlets +1",
  322. ring1="Shiva Ring",
  323. back="Bleating Mantle",
  324. waist="Soil Belt",
  325. legs="Scuffler's Cosciales",
  326. feet="Ejekamal Boots"
  327. })
  328. sets.precast.WS.Entropy.AM3 = set_combine(sets.precast.WS.Entropy, {
  329. legs="Ignominy Flanchard +1"
  330. })
  331. sets.precast.WS.Entropy.Mid = set_combine(sets.precast.WS.Entropy, {
  332. head="Ighwa Cap",
  333. hands="Ignominy Gauntlets +1",
  334. feet="Whirlpool Greaves"
  335. })
  336. sets.precast.WS.Entropy.AM3Mid = set_combine(sets.precast.WS.Entropy.Mid, {
  337. legs="Xaddi Cuisses"
  338. })
  339. sets.precast.WS.Entropy.Acc = set_combine(sets.precast.WS.Entropy.Mid, sets.precast.WS.Acc)
  340. -- Quietus
  341. -- 60% STR / MND
  342. sets.precast.WS.Quietus = set_combine(sets.precast.WS, {
  343. neck="Shadow Gorget",
  344. ear2="Trux Earring",
  345. body="Ignominy Cuirass +1",
  346. hands="Fallen's Finger Gauntlets +1",
  347. waist="Windbuffet Belt +1",
  348. legs="Scuffler's Cosciales",
  349. feet="Ejekamal Boots"
  350. })
  351. sets.precast.WS.Quietus.AM3 = set_combine(sets.precast.WS.Quietus, {
  352. ear1="Bale Earring",
  353. ear2="Brutal Earring",
  354. legs="Ignominy Flanchard +1"
  355. })
  356. sets.precast.WS.Quietus.Mid = set_combine(sets.precast.WS.Quietus, {
  357. head="Yaoyotl Helm",
  358. hands="Ignominy Gauntlets +1",
  359. waist="Caudata Belt",
  360. })
  361. sets.precast.WS.Quietus.AM3Mid = set_combine(sets.precast.WS.Quietus.Mid, {
  362. ear1="Bale Earring",
  363. ear2="Brutal Earring",
  364. legs="Ignominy Flanchard +1"
  365. })
  366. sets.precast.WS.Quietus.Acc = set_combine(sets.precast.WS.Quietus.Mid, sets.precast.WS.Acc)
  367. -- SPIRAL HELL
  368. -- 50% STR / 50% INT
  369. sets.precast.WS['Spiral Hell'] = set_combine(sets.precast.WS['Entropy'], {
  370. head="Ighwa Cap",
  371. body="Phorcys Korazin",
  372. neck="Aqua Gorget",
  373. legs="Scuffler's Cosciales",
  374. waist="Metalsinger belt",
  375. })
  376. sets.precast.WS['Spiral Hell'].Mid = set_combine(sets.precast.WS['Spiral Hell'], sets.precast.WS.Mid)
  377. sets.precast.WS['Spiral Hell'].Acc = set_combine(sets.precast.WS['Spiral Hell'], sets.precast.WS.Acc)
  378. -- SHADOW OF DEATH
  379. -- 40% STR 40% INT - Darkness Elemental
  380. sets.precast.WS['Shadow of Death'] = set_combine(sets.precast.WS['Entropy'], {
  381. head="Ignominy burgeonet +1",
  382. neck="Aqua Gorget",
  383. body="Fallen's Cuirass +1",
  384. ear1="Friomisi Earring",
  385. hands="Fallen's Finger Gauntlets +1",
  386. back="Argochampsa Mantle",
  387. waist="Caudata Belt",
  388. feet="Ignominy Sollerets"
  389. })
  390. sets.precast.WS['Shadow of Death'].Mid = set_combine(sets.precast.WS['Shadow of Death'], sets.precast.WS.Mid)
  391. sets.precast.WS['Shadow of Death'].Acc = set_combine(sets.precast.WS['Shadow of Death'], sets.precast.WS.Acc)
  392. -- Sword WS's
  393. -- SANGUINE BLADE
  394. -- 50% MND / 50% STR Darkness Elemental
  395. sets.precast.WS['Sanguine Blade'] = set_combine(sets.precast.WS, {
  396. head="Ignominy burgeonet +1",
  397. neck="Stoicheion Medal",
  398. ear1="Friomisi Earring",
  399. ear2="Crematio Earring",
  400. body="Fallen's Cuirass +1",
  401. hands="Fallen's Finger Gauntlets +1",
  402. legs="Ignominy Flanchard +1",
  403. ring2="Acumen Ring",
  404. back="Argochampsa Mantle",
  405. feet="Ignominy Sollerets"
  406. })
  407. sets.precast.WS['Sanguine Blade'].Mid = set_combine(sets.precast.WS['Sanguine Blade'], sets.precast.WS.Mid)
  408. sets.precast.WS['Sanguine Blade'].Acc = set_combine(sets.precast.WS['Sanguine Blade'], sets.precast.WS.Acc)
  409. -- REQUISCAT
  410. -- 73% MND - breath damage
  411. sets.precast.WS.Requiescat = set_combine(sets.precast.WS, {
  412. head="Ighwa Cap",
  413. neck="Shadow Gorget",
  414. hands="Umuthi Gloves",
  415. body="Fallen's Cuirass +1",
  416. back="Bleating Mantle",
  417. waist="Soil Belt",
  418. feet="Whirlpool Greaves"
  419. })
  420. sets.precast.WS.Requiescat.Mid = set_combine(sets.precast.WS.Requiscat, sets.precast.WS.Mid)
  421. sets.precast.WS.Requiescat.Acc = set_combine(sets.precast.WS.Requiscat, sets.precast.WS.Acc)
  422. -- Resting sets
  423. sets.resting = {
  424. head="Twilight Helm",
  425. body="Ares' Cuirass +1",
  426. hands="Cizin Mufflers +1",
  427. ring1="Dark Ring",
  428. ring2="Paguroidea Ring",
  429. legs="Crimson Cuisses"
  430. }
  431. -- Idle sets
  432. sets.idle.Town = {
  433. ammo="Ginsen",
  434. head="Yaoyotl Helm",
  435. neck="Ganesha's Mala",
  436. ear1="Zennaroi Earring",
  437. ear2="Trux Earring",
  438. body="Acro Surcoat",
  439. hands="Ignominy Gauntlets +1",
  440. ring1="Rajas Ring",
  441. ring2="Ifrit Ring +1",
  442. back={name="Niht Mantle", augments={'Attack +15','"Drain" and "Aspir" potency +10', 'Weapon skill damage +3%'}},
  443. waist="Windbuffet Belt +1",
  444. legs="Crimson Cuisses",
  445. feet="Acro Leggings"
  446. }
  447. sets.cool = set_combine(sets.idle.Town, {
  448. head="Otomi Helm",
  449. hands="Ignominy Gauntlets +1",
  450. legs="Scuffler's Cosciales",
  451. feet="Xaddi Boots"
  452. })
  453. sets.idle.Field = set_combine(sets.idle.Town, {
  454. ammo="Ginsen",
  455. head="Twilight Helm",
  456. neck="Coatl Gorget +1",
  457. ear1="Black Earring",
  458. body="Ares' Cuirass +1",
  459. hands="Cizin Mufflers +1",
  460. ring1="Sheltered Ring",
  461. ring2="Paguroidea Ring",
  462. back="Engulfer Cape +1",
  463. waist="Flume Belt",
  464. legs="Crimson Cuisses",
  465. feet="Cizin Greaves +1"
  466. })
  467. sets.idle.Regen = set_combine(sets.idle.Field, {
  468. body="Kumarbi's Akar"
  469. })
  470. sets.idle.Weak = {
  471. head="Twilight Helm",
  472. neck="Coatl Gorget +1",
  473. body="Twilight Mail",
  474. ring1="Dark Ring",
  475. ring2="Paguroidea Ring",
  476. back="Repulse Mantle",
  477. waist="Windbuffet Belt +1",
  478. legs="Crimson Cuisses",
  479. feet="Cizin Greaves +1"
  480. }
  481. sets.refresh = {
  482. neck="Coatl Gorget +1",
  483. body="Ares' Cuirass +1"
  484. }
  485. -- Defense sets
  486. sets.defense.PDT = {
  487. head="Ighwa Cap",
  488. neck="Twilight Torque",
  489. body="Emet Harness +1",
  490. hands="Cizin Mufflers +1",
  491. ear1="Zennaroi Earring",
  492. ring1="Dark Ring",
  493. ring2="Defending Ring",
  494. back="Repulse Mantle",
  495. waist="Flume Belt",
  496. legs="Cizin Breeches +1",
  497. feet="Cizin Greaves +1"
  498. }
  499. sets.defense.Reraise = sets.idle.Weak
  500. sets.defense.MDT = set_combine(sets.defense.PDT, {
  501. neck="Twilight Torque",
  502. ear1="Zennaroi Earring",
  503. ring2="K'ayres Ring",
  504. back="Engulfer Cape +1"
  505. })
  506. sets.Kiting = {legs="Crimson Cuisses"}
  507. sets.Reraise = {head="Twilight Helm",body="Twilight Mail"}
  508. -- Defensive sets to combine with various weapon-specific sets below
  509. -- These allow hybrid acc/pdt sets for difficult content
  510. sets.Defensive = {
  511. head="Ighwa Cap",
  512. neck="Agitator's Collar",
  513. body="Emet Harness +1",
  514. hands="Cizin Mufflers +1",
  515. ring2="Patricius Ring",
  516. legs="Cizin Breeches +1"
  517. }
  518. sets.Defensive_Mid = {
  519. head="Ighwa Cap",
  520. neck="Agitator's Collar",
  521. body="Emet Harness +1",
  522. hands="Umuthi Gloves",
  523. ring2="Patricius Ring",
  524. }
  525. sets.Defensive_Acc = {
  526. head="Ighwa Cap",
  527. neck="Agitator's Collar",
  528. hands="Umuthi Gloves",
  529. body="Emet Harness +1",
  530. ring1="Mars's Ring",
  531. ring2="Patricius Ring",
  532. legs="Cizin Breeches +1",
  533. feet="Cizin Greaves +1"
  534. }
  535. -- Engaged set, assumes Liberator
  536. sets.engaged = {
  537. ammo="Ginsen",
  538. head="Acro Helm",
  539. neck="Ganesha's Mala",
  540. ear1="Brutal Earring",
  541. ear2="Tripudio Earring",
  542. body="Acro Surcoat",
  543. hands="Acro Gauntlets",
  544. ring1="Rajas Ring",
  545. ring2="K'ayres Ring",
  546. back="Bleating Mantle",
  547. waist="Windbuffet Belt +1",
  548. legs="Acro Breeches",
  549. feet={name="Acro Leggings", augments={'Accuracy+25','"Store TP"+6','Weapon skill damage +1%'}}
  550. }
  551. sets.engaged.Mid = set_combine(sets.engaged, {
  552. head="Yaoyotl Helm",
  553. ear1="Bladeborn Earring",
  554. ear2="Steelflash Earring",
  555. })
  556. sets.engaged.Acc = set_combine(sets.engaged.Mid, {
  557. head="Gavialis Helm",
  558. neck="Iqabi Necklace",
  559. ear1="Steelflash Earring",
  560. ear2="Zennaroi Earring",
  561. hands="Buremte Gloves",
  562. back="Kayapa Cape",
  563. ring1="Mars's Ring",
  564. ring2="Patricius Ring",
  565. waist="Olseni Belt"
  566. })
  567. sets.engaged.LR = set_combine(sets.engaged, {
  568. })
  569. sets.engaged.LR.AM3 = set_combine(sets.engaged.LR, {
  570. head="Yaoyotl Helm",
  571. ear2="Tripudio Earring"
  572. })
  573. sets.engaged.Mid.LR = set_combine(sets.engaged.Mid, {
  574. neck="Agitator's Collar",
  575. ring2="Patricius Ring"
  576. })
  577. sets.engaged.Acc.LR = set_combine(sets.engaged.Acc, {
  578. neck="Agitator's Collar",
  579. hands="Umuthi Gloves",
  580. ring1="Patricius Ring"
  581. })
  582. sets.engaged.PDT = set_combine(sets.engaged, sets.Defensive)
  583. sets.engaged.Mid.PDT = set_combine(sets.engaged.Mid, sets.Defensive_Mid)
  584. sets.engaged.Acc.PDT = set_combine(sets.engaged.Acc, sets.Defensive_Acc)
  585. sets.engaged.War = set_combine(sets.engaged, {
  586. ear1="Brutal Earring",
  587. ear2="Tripudio Earring",
  588. head="Yaoyotl Helm",
  589. legs="Xaddi Cuisses",
  590. feet="Mikinaak Greaves"
  591. })
  592. sets.engaged.War.Mid = set_combine(sets.engaged.War, {
  593. ear1="Bladeborn Earring",
  594. ear2="Steelflash Earring",
  595. legs="Xaddi Cuisses",
  596. feet="Ejekamal Boots"
  597. })
  598. sets.engaged.War.Acc = set_combine(sets.engaged.War.Mid, {
  599. neck="Iqabi Necklace",
  600. hands="Buremte Gloves",
  601. body="Mes'yohi Haubergeon",
  602. ring1="Mars's Ring",
  603. ring2="Patricius Ring",
  604. back="Kayapa Cape",
  605. waist="Olseni Belt",
  606. feet="Acro Leggings"
  607. })
  608. sets.engaged.War.PDT = set_combine(sets.engaged.War, sets.Defensive)
  609. sets.engaged.War.Mid.PDT = set_combine(sets.engaged.War.Mid, sets.Defensive_Mid)
  610. sets.engaged.War.Acc.PDT = set_combine(sets.engaged.War.Acc, sets.Defensive_Acc)
  611. sets.engaged.AM3 = set_combine(sets.engaged, {
  612. head="Yaoyotl Helm",
  613. body="Acro Surcoat",
  614. ear2="Tripudio Earring",
  615. hands="Cizin Mufflers +1",
  616. legs="Yorium Cuisses",
  617. feet="Ejekamal Boots"
  618. })
  619. sets.engaged.Mid.AM3 = set_combine(sets.engaged.AM3, {
  620. ear1="Zennaroi Earring",
  621. hands="Xaddi Gauntlets",
  622. feet="Acro Leggings"
  623. })
  624. sets.engaged.Acc.AM3 = set_combine(sets.engaged.Mid.AM3, {
  625. neck="Iqabi Necklace",
  626. ear1="Zennaroi Earring",
  627. ear2="Steelflash Earring",
  628. hands="Buremte Gloves",
  629. ring1="Rajas Ring",
  630. ring2="Mars's Ring",
  631. waist="Olseni Belt",
  632. feet="Acro Leggings"
  633. })
  634. sets.engaged.Reraise = set_combine(sets.engaged, {
  635. head="Twilight Helm",neck="Twilight Torque",
  636. body="Twilight Mail"
  637. })
  638. sets.buff.Souleater = { head="Ignominy burgeonet +1" }
  639. sets.buff['Last Resort'] = { feet="Fallen's Sollerets +1" }
  640. end
  641. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  642. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  643. function job_precast(spell, action, spellMap, eventArgs)
  644. aw_custom_aftermath_timers_precast(spell)
  645. --if spell.action_type == 'Magic' then
  646. -- equip(sets.precast.FC)
  647. --end
  648. end
  649. function job_post_precast(spell, action, spellMap, eventArgs)
  650. if spell.type:lower() == 'weaponskill' then
  651. if is_sc_element_today(spell) then
  652. equip(sets.WSDayBonus)
  653. end
  654. if state.CapacityMode.value then
  655. equip(sets.CapacityMantle)
  656. end
  657. --if world.day_element == 'Dark' then
  658. -- equip(sets.WSBack)
  659. --end
  660. end
  661. end
  662. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  663. function job_midcast(spell, action, spellMap, eventArgs)
  664. end
  665. -- Run after the default midcast() is done.
  666. -- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
  667. function job_post_midcast(spell, action, spellMap, eventArgs)
  668. if state.HybridMode.current == 'Reraise' or
  669. (state.HybridMode.current == 'Physical' and state.PhysicalDefenseMode.current == 'Reraise') then
  670. equip(sets.Reraise)
  671. end
  672. end
  673. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  674. function job_aftercast(spell, action, spellMap, eventArgs)
  675. aw_custom_aftermath_timers_aftercast(spell)
  676. if state.Buff[spell.english] ~= nil then
  677. state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
  678. end
  679. end
  680. function job_post_aftercast(spell, action, spellMap, eventArgs)
  681. if spell.type == 'WeaponSkill' then
  682. if state.Buff.Souleater and state.SouleaterMode.value then
  683. send_command('@wait 1.0;cancel souleater')
  684. end
  685. end
  686. end
  687. -------------------------------------------------------------------------------------------------------------------
  688. -- Customization hooks for idle and melee sets, after they've been automatically constructed.
  689. -------------------------------------------------------------------------------------------------------------------
  690. -- Called before the Include starts constructing melee/idle/resting sets.
  691. -- Can customize state or custom melee class values at this point.
  692. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  693. function job_handle_equipping_gear(status, eventArgs)
  694. end
  695. -- Modify the default idle set after it was constructed.
  696. function customize_idle_set(idleSet)
  697. if player.mpp < 50 then
  698. idleSet = set_combine(idleSet, sets.refresh)
  699. end
  700. if player.hpp < 90 then
  701. idleSet = set_combine(idleSet, sets.idle.Regen)
  702. end
  703. if state.HybridMode.current == 'PDT' then
  704. idleSet = set_combine(idleSet, sets.defense.PDT)
  705. end
  706. return idleSet
  707. end
  708. -- Modify the default melee set after it was constructed.
  709. function customize_melee_set(meleeSet)
  710. if state.CapacityMode.value then
  711. meleeSet = set_combine(meleeSet, sets.CapacityMantle)
  712. end
  713. if state.Buff['Last Resort'] and state.HybridMode.current == 'LR' then
  714. meleeSet = set_combine(meleeSet, sets.buff['Last Resort'])
  715. end
  716. if state.OffenseMode.current == 'Acc' then
  717. meleeSet = set_combine(meleeSet, select_ammo())
  718. end
  719. return meleeSet
  720. end
  721. -------------------------------------------------------------------------------------------------------------------
  722. -- General hooks for other events.
  723. -------------------------------------------------------------------------------------------------------------------
  724. -- Called when the player's status changes.
  725. function job_status_change(newStatus, oldStatus, eventArgs)
  726. if newStatus == "Engaged" then
  727. if buffactive['Last Resort'] and state.HybridMode.current == 'LR' then
  728. equip(sets.buff['Last Resort'])
  729. end
  730. --get_combat_weapon()
  731. end
  732. end
  733. -- Called when a player gains or loses a buff.
  734. -- buff == buff gained or lost
  735. -- gain == true if the buff was gained, false if it was lost.
  736. function job_buff_change(buff, gain)
  737. if state.Buff[buff] ~= nil then
  738. handle_equipping_gear(player.status)
  739. end
  740. if buff == "Max HP Boost" then
  741. if gain then
  742. state.SouleaterMode:set(false)
  743. else
  744. state.SouleaterMode:set(true)
  745. end
  746. end
  747. if buff == 'Blood Weapon' then
  748. if gain or buffactive['Blood Weapon'] then
  749. state.SouleaterMode:set(false)
  750. else
  751. state.SouleaterMode:set(true)
  752. end
  753. end
  754. if buff == 'Aftermath: Lv.3' then
  755. classes.CustomMeleeGroups:clear()
  756. if (buff == "Aftermath: Lv.3" and gain) or buffactive['Aftermath: Lv.3'] then
  757. classes.CustomMeleeGroups:append('AM3')
  758. end
  759. handle_equipping_gear(player.status)
  760. end
  761. if string.lower(buff) == "sleep" and gain and player.hp > 200 then
  762. equip(sets.Berserker)
  763. end
  764. -- Warp ring rule, for any buff being lost
  765. if S{'Warp', 'Vocation'}:contains(player.equipment.ring2) then
  766. if not buffactive['Dedication'] then
  767. disable('ring2')
  768. end
  769. else
  770. enable('ring2')
  771. end
  772. end
  773. -------------------------------------------------------------------------------------------------------------------
  774. -- User code that supplements self-commands.
  775. -------------------------------------------------------------------------------------------------------------------
  776. -- Called by the 'update' self-command, for common needs.
  777. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  778. function job_update(cmdParams, eventArgs)
  779. war_sj = player.sub_job == 'WAR' or false
  780. get_combat_form()
  781. update_melee_groups()
  782. end
  783. function get_custom_wsmode(spell, spellMap, default_wsmode)
  784. if state.OffenseMode.current == 'Mid' then
  785. if buffactive['Aftermath: Lv.3'] then
  786. return 'AM3Mid'
  787. end
  788. elseif state.OffenseMode.current == 'Acc' then
  789. if buffactive['Aftermath: Lv.3'] then
  790. return 'AM3Acc'
  791. end
  792. else
  793. if buffactive['Aftermath: Lv.3'] then
  794. return 'AM3'
  795. end
  796. end
  797. end
  798. -------------------------------------------------------------------------------------------------------------------
  799. -- Utility functions specific to this job.
  800. -------------------------------------------------------------------------------------------------------------------
  801. function get_combat_form()
  802. if war_sj then
  803. state.CombatForm:set("War")
  804. else
  805. state.CombatForm:reset()
  806. end
  807. end
  808. function aw_custom_aftermath_timers_precast(spell)
  809. if spell.type == 'WeaponSkill' then
  810. info.aftermath = {}
  811. local mythic_ws = "Insurgency"
  812. info.aftermath.weaponskill = mythic_ws
  813. info.aftermath.duration = 0
  814. info.aftermath.level = math.floor(player.tp / 1000)
  815. if info.aftermath.level == 0 then
  816. info.aftermath.level = 1
  817. end
  818. if spell.english == mythic_ws and player.equipment.main == 'Liberator' then
  819. -- nothing can overwrite lvl 3
  820. if buffactive['Aftermath: Lv.3'] then
  821. return
  822. end
  823. -- only lvl 3 can overwrite lvl 2
  824. if info.aftermath.level ~= 3 and buffactive['Aftermath: Lv.2'] then
  825. return
  826. end
  827. if info.aftermath.level == 1 then
  828. info.aftermath.duration = 90
  829. elseif info.aftermath.level == 2 then
  830. info.aftermath.duration = 120
  831. else
  832. info.aftermath.duration = 180
  833. end
  834. end
  835. end
  836. end
  837. -- Call from job_aftercast() to create the custom aftermath timer.
  838. function aw_custom_aftermath_timers_aftercast(spell)
  839. if not spell.interrupted and spell.type == 'WeaponSkill' and
  840. info.aftermath and info.aftermath.weaponskill == spell.english and info.aftermath.duration > 0 then
  841. local aftermath_name = 'Aftermath: Lv.'..tostring(info.aftermath.level)
  842. send_command('timers d "Aftermath: Lv.1"')
  843. send_command('timers d "Aftermath: Lv.2"')
  844. send_command('timers d "Aftermath: Lv.3"')
  845. send_command('timers c "'..aftermath_name..'" '..tostring(info.aftermath.duration)..' down abilities/aftermath'..tostring(info.aftermath.level)..'.png')
  846. info.aftermath = {}
  847. end
  848. end
  849. -- Handle notifications of general user state change.
  850. function job_state_change(stateField, newValue, oldValue)
  851. if stateField == 'Look Cool' then
  852. if newValue == 'On' then
  853. send_command('gs equip sets.cool;wait 1.2;input /lockstyle on;wait 1.2;gs c update user')
  854. --send_command('wait 1.2;gs c update user')
  855. else
  856. send_command('@input /lockstyle off')
  857. end
  858. end
  859. end
  860. windower.register_event('Zone change', function(new,old)
  861. if state.LookCool.value == 'On' then
  862. send_command('wait 3; gs equip sets.cool;wait 1.2;input /lockstyle on;wait 1.2;gs c update user')
  863. end
  864. end)
  865. function select_ammo()
  866. if world.time >= (18*60) or world.time <= (6*60) then
  867. return sets.NightAmmo
  868. else
  869. return sets.DayAmmo
  870. end
  871. end
  872. --function adjust_melee_groups()
  873. -- classes.CustomMeleeGroups:clear()
  874. -- if state.Buff.Aftermath then
  875. -- classes.CustomMeleeGroups:append('AM')
  876. -- end
  877. --end
  878. function update_melee_groups()
  879. classes.CustomMeleeGroups:clear()
  880. if buffactive['Aftermath: Lv.3'] then
  881. classes.CustomMeleeGroups:append('AM3')
  882. end
  883. end
  884.  
  885. function select_default_macro_book()
  886. -- Default macro set/book
  887. if player.sub_job == 'DNC' then
  888. set_macro_page(1, 2)
  889. elseif player.sub_job == 'SAM' then
  890. set_macro_page(1, 2)
  891. else
  892. set_macro_page(1, 2)
  893. end
  894. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement