Advertisement
Guest User

Untitled

a guest
Aug 31st, 2016
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.44 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Initialization function that defines sets and variables to be used.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. -- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
  6.  
  7. --[[
  8. Custom commands:
  9.  
  10. Shorthand versions for each strategem type that uses the version appropriate for
  11. the current Arts.
  12.  
  13. Light Arts Dark Arts
  14.  
  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. -- Load and initialize the include file.
  31. include('Mote-Include.lua')
  32. end
  33.  
  34. -- Setup vars that are user-independent.
  35. function job_setup()
  36. info.addendumNukes = S{"Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",
  37. "Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
  38.  
  39. state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
  40. update_active_strategems()
  41. end
  42.  
  43.  
  44. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  45. function user_setup()
  46. send_command('Bind ^i input /ja Immanence <me>')
  47. send_command('Bind ^g input /recast Stratagems <me>')
  48. send_command('Bind ^d input /ja Ebullience <me>')
  49. send_command('Bind ^1 input /ma haste <me>')
  50. send_command('Bind ^2 input /ma Aquaveil <me>')
  51. send_command('Bind ^3 input /ma "Regen V" <me>')
  52. send_command('Bind ^c input /ma "Cure IV" <me>')
  53. send_command('Bind ^m input /ma Manifestation <me>')
  54. send_command('Bind ^s input /ma "Sleep II" <t>')
  55. send_command('Bind ^4 input /ma "Protect V" <me>')
  56. send_command('Bind ^5 input /ma "Shell V" <me>')
  57. send_command('bind ^q gs c cycle CastingMode')
  58. send_command('Bind ^/ input /ma "Paralyze" <t>')
  59. send_command('Bind ^. input /ma "Silence" <t>')
  60. send_command('Bind ^, input /ma "Slow" <t>')
  61. send_command('Bind ^6 input /ma "Phalanx" <me>')
  62. send_command('Bind ^7 input /ma "Klimaform" <me>')
  63. send_command('Bind ^8 input /ma "Thunderstorm II" <me>')
  64. send_command('Bind ^l input /ma "Frazzle" <t>')
  65.  
  66. -- Options: Override default values
  67. options.CastingModes = {'Normal', 'MagicBurst'}
  68. options.OffenseModes = {'None', 'Normal'}
  69. options.DefenseModes = {'Normal'}
  70. options.WeaponskillModes = {'Normal'}
  71. options.IdleModes = {'Normal', 'PDT', 'Stun'}
  72. options.RestingModes = {'Normal'}
  73. options.PhysicalDefenseModes = {'PDT'}
  74. options.MagicalDefenseModes = {'MDT'}
  75.  
  76.  
  77. state.OffenseMode = 'None'
  78. state.Defense.PhysicalMode = 'PDT'
  79.  
  80. info.low_nukes = S{"Stone", "Water", "Aero", "Fire", "Blizzard", "Thunder","Stone II",
  81. "Water II", "Aero II", "Fire II", "Blizzard II", "Thunder II","Sleep II"}
  82. info.mid_nukes = S{"Stone III", "Water III", "Aero III", "Fire III", "Blizzard III", "Thunder III",
  83. "Stone IV", "Water IV", "Aero IV", "Fire IV","Blizzard IV", "Thunder IV",
  84. "Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V",}
  85.  
  86. gear.macc_hagondes = {name="Hagondes Cuffs", augments={'Phys. dmg. taken -3%','Mag. Acc.+29'}}
  87. gear.RegenBack = {name="Bookworm's Cape", augments={'Int +2', 'Mnd +1', 'Helix eff. Duration +12', '"Regen" potency +10'}}
  88.  
  89. send_command('bind ^` input /ma Stun <t>')
  90.  
  91. select_default_macro_book()
  92. end
  93.  
  94. function job_file_unload()
  95. send_command('unbind ^`')
  96. end
  97.  
  98.  
  99. -- Define sets and vars used by this job file.
  100. function init_gear_sets()
  101. gear.RegenBack = {name="Bookworm's Cape", augments={'Int +2', 'Mnd +1', 'Helix eff. Duration +12', '"Regen" potency +10'}}
  102. end
  103.  
  104. -- Define sets and vars used by this job file.
  105. function init_gear_sets()
  106. --------------------------------------
  107. -- Start defining the sets
  108. --------------------------------------
  109.  
  110. -- Obi --
  111. sets['Lightning'] = {waist="Hachirin-no-Obi"}
  112. sets['Ice'] = {waist="Hachirin-no-Obi"}
  113. sets['Water'] = {waist="Hachirin-no-Obi"}
  114. sets['Fire'] = {waist="Hachirin-no-Obi"}
  115. sets['Earth'] = {waist="Hachirin-no-Obi"}
  116. sets['Wind'] = {waist="Hachirin-no-Obi"}
  117. sets['Light'] = {waist="Hachirin-no-Obi",back="Twilight Cape"}
  118. sets['Dark'] = {waist="Hachirin-no-Obi"}
  119.  
  120. gear.default.obi_waist = "Hachirin-no-Obi"
  121. gear.default.obi_back = "Bookworm's Cape"
  122.  
  123. -- Precast Sets
  124.  
  125. -- Precast sets to enhance JAs
  126.  
  127. sets.precast.JA['Tabula Rasa'] = {legs="Pedagogy Pants"}
  128.  
  129. -- Weaponskills --
  130.  
  131. sets.precast.WS['Cataclysm'] = {main="Akademos",sub="Willpower Grip",ammo="Ghastly Tathlum +1 +1",
  132. head="Pixie hairpin +1",neck="Saevus Pendant +1",left_ear="Barkaro. Earring",right_ear="Friomisi Earring",
  133. body="Amalric Doublet +1",hands=gear.NukingHands,left_ring="Archon Ring",right_ring="Shiva Ring +1",
  134. back="Twilight Cape",waist="Hachirin-no-Obi",legs="Hagondes Pants +1",feet="Amalric Nails +1",}
  135.  
  136. sets.precast.WS['Omniscience'] = {main="Akademos",sub="Willpower Grip",ammo="Hydrocera",
  137. head="Pixie hairpin +1",neck="Saevus Pendant +1",left_ear="Barkaro. Earring",right_ear="Friomisi Earring",
  138. body="Amalric Doublet +1",hands=gear.NukingHands,left_ring="Archon Ring",right_ring="Shiva Ring +1",
  139. back=gear.RegenCape,waist="Refoccilation Stone",legs="Hagondes Pants +1",feet="Amalric Nails +1",}
  140.  
  141. sets.precast.WS['Myrkr'] = {main="Akademos",sub="Willpower Grip",ammo="Psilomene",
  142. head="Kaabnax Hat",neck="Dualism Collar +1",left_ear="Etiolation Earring",right_ear="Influx Earring",
  143. body="Weather. Robe +1",hands="Otomi Gloves",left_ring="Mephitas's Ring +1",right_ring="Mephitas's Ring",
  144. back="Pahtli Cape",waist="Shinjutsu-no-obi +1",legs="Amalric Slops",feet="Llwyd's Clogs"}
  145.  
  146. sets.precast.WS['Shattersoul'] ={main="Akademos",sub="Willpower Grip",ammo="Hasty Pinion +1",
  147. head="Gende. Caubeen +1",neck="Fotia Gorget",left_ear="Genmei Earring",right_ear="Impregnable Earring",
  148. body="Onca Suit",hands=empty,left_ring="Rajas Ring",right_ring="Patricius Ring",
  149. back="Umbra Cape",waist="Fotia Belt",legs=empty,feet=empty}
  150.  
  151. sets.precast.WS['Shell Crusher'] ={main="Akademos",sub="Willpower Grip",ammo="Hasty Pinion +1",
  152. head="Gende. Caubeen +1",neck="Fotia Gorget",left_ear="Genmei Earring",right_ear="Impregnable Earring",
  153. body="Onca Suit",hands=empty,left_ring="Rajas Ring",right_ring="Patricius Ring",
  154. back="Umbra Cape",waist="Fotia Belt",legs=empty,feet=empty}
  155.  
  156. sets.precast.WS['Retribution'] ={main="Akademos",sub="Willpower Grip",ammo="Hasty Pinion +1",
  157. head="Gende. Caubeen +1",neck="Fotia Gorget",left_ear="Genmei Earring",right_ear="Impregnable Earring",
  158. body="Onca Suit",hands=empty,left_ring="Rajas Ring",right_ring="Patricius Ring",
  159. back="Umbra Cape",waist="Fotia Belt",legs=empty,feet=empty}
  160.  
  161. sets.precast.WS['Heavy Swing'] ={main="Akademos",sub="Willpower Grip",ammo="Hasty Pinion +1",
  162. head="Gende. Caubeen +1",neck="Fotia Gorget",left_ear="Genmei Earring",right_ear="Impregnable Earring",
  163. body="Onca Suit",hands=empty,left_ring="Rajas Ring",right_ring="Patricius Ring",
  164. back="Umbra Cape",waist="Fotia Belt",legs=empty,feet=empty}
  165.  
  166. sets.precast.WS['Spirit Taker'] = {main="Akademos",sub="Willpower Grip",ammo="Ghastly Tathlum +1 +1",
  167. head="Welkin Crown",neck="Fotia Gorget",left_ear="Barkaro. Earring",right_ear="Friomisi Earring",
  168. body="Amalric Doublet +1",hands=gear.NukingHands,left_ring="Shiva Ring +1",right_ring="Shiva Ring +1",
  169. back=gear.HelixCape,waist="Fotia Belt",legs="Hagondes Pants +1",feet="Amalric Nails +1",}
  170.  
  171.  
  172. -- Fast cast sets for spells
  173.  
  174. sets.precast.FC = {ammo="Incantor Stone",
  175. head="Nahtirah Hat",neck="Orunmila's Torque", ear1="Enchanter Earring +1",ear2="Loquacious Earring",
  176. body="Anhur Robe",hands="Gendewitha Gages",ring1="Prolix Ring",ring2="Weatherspoon Ring",
  177. back="Swith Cape",waist="Witful Belt",legs="Psycloth Lappas",feet="Pedagogy loafers +1"}
  178.  
  179. sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  180.  
  181. sets.precast.FC.Cure = set_combine(sets.precast.FC, {body="Heka's Kalasiris",back="Pahtli Cape"})
  182.  
  183. sets.precast.FC.Curaga = sets.precast.FC.Cure
  184.  
  185. sets.precast.FC.Impact = set_combine(sets.precast.FC['Elemental Magic'], {head=empty,body="Twilight Cloak"})
  186.  
  187.  
  188. -- Midcast Sets
  189.  
  190. sets.midcast.FastRecast = {ammo="Incantor Stone",
  191. head="Nahtirah Hat",ear2="Loquacious Earring",
  192. body="Anhur Robe",hands="Gendewitha Gages +1",ring1="Prolix Ring",ring2="Weatherspoon ring",
  193. back="Swith Cape",waist="Goading Belt",legs="psycloth Lappas",feet="Academic's Loafers +1"}
  194.  
  195. sets.midcast.Cure = {ammo="Incantor Stone",
  196. head="Gendewitha Caubeen +1",neck="Colossus's Torque",ear1="Mendi. Earring",ear2="Loquacious Earring",
  197. body="Gendewitha bliaut +1",hands="Telchine Gloves",ring1="Kunaji Ring",ring2="Sirona's Ring",
  198. back="Tempered Cape",waist="Gishdubar Sash",legs="Telchine Braconi",feet="Telchine Pigaches"}
  199.  
  200. sets.midcast.CureWithLightWeather = {main="Chatoyant Staff",sub="Achaq Grip",ammo="Incantor Stone",
  201. head="Gendewitha Caubeen",neck="Colossus's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
  202. body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Sirona's Ring",
  203. back="Twilight Cape",waist="Korin Obi",legs="Assiduity Pants",feet="Academic's Loafers +1"}
  204.  
  205. sets.midcast.Curaga = sets.midcast.Cure
  206.  
  207. sets.midcast.Regen = {main="",sub="Genmei Shield",ammo="Ombre Tathlum +1",
  208. head="Arbatel Bonnet +1",neck="Orunmila's Torque",left_ear="Gifted Earring",right_ear="Calamitous Earring",
  209. body="Telchine Chasuble",hands="Arbatel Bracers +1",left_ring="Weather. Ring",right_ring="Prolix Ring",
  210. back="Bookworm's Cape", augments={'Int +2', 'Mnd +1', 'Helix eff. Dur. +12', '"Regen" potency +10'},waist="Witful Belt",legs=gear.RegenLegs,feet=gear.RegenFeet}
  211.  
  212. sets.midcast.Refresh = {Waist="Gishdubar Sash"}
  213.  
  214. sets.midcast.Cursna = {
  215. neck="Malison Medallion",
  216. hands="Hieros Mittens",ring1="Ephedra Ring",
  217. feet="Gendewitha Galoshes"}
  218.  
  219. sets.midcast['Enhancing Magic'] = {ammo="Savant's Treatise",
  220. head="Befouled Crown",neck="Enhancing Torque",ear1="Andoaa Earring",
  221. body="Telchine Chas.",hands="Ayao's Gages",
  222. waist="Cascade Belt",legs="Telchine Braconi",feet="Telchine Pigaches",back="Perimede Cape"}
  223.  
  224. sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
  225.  
  226. sets.midcast.Storm = set_combine(sets.midcast['Enhancing Magic'], {feet="Pedagogy Loafers +1"})
  227.  
  228. sets.midcast.Embrava = set_combine(sets.midcast['Enhancing Magic'])
  229.  
  230. sets.midcast.Protect = {ring1="Sheltered Ring"}
  231. sets.midcast.Protectra = sets.midcast.Protect
  232.  
  233. sets.midcast.Shell = {ring1="Sheltered Ring"}
  234. sets.midcast.Shellra = sets.midcast.Shell
  235. -- Custom spell classes
  236. sets.midcast.MndEnfeebles = {main="Lehbrailg +2",sub="",ammo="Savant Treatise",
  237. head="Befouled Crown",neck="Imbodla Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  238. body="Vanya Robe",hands="Yaoyotl Gloves",ring1="Aquasoul Ring",ring2="Sangoma Ring",
  239. back="Refraction Cape",waist="Rumination Sash",legs="Psycloth Lappas",feet="Medium's Sabots"}
  240.  
  241. sets.midcast.IntEnfeebles = {main="Lehbrailg +2",sub="",ammo="Savant's Treatise",
  242. head="Befouled Crown",neck="Imbodla Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  243. body="Vanya Robe",hands="Yaoyotl Gloves",ring1="Shiva Ring +1",ring2="Sangoma Ring",
  244. back="Refraction Cape",waist="Rumination Sash",legs="Psycloth Lappas",feet="Medium's Sabots"}
  245.  
  246. sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
  247.  
  248. sets.midcast['Dark Magic'] = {main="Lehbrailg +2",sub="",ammo="Incantor Stone",
  249. head="Pixie hairpin +1",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  250. body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Sangoma Ring",
  251. back="Refraction Cape",waist="Fucho-no-obi",legs="Bokwus Slops",feet="Medium's Sabots"}
  252.  
  253. sets.midcast.Kaustra = {main="Lehbrailg +2",sub="Willpower Grip",ammo="Witchstone",
  254. head="Pixie Hairpin +1",neck="Saevus pendant +1",ear1="Barkaro. Earring",ear2="Friomisi Earring",
  255. body="Merlinic Jubbah",hands="Chironic Gloves",ring1="archon ring",ring2="Strendu Ring",
  256. back="Bookworm's Cape",waist="Cognition Belt",legs="Amalric slops",feet="Amalric Nails"}
  257.  
  258. sets.midcast.Drain = {ammo="Incantor Stone",
  259. head="Pixie Hairpin +1",neck="Incantor's Torque",ear1="Friomisi Earring",ear2="Barkaro. Earring",
  260. body="Merlinic Jubbah",hands="Chironic Gloves",ring1="Evanescence Ring",ring2="Sangoma Ring",
  261. back="Seshaw Cape",waist="Fucho-no-obi",legs="Merlinic Shalwar", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Magic burst mdg.+9%','Mag. Acc.+13','"Mag.Atk.Bns."+15',},feet="Merlinic Crackows", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','"Drain" and "Aspir" potency +10','INT+13','Mag. Acc.+7','"Mag.Atk.Bns."+4',}}
  262.  
  263. sets.midcast.Aspir = sets.midcast.Drain
  264.  
  265. sets.midcast.Stun = {main="Lehbrailg +2",sub="",ammo="Incantor Stone",
  266. head="Kaabnax Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  267. body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",ring2="archon ring",
  268. back="Refraction Cape",waist="Witful Belt",legs="Pedagogy Pants",feet="Academic's Loafers +1"}
  269.  
  270.  
  271. -- Elemental Magic sets are default for handling low-tier nukes.
  272. sets.midcast['Elemental Magic'] = {ammo="Ghastly Tathlum +1",
  273. head="Merlinic hood",neck="Sanctity Necklace",ear1="Friomisi earring",ear2="Barkaro. Earring",
  274. body="Seidr Cotehardie",hands="Chironic Gloves",ring1="Shiva Ring +1",ring2="Shiva Ring +1",
  275. back="Bookworm's Cape", augments={'Int +2', 'Mnd +4','Helix eff. Duration +19'}, waist="Refoccilation Stone",legs="Merlinic Shalwar",feet="Amalric Nails"}
  276.  
  277. sets.midcast['Elemental Magic'].MagicBurst = {ammo="Ghastly Tathlum +1",
  278. head="Merlinic hood",neck="Mizu. Kubikazari",ear1="Friomisi earring",ear2="Barkaro. Earring",
  279. body="Merlinic Jubbah",hands="Amalric Gages",ring1="Mujin Band",ring2="Locus Ring",
  280. back="Lugh's Cape",waist="refoccilation stone",legs="Merlinic Shalwar", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Magic burst mdg.+9%','Mag. Acc.+13','"Mag.Atk.Bns."+15',},feet="Merlinic Crackows", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','Magic burst mdg.+10%',}}
  281.  
  282. sets.midcast['Elemental Magic'].mid_nukes = {main="Lehbrailg +2",sub="Willpower Grip",ammo="Ghastly Tathlum +1",
  283. head="Merlinic hood",neck="Sanctity Necklace",ear1="Friomisi earring",ear2="Barkaro. Earring",
  284. body="Seidr Cotehardie",hands="Chironic Gloves",ring1="Shiva Ring +1",ring2="shiva Ring +1",
  285. back="Bookworm's Cape", augments={'Int +2', 'Mnd +4','Helix eff. Dur. +19'},waist="refoccilation stone",legs="Merlinic Shalwar",feet="Amalric Nails"}
  286.  
  287. -- Custom refinements for certain nuke tiers
  288. sets.midcast.Impact = {main="Lehbrailg +2",sub="",ammo="Dosis Tathlum",
  289. head=empty,neck="Sanctity Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  290. body="Twilight Cloak",hands=gear.macc_hagondes,ring1="Shiva Ring +1",ring2="Sangoma Ring",
  291. back="Toro Cape",waist="Demonry Sash",legs="Hagondes Pants",feet="Bokwus Boots"}
  292.  
  293.  
  294. -- Sets to return to when not performing an action.
  295.  
  296. -- Resting sets
  297. sets.resting = {main="boonwell Staff",sub="Mephitis Grip",
  298. head="Nefer Khat +1",neck="Wiglen Gorget",
  299. body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  300. waist="Austerity Belt",legs="Assiduity Pants",feet="Serpentes Sabots"}
  301.  
  302.  
  303. -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  304.  
  305. sets.idle.Town = {main="Bolelabunga",sub="Genbu's Shield",ammo="Homiliary",
  306. head="Savant's Bonnet +2",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  307. body="Savant's Gown +2",hands="Savant's Bracers +2",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  308. back="Umbra Cape",waist="Hierarch Belt",legs="Savant's Pants +2",feet="Herald's Gaiters"}
  309.  
  310. sets.idle.Field = {main="Bolelabunga",sub="Genbu's Shield",ammo="Homiliary",
  311. head="Gendewitha Caubeen +1",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  312. body="Gendewitha Bliaut +1",hands="Gendewitha Gages +1",ring1="Defending ring",ring2="Gelatinous Ring +1",
  313. back="Mecisto. Mantle",waist="Hierarch Belt",legs="Assiduity pants +1",feet="Gendewitha galoshes +1"}
  314.  
  315. sets.idle.Field.PDT = {ammo="Incantor Stone",
  316. head="Gendewitha Caubeen +1",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  317. body="Gendewitha Bliaut +1",hands="Gendewitha Gages +1",ring1="Defending Ring",ring2="Gelatinous Ring +1",
  318. back="Cheviot Cape",waist="Hierarch Belt",legs="Artsieq Hose",feet="Gendewitha Galoshes +1"}
  319.  
  320. sets.idle.Field.Stun = {main="Apamajas II",sub="",ammo="Incantor Stone",
  321. head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  322. body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",ring2="Sangoma Ring",
  323. back="Swith Cape +1",waist="Goading Belt",legs="Bokwus Slops",feet="Academic's Loafers"}
  324.  
  325. sets.idle.Weak = {main="Bolelabunga",sub="Genbu's Shield",ammo="Incantor Stone",
  326. head="Nahtirah Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  327. body="Hagondes Coat +1",hands="Yaoyotl Gloves",ring1="Sheltered Ring",ring2="Meridian Ring",
  328. back="Umbra Cape",waist="Hierarch Belt",legs="Assiduity Pants",feet="Herald's Gaiters"}
  329.  
  330. -- Defense sets
  331.  
  332. sets.defense.PDT = {main=gear.Staff.PDT,sub="",ammo="Incantor Stone",
  333. head="Gendewitha caubeen +1",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  334. body="Gendewitha bliaut +1",hands="Gendewitha Gages +1",ring1="Defending Ring",ring2=gear.DarkRing.physical,
  335. back="Cheviot Cape",waist="Hierarch Belt",legs="Artsieq Hose",feet="Gendewitha Galoshes +1"}
  336.  
  337. sets.defense.MDT = {main=gear.Staff.PDT,sub="Achaq Grip",ammo="Incantor Stone",
  338. head="Nahtirah Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  339. body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Shadow Ring",
  340. back="Tuilha Cape",waist="Hierarch Belt",legs="Bokwus Slops",feet="Hagondes Sabots"}
  341.  
  342. sets.Kiting = {feet="Herald's Gaiters"}
  343.  
  344. sets.latent_refresh = {waist="Fucho-no-obi"}
  345.  
  346. -- Engaged sets
  347.  
  348. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  349. -- sets if more refined versions aren't defined.
  350. -- If you create a set with both offense and defense modes, the offense mode should be first.
  351. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  352.  
  353. -- Normal melee group
  354. sets.engaged = {
  355. head="Gendewitha caubeen +1",
  356. body="Gendewitha Bliaut +1",hands="Gendewitha Gages +1",ring1="Rajas Ring",
  357. waist="Cetl Belt",legs="Hagondes Pants",feet="Gendewitha Galoshes +1",back=""}
  358.  
  359.  
  360.  
  361. -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  362. sets.buff['Ebullience'] = {head="Savant's Bonnet +2"}
  363. sets.buff['Rapture'] = {head="Arbatel Bonnet +1"}
  364. sets.buff['Perpetuance'] = {hands="Arbatel Bracers +1"}
  365. sets.buff['Immanence'] = {hands="Savant's Bracers +2"}
  366. sets.buff['Penury'] = {legs="Savant's Pants +2"}
  367. sets.buff['Parsimony'] = {legs="Savant's Pants +2"}
  368. sets.buff['Celerity'] = {feet="Pedagogy Loafers",head="Nahtirah hat"}
  369. sets.buff['Alacrity'] = {feet="Pedagogy Loafers",head="Nahtirah hat"}
  370.  
  371. sets.buff['Klimaform'] = {feet="Arbatel Loafers +1"}
  372.  
  373. sets.buff.FullSublimation = {head="Academic's Mortarboard",ear1="Savant's Earring",body="Pedagogy Gown"}
  374. sets.buff.PDTSublimation = {head="Academic's Mortarboard",ear1="Savant's Earring"}
  375.  
  376. --sets.buff['Sandstorm'] = {feet="Desert Boots"}
  377. end
  378.  
  379. -------------------------------------------------------------------------------------------------------------------
  380. -- Job-specific hooks for standard casting events.
  381. -------------------------------------------------------------------------------------------------------------------
  382. -- Run after the general midcast() is done.
  383. function job_post_midcast(spell, action, spellMap, eventArgs)
  384. if spell.action_type == 'Magic' then
  385. apply_grimoire_bonuses(spell, action, spellMap, eventArgs)
  386. end
  387.  
  388. if spell.element == world.weather_element or spell.element == world.day_element or
  389. (spell.element == 'Lightning' and buffactive['Thunderstorm']) or
  390. (spell.element == 'Ice' and buffactive['Hailstorm']) or
  391. (spell.element == 'Water' and buffactive['Rainstorm']) or
  392. (spell.element == 'Fire' and buffactive['Firestorm']) or
  393. (spell.element == 'Earth' and buffactive['Sandstorm']) or
  394. (spell.element == 'Wind' and buffactive['Windstorm']) or
  395. (spell.element == 'Light' and buffactive['Aurorastorm']) or
  396. (spell.element == 'Dark' and buffactive['Voidstorm']) then
  397.  
  398. if spell.skill == 'Elemental Magic' and spellMap ~= 'Helix' then
  399. equip(sets[spell.element])
  400. elseif string.find(spell.english,'Cure') then
  401. equip(sets[spell.element])
  402. end
  403. end
  404. if spell.skill == 'Elemental Magic' and state.MagicBurst.value then
  405. equip(sets.magic_burst)
  406. if player.equipment.main == "Akademos" and state.Buff['Klimaform'] then
  407. equip(sets.buff['Klimaform'])
  408. end
  409. end
  410. end
  411.  
  412. function job_aftercast(spell, action, spellMap, eventArgs)
  413. if not spell.interrupted then
  414. if spell.english == 'Break' or spell.english == 'Breakga' then
  415. send_command('@timers c "'..spell.english..' ['..spell.target.name..']" 30 down spells/00220.png')
  416. elseif spell.english == 'Sleep' or spell.english == 'Sleepga' then
  417. send_command('@timers c "'..spell.english..' ['..spell.target.name..']" 60 down spells/00220.png')
  418. elseif spell.english == 'Sleep II' or spell.english == 'Sleepga II' then
  419. send_command('@timers c "'..spell.english..' ['..spell.target.name..']" 90 down spells/00220.png')
  420. end
  421. classes.CustomIdleGroups:clear()
  422. end
  423. end
  424.  
  425.  
  426. -------------------------------------------------------------------------------------------------------------------
  427. -- Job-specific hooks that are called to process player actions at specific points in time.
  428. -------------------------------------------------------------------------------------------------------------------
  429.  
  430. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  431. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  432. function job_precast(spell, action, spellMap, eventArgs)
  433. if state.Buff[spell.english] ~= nil then
  434. state.Buff[spell.english] = true
  435. end
  436. end
  437.  
  438. -- Run after the general midcast() is done.
  439. function job_post_midcast(spell, action, spellMap, eventArgs)
  440. if spell.action_type == 'Magic' then
  441. apply_grimoire_bonuses(spell, action, spellMap, eventArgs)
  442. end
  443. end
  444.  
  445. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  446. function job_aftercast(spell, action, spellMap, eventArgs)
  447. if state.Buff[spell.english] ~= nil then
  448. state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
  449. end
  450. end
  451.  
  452.  
  453. -------------------------------------------------------------------------------------------------------------------
  454. -- Customization hooks for idle and melee sets, after they've been automatically constructed.
  455. -------------------------------------------------------------------------------------------------------------------
  456.  
  457. -- Custom spell mapping.
  458. function job_get_spell_map(spell, default_spell_map)
  459. if spell.action_type == 'Magic' then
  460. if default_spell_map == 'Cure' or default_spell_map == 'Curaga' then
  461. if world.weather_element == 'Light' then
  462. return 'CureWithLightWeather'
  463. end
  464. elseif spell.skill == 'Enfeebling Magic' then
  465. if spell.type == 'WhiteMagic' then
  466. return 'MndEnfeebles'
  467. else
  468. return 'IntEnfeebles'
  469. end
  470. elseif spell.skill == 'Elemental Magic' then
  471. if info.low_nukes:contains(spell.english) then
  472. return 'LowTierNuke'
  473. elseif info.mid_nukes:contains(spell.english) then
  474. return 'MidTierNuke'
  475. end
  476. end
  477. end
  478. end
  479.  
  480. function customize_idle_set(idleSet)
  481. if state.Buff['Sublimation: Activated'] then
  482. if state.IdleMode == 'Normal' then
  483. idleSet = set_combine(idleSet, sets.buff.FullSublimation)
  484. elseif state.IdleMode == 'PDT' then
  485. idleSet = set_combine(idleSet, sets.buff.PDTSublimation)
  486. end
  487. end
  488.  
  489. if player.mpp < 51 then
  490. idleSet = set_combine(idleSet, sets.latent_refresh)
  491. end
  492.  
  493. return idleSet
  494. end
  495.  
  496. -------------------------------------------------------------------------------------------------------------------
  497. -- General hooks for change events.
  498. -------------------------------------------------------------------------------------------------------------------
  499.  
  500. -- Called when a player gains or loses a buff.
  501. -- buff == buff gained or lost
  502. -- gain == true if the buff was gained, false if it was lost.
  503. function job_buff_change(buff, gain)
  504. if state.Buff[buff] ~= nil then
  505. state.Buff[buff] = gain
  506. end
  507.  
  508. if buff == "Sublimation: Activated" then
  509. handle_equipping_gear(player.status)
  510. end
  511. end
  512.  
  513. -- Handle notifications of general user state change.
  514. function job_state_change(stateField, newValue, oldValue)
  515. if stateField == 'OffenseMode' then
  516. if newValue == 'Normal' then
  517. disable('main','sub')
  518. else
  519. enable('main','sub')
  520. end
  521. elseif stateField == 'Reset' then
  522. if state.OffenseMode == 'None' then
  523. enable('main','sub')
  524. end
  525. end
  526. end
  527.  
  528.  
  529. -------------------------------------------------------------------------------------------------------------------
  530. -- User code that supplements self-commands.
  531. -------------------------------------------------------------------------------------------------------------------
  532.  
  533. -- Called for direct player commands.
  534. function job_self_command(cmdParams, eventArgs)
  535. if cmdParams[1]:lower() == 'scholar' then
  536. handle_strategems(cmdParams)
  537. eventArgs.handled = true
  538. end
  539. end
  540.  
  541.  
  542. -- Called by the 'update' self-command.
  543. function job_update(cmdParams, eventArgs)
  544. if cmdParams[1] == 'user' and not (buffactive['light arts'] or buffactive['dark arts'] or
  545. buffactive['addendum: white'] or buffactive['addendum: black']) then
  546. if state.IdleMode == 'Stun' then
  547. send_command('@input /ja "Dark Arts" <me>')
  548. else
  549. send_command('@input /ja "Light Arts" <me>')
  550. end
  551. end
  552.  
  553. update_active_strategems()
  554. update_sublimation()
  555. end
  556.  
  557.  
  558. -- Function to display the current relevant user state when doing an update.
  559. -- Return true if display was handled, and you don't want the default info shown.
  560. function display_current_job_state(eventArgs)
  561. local defenseString = ''
  562. if state.Defense.Active then
  563. local defMode = state.Defense.PhysicalMode
  564. if state.Defense.Type == 'Magical' then
  565. defMode = state.Defense.MagicalMode
  566. end
  567.  
  568. defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
  569. end
  570.  
  571. local meleeString = ''
  572. if state.OffenseMode == 'Normal' then
  573. meleeString = 'Melee: Weapons locked, '
  574. end
  575.  
  576. add_to_chat(122,'Casting ['..state.CastingMode..'], '..meleeString..'Idle ['..state.IdleMode..'], '..defenseString..
  577. 'Kiting: '..on_off_names[state.Kiting])
  578.  
  579. eventArgs.handled = true
  580. end
  581.  
  582. -------------------------------------------------------------------------------------------------------------------
  583. -- Utility functions specific to this job.
  584. -------------------------------------------------------------------------------------------------------------------
  585.  
  586. -- Reset the state vars tracking strategems.
  587. function update_active_strategems()
  588. state.Buff['Ebullience'] = buffactive['Ebullience'] or false
  589. state.Buff['Rapture'] = buffactive['Rapture'] or false
  590. state.Buff['Perpetuance'] = buffactive['Perpetuance'] or false
  591. state.Buff['Immanence'] = buffactive['Immanence'] or false
  592. state.Buff['Penury'] = buffactive['Penury'] or false
  593. state.Buff['Parsimony'] = buffactive['Parsimony'] or false
  594. state.Buff['Celerity'] = buffactive['Celerity'] or false
  595. state.Buff['Alacrity'] = buffactive['Alacrity'] or false
  596.  
  597. state.Buff['Klimaform'] = buffactive['Klimaform'] or false
  598. end
  599.  
  600. function update_sublimation()
  601. state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
  602. end
  603.  
  604. -- Equip sets appropriate to the active buffs, relative to the spell being cast.
  605. function apply_grimoire_bonuses(spell, action, spellMap)
  606. if state.Buff.Perpetuance and spell.type =='WhiteMagic' and spell.skill == 'Enhancing Magic' then
  607. equip(sets.buff['Perpetuance'])
  608. end
  609. if state.Buff.Rapture and (spellMap == 'Cure' or spellMap == 'Curaga') then
  610. equip(sets.buff['Rapture'])
  611. end
  612. if spell.skill == 'Elemental Magic' and spellMap ~= 'ElementalEnfeeble' then
  613. if state.Buff.Ebullience and spell.english ~= 'Impact' then
  614. equip(sets.buff['Ebullience'])
  615. end
  616. if state.Buff.Immanence then
  617. equip(sets.buff['Immanence'])
  618. end
  619. if state.Buff.Klimaform and spell.element == world.weather_element then
  620. equip(sets.buff['Klimaform'])
  621. end
  622. end
  623.  
  624. if state.Buff.Penury then equip(sets.buff['Penury']) end
  625. if state.Buff.Parsimony then equip(sets.buff['Parsimony']) end
  626. if state.Buff.Celerity then equip(sets.buff['Celerity']) end
  627. if state.Buff.Alacrity then equip(sets.buff['Alacrity']) end
  628. end
  629.  
  630.  
  631. -- General handling of strategems in an Arts-agnostic way.
  632. -- Format: gs c scholar <strategem>
  633. function handle_strategems(cmdParams)
  634. -- cmdParams[1] == 'scholar'
  635. -- cmdParams[2] == strategem to use
  636.  
  637. if not cmdParams[2] then
  638. add_to_chat(123,'Error: No strategem command given.')
  639. return
  640. end
  641. local strategem = cmdParams[2]:lower()
  642.  
  643. if buffactive['light arts'] or buffactive['addendum: white'] then
  644. if strategem == 'cost' then
  645. send_command('@input /ja Penury <me>')
  646. elseif strategem == 'speed' then
  647. send_command('@input /ja Celerity <me>')
  648. elseif strategem == 'aoe' then
  649. send_command('@input /ja Accession <me>')
  650. elseif strategem == 'power' then
  651. send_command('@input /ja Rapture <me>')
  652. elseif strategem == 'duration' then
  653. send_command('@input /ja Perpetuance <me>')
  654. elseif strategem == 'accuracy' then
  655. send_command('@input /ja Altruism <me>')
  656. elseif strategem == 'enmity' then
  657. send_command('@input /ja Tranquility <me>')
  658. elseif strategem == 'skillchain' then
  659. add_to_chat(122,'Error: Light Arts does not have a skillchain strategem.')
  660. elseif strategem == 'addendum' then
  661. send_command('@input /ja "Addendum: White" <me>')
  662. else
  663. add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  664. end
  665. elseif buffactive['dark arts'] or buffactive['addendum: black'] then
  666. if strategem == 'cost' then
  667. send_command('@input /ja Parsimony <me>')
  668. elseif strategem == 'speed' then
  669. send_command('@input /ja Alacrity <me>')
  670. elseif strategem == 'aoe' then
  671. send_command('@input /ja Manifestation <me>')
  672. elseif strategem == 'power' then
  673. send_command('@input /ja Ebullience <me>')
  674. elseif strategem == 'duration' then
  675. add_to_chat(122,'Error: Dark Arts does not have a duration strategem.')
  676. elseif strategem == 'accuracy' then
  677. send_command('@input /ja Focalization <me>')
  678. elseif strategem == 'enmity' then
  679. send_command('@input /ja Equanimity <me>')
  680. elseif strategem == 'skillchain' then
  681. send_command('@input /ja Immanence <me>')
  682. elseif strategem == 'addendum' then
  683. send_command('@input /ja "Addendum: Black" <me>')
  684. else
  685. add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
  686. end
  687. else
  688. add_to_chat(123,'No arts has been activated yet.')
  689. end
  690. end
  691.  
  692.  
  693. -- Gets the current number of available strategems based on the recast remaining
  694. -- and the level of the sch.
  695. function get_current_strategem_count()
  696. -- returns recast in seconds.
  697. local allRecasts = windower.ffxi.get_ability_recasts()
  698. local stratsRecast = allRecasts[231]
  699.  
  700. local maxStrategems
  701.  
  702. if player.main_job_level >= 90 then
  703. maxStrategems = 5
  704. elseif player.main_job_level >= 70 then
  705. maxStrategems = 4
  706. elseif player.main_job_level >= 50 then
  707. maxStrategems = 3
  708. elseif player.main_job_level >= 30 then
  709. maxStrategems = 2
  710. elseif player.main_job_level >= 10 then
  711. maxStrategems = 1
  712. else
  713. maxStrategems = 0
  714. end
  715.  
  716. local fullRechargeTime = 4*60
  717.  
  718. local currentCharges = math.floor(maxStrategems - maxStrategems * stratsRecast / fullRechargeTime)
  719.  
  720. return currentCharges
  721. end
  722.  
  723.  
  724. -- Select default macro book on initial load or subjob change.
  725. function select_default_macro_book()
  726. set_macro_page(1, 17)
  727. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement