Ballzack

GEO.lua

Jun 18th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.46 KB | None | 0 0
  1. -- Original: Motenten / Modified: Ballzack
  2.  
  3. -------------------------------------------------------------------------------------------------------------------
  4. -- Keybinds
  5. -------------------------------------------------------------------------------------------------------------------
  6.  
  7. -- Modes: [ F10 ] Emergency -PDT Mode
  8. -- [ ALT+F10 ] Toggle Kiting Mode
  9. -- [ F11 ] Emergency -MDT Mode
  10. -- [ CTRL+F11 ] Cycle Casting Modes
  11. -- [ F12 ] Update Current Gear / Report Current Status
  12. -- [ CTRL+F12 ] Cycle Idle Modes
  13. -- [ ALT+F12 ] Cancel Emergency -PDT/-MDT Mode
  14. -- [ ALT+` ] Magic Burst Mode Toggle
  15. -- [ WIN+C ] Toggle Capacity Points Mode
  16. --
  17. -- Abilities: [ CTRL+` ] Full Circle
  18. -- [ CTRL+B ] Blaze of Glory
  19. -- [ CTRL+A ] Ecliptic Attrition
  20. -- [ CTRL+D ] Dematerialize
  21. -- [ CTRL+L ] Life Cycle
  22. --
  23. -- Weapons: [ CTRL+W ] Toggles Weapon Lock
  24. --
  25. -- WS: [ CTRL+Numpad0 ] Myrkr
  26. --
  27. --
  28. --
  29.  
  30.  
  31. -------------------------------------------------------------------------------------------------------------------
  32. -- Setup functions for this job. Generally should not be modified.
  33. -------------------------------------------------------------------------------------------------------------------
  34.  
  35. -- Initialization function for this job file.
  36. function get_sets()
  37. mote_include_version = 2
  38.  
  39. -- Load and initialize the include file.
  40. include('Mote-Include.lua')
  41. end
  42.  
  43. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  44. function job_setup()
  45. indi_timer = ''
  46. indi_duration = 180
  47.  
  48. state.CP = M(false, "Capacity Points Mode")
  49. lockstyleset = 1
  50.  
  51. Cities = S{
  52. "Ru'lude Gardens","Upper Jeuno","Lower Jeuno","Port Jeuno",
  53. "Port Windurst","Windurst Waters","Windurst Woods","Windurst Walls","Heavens Tower",
  54. "Port San d'Oria","Northern San d'Oria","Southern San d'Oria",
  55. "Port Bastok","Bastok Markets","Bastok Mines","Metalworks",
  56. "Aht Urhgan Whitegate","Nashmau","Tavanazian Safehold",
  57. "Selbina","Mhaura","Norg","Eastern Adoulin","Western Adoulin","Kazham"
  58. }
  59.  
  60. define_geomancy_values()
  61. end
  62.  
  63. -------------------------------------------------------------------------------------------------------------------
  64. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  65. -------------------------------------------------------------------------------------------------------------------
  66.  
  67. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  68. function user_setup()
  69. state.CastingMode:options('Normal', 'Seidr', 'Resistant')
  70. state.IdleMode:options('Normal', 'Regen', 'Refresh')
  71.  
  72. state.WeaponLock = M(false, 'Weapon Lock')
  73. state.MagicBurst = M(false, 'Magic Burst')
  74. state.ConsMP = M(false, 'MP Coat')
  75.  
  76.  
  77. send_command('bind home input /ja "Myrkr"')
  78. send_command('bind ^` input /ja "Full Circle" <me>')
  79. send_command('bind ^b input /ja "Blaze of Glory" <me>')
  80. send_command('bind ^a input /ja "Ecliptic Attrition" <me>')
  81. send_command('bind ^d input /ja "Dematerialize" <me>')
  82. send_command('bind ^l input /ja "Life Cycle" <me>')
  83.  
  84. send_command('bind !` gs c toggle MagicBurst')
  85. send_command('bind ^= gs c toggle ConsMP')
  86. send_command('bind @c gs c toggle CP')
  87. send_command('bind @w gs c toggle WeaponLock')
  88. send_command('bind @home gs c warpring')
  89.  
  90. select_default_macro_book()
  91. set_lockstyle()
  92. end
  93.  
  94. function user_unload()
  95. send_command('unbind home')
  96. send_command('unbind ^`')
  97. send_command('unbind !`')
  98. send_command('unbind ^b')
  99. send_command('unbind ^e')
  100. send_command('unbind ^d')
  101. send_command('unbind ^l')
  102. send_command('unbind @c')
  103. send_command('unbind ^=')
  104. send_command('unbind @w')
  105. send_command('unbind @home')
  106.  
  107. end
  108.  
  109.  
  110. -- Define sets and vars used by this job file.
  111. function init_gear_sets()
  112. include('augment-items.lua')
  113.  
  114. ------------------------------------------------------------------------------------------------
  115. ----------------------------------------- Precast Sets -----------------------------------------
  116. ------------------------------------------------------------------------------------------------
  117.  
  118. -- Precast sets to enhance JAs
  119. sets.precast.JA.Bolster = {body="Bagua Tunic +1"}
  120. sets.precast.JA['Full Circle'] = {head="Azimuth Hood +1"}
  121. sets.precast.JA['Life Cycle'] = {body="Geomancy Tunic +2", back="Nantosuelta's Cape"}
  122.  
  123. -- Fast cast sets for spells
  124.  
  125. sets.precast.FC = {
  126. -- /RDM --15
  127. main="Solstice", -- 5/0
  128. sub="Genmei Shield",
  129. range="Dunna", -- 3/0
  130. head=MerlinicHoodFC, -- 14/0
  131. neck="Orunmila's Torque", -- 5/0
  132. ear1="Loquac. Earring", -- 2%
  133. ear2="Enchntr. Earring +1", -- 2%
  134. body=MerlinicJubbahMB, -- 6/0
  135. ring1="Kishar Ring",
  136. ring2="Lebeche Ring", -- 0/2
  137. back="Perimede Cape", -- 0/4
  138. waist="Witful Belt", --3/3
  139. legs="Geomancy Pants +2", -- 13/0
  140. feet=MerlinicCrackowsFC} -- 11/0
  141.  
  142. sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {
  143. waist="Siegel Sash"})
  144.  
  145. sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {hands="Bagua Mitaines +1"})
  146.  
  147. sets.precast.FC.Cure = set_combine(sets.precast.FC, {
  148. ear1="Mendi. Earring",
  149. ring1="Lebeche Ring"})
  150.  
  151. sets.precast.FC.Curaga = sets.precast.FC.Cure
  152. sets.precast.FC.Impact = set_combine(sets.precast.FC, {head=empty, body="Twilight Cloak"})
  153.  
  154.  
  155. -- Weaponskill sets
  156. -- Default set for any weaponskill that isn't any more specifically defined
  157. sets.precast.WS = {
  158. head="Jhakri Coronal +2",
  159. neck="Fotia Gorget",
  160. ear1="Telos Earring",
  161. ear2="Brutal Earring",
  162. body="Jhakri Robe +2",
  163. hands="Jhakri Cuffs +2",
  164. ring1="Rufescent Ring",
  165. ring2="Shukuyu Ring",
  166. back="",
  167. waist="Fotia Belt",
  168. legs="Jhakri Slops +2",
  169. feet="Jhakri Pigaches +2"}
  170.  
  171. ------------------------------------------------------------------------
  172. ----------------------------- Midcast Sets -----------------------------
  173. ------------------------------------------------------------------------
  174.  
  175. -- Base fast recast for spells
  176. sets.midcast.FastRecast = set_combine(sets.precast.FC,{
  177. ring2="Prolix Ring",
  178. back=NantosueltaHaste})
  179.  
  180. sets.midcast.Geomancy = {
  181. main="Solstice",
  182. sub="Genmei Shield",
  183. range="Dunna",
  184. head=VanyaHoodCMP,
  185. neck="Incanter's Torque",
  186. ear1="Gifted Earring",
  187. ear2="Calamitous Earring",
  188. body="Amalric Doublet",
  189. hands="Shrieker's Cuffs",
  190. ring1="Kishar Ring",
  191. ring2="Prolix Ring",
  192. back="Lifestream Cape",
  193. waist="Hachirin-no-Obi",
  194. legs=VanyaSlopsCMP,
  195. feet=MerlinicCrackowsCMP}
  196.  
  197. sets.midcast.Geomancy.Indi = set_combine(sets.midcast.Geomancy, {
  198. legs="Bagua Pants +1",
  199. feet="Azimuth Gaiters +1"})
  200.  
  201. sets.midcast.Cure = {
  202. main="Gada",
  203. sub="Sors Shield",
  204. range="Dunna",
  205. head=VanyaHoodCure,
  206. neck="Incanter's Torque",
  207. ear1="Healing Earring",
  208. ear2="Beatific Earring",
  209. body="Vanya Robe",
  210. hands="Telchine Gloves",
  211. ring1="Haoma's Ring",
  212. ring2="Sirona's Ring",
  213. back="Tempered Cape +1",
  214. waist="Bishop's Sash",
  215. legs=VanyaSlopsCure,
  216. feet="Vanya Clogs"}
  217.  
  218. sets.midcast.Curaga = sets.midcast.Cure
  219.  
  220. sets.midcast.Cursna = sets.midcast.Cure
  221.  
  222. sets.midcast['Enhancing Magic'] = {
  223. main="Gada",
  224. sub="Ammurapi Shield",
  225. head="Befouled Crown",
  226. neck="Incanter's Torque",
  227. ear1="Augment. Earring",
  228. ear2="Andoaa Earring",
  229. body={ name="Telchine Chas.", augments={'Enh. Mag. eff. dur. +9',}},
  230. ring1="Stikini Ring",
  231. ring2="Stikini Ring",
  232. back="Perimede Cape",
  233. waist="Olympus Sash"}
  234.  
  235. sets.midcast.EnhancingDuration = {
  236. main="Gada",
  237. sub="Ammurapi Shield",
  238. head="Telchine Cap",
  239. body={ name="Telchine Chas.", augments={'Enh. Mag. eff. dur. +9',}},
  240. hands=TelchineGlovesDuration,
  241. legs=TelchineBraconiDuration,
  242. feet="Telchine Pigaches"}
  243.  
  244. sets.midcast.Regen = set_combine(sets.midcast.EnhancingDuration, {
  245. main="Bolelabunga"})
  246.  
  247. sets.midcast.Refresh = set_combine(sets.midcast.EnhancingDuration, {
  248. head="Amalric Coif",
  249. waist="Gishdubar Sash"})
  250.  
  251. sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
  252.  
  253. sets.midcast.Aquaveil = set_combine(sets.midcast['Enhancing Magic'], {
  254. main="Vadose Rod",
  255. head="Amalric Coif",
  256. waist="Emphatikos Rope"})
  257.  
  258. sets.midcast.Protect = set_combine(sets.midcast.EnhancingDuration, {ring1="Sheltered Ring"})
  259. sets.midcast.Protectra = sets.midcast.Protect
  260. sets.midcast.Shell = sets.midcast.Protect
  261. sets.midcast.Shellra = sets.midcast.Protect
  262.  
  263. sets.midcast.MndEnfeebles = {
  264. main="Grioavolr",
  265. sub="Enki Strap",
  266. ammo="Hydrocera",
  267. head="Befouled Crown",
  268. neck="Incanter's Torque",
  269. ear1="Gwati Earring",
  270. ear2="Digni. Earring",
  271. body="Vanya Robe",
  272. hands="Azimuth Gloves +1",
  273. ring1="Stikini Ring",
  274. ring2="Kishar Ring",
  275. back=NantosueltaNuke,
  276. waist="Luminary Sash",
  277. legs="Psycloth Lappas",
  278. feet="Bagua Sandals +1"} -- MND/Magic accuracy
  279.  
  280. sets.midcast.IntEnfeebles = set_combine(sets.midcast.MndEnfeebles, {
  281. ammo="Pemphredo Tathlum",
  282. ear1="Barkaro. Earring",
  283. waist="Porous Rope"}) -- INT/Magic accuracy
  284.  
  285. sets.midcast['Dark Magic'] = {
  286. body="Geomancy Tunic +2",
  287. ring2="Evanescence Ring",
  288. back=NantosueltaNuke,
  289. legs="Azimuth Tights +1"}
  290.  
  291. sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {
  292. head="Bagua Galero +1",
  293. neck="Erra Pendant",
  294. ear1="Hirudinea Earring",
  295. hands="Geo. Mitaines +2",
  296. ring1="Archon Ring",
  297. waist="Fucho-no-obi",
  298. feet=MerlinicCrackowsDrainAspir})
  299.  
  300. sets.midcast.Aspir = sets.midcast.Drain
  301.  
  302. sets.midcast.Stun = sets.midcast['Dark Magic']
  303.  
  304. -- Elemental Magic sets
  305.  
  306. sets.midcast['Elemental Magic'] = {
  307. main="Grioavolr",
  308. sub="Enki Strap",
  309. ammo="Pemphredo Tathlum",
  310. head=MerlinicHoodNuke,
  311. neck="Saevus Pendant +1",
  312. ear1="Barkaro. Earring",
  313. ear2="Friomisi Earring",
  314. body=MerlinicJubbahMB,
  315. hands=AmalricGagesINT,
  316. ring1="Strendu Ring",
  317. ring2="Jhakri Ring",
  318. back=NantosueltaNuke,
  319. waist="Refoccilation Stone",
  320. legs=MerlinicShalwarBurst,
  321. feet=MerlinicCrackowsNuke}
  322.  
  323. sets.midcast['Elemental Magic'].Resistant = set_combine(sets.midcast['Elemental Magic'], {
  324. neck="Sanctity Necklace",
  325. ear2="Digni. Earring",
  326. hands="Jhakri Cuffs +2",
  327. waist="Eschan Stone",
  328. feet="Jhakri Pigaches +2"})
  329.  
  330. sets.midcast.GeoElem = set_combine(sets.midcast['Elemental Magic'], {
  331. main="Solstice",
  332. sub="Culminus",
  333. ring1="Fenrir Ring +1",
  334. ring2="Fenrir Ring +1"})
  335.  
  336. sets.midcast['Elemental Magic'].Seidr = set_combine(sets.midcast['Elemental Magic'], {
  337. neck="Sanctity Necklace",
  338. ear2="Digni. Earring",
  339. body="Seidr Cotehardie",
  340. hands="Jhakri Cuffs +2",
  341. waist="Eschan Stone",
  342. feet="Jhakri Pigaches +2"})
  343.  
  344. sets.midcast.GeoElem.Seidr = set_combine(sets.midcast['Elemental Magic'].Seidr, {
  345. main="Solstice",
  346. sub="Culminus",
  347. neck="Sanctity Necklace",
  348. body="Seidr Cotehardie",
  349. ring1="Fenrir Ring +1",
  350. ring2="Fenrir Ring +1"})
  351.  
  352. sets.midcast.Impact = set_combine(sets.midcast['Elemental Magic'], {
  353. head=empty,
  354. body="Twilight Cloak",
  355. ring2="Archon Ring"})
  356.  
  357. -- Initializes trusts at iLvl 119
  358. sets.midcast.Trust = sets.precast.FC
  359.  
  360. ------------------------------------------------------------------------------------------------
  361. ------------------------------------------ Idle Sets -------------------------------------------
  362. ------------------------------------------------------------------------------------------------
  363.  
  364. sets.idle = {
  365. main="Bolelabunga",
  366. sub="Genmei Shield",
  367. ranged="Dunna",
  368. head="Hagondes Hat +1",
  369. neck="Loricate Torque +1",
  370. ear1="Sanare Earring",
  371. ear2="Hearty Earring",
  372. body="Mallquis Saio +2",
  373. hands="Hagondes Cuffs +1",
  374. ring1="Defending Ring",
  375. ring2="Vocane Ring",
  376. back="Moonbeam Cape",
  377. waist="Slipor Sash",
  378. legs=MerlinicShalwarDT,
  379. feet="Geo. Sandals +3"}
  380.  
  381. sets.idle.Regen = set_combine(sets.idle, {
  382. neck="Sanctity Necklace",
  383. ear1="Dawn Earring",
  384. ear2="Infused Earring",
  385. ring1="Sheltered Ring",
  386. ring2="Paguroidea Ring"})
  387.  
  388. sets.idle.Refresh = set_combine(sets.idle, {
  389. main="Bolelabunga",
  390. head="Befouled Crown",
  391. ear1="Moonshade Earring",
  392. body="Jhakri Robe +2",
  393. hands=MerlinicDastanasRefresh,
  394. legs="Assid. Pants +1",
  395. feet=MerlinicCrackowsRefresh})
  396.  
  397. sets.idle.Weak = sets.idle
  398.  
  399. -- .Pet sets are for when Luopan is present.
  400. sets.idle.Pet = set_combine(sets.idle, {
  401. -- Pet: -DT (37.5% to cap) / Pet: Regen
  402. main="Solstice", --3/3 (Sucellus)
  403. sub="Genmei Shield",
  404. range="Dunna", --5/0
  405. head="Azimuth Hood +1", --0/3
  406. ear1="Handler's Earring", --3*/0
  407. ear2="Handler's Earring +1", --4*/0
  408. body={ name="Telchine Chas.", augments={'Pet: "Regen"+3','Pet: Damage taken -3%',}}, --3/3
  409. hands="Geo. Mitaines +2", --0/11
  410. back=NantosueltaPet,
  411. waist="Isa Belt", --3/1
  412. legs=TelchineBraconiPet, --0/3
  413. feet="Bagua Sandals +1"})
  414.  
  415. sets.idle.Pet.Full = set_combine(sets.idle.Pet,{
  416. body="Mallquis Saio +2", --6/6
  417. hands="Hagondes Cuffs +1", -- 4/0
  418. back="Moonbeam Cape", --5/5
  419. legs=MerlinicShalwarDT,-- 2/2
  420. feet="Mallquis Clogs +2"})
  421.  
  422. -- Defense sets
  423.  
  424. sets.defense.PDT = sets.idle
  425. sets.defense.MDT = sets.idle
  426.  
  427. sets.Kiting = {feet="Geo. Sandals +3"}
  428. sets.latent_refresh = {waist="Fucho-no-obi"}
  429.  
  430. --------------------------------------
  431. -- Engaged sets
  432. --------------------------------------
  433.  
  434. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  435. -- sets if more refined versions aren't defined.
  436. -- If you create a set with both offense and defense modes, the offense mode should be first.
  437. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  438.  
  439. -- Normal melee group
  440. sets.engaged = {
  441. head="Jhakri Coronal +2",
  442. neck="Lissome Necklace",
  443. ear1="Cessance Earring",
  444. ear2="Telos Earring",
  445. body="Jhakri Robe +2",
  446. hands="Jhakri Cuffs +2",
  447. ring1="Petrov Ring",
  448. ring2="Hetairoi Ring",
  449. back=NantosueltaHaste,
  450. waist="Windbuffet Belt +1",
  451. feet="Jhakri Pigaches +2"}
  452.  
  453. --------------------------------------
  454. -- Custom buff sets
  455. --------------------------------------
  456.  
  457. sets.magic_burst = {
  458. body="Merlinic Jubbah", --10
  459. feet="Merlinic Crackows", --11
  460. neck="Mizu. Kubikazari", --10
  461. ring1="Mujin Band"}
  462.  
  463. sets.buff.Doom = {ring1="Saida Ring", ring2="Saida Ring", waist="Gishdubar Sash"}
  464.  
  465. sets.Obi = {waist="Hachirin-no-Obi"}
  466. sets.CP = {back="Mecisto. Mantle"}
  467. sets.ConsMP = {body="Seidr Cotehardie"}
  468.  
  469. end
  470.  
  471. -------------------------------------------------------------------------------------------------------------------
  472. -- Job-specific hooks for standard casting events.
  473. -------------------------------------------------------------------------------------------------------------------
  474.  
  475. function job_post_precast(spell, action, spellMap, eventArgs)
  476. if spell.name == 'Impact' then
  477. equip(sets.precast.FC.Impact)
  478. end
  479. if spell.type == "Geomancy" then
  480. if Cities:contains(world.area) then
  481. cancel_spell()
  482. add_to_chat(123,'Unable To Use Geomancy In Town')
  483. return
  484. else
  485. display_geomancy_info(spell)
  486. end
  487. end
  488. end
  489.  
  490. function job_post_midcast(spell, action, spellMap, eventArgs)
  491. if spell.skill == 'Elemental Magic' then
  492. if state.MagicBurst.value then
  493. equip(sets.magic_burst)
  494. if spell.english == "Impact" then
  495. equip(sets.midcast.Impact)
  496. end
  497. end
  498. if (spell.element == world.day_element or spell.element == world.weather_element) then
  499. equip(sets.Obi)
  500. end
  501. if spell.skill == 'Elemental Magic' and state.ConsMP.value then
  502. equip(sets.ConsMP)
  503. end
  504. end
  505. if spell.skill == 'Enhancing Magic' and classes.NoSkillSpells:contains(spell.english) then
  506. equip(sets.midcast.EnhancingDuration)
  507. if spellMap == 'Refresh' then
  508. equip(sets.midcast.Refresh)
  509. end
  510. end
  511. end
  512.  
  513. function job_aftercast(spell, action, spellMap, eventArgs)
  514. if not spell.interrupted then
  515. if spell.english:startswith('Indi') then
  516. if not classes.CustomIdleGroups:contains('Indi') then
  517. classes.CustomIdleGroups:append('Indi')
  518. end
  519. --send_command('@timers d "'..indi_timer..'"')
  520. --indi_timer = spell.english
  521. --send_command('@timers c "'..indi_timer..'" '..indi_duration..' down spells/00136.png')
  522. elseif spell.skill == 'Elemental Magic' then
  523. -- state.MagicBurst:reset()
  524. end
  525. if spell.english == "Sleep II" then
  526. send_command('@timers c "Sleep II ['..spell.target.name..']" 90 down spells/00259.png')
  527. elseif spell.english == "Sleep" or spell.english == "Sleepga" then -- Sleep & Sleepga Countdown --
  528. send_command('@timers c "Sleep ['..spell.target.name..']" 60 down spells/00253.png')
  529. end
  530. elseif not player.indi then
  531. classes.CustomIdleGroups:clear()
  532. end
  533. end
  534.  
  535.  
  536. -------------------------------------------------------------------------------------------------------------------
  537. -- Job-specific hooks for non-casting events.
  538. -------------------------------------------------------------------------------------------------------------------
  539.  
  540. -- Called when a player gains or loses a buff.
  541. -- buff == buff gained or lost
  542. -- gain == true if the buff was gained, false if it was lost.
  543. function job_buff_change(buff, gain)
  544. if player.indi and not classes.CustomIdleGroups:contains('Indi')then
  545. classes.CustomIdleGroups:append('Indi')
  546. handle_equipping_gear(player.status)
  547. elseif classes.CustomIdleGroups:contains('Indi') and not player.indi then
  548. classes.CustomIdleGroups:clear()
  549. handle_equipping_gear(player.status)
  550. end
  551.  
  552. if buff == "doom" then
  553. if gain then
  554. equip(sets.buff.Doom)
  555. send_command('@input /p Doomed.')
  556. disable('ring1','ring2','waist')
  557. else
  558. enable('ring1','ring2','waist')
  559. handle_equipping_gear(player.status)
  560. end
  561. end
  562.  
  563. end
  564.  
  565. -- Handle notifications of general user state change.
  566. function job_state_change(stateField, newValue, oldValue)
  567. if state.WeaponLock.value == true then
  568. disable('main','sub')
  569. else
  570. enable('main','sub')
  571. end
  572. end
  573.  
  574. -------------------------------------------------------------------------------------------------------------------
  575. -- User code that supplements standard library decisions.
  576. -------------------------------------------------------------------------------------------------------------------
  577.  
  578. function job_get_spell_map(spell, default_spell_map)
  579. if spell.action_type == 'Magic' then
  580. if spell.skill == 'Enfeebling Magic' then
  581. if spell.type == 'WhiteMagic' then
  582. return 'MndEnfeebles'
  583. else
  584. return 'IntEnfeebles'
  585. end
  586. elseif spell.skill == 'Geomancy' then
  587. if spell.english:startswith('Indi') then
  588. return 'Indi'
  589. end
  590. elseif spell.skill == 'Elemental Magic' then
  591. if spellMap == 'GeoElem' then
  592. return 'GeoElem'
  593. end
  594. end
  595. end
  596. end
  597.  
  598. function customize_idle_set(idleSet)
  599. if player.mpp < 51 then
  600. idleSet = set_combine(idleSet, sets.latent_refresh)
  601. end
  602. if state.CP.current == 'on' then
  603. equip(sets.CP)
  604. disable('back')
  605. else
  606. enable('back')
  607. end
  608.  
  609. return idleSet
  610. end
  611.  
  612. -- Called by the 'update' self-command.
  613. function job_update(cmdParams, eventArgs)
  614. classes.CustomIdleGroups:clear()
  615. if player.indi then
  616. classes.CustomIdleGroups:append('Indi')
  617. end
  618. end
  619.  
  620. -- Function to display the current relevant user state when doing an update.
  621. function display_current_job_state(eventArgs)
  622. eventArgs.handled = true
  623. local msg = ''
  624.  
  625. msg = msg .. 'Idle ['..state.IdleMode.value..'], Casting ['..state.CastingMode.value..']'
  626.  
  627. if state.MagicBurst.value then
  628. msg = msg .. ', MB [ON]'
  629. else
  630. msg = msg .. ', MB [OFF]'
  631. end
  632. if state.DefenseMode.value ~= 'None' then
  633. msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  634. end
  635.  
  636. add_to_chat(122, msg)
  637. end
  638.  
  639. function job_self_command(cmdParams, eventArgs)
  640. if cmdParams[1]:lower() == 'nuke' then
  641. handle_nuking(cmdParams)
  642. eventArgs.handled = true
  643. end
  644. command = cmdParams[1]:lower()
  645. if command == 'warpring' then
  646. equip({left_ring="Warp Ring"})
  647. send_command('gs disable left_ring;wait 10;input /item "Warp Ring" <me>;wait 1;input /item "Warp Ring" <me>;wait 1;input /item "Warp Ring" <me>;wait 10;gs enable left_ring')
  648. end
  649. end
  650.  
  651. function define_geomancy_values()
  652. geomancy = {
  653. Frailty = {bonus="Defense Down"},
  654. Torpor = {bonus="Evasion Down"},
  655. Languor = {bonus="Magic Evasion Down"},
  656. Focus = {bonus="Magic Accuracy"},
  657. Malaise = {bonus="Magic Defense Down"},
  658. Precision = {bonus="Accuracy"},
  659. Refresh = {bonus="Refresh"},
  660. Fade = {bonus="Magic Attack Down"},
  661. Wilt = {bonus="Attack Down"},
  662. Vex = {bonus="Magic Accuracy Down"},
  663. Slip = {bonus="Accuracy Down"},
  664. Acumen = {bonus="Magic Attack"},
  665. Fend = {bonus="Magic Defense"},
  666. Fury = {bonus="Attack"},
  667. Attunement = {bonus="Magic Evasion"},
  668. Voidance = {bonus="Evasion"},
  669. Barrier = {bonus="Defense"},
  670. Haste = {bonus="Haste"}
  671. }
  672. end
  673.  
  674. function display_geomancy_info(spell)
  675. geoType=nil
  676. string.gsub(spell.english.."-","-(.-)-",function(geo) geoType=geo end)
  677. geoInfo = geomancy[geoType]
  678. if geoInfo then
  679. add_to_chat(158, spell.english..' = '..tostring(geoInfo.bonus))
  680. end
  681. end
  682.  
  683. -------------------------------------------------------------------------------------------------------------------
  684. -- Utility functions specific to this job.
  685. -------------------------------------------------------------------------------------------------------------------
  686.  
  687. -- Select default macro book on initial load or subjob change.
  688. function select_default_macro_book()
  689. set_macro_page(1, 2)
  690. end
  691.  
  692. function set_lockstyle()
  693. send_command('wait 2; input /lockstyleset ' .. lockstyleset)
  694. end
Add Comment
Please, Sign In to add comment