Advertisement
Guest User

SCH - Help

a guest
Dec 21st, 2015
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.08 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job. Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. --[[
  6. Custom commands:
  7.  
  8. Shorthand versions for each strategem type that uses the version appropriate for
  9. the current Arts.
  10.  
  11. Light Arts Dark Arts
  12.  
  13. gs c scholar light Light Arts/Addendum
  14. gs c scholar dark Dark Arts/Addendum
  15. gs c scholar cost Penury Parsimony
  16. gs c scholar speed Celerity Alacrity
  17. gs c scholar aoe Accession Manifestation
  18. gs c scholar power Rapture Ebullience
  19. gs c scholar duration Perpetuance
  20. gs c scholar accuracy Altruism Focalization
  21. gs c scholar enmity Tranquility Equanimity
  22. gs c scholar skillchain Immanence
  23. gs c scholar addendum Addendum: White Addendum: Black
  24. --]]
  25.  
  26.  
  27.  
  28. -- Initialization function for this job file.
  29. function get_sets()
  30. mote_include_version = 2
  31.  
  32. -- Load and initialize the include file.
  33. include('Mote-Include.lua')
  34. end
  35.  
  36. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  37. function job_setup()
  38. info.addendumNukes = S{"Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",
  39. "Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
  40.  
  41. state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
  42. update_active_strategems()
  43. end
  44.  
  45. -------------------------------------------------------------------------------------------------------------------
  46. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  47. -------------------------------------------------------------------------------------------------------------------
  48.  
  49. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  50. function user_setup()
  51. state.OffenseMode:options('None', 'Normal')
  52. state.CastingMode:options('Normal', 'MB')
  53. state.IdleMode:options('Normal', 'PDT')
  54.  
  55.  
  56. info.low_nukes = S{"Stone", "Water", "Aero", "Fire", "Blizzard", "Thunder"}
  57. info.mid_nukes = S{"Stone II", "Water II", "Aero II", "Fire II", "Blizzard II", "Thunder II",
  58. "Stone III", "Water III", "Aero III", "Fire III", "Blizzard III", "Thunder III",
  59. "Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",}
  60. info.high_nukes = S{"Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
  61.  
  62. gear.macc_hagondes = {name="Hagondes Cuffs", augments={'Phys. dmg. taken -3%','Mag. Acc.+29'}}
  63.  
  64. send_command('bind ^` input /ma Stun <t>')
  65.  
  66. select_default_macro_book()
  67. end
  68.  
  69. function user_unload()
  70. send_command('unbind ^`')
  71. end
  72.  
  73.  
  74. -- Define sets and vars used by this job file.
  75. function init_gear_sets()
  76. gear.default.obi_waist = "Aswang Sash"
  77. gear.default.obi_back = "Bookworm's Cape"
  78.  
  79. --------------------------------------
  80. -- Start defining the sets
  81. --------------------------------------
  82.  
  83. -- Precast Sets
  84.  
  85. -- Precast sets to enhance JAs
  86.  
  87. sets.precast.JA['Tabula Rasa'] = {legs="Pedagogy Pants"}
  88.  
  89.  
  90. -- Fast cast sets for spells
  91.  
  92. sets.precast.FC = {ammo="Impatiens", main={ name="Keraunos", augments={'Mag. Acc.+15 "Mag.Atk.Bns."+15','"Fast Cast"+4','Magic Damage +15',}},
  93. head="Nahtirah Hat",ear1="Loquacious Earring",
  94. body="Vanir Cotehardie",hands="Gendewitha Gages +1",ring1="Prolix Ring",
  95. back="Swith Cape",waist="Witful Belt",legs={ name="Artsieq Hose", augments={'MP+30','Mag. Acc.+20','MND+7',}},feet="Academic's Loafers"}
  96.  
  97. sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  98.  
  99. sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {neck="Sanctity Necklace"})
  100.  
  101. sets.precast.Cure = set_combine(sets.precast.FC, {ear1="Mendi.Earring", back="Pahtli Cape", main="Serenity"})
  102. sets.precast.CureWithLightWeather = sets.precast.Cure
  103. sets.precast.FC.Impact = set_combine(sets.precast.FC['Elemental Magic'], {head=empty,body="Twilight Cloak"})
  104.  
  105.  
  106. -- Midcast Sets
  107.  
  108. sets.midcast.FastRecast = sets.precast.FC
  109.  
  110. sets.midcast.Cure = {
  111. main={ name="Serenity", augments={'MP+50','Enha.mag. skill +10','"Cure" potency +5%','"Cure" spellcasting time -10%',}},
  112. sub="Niobid Strap",
  113. ammo="Impatiens",
  114. head="Arbatel Bonnet",
  115. body="Heka's Kalasiris",
  116. hands="Telchine Gloves",
  117. legs="Assid. Pants +1",
  118. feet={ name="Peda. Loafers", augments={'Enhances "Stormsurge" effect',}},
  119. neck="Colossus's Torque",
  120. waist="Witful Belt",
  121. left_ear="Mendi. Earring",
  122. left_ring="Prolix Ring",
  123. right_ring="Sangoma Ring",
  124. back="Pahtli Cape"}
  125.  
  126. sets.midcast.CureWithLightWeather = {
  127. main={ name="Serenity", augments={'MP+50','Enha.mag. skill +10','"Cure" potency +5%','"Cure" spellcasting time -10%',}},
  128. sub="Niobid Strap",
  129. ammo="Impatiens",
  130. head="Arbatel Bonnet",
  131. body="Heka's Kalasiris",
  132. hands="Telchine Gloves",
  133. legs="Acad. Pants +1",
  134. feet={ name="Peda. Loafers", augments={'Enhances "Stormsurge" effect',}},
  135. neck="Colossus's Torque",
  136. waist="Witful Belt",
  137. left_ear="Mendi. Earring",
  138. left_ring="Prolix Ring",
  139. right_ring="Sangoma Ring",
  140. back="Twilight Cape"}
  141.  
  142. sets.midcast.Curaga = sets.midcast.CureWithLightWeather
  143.  
  144.  
  145.  
  146. sets.midcast.Cursna = {
  147. neck="Malison Medallion",
  148. ring1="Haoma's Ring",--waist="Gishdubar sash",
  149. feet="Gendewitha Galoshes +1"}
  150.  
  151. sets.midcast['Enhancing Magic'] = {
  152. ammo="Savant's Treatise",
  153. head="Arbatel Bonnet",
  154. body="Anhur Robe",
  155. hands="Arbatel Bracers",
  156. legs="Acad. Pants +1",
  157. feet="Rubeus Boots",
  158. neck="Colossus's Torque",
  159. left_ear="Andoaa Earring",
  160. back="Merciful Cape"}
  161.  
  162. sets.midcast.Regen = set_combine(sets.midcast['Enhancing Magic'], {main="Bolelabunga",head="Arbatel Bonnet", back="Bookworm's cape"})
  163.  
  164. sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
  165.  
  166. sets.midcast.Storm = set_combine(sets.midcast['Enhancing Magic'], {feet="Pedagogy Loafers"})
  167.  
  168. sets.midcast['Refresh'] = set_combine(sets.midcast['Enhancing Magic'],{waist="Gishdubar sash"})
  169.  
  170.  
  171. -- Custom spell classes
  172. sets.midcast.MndEnfeebles = {
  173. main={ name="Keraunos", augments={'Mag. Acc.+15 "Mag.Atk.Bns."+15','"Fast Cast"+4','Magic Damage +15',}},
  174. sub="Mephitis Grip",
  175. head="Nahtirah Hat",
  176. body="Vanir Cotehardie",
  177. hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -3%','Magic dmg. taken -2%','Song spellcasting time -5%',}},
  178. legs={ name="Artsieq Hose", augments={'MP+30','Mag. Acc.+20','MND+7',}},
  179. feet="Rubeus Boots",
  180. neck="Sanctity Necklace",
  181. left_ear="Lifestorm Earring",
  182. right_ear="Psystorm Earring",
  183. right_ring="Sangoma Ring",
  184. back="Altruistic Cape"
  185. }
  186.  
  187. sets.midcast.IntEnfeebles = {
  188. main={ name="Keraunos", augments={'Mag. Acc.+15 "Mag.Atk.Bns."+15','"Fast Cast"+4','Magic Damage +15',}},
  189. sub="Mephitis Grip",
  190. head="Nahtirah Hat",
  191. body="Vanir Cotehardie",
  192. hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -3%','Magic dmg. taken -2%','Song spellcasting time -5%',}},
  193. legs={ name="Artsieq Hose", augments={'MP+30','Mag. Acc.+20','MND+7',}},
  194. feet="Rubeus Boots",
  195. neck="Sanctity Necklace",
  196. left_ear="Lifestorm Earring",
  197. right_ear="Psystorm Earring",
  198. right_ring="Sangoma Ring",
  199. back="Altruistic Cape"
  200. }
  201. --[[neck="Weike Torque",
  202. body="Cohort cloak",hands="Argute bracers +2",ring2="Globidonta Ring",
  203. back="Aurist's Cape +1",waist="Ovate rope",legs="Psycloth Lappas",feet="Academic's Loafers"]]
  204.  
  205. sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
  206.  
  207. sets.midcast['Dark Magic'] = set_combine(sets.midcast.MndEnfeebles, {sub="Niobid Strap",back="Bookworm's Cape"})
  208.  
  209. sets.midcast.Kaustra = {
  210. main={ name="Keraunos", augments={'Mag. Acc.+15 "Mag.Atk.Bns."+15','"Fast Cast"+4','Magic Damage +15',}},
  211. sub="Niobid Strap",
  212. ammo="Dosis Tathlum",
  213. head={ name="Helios Band", augments={'Mag. Acc.+16 "Mag.Atk.Bns."+16','Magic crit. hit rate +6','Magic burst mdg.+5%',}},
  214. body={ name="Witching Robe", augments={'MP+45','Mag. Acc.+14','"Mag.Atk.Bns."+14',}},
  215. hands="Amalric gages",
  216. legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+22 "Mag.Atk.Bns."+22','Enmity-1','Mag. Acc.+2','"Mag.Atk.Bns."+10',}},
  217. feet="Helios Boots",
  218. neck="Sanctity Necklace",
  219. left_ear="Barkaro. Earring",
  220. right_ear="Friomisi Earring",
  221. left_ring="Strendu Ring",
  222. waist=gear.ElementalObi,
  223. back=gear.ElementalCape,
  224. right_ring="Acumen Ring",
  225. }
  226.  
  227. sets.midcast.Kaustra.MB = set_combine(sets.midcast.Kaustra, {ring1="Locus ring",ring2="Mujin Band"})
  228.  
  229. sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {waist="Fucho-no-obi"})
  230.  
  231. sets.midcast.Aspir = sets.midcast.Drain
  232.  
  233. sets.midcast.Stun = sets.midcast.FastRecast
  234.  
  235. --sets.midcast.Stun.Resistant = set_combine(sets.midcast.Stun, {main="Marin Staff +1"})
  236.  
  237.  
  238. -- Elemental Magic sets are default for handling low-tier nukes.
  239. sets.midcast['Elemental Magic'] = {
  240. main={ name="Keraunos", augments={'Mag. Acc.+15 "Mag.Atk.Bns."+15','"Fast Cast"+4','Magic Damage +15',}},
  241. sub="Niobid Strap",
  242. ammo="Dosis Tathlum",
  243. head={ name="Helios Band", augments={'Mag. Acc.+16 "Mag.Atk.Bns."+16','Magic crit. hit rate +6','Magic burst mdg.+5%',}},
  244. body={ name="Witching Robe", augments={'MP+45','Mag. Acc.+14','"Mag.Atk.Bns."+14',}},
  245. hands="Amalric gages",
  246. legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+22 "Mag.Atk.Bns."+22','Enmity-1','Mag. Acc.+2','"Mag.Atk.Bns."+10',}},
  247. feet="Helios Boots",
  248. neck="Sanctity Necklace",
  249. left_ear="Barkaro. Earring",
  250. right_ear="Friomisi Earring",
  251. left_ring="Strendu Ring",
  252. waist=gear.ElementalObi,
  253. back=gear.ElementalCape,
  254. right_ring="Acumen Ring",
  255. }
  256.  
  257. sets.midcast['Elemental Magic'].MB = set_combine(sets.midcast['Elemental Magic'], {ring1="Locus ring",ring2="Mujin Band"})
  258.  
  259. -- Custom refinements for certain nuke tiers
  260. sets.midcast['Elemental Magic'].HighTierNuke = sets.midcast['Elemental Magic']
  261.  
  262. sets.midcast['Elemental Magic'].HighTierNuke.MB = sets.midcast['Elemental Magic'].MB
  263.  
  264. sets.midcast.Impact = set_combine(sets.midcast['Elemental Magic'], {head=empty,body="Twilight Cloak"})
  265.  
  266. sets.midcast.Impact.MB = set_combine(sets.midcast.Impact, {ring1="Locus ring",ring2="Mujin Band"})
  267.  
  268.  
  269. -- Sets to return to when not performing an action.
  270.  
  271. -- Resting sets
  272. --[[sets.resting = { main="Numen Staff",
  273. head="Orvail Corona",
  274. body="Chelona Blazer",
  275. hands="Serpentes Cuffs",
  276. legs={ name="Lengo Pants", augments={'INT+10','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Refresh"+1',}},
  277. feet="Chelona Boots",
  278. neck="Eidolon Pendant",
  279. waist="Austerity Belt",
  280. right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}}
  281. }]]
  282.  
  283.  
  284. -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  285.  
  286. sets.idle.Town = {
  287. main="Bolelabunga",
  288. sub={ name="Genbu's Shield", augments={'"Cure" potency +5%','"Cure" spellcasting time -6%','HP+22',}},
  289. ammo="Homiliary",
  290. head="Arbatel Bonnet",
  291. body="Witching Robe",
  292. hands="Serpentes Cuffs",
  293. legs="Assid. Pants +1",
  294. feet="Serpentes Sabots",
  295. neck="Sanctity Necklace",
  296. waist="Witful Belt",
  297. left_ear="Gwati Earring",
  298. right_ear="Loquac. Earring",
  299. left_ring="Prolix Ring",
  300. right_ring="Sangoma Ring",
  301. back="Mecisto. Mantle"}
  302.  
  303. sets.idle.Field = {
  304. main="Bolelabunga",
  305. sub={ name="Genbu's Shield", augments={'"Cure" potency +5%','"Cure" spellcasting time -6%','HP+22',}},
  306. ammo="Homiliary",
  307. head="Arbatel Bonnet",
  308. body="Witching Robe",
  309. hands="Serpentes Cuffs",
  310. legs="Assid. Pants +1",
  311. feet="Serpentes Sabots",
  312. neck="Sanctity Necklace",
  313. waist="Witful Belt",
  314. left_ear="Gwati Earring",
  315. right_ear="Loquac. Earring",
  316. left_ring="Prolix Ring",
  317. right_ring="Sangoma Ring",
  318. back="Mecisto. Mantle"}
  319.  
  320. sets.idle.Field.PDT = {main=gear.Staff.PDT,sub="Achaq Grip",ammo="Incantor Stone",
  321. head="Nahtirah Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  322. body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Paguroidea Ring",
  323. back="Umbra Cape",waist="Hierarch Belt",legs="Lengo pants",feet="Herald's Gaiters"}
  324.  
  325. sets.idle.Field.Sandstorm = set_combine(sets.idle.Field, {feet="Desert Boots"})
  326.  
  327. sets.idle.Town.Sandstorm = set_combine(sets.idle.Town, {feet="Desert Boots"})
  328.  
  329. sets.idle.Weak = {main="Bolelabunga",sub="Genbu's Shield",ammo="Incantor Stone",
  330. head="Nahtirah Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  331. body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Sheltered Ring",ring2="Meridian Ring",
  332. back="Umbra Cape",waist="Hierarch Belt",legs="Lengo pants",feet="Herald's Gaiters"}
  333.  
  334. -- Defense sets
  335.  
  336. sets.defense.PDT = {main=gear.Staff.PDT,sub="Achaq Grip",ammo="Incantor Stone",
  337. head="Nahtirah Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  338. body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2=gear.DarkRing.physical,
  339. back="Umbra Cape",waist="Hierarch Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
  340.  
  341. sets.defense.MDT = {main=gear.Staff.PDT,sub="Achaq Grip",ammo="Incantor Stone",
  342. head="Nahtirah Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  343. body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Shadow Ring",
  344. back="Tuilha Cape",waist="Hierarch Belt",legs="Bokwus Slops",feet="Hagondes Sabots"}
  345.  
  346. sets.Kiting = {ring2="Shneddick ring"}
  347.  
  348. sets.latent_refresh = {waist="Fucho-no-obi"}
  349.  
  350.  
  351. -- Engaged sets
  352.  
  353. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  354. -- sets if more refined versions aren't defined.
  355. -- If you create a set with both offense and defense modes, the offense mode should be first.
  356. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  357.  
  358. -- Normal melee group
  359. sets.engaged = {
  360. head="Zelus Tiara",
  361. body="Vanir Cotehardie",hands="Bokwus Gloves",ring1="Rajas Ring",
  362. waist="Goading Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
  363.  
  364.  
  365.  
  366. -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  367. sets.buff['Ebullience'] = {head="Arbatel bonnet"}
  368. sets.buff['Rapture'] = {head="Arbatel bonnet"}
  369. sets.buff['Perpetuance'] = {hands="Arbatel bracers"}
  370. sets.buff['Immanence'] = {hands="Arbatel bracers"}
  371. sets.buff['Penury'] = {legs="Arbatel Pants"}
  372. sets.buff['Parsimony'] = {legs="Arbatel Pants"}
  373. sets.buff['Celerity'] = {feet="Pedagogy Loafers"}
  374. sets.buff['Alacrity'] = {feet="Pedagogy Loafers"}
  375.  
  376. sets.buff['Klimaform'] = {feet="Arbatel Loafers"}
  377.  
  378. sets.buff.FullSublimation = {--[[head="Scholar's Mortarboard +1",]]ear1="Savant's Earring",body="Pedagogy Gown"}
  379. sets.buff.PDTSublimation = {--[[head="Scholar's Mortarboard +1",]]ear1="Savant's Earring",body="Pedagogy Gown"}
  380.  
  381. --sets.buff['Sandstorm'] = {feet="Desert Boots"}
  382.  
  383. end
  384.  
  385. -------------------------------------------------------------------------------------------------------------------
  386. -- Job-specific hooks for standard casting events.
  387. -------------------------------------------------------------------------------------------------------------------
  388.  
  389. -- Run after the general midcast() is done.
  390. function job_post_midcast(spell, action, spellMap, eventArgs)
  391. if spell.action_type == 'Magic' then
  392. apply_grimoire_bonuses(spell, action, spellMap, eventArgs)
  393. end
  394. end
  395.  
  396. -------------------------------------------------------------------------------------------------------------------
  397. -- Job-specific hooks for non-casting events.
  398. -------------------------------------------------------------------------------------------------------------------
  399.  
  400. -- Called when a player gains or loses a buff.
  401. -- buff == buff gained or lost
  402. -- gain == true if the buff was gained, false if it was lost.
  403. function job_buff_change(buff, gain)
  404. if buff == "Sublimation: Activated" then
  405. handle_equipping_gear(player.status)
  406. end
  407. end
  408.  
  409. -- Handle notifications of general user state change.
  410. function job_state_change(stateField, newValue, oldValue)
  411. if stateField == 'Offense Mode' then
  412. if newValue == 'Normal' then
  413. disable('main','sub','range')
  414. else
  415. enable('main','sub','range')
  416. end
  417. end
  418. end
  419.  
  420. -------------------------------------------------------------------------------------------------------------------
  421. -- User code that supplements standard library decisions.
  422. -------------------------------------------------------------------------------------------------------------------
  423.  
  424. -- Custom spell mapping.
  425. function job_get_spell_map(spell, default_spell_map)
  426. if spell.action_type == 'Magic' then
  427. if default_spell_map == 'Cure' or default_spell_map == 'Curaga' then
  428. if world.weather_element == 'Light' then
  429. return 'CureWithLightWeather'
  430. end
  431. elseif spell.skill == 'Enfeebling Magic' then
  432. if spell.type == 'WhiteMagic' then
  433. return 'MndEnfeebles'
  434. else
  435. return 'IntEnfeebles'
  436. end
  437. elseif spell.skill == 'Elemental Magic' then
  438. if info.low_nukes:contains(spell.english) then
  439. return 'LowTierNuke'
  440. elseif info.mid_nukes:contains(spell.english) then
  441. return 'MidTierNuke'
  442. elseif info.high_nukes:contains(spell.english) then
  443. return 'HighTierNuke'
  444. end
  445. end
  446. end
  447. end
  448.  
  449.  
  450. function customize_idle_set(idleSet)
  451. if state.Buff['Sublimation: Activated'] then
  452. if state.IdleMode.value == 'Normal' then
  453. idleSet = set_combine(idleSet, sets.buff.FullSublimation)
  454. elseif state.IdleMode.value == 'PDT' then
  455. idleSet = set_combine(idleSet, sets.buff.PDTSublimation)
  456. end
  457. end
  458.  
  459. if player.mpp < 51 then
  460. idleSet = set_combine(idleSet, sets.latent_refresh)
  461. end
  462.  
  463.  
  464. return idleSet
  465. end
  466.  
  467. -- Called by the 'update' self-command.
  468. function job_update(cmdParams, eventArgs)
  469. if cmdParams[1] == 'user' and not (buffactive['light arts'] or buffactive['dark arts'] or
  470. buffactive['addendum: white'] or buffactive['addendum: black']) then
  471. if state.IdleMode.value == 'Stun' then
  472. send_command('@input /ja "Dark Arts" <me>')
  473. else
  474. send_command('@input /ja "Light Arts" <me>')
  475. end
  476. end
  477.  
  478. update_active_strategems()
  479. update_sublimation()
  480. end
  481.  
  482. -- Function to display the current relevant user state when doing an update.
  483. -- Return true if display was handled, and you don't want the default info shown.
  484. function display_current_job_state(eventArgs)
  485. display_current_caster_state()
  486. eventArgs.handled = true
  487. end
  488.  
  489. -------------------------------------------------------------------------------------------------------------------
  490. -- User code that supplements self-commands.
  491. -------------------------------------------------------------------------------------------------------------------
  492.  
  493. -- Called for direct player commands.
  494. function job_self_command(cmdParams, eventArgs)
  495. if cmdParams[1]:lower() == 'scholar' then
  496. handle_strategems(cmdParams)
  497. eventArgs.handled = true
  498. end
  499. end
  500.  
  501. -------------------------------------------------------------------------------------------------------------------
  502. -- Utility functions specific to this job.
  503. -------------------------------------------------------------------------------------------------------------------
  504.  
  505. -- Reset the state vars tracking strategems.
  506. function update_active_strategems()
  507. state.Buff['Ebullience'] = buffactive['Ebullience'] or false
  508. state.Buff['Rapture'] = buffactive['Rapture'] or false
  509. state.Buff['Perpetuance'] = buffactive['Perpetuance'] or false
  510. state.Buff['Immanence'] = buffactive['Immanence'] or false
  511. state.Buff['Penury'] = buffactive['Penury'] or false
  512. state.Buff['Parsimony'] = buffactive['Parsimony'] or false
  513. state.Buff['Celerity'] = buffactive['Celerity'] or false
  514. state.Buff['Alacrity'] = buffactive['Alacrity'] or false
  515.  
  516. state.Buff['Klimaform'] = buffactive['Klimaform'] or false
  517.  
  518. end
  519.  
  520. function update_sublimation()
  521. state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
  522. end
  523.  
  524. -- Equip sets appropriate to the active buffs, relative to the spell being cast.
  525. function apply_grimoire_bonuses(spell, action, spellMap)
  526. if state.Buff.Perpetuance and spell.type =='WhiteMagic' and spell.skill == 'Enhancing Magic' then
  527. equip(sets.buff['Perpetuance'])
  528. end
  529. if state.Buff.Rapture and (spellMap == 'Cure' or spellMap == 'Curaga') then
  530. equip(sets.buff['Rapture'])
  531. end
  532. if spell.skill == 'Elemental Magic' and spellMap ~= 'ElementalEnfeeble' then
  533. if state.Buff.Ebullience and spell.english ~= 'Impact' then
  534. equip(sets.buff['Ebullience'])
  535. end
  536. if state.Buff.Immanence then
  537. equip(sets.buff['Immanence'])
  538. end
  539. if state.Buff.Klimaform and spell.element == world.weather_element then
  540. equip(sets.buff['Klimaform'])
  541. end
  542. end
  543.  
  544. if state.Buff.Penury then equip(sets.buff['Penury']) end
  545. if state.Buff.Parsimony then equip(sets.buff['Parsimony']) end
  546. if state.Buff.Celerity then equip(sets.buff['Celerity']) end
  547. if state.Buff.Alacrity then equip(sets.buff['Alacrity']) end
  548. end
  549.  
  550.  
  551. -- General handling of strategems in an Arts-agnostic way.
  552. -- Format: gs c scholar <strategem>
  553. function handle_strategems(cmdParams)
  554. -- cmdParams[1] == 'scholar'
  555. -- cmdParams[2] == strategem to use
  556.  
  557. if not cmdParams[2] then
  558. add_to_chat(123,'Error: No strategem command given.')
  559. return
  560. end
  561. local strategem = cmdParams[2]:lower()
  562.  
  563. if strategem == 'light' then
  564. if buffactive['light arts'] then
  565. send_command('input /ja "Addendum: White" <me>')
  566. elseif buffactive['addendum: white'] then
  567. add_to_chat(122,'Error: Addendum: White is already active.')
  568. else
  569. send_command('input /ja "Light Arts" <me>')
  570. end
  571. elseif strategem == 'dark' then
  572. if buffactive['dark arts'] then
  573. send_command('input /ja "Addendum: Black" <me>')
  574. elseif buffactive['addendum: black'] then
  575. add_to_chat(122,'Error: Addendum: Black is already active.')
  576. else
  577. send_command('input /ja "Dark Arts" <me>')
  578. end
  579. elseif buffactive['light arts'] or buffactive['addendum: white'] then
  580. if strategem == 'cost' then
  581. send_command('input /ja Penury <me>')
  582. elseif strategem == 'speed' then
  583. send_command('input /ja Celerity <me>')
  584. elseif strategem == 'aoe' then
  585. send_command('input /ja Accession <me>')
  586. elseif strategem == 'power' then
  587. send_command('input /ja Rapture <me>')
  588. elseif strategem == 'duration' then
  589. send_command('input /ja Perpetuance <me>')
  590. elseif strategem == 'accuracy' then
  591. send_command('input /ja Altruism <me>')
  592. elseif strategem == 'enmity' then
  593. send_command('input /ja Tranquility <me>')
  594. elseif strategem == 'skillchain' then
  595. add_to_chat(122,'Error: Light Arts does not have a skillchain strategem.')
  596. elseif strategem == 'addendum' then
  597. send_command('input /ja "Addendum: White" <me>')
  598. else
  599. add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  600. end
  601. elseif buffactive['dark arts'] or buffactive['addendum: black'] then
  602. if strategem == 'cost' then
  603. send_command('input /ja Parsimony <me>')
  604. elseif strategem == 'speed' then
  605. send_command('input /ja Alacrity <me>')
  606. elseif strategem == 'aoe' then
  607. send_command('input /ja Manifestation <me>')
  608. elseif strategem == 'power' then
  609. send_command('input /ja Ebullience <me>')
  610. elseif strategem == 'duration' then
  611. add_to_chat(122,'Error: Dark Arts does not have a duration strategem.')
  612. elseif strategem == 'accuracy' then
  613. send_command('input /ja Focalization <me>')
  614. elseif strategem == 'enmity' then
  615. send_command('input /ja Equanimity <me>')
  616. elseif strategem == 'skillchain' then
  617. send_command('input /ja Immanence <me>')
  618. elseif strategem == 'addendum' then
  619. send_command('input /ja "Addendum: Black" <me>')
  620. else
  621. add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  622. end
  623. else
  624. add_to_chat(123,'No arts has been activated yet.')
  625. end
  626. end
  627.  
  628.  
  629. -- Gets the current number of available strategems based on the recast remaining
  630. -- and the level of the sch.
  631. function get_current_strategem_count()
  632. -- returns recast in seconds.
  633. local allRecasts = windower.ffxi.get_ability_recasts()
  634. local stratsRecast = allRecasts[231]
  635.  
  636. local maxStrategems = (player.main_job_level + 10) / 20
  637.  
  638. local fullRechargeTime = 4*60
  639.  
  640. local currentCharges = math.floor(maxStrategems - maxStrategems * stratsRecast / fullRechargeTime)
  641.  
  642. return currentCharges
  643. end
  644.  
  645.  
  646. -- Select default macro book on initial load or subjob change.
  647. function select_default_macro_book()
  648. set_macro_page(1, 12)
  649. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement