Advertisement
Guest User

Untitled

a guest
Apr 18th, 2014
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.79 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. -- Initialization function for this job file.
  8. function get_sets()
  9. -- Load and initialize the include file.
  10. include('Mote-Include.lua')
  11. end
  12.  
  13. -- Setup vars that are user-independent.
  14. function job_setup()
  15. state.Buff['Afflatus Solace'] = buffactive['afflatus solace'] or false
  16. end
  17.  
  18.  
  19. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  20. function user_setup()
  21. -- Options: Override default values
  22. options.OffenseModes = {'None', 'Normal'}
  23. options.DefenseModes = {'Normal'}
  24. options.WeaponskillModes = {'Normal'}
  25. options.CastingModes = {'Normal', 'Resistant', 'Dire'}
  26. options.IdleModes = {'Normal', 'PDT'}
  27. options.RestingModes = {'Normal'}
  28. options.PhysicalDefenseModes = {'PDT'}
  29. options.MagicalDefenseModes = {'MDT'}
  30.  
  31. state.Defense.PhysicalMode = 'PDT'
  32. state.OffenseMode = 'None'
  33.  
  34.  
  35. -- Default macro set/book
  36. set_macro_page(5, 2)
  37. end
  38.  
  39. -- Called when this job file is unloaded (eg: job change)
  40. function file_unload()
  41. if binds_on_unload then
  42. binds_on_unload()
  43. end
  44. end
  45.  
  46.  
  47. -- Define sets and vars used by this job file.
  48. function init_gear_sets()
  49. --------------------------------------
  50. -- Start defining the sets
  51. --------------------------------------
  52.  
  53. -- Precast Sets
  54.  
  55. -- Fast cast sets for spells
  56. sets.precast.FC = {main=gear.FastcastStaff,ammo="Incantor Stone",
  57. head="Nahtirah Hat",neck="Jeweled Collar",ear2="Loquacious Earring",
  58. body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",
  59. back="Swith Cape",waist="Witful Belt",legs="Artsieq Hose",feet="Chelona Boots"}
  60.  
  61. sets.precast.FC.EnhancingMagic = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  62.  
  63. sets.precast.FC.HealingMagic = set_combine(sets.precast.FC, {legs="Orison Pantaloons +2"})
  64.  
  65. sets.precast.FC.StatusRemoval = sets.precast.FC.HealingMagic
  66.  
  67. sets.precast.FC.Cure = set_combine(sets.precast.FC.HealingMagic, {main="Tamaxchi",sub="Genbu's Shield",ammo="Impatiens"})
  68.  
  69. sets.precast.FC.Curaga = sets.precast.FC.Cure
  70.  
  71. -- Precast sets to enhance JAs
  72. sets.precast.JA.Benediction = {body="Piety Briault"}
  73.  
  74. -- Waltz set (chr and vit)
  75. sets.precast.Waltz = {
  76. head="Nahtirah Hat",ear1="Roundel Earring",
  77. body="Vanir Cotehardie",hands="Yaoyotl Gloves",
  78. back="Refraction Cape",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  79.  
  80.  
  81. -- Weaponskill sets
  82.  
  83. -- Default set for any weaponskill that isn't any more specifically defined
  84. gear.default.weaponskill_neck = "Asperity Necklace"
  85. gear.default.weaponskill_waist = ""
  86. sets.precast.WS = {
  87. head="Nahtirah Hat",neck=gear.ElementalGorget,ear1="Bladeborn Earring",ear2="Steelflash Earring",
  88. body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
  89. back="Refraction Cape",waist=gear.ElementalBelt,legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  90.  
  91. sets.precast.WS['Flash Nova'] = {
  92. head="Nahtirah Hat",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
  93. body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="Strendu Ring",
  94. back="Toro Cape",waist="Thunder Belt",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  95.  
  96.  
  97. -- Midcast Sets
  98.  
  99. sets.midcast.FastRecast = {
  100. head="Nahtirah Hat",ear2="Loquacious Earring",
  101. body="Vanir Cotehardie",hands="Dynasty Mitts",ring1="Prolix Ring",
  102. back="Swith Cape",waist="Cetl Belt",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  103.  
  104. -- Cure sets
  105. gear.default.obi_waist = "Cetl Belt"
  106. gear.default.obi_back = "Swith Cape"
  107.  
  108. sets.midcast.CureSolace = {main="Tamaxchi",sub="Genbu's Shield",ammo="Mana Ampulla",
  109. head="Theo. cap +1",neck="Jeweled Collar",ear1="Lifestorm Earring",ear2="Loquacious Earring",
  110. body="Orison Bliaud +2",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Sirona's Ring",
  111. back="Oretania's cape",waist=gear.ElementalObi,legs="Orison Pantaloons +2",feet="Cure Clogs"}
  112.  
  113. sets.midcast.Cure = {main="Tamaxchi",sub="Genbu's Shield",ammo="Mana Ampulla",
  114. head="Theo. cap +1",neck="Jeweled Collar",ear1="Lifestorm Earring",ear2="Loquacious Earring",
  115. body="Vanir Cotehardie",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Sirona's Ring",
  116. back="Oretania's cape",waist=gear.ElementalObi,legs="Orison Pantaloons +2",feet="Cure Clogs"}
  117.  
  118. sets.midcast.Curaga = {main="Tamaxchi",sub="Genbu's Shield",ammo="Mana Ampulla",
  119. head="Theo. cap +1",neck="Jeweled Collar",ear1="Lifestorm Earring",ear2="Loquacious Earring",
  120. body="Vanir Cotehardie",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Sirona's Ring",
  121. back="Pahtli Cape",waist=gear.ElementalObi,legs="Orison Pantaloons +2",feet="Cure Clogs"}
  122.  
  123. sets.midcast.CureMelee = {ammo="Mana Ampulla",
  124. head="Theo. cap +1",neck="Jeweled Collar",ear1="Lifestorm Earring",ear2="Loquacious Earring",
  125. body="Vanir Cotehardie",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Sirona's Ring",
  126. back="Oretania's cape",waist=gear.ElementalObi,legs="Orison Pantaloons +2",feet="Cure Clogs"}
  127.  
  128. sets.midcast.Cursna = {main="Beneficus",sub="Genbu's Shield",
  129. head="Orison Cap +2",neck="Malison Medallion",
  130. body="Orison Bliaud +2",hands="Hieros Mittens",ring1="Ephedra Ring",ring2="Sirona's Ring",
  131. back="Mending cape",waist="Cetl Belt",legs="Theo. pant. +1 +1",feet="Gendewitha Galoshes"}
  132.  
  133. sets.midcast.StatusRemoval = {
  134. head="Orison Cap +2",legs="Orison Pantaloons +2"}
  135.  
  136. sets.midcast.EnhancingMagic = {main="Beneficus",sub="Genbu's Shield",
  137. body="Manasa Chasuble",hands="Dynasty Mitts",
  138. waist="Olympus Sash",legs="Cleric's Pantaloons +2",feet="Orison Duckbills +2"}
  139.  
  140. sets.midcast.Haste = {main="Vayuvata II", sub="Arbuda Grip",
  141. head="Nahtirah Hat",neck="Jeweled Collar",ear2="Loquacious Earring",
  142. body="Vanir Cotehardie",hands="Dynasty Mitts",
  143. back="Swith Cape",waist="Siegel Sash",legs="Artsieq Hose",feet="Gendewitha Galoshes"}
  144.  
  145. sets.midcast.Stoneskin = {
  146. head="Nahtirah Hat",neck="Jeweled Collar",ear2="Loquacious Earring",
  147. body="Vanir Cotehardie",hands="Dynasty Mitts",
  148. back="Swith Cape",waist="Siegel Sash",legs="Artsieq Hose",feet="Gendewitha Galoshes"}
  149.  
  150. sets.midcast.Auspice = {hands="Dynasty Mitts",feet="Orison Duckbills +2"}
  151.  
  152. sets.midcast.BarElement = {main="Beneficus",sub="Genbu's Shield",
  153. head="Orison Cap +2",neck="Colossus's Torque",
  154. body="Orison Bliaud +2",hands="Orison Mitts +2",
  155. waist="Olympus Sash",legs="Cleric's Pantaloons +2",feet="Orison Duckbills +2"}
  156.  
  157. sets.midcast.Regen = {main="Bolelabunga",
  158. body="Piety Briault",hands="Orison Mitts +2",
  159. legs="Theo. pant. +1"}
  160.  
  161. sets.midcast.Protectra = {ring1="Sheltered Ring"}
  162.  
  163. sets.midcast.Shellra = {ring1="Sheltered Ring",legs="Cleric's Pantaloons +2"}
  164.  
  165.  
  166. sets.midcast.DivineMagic = {main="Venabulum",ammo="Dosis Tathlum",
  167. head="Nahtirah Hat",neck="Colossus's Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  168. body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring2="Sangoma Ring",
  169. back=gear.ElementalCape,waist=gear.ElementalObi,legs="Theo. pant. +1",feet="Umbani Boots"}
  170.  
  171. sets.midcast.DarkMagic = {main="Venabulum",
  172. head="Nahtirah Hat",neck="Eddy Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  173. body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Sangoma Ring",
  174. back="Ogapepo Cape",waist="Ovate Rope",legs="Bokwus Slops",feet="Uk'uxkaj Boots"}
  175.  
  176. sets.midcast.ElementalMagic = {main="Venabulum",ammo="Dosis Tathlum",
  177. head="Nahtirah Hat",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Crematio Earring",
  178. body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Sangoma Ring",
  179. back=gear.ElementalCape,waist=gear.ElementalObi,legs="Artsieq Hose",feet="Umbani Boots"}
  180.  
  181. --sets.midcast.Stun = set_combine(sets.midcast.DarkMagic, {main=gear.RecastStaff})
  182.  
  183. -- Custom spell classes
  184. sets.midcast.MndEnfeebles = {main="Venabulum", sub="Mephitis Grip",ammo="Kalboron Stone",
  185. head="Nahtirah Hat",neck="Imbodla Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  186. body="Artsieq Jubbah",hands="Yaoyotl Gloves",ring1="Aquasoul Ring",ring2="Sangoma Ring",
  187. back="Ogapepo Cape",waist="Ovate Rope",legs="Bokwus Slops",feet="Uk'uxkaj Boots"}
  188.  
  189. sets.midcast.IntEnfeebles = {main="Venabulum", sub="Mephitis Grip",ammo="Kalboron Stone",
  190. head="Nahtirah Hat",neck="Imbodla Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  191. body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Icesoul Ring",ring2="Sangoma Ring",
  192. back="Ogapepo Cape",waist="Ovate Rope",legs="Bokwus Slops",feet="Uk'uxkaj Boots"}
  193.  
  194.  
  195. -- Sets to return to when not performing an action.
  196.  
  197. -- Resting sets
  198. sets.resting = {main=gear.Staff.HMP, ,ammo="Mana Ampulla",
  199. body="Artsieq Jubbah",hands="Serpentes Cuffs",
  200. waist="Austerity Belt",legs="Nares Trews",feet="Chelona Boots"}
  201.  
  202.  
  203. -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  204. sets.idle = {main="Bolelabunga", sub="Genbu's Shield",ammo="Incantor Stone",
  205. head="Nahtirah Hat",neck="Wiglen Gorget",ear1="Moonshade Earring",ear2="Loquacious Earring",
  206. body="Artsieq Jubbah",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  207. back="Umbra Cape",waist="Witful Belt",legs="Nares Trews",feet="Serpentes Sabots"}
  208.  
  209. sets.idle.PDT = {main="Bolelabunga", sub="Genbu's Shield",ammo="Incantor Stone",
  210. head="Nahtirah Hat",neck="Twilight Torque",ear1="Moonshade Earring",ear2="Loquacious Earring",
  211. body="Artsieq Jubbah",hands="Gendewitha Gages",ring1="Dark Ring",ring2="Defending Ring",
  212. back="Umbra Cape",waist="Witful Belt",legs="Gendewitha Spats",feet="Serpentes Sabots"}
  213.  
  214. sets.idle.Town = {main="Bolelabunga", sub="Genbu's Shield",ammo="Incantor Stone",
  215. head="Gendewitha Caubeen",neck="Wiglen Gorget",ear1="Moonshade Earring",ear2="Loquacious Earring",
  216. body="Artsieq Jubbah",hands="Gendewitha Gages",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  217. back="Umbra Cape",waist="Witful Belt",legs="Nares Trews",feet="Serpentes Sabots"}
  218.  
  219. sets.idle.Weak = {main="Bolelabunga",sub="Genbu's Shield",ammo="Incantor Stone",
  220. head="Nahtirah Hat",neck="Twilight Torque",ear1="Moonshade Earring",ear2="Loquacious Earring",
  221. body="Artsieq Jubbah",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Meridian Ring",
  222. back="Umbra Cape",waist="Witful Belt",legs="Nares Trews",feet="Gendewitha Galoshes"}
  223.  
  224.  
  225. -- Defense sets
  226.  
  227. sets.defense.PDT = {main=gear.Staff.PDT,sub="Achaq Grip",
  228. head="Gendewitha Caubeen",neck="Twilight Torque",
  229. body="Artsieq Jubbah",hands="Gendewitha Gages",ring1="Dark Ring",ring2="Defending Ring",
  230. back="Umbra Cape",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  231.  
  232. sets.defense.MDT = {main=gear.Staff.PDT,sub="Achaq Grip",
  233. head="Nahtirah Hat",neck="Twilight Torque",
  234. body="Artsieq Jubbah",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Shadow Ring",
  235. back="Tuilha Cape",legs="Bokwus Slops",feet="Gendewitha Galoshes"}
  236.  
  237. sets.Kiting = {feet="Herald's Gaiters"}
  238.  
  239. -- Engaged sets
  240.  
  241. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  242. -- sets if more refined versions aren't defined.
  243. -- If you create a set with both offense and defense modes, the offense mode should be first.
  244. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  245.  
  246. -- Basic set for if no TP weapon is defined.
  247. sets.engaged = {
  248. head="Nahtirah Hat",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  249. body="Vanir Cotehardie",hands="Dynasty Mitts",ring1="Rajas Ring",ring2="K'ayres Ring",
  250. back="Umbra Cape",waist="Cetl Belt",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  251.  
  252.  
  253. -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  254. sets.buff['Divine Caress'] = {hands="Orison Mitts +2"}
  255. end
  256.  
  257. -------------------------------------------------------------------------------------------------------------------
  258. -- Job-specific hooks that are called to process player actions at specific points in time.
  259. -------------------------------------------------------------------------------------------------------------------
  260.  
  261. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  262. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  263. function job_precast(spell, action, spellMap, eventArgs)
  264. classes.CustomClass = get_spell_class(spell, action, spellMap)
  265.  
  266. if spell.english == "Paralyna" and buffactive.Paralyzed then
  267. -- no gear swaps if we're paralyzed, to avoid blinking while trying to remove it.
  268. eventArgs.handled = true
  269. end
  270.  
  271. if spell.skill == 'HealingMagic' then
  272. gear.default.obi_back = "Refraction Cape"
  273. else
  274. gear.default.obi_back = "Toro Cape"
  275. end
  276. end
  277.  
  278.  
  279. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  280. function job_midcast(spell, action, spellMap, eventArgs)
  281. if spell.action_type == 'Magic' then
  282. -- Default base equipment layer of fast recast.
  283. equip(sets.midcast.FastRecast)
  284. end
  285. end
  286.  
  287.  
  288. function job_post_midcast(spell, action, spellMap, eventArgs)
  289. -- Apply Divine Caress boosting items as highest priority over other gear, if applicable.
  290. if spellMap == 'StatusRemoval' and buffactive['Divine Caress'] then
  291. equip(sets.buff['Divine Caress'])
  292. end
  293. end
  294.  
  295.  
  296. -- Return true if we handled the aftercast work. Otherwise it will fall back
  297. -- to the general aftercast() code in Mote-Include.
  298. function job_aftercast(spell, action, spellMap, eventArgs)
  299. if not spell.interrupted then
  300. if state.Buff[spell.name] ~= nil then
  301. state.Buff[spell.name] = true
  302. elseif spell.name == "Afflatus Misery" then
  303. state.Buff['Afflatus Solace'] = false
  304. end
  305. end
  306. end
  307.  
  308.  
  309. -------------------------------------------------------------------------------------------------------------------
  310. -- Customization hooks for idle and melee sets, after they've been automatically constructed.
  311. -------------------------------------------------------------------------------------------------------------------
  312.  
  313. function customize_idle_set(idleSet)
  314. if player.mpp < 90 and state.IdleMode == "Normal" and state.Defense.Active == false then
  315. idleSet = set_combine(idleSet, sets.Owleyes)
  316. end
  317.  
  318. return idleSet
  319. end
  320.  
  321.  
  322. -------------------------------------------------------------------------------------------------------------------
  323. -- General hooks for other events.
  324. -------------------------------------------------------------------------------------------------------------------
  325.  
  326. -- Called when a player gains or loses a buff.
  327. -- buff == buff gained or lost
  328. -- gain == true if the buff was gained, false if it was lost.
  329. function job_buff_change(buff, gain)
  330. if state.Buff[buff] ~= nil then
  331. state.Buff[buff] = gain
  332. end
  333. end
  334.  
  335.  
  336. -------------------------------------------------------------------------------------------------------------------
  337. -- User code that supplements self-commands.
  338. -------------------------------------------------------------------------------------------------------------------
  339.  
  340. -- Called by the 'update' self-command.
  341. function job_update(cmdParams, eventArgs)
  342. if cmdParams[1] == 'user' and not areas.Cities:contains(world.area) then
  343. local needsArts =
  344. player.sub_job:lower() == 'sch' and
  345. not buffactive['Light Arts'] and
  346. not buffactive['Addendum: White'] and
  347. not buffactive['Dark Arts'] and
  348. not buffactive['Addendum: Black']
  349.  
  350. if not buffactive['Afflatus Solace'] and not buffactive['Afflatus Misery'] then
  351. if needsArts then
  352. send_command('@input /ja "Afflatus Solace" <me>;wait 1.2;input /ja "Light Arts" <me>')
  353. else
  354. send_command('@input /ja "Afflatus Solace" <me>')
  355. end
  356. end
  357. end
  358. end
  359.  
  360.  
  361. -- Handle notifications of general user state change.
  362. function job_state_change(stateField, newValue)
  363. if stateField == 'OffenseMode' then
  364. if newValue == 'Normal' then
  365. disable('main','sub')
  366. else
  367. enable('main','sub')
  368. end
  369. elseif stateField == 'Reset' then
  370. if state.OffenseMode == 'None' then
  371. enable('main','sub')
  372. end
  373. end
  374. end
  375.  
  376.  
  377. -- Function to display the current relevant user state when doing an update.
  378. -- Return true if display was handled, and you don't want the default info shown.
  379. function display_current_job_state(eventArgs)
  380. local defenseString = ''
  381. if state.Defense.Active then
  382. local defMode = state.Defense.PhysicalMode
  383. if state.Defense.Type == 'Magical' then
  384. defMode = state.Defense.MagicalMode
  385. end
  386.  
  387. defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
  388. end
  389.  
  390. local meleeString = ''
  391. if state.OffenseMode == 'Normal' then
  392. meleeString = 'Melee: Weapons locked, '
  393. end
  394.  
  395. add_to_chat(122,'Casting ['..state.CastingMode..'], '..meleeString..'Idle ['..state.IdleMode..'], '..defenseString..
  396. 'Kiting: '..on_off_names[state.Kiting])
  397.  
  398. eventArgs.handled = true
  399. end
  400.  
  401. -------------------------------------------------------------------------------------------------------------------
  402. -- Utility functions specific to this job.
  403. -------------------------------------------------------------------------------------------------------------------
  404.  
  405. function get_spell_class(spell, action, spellMap)
  406. local spellclass
  407.  
  408. if spell.action_type == 'Magic' then
  409. if spell.skill == "EnfeeblingMagic" then
  410. if spell.type == "WhiteMagic" then
  411. spellclass = "MndEnfeebles"
  412. else
  413. spellclass = "IntEnfeebles"
  414. end
  415. else
  416. if spellMap == 'Cure' and state.Buff['Afflatus Solace'] then
  417. spellclass = "CureSolace"
  418. elseif (spellMap == 'Cure' or spellMap == "Curaga") and player.status == 'Engaged' and player.equipment.main ~= 'Tamaxchi' then
  419. spellclass = "CureMelee"
  420. end
  421. end
  422. end
  423.  
  424. return spellclass
  425. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement