Advertisement
bongarippa

BRD

May 30th, 2020 (edited)
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 41.60 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job. Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. --[[
  6. Custom commands:
  7.  
  8. ExtraSongsMode may take one of three values: None, Dummy, FullLength
  9.  
  10. You can set these via the standard 'set' and 'cycle' self-commands. EG:
  11. gs c cycle ExtraSongsMode
  12. gs c set ExtraSongsMode Dummy
  13.  
  14. The Dummy state will equip the bonus song instrument and ensure non-duration gear is equipped.
  15. The FullLength state will simply equip the bonus song instrument on top of standard gear.
  16.  
  17.  
  18. Simple macro to cast a dummy Daurdabla song:
  19. /console gs c set ExtraSongsMode Dummy
  20. /ma "Shining Fantasia" <me>
  21.  
  22. To use a Terpander rather than Daurdabla, set the info.ExtraSongInstrument variable to
  23. 'Terpander', and info.ExtraSongs to 1.
  24. --]]
  25.  
  26. -- Initialization function for this job file.
  27. function get_sets()
  28. mote_include_version = 2
  29.  
  30. -- Load and initialize the include file.
  31. include('Mote-Include.lua')
  32. include('organizer-lib')
  33. end
  34.  
  35.  
  36. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  37. function job_setup()
  38. state.ExtraSongsMode = M{['description']='Extra Songs', 'None', 'Dummy', 'FullLength'}
  39.  
  40. state.Buff['Pianissimo'] = buffactive['pianissimo'] or false
  41.  
  42. -- For tracking current recast timers via the Timers plugin.
  43. custom_timers = {}
  44. end
  45.  
  46. -------------------------------------------------------------------------------------------------------------------
  47. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  48. -------------------------------------------------------------------------------------------------------------------
  49.  
  50. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  51. function user_setup()
  52. state.OffenseMode:options('Dagger', 'DaggerAcc', 'DW', 'DWAcc', 'Carnwenhan', 'CarnwenhanAcc' )
  53. state.CastingMode:options('Normal', 'Resistant')
  54. state.IdleMode:options('Normal', 'PDT', 'MDT')
  55.  
  56. brd_daggers = S{'Kali', 'Carnwenhan', 'Aeneas', 'Twashtar', }
  57. pick_tp_weapon()
  58.  
  59. -- Adjust this if using the Terpander (new +song instrument)
  60. info.ExtraSongInstrument = 'Daurdabla'
  61. -- How many extra songs we can keep from Daurdabla/Terpander
  62. info.ExtraSongs = 2
  63.  
  64. -- Set this to false if you don't want to use custom timers.
  65. state.UseCustomTimers = M(true, 'Use Custom Timers')
  66.  
  67. send_command('lua l gearinfo')
  68.  
  69. -- Additional local binds
  70. send_command('bind ^` gs c cycle ExtraSongsMode')
  71. send_command('bind ^a gs c set ExtraSongsMode Dummy; input /ma "Goblin Gavotte" <t>')
  72. send_command('bind ^s gs c set ExtraSongsMode Dummy; input /ma "Fowl Aubade" <t>')
  73. send_command('bind ^d gs c set ExtraSongsMode Dummy; input /ma "Herb Pastoral" <t>')
  74. send_command('bind ^f gs c set ExtraSongsMode Dummy; input /ma "Scop\'s Operetta" <t>')
  75.  
  76. select_default_macro_book()
  77. set_lockstyle()
  78. end
  79.  
  80. function user_unload()
  81. send_command('lua u gearinfo')
  82. end
  83.  
  84.  
  85. -- Called when this job file is unloaded (eg: job change)
  86. function user_unload()
  87. send_command('unbind `')
  88. send_command('unbind ^`')
  89. send_command('unbind ^-')
  90. send_command('unbind ^=')
  91. send_command('unbind !`')
  92. send_command('unbind !-')
  93. send_command('unbind !=')
  94. send_command('unbind @`')
  95. send_command('unbind @-')
  96. send_command('unbind @=')
  97. send_command('unbind delete')
  98. send_command('unbind end')
  99. send_command('unbind home')
  100. send_command('unbind f7')
  101. send_command('unbind f8')
  102. send_command('unbind f9')
  103. send_command('unbind f10')
  104. send_command('unbind f11')
  105. send_command('unbind f12')
  106. send_command('unbind ^a')
  107. send_command('unbind ^s')
  108. send_command('unbind ^d')
  109. send_command('unbind ^f')
  110. end
  111.  
  112. -- Define sets and vars used by this job file.
  113. function init_gear_sets()
  114. --------------------------------------
  115. -- Start defining the sets
  116. --------------------------------------
  117.  
  118. ---- Augment Gear ----
  119.  
  120. BRD_Staff = {name="Grioavolr", augments={'Magic burst dmg.+9%','MND+2','Mag. Acc.+25','"Mag.Atk.Bns."+25','Magic Damage +3',}}
  121. Refresh_Head={ name="Chironic Hat", augments={'VIT+4','Pet: VIT+12','"Refresh"+2','Accuracy+12 Attack+12','Mag. Acc.+3 "Mag.Atk.Bns."+3',}}
  122. TP_Back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}
  123. Macc_Back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10',}}
  124.  
  125. -- Precast Sets
  126.  
  127. -- Fast cast sets for spells
  128. sets.precast.FC = {
  129. main="Kali",
  130. head="Nahtirah Hat",
  131. body="Inyanga Jubbah +2",
  132. hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
  133. legs="Aya. Cosciales +2",
  134. feet="Chelona Boots +1",
  135. neck="Orunmila's Torque",
  136. left_ear="Loquac. Earring",
  137. left_ring="Rahab Ring",
  138. right_ring="Kishar Ring",
  139. back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Damage taken-5%',}},
  140. }
  141.  
  142. sets.precast.FC.Dispelga = set_combine(sets.precast.FC, {main="Daybreak", sub="Ammurapi Shield"})
  143.  
  144. sets.precast.FC.Cure = set_combine(sets.precast.FC, {body="Heka's Kalasiris",back="Pahtli Cape"})
  145. sets.precast.FC['Enhancing Magic'] = sets.precast.FC
  146.  
  147. sets.precast.FC.BardSong = {
  148. main={ name="Carnwenhan", augments={'Mag. Acc.+15','String instrument skill +10','Wind instrument skill +10',}},
  149. head="Fili Calot +1",
  150. body="Inyanga Jubbah +2",
  151. hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -3%','Magic dmg. taken -2%','Song spellcasting time -5%',}},
  152. legs="Aya. Cosciales +2",
  153. feet={ name="Telchine Pigaches", augments={'Pet: Mag. Evasion+14','Song spellcasting time -6%','Pet: Damage taken -2%',}},
  154. neck="Orunmila's Torque",
  155. waist="Flume Belt +1",
  156. left_ear="Loquac. Earring",
  157. right_ear="Telos Earring",
  158. left_ring="Defending Ring",
  159. right_ring="Kishar Ring",
  160. back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Damage taken-5%',}},
  161. }
  162.  
  163. sets.precast.FC.Daurdabla = set_combine(sets.precast.FC.BardSong, {range=info.ExtraSongInstrument})
  164. sets.precast.FC["Honor March"] = set_combine(sets.precast.FC.BardSong,{range="Marsyas"})
  165.  
  166. -- Precast sets to enhance JAs
  167.  
  168. sets.precast.JA.Nightingale = {feet="Bihu Slippers +3"}
  169. sets.precast.JA.Troubadour = {body="Bihu Justaucorps +3"}
  170. sets.precast.JA['Soul Voice'] = {legs="Bihu Cannions +3"}
  171.  
  172. -- Waltz set (chr and vit)
  173. --[[ sets.precast.Waltz = {range="Gjallarhorn",
  174. head="Nahtirah Hat",
  175. body="Gendewitha Bliaut",hands="Buremte Gloves",
  176. back="Kumbira Cape",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  177. ]]--
  178.  
  179. -- Weaponskill sets
  180. -- Default set for any weaponskill that isn't any more specifically defined
  181. sets.precast.WS = {
  182. range={ name="Linos", augments={'Accuracy+15','Weapon skill damage +3%','Quadruple Attack +3',}},
  183. head={ name="Bihu Roundlet +3", augments={'Enhances "Con Anima" effect',}},
  184. body="Ayanmo Corazza +2",
  185. hands={ name="Chironic Gloves", augments={'Accuracy+19','"Dbl.Atk."+4','STR+1','Attack+3',}},
  186. legs={ name="Chironic Hose", augments={'"Triple Atk."+3','Rng.Acc.+26','Accuracy+19 Attack+19',}},
  187. feet={ name="Bihu Slippers +3", augments={'Enhances "Nightingale" effect',}},
  188. neck={ name="Bard's Charm +2", augments={'Path: A',}},
  189. waist="Fotia Belt",
  190. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  191. right_ear="Telos Earring",
  192. left_ring="Epaminondas's Ring",
  193. right_ring="Ilabrat Ring",
  194. back={ name="Intarabus's Cape", augments={'CHR+20','Accuracy+20 Attack+20','CHR+10','Weapon skill damage +10%',}}}
  195.  
  196.  
  197. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  198. sets.precast.WS['Evisceration'] = {range={ name="Linos", augments={'Accuracy+15','Weapon skill damage +3%','Quadruple Attack +3',}},
  199. head={ name="Bihu Roundlet +3", augments={'Enhances "Con Anima" effect',}},
  200. body="Ayanmo Corazza +2",
  201. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  202. legs={ name="Chironic Hose", augments={'"Triple Atk."+3','Rng.Acc.+26','Accuracy+19 Attack+19',}},
  203. feet={ name="Bihu Slippers +3", augments={'Enhances "Nightingale" effect',}},
  204. neck={ name="Bard's Charm +2", augments={'Path: A',}},
  205. waist="Fotia Belt",
  206. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  207. right_ear="Mache Earring +1",
  208. left_ring="Begrudging Ring",
  209. right_ring="Ilabrat Ring",
  210. back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}}}
  211.  
  212. sets.precast.WS["Rudra's Storm"] = set_combine(sets.precast.WS['Evisceration'], {
  213. body={ name="Bihu Jstcorps. +3", augments={'Enhances "Troubadour" effect',}},
  214. waist={ name="Kentarch Belt +1", augments={'Path: A',}},
  215. right_ear="Ishvara Earring",
  216. left_ring="Epaminondas's Ring",
  217. back={ name="Intarabus's Cape", augments={'CHR+20','Accuracy+20 Attack+20','CHR+10','Weapon skill damage +10%',}}})
  218.  
  219. sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS)
  220.  
  221. sets.precast.WS['Mordant Rime'] = {range={ name="Linos", augments={'Accuracy+15','Weapon skill damage +3%','Quadruple Attack +3',}},
  222. head={ name="Bihu Roundlet +3", augments={'Enhances "Con Anima" effect',}},
  223. body={ name="Bihu Jstcorps. +3", augments={'Enhances "Troubadour" effect',}},
  224. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  225. legs={ name="Bihu Cannions +3", augments={'Enhances "Soul Voice" effect',}},
  226. feet={ name="Bihu Slippers +3", augments={'Enhances "Nightingale" effect',}},
  227. neck={ name="Bard's Charm +2", augments={'Path: A',}},
  228. waist={ name="Kentarch Belt +1", augments={'Path: A',}},
  229. left_ear="Regal Earring",
  230. right_ear="Ishvara Earring",
  231. left_ring="Epaminondas's Ring",
  232. right_ring={ name="Metamor. Ring +1", augments={'Path: A',}},
  233. back={ name="Intarabus's Cape", augments={'CHR+20','Accuracy+20 Attack+20','CHR+10','Weapon skill damage +10%',}}}
  234.  
  235. sets.precast.WS['Aeolian Edge'] = {range="Linos",
  236. head="Brioso Roundlet +3",neck="Baetyl Pendant",ear1="Friomisi Earring",ear2="Regal Earring",
  237. body="Volte Doublet",hands="Leyline Gloves",ring1="Epaminondas's Ring",ring2="Fenrir Ring +1",
  238. back=Macc_Back,waist="Refoccilation Stone",legs="Gyve Trousers",feet="Chironic Slippers"}
  239.  
  240. sets.precast.WS['Savage Blade'] = {range={ name="Linos", augments={'Accuracy+15','Weapon skill damage +3%','Quadruple Attack +3',}},
  241. head={ name="Bihu Roundlet +3", augments={'Enhances "Con Anima" effect',}},
  242. body={ name="Bihu Jstcorps. +3", augments={'Enhances "Troubadour" effect',}},
  243. hands={ name="Nyame Gauntlets", augments={'Path: B',}},
  244. legs={ name="Bihu Cannions +3", augments={'Enhances "Soul Voice" effect',}},
  245. feet={ name="Bihu Slippers +3", augments={'Enhances "Nightingale" effect',}},
  246. neck={ name="Bard's Charm +2", augments={'Path: A',}},
  247. waist={ name="Sailfi Belt +1", augments={'Path: A',}},
  248. left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
  249. right_ear="Ishvara Earring",
  250. left_ring="Epaminondas's Ring",
  251. right_ring={ name="Metamor. Ring +1", augments={'Path: A',}},
  252. back={ name="Intarabus's Cape", augments={'MND+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%',}}}
  253.  
  254. -- Midcast Sets
  255.  
  256. -- General set for recast times.
  257. sets.midcast.FastRecast = {
  258. head="Nahtirah Hat",ear2="Enchanter Earring +1",
  259. body="Inyanga Jubbah +2",hands="Leyline Gloves",ring1="Kishar Ring", ring2="Weatherspoon Ring +1",
  260. back=Macc_Back,waist="Embla Sash",legs="Ayanmo Cosciales +2",feet="Telchine Pigaches"}
  261.  
  262. sets.midcast.SongEffect = {
  263. main="Carnwenhan",
  264. sub="Genmei Shield",
  265. range="Gjallarhorn",
  266. head="Fili Calot +1",
  267. body="Fili Hongreline +1",
  268. hands="Fili Manchettes +1",
  269. legs="Inyanga Shalwar +2",
  270. feet="Brioso Slippers +3",
  271. neck="Mnbw. Whistle +1",
  272. left_ring={ name="Metamor. Ring +1", augments={'Path: A',}},
  273. right_ring="Kishar Ring",
  274. back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Damage taken-5%',}},
  275. }
  276.  
  277. -- Gear to enhance certain classes of songs. No instruments added here since Gjallarhorn is being used.
  278. sets.midcast.Ballad = set_combine(sets.midcast.SongEffect, {legs="Fili Rhingrave +1"})
  279. sets.midcast["Ballad II"] = sets.midcast.Ballad
  280. sets.midcast["Ballad III"] = sets.midcast.Ballad
  281. sets.midcast["Foe Lullaby"] = {main="Carnwenhan",
  282. sub="Ammurapi Shield",
  283. range="Blurred Harp +1",
  284. head="Brioso Roundlet +3",
  285. body="Fili Hongreline +1",
  286. hands="Brioso Cuffs +3",
  287. legs="Inyanga Shalwar +2",
  288. feet="Brioso Slippers +3",
  289. neck="Mnbw. Whistle +1",
  290. waist="Luminary Sash",
  291. left_ear="Gersemi Earring",
  292. right_ear="Regal Earring",
  293. left_ring={ name="Metamor. Ring +1", augments={'Path: A',}},
  294. right_ring="Stikini Ring +1",
  295. back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Damage taken-5%',}}
  296. }
  297.  
  298. sets.midcast["Foe Lullaby II"] = sets.midcast["Foe Lullaby"]
  299.  
  300. sets.midcast["Horde Lullaby"] = sets.midcast["Foe Lullaby"]
  301.  
  302. sets.midcast["Horde Lullaby II"] = sets.midcast["Foe Lullaby"]
  303.  
  304. sets.midcast.Madrigal = set_combine(sets.midcast.SongEffect, {head="Fili Calot +1",back=Macc_Back})
  305. sets.midcast.Etude = set_combine(sets.midcast.SongEffect, {head="Mousai turban +1"})
  306. sets.midcast.Prelude = set_combine(sets.midcast.SongEffect, {back=Macc_Back})
  307. sets.midcast.March = set_combine(sets.midcast.SongEffect, {hands="Fili Manchettes +1"})
  308. sets.midcast.Minuet = set_combine(sets.midcast.SongEffect, {body="Fili Hongreline +1"})
  309. sets.midcast["Honor March"] = set_combine(sets.midcast.SongEffect, {range="Marsyas"})
  310. sets.midcast.Minne = set_combine(sets.midcast.SongEffect, {legs="Mousai Seraweels +1"})
  311. sets.midcast.Paeon = set_combine(sets.midcast.SongEffect, {head="Brioso Roundlet +3"})
  312. sets.midcast.Carol = set_combine(sets.midcast.SongEffect, {hands="Mousai Gages +1"})
  313. sets.midcast["Sentinel's Scherzo"] = set_combine(sets.midcast.SongEffect, {feet="Fili Cothurnes +1"})
  314. sets.midcast.Threnody = set_combine(sets.midcast.SongEffect, {body="Mou. Manteel +1"})
  315. sets.midcast["Magic Finale"] = {
  316. main="Carnwenhan",
  317. range="Gjallarhorn",
  318. head="Brioso Roundlet +3",
  319. body="Brioso Justau. +3",
  320. hands="Brioso Cuffs +3",
  321. legs="Brioso Cannions +3",
  322. feet="Brioso Slippers +3",
  323. neck="Mnbw. Whistle +1",
  324. waist="Luminary Sash",
  325. left_ear="Digni. Earring",
  326. right_ear="Regal Earring",
  327. left_ring="Kishar Ring",
  328. right_ring="Stikini Ring +1",
  329. back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Damage taken-5%',}},
  330. }
  331. sets.midcast.Mazurka = {range=info.ExtraSongInstrument}
  332.  
  333. -- For song buffs (duration and AF3 set bonus)
  334. --moved
  335.  
  336. -- For song defbuffs (duration primary, accuracy secondary)
  337. sets.midcast.SongDebuff = {
  338. main="Carnwenhan",
  339. range="Gjallarhorn",
  340. head="Brioso Roundlet +3",
  341. body="Brioso Justau. +3",
  342. hands="Brioso Cuffs +3",
  343. legs="Brioso Cannions +3",
  344. feet="Brioso Slippers +3",
  345. neck="Mnbw. Whistle +1",
  346. waist="Luminary Sash",
  347. left_ear="Digni. Earring",
  348. right_ear="Regal Earring",
  349. left_ring={ name="Metamor. Ring +1", augments={'Path: A',}},
  350. right_ring="Stikini Ring +1",
  351. back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Damage taken-5%',}},
  352. }
  353.  
  354. -- For song defbuffs (accuracy primary, duration secondary)
  355. sets.midcast.ResistantSongDebuff = sets.midcast.SongDebuff
  356.  
  357. -- Song-specific recast reduction
  358. sets.midcast.SongRecast = {ear2="Loquacious earring",ring1="Kishar Ring",legs="Fili Rhingrave +1"}
  359.  
  360. --sets.midcast.Daurdabla = set_combine(sets.midcast.FastRecast, sets.midcast.SongRecast, {range=info.ExtraSongInstrument})
  361.  
  362. -- Cast spell with normal gear, except using Daurdabla instead
  363. sets.midcast.Daurdabla = {range=info.ExtraSongInstrument}
  364.  
  365. -- Dummy song with Daurdabla; minimize duration to make it easy to overwrite.
  366. sets.midcast.DaurdablaDummy = {main="Carnwenhan",sub="Ammurapi Shield",range=info.ExtraSongInstrument,
  367. head="Nahtirah Hat",neck="Orunmila's Torque",ear1="Loquacious earring",
  368. body="Brioso Justaucorps +2",hands="Leyline gloves",ring1="Kishar Ring",ring2="Rahab ring",
  369. back="Intarabus's Cape",waist="Witful Belt",legs="Ayanmo Cosciales +1",feet="Bihu Slippers +3"}
  370.  
  371. -- Other general spells and classes.
  372. sets.midcast.Cure = {main="Serenity",sub="Clerisy Strap +1",
  373. head="Vanya Hood",neck="Incanter's Torque",ear1="Enchanter Earring +1",ear2="Mendicant's Earring",
  374. body="Heka's Kalasiris",hands="Telchine Gloves",ring1="Sirona's Ring",ring2="Weatherspoon Ring +1",
  375. back="Pahtli Cape",waist="Embla Sash",legs="Gyve Trousers",feet="Vanya Clogs"}
  376.  
  377. sets.midcast.Curaga = sets.midcast.Cure
  378. sets.midcast['Enhancing Magic'] = sets.precast.FC
  379. sets.midcast['Enfeebling Magic'] = {head="Brioso Roundlet +3",
  380. body="Brioso Justau. +3",
  381. hands="Inyan. Dastanas +2",
  382. legs={ name="Chironic Hose", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','"Cure" potency +9%','CHR+7','Mag. Acc.+5','"Mag.Atk.Bns."+7',}},
  383. feet="Brioso Slippers +3",
  384. neck="Mnbw. Whistle +1",
  385. waist="Luminary Sash",
  386. left_ear="Gwati Earring",
  387. right_ear="Digni. Earring",
  388. left_ring="Kishar Ring",
  389. right_ring={ name="Metamor. Ring +1", augments={'Path: A',}},
  390. back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Damage taken-5%',}},}
  391. sets.midcast.Stoneskin = {head="Umuthi Hat",neck="Nodens Gorget",Waist="Siegel Sash",legs="Shedir Seraweels",body="Dalmatica +1"}
  392. sets.midcast.Cursna = {ring1="Haoma's Ring",ring2="Haoma's Ring",feet="Gendewitha Galoshes +1",neck="Debilis Medallion"}
  393.  
  394. sets.midcast.Dispelga = {head="Brioso Roundlet +3",main="Daybreak",sub="Ammurapi Shield",neck="Moonbow Whistle +1",ear1="Gwati Earring",
  395. ear2="Dignitary's Earring",body="Brioso Justaucorps +3",hands="Inyanga Dastanas +2",ring1="Stikini Ring",ring2="Weatherspoon Ring +1",
  396. back=Macc_Back,waist="Luminary Sash",legs="Chironic Hose",feet="Medium's Sabots"}
  397. sets.midcast.Stoneskin = {head="Umuthi Hat",neck="Nodens Gorget",Waist="Siegel Sash",legs="Shedir Seraweels",body="Dalmatica +1"}
  398. sets.midcast.Cursna = {ring1="Haoma's Ring",ring2="Haoma's Ring",feet="Gendewitha Galoshes +1",neck="Debilis Medallion"}
  399. -- Sets to return to when not performing an action.
  400.  
  401. -- Resting sets
  402. sets.resting = {}
  403.  
  404.  
  405. -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  406. sets.idle = {main="Sangoma",sub="Genmei Shield",
  407. head={ name="Bihu Roundlet +3", augments={'Enhances "Con Anima" effect',}},
  408. body="Inyanga Jubbah +2",
  409. hands={ name="Bihu Cuffs +3", augments={'Enhances "Con Brio" effect',}},
  410. legs="Brioso Cannions +3",
  411. feet="Fili Cothurnes +1",
  412. neck={ name="Bard's Charm +2", augments={'Path: A',}},
  413. waist="Flume Belt +1",
  414. left_ear="Genmei Earring",
  415. right_ear="Hearty Earring",
  416. left_ring="Defending Ring",
  417. right_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  418. back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Damage taken-5%',}},
  419. }
  420.  
  421. sets.idle.PDT = sets.idle
  422.  
  423. sets.idle.MDT = sets.idle
  424.  
  425. sets.idle.Town = {
  426. head="Volte Cap",
  427. body={ name="Agony Jerkin +1", augments={'Path: A',}},
  428. hands="Volte Mittens",
  429. legs="Volte Tights",
  430. feet="Fili Cothurnes +1",
  431. neck={ name="Bard's Charm +2", augments={'Path: A',}},
  432. waist={ name="Sailfi Belt +1", augments={'Path: A',}},
  433. left_ear="Regal Earring",
  434. right_ear="Telos Earring",
  435. left_ring="Moonlight Ring",
  436. right_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
  437. back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Damage taken-5%',}},
  438. }
  439.  
  440. sets.idle.Weak = sets.idle.PDT
  441.  
  442.  
  443. -- Defense sets
  444.  
  445. sets.defense.PDT = {}
  446.  
  447. sets.defense.MDT = {}
  448.  
  449. sets.Kiting = {feet="Fili Cothurnes +1"}
  450. sets.latent_refresh = {waist="Fucho-no-obi"}
  451.  
  452. -- Engaged sets
  453.  
  454. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  455. -- sets if more refined versions aren't defined.
  456. -- If you create a set with both offense and defense modes, the offense mode should be first.
  457. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  458.  
  459. -- Basic set for if no TP weapon is defined.
  460. sets.engaged = {range={ name="Linos", augments={'Accuracy+15','Weapon skill damage +3%','Quadruple Attack +3',}},
  461. head="Aya. Zucchetto +2",
  462. body="Ayanmo Corazza +2",
  463. hands={ name="Chironic Gloves", augments={'Accuracy+19','"Dbl.Atk."+4','STR+1','Attack+3',}},
  464. legs={ name="Chironic Hose", augments={'"Triple Atk."+3','Rng.Acc.+26','Accuracy+19 Attack+19',}},
  465. feet="Aya. Gambieras +2",
  466. neck={ name="Bard's Charm +2", augments={'Path: A',}},
  467. waist="Reiki Yotai",
  468. left_ear="Eabani Earring",
  469. right_ear="Telos Earring",
  470. left_ring="Petrov Ring",
  471. right_ring="Ilabrat Ring",
  472. back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}},
  473. }
  474.  
  475. --Sets with weapons defined.
  476. sets.engaged.Dagger = {range={ name="Linos", augments={'Accuracy+15','Weapon skill damage +3%','Quadruple Attack +3',}},
  477. head={ name="Blistering Sallet +1", augments={'Path: A',}},
  478. body="Ayanmo Corazza +2",
  479. hands={ name="Chironic Gloves", augments={'Accuracy+19','"Dbl.Atk."+4','STR+1','Attack+3',}},
  480. legs={ name="Chironic Hose", augments={'"Triple Atk."+3','Rng.Acc.+26','Accuracy+19 Attack+19',}},
  481. feet="Aya. Gambieras +2",
  482. neck={ name="Bard's Charm +2", augments={'Path: A',}},
  483. waist={ name="Sailfi Belt +1", augments={'Path: A',}},
  484. left_ear="Mache Earring +1",
  485. right_ear="Telos Earring",
  486. left_ring="Petrov Ring",
  487. right_ring="Chirich Ring +1",
  488. back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}},
  489. }
  490.  
  491. sets.engaged.DaggerAcc = set_combine(sets.engaged.Dagger, {hands={ name="Gazu Bracelet +1", augments={'Path: A',}},
  492. waist={ name="Kentarch Belt +1", augments={'Path: A',}}})
  493.  
  494. -- Set if dual-wielding
  495. sets.engaged.DW = {
  496. range={ name="Linos", augments={'Accuracy+15','Weapon skill damage +3%','Quadruple Attack +3',}},
  497. head="Aya. Zucchetto +2",
  498. body="Ayanmo Corazza +2",
  499. hands={ name="Chironic Gloves", augments={'Accuracy+19','"Dbl.Atk."+4','STR+1','Attack+3',}},
  500. legs={ name="Chironic Hose", augments={'"Triple Atk."+3','Rng.Acc.+26','Accuracy+19 Attack+19',}},
  501. feet={ name="Chironic Slippers", augments={'Accuracy+24','"Dbl.Atk."+4','STR+3','Attack+11',}},
  502. neck={ name="Bard's Charm +2", augments={'Path: A',}},
  503. waist="Reiki Yotai",
  504. left_ear="Eabani Earring",
  505. right_ear="Telos Earring",
  506. left_ring="Petrov Ring",
  507. right_ring="Moonlight Ring",
  508. back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}},
  509. }
  510.  
  511. sets.engaged.DWAcc = set_combine(sets.engaged.DW, {hands={ name="Gazu Bracelet +1", augments={'Path: A',}},
  512. waist={ name="Kentarch Belt +1", augments={'Path: A',}}})
  513.  
  514. sets.engaged.Carnwenhan = sets.engaged.DW
  515. sets.engaged.Carnwenhan.AM3 = set_combine(sets.engaged.DW, {
  516. body={ name="Agony Jerkin +1", augments={'Path: A',}},
  517. hands="Volte Mittens",
  518. legs="Volte Tights",
  519. feet="Volte Spats",
  520. left_ring="Chirich Ring +1",
  521. right_ring="Chirich Ring +1",
  522. back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10','Damage taken-5%',}},
  523.  
  524. })
  525. sets.engaged.CarnwenhanAcc = set_combine(sets.engaged.DW, { hands={ name="Gazu Bracelet +1", augments={'Path: A',}},
  526. legs={ name="Bihu Cannions +3", augments={'Enhances "Soul Voice" effect',}},
  527. back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10','Damage taken-5%',}},})
  528. sets.engaged.CarnwenhanAcc.AM3 = set_combine(sets.engaged.CarnwenhanAcc, {body={ name="Agony Jerkin +1", augments={'Path: A',}},
  529. hands="Volte Mittens",
  530. legs="Volte Tights",
  531. feet="Volte Spats",
  532. left_ring="Chirich Ring +1",
  533. right_ring="Chirich Ring +1",
  534. back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10','Damage taken-5%',}}})
  535.  
  536. end
  537.  
  538. -------------------------------------------------------------------------------------------------------------------
  539. -- Job-specific hooks for standard casting events.
  540. -------------------------------------------------------------------------------------------------------------------
  541.  
  542. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  543. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  544. function job_precast(spell, action, spellMap, eventArgs)
  545. if spell.type == 'BardSong' then
  546. -- Auto-Pianissimo
  547. if ((spell.target.type == 'PLAYER' and not spell.target.charmed) or (spell.target.type == 'NPC' and spell.target.in_party)) and
  548. not state.Buff['Pianissimo'] then
  549.  
  550. local spell_recasts = windower.ffxi.get_spell_recasts()
  551. if spell_recasts[spell.recast_id] < 2 then
  552. send_command('@input /ja "Pianissimo" <me>; wait 1.5; input /ma "'..spell.name..'" '..spell.target.name)
  553. eventArgs.cancel = true
  554. return
  555. end
  556. end
  557. end
  558.  
  559. if (spell.type:endswith('Magic') or spell.type == "Ninjutsu" or spell.type == 'BardSong') then
  560. if buffactive.Silence then
  561. cancel_spell()
  562. send_command('input /item "Echo Drops" <me>')
  563. end
  564. end
  565. end
  566.  
  567. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  568. function job_midcast(spell, action, spellMap, eventArgs)
  569. if spell.action_type == 'Magic' then
  570. if spell.type == 'BardSong' then
  571. -- layer general gear on first, then let default handler add song-specific gear.
  572. local generalClass = get_song_class(spell)
  573. if generalClass and sets.midcast[generalClass] then
  574. equip(sets.midcast[generalClass])
  575. end
  576. end
  577. end
  578. end
  579.  
  580. function job_post_midcast(spell, action, spellMap, eventArgs)
  581. if spell.type == 'BardSong' then
  582. if state.ExtraSongsMode.value == 'FullLength' then
  583. equip(sets.midcast.Daurdabla)
  584. end
  585.  
  586. state.ExtraSongsMode:reset()
  587. end
  588. end
  589.  
  590. -- Set eventArgs.handled to true if we don't want automatic gear equipping to be done.
  591. function job_aftercast(spell, action, spellMap, eventArgs)
  592. if spell.type == 'BardSong' and not spell.interrupted then
  593. if spell.target and spell.target.type == 'SELF' then
  594. adjust_timers(spell, spellMap)
  595. end
  596. end
  597. end
  598.  
  599. -------------------------------------------------------------------------------------------------------------------
  600. -- Job-specific hooks for standard casting events.
  601. -------------------------------------------------------------------------------------------------------------------
  602.  
  603. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  604. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  605. function job_precast(spell, action, spellMap, eventArgs)
  606. if spell.type == 'BardSong' then
  607. -- Auto-Pianissimo
  608. if ((spell.target.type == 'PLAYER' and not spell.target.charmed) or (spell.target.type == 'NPC' and spell.target.in_party)) and
  609. not state.Buff['Pianissimo'] then
  610.  
  611. local spell_recasts = windower.ffxi.get_spell_recasts()
  612. if spell_recasts[spell.recast_id] < 2 then
  613. send_command('@input /ja "Pianissimo" <me>; wait 1.5; input /ma "'..spell.name..'" '..spell.target.name)
  614. eventArgs.cancel = true
  615. return
  616. end
  617. end
  618. end
  619.  
  620. if (spell.type:endswith('Magic') or spell.type == "Ninjutsu" or spell.type == 'BardSong') then
  621. if buffactive.Silence then
  622. cancel_spell()
  623. send_command('input /item "Echo Drops" <me>')
  624. end
  625. end
  626. end
  627.  
  628. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  629. function job_midcast(spell, action, spellMap, eventArgs)
  630. if spell.action_type == 'Magic' then
  631. if spell.type == 'BardSong' then
  632. -- layer general gear on first, then let default handler add song-specific gear.
  633. local generalClass = get_song_class(spell)
  634. if generalClass and sets.midcast[generalClass] then
  635. equip(sets.midcast[generalClass])
  636. end
  637. end
  638. end
  639. end
  640.  
  641. function job_post_midcast(spell, action, spellMap, eventArgs)
  642. if spell.type == 'BardSong' then
  643. if state.ExtraSongsMode.value == 'FullLength' then
  644. equip(sets.midcast.Daurdabla)
  645. end
  646.  
  647. state.ExtraSongsMode:reset()
  648. end
  649. end
  650.  
  651. -- Set eventArgs.handled to true if we don't want automatic gear equipping to be done.
  652. function job_aftercast(spell, action, spellMap, eventArgs)
  653. if spell.type == 'BardSong' and not spell.interrupted then
  654. if spell.target and spell.target.type == 'SELF' then
  655. adjust_timers(spell, spellMap)
  656. end
  657. end
  658. end
  659.  
  660. -------------------------------------------------------------------------------------------------------------------
  661. -- Job-specific hooks for non-casting events.
  662. -------------------------------------------------------------------------------------------------------------------
  663.  
  664. -- Handle notifications of general user state change.
  665. --function job_state_change(stateField, newValue, oldValue)
  666. -- if stateField == 'Offense Mode' then
  667. -- if newValue == 'Normal' then
  668. -- disable('main','sub','ammo')
  669. -- else
  670. -- enable('main','sub','ammo')
  671. -- end
  672. -- end
  673. --end
  674.  
  675. -------------------------------------------------------------------------------------------------------------------
  676. -- User code that supplements standard library decisions.
  677. -------------------------------------------------------------------------------------------------------------------
  678.  
  679. -- Called by the 'update' self-command.
  680. function job_update(cmdParams, eventArgs)
  681. pick_tp_weapon()
  682. end
  683.  
  684.  
  685. -- Modify the default idle set after it was constructed.
  686. function customize_idle_set(idleSet)
  687. if player.mpp < 51 then
  688. idleSet = set_combine(idleSet, sets.latent_refresh)
  689. end
  690.  
  691. if world.area:contains('Adoulin') then
  692. idleSet = set_combine(sets.idle.Town, {body="Councilor's Garb"})
  693. end
  694.  
  695. return idleSet
  696. end
  697.  
  698.  
  699. -- Function to display the current relevant user state when doing an update.
  700. function display_current_job_state(eventArgs)
  701. display_current_caster_state()
  702. eventArgs.handled = true
  703. end
  704.  
  705. -------------------------------------------------------------------------------------------------------------------
  706. -- Utility functions specific to this job.
  707. -------------------------------------------------------------------------------------------------------------------
  708.  
  709. -- Determine the custom class to use for the given song.
  710. function get_song_class(spell)
  711. -- Can't use spell.targets:contains() because this is being pulled from resources
  712. if set.contains(spell.targets, 'Enemy') then
  713. if state.CastingMode.value == 'Resistant' then
  714. return 'ResistantSongDebuff'
  715. else
  716. return 'SongDebuff'
  717. end
  718. elseif state.ExtraSongsMode.value == 'Dummy' then
  719. return 'DaurdablaDummy'
  720. else
  721. return 'SongEffect'
  722. end
  723. end
  724.  
  725. function job_post_precast(spell, action, spellMap, eventArgs)
  726. if spell.name == 'Dispelga' then
  727. equip(sets.precast.FC.Dispelga)
  728. end
  729. end
  730.  
  731. -- Function to create custom buff-remaining timers with the Timers plugin,
  732. -- keeping only the actual valid songs rather than spamming the default
  733. -- buff remaining timers.
  734. function adjust_timers(spell, spellMap)
  735. if state.UseCustomTimers.value == false then
  736. return
  737. end
  738.  
  739. local current_time = os.time()
  740.  
  741. -- custom_timers contains a table of song names, with the os time when they
  742. -- will expire.
  743.  
  744. -- Eliminate songs that have already expired from our local list.
  745. local temp_timer_list = {}
  746. for song_name,expires in pairs(custom_timers) do
  747. if expires < current_time then
  748. temp_timer_list[song_name] = true
  749. end
  750. end
  751. for song_name,expires in pairs(temp_timer_list) do
  752. custom_timers[song_name] = nil
  753. end
  754.  
  755. local dur = calculate_duration(spell.name, spellMap)
  756. if custom_timers[spell.name] then
  757. -- Songs always overwrite themselves now, unless the new song has
  758. -- less duration than the old one (ie: old one was NT version, new
  759. -- one has less duration than what's remaining).
  760.  
  761. -- If new song will outlast the one in our list, replace it.
  762. if custom_timers[spell.name] < (current_time + dur) then
  763. send_command('timers delete "'..spell.name..'"')
  764. custom_timers[spell.name] = current_time + dur
  765. send_command('timers create "'..spell.name..'" '..dur..' down')
  766. end
  767. else
  768. -- Figure out how many songs we can maintain.
  769. local maxsongs = 2
  770. if player.equipment.range == info.ExtraSongInstrument then
  771. maxsongs = maxsongs + info.ExtraSongs
  772. end
  773. if buffactive['Clarion Call'] then
  774. maxsongs = maxsongs + 1
  775. end
  776. -- If we have more songs active than is currently apparent, we can still overwrite
  777. -- them while they're active, even if not using appropriate gear bonuses (ie: Daur).
  778. if maxsongs < table.length(custom_timers) then
  779. maxsongs = table.length(custom_timers)
  780. end
  781.  
  782. -- Create or update new song timers.
  783. if table.length(custom_timers) < maxsongs then
  784. custom_timers[spell.name] = current_time + dur
  785. send_command('timers create "'..spell.name..'" '..dur..' down')
  786. else
  787. local rep,repsong
  788. for song_name,expires in pairs(custom_timers) do
  789. if current_time + dur > expires then
  790. if not rep or rep > expires then
  791. rep = expires
  792. repsong = song_name
  793. end
  794. end
  795. end
  796. if repsong then
  797. custom_timers[repsong] = nil
  798. send_command('timers delete "'..repsong..'"')
  799. custom_timers[spell.name] = current_time + dur
  800. send_command('timers create "'..spell.name..'" '..dur..' down')
  801. end
  802. end
  803. end
  804. end
  805.  
  806. -- Function to calculate the duration of a song based on the equipment used to cast it.
  807. -- Called from adjust_timers(), which is only called on aftercast().
  808. function calculate_duration(spellName, spellMap)
  809. local mult = 1
  810. if player.equipment.range == 'Daurdabla' then mult = mult + 0.3 end -- change to 0.25 with 90 Daur
  811. if player.equipment.range == "Gjallarhorn" then mult = mult + 0.4 end -- change to 0.3 with 95 Gjall
  812.  
  813. if player.equipment.main == "Carnwenhan" then mult = mult + 0.5 end -- 0.1 for 75, 0.4 for 95, 0.5 for 99/119
  814. if player.equipment.main == "Kali" then mult = mult + 0.05 end
  815. if player.equipment.sub == "Kali" then mult = mult + 0.05 end
  816. if player.equipment.neck == "Aoidos' Matinee" then mult = mult + 0.1 end
  817. if player.equipment.body == "Fili Hongreline +1" then mult = mult + 0.12 end
  818. if player.equipment.legs == "Inyanga Shalwar +2" then mult = mult + 0.17 end
  819. if player.equipment.feet == "Brioso Slippers +3" then mult = mult + 0.15 end
  820.  
  821. if spellMap == 'Paeon' and player.equipment.head == "Brioso Roundlet +3" then mult = mult + 0.2 end
  822. if spellMap == 'Madrigal' and player.equipment.head == "Fili Calot +1" and player.equipment.back == "Intarabus's Cape" then mult = mult + 0.2 end
  823. if spellMap == 'Minuet' and player.equipment.body == "Fili Hongreline +1" then mult = mult + 0.1 end
  824. if spellMap == 'March' and player.equipment.hands == "Fili Manchettes +1" then mult = mult + 0.1 end
  825. if spellMap == 'Ballad' and player.equipment.legs == "Fili Rhingrave +1" then mult = mult + 0.1 end
  826. if spellName == "Sentinel's Scherzo" and player.equipment.feet == "Fili Cothurnes +1" then mult = mult + 0.1 end
  827. if spellMap == 'Prelude' and player.equipment.back == "Intarabus's Cape" then mult = mult + 0.1 end
  828.  
  829. if buffactive.Troubadour then
  830. mult = mult*2
  831. end
  832. if spellName == "Sentinel's Scherzo" then
  833. if buffactive['Soul Voice'] then
  834. mult = mult*2
  835. elseif buffactive['Marcato'] then
  836. mult = mult*1.5
  837. end
  838. end
  839.  
  840. local totalDuration = math.floor(mult*120)
  841.  
  842. return totalDuration
  843. end
  844.  
  845.  
  846. -- Examine equipment to determine what our current TP weapon is.
  847. function pick_tp_weapon()
  848. -- if brd_daggers:contains(player.equipment.main) then
  849. -- state.CombatWeapon:set('Dagger')
  850.  
  851. if S{'NIN','DNC'}:contains(player.sub_job) and brd_daggers:contains(player.equipment.sub) then
  852. state.CombatForm:set('DW')
  853. else
  854. state.CombatForm:reset()
  855. end
  856. -- else
  857. state.CombatWeapon:reset()
  858. state.CombatForm:reset()
  859. end
  860. --end
  861. function job_buff_change(buff, gain)
  862. if state.Buff[buff] ~= nil then
  863. handle_equipping_gear(player.status)
  864. end
  865. if buff:startswith('Aftermath') then
  866. if player.equipment.main == 'Carnwenhan' and S{'NIN','DNC'}:contains(player.sub_job) then
  867. classes.CustomMeleeGroups:clear()
  868. if (buff == "Aftermath: Lv.3" and gain) or buffactive['Aftermath: Lv.3'] then
  869. classes.CustomMeleeGroups:append('AM3')
  870. add_to_chat(8, '-------------Mythic AM3 UP-------------')
  871. end
  872. if not midaction() then
  873. handle_equipping_gear(player.status)
  874. end
  875. else
  876. classes.CustomMeleeGroups:clear()
  877. if buff == "Aftermath" and gain or buffactive.Aftermath then
  878. classes.CustomMeleeGroups:append('AM')
  879. end
  880. if not midaction() then
  881. handle_equipping_gear(player.status)
  882. end
  883. end
  884. end
  885. end
  886.  
  887. function update_melee_groups()
  888. classes.CustomMeleeGroups:clear()
  889. if player.equipment.main == 'Carnwenhan' then
  890. if buffactive['Aftermath: Lv.3'] then
  891. classes.CustomMeleeGroups:append('AM3')
  892. end
  893. else
  894. if buffactive['Aftermath'] then
  895. classes.CustomMeleeGroups:append('AM')
  896. end
  897. end
  898. end
  899.  
  900. -- Function to reset timers.
  901. function reset_timers()
  902. for i,v in pairs(custom_timers) do
  903. send_command('timers delete "'..i..'"')
  904. end
  905. custom_timers = {}
  906. end
  907.  
  908.  
  909. -- Select default macro book on initial load or subjob change.
  910. function select_default_macro_book()
  911. set_macro_page(1, 6)
  912. end
  913.  
  914. function set_lockstyle()
  915. send_command('wait 6;input /lockstyleset 11')
  916. end
  917.  
  918. function job_self_command(cmdParams, eventArgs)
  919. gearinfo(cmdParams, eventArgs)
  920. end
  921.  
  922. function gearinfo(cmdParams, eventArgs)
  923. if cmdParams[1] == 'gearinfo' then
  924. if type(cmdParams[4]) == 'string' then
  925. if cmdParams[4] == 'true' then
  926. moving = true
  927. elseif cmdParams[4] == 'false' then
  928. moving = false
  929. end
  930. end
  931. if not midaction() then
  932. job_update()
  933. end
  934. end
  935. end
  936.  
  937. function check_moving()
  938. if state.DefenseMode.value == 'None' and state.Kiting.value == false then
  939. if state.Auto_Kite.value == false and moving then
  940. state.Auto_Kite:set(true)
  941. elseif state.Auto_Kite.value == true and moving == false then
  942. state.Auto_Kite:set(false)
  943. end
  944. end
  945. end
  946.  
  947. function check_gear()
  948. if no_swap_gear:contains(player.equipment.left_ring) then
  949. disable("ring1")
  950. else
  951. enable("ring1")
  952. end
  953. if no_swap_gear:contains(player.equipment.right_ring) then
  954. disable("ring2")
  955. else
  956. enable("ring2")
  957. end
  958. end
  959.  
  960. windower.register_event('zone change',
  961. function()
  962. if no_swap_gear:contains(player.equipment.left_ring) then
  963. enable("ring1")
  964. equip(sets.idle)
  965. end
  966. if no_swap_gear:contains(player.equipment.right_ring) then
  967. enable("ring2")
  968. equip(sets.idle)
  969. end
  970. end
  971. )
  972.  
  973. windower.raw_register_event('zone change',reset_timers)
  974. windower.raw_register_event('logout',reset_timers)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement