· 7 years ago · Oct 06, 2018, 04:12 AM
1--Built off of my BLU and RUN GSs.
2---Thanks to various sources such as LS members and BlueGartr for the help building this GearSwap.
3
4-------------------------------------
5--------- ---------
6------ ------
7--- Start of Gear ---
8------ ------
9--------- ---------
10-------------------------------------
11
12---------------------------------
13-- Start of Augmented Gear --
14---------------------------------
15
16function get_sets()
17 maps()
18
19 CarmineMask = {}
20 CarmineMask.MND = { name = "Carmine Mask +1", augments = { 'Accuracy+12','DEX+12','MND+20', } }
21 CarmineMask.FC = { name = "Carmine Mask +1", augments = { 'Accuracy+20','Mag. Acc.+12','"Fast Cast"+4', } }
22
23 ValorousMask = {}
24 ValorousMask.SCD = { name="Valorous Mask", augments={'Attack+20','Sklchn.dmg.+4%','STR+15','Accuracy+9',}}
25 ValorousMask.DA = { name="Valorous Mask", augments={'Mag. Acc.+11','"Dbl.Atk."+4','STR+15','Accuracy+5',}}
26
27 ValorousMitts = {}
28 ValorousMitts.SCDAcc = { name="Valorous Mitts", augments={'Accuracy+20','Sklchn.dmg.+4%','STR+13',}}
29 ValorousMitts.WSD = { name="Valorous Mitts", augments={'Weapon skill damage +3%','STR+8','Attack+14',}}
30
31 AcroGauntlets = {}
32 AcroGauntlets.STP = { name="Acro Gauntlets", augments={'Accuracy+20 Attack+20','"Store TP"+6','STR+6 DEX+6',}}
33 AcroGauntlets.Breath = { name="Acro Gauntlets", augments={'Pet: Breath+7',}}
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 ValorousBody = {}
40 ValorousBody.STP = { name="Valorous Mail", augments={'"Store TP"+7','DEX+8','Accuracy+15',}}
41 ValorousBody.WSD = { name="Valorous Mail", augments={'STR+7','Pet: DEX+7','Weapon skill damage +6%','Mag. Acc.+11 "Mag.Atk.Bns."+11',}}
42 ValorousBody.STRDA = { name="Valorous Mail", augments={'Accuracy+23 Attack+23','"Dbl.Atk."+4','STR+10','Attack+8',}}
43 ValorousBody.DA = { name="Valorous Mail", augments={'Accuracy+22','"Dbl.Atk."+5','STR+5','Attack+12',}}
44
45 ValorousHose = {}
46 ValorousHose.STP = { name="Valor. Hose", augments={'Accuracy+21','"Store TP"+8','VIT+6','Attack+15',}}
47 ValorousHose.STPacc = { name="Valor. Hose", augments={'Accuracy+25 Attack+25','"Store TP"+6','STR+7',}}
48 ValorousHose.WSD = { name="Valor. Hose", augments={'Weapon skill damage +5%','STR+8','Accuracy+2','Attack+13',}}
49 ValorousHose.SCD = { name="Valor. Hose", augments={'Attack+22','Sklchn.dmg.+3%','STR+9','Accuracy+12',}}
50
51 ValorousFeet = {}
52
53 LustFeet = {}
54 LustFeet.STRDA = { name="Lustra. Leggings +1", augments={'Attack+20','STR+8','"Dbl.Atk."+3',}}
55
56 TaeonBoots = {}
57 TaeonBoots.Regen ={ name="Taeon Boots", augments = {'Mag. Acc.+9','"Conserve MP"+5','"Regen" potency+3',} }
58
59 Brig = {}
60 Brig.STP = { name="Brigantia's Mantle", augments = { 'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10', } }
61 Brig.DATP = { name="Brigantia's Mantle", augments = {'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10', } }
62 Brig.STRDA = { name="Brigantia's Mantle", augments = { 'STR+20','Accuracy+20 Attack+20','STR+10','"Dbl.Atk."+10', } }
63 Brig.WSD = { name = "Brigantia's Mantle", augments = { 'STR+20', 'Accuracy+20 Attack+20', 'Weapon skill damage +10%', } }
64 Brig.FCMeva = { name = "Brigantia's Mantle", augments = { 'HP+60','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10', } }
65
66-------------------------------
67-- End of Augmented Gear --
68-------------------------------
69
70 sets.Idle = {}
71 --Idle Sets--
72 sets.Idle.index = { 'Standard', 'DT' }
73 Idle_ind = 1
74 sets.Idle.Standard = {
75 ammo = "Staunch Tathlum +1",
76 head = ValorousMask.SCD,
77 neck = "Loricate Torque +1",
78 ear1 = "Etiolation Earring",
79 ear2 = "Anastasi Earring",
80 body = "Vishap Mail +3",
81 hands = "Sulevia's Gauntlets +2",
82 ring1 = "Sheltered ring",
83 ring2 = "Karieyh Ring +1",
84 back = "Moonbeam Cape",
85 waist = "Flume Belt",
86 legs = "Carmine Cuisses +1",
87 feet = "Emicho Gambieras +1"
88 }
89
90 sets.Idle.DT = {
91 ammo = "Staunch Tathlum +1",
92 head = "Sulevia's Mask +2",
93 neck = "Loricate Torque +1",
94 ear1 = "Etiolation Earring",
95 ear2 = "Genmei Earring",
96 body = "Arke Corazza",
97 hands = "Sulevia's Gauntlets +2",
98 ring1 = "Sheltered ring",
99 ring2 = "Defending Ring",
100 back = "Moonbeam Cape",
101 waist = "Flume Belt",
102 legs = "Carmine Cuisses +1",
103 feet = "Sulevia's Leggings +2"
104 }
105
106 --Dat Waifu--
107 sets.Idle.Town = set_combine(sets.Idle.Standard, {
108 ring1 = "Matrimony ring",
109 })
110
111 --Idle Refresh--
112 sets.Idle.Refresh = {
113 head = "Jumalik Helm",
114 body = "Chozoron Coselete"
115 }
116
117 --Best in slot items depend on Acc and if you have SAMs roll or not.
118 --Unless the extra accuracy from something like the Shulmanu Collar comes into play.
119
120 -----------
121 --TP Sets--
122 -----------
123 sets.TP = {}
124 sets.TP.index = {'CappedHaste', 'AccuracyLite', 'AccuracyMid', 'AccuracyFull' }
125 TP_ind = 1
126
127 sets.TP.CappedHaste = {
128 ammo = "Ginsen",
129 head = "Flamma Zucchetto +2",
130 neck = "Lissome Necklace",
131 ear1 = "Cessance Earring",
132 ear2 = "Dedition Earring",
133 body = "Peltast's Plackart +1",
134 hands = "Flamma Manopolas +1",
135 --hands = AcroGauntlets.STP,
136 ring1 = "Rajas Ring",
137 ring2 = "Petrov Ring",
138 --back = Brig.DATP,
139 waist = "Sailfi Belt +1",
140 legs = "Valorous Hose",
141 feet = "Flamma Gambieras +1"
142 }
143
144 sets.TP.AccuracyLite = {
145 ammo = "Ginsen",
146 head = "Flamma Zucchetto +2",
147 neck = "Combatant's Torque",
148 ear1 = "Telos Earring",
149 ear2 = "Sherida Earring",
150 body = ValorousBody.STP,
151 --hands = "Flamma Manopolas +2",
152 hands = AcroGauntlets.STP,
153 ring1 = "Niqmaddu Ring",
154 ring2 = "Flamma Ring",
155 back = Brig.DATP,
156 waist = "Ioskeha Belt +1",
157 legs = ValorousHose.STP,
158 feet = "Flamma Gambieras +2"
159 }
160
161 sets.TP.AccuracyMid = {
162 ammo = "Ginsen",
163 head = "Flamma Zucchetto +2",
164 neck = "Combatant's Torque",
165 ear1 = "Telos Earring",
166 ear2 = "Sherida Earring",
167 body = ValorousBody.STP,
168 hands = "Flamma Manopolas +2",
169 ring1 = "Niqmaddu Ring",
170 ring2 = "Flamma Ring",
171 back = Brig.DATP,
172 waist = "Ioskeha Belt +1",
173 legs = "Pteroslaver Brais +3",
174 feet = "Flamma Gambieras +2"
175 }
176
177 sets.TP.AccuracyFull = {
178 ammo = "Ginsen",
179 head = "Flamma Zucchetto +2",
180 neck = "Shulmanu Collar",
181 ear1 = "Telos Earring",
182 ear2 = "Sherida Earring",
183 body = "Vishap Mail +3",
184 hands = "Emicho Gauntlets +1",
185 ring1 = "Niqmaddu Ring",
186 ring2 = "Flamma Ring",
187 back = Brig.DATP,
188 waist = "Ioskeha Belt +1",
189 legs = "Pteroslaver Brais +3",
190 feet = "Flamma Gambieras +2"
191 }
192
193 --SAM Roll--
194 --Changes gearsets while Samurai Roll is on
195
196 sets.SAMRoll = {}
197 sets.SAMRoll.index = { 'CappedHaste', 'AccuracyLite', 'AccuracyMid', 'AccuracyFull' }
198 SAMRoll_ind = 1 -- In the same rule as the TP Toggle so it toggles it at the same time
199
200 sets.SAMRoll.CappedHaste = set_combine(sets.TP.CappedHaste, {
201 neck = "Ganesha's Mala",
202 ear1 = "Brutal Earring",
203 body = "Dagon Breastplate",
204 hands = "Sulevia's Gauntlets +2",
205 back = Brig.DATP,
206 })
207
208 sets.SAMRoll.AccuracyLite = set_combine(sets.TP.AccuracyLite, {
209 neck = "Shulmanu Collar",
210 ear1 = "Cessance Earring",
211 body = "Dagon Breastplate",
212 hands = "Sulevia's Gauntlets +2",
213 back = Brig.DATP,
214 })
215
216 sets.SAMRoll.AccuracyMid = set_combine(sets.TP.AccuracyMid, {
217 neck = "Shulmanu Collar",
218 body = "Dagon Breastplate",
219 hands = "Sulevia's Gauntlets +2",
220 back = Brig.DATP,
221 })
222
223 sets.SAMRoll.AccuracyFull = set_combine(sets.TP.AccuracyFull, {
224 neck = "Shulmanu Collar",
225 hands = "Sulevia's Gauntlets +2",
226 back = Brig.DATP,
227 })
228
229 --DT Sets--
230 sets.DT = {}
231 sets.DT.index = { 'DT', 'DTHybrid', 'MDTV', 'MEVA', 'DTPet', 'DTAcc' }
232 DT_ind = 1
233
234 sets.DT.DT = {
235 ammo = "Staunch Tathlum +1",
236 head = "Sulevia's Mask +2",
237 neck = "Loricate Torque +1",
238 ear1 = "Genmei Earring",
239 ear2 = "Enmerkar Earring",
240 body = "Arke Corazza",
241 hands = "Sulevia's Gauntlets +2",
242 ring1 = "Defending Ring",
243 ring2 = "Gelatinous Ring +1",
244 back = Brig.DATP,
245 waist = "Ioskeha Belt +1",
246 legs = "Sulevia's Cuisses +2",
247 feet = "Flamma Gambieras +2"
248 }
249
250 sets.DT.DTHybrid = {
251 ammo = "Staunch Tathlum +1",
252 head = "Flamma Zucchetto +2",
253 neck = "Loricate Torque +1",
254 ear1 = "Telos Earring",
255 ear2 = "Sherida Earring",
256 body = ValorousBody.STP,
257 hands = "Sulevia's Gauntlets +2",
258 ring1 = "Defending Ring",
259 ring2 = "Niqmaddu Ring",
260 back = Brig.DATP,
261 waist = "Ioskeha Belt +1",
262 legs = "Sulevia's Cuisses +2",
263 feet = "Flamma Gambieras +2"
264 }
265 --Shell V on. Need 23% when 5/5 with pants, 21% with sheltered ring (24 with sheltered and trust)--
266 sets.DT.MDTV = {
267 ammo = "Staunch Tathlum +1",
268 head = "Flamma Zucchetto +2",
269 neck = "Warder's Charm +1",
270 ear1 = "Hearty Earring",
271 ear2 = "Sherida Earring",
272 body = ValorousBody.STP,
273 hands = "Sulevia's Gauntlets +2",
274 ring1 = "Defending Ring",
275 ring2 = "Shadow Ring",
276 back = Brig.FCMeva,
277 waist = "Ioskeha Belt +1",
278 legs = "Sulevia's Cuisses +2",
279 feet = "Flamma Gambieras +2"
280 }
281
282 sets.DT.MEVA = {
283 ammo = "Staunch Tathlum +1",
284 head = "Flamma Zucchetto +2",
285 neck = "Warder's Charm +1",
286 ear1 = "Hearty Earring",
287 ear2 = "Eabani Earring",
288 body = "Chozoron Coselete",
289 hands = "Leyline Gloves",
290 ring1 = "Defending Ring",
291 ring2 = "Purity Ring",
292 back = Brig.FCMeva,
293 waist = "Carrier's Sash",
294 legs = "Vishap Brais +3",
295 feet = "Flamma Gambieras +2"
296 }
297
298 sets.DT.DTPet = {
299 ammo = "Staunch Tathlum +1",
300 head = "Peltast's Mezail +1",
301 neck = "Loricate Torque +1",
302 ear1 = "Genmei Earring",
303 ear2 = "Enmerkar Earring",
304 body = "Arke Corazza",
305 hands = "Sulevia's Gauntlets +2",
306 ring1 = "Defending Ring",
307 ring2 = "Gelatinous Ring +1",
308 back = "Updraft Mantle",
309 waist = "Ioskeha Belt +1",
310 legs = "Sulevia's Cuisses +2",
311 feet = "Flamma Gambieras +2"
312 }
313
314 sets.DT.DTAcc = {
315 ammo = "Staunch Tathlum +1",
316 head = "Flamma Zucchetto +2",
317 neck = "Loricate Torque +1",
318 ear1 = "Telos Earring",
319 ear2 = "Mache Earring +1",
320 body = "Vishap Mail +3",
321 hands = "Sulevia's Gauntlets +2",
322 ring1 = "Defending Ring",
323 ring2 = "Niqmaddu Ring",
324 back = Brig.DATP,
325 waist = "Ioskeha Belt +1",
326 legs = "Vishap Brais +3", --Lack of +3 pieces on my DRG, like hands
327 feet = "Flamma Gambieras +2"
328 }
329
330 sets.WS = {}
331
332 sets.Stardiver = {}
333
334 sets.Stardiver.index = { 'Attack', 'MidAcc', 'HighAcc' }
335 Stardiver_ind = 1
336
337 --1118 Acc, Lowest TP set is 1161, be careful--
338 sets.Stardiver.Attack = {
339 ammo = "Amar Cluster",
340 head = "Flamma Zucchetto +2",
341 neck = "Fotia Gorget",
342 ear1 = "Cessance Earring",
343 ear2 = "Moonshade Earring",
344 body = "Sulevia's Platemail +1",
345 hands = "Sulevia's Gauntlets +2",
346 ring1 = "Rufescent Ring",
347 ring2 = "Petrov Ring",
348 --back = Brig.STRDA,
349 waist = "Fotia Belt",
350 legs = "Sulevia's Cuisses +2",
351 feet = "Sulevia's Leggings +1"
352 }
353
354 sets.Stardiver.MidAcc = {
355 ammo = "Knobkierrie",
356 head = "Flamma Zucchetto +2",
357 neck = "Fotia Gorget",
358 ear1 = "Moonshade Earring",
359 ear2 = "Sherida Earring",
360 body = "Dagon Breastplate",
361 hands = "Sulevia's Gauntlets +2",
362 ring1 = "Niqmaddu Ring",
363 ring2 = "Regal Ring",
364 back = Brig.STRDA,
365 waist = "Fotia Belt",
366 legs = "Sulevia's Cuisses +2",
367 feet = "Flamma Gambieras +2"
368 }
369
370 --Missing Vishap Greaves +3--
371 sets.Stardiver.HighAcc = {
372 ammo = "Ginsen", --Because who wants to carry an Amar Cluster??
373 head = "Flamma Zucchetto +2",
374 neck = "Fotia Gorget",
375 ear1 = "Moonshade Earring",
376 ear2 = "Mache Earring +1",
377 body = "Dagon Breastplate",
378 hands = "Flamma Manopolas +2",
379 ring1 = "Niqmaddu Ring",
380 ring2 = "Regal Ring",
381 back = Brig.STRDA,
382 waist = "Fotia Belt",
383 legs = "Vishap Brais +3",
384 feet = "Flamma Gambieras +2"
385 }
386
387 sets.Drakesbane = {}
388
389 sets.Drakesbane.index = { 'Attack', 'MidAcc', 'HighAcc' }
390 Drakesbane_ind = 1
391
392 sets.Drakesbane.Attack = {
393 ammo = "Knobkierrie",
394 head = "Pteroslaver Armet +3",
395 neck = "Fotia Gorget",
396 ear1 = "Brutal Earring",
397 ear2 = "Sherida Earring",
398 body = "Dagon Breastplate",
399 hands = "Flamma Manopolas +2",
400 ring1 = "Niqmaddu Ring",
401 ring2 = "Begrudging Ring",
402 back = Brig.STRDA,
403 waist = "Windbuffet Belt +1",
404 legs = "Peltast's Cuissots +1",
405 feet = LustFeet.STRDA
406 }
407
408 sets.Drakesbane.MidAcc = {
409 ammo = "Knobkierrie",
410 head = "Flamma Zucchetto +2",
411 neck = "Fotia Gorget",
412 ear1 = "Brutal Earring",
413 ear2 = "Sherida Earring",
414 body = "Dagon Breastplate",
415 hands = "Flamma Manopolas +2",
416 ring1 = "Niqmaddu Ring",
417 ring2 = "Begrudging Ring",
418 back = Brig.STRDA,
419 waist = "Ioskeha Belt +1",
420 legs = "Peltast's Cuissots +1",
421 feet = "Flamma Gambieras +2"
422 }
423
424 sets.Drakesbane.HighAcc = {
425 ammo = "Knobkierrie",
426 head = "Flamma Zucchetto +2",
427 neck = "Fotia Gorget",
428 ear1 = "Brutal Earring",
429 ear2 = "Sherida Earring",
430 body = "Dagon Breastplate",
431 hands = "Flamma Manopolas +2",
432 ring1 = "Niqmaddu Ring",
433 ring2 = "Regal Ring",
434 back = Brig.STRDA,
435 waist = "Ioskeha Belt +1",
436 legs = "Vishap Brais +3",
437 feet = "Flamma Gambieras +2"
438 }
439
440 sets.CamlannsTorment = {}
441
442 sets.CamlannsTorment.index = { 'Attack', 'Accuracy' }
443 CamlannsTorment_ind = 1
444
445 sets.CamlannsTorment.Attack = {
446 ammo = "Knobkierrie",
447 head = ValorousMask.SCD,
448 neck = "Fotia Gorget",
449 ear1 = "Ishvara Earring",
450 ear2 = "Sherida Earring",
451 body = ValorousBody.WSD,
452 hands = "Pteroslaver Finger Gauntlets +3",
453 ring1 = "Niqmaddu Ring",
454 ring2 = "Karieyh Ring +1",
455 back = Brig.WSD,
456 waist = "Fotia Belt",
457 legs = "Vishap Brais +3",
458 feet = "Sulevia's Leggings +2"
459 }
460
461 sets.CamlannsTorment.Accuracy = {
462 ammo = "Knobkierrie",
463 head = ValorousMask.SCD,
464 neck = "Fotia Gorget",
465 ear1 = "Telos Earring",
466 ear2 = "Sherida Earring",
467 body = ValorousBody.WSD,
468 hands = "Pteroslaver Finger Gauntlets +3",
469 ring1 = "Niqmaddu Ring",
470 ring2 = "Karieyh Ring +1",
471 back = Brig.WSD,
472 waist = "Fotia Belt",
473 legs = "Vishap Brais +3",
474 feet = "Sulevia's Leggings +2"
475 }
476
477 sets.SonicThrust = {}
478
479 sets.SonicThrust.index = { 'Attack', 'Accuracy' }
480 SonicThrust_ind = 1
481 sets.SonicThrust.Attack = {
482 ammo = "Knobkierrie",
483 head = ValorousMask.SCD,
484 neck = "Fotia Gorget",
485 ear1 = "Moonshade Earring",
486 ear2 = "Sherida Earring",
487 body = ValorousBody.WSD,
488 hands = "Pteroslaver Finger Gauntlets +3",
489 ring1 = "Niqmaddu Ring",
490 ring2 = "Regal Ring",
491 back = Brig.WSD,
492 waist = "Fotia Belt",
493 legs = "Vishap Brais +3",
494 feet = "Sulevia's Leggings +2"
495 }
496
497 sets.SonicThrust.Accuracy = {
498 ammo = "Knobkierrie",
499 head = ValorousMask.SCD,
500 neck = "Fotia Gorget",
501 ear1 = "Moonshade Earring",
502 ear2 = "Sherida Earring",
503 body = "Sulevia's Platemail +2",
504 hands = "Pteroslaver Finger Gauntlets +3",
505 ring1 = "Niqmaddu Ring",
506 ring2 = "Regal Ring",
507 back = Brig.WSD,
508 waist = "Fotia Belt",
509 legs = "Vishap Brais +3",
510 feet = "Sulevia's Leggings +2"
511 }
512
513 sets.LegSweep = {
514 ammo = "Pemphredo Tathlum",
515 head = "Flamma Zucchetto +2",
516 neck = "Fotia Gorget",
517 ear1 = "Moonshade Earring",
518 ear2 = "Dignitary's Earring",
519 body = "Vishap Mail +3",
520 hands = "Flamma Manopolas +2",
521 ring1 = "Regal Ring",
522 ring2 = "Flamma Ring",
523 back = Brig.STRDA,
524 waist = "Fotia Belt",
525 legs = "Pteroslaver Brais +3",
526 feet = "Flamma Gambieras +2"
527 }
528
529 --SC DMG Sets-- 34%
530 sets.SCDmg = {
531 head = ValorousMask.SCD,
532 body = "Sulevia's Platemail +2",
533 hands = ValorousMitts.SCDAcc,
534 ring2 = "Mujin Band",
535 legs = ValorousHose.SCD,
536 feet = "Emicho Gambieras +1"
537 }
538
539 --When Allies is on, assumes 20% is being given, caps 50%--
540 sets.SCDmgAllies = {
541 body = "Sulevia's Platemail +2",
542 hands = ValorousMitts.SCDAcc,
543 ring2 = "Mujin Band",
544 legs = ValorousHose.SCD,
545 feet = "Emicho Gambieras +1"
546 }
547
548-------------------------
549-- Blue Magic Sets --
550-------------------------
551 sets.BlueMagic = {}
552
553 sets.BlueMagic.STR = {
554 ammo = "Floestone",
555 head = ValorousMask.SCD,
556 neck = "Caro Necklace",
557 ear1 = "Telos Earring",
558 ear2 = "Sherida Earring",
559 body = "Sulevia's Platemail +2",
560 hands = "Sulevia's Gauntlets +2",
561 ring1 = "Shukuyu Ring",
562 ring2 = "Regal Ring",
563 back = Brig.STRDA,
564 waist = "Prosilio Belt +1",
565 legs = "Sulevia's Cuisses +2",
566 feet = "Sulevia's Leggings +2"
567 }
568
569--------------------------
570-- Curing Magic Set --
571--------------------------
572
573 sets.Cures = {
574 ammo = "",
575 head = "",
576 neck = "",
577 ear1 = "",
578 ear2 = "",
579 body = "",
580 hands = "",
581 ring1 = "",
582 ring2 = "",
583 back = "",
584 waist = "",
585 legs = "",
586 feet = ""
587 }
588----------------------
589-- Utility Sets --
590-----------------------
591-- Sets for one thing or another.
592-- Macro in game with:
593
594-- /console gs equip sets.butts.andfronts
595-- /console gs c lockgearindex
596
597 sets.Utility = {}
598
599 sets.Utility.Steps = set_combine(sets.TP.AccuracyFull, {})
600
601 sets.Utility.Twilight = {
602 head = "Twilight Helm",
603 body = "Twilight Mail"
604 }
605
606 sets.Utility.Doom = {
607 ring1 = "Purity Ring",
608 ring2 = "Saida Ring",
609 waist = "Gishdubar Sash"
610 }
611
612 sets.WSDayBonus = (set_combine(equipSet,{head="Gavialis Helm"}))
613
614 sets.Utility.TH = {
615 waist = "Chaac Belt"
616 }
617
618 sets.Utility.DerpDT = {
619 ammo = "Staunch Tathlum +1",
620 head = "Sulevia's Mask +2",
621 neck = "Loricate Torque +1",
622 ear1 = "Etiolation Earring",
623 ear2 = "Odnowa Earring +1",
624 body = "Sulevia's Platemail +2",
625 hands = "Sulevia's Gauntlets +2",
626 ring1 = "Defending Ring",
627 ring2 = "Gelatinous Ring +1",
628 back = Brig.FCMeva,
629 waist = "Ioskeha Belt +1",
630 legs = "Sulevia's Cuisses +2",
631 feet = "Flamma Gambieras +2"
632 }
633
634 --Shell II only--
635 sets.Utility.MDTII = {
636 ammo = "",
637 head = "",
638 neck = "",
639 ear1 = "",
640 ear2 = "",
641 body = "",
642 hands = "",
643 ring1 = "",
644 ring2 = "",
645 back = "",
646 waist = "",
647 legs = "",
648 feet = ""
649 }
650
651 --No Shell--
652 sets.Utility.MDTNO = {
653 ammo = "",
654 head = "",
655 neck = "",
656 ear1 = "",
657 ear2 = "",
658 body = "",
659 hands = "",
660 ring1 = "",
661 ring2 = "",
662 back = "",
663 waist = "",
664 legs = "",
665 feet = ""
666 }
667
668---------------------
669-- Enmity Set --
670---------------------
671
672 sets.Enmity = {
673 ammo = "",
674 head = "",
675 neck = "",
676 ear1 = "",
677 ear2 = "",
678 body = "",
679 hands = "",
680 ring1 = "",
681 ring2 = "",
682 back = "",
683 waist = "",
684 legs = "",
685 feet = ""
686 }
687
688------------------------
689-- Enhancing Sets --
690------------------------
691
692 sets.Enhancing = {}
693
694 sets.Enhancing.Skill = {
695 ammo = "",
696 head = "",
697 neck = "",
698 ear1 = "",
699 ear2 = "",
700 body = "",
701 hands = "",
702 ring1 = "",
703 ring2 = "",
704 back = "",
705 waist = "",
706 legs = "",
707 feet = ""
708 }
709
710 sets.Enhancing.Phalanx = set_combine(sets.Enhancing.Skill, {
711 })
712
713 sets.Enhancing.Refresh = set_combine(sets.Enhancing.Skill, {
714 waist = "Gishdubar Sash",
715 })
716
717 sets.Enhancing.Regen = set_combine(sets.Enhancing.Skill, {
718 feet = TaeonBoots.Regen,
719 })
720
721 sets.Enhancing.ProShell = set_combine(sets.Enhancing.Skill, {
722 ring2 = "Sheltered Ring",
723 })
724
725------------------------
726-- Healing Breath --
727------------------------
728
729 sets.HB = {}
730 --Midcast Set for HB spell triggers--
731 sets.HB.Trigger = {
732 ammo = "Staunch Tathlum +1",
733 head = "Vishap Armet",
734 neck = "Sanctity Necklace",
735 ear1 = "Etiolation Earring",
736 ear2 = "Eabani Earring",
737 body = TaeonBody.FC,
738 hands = "Emicho Gauntlets +1",
739 ring1 = "Etana Ring",
740 ring2 = "Gelatinous Ring +1",
741 waist = "Carrier's Sash",
742 legs = "Vishap Brais +3",
743 back = "Moonbeam Cape"
744 }
745
746 --The Freshmaker--
747 sets.HB.Mentos = {
748 head = "Pteroslaver Armet +3",
749 ear2 = "Anastasi Earring",
750 body = "Acro Surcoat",
751 hands = "Despair Finger Gauntlets",
752 legs = "Vishap Brais +3",
753 feet = "Acro Leggings",
754 back = "Updraft Mantle"
755 }
756
757 --Elemental Breath--
758 sets.HB.Ricola = {
759 head = "Pteroslaver Armet +3",
760 body = "Acro Surcoat",
761 hands = AcroGauntlets.Breath,
762 legs = "Acro Breeches",
763 feet = "Ptero. Greaves +1",
764 back = "Updraft Mantle"
765 }
766
767--------------------------
768-- Job Ability Sets --
769--------------------------
770 sets.JA = {}
771
772 sets.JA.SpiritSurge = {
773 body = "Pteroslaver Mail"
774 }
775
776 sets.JA.CallWyvern = {
777 hands = "Pteroslaver Mail"
778 }
779
780 sets.JA.AncientCircle = {
781 legs = "Vishap Brais +3"
782 }
783
784 sets.JA.SpiritLink = {
785 head = "Vishap Armet",
786 ear1 = "Pratik Earring",
787 hands = "Peltast's Vambraces",
788 feet = "Ptero. Greaves +1"
789 }
790
791 sets.JA.Angon = {
792 hands = "Pteroslaver Finger Gauntlets +3"
793 }
794 --If you actually use DB then you will need to make a buff active rule to make it active--
795 sets.JA.DeepBreathing = {
796 head = "Pteroslaver Armet +3"
797 }
798
799----------------------
800-- Precast Sets --
801----------------------
802 sets.precast = {}
803
804 sets.precast.FastCast = {}
805
806 sets.precast.FastCast.Standard = {
807 ammo = "Sapience Orb",
808 head = CarmineMask.MND,
809 neck = "Orunmila's Torque",
810 ear1 = "Etiolation Earring",
811 ear2 = "Loquac. Earring",
812 body = TaeonBody.FC,
813 hands = "Leyline Gloves",
814 ring1 = "Prolix Ring",
815 ring2 = "Rahab Ring",
816 back = Brig.FCMeva,
817 legs = "Enif Cosciales",
818 feet = "Carmine Greaves +1"
819 }
820
821end
822
823---End of Gear---------------------------------------------------------------------------------------------------------------------------------------------------------
824
825-------------------------------------
826--------- ---------
827------ ------
828--- Start of Maps ---
829------ ------
830--------- ---------
831-------------------------------------
832
833-------------------------
834-- BLU Spells List --
835-------------------------
836
837function maps()
838 PhysicalSpells = S {
839 'Bludgeon', 'Body Slam', 'Feather Storm', 'Mandibular Bite', 'Queasyshroom',
840 'Screwdriver', 'Sickle Slash', 'Smite of Rage', 'Power Attack',
841 'Terror Touch', 'Battle Dance', 'Claw Cyclone', 'Grand Slam',
842 'Jet Stream', 'Pinecone Bomb', 'Wild Oats', 'Uppercut'
843 }
844
845 MagicalSpells = S {}
846
847 BlueMagic_Buffs = S {
848 'Refueling'
849 }
850
851 BlueMagic_Healing = S {
852 'Healing Breeze', 'Pollen', 'Wild Carrot'
853 }
854
855 BlueMagic_Enmity = S {
856 'Blank Gaze', 'Jettatura', 'Geist Wall', 'Sheep Song', 'Soporific'
857 }
858
859end
860
861------------------------
862-- Sub Mage Table --
863------------------------
864
865mp_jobs = S {"WHM", "BLM", "RDM", "SMN", "BLU", "SCH", "GEO", "PLD", "DRK", "RUN"}
866
867--------------------------------
868-- Elemental Breath Table --
869--------------------------------
870
871ElementalBreath = S { "Flame Breath", "Sand Breath", "Hydro Breath",
872"Gust Breath", "Frost Breath", "Lightning Breath", }
873
874-------------------------------
875-- WS Chart For Gavialis --
876-------------------------------
877
878check_ws_day = {
879Firesday = S {'Liquefaction','Fusion','Light'},
880Earthsday= S {'Scission','Gravitation','Darkness'},
881Watersday = S {'Reverberation','Distortion','Darkness'},
882Windsday = S {'Detonation','Fragmentation','Light'},
883Iceday = S {'Induration','Distortion','Darkness'},
884Lightningsday = S {'Impaction','Fragmentation','Light'},
885Lightsday = S {'Transfixion','Fusion','Light'},
886Darksday = S {'Compression','Gravitation','Darkness'},}
887
888
889---------------------
890-- HB Triggers --
891---------------------
892Trigger = S {
893 'Power Attack', 'Foot Kick', 'Sprout Smack', 'Helldive', 'Cocoon', 'Wild Carrot',
894 'Dia', 'Diaga', 'Dia II', 'Sneak', 'Invisible', 'Cure', 'Cure II', 'Cure III', 'Cure IV', 'Cura',
895 'Raise', 'Reraise', 'Poisona', 'Paralyna', 'Blindna', 'Silena', 'Stona', 'Cursna', 'Haste',
896 'Regen', 'Regen II', 'Erase', 'Flash'
897}
898
899------------------------
900-- Town Gear List --
901------------------------
902
903Town = S {
904 "Ru'Lude Gardens", "Upper Jeuno", "Lower Jeuno", "Port Jeuno",
905 "Port Windurst", "Windurst Waters", "Windurst Woods", "Windurst Walls", "Heavens Tower",
906 "Port San d'Oria", "Northern San d'Oria", "Southern San d'Oria", "Chateau d'Oraguille",
907 "Port Bastok", "Bastok Markets", "Bastok Mines", "Metalworks",
908 "Aht Urhgan Whitegate", "Nashmau",
909 "Selbina", "Mhaura", "Norg", "Kazham", "Tavanazian Safehold",
910 "Eastern Adoulin", "Western Adoulin", "Celennia Memorial Library", "Mog Garden"
911}
912
913---End of Maps----------------------------------------------------------------------------------------------------------------------------------------------------------
914
915
916--------------------------------------
917--------- ---------
918------ ------
919--- Start of Rules ---
920------ ------
921--------- ---------
922--------------------------------------
923
924----------------------------------------------
925-- Macro and Style Change on Job Change --
926----------------------------------------------
927function set_macros(sheet,book)
928 if book then
929 send_command('@input /macro book '..tostring(book)..';wait .1;input /macro set '..tostring(sheet))
930 return
931 end
932 send_command('@input /macro set '..tostring(sheet))
933end
934
935function set_style(sheet)
936 send_command('@input ;wait 5.0;input /lockstyleset '..sheet)
937 add_to_chat (56, 'Your lockstyle looks like shit, and you should feel bad.')
938 add_to_chat (55, 'You are on '..('DRG '):color(5)..''..('btw. '):color(55)..''..('Macros set!'):color(121))
939-- add_to_chat (23, '"I merely chewed in self defense, but I never swallowed"')
940end
941
942--Page, Book--
943set_macros(1,14)
944--Use the Lockstyle Number--
945set_style(62)
946-------------------------------
947-- Variables --
948-------------------------------
949SetLocked = false --Used to Check if set is locked before changing equipment
950LockedEquipSet = {} --Placeholder to store desired lock set
951LockGearSet = {}
952equipSet = {} --Currently Equiped Gearset
953LockGearIndex = false
954LockGearIndex = false
955TargetDistance = 0
956TH = false --TH rule default
957DT = false
958SkillchainPending = false
959AllowSkillchainGear = true --Whether or not hte skillchainPending system should be disabled
960PetBreathFailover = false
961SkillchainTimer = 0
962
963------------------------------------
964-- Windower Hooks --
965------------------------------------
966
967function buff_change(n, gain, buff_table)
968 local name
969 name = string.lower(n)
970 if S{"terror","petrification","sleep","stun"}:contains(name) then
971 if gain then
972 ChangeGear(sets.Utility.DerpDT)
973 elseif not has_any_buff_of({"terror","petrification","sleep","stun"}) then
974 if player.status == 'Engaged' then
975 if LockGearIndex then
976 ChangeGear(LockGearSet)
977 elseif not LockGearIndex then
978 if DT == true then
979 ChangeGear(sets.DT[sets.DT.index[DT_ind]])
980 elseif SAMRoll == true then
981 ChangeGear(sets.SAMRoll[sets.SAMRoll.index[SAMRoll_ind]])
982 else
983 ChangeGear(sets.TP[sets.TP.index[TP_ind]])
984 end
985 end
986 elseif player.status == 'Idle' then
987 if LockGearIndex then
988 ChangeGear(LockGearSet)
989 elseif not LockGearIndex then
990 ChangeGear(sets.Idle[sets.Idle.index[Idle_ind]])
991 end
992 end
993 end
994 elseif name == "doom" then
995 if gain then
996 ChangeGear(sets.Utility.Doom)
997 send_command('@input /p Doomed {~o~:} !')
998 disable('ring1','ring2','waist')
999 else
1000 if player.status == 'Engaged' then
1001 if LockGearIndex then
1002 send_command('@input /p Doom is off {^_^}')
1003 enable('ring1','ring2','waist')
1004 ChangeGear(LockGearSet)
1005 else
1006 send_command('@input /p Doom is off {^_^}')
1007 enable('ring1','ring2','waist')
1008 if DT == true then
1009 ChangeGear(sets.DT[sets.DT.index[DT_ind]])
1010 elseif SAMRoll == true then
1011 ChangeGear(sets.SAMRoll[sets.SAMRoll.index[SAMRoll_ind]])
1012 else
1013 ChangeGear(sets.TP[sets.TP.index[TP_ind]])
1014 end
1015 end
1016 elseif player.status == 'Idle' then
1017 if LockGearIndex then
1018 send_command('@input /p Doom is off {^_^}')
1019 enable('ring1','ring2','waist')
1020 ChangeGear(LockGearSet)
1021 else
1022 send_command('@input /p Doom is off {^_^}')
1023 enable('ring1','ring2','waist')
1024 ChangeGear(sets.Idle[sets.Idle.index[Idle_ind]])
1025 end
1026 end
1027 end
1028 elseif name == "charm" then
1029 if gain then
1030 send_command('@input /p Charmed {<3_<3:} !')
1031 else
1032 send_command('@input /p Charm is off {~_^}')
1033 end
1034 elseif name == "weakness" then
1035 if gain then
1036 enable('ring1','ring2','waist')
1037 end
1038 elseif name == "weakness" and player.status == 'Idle' then
1039 if gain then
1040 enable('ring1','ring2','waist')
1041 ChangeGear(sets.Utility.Twilight)
1042 else
1043 if player.status == 'Idle' then
1044 if LockGearIndex then
1045 ChangeGear(LockGearSet)
1046 else
1047 ChangeGear(sets.Idle[sets.Idle.index[Idle_ind]])
1048 end
1049
1050 end
1051 end
1052 elseif name == "hasso" then
1053 if gain then
1054 else
1055 send_command('gs c -cd Hasso Lost!')
1056 end
1057 end
1058
1059 if name == "samurai roll" then
1060 if gain then
1061 SAMRoll = true
1062 if LockGearIndex then
1063 ChangeGear(LockGearSet)
1064 elseif DT == true then
1065 ChangeGear(sets.DT[sets.DT.index[DT_ind]])
1066 else
1067 if player.status == 'Engaged' then
1068 ChangeGear(sets.SAMRoll[sets.SAMRoll.index[SAMRoll_ind]])
1069 end
1070 end
1071 else
1072 SAMRoll = false
1073 end
1074 end
1075end
1076
1077function has_any_buff_of(buff_set)--returns true if you have any of the buffs given
1078 for i,v in pairs(buff_set) do
1079 if buffactive[v] ~= nil then return true end
1080 end
1081end
1082
1083---------------------------
1084-- Binds --
1085---------------------------
1086send_command('bind f9 gs c toggle TP set') -- Hit f9, toggles the sets
1087send_command('bind f10 gs c toggle Stardiver set')
1088send_command('bind f11 gs c toggle Camlann set')
1089send_command('bind f12 gs c toggle Idle set')
1090send_command('bind ^f8 input /ws "Leg Sweep" <t>')
1091send_command('bind ^f9 input /ws "Stardiver" <t>') -- ^ means cntrl, so hit cntrl + f9
1092send_command('bind ^f10 input /ws "Camlann\'s Torment"] <t>')
1093send_command('bind ^f11 input /ws "Sonic Thrust" <t>')
1094send_command('bind ^f12 input /ws "Drakesbane" <t>')
1095send_command('bind !f7 gs c toggle DT set') -- ! means alt. this exists only for toggling outside of this mode being active, otherwise f9
1096send_command('bind !f8 gs c toggle DT') -- ! means alt. DT on or off
1097send_command('bind !f9 gs c toggle backwards')
1098send_command('bind !f10 gs c AllowSkillchainGear')
1099send_command('bind !f11 empty')
1100send_command('bind !f12 gs c lockgearindex')
1101
1102send_command('bind !e input /item "Echo Drops" <me>')
1103send_command('bind !r input /item "Remedy" <me>')
1104send_command('bind !p input /item "Panacea" <me>')
1105send_command('bind !h input /item "Holy Water" <me>')
1106send_command('bind !w input /equip ring2 "Warp Ring"; /echo Warping; wait 11; input /item "Warp Ring" <me>;')
1107send_command('bind !q input /equip ring2 "Dim. Ring (Holla)"; /echo Reisenjima; wait 11; input /item "Dim. Ring (Holla)" <me>;')
1108send_command('bind !t gs c toggle TH') -- alt + t toggles TH mode
1109
1110--Unload Binds
1111function file_unload()
1112 send_command('unbind ^f8')
1113 send_command('unbind ^f9')
1114 send_command('unbind ^f10')
1115 send_command('unbind ^f11')
1116 send_command('unbind ^f12')
1117 send_command('unbind !f7')
1118 send_command('unbind !f8')
1119 send_command('unbind !f9')
1120 send_command('unbind !f10')
1121 send_command('unbind !f11')
1122 send_command('unbind !f12')
1123 send_command('unbind f9')
1124 send_command('unbind f10')
1125 send_command('unbind f11')
1126 send_command('unbind f12')
1127
1128 send_command('unbind !e')
1129 send_command('unbind !r')
1130 send_command('unbind !p')
1131 send_command('unbind !h')
1132 send_command('unbind !w')
1133 send_command('unbind !t')
1134end
1135
1136--------------------------------------
1137-- Console Commands --
1138--------------------------------------
1139function self_command(command)
1140 if command == 'togglelock' then
1141 if SetLocked == false then
1142 msg("Equipment Set LOCKED !!!")
1143 else
1144 SetLocked = false
1145 msg("Equipment Set UNLOCKED!")
1146 end
1147 elseif command == 'lockgearindex' then
1148 if LockGearIndex == false then
1149 LockGearIndex = true
1150 LockGearSet = {
1151 ammo = player.equipment.ammo,
1152 head = player.equipment.head,
1153 neck = player.equipment.neck,
1154 ear1 = player.equipment.left_ear,
1155 ear2 = player.equipment.right_ear,
1156 body = player.equipment.body,
1157 hands = player.equipment.hands,
1158 ring1 = player.equipment.left_ring,
1159 ring2 = player.equipment.right_ring,
1160 back = player.equipment.back,
1161 waist = player.equipment.waist,
1162 legs = player.equipment.legs,
1163 feet = player.equipment.feet
1164 }
1165 msg("Gear Index Locked !!!")
1166 else
1167 LockGearIndex = false
1168 msg("Gear Index Unlocked")
1169 if player.status == 'Engaged' then
1170 if DT == true then
1171 ChangeGear(sets.DT[sets.DT.index[DT_ind]])
1172 elseif SAMRoll == true then
1173 ChangeGear(sets.SAMRoll[sets.SAMRoll.index[SAMRoll_ind]])
1174 else
1175 ChangeGear(sets.TP[sets.TP.index[TP_ind]])
1176 end
1177 else
1178 ChangeGear(sets.Idle[sets.Idle.index[Idle_ind]])
1179 end
1180 end
1181 end
1182 if command == 'toggle TP set' then
1183 if DT == true then
1184 DT_ind = DT_ind + 1
1185 if DT_ind > #sets.DT.index then DT_ind = 1 end
1186 send_command('@input /echo <----- DT Set changed to ' .. sets.DT.index[DT_ind] .. ' ----->')
1187 ChangeGear(sets.DT[sets.DT.index[DT_ind]])
1188 elseif DT == false then
1189 TP_ind = TP_ind + 1
1190 SAMRoll_ind = SAMRoll_ind + 1
1191 if TP_ind > #sets.TP.index then TP_ind = 1 end
1192 if SAMRoll_ind > #sets.SAMRoll.index then SAMRoll_ind = 1 end
1193 send_command('@input /echo <----- TP Set changed to ' .. sets.TP.index[TP_ind] .. ' ----->')
1194 if player.status == 'Engaged' then
1195 if SAMRoll == true then
1196 ChangeGear(sets.SAMRoll[sets.SAMRoll.index[SAMRoll_ind]])
1197 else
1198 ChangeGear(sets.TP[sets.TP.index[TP_ind]])
1199 end
1200 end
1201 end
1202 elseif command == 'toggle Idle set' then
1203 Idle_ind = Idle_ind + 1
1204 if Idle_ind > #sets.Idle.index then Idle_ind = 1 end
1205 send_command('@input /echo <----- Idle Set changed to ' .. sets.Idle.index[Idle_ind] .. ' ----->')
1206 if player.status == 'Idle' then
1207 ChangeGear(sets.Idle[sets.Idle.index[Idle_ind]])
1208 end
1209 elseif command == 'toggle Camlann set' then
1210 CamlannsTorment_ind = CamlannsTorment_ind + 1
1211 SonicThrust_ind = SonicThrust_ind + 1
1212 if CamlannsTorment_ind > #sets.CamlannsTorment.index then CamlannsTorment_ind = 1 end
1213 send_command('@input /echo <----- Camlanns/Sonic Set changed to ' .. sets.CamlannsTorment.index[CamlannsTorment_ind] .. ' ----->')
1214 elseif command == 'toggle Stardiver set' then
1215 Stardiver_ind = Stardiver_ind + 1
1216 Drakesbane_ind = Drakesbane_ind + 1
1217 if Stardiver_ind > #sets.Stardiver.index then Stardiver_ind = 1 end
1218 send_command('@input /echo <----- Stardiver/Drakes Set changed to ' .. sets.Stardiver.index[Stardiver_ind] .. ' ----->')
1219 elseif command == 'toggle DT set' then
1220 DT_ind = DT_ind + 1
1221 if DT_ind > #sets.DT.index then DT_ind = 1 end
1222 send_command('@input /echo <----- DT Set changed to ' .. sets.DT.index[DT_ind] .. ' ----->')
1223 if DT == true then
1224 ChangeGear(sets.DT[sets.DT.index[DT_ind]])
1225 end
1226 elseif command == 'toggle DT' then
1227 if DT == true then
1228 DT = false
1229 send_command('@input /echo <----- DT TP: [Off] ----->')
1230 else
1231 DT = true
1232 send_command('@input /echo <----- DT TP: [On] ----->')
1233 end
1234 status_change(player.status)
1235 elseif command == 'toggle TH' then
1236 if TH == true then
1237 TH = false
1238 send_command('@input /echo <----- Treasure Hunter TP: [Off] ----->')
1239 else
1240 TH = true
1241 send_command('@input /echo <----- Treasure Hunter TP: [On] ----->')
1242 end
1243 status_change(player.status)
1244 elseif command == 'toggle backwards' then
1245 if DT == true then
1246 DT_ind = DT_ind -1
1247 if DT_ind == 0 then
1248 DT_ind = #sets.DT.index
1249 end
1250 send_command('@input /echo <----- DT Set changed to ' .. sets.DT.index[DT_ind] .. ' ----->')
1251 ChangeGear(sets.DT[sets.DT.index[DT_ind]])
1252 elseif DT == false then
1253 TP_ind = TP_ind -1
1254 SAMRoll_ind = SAMRoll_ind -1
1255 if TP_ind == 0 then
1256 TP_ind = #sets.TP.index
1257 end
1258 if SAMRoll_ind == 0 then
1259 SAMRoll_ind = #sets.SAMRoll.index
1260 end
1261 send_command('@input /echo <----- TP Set changed to ' .. sets.TP.index[TP_ind] .. ' ----->')
1262 if player.status == 'Engaged' then
1263 if SAMRoll == true then
1264 ChangeGear(sets.SAMRoll[sets.SAMRoll.index[SAMRoll_ind]])
1265 else
1266 ChangeGear(sets.TP[sets.TP.index[TP_ind]])
1267 end
1268 end
1269 end
1270 elseif command == 'ZoneChange' then
1271 IdleState()
1272 elseif command == 'AllowSkillchainGear' then
1273 AllowSkillchainGear = not AllowSkillchainGear
1274 add_to_chat (56, 'Allow use of skillchain damage gear: ' ..tostring(AllowSkillchainGear))
1275 elseif command == 'PetBreathFailover' then
1276 if PetBreathFailover == true then --If the PetBreathFailover wasnt reset to false by pet_aftercast then we set it to false here
1277 PetBreathFailover = false --And call ac_global to reset our gear
1278 ac_Global()
1279 end
1280 elseif string.sub(command, 0, 4) == '-cd ' then --If the first 4 characters of the command are '-cd '
1281 add_to_chat (30, string.sub(command, 5, string.len(command))) --add everything after '-cd ' to a message in the chat
1282 end
1283end
1284
1285--------------------------------------
1286-- Character States --
1287--------------------------------------
1288function IdleState()
1289 if LockGearIndex then
1290 ChangeGear(LockGearSet)
1291 elseif DT == true then
1292 ChangeGear(sets.DT[sets.DT.index[DT_ind]])
1293 else
1294 ChangeGear(sets.Idle[sets.Idle.index[Idle_ind]])
1295 end
1296
1297 if buffactive['Weakness'] then
1298 ChangeGear(sets.Utility.Twilight) --Only on during weakened idle, and requires an action after raising to trigger. Use lockgear otherwise.
1299 elseif mp_jobs:contains(player.sub_job) and player.mpp < 55 then -- Keep in mind midcast MP may be higher than idle MP which is what this looks for, adjust accordingly.
1300 ChangeGear(sets.Idle.Refresh)
1301 else
1302 ChangeGear(sets.Idle[sets.Idle.index[Idle_ind]])
1303 end
1304
1305 if Town:contains(world.area) and player.mpp < 75 then
1306 ChangeGear(set_combine(sets.Idle.Town, sets.Idle.Refresh))
1307 elseif Town:contains(world.area) then
1308 ChangeGear(sets.Idle.Town)
1309 end
1310
1311end
1312
1313windower.raw_register_event('zone change',function()
1314windower.send_command('@wait 9; input //gs c ZoneChange')
1315end)
1316
1317function RestingState()
1318
1319end
1320
1321function EngagedState()
1322 if LockGearIndex then
1323 ChangeGear(LockGearSet)
1324 elseif not LockGearIndex then
1325 if DT == true then
1326 ChangeGear(sets.DT[sets.DT.index[DT_ind]])
1327 elseif buffactive["Samurai Roll"] then
1328 SAMRoll = true
1329 ChangeGear(sets.SAMRoll[sets.SAMRoll.index[SAMRoll_ind]])
1330 else
1331 SAMRoll = false
1332 ChangeGear(sets.TP[sets.TP.index[TP_ind]])
1333 end
1334 end
1335end
1336
1337-----------------------------
1338-- Spell control --
1339-----------------------------
1340unusable_buff = {
1341 spell={'Charm','Mute','Omerta','Petrification','Silence','Sleep','Stun','Terror'},
1342 ability={'Amnesia','Charm','Impairment','Petrification','Sleep','Stun','Terror'}}
1343 --check_recast('ability',spell.recast_id) check_recast('spell',spell.recast_id)
1344function check_recast(typ,id) --if spell can be cast(not in recast) return true
1345 local recasts = windower.ffxi['get_'..typ..'_recasts']()
1346 if id and recasts[id] and recasts[id] == 0 then
1347 return true
1348 else
1349 return false
1350 end
1351end
1352 --return true if spell/ability is unable to be used at this time
1353function spell_control(spell)
1354 if spell.type == "Item" then
1355 return false
1356 --Stops spell if you do not have a target
1357 elseif spell.target.name == nil and not spell.target.raw:contains("st") then
1358 return true
1359 --Stops spell if a blocking buff is active
1360 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
1361 return true
1362 elseif spell.type == 'WeaponSkill' and player.tp < 1000 then
1363 return true
1364 elseif spell.type == 'WeaponSkill' and (has_any_buff_of(unusable_buff.ability)) then
1365 msg("Weapon Skill Canceled, Can't")
1366 return true
1367 elseif spell.action_type == 'Magic' and (has_any_buff_of(unusable_buff.spell)
1368 or not check_recast('spell',spell.recast_id)) then
1369 return true
1370 --Stops spell if you do not have enuf mp/tp to use
1371 elseif spell.mp_cost and spell.mp_cost > player.mp and not has_any_buff_of({'Manawell','Manafont'}) then
1372 msg("Spell Canceled, Not Enough MP")
1373 return true
1374 end
1375 --Calculate how many finishing moves your char has up to 6
1376 local fm_count = 0
1377 for i, v in pairs(buffactive) do
1378 if tostring(i):startswith('finishing move') or tostring(i):startswith('?????????') then
1379 fm_count = tonumber(string.match(i, '%d+')) or 1
1380 end
1381 end
1382 --Stops flourishes if you do not have enough finishing moves
1383 local min_fm_for_flourishes = {['Animated Flourish']=1,['Desperate Flourish']=1,['Violent Flourish']=1,['Reverse Flourish']=1,['Building Flourish']=1,
1384 ['Wild Flourish']=2,['Climactic Flourish']=1,['Striking Flourish']=2,['Ternary Flourish']=3,}
1385 if min_fm_for_flourishes[spell.en] then
1386 if min_fm_for_flourishes[spell.en] > fm_count and not buffactive[507] then
1387 return true
1388 end
1389 end
1390 --Reomves Sneak when casting Spectral Jig
1391 if spell.en == 'Spectral Jig' then
1392 send_command('cancel 71')
1393 end
1394 if spell.name == 'Utsusemi: Ichi' and overwrite and buffactive['Copy Image (3)'] then
1395 return true
1396 end
1397 if player.tp >= 1000 and player.target and player.target.distance and player.target.distance > 7 and spell.type == 'WeaponSkill' then
1398 msg("Weapon Skill Canceled Target Out of Range")
1399 return true
1400 end
1401end
1402
1403-----------------------------
1404-- Precast --
1405-----------------------------
1406function pc_JA(spell, act)
1407 if spell.english == 'Spirit Surge' then
1408 ChangeGear(sets.JA.SpiritSurge)
1409 elseif spell.english == 'Call Wyvern' then
1410 ChangeGear(sets.JA.CallWyvern)
1411 elseif spell.english == 'Ancient Circle' then
1412 ChangeGear(sets.JA.AncientCircle)
1413 elseif spell.english == 'Spirit Link' then
1414 ChangeGear(sets.JA.SpiritLink)
1415 elseif spell.english == 'Angon' then
1416 ChangeGear(sets.JA.Angon)
1417 elseif spell.english == 'Deep Breathing' then
1418 ChangeGear(sets.JA.DeepBreathing)
1419 elseif spell.english == 'Jump' then
1420 ChangeGear(set_combine(sets.TP[sets.TP.index[TP_ind]],{
1421 ammo = "Ginsen",
1422 body = "Vishap Mail +3",
1423 --hands = "Vis. Fng. Gaunt. +3",
1424 back = Brig.STP,
1425 legs = "Pteroslaver Brais +2",
1426 feet = "Ostro Greaves"}))
1427 elseif spell.english == 'High Jump' then
1428 ChangeGear(set_combine(sets.TP[sets.TP.index[TP_ind]],{
1429 ammo = "Ginsen",
1430 body = "Vishap Mail +3",
1431 --hands = "Vis. Fng. Gaunt. +3",
1432 back = Brig.STP,
1433 legs = "Pteroslaver Brais +2",
1434 feet = "Ostro Greaves"}))
1435 elseif spell.english == 'Spirit Jump' then
1436 ChangeGear(set_combine(sets.TP[sets.TP.index[TP_ind]],{
1437 ammo = "Ginsen",
1438 body = "Vishap Mail +3",
1439 --hands = "Vis. Fng. Gaunt. +3",
1440 back = Brig.STP,
1441 legs = "Pteroslaver Brais +2",
1442 feet = "Ostro Greaves"}))
1443 elseif spell.english == 'Soul Jump' then
1444 ChangeGear(set_combine(sets.TP[sets.TP.index[TP_ind]],{
1445 ammo = "Ginsen",
1446 body = "Vishap Mail +3",
1447 --hands = "Vis. Fng. Gaunt. +3",
1448 back = Brig.STP,
1449 feet = "Ostro Greaves"}))
1450 elseif spell.english == 'Steady Wing' then
1451 ChangeGear(sets.HB.Mentos)
1452 elseif spell.english == 'Provoke' then
1453 ChangeGear(sets.JA.Provoke)
1454 end
1455
1456 IgnoreWS = S {"Penta Thrust"} -- Excluded from Moonshade TP override rule.
1457 BrutalWS = S {"Stardiver", "Drakesbane", "Shattersoul"}
1458
1459 if spell.type == 'WeaponSkill' then
1460 if spell.english == 'Stardiver' or spell.english == 'Shattersoul' then
1461 ChangeGear(sets.Stardiver[sets.Stardiver.index[Stardiver_ind]])
1462 elseif spell.english == "Camlann's Torment" or spell.english == 'Retribution' then
1463 ChangeGear(sets.CamlannsTorment[sets.CamlannsTorment.index[CamlannsTorment_ind]])
1464 elseif spell.english == 'Drakesbane' then
1465 ChangeGear(sets.Drakesbane[sets.Drakesbane.index[Drakesbane_ind]])
1466 elseif spell.english == 'Sonic Thrust' then
1467 ChangeGear(sets.SonicThrust[sets.SonicThrust.index[SonicThrust_ind]])
1468 elseif spell.english == 'Leg Sweep' then
1469 ChangeGear(sets.LegSweep)
1470 end
1471 if player.tp > 2025 and player.equipment.main == 'Trishula' and buffactive['TP Bonus'] and not buffactive['Sekkanoki'] then
1472 if IgnoreWS:contains(spell.english) then
1473 do return end
1474 elseif BrutalWS:contains(spell.english) then
1475 equip(set_combine(equipSet, { ear1 = "Brutal Earring" })) --Watch for ear conflicts between TP sets and WS sets
1476 msg("Brutal Earring equiped !!!!")
1477 else
1478 equip(set_combine(equipSet, { ear1 = "Ishvara Earring" }))
1479 msg("Ishvara Earring equiped !!!!")
1480 end
1481 elseif player.tp > 2275 and player.equipment.main == 'Trishula' and not buffactive['Sekkanoki'] then
1482 if IgnoreWS:contains(spell.english) then
1483 do return end
1484 elseif BrutalWS:contains(spell.english) then
1485 equip(set_combine(equipSet, { ear1 = "Brutal Earring" })) --Watch for ear conflicts between TP sets and WS sets
1486 msg("Brutal Earring equiped !!!!")
1487 else
1488 equip(set_combine(equipSet, { ear1 = "Ishvara Earring" }))
1489 msg("Ishvara Earring equiped !!!!")
1490 end
1491 elseif player.tp > 2550 and buffactive['TP Bonus'] and not buffactive['Sekkanoki'] then
1492 if IgnoreWS:contains(spell.english) then
1493 do return end
1494 elseif BrutalWS:contains(spell.english) then
1495 equip(set_combine(equipSet, { ear1 = "Brutal Earring" })) --Watch for ear conflicts between TP sets and WS sets
1496 msg("Brutal Earring equiped !!!!")
1497 else
1498 equip(set_combine(equipSet, { ear1 = "Ishvara Earring" }))
1499 msg("Ishvara Earring equiped !!!!")
1500 end
1501 elseif player.tp > 2775 and not buffactive['Sekkanoki'] then
1502 if IgnoreWS:contains(spell.english) then
1503 do return end
1504 elseif BrutalWS:contains(spell.english) then
1505 equip(set_combine(equipSet, { ear1 = "Brutal Earring" })) --Watch for ear conflicts between TP sets and WS sets
1506 msg("Brutal Earring equiped !!!!")
1507 else
1508 equip(set_combine(equipSet, { ear1 = "Ishvara Earring" }))
1509 msg("Ishvara Earring equiped !!!!")
1510 end
1511 end
1512 end
1513
1514if spell.english == 'Stardiver' and Stardiver_ind ~= 1 and (check_ws_day[world.day]:contains(spell.skillchain_a) -- Remove the and _ind ~=1 (not equal) for Gavialis if you don't have Ptero +2/3.
1515 or check_ws_day[world.day]:contains(spell.skillchain_b)
1516 or check_ws_day[world.day]:contains(spell.skillchain_c)) then
1517 ChangeGear(sets.WSDayBonus)
1518end
1519--Tested, Aeonic AM Doesn't work with Gavialis, but I will keep the extra rule on ice for now below:
1520--or (check_ws_day[world.day]:contains("Darkness") and player.equipment.main == 'Trishula' and (buffactive['Aftermath: Lv.3'] or buffactive['Aftermath: Lv.2'] or buffactive['Aftermath: Lv.1']))) then
1521
1522 if spell.english == 'Box Step' or spell.english == 'Quick Step' then
1523 ChangeGear(sets.Utility.Steps)
1524 elseif spell.english == 'Animated Flourish' then
1525 ChangeGear(sets.Enmity)
1526 end
1527end
1528
1529function pc_Magic(spell, act)
1530 if spell.action_type == 'Magic' then
1531 ChangeGear(sets.precast.FastCast.Standard)
1532 end
1533end
1534
1535function pretarget(spell,action)
1536
1537 if spell.english == "Spirit Jump" and not pet.isvalid then -- Change Spirit Jump To Jump If Wyvern Is Not Present --
1538 cancel_spell()
1539 send_command('Jump')
1540 elseif spell.english == "Soul Jump" and not pet.isvalid then -- Change Soul Jump To High Jump If Wyvern Is Not Present --
1541 cancel_spell()
1542 send_command('High Jump')
1543 elseif spell.english =="Call Wyvern" and pet.isvalid then -- Change Call Wyvern To Spirit Link If Wyvern Is Present --
1544 cancel_spell()
1545 send_command('Spirit Link')
1546 end
1547
1548end
1549
1550
1551function pc_Item(spell, act)
1552end
1553
1554
1555-----------------------------
1556-- Midcast --
1557-----------------------------
1558function mc_JA(spell, act)
1559end
1560
1561function mc_Magic(spell, act)
1562 if spell.action_type == 'Magic' and player.hpp <= 50 then
1563 ChangeGear(sets.HB.Trigger)
1564 elseif Trigger:contains(spell.english) then --Put whatever you want to trigger the helm change in the table above
1565 ChangeGear(sets.HB.Trigger)
1566 end
1567
1568 if spell.skill == 'Enhancing Magic' then
1569 if spell.english == 'Refresh' then
1570 ChangeGear(sets.Enhancing.Refresh)
1571 elseif string.find(spell.english,'Regen')then
1572 ChangeGear(sets.Enhancing.Regen)
1573 elseif string.find(spell.english,'Bar') then
1574 ChangeGear(sets.Enhancing.Skill)
1575 elseif spell.english=="Phalanx" then
1576 ChangeGear(sets.Enhancing.Phalanx)
1577 elseif string.find(spell.english,'Shell') or string.find(spell.english,'Protect') then
1578 ChangeGear(sets.Enhancing.ProShell)
1579 end
1580 end
1581
1582 if PhysicalSpells:contains(spell.english) then
1583 ChangeGear(sets.BlueMagic.STR)
1584 end
1585
1586 if BlueMagic_Enmity:contains(spell.english) then
1587 ChangeGear(sets.Enmity)
1588 elseif BlueMagic_Buffs:contains(spell.english) then
1589 ChangeGear(sets.TP.Tank)
1590 elseif BlueMagic_Healing:contains(spell.english) or string.find(spell.english,'Cure')then
1591 ChangeGear(set_combine(sets.Cures, sets.HB.Trigger))
1592 end
1593end
1594
1595function mc_Item(spell, act)
1596end
1597
1598
1599--------------------------------
1600-- After Cast --
1601--------------------------------
1602function ac_JA(spell)
1603end
1604
1605function ac_Magic(spell)
1606end
1607
1608function ac_Item(spell)
1609end
1610
1611function ac_Global()
1612 if LockGearIndex == true then
1613 ChangeGear(LockGearSet)
1614 msg("Lock Gear is ON -- Swapping Gear")
1615 else
1616 if player.status == 'Engaged' then
1617 EngagedState()
1618 else
1619 IdleState()
1620 end
1621 end
1622end
1623
1624------------------------------------
1625-- Framework Core --
1626------------------------------------
1627function status_change(new, old)
1628 if new == 'Idle' then
1629 IdleState()
1630 elseif new == 'Resting' then
1631 RestingState()
1632 elseif new == 'Engaged' then
1633 EngagedState()
1634 end
1635
1636 if player.status == 'Engaged' and TH == true then
1637 ChangeGear(set_combine(equipSet, sets.Utility.TH))
1638 end
1639
1640 if DT == true then
1641 ChangeGear(sets.DT[sets.DT.index[DT_ind]])
1642 end
1643
1644end
1645
1646function pet_midcast(spell, act)
1647 PetBreathFailover = true
1648 if string.find(spell.english,'Healing Breath') then
1649 ChangeGear(sets.HB.Mentos)
1650 elseif ElementalBreath:contains(spell.english) then
1651 ChangeGear(sets.HB.Ricola)
1652 end
1653 send_command('wait 1.2;gs c PetBreathFailover')
1654end
1655
1656function pet_aftercast(spell, act, spellMap, eventArgs)
1657 PetBreathFailover = false
1658 if spell.action_type == 'Ability' then
1659 ac_JA(spell)
1660 elseif spell.action_type == 'Magic' then
1661 ac_Magic(spell)
1662 else
1663 ac_Item(spell)
1664 end
1665 ac_Global()
1666end
1667
1668function precast(spell, act, spellMap, eventArgs)
1669 if spell_control(spell) then
1670 cancel_spell()
1671 return
1672 end
1673 if spell.action_type == 'Ability' then
1674 pc_JA(spell, act)
1675 elseif spell.action_type == 'Magic' then
1676 pc_Magic(spell, act)
1677 else
1678 pc_Item(spell, act)
1679 end
1680
1681 if spell.type:lower() == "weaponskill" and SkillchainPending == true then
1682 if (os.time() - SkillchainTimer) <= 9 and AllowSkillchainGear == true then
1683 if buffactive["Allies' Roll"] then
1684 equip(sets.SCDmgAllies)
1685 else
1686 equip(sets.SCDmg) -- If the current operating system time (in seconds)
1687 end -- minus SkillchainTimer variable is less than 9, equip skillchain gear
1688 else
1689 SkillchainPending = false
1690 end
1691 end
1692end
1693
1694function midcast(spell, act)
1695 if spell.action_type == 'Ability' and TH == true then
1696 ChangeGear(set_combine(equipSet, sets.Utility.TH))
1697 elseif spell.action_type == 'Ability' then
1698 mc_JA(spell, act)
1699 elseif spell.action_type == 'Magic' then
1700 mc_Magic(spell, act)
1701 else
1702 mc_Item(spell, act)
1703 end
1704end
1705
1706function aftercast(spell, act, spellMap, eventArgs)
1707 if spell.action_type == 'Ability' then
1708 ac_JA(spell)
1709 elseif spell.action_type == 'Magic' then
1710 ac_Magic(spell)
1711 else
1712 ac_Item(spell)
1713 end
1714 ac_Global()
1715
1716 --Countdowns--
1717 if not spell.interrupted then
1718 if spell.english == "Meditate" then
1719 send_command('wait 169;gs c -cd '..spell.name..': [Ready In 10 Seconds!];wait 10;gs c -cd '..spell.name..': [Ready !]')
1720 elseif spell.english == "Sekkanoki" then
1721 send_command('wait 289;gs c -cd '..spell.name..': [Ready In 10 Seconds!];wait 10;gs c -cd '..spell.name..': [Ready !]')
1722 elseif spell.english == "Jump" then
1723 send_command('wait 49;gs c -cd '..spell.name..': [Ready!]')
1724 elseif spell.english == "High Jump" then
1725 send_command('wait 100;gs c -cd '..spell.name..': [Ready!!]')
1726 elseif spell.english == "Spirit Jump" then
1727 send_command('wait 49;gs c -cd '..spell.name..': [Ready!]')
1728 elseif spell.english == "Soul Jump" then
1729 send_command('wait 100;gs c -cd '..spell.name..': [Ready!!]')
1730 elseif spell.english == "Angon" then
1731 send_command('timers create "Angon Defense Down" 90 down')
1732 elseif spell.type == "WeaponSkill" then
1733 SkillchainPending = true
1734 SkillchainTimer = os.time() -- sets SkillchainTimer variable to the current time of the operating system (in seconds)
1735 end
1736 end
1737end
1738
1739function ChangeGear(GearSet)
1740 equipSet = GearSet
1741 equip(GearSet)
1742end
1743
1744function LockGearSet(GearSet)
1745 LockedEquipSet = GearSet
1746 equip(GearSet)
1747 SetLocked = true
1748end
1749
1750function UnlockGearSet()
1751 locked = false
1752 equip(equipSet)
1753end
1754
1755function msg(str)
1756 send_command('@input /echo <----- ' .. str .. ' ----->')
1757end
1758
1759---End of Rules-------------------------------------------------------------------------------------------------------------------------------------------------------