forked from AlanWarren/gearswap
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Frullata_BST.lua
544 lines (432 loc) · 18.4 KB
/
Frullata_BST.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
-------------------------------------------------------------------------------------------------------------------
-- ctrl+F12 cycles Idle modes
-------------------------------------------------------------------------------------------------------------------
-- THE STUFF YOU CARE ABOUT STARTS AFTER LINE 101 --
-- THE STUFF YOU CARE ABOUT STARTS AFTER LINE 101 --
-- THE STUFF YOU CARE ABOUT STARTS AFTER LINE 101 --
-- THE STUFF YOU CARE ABOUT STARTS AFTER LINE 101 --
-- THE STUFF YOU CARE ABOUT STARTS AFTER LINE 101 --
-- THE STUFF YOU CARE ABOUT STARTS AFTER LINE 101 --
-- THE STUFF YOU CARE ABOUT STARTS AFTER LINE 101 --
-- THE STUFF YOU CARE ABOUT STARTS AFTER LINE 101 --
-- THE STUFF YOU CARE ABOUT STARTS AFTER LINE 101 --
-------------------------------------------------------------------------------------------------------------------
-- Initialization function that defines sets and variables to be used.
-------------------------------------------------------------------------------------------------------------------
-- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
end
function job_setup()
get_combat_form()
end
function user_setup()
state.IdleMode:options('Normal', 'Reraise')
state.OffenseMode:options('Normal', 'PetDT')
state.CorrelationMode = M{['description']='Correlation Mode', 'Neutral', 'HighAcc', 'MaxAcc',}
send_command('bind ^f8 gs c cycle CorrelationMode')
end
-- Complete list of Ready moves to use with Sic & Ready Recast -5 Desultor Tassets.
ready_moves_to_check = S{'Sic','Whirl Claws','Dust Cloud','Foot Kick','Sheep Song','Sheep Charge','Lamb Chop',
'Rage','Head Butt','Scream','Dream Flower','Wild Oats','Leaf Dagger','Claw Cyclone','Razor Fang',
'Roar','Gloeosuccus','Palsy Pollen','Soporific','Cursed Sphere','Venom','Geist Wall','Toxic Spit',
'Numbing Noise','Nimble Snap','Cyclotail','Spoil','Rhino Guard','Rhino Attack','Power Attack',
'Hi-Freq Field','Sandpit','Sandblast','Venom Spray','Mandibular Bite','Metallic Body','Bubble Shower',
'Bubble Curtain','Scissor Guard','Big Scissors','Grapple','Spinning Top','Double Claw','Filamented Hold',
'Frog Kick','Queasyshroom','Silence Gas','Numbshroom','Spore','Dark Spore','Shakeshroom','Blockhead',
'Secretion','Fireball','Tail Blow','Plague Breath','Brain Crush','Infrasonics','??? Needles',
'Needleshot','Chaotic Eye','Blaster','Scythe Tail','Ripper Fang','Chomp Rush','Intimidate','Recoil Dive',
'Water Wall','Snow Cloud','Wild Carrot','Sudden Lunge','Spiral Spin','Noisome Powder','Wing Slap',
'Beak Lunge','Suction','Drainkiss','Acid Mist','TP Drainkiss','Back Heel','Jettatura','Choke Breath',
'Fantod','Charged Whisker','Purulent Ooze','Corrosive Ooze','Tortoise Stomp','Harden Shell','Aqua Breath',
'Sensilla Blades','Tegmina Buffet','Molting Plumage','Swooping Frenzy','Pentapeck','Sweeping Gouge',
'Zealous Snort','Somersault ','Tickling Tendrils','Stink Bomb','Nectarous Deluge','Nepenthic Plunge',
'Pecking Flurry','Pestilent Plume','Foul Waters','Spider Web','Sickle Slash','Frogkick','Ripper Fang','Scythe Tail','Chomp Rush'}
mab_ready_moves = S{
'Cursed Sphere','Venom','Toxic Spit',
'Venom Spray','Bubble Shower',
'Fireball','Plague Breath',
'Snow Cloud','Acid Spray','Silence Gas','Dark Spore',
'Charged Whisker','Purulent Ooze','Aqua Breath','Stink Bomb',
'Nectarous Deluge','Nepenthic Plunge','Foul Waters','Dust Cloud','Sheep Song','Scream','Dream Flower','Roar','Gloeosuccus','Palsy Pollen',
'Soporific','Geist Wall','Numbing Noise','Spoil','Hi-Freq Field',
'Sandpit','Sandblast','Filamented Hold',
'Spore','Infrasonics','Chaotic Eye',
'Blaster','Intimidate','Noisome Powder','TP Drainkiss','Jettatura','Spider Web',
'Corrosive Ooze','Molting Plumage','Swooping Frenzy',
'Pestilent Plume',}
-- List of abilities to reference for applying Treasure Hunter +1 via Chaac Belt.
function file_unload()
if binds_on_unload then
binds_on_unload()
end
-- Unbinds the Jug Pet, Reward, Correlation, Treasure, PetMode, MDEF Mode hotkeys.
send_command('unbind !=')
send_command('unbind ^=')
send_command('unbind !f8')
send_command('unbind ^f8')
send_command('unbind @f8')
send_command('unbind ^f11')
end
-- HERE IS THE BEGINNING OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED FOR EDITING GEAR --
-- HERE IS THE BEGINNING OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED FOR EDITING GEAR --
-- HERE IS THE BEGINNING OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED FOR EDITING GEAR --
-- HERE IS THE BEGINNING OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED FOR EDITING GEAR --
-- HERE IS THE BEGINNING OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED FOR EDITING GEAR --
-- HERE IS THE BEGINNING OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED FOR EDITING GEAR --
-- HERE IS THE BEGINNING OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED FOR EDITING GEAR --
-- HERE IS THE BEGINNING OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED FOR EDITING GEAR --
-- HERE IS THE BEGINNING OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED FOR EDITING GEAR --
-- HERE IS THE BEGINNING OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED FOR EDITING GEAR --
-- BST gearsets
function init_gear_sets()
-- PRECAST SETS
sets.precast.JA['Killer Instinct'] = {head="Ankusa Helm"}
sets.precast.JA['Bestial Loyalty'] = {hands="Ankusa Gloves",body="Mirke Wardecors",}
sets.precast.JA['Call Beast'] = sets.precast.JA['Bestial Loyalty']
sets.precast.JA.Familiar = {legs="Ankusa Trousers"}
sets.precast.JA.Tame = {head="Totemic Helm +1",}
sets.precast.JA.Spur = {feet="Nukumi Ocreae +1"}
--This is what will equip when you use Reward. No need to manually equip Pet Food Theta.
sets.precast.JA.Reward = {
ammo="Pet Food Theta",
ring1="Aquasoul Ring",
head="Khimaira Bonnet",
neck="Aife's Medal",
ear1="Lifestorm Earring",
ear2="Neptune's Pearl",
body="Totemic Jackcoat",
hands="Leyline Gloves",
ring2="Aquasoul Ring",
back="Pastoralist's Mantle",
waist="Crudelis Belt",
legs="Ankusa Trousers",
feet="Ankusa Gaiters"}
--This is your base FastCast set that equips during precast for all spells/magic.
sets.precast.FC = {
ring2="Weatherspoon Ring",
ammo="Impatiens",
neck="Jeweled Collar",
head={ name="Taeon Chapeau", augments={'"Fast Cast"+2',}},
body={ name="Taeon Tabard", augments={'Pet: "Mag.Atk.Bns."+23','"Fast Cast"+4',}},
hands="Leyline Gloves",
legs={ name="Taeon Tights", augments={'Pet: DEF+17','"Fast Cast"+4',}},
feet={ name="Taeon Boots", augments={'Pet: "Mag.Atk.Bns."+24','"Fast Cast"+2',}},
ring1="Prolix Ring",
ear1="Etiolation Earring",
ear2="Loquacious Earring"}
sets.midcast.Stoneskin = {
head="Taeon Chapeau",
neck="Stone Gorget",
ear1="Earthcry Earring",
ear2="Lifestorm Earring",
body="Totemic Jackcoat +1",
hands="Stone Mufflers",
ring1="Aquasoul Ring",
ring2="Aquasoul Ring",
back="Pastoralist's Mantle",
waist="Crudelis Belt",
legs="Haven Hose",
feet="Amm Greaves"}
-- WEAPONSKILLS
-- Default weaponskill set.
sets.precast.WS = {
ammo="Cheruski Needle",
head="Nukumi Cabasset +1",
neck="Asperity Necklace",
ear1="Flame Pearl",
ear2="Brutal Earring",
body="Nukumi Gausape +1",
hands="Boor Bracelets",
ring1="Pyrosoul Ring",
ring2="Ifrit Ring",
back="Buquwik Cape",
waist="Windbuffet Belt +1",
legs="Nukumi Quijotes +1",
feet="Nukumi Ocreae +1"}
-- Specific weaponskill sets.
sets.precast.WS['Ruinator'] = set_combine(sets.precast.WS, {neck="Breeze Gorget"})
sets.precast.WS['Onslaught'] = set_combine(sets.precast.WS, {
ammo="Floestone",
neck="Justiciar's Torque",
ear1="Tati Earring +1",
ear2="Brutal Earring",
body="Mes'yohi Haubergeon",
hands="Nomkahpa Mittens +1",
ring1="Ramuh Ring +1",
back="Vespid Mantle",
legs="Mikinaak Cuisses",
feet="Vanir Boots"})
sets.precast.WS['Primal Rend'] = {
head="Taeon Chapeau",
body="Tot. Jackcoat +1",
hands="Leyline Gloves",
legs="Taeon Tights",
feet="Taeon Boots",
neck="Stoicheion Medal",
waist="Salire Belt",
left_ear="Hecate's Earring",
right_ear="Friomisi Earring",
left_ring="Epona's Ring",
right_ring="Rajas Ring",
back="Argocham. Mantle",}
sets.precast.WS['Cloudsplitter'] = set_combine(sets.precast.WS['Primal Rend'],{ammo="Erlene's Notebook",
head="Highwing Helm",
neck="Stoicheion Medal",
ear1="Moonshade Earring",
ear2="Friomisi Earring",
body="Taeon Tabard",
hands="Taeon Gloves",
ring1="Acumen Ring",
ring2="Carb. Ring",
back="Toro Cape",
waist="Salire Belt",
legs="Taeon Tights",
feet="Taeon Boots",})
-- PET SIC & READY MOVES
--This is your base Ready move set, activating for physical Ready moves. Merlin/D.Tassets are accounted for already.
sets.midcast.Pet.WS = {
main="Mdomo Axe",
sub="Arktoi",
head="Despair Helm",
body="Acro Surcoat",
hands="Nukumi Manoplas",
legs="Valor. Hose",
feet="Acro Leggings",
neck="Ferine Necklace",
waist="Incarnation Sash",
left_ear="Domes. Earring",
right_ear="Handler's Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back={ name="Pastoralist's Mantle", augments={'STR+1 DEX+1','Accuracy+4','Pet: Accuracy+20 Pet: Rng. Acc.+20',}},
}
sets.midcast.Pet.Neutral = set_combine(sets.midcast.Pet.WS, {
main="Mdomo Axe",
sub="Arktoi",
head="Despair Helm",
body="Acro Surcoat",
hands="Nukumi Manoplas",
legs="Valor. Hose",
feet="Acro Leggings",
neck="Ferine Necklace",
waist="Incarnation Sash",
left_ear="Domes. Earring",
right_ear="Handler's Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back={ name="Pastoralist's Mantle", augments={'STR+1 DEX+1','Accuracy+4','Pet: Accuracy+20 Pet: Rng. Acc.+20',}},
})
sets.midcast.Pet.HighAcc = set_combine(sets.midcast.Pet.WS, {
main="Mdomo Axe",
sub="Arktoi",
head="Despair Helm",
body="Acro Surcoat",
hands="Nukumi Manoplas",
legs="Valor. Hose",
feet="Acro Leggings",
neck="Ferine Necklace",
waist="Incarnation Sash",
left_ear="Domes. Earring",
right_ear="Handler's Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back={ name="Pastoralist's Mantle", augments={'STR+1 DEX+1','Accuracy+4','Pet: Accuracy+20 Pet: Rng. Acc.+20',}},})
sets.midcast.Pet.MaxAcc = set_combine(sets.midcast.Pet.WS, {
main="Mdomo Axe",
sub="Arktoi",
head="Despair Helm",
body="Acro Surcoat",
hands="Nukumi Manoplas",
legs="Valor. Hose",
feet="Acro Leggings",
neck="Ferine Necklace",
waist="Incarnation Sash",
left_ear="Domes. Earring",
right_ear="Handler's Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back={ name="Pastoralist's Mantle", augments={'STR+1 DEX+1','Accuracy+4','Pet: Accuracy+20 Pet: Rng. Acc.+20',}},})
--This will equip for Magical Ready moves like Fireball
sets.midcast.Pet.MabReady = set_combine(sets.midcast.Pet.WS, {
main="Arktoi",
head={ name="Taeon Chapeau", augments={'Pet: "Mag.Atk.Bns."+24',}},
body={ name="Taeon Tabard", augments={'Pet: "Mag.Atk.Bns."+23','"Fast Cast"+4',}},
hands={ name="Acro Gauntlets", augments={'Pet: "Mag.Atk.Bns."+24',}},
legs={ name="Acro Breeches", augments={'Pet: Mag. Acc.+24',}},
feet={ name="Taeon Boots", augments={'Pet: "Mag.Atk.Bns."+24','"Fast Cast"+2',}},
back="Argocham. Mantle",
sub={ name="Kumbhakarna", augments={'Pet: "Mag.Atk.Bns."+16','Pet: TP Bonus+180',}},
ring1="Thurandaut Ring",})
sets.midcast.Pet.TPBonus = {hands="Nukumi Manoplas",}
sets.midcast.Pet.ReadyRecast = {sub="Charmer's Merlin",legs="Desultor Tassets",}
-- IDLE SETS (TOGGLE between RERAISE and NORMAL with CTRL+F12)
-- Base Idle Set (when you do NOT have a pet out)
sets.idle = {
main="Izizoeksi",
sub="Arktoi",
head="Despair Helm",
body="Despair Mail",
hands="Despair Fin. Gaunt.",
legs="Valor. Hose",
feet="Amm Greaves",
neck="Twilight Torque",
waist="Incarnation Sash",
left_ear="Domes. Earring",
right_ear="Handler's Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back={ name="Pastoralist's Mantle", augments={'STR+1 DEX+1','Accuracy+4','Pet: Accuracy+20 Pet: Rng. Acc.+20',}},
}
sets.idle.Reraise = set_combine(sets.idle, {head="Twilight Helm",body="Twilight Mail"})
-- Idle Set that equips when you have a pet out and not fighting an enemy.
sets.idle.Pet = set_combine(sets.idle, {
main="Izizoeksi",
sub="Arktoi",
head="Despair Helm",
body="Emet Harness +1",
hands="Despair Fin. Gaunt.",
legs="Valor. Hose",
feet="Acro Leggings",
neck="Twilight Torque",
waist="Incarnation Sash",
left_ear="Domes. Earring",
right_ear="Handler's Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back={ name="Pastoralist's Mantle", augments={'STR+1 DEX+1','Accuracy+4','Pet: Accuracy+20 Pet: Rng. Acc.+20',}},
})
-- Idle set that equips when you have a pet out and ARE fighting an enemy.
sets.idle.Pet.Engaged = set_combine(sets.idle, {
main="Izizoeksi",
sub="Arktoi",
head="Despair Helm",
body="Despair Mail",
hands="Despair Fin. Gaunt.",
legs="Valor. Hose",
feet="Acro Leggings",
neck="Twilight Torque",
waist="Incarnation Sash",
left_ear="Domes. Earring",
right_ear="Handler's Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back={ name="Pastoralist's Mantle", augments={'STR+1 DEX+1','Accuracy+4','Pet: Accuracy+20 Pet: Rng. Acc.+20',}},
})
-- MELEE (SINGLE-WIELD) SETS
sets.engaged = {
main="Izizoeksi",
sub="Arktoi",
head="Despair Helm",
body="Despair Mail",
hands="Despair Fin. Gaunt.",
legs="Valor. Hose",
feet="Acro Leggings",
neck="Twilight Torque",
waist="Incarnation Sash",
left_ear="Domes. Earring",
right_ear="Handler's Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back={ name="Pastoralist's Mantle", augments={'STR+1 DEX+1','Accuracy+4','Pet: Accuracy+20 Pet: Rng. Acc.+20',}},
}
sets.engaged.PetDT = {
main="Izizoeksi",
sub="Arktoi",
head="Despair Helm",
body="Despair Mail",
hands="Despair Fin. Gaunt.",
legs="Valor. Hose",
feet="Acro Leggings",
neck="Twilight Torque",
waist="Incarnation Sash",
left_ear="Domes. Earring",
right_ear="Handler's Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back={ name="Pastoralist's Mantle", augments={'STR+1 DEX+1','Accuracy+4','Pet: Accuracy+20 Pet: Rng. Acc.+20',}},}
-- MELEE (DUAL-WIELD) SETS FOR DNC AND NIN SUBJOB
sets.engaged.DW = {
main="Izizoeksi",
sub="Arktoi",
head="Despair Helm",
body="Emet Harness +1",
hands="Despair Fin. Gaunt.",
legs="Valor. Hose",
feet="Acro Leggings",
neck="Twilight Torque",
waist="Incarnation Sash",
left_ear="Domes. Earring",
right_ear="Handler's Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back={ name="Pastoralist's Mantle", augments={'STR+1 DEX+1','Accuracy+4','Pet: Accuracy+20 Pet: Rng. Acc.+20',}},
}
sets.engaged.DW.PetDT = {
main="Izizoeksi",
sub="Arktoi",
head="Despair Helm",
body="Despair Mail",
hands="Despair Fin. Gaunt.",
legs="Valor. Hose",
feet="Acro Leggings",
neck="Twilight Torque",
waist="Incarnation Sash",
left_ear="Domes. Earring",
right_ear="Handler's Earring",
left_ring="Defending Ring",
right_ring="Patricius Ring",
back={ name="Pastoralist's Mantle", augments={'STR+1 DEX+1','Accuracy+4','Pet: Accuracy+20 Pet: Rng. Acc.+20',}},
}
-- THIS IS THE END OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED --
-- THIS IS THE END OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED --
-- THIS IS THE END OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED --
-- THIS IS THE END OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED --
-- THIS IS THE END OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED --
-- THIS IS THE END OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED --
-- THIS IS THE END OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED --
-- THIS IS THE END OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED --
-- THIS IS THE END OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED --
-- THIS IS THE END OF THE GEARSWAP AS FAR AS YOU SHOULD BE CONCERNED --
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks that are called to process player actions at specific points in time.
-------------------------------------------------------------------------------------------------------------------
function job_precast(spell, action, spellMap, eventArgs)
cancel_conflicting_buffs(spell, action, spellMap, eventArgs)
-- Define class for Sic and Ready moves.
if ready_moves_to_check:contains(spell.name) and pet.status == 'Engaged' then
classes.CustomClass = "WS"
equip(sets.midcast.Pet.ReadyRecast)
end
end
function job_pet_midcast(spell, action, spellMap, eventArgs)
equip(set_combine(sets.midcast.Pet.WS, sets.midcast.Pet[state.CorrelationMode.value]))
-- Equip monster correlation gear, as appropriate
if mab_ready_moves:contains(spell.english) and pet.status == 'Engaged' then
equip(sets.midcast.Pet.MabReady)
end
if buffactive['Unleash'] then
hands="Regimen Mittens"
end
-- If Pet TP, before bonuses, is less than a certain value, equip Ferine Manoplas +1 or +2
end
-- Return true if we handled the aftercast work. Otherwise it will fall back
-- to the general aftercast() code in Mote-Include.
function job_aftercast(spell, action, spellMap, eventArgs)
end
function job_state_change(stateField, newValue, oldValue)
if stateField == 'Correlation Mode' then
state.CorrelationMode:set(newValue)
end
end
function get_combat_form()
if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
state.CombatForm:set('DW')
else
state.CombatForm:reset()
end
end