Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2014
335
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 17.08 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.  
  14. -- Setup vars that are user-independent.
  15. function job_setup()
  16. state.CombatForm = get_combat_form()
  17.  
  18. state.Buff.Sekkanoki = buffactive.sekkanoki or false
  19. state.Buff.Sengikori = buffactive.sengikori or false
  20. state.Buff['Meikyou Shisui'] = buffactive['Meikyou Shisui'] or false
  21. end
  22.  
  23.  
  24. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  25. function user_setup()
  26. -- Options: Override default values
  27. options.OffenseModes = {'Normal', 'Acc'}
  28. options.DefenseModes = {'Normal', 'PDT', 'Reraise'}
  29. options.WeaponskillModes = {'Normal', 'Acc'}
  30. options.CastingModes = {'Normal'}
  31. options.IdleModes = {'Normal'}
  32. options.RestingModes = {'Normal'}
  33. options.PhysicalDefenseModes = {'PDT', 'Reraise'}
  34. options.MagicalDefenseModes = {'MDT'}
  35.  
  36. state.Defense.PhysicalMode = 'PDT'
  37.  
  38. -- Additional local binds
  39. send_command('bind ^` input /ja "Hasso" <me>')
  40. send_command('bind !` input /ja "Seigan" <me>')
  41.  
  42. select_default_macro_book()
  43. end
  44.  
  45.  
  46. -- Called when this job file is unloaded (eg: job change)
  47. function file_unload()
  48. if binds_on_unload then
  49. binds_on_unload()
  50. end
  51.  
  52. send_command('unbind ^`')
  53. send_command('unbind !-')
  54. end
  55.  
  56.  
  57. -- Define sets and vars used by this job file.
  58. function init_gear_sets()
  59. --------------------------------------
  60. -- Start defining the sets
  61. --------------------------------------
  62.  
  63. -- Precast Sets
  64. -- Precast sets to enhance JAs
  65. sets.precast.JA.Meditate = {head="Myochin Kabuto",hands="Sakonji Kote"}
  66. sets.precast.JA['Warding Circle'] = {head="Myochin Kabuto"}
  67. sets.precast.JA['Blade Bash'] = {hands="Sakonji Kote"}
  68.  
  69. -- Waltz set (chr and vit)
  70. sets.precast.Waltz = {ammo="Sonia's Plectrum",
  71. head="Yaoyotl Helm",
  72. body="Otronif Harness +1",hands="Buremte Gloves",ring1="Spiral Ring",
  73. back="Iximulew Cape",waist="Caudata Belt",legs="Karieyh Brayettes +1",feet="Otronif Boots +1"}
  74.  
  75. -- Don't need any special gear for Healing Waltz.
  76. sets.precast.Waltz['Healing Waltz'] = {}
  77.  
  78.        
  79. -- Weaponskill sets
  80. -- Default set for any weaponskill that isn't any more specifically defined
  81. sets.precast.WS = {
  82.     ammo="Thew Bomblet",
  83.     head="Yaoyotl Helm",
  84.     neck="Asperity Necklace",
  85.     ear1="Steelflash Earring",
  86.     ear2="Bladeborn Earring",
  87.     body="Phorcys Korazin",
  88.     hands="Otronif Gloves",
  89.     ring1="Spiral Ring",
  90.     ring2="Rajas Ring",
  91.     back="Atheling Mantle",
  92.     waist="Caudata Belt",
  93.     legs="Wakido haidate +1",
  94.     feet="Whirlpool Greaves"}
  95. sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Ginsen",back="Letalis Mantle"})
  96.  
  97. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  98. sets.precast.WS['Tachi: Fudo'] = {
  99.     ammo="Thew Bomblet",
  100.     head="Otomi Helm",
  101.     body="Phorcyz Korazin",
  102.     hands="Mikinaak Gauntlets",
  103.     legs="Wakido haidate +1",
  104.     feet="Ejekamal Boots", 
  105.     neck="Light Gorget",
  106.     ear1="Brutal Earring",
  107.     ear2="Trux Earring",
  108.     ring1="Spiral Ring",
  109.     ring2="Rajas Ring",
  110.     back="Buquwik Cape",
  111.     waist="Light Belt"}
  112. sets.precast.WS['Tachi: Fudo'].Acc = set_combine(sets.precast.WS['Tachi: Fudo'], {
  113.     ear1="Steelflash Earring",
  114.     ear2="Bladeborn Earring",
  115.     waist="Caudata Belt"})
  116.  
  117. sets.precast.WS['Tachi: Shoha'] = {
  118.     ammo="Thew Bomblet",
  119.     head="Yaoyotl Helm",
  120.     body="Phorcyz Korazin",
  121.     hands="Mikinaak Gauntlets",
  122.     legs="Wakido haidate +1",
  123.     feet="Ejekamal Boots", 
  124.     neck="Shadow Gorget",
  125.     ear1="Steelflash Earring",
  126.     ear2="Bladeborn Earring",
  127.     ring1="Spiral Ring",
  128.     ring2="Rajas Ring",
  129.     back="Buquwik Cape",
  130.     waist="Shadow Belt"}
  131. sets.precast.WS['Tachi: Shoha'].Acc = set_combine(sets.precast.WS['Tachi: Shoha'], {waist="Caudata Belt"})
  132.  
  133. sets.precast.WS['Tachi: Rana'] = set_combine(sets.precast.WS, {})
  134. sets.precast.WS['Tachi: Rana'].Acc = set_combine(sets.precast.WS['Tachi: Rana'], {waist="Snow Belt"})
  135.  
  136. sets.precast.WS['Tachi: Kasha'] = set_combine(sets.precast.WS, {neck="Light Gorget",waist="Light Belt"})
  137.  
  138. sets.precast.WS['Tachi: Gekko'] = set_combine(sets.precast.WS, {neck="Snow Gorget",waist="Snow Belt"})
  139.  
  140. sets.precast.WS['Tachi: Yukikaze'] = set_combine(sets.precast.WS, {neck="Snow Gorget",waist="Snow Belt"})
  141.  
  142. sets.precast.WS['Tachi: Ageha'] = set_combine(sets.precast.WS, {neck="Soil Gorget",waist="Soil Belt"})
  143.  
  144. sets.precast.WS['Tachi: Jinpu'] = set_combine(sets.precast.WS, {neck="Soil Gorget",waist="Soil Belt"})
  145.  
  146. sets.precast.WS['Apex Arrow'] = {
  147.     head="Sankoji Kabuto",
  148.     body="Phorcyz Korazin",
  149.     hands="Unkai Kote +2",
  150.     legs="Wakido haidate +1",
  151.     feet="Wakido Sune-Ate +1", 
  152.     neck="Light Gorget",
  153.     ear1="Altdorf's Earring",
  154.     ear2="Wilhelm's Earring",
  155.     ring1="Hajduk Ring",
  156.     ring2="Paqichikaji Ring",
  157.     back="Buquwik Cape",
  158.     waist="Light Belt"}
  159.  
  160. -- Midcast Sets
  161. sets.midcast.FastRecast = {
  162. head="Yaoyotl Helm",
  163. body="Otronif Harness +1",hands="Otronif Gloves",
  164. legs="Phorcys Dirs",feet="Otronif Boots +1"}
  165.  
  166.  
  167. -- Sets to return to when not performing an action.
  168.  
  169. -- Resting sets
  170. sets.resting = {neck="Wiglen Gorget",ring1="Sheltered Ring",ring2="Paguroidea Ring"}
  171.  
  172.  
  173. -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  174. sets.idle.Town = {main="Tsurumaru", sub="Pole Grip",ammo="Ginsen",
  175. head="Yaoyotl Helm",neck="Asperity Necklace",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  176. body="Xaddi Mail",hands="Wakido Kote +1",ring1="Defending Ring",ring2="Shadow Ring",
  177. back="Shadow Mantle",waist="Windbuffet Belt",legs="Wakido Haidate +1",feet="Danzo Sune-ate"}
  178.  
  179. sets.idle.Field = {
  180. head="Yaoyotl Helm",neck="Wiglen Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  181. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  182. back="Shadow Mantle",waist="Flume Belt",legs="Karieyh Brayettes +1",feet="Danzo Sune-ate"}
  183.  
  184. sets.idle.Weak = {
  185. head="Twilight Helm",neck="Wiglen Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  186. body="Twilight Mail",hands="Buremte Gloves",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  187. back="Shadow Mantle",waist="Flume Belt",legs="Karieyh Brayettes +1",feet="Danzo Sune-ate"}
  188.  
  189. -- Defense sets
  190. sets.defense.PDT = {ammo="Iron Gobbet",
  191. head="Yaoyotl Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  192. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Dark Ring",ring2="Dark Ring",
  193. back="Shadow Mantle",waist="Flume Belt",legs="Karieyh Brayettes +1",feet="Otronif Boots +1"}
  194.  
  195. sets.defense.Reraise = {
  196. head="Twilight Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  197. body="Twilight Mail",hands="Buremte Gloves",ring1="Dark Ring",ring2="Paguroidea Ring",
  198. back="Shadow Mantle",waist="Flume Belt",legs="Karieyh Brayettes +1",feet="Otronif Boots +1"}
  199.  
  200. sets.defense.MDT = {ammo="Demonry Stone",
  201. head="Yaoyotl Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  202. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  203. back="Engulfer Cape",waist="Flume Belt",legs="Karieyh Brayettes +1",feet="Otronif Boots +1"}
  204.  
  205. sets.Kiting = {feet="Danzo Sune-ate"}
  206.  
  207. sets.Reraise = {head="Twilight Helm",body="Twilight Mail"}
  208.  
  209. -- Engaged sets
  210.  
  211. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  212. -- sets if more refined versions aren't defined.
  213. -- If you create a set with both offense and defense modes, the offense mode should be first.
  214. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  215.  
  216. -- Normal melee group
  217. -- Delay 450 GK, 25 Save TP => 65 Store TP for a 5-hit (25 Store TP in gear)
  218. sets.engaged = {
  219.     ammo="Ginsen",
  220.     head="Otomi Helm",
  221.     neck="Asperity Necklace",
  222.     ear1="Steelflash Earring",
  223.     ear2="Bladeborn Earring",
  224.     body="Xaddi Mail",
  225.     hands="Wakido Kote +1",
  226.     ring1="K'ayres Ring",
  227.     ring2="Rajas Ring",
  228.     back="Takaha Mantle",
  229.     waist="Windbuffet Belt",
  230.     legs="Otronif Brais",
  231.     feet="Ejekamal Boots"}
  232. sets.engaged.Acc = {
  233.     ammo="Ginsen",
  234.     head="Yaoyotl Helm",
  235.     neck="Asperity Necklace",
  236.     ear1="Steelflash Earring",
  237.     ear2="Bladeborn Earring",
  238.     body="Xaddi Mail",
  239.     hands="Buremte Gloves",
  240.     ring1="K'ayres Ring",
  241.     ring2="Rajas Ring",
  242.     back="Takaha Mantle",
  243.     waist="Dynamic Belt",
  244.     legs="Unkai Haidate +2",
  245.     feet="Wakido Sune-Ate +1"}
  246. sets.engaged.PDT = {ammo="Thew Bomblet",
  247. head="Yaoyotl Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  248. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Dark Ring",ring2="K'ayres Ring",
  249. back="Iximulew Cape",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"}
  250. sets.engaged.Acc.PDT = {ammo="Honed Tathlum",
  251. head="Yaoyotl Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  252. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Dark Ring",ring2="K'ayres Ring",
  253. back="Letalis Mantle",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"}
  254. sets.engaged.Reraise = {ammo="Thew Bomblet",
  255. head="Twilight Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  256. body="Twilight Mail",hands="Otronif Gloves",ring1="Beeline Ring",ring2="K'ayres Ring",
  257. back="Ik Cape",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"}
  258. sets.engaged.Acc.Reraise = {ammo="Thew Bomblet",
  259. head="Twilight Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  260. body="Twilight Mail",hands="Otronif Gloves",ring1="Beeline Ring",ring2="K'ayres Ring",
  261. back="Letalis Mantle",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"}
  262.  
  263. -- Melee sets for in Adoulin, which has an extra 10 Save TP for weaponskills.
  264. -- Delay 450 GK, 35 Save TP => 89 Store TP for a 4-hit (49 Store TP in gear), 2 Store TP for a 5-hit
  265. sets.engaged.Adoulin = {
  266.     ammo="Ginsen",
  267.     head="Otomi Helm",
  268.     neck="Asperity Necklace",
  269.     ear1="Steelflash Earring",
  270.     ear2="Bladeborn Earring",
  271.     body="Xaddi Mail",
  272.     hands="Wakido Kote +1",
  273.     ring1="K'ares Ring",
  274.     ring2="Rajas Ring",
  275.     back="Atheling Mantle",
  276.     waist="Windbuffet Belt",
  277.     legs="Otronif Brais",
  278.     feet="Ejekamal Boots"}
  279. sets.engaged.Adoulin.Acc = {
  280.     ammo="Ginsen",
  281.     head="Yaoyotl Helm",
  282.     neck="Agitator's Collar",
  283.     ear1="Steelflash Earring",
  284.     ear2="Bladeborn Earring",
  285.     body="Xaddi Mail",
  286.     hands="Buremte Gloves",
  287.     ring1="K'ares Ring",
  288.     ring2="Rajas Ring",
  289.     back="Takaha Mantle",
  290.     waist="Windbuffet Belt",
  291.     legs="Unkai Haidate +2",
  292.     feet="Wakido Sune-Ate +1"}
  293. sets.engaged.Adoulin.PDT = {ammo="Thew Bomblet",
  294. head="Yaoyotl Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  295. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Dark Ring",ring2="K'ayres Ring",
  296. back="Iximulew Cape",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"}
  297. sets.engaged.Adoulin.Acc.PDT = {ammo="Honed Tathlum",
  298. head="Yaoyotl Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  299. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Dark Ring",ring2="K'ayres Ring",
  300. back="Letalis Mantle",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"}
  301. sets.engaged.Adoulin.Reraise = {ammo="Thew Bomblet",
  302. head="Twilight Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  303. body="Twilight Mail",hands="Otronif Gloves",ring1="Beeline Ring",ring2="K'ayres Ring",
  304. back="Ik Cape",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"}
  305. sets.engaged.Adoulin.Acc.Reraise = {ammo="Thew Bomblet",
  306. head="Twilight Helm",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  307. body="Twilight Mail",hands="Otronif Gloves",ring1="Beeline Ring",ring2="K'ayres Ring",
  308. back="Letalis Mantle",waist="Goading Belt",legs="Unkai Haidate +2",feet="Otronif Boots +1"}
  309.  
  310.  
  311. sets.buff.Sekkanoki = {hands="Unkai Kote +2"}
  312. sets.buff.Sengikori = {feet="Unkai Sune-ate +2"}
  313. sets.buff['Meikyou Shisui'] = {feet="Sakonji Sune-ate"}
  314. end
  315.  
  316.  
  317. -------------------------------------------------------------------------------------------------------------------
  318. -- Job-specific hooks that are called to process player actions at specific points in time.
  319. -------------------------------------------------------------------------------------------------------------------
  320.  
  321. -- Set eventArgs.handled to true if we don't want any automatic target handling to be done.
  322. function job_pretarget(spell, action, spellMap, eventArgs)
  323. if spell.type:lower() == 'weaponskill' then
  324. -- Change any GK weaponskills to polearm weaponskill if we're using a polearm.
  325. if player.equipment.main=='Eminent Lance' or player.equipment.main=='Quint Spear' then
  326. if spell.english:startswith("Tachi:") then
  327. send_command('@input /ws "Stardiver" '..spell.target.raw)
  328. eventArgs.cancel = true
  329. end
  330. end
  331. end
  332. end
  333.  
  334. -- Run after the default precast() is done.
  335. -- eventArgs is the same one used in job_precast, in case information needs to be persisted.
  336. function job_post_precast(spell, action, spellMap, eventArgs)
  337. if spell.type:lower() == 'weaponskill' then
  338. if state.Buff.Sekkanoki then
  339. equip(sets.buff.Sekkanoki)
  340. end
  341. if state.Buff.Sengikori then
  342. equip(sets.buff.Sengikori)
  343. end
  344. if state.Buff['Meikyou Shisui'] then
  345. equip(sets.buff['Meikyou Shisui'])
  346. end
  347. end
  348. end
  349.  
  350.  
  351. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  352. function job_midcast(spell, action, spellMap, eventArgs)
  353. if spell.action_type == 'Magic' then
  354. equip(sets.midcast.FastRecast)
  355. end
  356. end
  357.  
  358. -- Run after the default midcast() is done.
  359. -- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
  360. function job_post_midcast(spell, action, spellMap, eventArgs)
  361. -- Effectively lock these items in place.
  362. if state.DefenseMode == 'Reraise' or
  363. (state.Defense.Active and state.Defense.Type == 'Physical' and state.Defense.PhysicalMode == 'Reraise') then
  364. equip(sets.Reraise)
  365. end
  366. end
  367.  
  368. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  369. function job_aftercast(spell, action, spellMap, eventArgs)
  370. if not spell.interrupted then
  371. if state.Buff[spell.english] ~= nil then
  372. state.Buff[spell.english] = true
  373. end
  374. end
  375. end
  376.  
  377.  
  378. -------------------------------------------------------------------------------------------------------------------
  379. -- Customization hooks for idle and melee sets, after they've been automatically constructed.
  380. -------------------------------------------------------------------------------------------------------------------
  381.  
  382. -------------------------------------------------------------------------------------------------------------------
  383. -- General hooks for other events.
  384. -------------------------------------------------------------------------------------------------------------------
  385.  
  386. -- Called when a player gains or loses a buff.
  387. -- buff == buff gained or lost
  388. -- gain == true if the buff was gained, false if it was lost.
  389. function job_buff_change(buff, gain)
  390. if state.Buff[buff] ~= nil then
  391. state.Buff[buff] = gain
  392. end
  393. end
  394.  
  395. -- Called when the player's subjob changes.
  396. function sub_job_change(newSubjob, oldSubjob)
  397. select_default_macro_book()
  398. end
  399.  
  400. -------------------------------------------------------------------------------------------------------------------
  401. -- User code that supplements self-commands.
  402. -------------------------------------------------------------------------------------------------------------------
  403.  
  404. -- Called by the 'update' self-command, for common needs.
  405. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  406. function job_update(cmdParams, eventArgs)
  407. function check_range_lock()
  408. if player.equipment.range ~= 'Hangaku-no-Yumi' then
  409. enable('range', 'ammo')
  410. else
  411. disenable('range', 'ammo')
  412. end
  413. end
  414. state.CombatForm = get_combat_form()
  415. end
  416. -- Set eventArgs.handled to true if we don't want the automatic display to be run.
  417. function display_current_job_state(eventArgs)
  418. end
  419.  
  420. function job_handle_equipping_gear(status, eventArgs)
  421. function check_range_lock()
  422. if player.equipment.range ~= 'Hangaku-no-Yumi' then
  423. enable('range', 'ammo')
  424. else
  425. disable('range', 'ammo')
  426. end
  427. end
  428. end
  429. -------------------------------------------------------------------------------------------------------------------
  430. -- Utility functions specific to this job.
  431. -------------------------------------------------------------------------------------------------------------------
  432.  
  433. function get_combat_form()
  434. if areas.Adoulin:contains(world.area) and buffactive.ionis then
  435. return 'Adoulin'
  436. end
  437. end
  438.  
  439.  
  440. -- Select default macro book on initial load or subjob change.
  441. function select_default_macro_book()
  442. -- Default macro set/book
  443. if player.sub_job == 'WAR' then
  444. set_macro_page(1, 12)
  445. elseif player.sub_job == 'DNC' then
  446. set_macro_page(3, 12)
  447. elseif player.sub_job == 'THF' then
  448. set_macro_page(3, 11)
  449. elseif player.sub_job == 'NIN' then
  450. set_macro_page(2, 12)
  451. else
  452. set_macro_page(1, 12)
  453. end
  454. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement