Advertisement
Guest User

Blu.lua

a guest
Apr 4th, 2024
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 70.25 KB | None | 0 0
  1. --"Basic" BLU.lua--
  2.  
  3. ---Make sure you rename it after your character name, for example xXSephirothFanBoiXx.lua
  4.  
  5. --Basic-ally lacks Auto DW or a dedicated DW mode, and has no AM3 rules. Some other things were removed.
  6. ---Not that basic really, but it removes layers upon layers to read.
  7. ----Anything more basic than this and I am just ripping out the DT mode and sticking it in the TP array.
  8.  
  9. ----------------------
  10. --BUG WARNING--
  11. ----------------------
  12.  
  13. --I basically took my gearswap lua, ripped a lot of things out. Did some minor testing to make sure things work, and then put it on the interwebz.
  14. --So, there is a chance of a bug, especially in the most basic version. So please message me either in game, discord, the BG forums (PM works there too), reddit, etc. If you try, you will find me.
  15. ---Oh, but not AH.com, that won't work.
  16. ----------------------
  17.  
  18. ---Thanks to various sources such as LS members and BlueGartr for the help building this GearSwap.
  19.  
  20. -------------------------------------
  21. --------- ---------
  22. ------ ------
  23. --- Start of Gear ---
  24. ------ ------
  25. --------- ---------
  26. -------------------------------------
  27.  
  28. --//gs export, go to the export folder in your Windower addon gearswap folder, add it here, call it as seen in sets below.--
  29.  
  30. function get_sets()
  31. maps()
  32.  
  33. AdhemarJacket = {}
  34. AdhemarJacket.Accuracy = { name="Adhemar Jacket +1", augments={'DEX+12','AGI+12','Accuracy+20',}}
  35. AdhemarJacket.Attack = { name="Adhemar Jacket +1", augments={'STR+12','DEX+12','Attack+20',}}
  36. AdhemarJacket.FC = { name="Adhemar Jacket +1", augments={'HP+105','"Fast Cast"+10','Magic dmg. taken -4',}}
  37.  
  38. HerculeanHelm = {}
  39. HerculeanHelm.Nuke = { name = "Herculean Helm", augments = { 'Mag. Acc.+18 "Mag.Atk.Bns."+18','"Fast Cast"+1','INT+9','Mag. Acc.+9','"Mag.Atk.Bns."+12', } }
  40. HerculeanHelm.DT = { name = "Herculean Helm", augments = { 'Attack+12', 'Phys. dmg. taken -4%', 'STR+9', 'Accuracy+8', } }
  41. HerculeanHelm.Refresh = { name="Herculean Helm", augments={'AGI+9','DEX+8','"Refresh"+2','Mag. Acc.+3 "Mag.Atk.Bns."+3',}}
  42. HerculeanHelm.WSD = { name = "Herculean Helm", augments = { 'Accuracy+15','STR+11','Weapon skill damage +7%' } }
  43.  
  44. HerculeanVest = {}
  45. HerculeanVest.Phalanx = { name="Herculean Vest", augments = {'Chance of successful block +3','Pet: Attack+4 Pet: Rng.Atk.+4','Phalanx +5','Mag. Acc.+10 "Mag.Atk.Bns."+10',}}
  46.  
  47. TaeonBody = {}
  48. TaeonBody.FC = { name="Taeon Tabard", augments = {'Accuracy+23','"Fast Cast"+5','HP+36',} }
  49. TaeonBody.SIR = {name="Taeon Tabard", augments = {'Spell interruption rate down -8%','STR+7 VIT+7'} }
  50.  
  51. AdhemarWrists = {}
  52. AdhemarWrists.Attack = { name="Adhemar Wrist. +1", augments = {'STR+12','DEX+12','Attack+20',} }
  53. AdhemarWrists.Accuracy = { name="Adhemar Wrist. +1", augments={'DEX+12','AGI+12','Accuracy+20',} }
  54.  
  55. HerculeanGloves = {}
  56. HerculeanGloves.WSD = { name = "Herculean Gloves", augments = { 'Accuracy+21 Attack+21', 'Weapon skill damage +4%', 'Accuracy+9', 'Attack+10', } }
  57. HerculeanGloves.DT = { name = "Herculean Gloves", augments = { 'Accuracy+13', 'Damage taken-3%', 'AGI+1', 'Attack+5', } }
  58. HerculeanGloves.Refresh = { name = "Herculean Gloves", augments = { 'Spell interruption rate down -1%','"Repair" potency +4%','"Refresh"+2','Accuracy+9 Attack+9','Mag. Acc.+16 "Mag.Atk.Bns."+16', } }
  59. HerculeanGloves.Crit = { name = "Herculean Gloves", augments = { 'Attack+23', 'Crit. hit damage +4%', 'DEX+8', 'Accuracy+11', } }
  60. HerculeanGloves.Phalanx = { name="Herculean Gloves", augments={'INT+5','Pet: "Dbl. Atk."+3','Phalanx +4',}}
  61. HerculeanGloves.PhysicalSpells = { name="Herculean Gloves", augments={'Accuracy+11 Attack+11','"Triple Atk."+2','STR+10','Accuracy+15','Attack+5', } }
  62.  
  63. HerculeanLegs = {}
  64. HerculeanLegs.TH = { name = "Herculean Trousers", augments = { 'INT+5','MND+6','"Treasure Hunter"+1','Mag. Acc.+17 "Mag.Atk.Bns."+17', } }
  65.  
  66. HerculeanFeet = {}
  67. HerculeanFeet.QA = { name = "Herculean Boots", augments = { 'Enmity-2','Crit.hit rate+1','Quadruple Attack +3','Accuracy+20 Attack+20','Mag. Acc.+16 "Mag.Atk.Bns."+16', } }
  68. HerculeanFeet.Idle = { name = "Herculean Boots", augments = { 'Crit. hit damage +1%','STR+10','"Refresh"+2','Accuracy+15 Attack+15','Mag. Acc.+17 "Mag.Atk.Bns."+17', } }
  69. HerculeanFeet.WSD = { name = "Herculean Boots", augments = { 'INT+3','AGI+5','Weapon skill damage +9%','Accuracy+12 Attack+12','Mag. Acc.+13 "Mag.Atk.Bns."+13'} }
  70. HerculeanFeet.DW = { name = "Herculean Boots", augments = { 'Accuracy+22 Attack+22','"Dual Wield"+4','DEX+5','Accuracy+6', } }
  71. HerculeanFeet.Phalanx = { name = "Herculean Boots", augments = { '"Store TP"+1','INT+10','Phalanx +3','Accuracy+16 Attack+16','Mag. Acc.+19 "Mag.Atk.Bns."+19' } }
  72. HerculeanFeet.TH = { name="Herculean Boots", augments = { 'Phys. dmg. taken -2%','Pet: Phys. dmg. taken -2%','"Treasure Hunter"+2','Accuracy+16 Attack+16','Mag. Acc.+18 "Mag.Atk.Bns."+18', } }
  73.  
  74. Rosmerta = {}
  75. Rosmerta.Crit = { name = "Rosmerta's Cape", augments = { 'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10', } }
  76. Rosmerta.WSD = { name = "Rosmerta's Cape", augments = { 'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%', } }
  77. Rosmerta.STP = { name = "Rosmerta's Cape", augments = { 'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Phys. dmg. taken-10%', } }
  78. Rosmerta.DA = { name = "Rosmerta's Cape", augments = { 'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%', } }
  79. Rosmerta.DW = { name = "Rosmerta's Cape", augments = { 'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10','Phys. dmg. taken-10%', } }
  80. Rosmerta.Nuke = { name = "Rosmerta's Cape", augments = { 'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10', } }
  81. Rosmerta.Cure = { name = "Rosmerta's Cape", augments = { 'MND+20','Eva.+20 /Mag. Eva.+20','MND+10','"Cure" potency +10%','Phys. dmg. taken-10%', } }
  82. Rosmerta.MagicEva = { name = "Rosmerta's Cape", augments = { 'INT+20','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Haste+10','Mag. Evasion+15' } }
  83.  
  84. sets.Idle = {}
  85. --Idle Sets--
  86. sets.Idle.index = { 'Standard', 'DTRefresh', 'DT' }
  87. Idle_ind = 1
  88. sets.Idle.Standard = {
  89. ammo="Staunch Tathlum",
  90. head={ name="Herculean Helm", augments={'AGI+9','DEX+8','"Refresh"+2','Mag. Acc.+3 "Mag.Atk.Bns."+3',}},
  91. body="Jhakri Robe +2",
  92. hands="Malignance Gloves",
  93. legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6',}},
  94. feet="Malignance Boots",
  95. neck="Sanctity Necklace",
  96. waist="Fucho-no-Obi",
  97. left_ear="Ethereal Earring",
  98. right_ear="Eabani Earring",
  99. left_ring="Defending Ring",
  100. right_ring="Warp Ring",
  101. back={ name="Rosmerta's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dual Wield"+10','Damage taken-5%',}},
  102. }
  103.  
  104. sets.Idle.DTRefresh = {
  105. ammo = "Staunch Tathlum +1",
  106. head = HerculeanHelm.Refresh,
  107. neck = "Loricate Torque +1",
  108. ear1 = "Eabani Earring",
  109. ear2 = "Etiolation Earring",
  110. body = "Jhakri Robe +2",
  111. hands = "Assimilator's Bazubands +3",
  112. ring1 = "Defending ring",
  113. ring2 = "Gelatinous Ring +1",
  114. back = Rosmerta.Cure,
  115. waist = "Flume belt",
  116. legs = "Carmine Cuisses +1",
  117. feet = HerculeanFeet.Idle
  118. }
  119.  
  120. sets.Idle.DT = {
  121. ammo = "Staunch Tathlum +1",
  122. head = "Malignance Chapeau",
  123. neck = "Warder's Charm +1",
  124. ear1 = "Eabani Earring",
  125. ear2 = "Etiolation Earring",
  126. body = "Malignance Tabard",
  127. hands = "Malignance Gloves",
  128. ring1 = "Defending ring",
  129. ring2 = "Shadow Ring",
  130. back = Rosmerta.Cure,
  131. waist = "Flume belt",
  132. legs = "Malignance Tights",
  133. feet = "Malignance Boots"
  134. }
  135.  
  136. sets.Idle.Town = set_combine(sets.Idle.Standard, {
  137. body = "Councilor's Garb",
  138. })
  139.  
  140. --TP Sets--
  141. sets.TP = {}
  142. sets.TP.index = {'DualWield', 'CapHaste', 'AccuracyMid', 'AccuracyFull' }
  143. TP_ind = 1 --Default set, is Capped Haste, 2, to change this default set the ind to 1 for DW, etc
  144.  
  145. --DW III, +31 DW needed to cap with only Flutter on--
  146. sets.TP.DualWield = {
  147. ammo="Ginsen",
  148. head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},
  149. body="Ayanmo Corazza +2",
  150. hands={ name="Adhemar Wristbands", augments={'STR+10','DEX+10','Attack+15',}},
  151. legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6',}},
  152. feet="Malignance Boots",
  153. neck="Sanctity Necklace",
  154. waist="Sailfi Belt +1",
  155. left_ear="Telos Earring",
  156. right_ear="Suppanomimi",
  157. left_ring="Petrov Ring",
  158. right_ring="Epona's Ring",
  159. back={ name="Rosmerta's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dual Wield"+10','Damage taken-5%',}},
  160. }
  161.  
  162. --+11 DW for capping with DW3 and capped magic haste--
  163. sets.TP.CapHaste = {
  164. ammo="Ginsen",
  165. head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},
  166. body="Ayanmo Corazza +2",
  167. hands={ name="Adhemar Wristbands", augments={'STR+10','DEX+10','Attack+15',}},
  168. legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6',}},
  169. feet="Malignance Boots",
  170. neck="Sanctity Necklace",
  171. waist="Sailfi Belt +1",
  172. left_ear="Eabani Earring",
  173. right_ear="Suppanomimi",
  174. left_ring="Petrov Ring",
  175. right_ring="Epona's Ring",
  176. back={ name="Rosmerta's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Damage taken-5%',}},
  177. }
  178.  
  179. sets.TP.AccuracyMid = {
  180. ammo = "Falcon Eye",
  181. head = "Dampening Tam",
  182. neck = "Mirage Stole +2",
  183. ear1 = "Cessance Earring",
  184. ear1 = "Suppanomimi",
  185. ear2 = "Telos earring",
  186. body = AdhemarJacket.Accuracy,
  187. hands = AdhemarWrists.Accuracy,
  188. ring1 = "Epona's ring",
  189. ring2 = "Ilabrat Ring",
  190. back = Rosmerta.DA,
  191. waist = "Kentarch Belt +1",
  192. legs = "Samnuha Tights",
  193. feet = HerculeanFeet.QA
  194. }
  195.  
  196. sets.TP.AccuracyFull = {
  197. ammo = "Falcon Eye",
  198. head = "Carmine Mask +1",
  199. neck = "Mirage Stole +2",
  200. ear1 = "Mache Earring +1",
  201. ear2 = "Telos earring",
  202. body = AdhemarJacket.Accuracy,
  203. hands = AdhemarWrists.Accuracy,
  204. ring1 = "Epona's Ring",
  205. ring2 = "Ilabrat Ring",
  206. back = Rosmerta.DA,
  207. waist = "Kentarch Belt +1",
  208. legs = "Carmine Cuisses +1",
  209. feet = "Assim. Charuqs +3"
  210. }
  211.  
  212. --DT Sets--
  213. sets.DT = {}
  214. sets.DT.index = { 'DT', 'Hybrid', 'MDT' }
  215. DT_ind = 1
  216.  
  217. sets.DT.DT = {
  218. ammo="Ginsen",
  219. head="Malignance Chapeau",
  220. body="Ayanmo Corazza +2",
  221. hands="Malignance Gloves",
  222. legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6',}},
  223. feet="Malignance Boots",
  224. neck="Sanctity Necklace",
  225. waist="Sailfi Belt +1",
  226. left_ear="Telos Earring",
  227. right_ear="Eabani Earring",
  228. left_ring="Defending Ring",
  229. right_ring="Epona's Ring",
  230. back={ name="Rosmerta's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dual Wield"+10','Damage taken-5%',}},
  231. }
  232.  
  233. sets.DT.Hybrid = {
  234. ammo = "Aurgelmir Orb",
  235. head = "Adhemar Bonnet +1",
  236. neck = "Mirage Stole +2",
  237. ear1 = "Suppanomimi",
  238. ear2 = "Telos Earring",
  239. body = AdhemarJacket.Accuracy,
  240. hands = "Malignance Gloves",
  241. ring2 = "Defending ring",
  242. ring1 = "Epona's Ring",
  243. back = Rosmerta.DA,
  244. waist = "Windbuffet Belt +1",
  245. legs = "Malignance Tights",
  246. feet = HerculeanFeet.QA
  247. }
  248.  
  249. --Shell V on. Need 21% MDT, 19% with sheltered.
  250. sets.DT.MDT= {
  251. ammo = "Staunch Tathlum +1",
  252. head = "Malignance Chapeau",
  253. neck = "Warder's Charm +1",
  254. ear1 = "Eabani Earring",
  255. ear2 = "Etiolation Earring",
  256. body = "Malignance Tabard",
  257. hands = "Malignance Gloves",
  258. ring2 = "Purity Ring",
  259. ring1 = "Shadow Ring",
  260. back = Rosmerta.MagicEva,
  261. waist = "Carrier's Sash",
  262. legs = "Malignance Tights",
  263. feet = "Malignance Boots"
  264. }
  265.  
  266. --Weaponskill Sets--
  267. sets.WS = {}
  268.  
  269. sets.Requiescat = {}
  270.  
  271. sets.Requiescat.index = { 'Attack', 'Accuracy' }
  272. Requiescat_ind = 1
  273.  
  274. sets.Requiescat.Attack = {
  275. ammo = "Hydrocera",
  276. head = "Luhlaza Keffiyeh +3",
  277. neck = "Fotia Gorget",
  278. ear1 = "Regal Earring",
  279. ear2 = "Brutal Earring",
  280. body = "Luhlaza Jubbah +3",
  281. hands = AdhemarWrists.Attack,
  282. ring1 = "Epona's ring",
  283. ring2 = "Rufescent Ring",
  284. back = Rosmerta.WSD,
  285. waist = "Fotia Belt",
  286. legs = "Luhlaza Shalwar +3",
  287. feet = "Luhlaza Charuqs +3"
  288. }
  289.  
  290. sets.Requiescat.Accuracy = {
  291. ammo = "Falcon Eye",
  292. head = "Carmine Mask +1",
  293. neck = "Fotia Gorget",
  294. ear1 = "Regal Earring",
  295. ear2 = "Brutal Earring",
  296. body = "Jhakri Robe +2",
  297. hands = "Assimilator's Bazubands +3",
  298. ring1 = "Epona's ring",
  299. ring2 = "Rufescent Ring",
  300. back = Rosmerta.DA,
  301. waist = "Fotia Belt",
  302. legs = "Luhlaza Shalwar +3",
  303. feet = "Assim. Charuqs +3"
  304. }
  305.  
  306. sets.CDC = {}
  307.  
  308. sets.CDC.index = { 'Attack', 'Accuracy' }
  309. CDC_ind = 1
  310.  
  311. sets.CDC.AttackUncap = {
  312. ammo="Jukukik Feather",
  313. head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},
  314. body="Ayanmo Corazza +2",
  315. hands="Jhakri Cuffs +2",
  316. legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  317. feet={ name="Herculean Boots", augments={'Attack+17','"Triple Atk."+4','Accuracy+14',}},
  318. neck="Fotia Gorget",
  319. waist="Fotia Belt",
  320. left_ear="Mache Earring",
  321. right_ear="Odr Earring",
  322. left_ring="Epona's Ring",
  323. right_ring="Rufescent Ring",
  324. back={ name="Rosmerta's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}},
  325. }
  326.  
  327. sets.CDC.Accuracy = {
  328. ammo="Jukukik Feather",
  329. head={ name="Adhemar Bonnet", augments={'STR+10','DEX+10','Attack+15',}},
  330. body="Ayanmo Corazza +2",
  331. hands="Jhakri Cuffs +2",
  332. legs={ name="Samnuha Tights", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
  333. feet={ name="Herculean Boots", augments={'Attack+17','"Triple Atk."+4','Accuracy+14',}},
  334. neck="Fotia Gorget",
  335. waist="Fotia Belt",
  336. left_ear="Mache Earring",
  337. right_ear="Odr Earring",
  338. left_ring="Epona's Ring",
  339. right_ring="Rufescent Ring",
  340. back={ name="Rosmerta's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10',}},
  341. }
  342.  
  343. sets.Expiacion = {}
  344.  
  345. sets.Expiacion.index = { 'Attack', 'Accuracy' }
  346. Expiacion_ind = 1
  347.  
  348. sets.Expiacion.Attack = {
  349. ammo="Floestone",
  350. head="Aya. Zucchetto +2",
  351. body="Ayanmo Corazza +2",
  352. hands="Jhakri Cuffs +2",
  353. legs="Aya. Cosciales +1",
  354. feet="Aya. Gambieras +2",
  355. neck="Sanctity Necklace",
  356. waist="Sailfi Belt +1",
  357. left_ear="Ishvara Earring",
  358. right_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  359. left_ring="Ifrit Ring",
  360. right_ring="Rufescent Ring",
  361. back={ name="Rosmerta's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+5','Weapon skill damage +10%',}},
  362. }
  363.  
  364. sets.Expiacion.Accuracy = {
  365. --ammo = "Falcon Eye",
  366. ammo="Floestone",
  367. head="Aya. Zucchetto +2",
  368. body="Ayanmo Corazza +2",
  369. hands="Jhakri Cuffs +2",
  370. legs="Aya. Cosciales +1",
  371. feet="Aya. Gambieras +2",
  372. neck="Sanctity Necklace",
  373. waist="Sailfi Belt +1",
  374. left_ear="Ishvara Earring",
  375. right_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  376. left_ring="Ifrit Ring",
  377. right_ring="Rufescent Ring",
  378. back={ name="Rosmerta's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+5','Weapon skill damage +10%',}},
  379. }
  380.  
  381. sets.SanguineBlade = {
  382. ammo = "Pemphredo Tathlum",
  383. head = "Pixie Hairpin +1",
  384. neck = "Baetyl Pendant",
  385. ear1 = "Regal Earring",
  386. ear2 = "Friomisi Earring",
  387. body = "Jhakri Robe +2",
  388. hands = "Jhakri Cuffs +2",
  389. ring1 = "Archon Ring",
  390. ring2 = "Shiva Ring +1",
  391. back = Rosmerta.Nuke,
  392. waist = "Sacro Cord",
  393. legs = "Luhlaza Shalwar +3",
  394. feet = "Amalric Nails +1"
  395. }
  396.  
  397. -----------
  398. --Clubs-- These indexs probably will never need to be toggled,
  399. ----------- but they exist anyway
  400. sets.Judgment = {}
  401.  
  402. sets.Judgment.index = { 'Attack', 'Accuracy' }
  403. Judgment_ind = 1
  404.  
  405. sets.Judgment.Attack = set_combine(sets.Expiacion.Attack, {})
  406.  
  407. sets.Judgment.Accuracy = set_combine(sets.Expiacion.Accuracy, {})
  408.  
  409. sets.BlackHalo = {}
  410.  
  411. sets.BlackHalo.index = { 'Attack', 'Accuracy' }
  412. BlackHalo_ind = 1
  413. sets.BlackHalo.Attack = {
  414. ammo = "Aurgelmir Orb",
  415. head = HerculeanHelm.WSD,
  416. neck = "Mirage Stole +2",
  417. ear1 = "Moonshade Earring",
  418. ear2 = "Regal Earring",
  419. body = "Assim. Jubbah +3",
  420. hands = "Jhakri Cuffs +2",
  421. ring1 = "Rufescent Ring",
  422. ring2 = "Karieyh Ring +1",
  423. back = Rosmerta.WSD,
  424. waist = "Sailfi Belt +1",
  425. legs = "Luhlaza Shalwar +3",
  426. feet = HerculeanFeet.WSD
  427. }
  428.  
  429. sets.BlackHalo.Accuracy = set_combine(sets.BlackHalo.Attack, {})
  430.  
  431. sets.Realmrazer = {}
  432.  
  433. sets.Realmrazer.index = { 'Attack', 'Accuracy' }
  434. Realmrazer_ind = 1
  435. sets.Realmrazer.Attack = {
  436. ammo = "Hydrocera",
  437. head = "Luhlaza Keffiyeh +3",
  438. neck = "Fotia Gorget",
  439. ear1 = "Regal Earring",
  440. ear2 = "Telos Earring",
  441. body = "Luhlaza Jubbah +3",
  442. hands = "Jhakri Cuffs +2",
  443. ring1 = "Stikini Ring +1",
  444. ring2 = "Rufescent Ring",
  445. back = Rosmerta.WSD,
  446. waist = "Fotia Belt",
  447. legs = "Luhlaza Shalwar +3",
  448. feet = "Luhlaza Charuqs +3"
  449. }
  450.  
  451. sets.Realmrazer.Accuracy = set_combine(sets.Realmrazer.Attack, {})
  452.  
  453. sets.FlashNova = {
  454. ammo = "Pemphredo Tathlum",
  455. head = "Jhakri Coronal +2",
  456. neck = "Baetyl Pendant",
  457. ear1 = "Regal Earring",
  458. ear2 = "Friomisi Earring",
  459. body = "Jhakri Robe +2",
  460. hands = "Jhakri Cuffs +2",
  461. ring1 = "Shiva Ring +1",
  462. ring2 = "Metamorph Ring +1",
  463. back = Rosmerta.Nuke,
  464. waist = "Sacro Cord",
  465. legs = "Luhlaza Shalwar +3",
  466. feet = "Amalric Nails +1"
  467. }
  468.  
  469. -------------------
  470. --Blue Magic Sets--
  471. -------------------
  472. sets.BlueMagic = {}
  473.  
  474. sets.BlueMagic.STR = {
  475. ammo = "Aurgelmir Orb",
  476. head = HerculeanHelm.WSD,
  477. neck = "Mirage Stole +2",
  478. ear1 = "Mache Earring +1",
  479. ear2 = "Odnowa Earring +1",
  480. body = "Assim. Jubbah +3",
  481. hands = AdhemarWrists.Attack,
  482. ring1 = "Ifrit Ring +1",
  483. ring2 = "Shukuyu Ring",
  484. back = Rosmerta.WSD,
  485. waist = "Sailfi Belt +1",
  486. legs = HerculeanLegs.WSD,
  487. feet = "Luhlaza Charuqs +3"
  488. }
  489.  
  490. sets.BlueMagic.STRDEX = set_combine(sets.BlueMagic.STR, {})
  491.  
  492. sets.BlueMagic.STRVIT = set_combine(sets.BlueMagic.STR, {})
  493.  
  494. sets.BlueMagic.STRMND = set_combine(sets.BlueMagic.STR, {})
  495.  
  496. sets.BlueMagic.AGI = set_combine(sets.BlueMagic.STR, {})
  497. --------------------------------------------------
  498. sets.BlueMagic.INT = {}
  499. sets.BlueMagic.INT.index = { "MAB", "MACC", "EffectOnly" }
  500. MAB_ind = 1
  501.  
  502. sets.BlueMagic.INT.MAB = {
  503. ammo = "Pemphredo Tathlum",
  504. head = HerculeanHelm.Nuke,
  505. neck = "Baetyl Pendant",
  506. ear1 = "Regal Earring",
  507. ear2 = "Friomisi Earring",
  508. body = "Amalric Doublet +1",
  509. hands = "Amalric Gages +1",
  510. ring1 = "Shiva Ring +1",
  511. ring2 = "Metamorph Ring +1", --Keep higher stat ring as Ring2, Ring 1 for tenebral becomes Archon. Thinking of BA damage.
  512. back = Rosmerta.Nuke,
  513. waist = "Sacro Cord",
  514. legs = "Luhlaza Shalwar +3",
  515. feet = "Amalric Nails +1"
  516. }
  517.  
  518. sets.BlueMagic.INT.MACC = {
  519. ammo = "Pemphredo Tathlum",
  520. head = "Assim. Keffiyeh +3",
  521. neck = "Mirage Stole +2",
  522. ear1 = "Regal Earring",
  523. ear2 = "Hermetic Earring",
  524. body = "Amalric Doublet +1",
  525. hands = "Amalric Gages +1",
  526. ring1 = "Shiva Ring +1",
  527. ring2 = "Metamorph Ring +1",
  528. back = Rosmerta.Nuke,
  529. waist = "Sacro Cord",
  530. legs = "Luhlaza Shalwar +3",
  531. feet = "Jhakri Pigaches +2"
  532. }
  533.  
  534. sets.BlueMagic.INT.EffectOnly = {
  535. ammo = "Pemphredo Tathlum",
  536. head = "Assim. Keffiyeh +3",
  537. neck = "Mirage Stole +2",
  538. ear1 = "Regal Earring",
  539. ear2 = "Dignitary's Earring",
  540. body = "Amalric Doublet +1",
  541. hands = "Amalric Gages +1",
  542. ring1 = "Stikini Ring +1",
  543. ring2 = "Metamorph Ring +1",
  544. back = Rosmerta.Nuke,
  545. waist = "Sacro Cord",
  546. legs = "Luhlaza Shalwar +3",
  547. feet = "Jhakri Pigaches +2"
  548. }
  549. -----------------------------------------
  550.  
  551. --CP cap 50%, CP Received cap 30%--
  552. sets.BlueMagic.Cures = {
  553. ammo="Hydrocera",
  554. head={ name="Telchine Cap", augments={'Pet: "Regen"+3','Pet: Damage taken -4%',}},
  555. body={ name="Luhlaza Jubbah", augments={'Enhances "Enchainment" effect',}},
  556. hands={ name="Telchine Gloves", augments={'Pet: "Regen"+3','Pet: Damage taken -1%',}},
  557. legs="Gyve Trousers",
  558. feet={ name="Medium's Sabots", augments={'MP+35','MND+7','"Cure" potency +1%',}},
  559. neck="Nuna Gorget",
  560. waist="Salire Belt",
  561. left_ear="Mendi. Earring",
  562. right_ear="Eabani Earring",
  563. left_ring="Stikini Ring",
  564. right_ring="Lebeche Ring",
  565. back="Pahtli Cape",
  566. }
  567.  
  568. sets.BlueMagic.SelfCures = {
  569. ammo="Hydrocera",
  570. head={ name="Telchine Cap", augments={'Pet: "Regen"+3','Pet: Damage taken -4%',}},
  571. body={ name="Luhlaza Jubbah", augments={'Enhances "Enchainment" effect',}},
  572. hands={ name="Telchine Gloves", augments={'Pet: "Regen"+3','Pet: Damage taken -1%',}},
  573. legs="Gyve Trousers",
  574. feet={ name="Medium's Sabots", augments={'MP+35','MND+7','"Cure" potency +1%',}},
  575. neck="Nuna Gorget",
  576. waist="Salire Belt",
  577. left_ear="Mendi. Earring",
  578. right_ear="Eabani Earring",
  579. left_ring="Stikini Ring",
  580. right_ring="Lebeche Ring",
  581. back="Pahtli Cape",
  582. }
  583.  
  584. sets.BlueMagic.WhiteWind = {
  585. ammo="Hydrocera",
  586. head={ name="Telchine Cap", augments={'Pet: "Regen"+3','Pet: Damage taken -4%',}},
  587. body={ name="Luhlaza Jubbah", augments={'Enhances "Enchainment" effect',}},
  588. hands={ name="Telchine Gloves", augments={'Pet: "Regen"+3','Pet: Damage taken -1%',}},
  589. legs="Gyve Trousers",
  590. feet={ name="Medium's Sabots", augments={'MP+35','MND+7','"Cure" potency +1%',}},
  591. neck="Nuna Gorget",
  592. waist="Salire Belt",
  593. left_ear="Mendi. Earring",
  594. right_ear="Eabani Earring",
  595. left_ring="Stikini Ring",
  596. right_ring="Lebeche Ring",
  597. back="Pahtli Cape",
  598. }
  599.  
  600. --Conserve MP Gear, 55%, FC, 17%--
  601. sets.BlueMagic.Buffs = {
  602. ammo = "Pemphredo Tathlum",
  603. head = "Telchine Cap",
  604. neck = "Incanter's Torque",
  605. ear1 = "Mendicant's Earring",
  606. ear2 = "Magnetic Earring",
  607. body = "Amalric Doublet +1",
  608. hands = "Shrieker's Cuffs",
  609. ring1 = "Kishar Ring",
  610. ring2 = "Rahab Ring",
  611. back = "Solemnity Cape",
  612. waist = "Hachirin-no-Obi",
  613. legs = "Lengo Pants",
  614. feet = "Carmine Greaves +1"
  615. }
  616.  
  617. sets.BlueMagic.Battery = set_combine(sets.BlueMagic.Buffs, {
  618. head = "Amalric Coif +1",
  619. waist = "Gishdubar Sash"
  620. })
  621.  
  622. --Telchine Regen+ potency augments--
  623. sets.BlueMagic.Regeneration = set_combine(sets.BlueMagic.Buffs, {
  624. Body = "Telchine Chasuble",
  625. --Feet = "Taeon Boots"
  626. })
  627.  
  628. --For physical spells with additional effects--
  629. sets.BlueMagic.Stun = {
  630. ammo = "Pemphredo Tathlum",
  631. head = "Carmine Mask +1",
  632. neck = "Mirage Stole +2",
  633. ear1 = "Regal Earring",
  634. ear2 = "Dignitary's Earring",
  635. body = "Luhlaza Jubbah +3",
  636. hands = "Leyline Gloves",
  637. ring1 = "Stikini Ring +1",
  638. ring2 = "Metamorph Ring +1",
  639. back = "Cornflower cape",
  640. waist = "Sacro Cord",
  641. legs = "Luhlaza Shalwar +3",
  642. feet = "Luhlaza Charuqs +3"
  643. }
  644.  
  645. --Just for landing things like sleep--
  646. sets.BlueMagic.MagicAccuracy = {
  647. ammo = "Pemphredo Tathlum",
  648. head = "Assim. Keffiyeh +3",
  649. neck = "Mirage Stole +2",
  650. ear1 = "Regal Earring",
  651. ear2 = "Dignitary's Earring",
  652. body = "Amalric Doublet +1",
  653. hands = "Jhakri Cuffs +2",
  654. ring1 = "Stikini Ring +1",
  655. ring2 = "Metamorph Ring +1",
  656. back = Rosmerta.Nuke,
  657. waist = "Luminary Sash",
  658. legs = "Luhlaza Shalwar +3",
  659. feet = "Jhakri Pigaches +2"
  660. }
  661.  
  662. --Occultation is every 50 skill, magic barrier equals skill, anything that isn't /50 doesn't matter.
  663. ---For example diamondhide caps at 500
  664. ---Mastered Skill w/ merits is 472
  665.  
  666. sets.BlueMagic.Skill = {
  667. ammo="Mavi Tathlum",
  668. head={ name="Telchine Cap", augments={'Pet: "Regen"+3','Pet: Damage taken -4%',}},
  669. body="Assim. Jubbah +1",
  670. hands={ name="Telchine Gloves", augments={'Pet: "Regen"+3','Pet: Damage taken -1%',}},
  671. legs="Hashishin Tayt",
  672. feet={ name="Luhlaza Charuqs +1", augments={'Enhances "Diffusion" effect',}},
  673. neck="Deceiver's Torque",
  674. waist="Witful Belt",
  675. left_ear="Loquac. Earring",
  676. right_ear="Andoaa Earring",
  677. left_ring="Stikini Ring",
  678. right_ring="Stikini Ring",
  679. back={ name="Cornflower Cape", augments={'MP+25','DEX+4','Blue Magic skill +6',}},
  680. }
  681.  
  682. --Aim for empy hands and FC+ with skill /50
  683. ---Recast cap is +49 FC, this excludes erratic flutter, which really just means 64 total.
  684. ----If you are using the Empyrean hands, its +23 FC to cap recast.
  685.  
  686. sets.BlueMagic.Occultation = {
  687. ammo = "Sapience Orb", --2%
  688. head = "Carmine Mask +1", --14%
  689. neck = "Incanter's Torque", --10 skill
  690. ear1 = "Loquac. Earring", --2%
  691. ear2 = "Etiolation Earring", --1%
  692. body = "Assim. Jubbah +3", --24 skill
  693. hands = "Hashishin Bazubands +1",
  694. ring1 = "Kishar Ring", --4%
  695. ring2 = "Rahab Ring", --2%
  696. back = "Cornflower cape", --15 skill
  697. waist = "Witful Belt", --3%
  698. legs = "Hashishin Tayt +1", --23 skill
  699. feet = "Luhlaza Charuqs +3" -- 12 skill -- 84 skill, 560 total, 28% FC, if you pick up the +10 DI ear, another stink, and the +2 neck you can go for 600 skill 22% FC.
  700. }
  701.  
  702. sets.BlueMagic.Enmity = {
  703. ammo = "Sapience Orb",
  704. head = "Rabid Visor",
  705. neck = "Unmoving Collar +1",
  706. ear1 = "Friomisi Earring",
  707. ear2 = "Cryptic Earring",
  708. body = "Emet Harness +1",
  709. hands = "Leyline Gloves",
  710. ring1 = "Supershear Ring",
  711. ring2 = "Eihwaz Ring",
  712. back = "Reiki Cloak",
  713. waist = "Kasiri Belt",
  714. legs = "Zoar Subligar +1",
  715. Feet = "Ahosi Leggings"
  716. }
  717.  
  718. --Reaving Wind, Feather Tickle, Osmosis, etc
  719. sets.BlueMagic.FastRecast = {
  720. ammo="Sapience Orb",
  721. head={ name="Herculean Helm", augments={'AGI+9','DEX+8','"Refresh"+2','Mag. Acc.+3 "Mag.Atk.Bns."+3',}},
  722. body={ name="Luhlaza Jubbah", augments={'Enhances "Enchainment" effect',}},
  723. hands={ name="Helios Gloves", augments={'Mag. Acc.+6 "Mag.Atk.Bns."+6','"Fast Cast"+1',}},
  724. legs="Aya. Cosciales +1",
  725. feet="Malignance Boots",
  726. neck="Voltsurge Torque",
  727. waist="Witful Belt",
  728. left_ear="Loquac. Earring",
  729. right_ear="Andoaa Earring",
  730. left_ring="Weather. Ring",
  731. right_ring="Prolix Ring",
  732. back="Swith Cape",
  733. }
  734.  
  735. --Enhancing Sets--
  736.  
  737. sets.Enhancing = set_combine(sets.BlueMagic.Buffs, {
  738. head = "Telchine Cap",
  739. neck = "Incanter's Torque",
  740. ear1 = "Andoaa Earring",
  741. body = "Telchine Chasuble",
  742. back = "Perimede Cape",
  743. ring2 = "Stikini Ring +1",
  744. legs = "Carmine Cuisses +1"
  745. })
  746.  
  747. sets.Enhancing.Bar = set_combine(sets.BlueMagic.Buffs, {
  748. head = "Carmine Mask +1",
  749. neck = "Incanter's Torque",
  750. ear1 = "Andoaa Earring",
  751. body = "Telchine Chasuble",
  752. back = "Perimede Cape",
  753. ring2 = "Stikini Ring +1",
  754. legs = "Shedir Seraweels"
  755. })
  756.  
  757. sets.Enhancing.Phalanx = set_combine(sets.BlueMagic.Buffs, {
  758. head = "Carmine Mask +1",
  759. neck = "Incanter's Torque",
  760. ear1 = "Andoaa Earring",
  761. body = HerculeanVest.Phalanx,
  762. hands = HerculeanGloves.Phalanx,
  763. feet = HerculeanFeet.Phalanx,
  764. back = "Perimede Cape",
  765. ring2 = "Stikini Ring +1",
  766. legs = "Carmine Cuisses +1"
  767. })
  768.  
  769. sets.Enhancing.Aquaveil = set_combine(sets.BlueMagic.Buffs, {
  770. head = "Amalric Coif +1",
  771. neck = "Loricate Torque +1",
  772. waist = "Flume Belt",
  773. legs = "Shedir Seraweels"
  774. })
  775.  
  776. sets.Enhancing.ProShell = set_combine(sets.BlueMagic.Buffs, {
  777. ear1 = "Brachyura Earring"
  778. })
  779.  
  780. sets.Utility = {}
  781.  
  782. sets.Utility.TH = {
  783. waist = "Chaac Belt",
  784. legs = HerculeanLegs.TH,
  785. feet = HerculeanFeet.TH
  786. }
  787. --Comes on when slept, terrored, stunned, and petrified--
  788. --Capped DT and -42% MDT, assumes shell etc may be gone after being unable to act, but doesn't really care--
  789. sets.Utility.DerpDT = {
  790. ammo = "Staunch Tathlum +1",
  791. head = "Malignance Chapeau",
  792. neck = "Loricate Torque +1",
  793. ear1 = "Eabani Earring",
  794. ear2 = "Etiolation Earring",
  795. body = "Malignance Tabard",
  796. hands = "Malignance Gloves",
  797. ring2 = "Defending ring",
  798. ring1 = "Purity Ring",
  799. back = Rosmerta.MagicEva,
  800. waist = "Flume belt",
  801. legs = "Malignance Tights",
  802. feet = "Malignance Boots"
  803. }
  804.  
  805. sets.Utility.Doom = {
  806. neck = "Nicander's Necklace", --Buy it, its cheap, and it will save your life.
  807. ring2 = "Saida Ring",
  808. ring1 = "Purity Ring",
  809. waist = "Gishdubar Sash"
  810. }
  811.  
  812. --Job Ability Sets--
  813.  
  814. sets.JA = {}
  815.  
  816. sets.JA.ChainAffinity = { feet = "Assim. Charuqs +3" }
  817.  
  818. sets.JA.BurstAffinity = { feet = "Hashishin Basmak +1" }
  819.  
  820. sets.JA.Efflux = { legs = "Hashishin Tayt", back= Rosmerta.WSD }
  821.  
  822. sets.JA.AzureLore = { hands = "Luhlaza bazubands" }
  823.  
  824. sets.JA.Provoke = set_combine(sets.BlueMagic.Enmity, {})
  825.  
  826. --Precast Sets--
  827. sets.precast = {}
  828.  
  829. sets.precast.FC = {}
  830.  
  831. sets.precast.FC.Standard = {
  832. ammo="Sapience Orb",
  833. head={ name="Herculean Helm", augments={'AGI+9','DEX+8','"Refresh"+2','Mag. Acc.+3 "Mag.Atk.Bns."+3',}},
  834. body={ name="Samnuha Coat", augments={'Mag. Acc.+12','"Fast Cast"+3','"Dual Wield"+2',}},
  835. hands={ name="Helios Gloves", augments={'Mag. Acc.+6 "Mag.Atk.Bns."+6','"Fast Cast"+1',}},
  836. legs="Gyve Trousers",
  837. feet={ name="Medium's Sabots", augments={'MP+35','MND+7','"Cure" potency +1%',}},
  838. neck="Voltsurge Torque",
  839. waist="Witful Belt",
  840. left_ear="Loquac. Earring",
  841. right_ear="Mendi. Earring",
  842. left_ring="Weather. Ring",
  843. right_ring="Lebeche Ring",
  844. back="Perimede Cape",
  845. }
  846.  
  847. --Empy body stacks with FC, 80% cap, empy hands must be on at time of casting (mid) for effect--
  848. sets.precast.FC.Blue = set_combine(sets.precast.FC.Standard, {
  849. --body = "Hashishin Mintan"
  850. })
  851. end
  852.  
  853. function job_setup()
  854. no_swap_gear = S{"Warp Ring", "Dim. Ring (Dem)", "Dim. Ring (Holla)", "Dim. Ring (Mea)",
  855. "Trizek Ring", "Echad Ring", "Facility Ring", "Capacity Ring"}
  856. end
  857.  
  858. ---End of Gear---------------------------------------------------------------------------------------------------------------------------------------------------------
  859.  
  860. -------------------------------------
  861. --------- ---------
  862. ------ ------
  863. --- Start of Maps ---
  864. ------ ------
  865. --------- ---------
  866. -------------------------------------
  867.  
  868. -------------------------
  869. -- BLU Spells List --
  870. -------------------------
  871.  
  872. --Place spells into either Physical or Magical, and then further seperate them into type--
  873. --Anything In Physical or Magical is only for making a rule, it won't swap simply for being in that category--
  874. function maps()
  875. --All physical spells go here then they are filtered specifically. Add accordingly.
  876. PhysicalSpells = S {
  877. 'Asuran Claws', 'Bilgestorm', 'Bludgeon', 'Body Slam', 'Feather Storm', 'Mandibular Bite', 'Queasyshroom',
  878. 'Power Attack', 'Ram Charge', 'Saurian Slide', 'Screwdriver', 'Sickle Slash', 'Smite of Rage',
  879. 'Spinal Cleave', 'Spiral Spin', 'Sweeping Gouge', 'Terror Touch', 'Battle Dance', 'Bloodrake',
  880. 'Death Scissors', 'Dimensional Death', 'Empty Thrash', 'Quadrastrike', 'Uppercut', 'Tourbillion',
  881. 'Thrashing Assault', 'Vertical Cleave', 'Whirl of Rage', 'Amorphic Spikes', 'Barbed Crescent',
  882. 'Claw Cyclone', 'Disseverment', 'Foot Kick', 'Frenetic Rip', 'Goblin Rush', 'Hysteric Barrage',
  883. 'Paralyzing Triad', 'Seedspray', 'Sinker Drill', 'Vanity Dive', 'Cannonball', 'Delta Thrust',
  884. 'Glutinous Dart', 'Grand Slam', 'Quad. Continuum', 'Benthic Typhoon', 'Helldive',
  885. 'Hydro Shot', 'Jet Stream', 'Pinecone Bomb', 'Wild Oats', 'Heavy Strike'
  886. }
  887.  
  888. PhysicalBlueMagic_STR = S {
  889. 'Asuran Claws', 'Bilgestorm', 'Battle Dance', 'Bludgeon', 'Bloodrake', 'Death Scissors',
  890. 'Dimensional Death', 'Empty Thrash', 'Quadrastrike', 'Uppercut', 'Tourbillion', 'Sinker Drill',
  891. 'Thrashing Assault', 'Vertical Cleave', 'Whirl of Rage', 'Saurian Slide', 'Sinal Cleave',
  892. 'Paralyzing Triad'
  893. }
  894.  
  895. PhysicalBlueMagic_DEX = S {
  896. 'Amorphic Spikes', 'Barbed Crescent', 'Claw Cyclone', 'Disseverment', 'Foot Kick',
  897. 'Frenetic Rip', 'Goblin Rush', 'Hysteric Barrage', 'Seedspray',
  898. 'Vanity Dive'
  899. }
  900.  
  901. PhysicalBlueMagic_VIT = S {
  902. 'Cannonball', 'Delta Thrust', 'Glutinous Dart', 'Grand Slam', 'Quad. Continuum',
  903. 'Sprout Smack'
  904. }
  905.  
  906. PhysicalBlueMagic_AGI = S {
  907. 'Benthic Typhoon', 'Helldive', 'Hydro Shot', 'Jet Stream', 'Pinecone Bomb', 'Wild Oats',
  908. 'Spiral Spin'
  909. }
  910.  
  911. --All nuking spells go here then they are filtered specifically. Add accordingly.
  912. MagicalSpells = S {
  913. 'Acrid Stream', 'Anvil Lightning', 'Crashing Thunder', 'Charged Whisker', 'Droning Whirlwind',
  914. 'Firespit', 'Foul Waters', 'Gates of Hades', 'Leafstorm', 'Molting Plumage', 'Magic Barrier', 'Nectarous Deluge',
  915. 'Polar Roar', 'Regurgitation', 'Rending Deluge', 'Scouring Spate', 'Searing Tempest', 'Silent Storm',
  916. 'Spectral Floe', 'Subduction', 'Sudden Lunge', 'Tem. Upheaval', 'Thermal Pulse', 'Thunderbolt', 'Uproot',
  917. 'Water Bomb', 'Atra. Libations', 'Blood Saber', 'Dark Orb', 'Death Ray', 'Eyes On Me', 'Blazing Bound',
  918. 'Evryone. Grudge', 'Palling Salvo', 'Tenebral Crush', 'Blinding Fulgor', 'Diffusion Ray', 'Ice Break',
  919. 'Magic Hammer', 'Rail Cannon', 'Retinal Glare', 'Embalming Earth', 'Entomb', 'Sandspin', 'Vapor Spray', 'Osmosis',
  920. 'Feather Tickle', 'Reaving Wind',
  921. }
  922. --Any nuking spell that doesnt have certain armor to enhance it like the pixie hairpin +1 for dark nukes--
  923. BlueMagic_INT = S {
  924. 'Acrid Stream', 'Anvil Lightning', 'Crashing Thunder', 'Charged Whisker', 'Droning Whirlwind', 'Firespit',
  925. 'Foul Waters', 'Gates of Hades', 'Leafstorm', 'Molting Plumage', 'Nectarous Deluge', 'Polar Roar',
  926. 'Regurgitation', 'Rending Deluge', 'Scouring Spate', 'Searing Tempest', 'Silent Storm', 'Spectral Floe',
  927. 'Subduction', 'Tem. Upheaval', 'Thermal Pulse', 'Thunderbolt', 'Uproot', 'Water Bomb'
  928. }
  929.  
  930. BlueMagic_Dark = S {
  931. 'Blood Saber', 'Dark Orb', 'Death Ray', 'Eyes On Me',
  932. 'Evryone. Grudge', 'Palling Salvo', 'Tenebral Crush'
  933. }
  934.  
  935. BlueMagic_Light = S {
  936. 'Blinding Fulgor', 'Diffusion Ray', 'Magic Hammer', 'Rail Cannon', 'Retinal Glare'
  937. }
  938.  
  939. BlueMagic_Earth = S {
  940. 'Embalming Earth', 'Entomb', 'Sandspin'
  941. }
  942.  
  943. BlueMagic_Accuracy = S {
  944. '1000 Needles', 'Absolute Terror', 'Auroral Drape', 'Awful Eye', 'Blastbomb', 'Blank Gaze', 'Blistering Roar', 'Blitzstrahl',
  945. 'Blood Drain', 'Blood Saber', 'Chaotic Eye', 'Cimicine Discharge', 'Cold Wave', 'Digest', 'Corrosive Ooze',
  946. 'Demoralizing Roar', 'Dream Flower', 'Enervation', 'Filamented Hold', 'Frightful Roar',
  947. 'Geist Wall', 'Hecatomb Wave', 'Infrasonics', 'Light of Penance', 'Lowing', 'Mind Blast', 'Mortal Ray',
  948. 'MP Drainkiss', 'Sheep Song', 'Soporific', 'Sound Blast', 'Sprout Smack', 'Stinking Gas','Osmosis', 'Cruel Joke'
  949. }
  950.  
  951. BlueMagic_Breath = S {
  952. 'Bad Breath', 'Flying Hip Press', 'Final Sting', 'Frost Breath', 'Heat Breath', 'Magnetite Cloud',
  953. 'Poison Breath', 'Radiant Breath', 'Self Destruct', 'Thunder Breath', 'Vapor Spray', 'Wind Breath'
  954. }
  955.  
  956. BlueMagic_Buffs = S {
  957. 'Barrier Tusk', 'Cocoon', 'Carcharian Verve', 'Erratic Flutter', 'Harden Shell', 'Orcish Counterstance',
  958. 'Plasma Charge', 'Pyric Bulwark', 'Memento Mori', 'Mighty Guard', 'Nat. Meditation', 'Reactor Cool', 'Saline Coat',
  959. 'Feather Barrier','Refueling','Warm-Up', 'Zephyr Mantle', 'Reactor Cool', 'Plasma Charge', 'Amplification',
  960. }
  961. --- Occultation gets it's own set ---
  962. BlueMagic_Skill = S {
  963. 'Diamondhide', 'Metallic Body', 'Magic Barrier', 'Atra. Libations',
  964. }
  965.  
  966. BlueMagic_Healing = S {
  967. 'Healing Breeze', 'Magic Fruit', 'Plenilune Embrace', 'Pollen', 'Restoral', 'Wild Carrot'
  968. }
  969. --- Acc + Macc + FC "Stun" set ---
  970. BlueMagic_Stun = S {
  971. 'Frypan', 'Head Butt', 'Sudden Lunge', 'Tail slap', 'Sub-zero Smash', 'Sweeping Gouge'
  972. }
  973. BlueMagic_Enmity = S {
  974. 'Actinic Burst', 'Exuviation', 'Fantod', 'Jettatura', 'Temporal Shift'
  975. }
  976.  
  977. BlueMagic_FastRecast = S {
  978. 'Osmosis', 'Feather Tickle', 'Reaving Wind',
  979. }
  980. end
  981.  
  982. ------------------------
  983. -- Town Gear List --
  984. ------------------------
  985.  
  986. Town = S {
  987. "Eastern Adoulin", "Western Adoulin", "Celennia Memorial Library"
  988. }
  989.  
  990. ---End of Maps----------------------------------------------------------------------------------------------------------------------------------------------------------
  991.  
  992. --------------------------------------
  993. --------- ---------
  994. ------ ------
  995. --- Start of Rules ---
  996. ------ ------
  997. --------- ---------
  998. --------------------------------------
  999.  
  1000.  
  1001. ----------------------------------------------
  1002. -- Macro and Style Change on Job Change --
  1003. ----------------------------------------------
  1004. function set_macros(sheet,book)
  1005. if book then
  1006. send_command('@input /macro book '..tostring(book)..';wait .1;input /macro set '..tostring(sheet))
  1007. return
  1008. end
  1009. send_command('@input /macro set '..tostring(sheet))
  1010. end
  1011.  
  1012. function set_style(sheet)
  1013. send_command('@input ;wait 5.0;input /lockstyleset '..sheet)
  1014. add_to_chat (21, 'Your Lockstyle looks like shit, and you should feel bad')
  1015. add_to_chat (55, 'You are on '..('BLU '):color(5)..''..('btw. '):color(55)..''..('Macros set!'):color(121))
  1016. add_to_chat (60, 'Be Best')
  1017.  
  1018. -- add_to_chat (60, 'https://www.bg-wiki.com/bg/Out_of_the_BLU')
  1019. end
  1020.  
  1021. set_macros(1,7)
  1022. ---Name the Lockstyle below after the default set number--
  1023. set_style(2)
  1024. -------------------------------
  1025. -- Variables --
  1026. -------------------------------
  1027. equipSet = {} --Currently Equiped Gearset
  1028. TargetDistance = 0
  1029. TH = false
  1030. DT = false
  1031.  
  1032. --TH rule description--
  1033. --TH in this GS works as follows. alt T or macro the command in to turn it on and off
  1034. --It will not equip in your idle set, or while casting buffs, enhancing, cures, skill based BLU spells, or blue cures
  1035. --It will equip when engaging, and after an action is performed by you it comes off until you re-engage or toggle it on and off.
  1036. ---You can change this, but I found it silly to full time it.
  1037. --If you are idle, and cast either physical blue spells or offensive magical blue spells it will equip on top of your sets.
  1038. ---Diaga and stuff don't apply. Feel free to add it.
  1039. --When you return to being strictly idle, it doesn't equip either, becuase that would be pointless.
  1040.  
  1041. --So basically, TH gear (add yours in where applicable) comes on when engaging unti a new action is performed, and while idle using physical or offensive magical nukes.
  1042.  
  1043. ------------------------------------
  1044. -- Windower Hooks --
  1045. ------------------------------------
  1046.  
  1047. function buff_change(n, gain, buff_table)
  1048. local name
  1049. name = string.lower(n)
  1050. if S{"terror","petrification","sleep","stun"}:contains(name) then
  1051. if gain then
  1052. ChangeGear(sets.Utility.DerpDT)
  1053. elseif not has_any_buff_of({"terror","petrification","sleep","stun"}) then
  1054. if player.status == 'Engaged' then
  1055. if DT == true then
  1056. ChangeGear(sets.DT[sets.DT.index[DT_ind]])
  1057. else
  1058. ChangeGear(sets.TP[sets.TP.index[TP_ind]])
  1059. end
  1060. end
  1061. elseif player.status == 'Idle' then
  1062. ChangeGear(sets.Idle[sets.Idle.index[Idle_ind]])
  1063. end
  1064. elseif name == "doom" then
  1065. if gain then
  1066. ChangeGear(sets.Utility.Doom)
  1067. send_command('@input /p Doomed {~o~:} !')
  1068. disable('neck','ring1','ring2','waist')
  1069. else
  1070. if player.status == 'Engaged' then
  1071. send_command('@input /p Doom is off {^_^}')
  1072. enable('neck','ring1','ring2','waist')
  1073. if DT == true then
  1074. ChangeGear(sets.DT[sets.DT.index[DT_ind]])
  1075. else
  1076. ChangeGear(sets.TP[sets.TP.index[TP_ind]])
  1077. end
  1078. elseif player.status == 'Idle' then
  1079. send_command('@input /p Doom is off {^_^}')
  1080. enable('neck','ring1','ring2','waist')
  1081. ChangeGear(sets.Idle[sets.Idle.index[Idle_ind]])
  1082. end
  1083. end
  1084. elseif name == "charm" then
  1085. if gain then
  1086. send_command('@input /p Charmed {<3_<3:} !')
  1087. else
  1088. send_command('@input /p Charm is off {~_^}')
  1089. end
  1090. elseif name == "weakness" then
  1091. if gain then
  1092. enable('neck','ring1','ring2','waist')
  1093. end
  1094. elseif name == "mighty guard" then
  1095. if gain then
  1096. else
  1097. send_command('gs c -cd Mighty Guard Lost!')
  1098. end
  1099. end
  1100.  
  1101. if name == "aftermath: lv.3" and player.equipment.main == 'Tizona' then
  1102. if gain then
  1103. send_command('timers create "Mythic AM3" 180 down')
  1104. else
  1105. send_command('timers delete "Mythic AM3";gs c -cd AM3 Lost!!!')
  1106. end
  1107. end
  1108.  
  1109. end
  1110.  
  1111. function has_any_buff_of(buff_set)--returns true if you have any of the buffs given
  1112. for i,v in pairs(buff_set) do
  1113. if buffactive[v] ~= nil then return true end
  1114. end
  1115. end
  1116. ---------------------------
  1117. -- Binds --
  1118. ---------------------------
  1119.  
  1120. -------------------
  1121. --F9,10,11,12--
  1122. -------------------
  1123. send_command('bind f9 gs c toggle TP set')
  1124. send_command('bind f10 gs c toggle WS sets')
  1125. ---send_command('bind f11 gs c ') --empty
  1126. send_command('bind f12 gs c toggle Idle set')
  1127. ---------------------
  1128. --Windows Key--
  1129. ---------------------
  1130. --send_command('bind @f7 gs c ') -- empty
  1131.  
  1132. ----------------
  1133. --Cntrl Key--
  1134. ----------------
  1135. send_command('bind ^f8 input /ws "Sanguine Blade" <t>')
  1136. send_command('bind ^f9 input /ws "Chant du Cygne" <t>')
  1137. send_command('bind ^f10 input /ws "Expiacion" <t>')
  1138. send_command('bind ^f11 input /ws "Requiescat" <t>')
  1139. send_command('bind ^f12 input /ws "Savage Blade" <t>')
  1140. -------------
  1141. --Alt Key--
  1142. -------------
  1143. send_command('bind !f7 gs c toggle DT set') -- This exists only for toggling without of this mode having to be active, otherwise f9
  1144. send_command('bind !f8 gs c toggle DT') -- DT on or off
  1145. send_command('bind !f9 gs c toggle backwards')
  1146. send_command('bind !f10 gs c changemaccmab') -- Toggles macc and mab nuke sets
  1147. --send_command('bind !f11 gs c ') --empty
  1148. --send_command('bind !f12 gs c ') --empty
  1149.  
  1150. send_command('bind !e input /item "Echo Drops" <me>')
  1151. send_command('bind !r input /item "Remedy" <me>')
  1152. send_command('bind !p input /item "Panacea" <me>')
  1153. send_command('bind !h input /item "Holy Water" <me>')
  1154. send_command('bind !w input /equip ring1 "Warp Ring"; /echo Warping; wait 11; input /item "Warp Ring" <me>;')
  1155. send_command('bind !q input /equip ring2 "Dim. Ring (Holla)"; wait 11; input /item "Dim. Ring (Holla)" <me>;')
  1156. send_command('bind !t gs c toggle TH') -- alt + t toggles TH mode, its not robust, but it works.
  1157.  
  1158. --------------------
  1159. --Unload Binds--
  1160. --------------------
  1161. function file_unload()
  1162. send_command('unbind ^f8')
  1163. send_command('unbind ^f9')
  1164. send_command('unbind ^f10')
  1165. send_command('unbind ^f11')
  1166. send_command('unbind ^f12')
  1167. send_command('unbind @f8')
  1168. send_command('unbind @f9')
  1169. send_command('unbind !f8')
  1170. send_command('unbind !f9')
  1171. send_command('unbind !f10')
  1172. send_command('unbind !f11')
  1173. send_command('unbind !f12')
  1174. send_command('unbind f9')
  1175. send_command('unbind f10')
  1176. send_command('unbind f11')
  1177. send_command('unbind f12')
  1178.  
  1179. send_command('unbind !e')
  1180. send_command('unbind !r')
  1181. send_command('unbind !p')
  1182. send_command('unbind !h')
  1183. send_command('unbind !w')
  1184. send_command('unbind !q')
  1185. send_command('unbind !t')
  1186. end
  1187. --------------------------------------
  1188. -- Console Commands --
  1189. --------------------------------------
  1190. function self_command(command)
  1191. if player.status == 'Engaged' then
  1192. if DT == true then
  1193. ChangeGear(sets.DT[sets.DT.index[DT_ind]])
  1194. else
  1195. ChangeGear(sets.TP[sets.TP.index[TP_ind]])
  1196. end
  1197. else
  1198. ChangeGear(sets.Idle[sets.Idle.index[Idle_ind]])
  1199. end
  1200. if command == 'toggle TP set' then
  1201. if DT == true then
  1202. DT_ind = DT_ind + 1
  1203. if DT_ind > #sets.DT.index then DT_ind = 1 end
  1204. send_command('@input /echo <----- DT Set changed to ' .. sets.DT.index[DT_ind] .. ' ----->')
  1205. ChangeGear(sets.DT[sets.DT.index[DT_ind]])
  1206. elseif DT == false then
  1207. TP_ind = TP_ind + 1
  1208. if TP_ind > #sets.TP.index then TP_ind = 1 end
  1209. send_command('@input /echo <----- TP Set changed to ' .. sets.TP.index[TP_ind] .. ' ----->')
  1210. if player.status == 'Engaged' then
  1211. ChangeGear(sets.TP[sets.TP.index[TP_ind]])
  1212. end
  1213. end
  1214. elseif command == 'toggle Idle set' then
  1215. Idle_ind = Idle_ind + 1
  1216. if Idle_ind > #sets.Idle.index then Idle_ind = 1 end
  1217. send_command('@input /echo <----- Idle Set changed to ' .. sets.Idle.index[Idle_ind] .. ' ----->')
  1218. if player.status == 'Idle' then
  1219. ChangeGear(sets.Idle[sets.Idle.index[Idle_ind]])
  1220. end
  1221. elseif command == 'toggle WS sets' then
  1222. Expiacion_ind = Expiacion_ind + 1
  1223. Requiescat_ind = Requiescat_ind + 1
  1224. CDC_ind = CDC_ind + 1
  1225. BlackHalo_ind = BlackHalo_ind + 1
  1226. Realmrazer_ind = Realmrazer_ind + 1
  1227. Judgment_ind = Judgment_ind + 1
  1228. if Expiacion_ind > #sets.Expiacion.index then Expiacion_ind = 1 end
  1229. if Requiescat_ind > #sets.Requiescat.index then Requiescat_ind = 1 end
  1230. if CDC_ind > #sets.CDC.index then CDC_ind = 1 end
  1231. if BlackHalo_ind > #sets.BlackHalo.index then BlackHalo_ind = 1 end
  1232. if Realmrazer_ind > #sets.Realmrazer.index then Realmrazer_ind = 1 end
  1233. if Judgment_ind > #sets.Judgment.index then Judgment_ind = 1 end
  1234. send_command('@input /echo <----- WS Sets changed to ' .. sets.CDC.index[CDC_ind] .. ' ----->')
  1235. elseif command == 'toggle DT set' then
  1236. DT_ind = DT_ind + 1
  1237. if DT_ind > #sets.DT.index then DT_ind = 1 end
  1238. send_command('@input /echo <----- DT Set changed to ' .. sets.DT.index[DT_ind] .. ' ----->')
  1239. if DT == true then
  1240. ChangeGear(sets.DT[sets.DT.index[DT_ind]])
  1241. end
  1242. elseif command == 'toggle DT' then
  1243. if DT == true then
  1244. DT = false
  1245. send_command('@input /echo <----- DT TP: [Off] ----->')
  1246. else
  1247. DT = true
  1248. send_command('@input /echo <----- DT TP: [On] ----->')
  1249. end
  1250. status_change(player.status)
  1251. elseif command == 'toggle TH' then
  1252. if TH == true then
  1253. TH = false
  1254. send_command('@input /echo <----- Treasure Hunter TP: [Off] ----->')
  1255. else
  1256. TH = true
  1257. send_command('@input /echo <----- Treasure Hunter TP: [On] ----->')
  1258. end
  1259. status_change(player.status)
  1260. elseif command == 'toggle backwards' then
  1261. if DT == true then
  1262. DT_ind = DT_ind -1
  1263. if DT_ind == 0 then
  1264. DT_ind = #sets.DT.index
  1265. end
  1266. send_command('@input /echo <----- DT Set changed to ' .. sets.DT.index[DT_ind] .. ' ----->')
  1267. ChangeGear(sets.DT[sets.DT.index[DT_ind]])
  1268. elseif DT == false then
  1269. TP_ind = TP_ind -1
  1270. if TP_ind == 0 then
  1271. TP_ind = #sets.TP.index
  1272. end
  1273. send_command('@input /echo <----- TP Set changed to ' .. sets.TP.index[TP_ind] .. ' ----->')
  1274. if player.status == 'Engaged' then
  1275. ChangeGear(sets.TP[sets.TP.index[TP_ind]])
  1276. end
  1277. end
  1278. elseif command == 'ZoneChange' then
  1279. IdleState()
  1280. elseif command == 'changemaccmab' then
  1281. MAB_ind = MAB_ind + 1
  1282. if MAB_ind > #sets.BlueMagic.INT.index then MAB_ind = 1 end
  1283. send_command('@input /echo <-----Blue Magic INT Type Changed To: ' .. sets.BlueMagic.INT.index[MAB_ind] .. '----->')
  1284. elseif string.sub(command, 0, 4) == '-cd ' then --If the first 4 characters of the command are '-cd '
  1285. add_to_chat (30, string.sub(command, 5, string.len(command))) --add everything after '-cd ' to a message in the chat
  1286. end
  1287.  
  1288. end
  1289.  
  1290. --------------------------------------
  1291. -- Character States --
  1292. --------------------------------------
  1293. function IdleState()
  1294. if DT == true then
  1295. ChangeGear(sets.DT[sets.DT.index[DT_ind]])
  1296. else
  1297. ChangeGear(sets.Idle[sets.Idle.index[Idle_ind]])
  1298. end
  1299.  
  1300. if player.mpp <= 50 and Idle_ind == 1 then
  1301. ChangeGear({waist = "Fucho-no-obi", Ring1 = "Stikini Ring +1"})
  1302. end
  1303.  
  1304. if Town:contains(world.area) then
  1305. ChangeGear(sets.Idle.Town)
  1306. end
  1307. end
  1308.  
  1309. windower.raw_register_event('zone change',function()
  1310. windower.send_command('@wait 9; input //gs c ZoneChange')
  1311. end)
  1312.  
  1313. function RestingState()
  1314.  
  1315. end
  1316.  
  1317. function EngagedState()
  1318. if DT == true then
  1319. ChangeGear(sets.DT[sets.DT.index[DT_ind]])
  1320. else
  1321. ChangeGear(sets.TP[sets.TP.index[TP_ind]])
  1322. end
  1323. end
  1324.  
  1325. -----------------------------
  1326. -- Spell control --
  1327. -----------------------------
  1328. unusable_buff = {
  1329. spell={'Charm','Mute','Omerta','Petrification','Silence','Sleep','Stun','Terror'},
  1330. ability={'Amnesia','Charm','Impairment','Petrification','Sleep','Stun','Terror'}}
  1331. --check_recast('ability',spell.recast_id) check_recast('spell',spell.recast_id)
  1332. function check_recast(typ,id) --if spell can be cast(not in recast) return true
  1333. local recasts = windower.ffxi['get_'..typ..'_recasts']()
  1334. if id and recasts[id] and recasts[id] == 0 then
  1335. return true
  1336. else
  1337. return false
  1338. end
  1339. end
  1340. --return true if spell/ability is unable to be used at this time
  1341. function spell_control(spell)
  1342. if spell.type == "Item" then
  1343. return false
  1344. --Stops spell if you do not have a target
  1345. elseif spell.target.name == nil and not spell.target.raw:contains("st") then
  1346. return true
  1347. --Stops spell if a blocking buff is active
  1348. elseif spell.action_type == 'Ability' and spell.type ~= 'WeaponSkill' and (has_any_buff_of(unusable_buff.ability) or not check_recast('ability',spell.recast_id)) then
  1349. return true
  1350. elseif spell.type == 'WeaponSkill' and player.tp < 1000 then
  1351. return true
  1352. elseif spell.type == 'WeaponSkill' and (has_any_buff_of(unusable_buff.ability)) then
  1353. msg("Weapon Skill Canceled, Can't")
  1354. return true
  1355. elseif spell.action_type == 'Magic' and (has_any_buff_of(unusable_buff.spell)
  1356. or not check_recast('spell',spell.recast_id)) then
  1357. return true
  1358. --Stops spell if you do not have enuf mp/tp to use
  1359. elseif spell.mp_cost and spell.mp_cost > player.mp and not has_any_buff_of({'Manawell','Manafont'}) then
  1360. msg("Spell Canceled, Not Enough MP")
  1361. return true
  1362. end
  1363. --Calculate how many finishing moves your char has up to 6
  1364. local fm_count = 0
  1365. for i, v in pairs(buffactive) do
  1366. if tostring(i):startswith('finishing move') or tostring(i):startswith('?????????') then
  1367. fm_count = tonumber(string.match(i, '%d+')) or 1
  1368. end
  1369. end
  1370. --Stops flourishes if you do not have enough finishing moves
  1371. local min_fm_for_flourishes = {['Animated Flourish']=1,['Desperate Flourish']=1,['Violent Flourish']=1,['Reverse Flourish']=1,['Building Flourish']=1,
  1372. ['Wild Flourish']=2,['Climactic Flourish']=1,['Striking Flourish']=2,['Ternary Flourish']=3,}
  1373. if min_fm_for_flourishes[spell.en] then
  1374. if min_fm_for_flourishes[spell.en] > fm_count and not buffactive[507] then
  1375. return true
  1376. end
  1377. end
  1378. --Reomves Sneak when casting Spectral Jig
  1379. if spell.en == 'Spectral Jig' then
  1380. send_command('cancel 71')
  1381. end
  1382. if spell.name == 'Utsusemi: Ichi' and overwrite and buffactive['Copy Image (3)'] then
  1383. return true
  1384. end
  1385. if player.tp >= 1000 and player.target and player.target.distance and player.target.distance > 7 and spell.type == 'WeaponSkill' then
  1386. msg("Weapon Skill Canceled Target Out of Range")
  1387. return true
  1388. end
  1389. end
  1390. -----------------------------
  1391. -- Precast --
  1392. -----------------------------
  1393. function pc_JA(spell, act)
  1394. if spell.english == 'Azure Lore' then
  1395. ChangeGear(sets.JA.AzureLore)
  1396. elseif spell.english == 'Provoke' then
  1397. ChangeGear(sets.JA.Provoke)
  1398. elseif spell.english == 'Warcry' then
  1399. ChangeGear(sets.JA.Warcry)
  1400. end
  1401.  
  1402. IgnoreWS = S { "Sanguine Blade", "Red Lotus Blade", "Seraph Blade", "Flash Nova", "Realmrazer", "Chant du Cygne" } -- Excluded from Moonshade TP override rule. CDC is now as well, it no longer needs Moonshade with 2 +1 Mache
  1403. RegalWS = S {"Savage Blade", "Expiacion"}
  1404.  
  1405. if spell.type == 'WeaponSkill' then
  1406. if spell.english == 'Requiescat' then
  1407. ChangeGear(sets.Requiescat[sets.Requiescat.index[Requiescat_ind]])
  1408. elseif spell.english == 'Expiacion' or spell.english == 'Circle Blade' or spell.english == 'Savage Blade' or spell.english == 'True Strike' or spell.english == 'Judgment' then
  1409. ChangeGear(sets.Expiacion[sets.Expiacion.index[Expiacion_ind]])
  1410. elseif spell.english == 'Chant du Cygne' or spell.english == 'Vorpal Blade' then
  1411. ChangeGear(sets.CDC[sets.CDC.index[CDC_ind]])
  1412. elseif spell.english == 'Realmrazer' then
  1413. ChangeGear(sets.Realmrazer[sets.Realmrazer.index[Realmrazer_ind]])
  1414. elseif spell.english == 'Black Halo' then
  1415. ChangeGear(sets.BlackHalo[sets.BlackHalo.index[BlackHalo_ind]])
  1416. elseif spell.english == 'Flash Nova' or spell.english == 'Red Lotus Blade' or spell.english == 'Seraph Blade' then
  1417. ChangeGear(sets.FlashNova)
  1418. elseif spell.english == 'Sanguine Blade' then
  1419. ChangeGear(sets.SanguineBlade)
  1420. end
  1421. --WS TP Rules, so you dont use moonshade when you have TP overflow--
  1422. if player.tp > 1525 and player.equipment.sub == 'Thibron' and buffactive['TP Bonus'] then
  1423. if IgnoreWS:contains(spell.english) then
  1424. return
  1425. elseif IgnoreWS:contains(spell.english) then
  1426. equip(set_combine(equipSet, { ear1 = "Regal Earring" }))
  1427. msg("Regal Earring equiped !!!!")
  1428. else
  1429. equip(set_combine(equipSet, { ear1 = "Ishvara Earring" }))
  1430. msg("Ishvara Earring equiped !!!!")
  1431. end
  1432. elseif player.tp > 1775 and player.equipment.sub == 'Thibron' then
  1433. if IgnoreWS:contains(spell.english) then
  1434. return
  1435. elseif IgnoreWS:contains(spell.english) then
  1436. equip(set_combine(equipSet, { ear1 = "Regal Earring" }))
  1437. msg("Regal Earring equiped !!!!")
  1438. else
  1439. equip(set_combine(equipSet, { ear1 = "Ishvara Earring" }))
  1440. msg("Ishvara Earring equiped !!!!")
  1441. end
  1442. elseif player.tp > 2025 and player.equipment.main == 'Sequence' and buffactive['TP Bonus'] then
  1443. if IgnoreWS:contains(spell.english) then
  1444. return
  1445. elseif IgnoreWS:contains(spell.english) then
  1446. equip(set_combine(equipSet, { ear1 = "Regal Earring" }))
  1447. msg("Regal Earring equiped !!!!")
  1448. else
  1449. equip(set_combine(equipSet, { ear1 = "Ishvara Earring" }))
  1450. msg("Ishvara Earring equiped !!!!")
  1451. end
  1452. elseif player.tp > 2275 and player.equipment.main == 'Sequence' then
  1453. if IgnoreWS:contains(spell.english) then
  1454. return
  1455. elseif IgnoreWS:contains(spell.english) then
  1456. equip(set_combine(equipSet, { ear1 = "Regal Earring" }))
  1457. msg("Regal Earring equiped !!!!")
  1458. else
  1459. equip(set_combine(equipSet, { ear1 = "Ishvara Earring" }))
  1460. msg("Ishvara Earring equiped !!!!")
  1461. end
  1462. elseif player.tp > 2550 and buffactive['TP Bonus'] then
  1463. if IgnoreWS:contains(spell.english) then
  1464. return
  1465. elseif spell.english == 'Expiacion' or spell.english == 'Savage Blade' then
  1466. equip(set_combine(equipSet, { ear1 = "Regal Earring" }))
  1467. msg("Regal Earring equiped !!!!")
  1468. else
  1469. equip(set_combine(equipSet, { ear1 = "Ishvara Earring" }))
  1470. msg("Ishvara Earring equiped !!!!")
  1471. end
  1472. elseif player.tp > 2775 then
  1473. if IgnoreWS:contains(spell.english) then
  1474. return
  1475. elseif IgnoreWS:contains(spell.english) then
  1476. equip(set_combine(equipSet, { ear1 = "Regal Earring" }))
  1477. msg("Regal Earring equiped !!!!")
  1478. else
  1479. equip(set_combine(equipSet, { ear1 = "Ishvara Earring" }))
  1480. msg("Ishvara Earring equiped !!!!")
  1481. end
  1482. end
  1483. end
  1484.  
  1485. if spell.type == 'Step' then
  1486. ChangeGear(set_combine(sets.TP.AccuracyFull, sets.Utility.TH))
  1487. elseif spell.english == 'Animated Flourish' then
  1488. ChangeGear(sets.BlueMagic.Enmity)
  1489. end
  1490. end
  1491.  
  1492. function pc_Magic(spell, act)
  1493. if spell.skill == 'Blue Magic' then
  1494. ChangeGear(sets.precast.FC.Blue)
  1495. else
  1496. ChangeGear(sets.precast.FC.Standard)
  1497. end
  1498. end
  1499.  
  1500. function pc_Item(spell, act)
  1501. end
  1502.  
  1503. -----------------------------
  1504. -- Midcast --
  1505. -----------------------------
  1506. function mc_JA(spell, act)
  1507. end
  1508.  
  1509. function mc_Magic(spell, act)
  1510.  
  1511. if spell.skill == 'Healing Magic' then
  1512. if spell.target and spell.target.type == 'SELF' then
  1513. ChangeGear(sets.BlueMagic.SelfCures)
  1514. else
  1515. ChangeGear(sets.BlueMagic.Cures)
  1516. end
  1517. end
  1518. if spell.skill == 'Enhancing Magic' then
  1519. if spell.english == 'Refresh' then
  1520. ChangeGear(sets.BlueMagic.Battery)
  1521. elseif string.find(spell.english,'Shell') or string.find(spell.english,'Protect') then
  1522. ChangeGear(sets.Enhancing.ProShell)
  1523. elseif spell.english=="Phalanx" then
  1524. ChangeGear(sets.Enhancing.Phalanx)
  1525. elseif spell.english=="Aquaveil" or "Stoneskin" then
  1526. ChangeGear(sets.Enhancing.Aquaveil)
  1527. elseif string.find(spell.english,'Bar') then
  1528. ChangeGear(sets.Enhancing.Bar)
  1529. else
  1530. ChangeGear(sets.Enhancing)
  1531. end
  1532. end
  1533. if spell.skill == 'Divine Magic' then
  1534. if spell.english == 'Flash' then
  1535. ChangeGear(sets.BlueMagic.Enmity)
  1536. else
  1537. ChangeGear(sets.BlueMagicMagicAccuracy)
  1538. end
  1539. end
  1540. if spell.skill == 'Enfeebling Magic' then
  1541. ChangeGear(sets.BlueMagic.MagicAccuracy)
  1542. end
  1543. if spell.skill == 'Dark Magic' then
  1544. ChangeGear(sets.BlueMagic.MagicAccuracy)
  1545. elseif spell.skill == 'Elemental Magic' then
  1546. ChangeGear(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]])
  1547. end
  1548. if spell.skill == 'Blue Magic' then
  1549. if BlueMagic_Accuracy:contains(spell.english) then
  1550. ChangeGear(sets.BlueMagic.MagicAccuracy)
  1551. elseif BlueMagic_Stun:contains(spell.english) then
  1552. ChangeGear(sets.BlueMagic.Stun)
  1553. elseif BlueMagic_Enmity:contains(spell.english) then
  1554. ChangeGear(sets.BlueMagic.Enmity)
  1555. elseif BlueMagic_Skill:contains(spell.english) then
  1556. ChangeGear(sets.BlueMagic.Skill)
  1557. elseif BlueMagic_Buffs:contains(spell.english) then
  1558. ChangeGear(sets.BlueMagic.Buffs)
  1559. elseif BlueMagic_Healing:contains(spell.english) then
  1560. if spell.target and spell.target.type == 'SELF' then
  1561. ChangeGear(sets.BlueMagic.SelfCures)
  1562. else
  1563. ChangeGear(sets.BlueMagic.Cures)
  1564. end
  1565. elseif BlueMagic_FastRecast:contains(spell.english) then
  1566. ChangeGear(sets.FastRecast)
  1567. elseif spell.english == 'Occultation' then
  1568. ChangeGear(sets.BlueMagic.Occultation)
  1569. elseif spell.english == 'White Wind' then
  1570. ChangeGear(sets.BlueMagic.WhiteWind)
  1571. elseif spell.english == 'Battery Charge' then
  1572. ChangeGear(sets.BlueMagic.Battery)
  1573. elseif spell.english == 'Regeneration' or string.find(spell.english,'Regen') then
  1574. ChangeGear(sets.BlueMagic.Regeneration)
  1575. else
  1576. ChangeGear(sets.precast.FC.Blue)
  1577. end
  1578. if buffactive['Diffusion'] then --Putting Diffusion <wait 1> before Unbridled Learning <wait 1> (instead of the other way around) in your macro will decrease issues
  1579. ChangeGear({feet="Luhlaza Charuqs +3"})
  1580. end
  1581. end
  1582.  
  1583. if PhysicalSpells:contains(spell.english) then
  1584. if PhysicalBlueMagic_STR:contains(spell.english) then
  1585. ChangeGear(sets.BlueMagic.STR)
  1586. elseif PhysicalBlueMagic_DEX:contains(spell.english) then
  1587. ChangeGear(sets.BlueMagic.STRDEX)
  1588. elseif PhysicalBlueMagic_VIT:contains(spell.english) then
  1589. ChangeGear(sets.BlueMagic.STRVIT)
  1590. elseif PhysicalBlueMagic_AGI:contains(spell.english) then
  1591. ChangeGear(sets.BlueMagic.AGI)
  1592. end
  1593. if buffactive['Chain Affinity'] then
  1594. ChangeGear(sets.JA.ChainAffinity)
  1595. end
  1596. if buffactive['Efflux'] then
  1597. ChangeGear(sets.JA.Efflux)
  1598. end
  1599. end
  1600.  
  1601. if MagicalSpells:contains(spell.english) then
  1602. if BlueMagic_INT:contains(spell.english) then
  1603. ChangeGear(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]])
  1604. elseif BlueMagic_Earth:contains(spell.english) then
  1605. ChangeGear(set_combine(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]],{
  1606. neck = "Quanpur Necklace"}))
  1607. elseif BlueMagic_Dark:contains(spell.english) then
  1608. if MAB_ind == 1 then
  1609. ChangeGear(set_combine(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]],{
  1610. head = "Pixie Hairpin +1", ring1 = "Archon Ring"}))
  1611. else
  1612. ChangeGear(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]])
  1613. end
  1614. elseif BlueMagic_Light:contains(spell.english) then
  1615. if spell.english == 'Magic Hammer' then
  1616. ChangeGear(set_combine(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]],{
  1617. head = 'Assim. Keffiyeh +3',
  1618. -- hands = "Hashishin Bazubands +1", - For a chunk of time off of Magic Hammer if desired, maybe the +2/3 one day when released
  1619. }))
  1620. else
  1621. ChangeGear(set_combine(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]],{
  1622. -- ring2 = "Weatherspoon Ring"
  1623. }))
  1624. end
  1625. end
  1626. end
  1627.  
  1628. if buffactive['Burst Affinity'] then
  1629. ChangeGear(sets.JA.BurstAffinity)
  1630. end
  1631.  
  1632. --Obi rule, but it overwrites the previous affinity + rules, and so I just wrote it like this.--
  1633. if world.day_element == spell.element or world.weather_element == spell.element then
  1634. if BlueMagic_INT:contains(spell.english) then
  1635. ChangeGear(set_combine(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]],{
  1636. waist = 'Hachirin-no-Obi'}))
  1637. elseif BlueMagic_Earth:contains(spell.english) then
  1638. ChangeGear(set_combine(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]],{
  1639. neck = "Quanpur Necklace", waist = 'Hachirin-no-Obi'}))
  1640. elseif BlueMagic_Dark:contains(spell.english) then
  1641. if MAB_ind == 1 then
  1642. ChangeGear(set_combine(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]],{
  1643. head = "Pixie Hairpin +1", ring1 = "Archon Ring", waist = 'Hachirin-no-Obi'}))
  1644. else
  1645. ChangeGear(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]])
  1646. end
  1647. elseif BlueMagic_Light:contains(spell.english) then
  1648. if spell.english == 'Magic Hammer' then
  1649. ChangeGear(set_combine(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]],{
  1650. head = 'Assim. Keffiyeh +3',
  1651. -- hands = "Hashishin Bazubands +1", - For a chunk of time off of Magic Hammer if desired, maybe the +2/3 one day when released
  1652. waist = 'Hachirin-no-Obi'}))
  1653. else
  1654. ChangeGear(set_combine(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]],{
  1655. -- ring2 = "Weatherspoon Ring"
  1656. waist = 'Hachirin-no-Obi'}))
  1657. end
  1658. end
  1659. end
  1660.  
  1661. --if spell.type == 'Trust' then
  1662. -- ChangeGear(set_combine(sets.precast.FC.Standard, { body = "Sylvie Unity Shirt",}))
  1663. --end
  1664. end
  1665.  
  1666.  
  1667. function mc_Item(spell, act)
  1668. end
  1669.  
  1670.  
  1671. ------------------------------------------
  1672. -- After Cast --
  1673. ------------------------------------------
  1674. function ac_JA(spell)
  1675. end
  1676.  
  1677. function ac_Magic(spell)
  1678. end
  1679.  
  1680. function ac_Item(spell)
  1681. end
  1682.  
  1683. function ac_Global()
  1684. if player.status == 'Engaged' then
  1685. EngagedState()
  1686. else
  1687. IdleState()
  1688. end
  1689. end
  1690.  
  1691. ------------------------------------------
  1692. -- Framework Core --
  1693. ------------------------------------------
  1694. function status_change(new, old)
  1695. if new == 'Idle' then
  1696. IdleState()
  1697. elseif new == 'Resting' then
  1698. RestingState()
  1699. elseif new == 'Engaged' then
  1700. EngagedState()
  1701. end
  1702.  
  1703. if player.status == 'Engaged' and TH == true then
  1704. ChangeGear(set_combine(equipSet, sets.Utility.TH))
  1705. end
  1706.  
  1707. if DT == true then
  1708. ChangeGear(sets.DT[sets.DT.index[DT_ind]])
  1709. end
  1710. end
  1711.  
  1712. function precast(spell, act)
  1713. if spell_control(spell) then
  1714. cancel_spell()
  1715. return
  1716. end
  1717. if spell.action_type == 'Ability' then
  1718. pc_JA(spell, act)
  1719. elseif spell.action_type == 'Magic' then
  1720. pc_Magic(spell, act)
  1721. else
  1722. pc_Item(spell, act)
  1723. end
  1724. end
  1725.  
  1726. function midcast(spell, act)
  1727. if spell.action_type == 'Ability' then
  1728. mc_JA(spell, act)
  1729. elseif spell.action_type == 'Magic' then
  1730. if TH == true and player.status == 'Idle' then
  1731. if BlueMagic_Buffs:contains(spell.english) or BlueMagic_Healing:contains(spell.english) or BlueMagic_Skill:contains(spell.english) or spell.skill == 'Enhancing Magic' or spell.skill == 'Healing Magic' then
  1732. mc_Magic(spell, act)
  1733. elseif PhysicalSpells:contains(spell.english) then
  1734. ChangeGear(set_combine(sets.BlueMagic.STR, sets.Utility.TH))
  1735. elseif MagicalSpells:contains(spell.english) then
  1736. if BlueMagic_Earth:contains(spell.english) then
  1737. ChangeGear(set_combine(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]], sets.Utility.TH,{
  1738. neck = "Quanpur Necklace"}))
  1739. elseif BlueMagic_Dark:contains(spell.english) then
  1740. if MAB_ind == 1 then
  1741. ChangeGear(set_combine(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]], sets.Utility.TH,{
  1742. head = "Pixie Hairpin +1", ring1 = "Archon Ring"}))
  1743. else
  1744. ChangeGear(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]], sets.Utility.TH)
  1745. end
  1746. else ChangeGear(set_combine(sets.BlueMagic.INT[sets.BlueMagic.INT.index[MAB_ind]], sets.Utility.TH))
  1747. end
  1748. end
  1749. else
  1750. mc_Magic(spell, act)
  1751. end
  1752. else
  1753. mc_Item(spell, act)
  1754. end
  1755.  
  1756. if spell.name == 'Utsusemi: Ichi' and overwrite then
  1757. send_command('cancel Copy Image|Copy Image (2)')
  1758. end
  1759.  
  1760. end
  1761.  
  1762. function aftercast(spell, act, spellMap, eventArgs)
  1763. if spell.action_type == 'Ability' then
  1764. ac_JA(spell)
  1765. elseif spell.action_type == 'Magic' then
  1766. ac_Magic(spell)
  1767. else
  1768. ac_Item(spell)
  1769. end
  1770. ac_Global()
  1771.  
  1772. --Countdowns--
  1773. if not spell.interrupted then
  1774. if spell.english == "Sheep Song" then
  1775. send_command('wait 30;gs c -cd '..spell.name..': [Off In 10~30 Seconds!];wait 10;gs c -cd '..spell.name..': [Off In 0~20 Seconds!]')
  1776. send_command('timers create "Sheep Song" 40 down')
  1777. elseif spell.english == "Yawn" then
  1778. send_command('wait 60;gs c -cd '..spell.name..': [Off In 10~30 Seconds!];wait 10;gs c -cd '..spell.name..': [Off In 0~20 Seconds!]')
  1779. send_command('timers create "Yawn" 70 down')
  1780. elseif spell.english == "Dream Flower" then
  1781. send_command('wait 80;gs c -cd '..spell.name..': [Off In 10~40 Seconds!];wait 10;gs c -cd '..spell.name..': [Off In 0~30 Seconds!]')
  1782. send_command('timers create "Dream Flower" 90 down')
  1783. elseif spell.english == "Entomb" then
  1784. send_command('timers create "Entomb Petrification" 60 down')
  1785. end
  1786. end
  1787.  
  1788. if not spell.interrupted then
  1789. if spell.name == 'Utsusemi: Ichi' then
  1790. overwrite = false
  1791. elseif spell.name == 'Utsusemi: Ni' then
  1792. overwrite = true
  1793. end
  1794. end
  1795.  
  1796. end
  1797.  
  1798. function ChangeGear(GearSet)
  1799. equipSet = GearSet
  1800. equip(GearSet)
  1801. end
  1802.  
  1803. function msg(str)
  1804. send_command('@input /echo <----- ' .. str .. ' ----->')
  1805. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement