Spicyryan

BLU Advanced .lua 2nd December 2020 (My Current .lua)

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