Advertisement
Guest User

Untitled

a guest
Feb 3rd, 2015
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.41 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job. Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. -- Initialization function for this job file.
  6. function get_sets()
  7. mote_include_version = 2
  8.  
  9. -- Load and initialize the include file.
  10. include('Mote-Include.lua')
  11. end
  12.  
  13.  
  14. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  15. function job_setup()
  16. state.Buff.Barrage = buffactive.Barrage or false
  17. state.Buff.Camouflage = buffactive.Camouflage or false
  18. state.Buff['Unlimited Shot'] = buffactive['Unlimited Shot'] or false
  19. end
  20.  
  21. -------------------------------------------------------------------------------------------------------------------
  22. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  23. -------------------------------------------------------------------------------------------------------------------
  24.  
  25. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  26. function user_setup()
  27. state.RangedMode:options('Normal', 'Mid', 'Acc')
  28. state.WeaponskillMode:options('Normal', 'Acc')
  29.  
  30. gear.default.weaponskill_neck = "Ocachi Gorget"
  31. gear.default.weaponskill_waist = "Elanid Belt"
  32.  
  33. DefaultAmmo = {['Yoichinoyumi'] = "Achiyalabopa arrow", ['Annihilator'] = "Achiyalabopa bullet"}
  34. U_Shot_Ammo = {['Yoichinoyumi'] = "Achiyalabopa arrow", ['Annihilator'] = "Achiyalabopa bullet"}
  35.  
  36. select_default_macro_book()
  37.  
  38. send_command('bind f9 gs c cycle RangedMode')
  39. send_command('bind ^f9 gs c cycle OffenseMode')
  40. send_command('bind ` input /ra <t>')
  41. send_command('bind delete input /ws "Coronach" <t>')
  42. send_command('bind end input /ws "Last Stand" <t>')
  43. send_command('bind home input /ws "Namas Arrow" <t>')
  44. end
  45.  
  46.  
  47. -- Called when this job file is unloaded (eg: job change)
  48. function user_unload()
  49. send_command('unbind f9')
  50. send_command('unbind ^f9')
  51. send_command('unbind `')
  52. send_command('unbind ^-')
  53. send_command('unbind ^=')
  54. send_command('unbind delete')
  55. send_command('unbind end')
  56. send_command('unbind home')
  57. end
  58.  
  59. -------------------------------------------------------------------------------------------------------------------
  60. -- Job-specific hooks for standard casting events.
  61. -------------------------------------------------------------------------------------------------------------------
  62.  
  63. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  64. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  65. function job_precast(spell, action, spellMap, eventArgs)
  66. if spell.action_type == 'Ranged Attack' then
  67. state.CombatWeapon:set(player.equipment.range)
  68. end
  69.  
  70. if spell.action_type == 'Ranged Attack' or
  71. (spell.type == 'WeaponSkill' and (spell.skill == 'Marksmanship' or spell.skill == 'Archery')) then
  72. check_ammo(spell, action, spellMap, eventArgs)
  73. end
  74.  
  75. if state.DefenseMode.value ~= 'None' and spell.type == 'WeaponSkill' then
  76. -- Don't gearswap for weaponskills when Defense is active.
  77. eventArgs.handled = true
  78. end
  79. end
  80.  
  81.  
  82. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  83. function job_midcast(spell, action, spellMap, eventArgs)
  84. if spell.action_type == 'Ranged Attack' and state.Buff.Barrage then
  85. equip(sets.buff.Barrage)
  86. eventArgs.handled = true
  87. end
  88. end
  89.  
  90. -------------------------------------------------------------------------------------------------------------------
  91. -- Job-specific hooks for non-casting events.
  92. -------------------------------------------------------------------------------------------------------------------
  93.  
  94. -- Called when a player gains or loses a buff.
  95. -- buff == buff gained or lost
  96. -- gain == true if the buff was gained, false if it was lost.
  97. function job_buff_change(buff, gain)
  98. if buff == "Camouflage" then
  99. if gain then
  100. equip(sets.buff.Camouflage)
  101. disable('body')
  102. else
  103. enable('body')
  104. end
  105. end
  106. end
  107.  
  108. -------------------------------------------------------------------------------------------------------------------
  109. -- User code that supplements standard library decisions.
  110. -------------------------------------------------------------------------------------------------------------------
  111. function customize_idle_set(idleSet)
  112. if player.hpp < 80 then
  113. idleSet = set_combine(idleSet, sets.ExtraRegen)
  114. end
  115.  
  116. return idleSet
  117. end
  118.  
  119. -- Set eventArgs.handled to true if we don't want the automatic display to be run.
  120. function display_current_job_state(eventArgs)
  121.  
  122. end
  123.  
  124. -------------------------------------------------------------------------------------------------------------------
  125. -- Utility functions specific to this job.
  126. -------------------------------------------------------------------------------------------------------------------
  127.  
  128. -- Check for proper ammo when shooting or weaponskilling
  129. function check_ammo(spell, action, spellMap, eventArgs)
  130. -- Filter ammo checks depending on Unlimited Shot
  131. if state.Buff['Unlimited Shot'] then
  132. if player.equipment.ammo ~= U_Shot_Ammo[player.equipment.range] then
  133. if player.inventory[U_Shot_Ammo[player.equipment.range]] or player.wardrobe[U_Shot_Ammo[player.equipment.range]] then
  134. add_to_chat(122,"Unlimited Shot active. Using custom ammo.")
  135. equip({ammo=U_Shot_Ammo[player.equipment.range]})
  136. elseif player.inventory[DefaultAmmo[player.equipment.range]] or player.wardrobe[DefaultAmmo[player.equipment.range]] then
  137. add_to_chat(122,"Unlimited Shot active but no custom ammo available. Using default ammo.")
  138. equip({ammo=DefaultAmmo[player.equipment.range]})
  139. else
  140. add_to_chat(122,"Unlimited Shot active but unable to find any custom or default ammo.")
  141. end
  142. end
  143. else
  144. if player.equipment.ammo == U_Shot_Ammo[player.equipment.range] and player.equipment.ammo ~= DefaultAmmo[player.equipment.range] then
  145. if DefaultAmmo[player.equipment.range] then
  146. if player.inventory[DefaultAmmo[player.equipment.range]] then
  147. add_to_chat(122,"Unlimited Shot not active. Using Default Ammo")
  148. equip({ammo=DefaultAmmo[player.equipment.range]})
  149. else
  150. add_to_chat(122,"Default ammo unavailable. Removing Unlimited Shot ammo.")
  151. equip({ammo=empty})
  152. end
  153. else
  154. add_to_chat(122,"Unable to determine default ammo for current weapon. Removing Unlimited Shot ammo.")
  155. equip({ammo=empty})
  156. end
  157. elseif player.equipment.ammo == 'empty' then
  158. if DefaultAmmo[player.equipment.range] then
  159. if player.inventory[DefaultAmmo[player.equipment.range]] then
  160. add_to_chat(122,"Using Default Ammo")
  161. equip({ammo=DefaultAmmo[player.equipment.range]})
  162. else
  163. add_to_chat(122,"Default ammo unavailable. Leaving empty.")
  164. end
  165. else
  166. add_to_chat(122,"Unable to determine default ammo for current weapon. Leaving empty.")
  167. end
  168. elseif player.inventory[player.equipment.ammo].count < 15 then
  169. add_to_chat(122,"Ammo '"..player.inventory[player.equipment.ammo].shortname.."' running low ("..player.inventory[player.equipment.ammo].count..")")
  170. end
  171. end
  172. end
  173.  
  174.  
  175.  
  176. -- Select default macro book on initial load or subjob change.
  177. function select_default_macro_book()
  178. set_macro_page(1, 3)
  179. end
  180.  
  181. -- Set up all gear sets.
  182. function init_gear_sets()
  183. --------------------------------------
  184. -- Precast sets
  185. --------------------------------------
  186.  
  187. -- Precast sets to enhance JAs
  188. sets.precast.JA['Bounty Shot'] = {hands="Sylvan Glovelettes +2"}
  189. sets.precast.JA['Camouflage'] = {body="Orion Jerkin +1"}
  190. sets.precast.JA['Scavenge'] = {feet="Orion Socks +1"}
  191. sets.precast.JA['Shadowbind'] = {hands="Orion Bracers +1"}
  192. sets.precast.JA['Sharpshot'] = {legs="Orion Braccae +1"}
  193.  
  194.  
  195. -- Fast cast sets for spells
  196.  
  197. sets.precast.FC = {ear2="Loquacious Earring",hands="Thaumas Gloves",ring1="Prolix Ring"}
  198.  
  199. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  200.  
  201.  
  202. -- Ranged sets (snapshot)
  203.  
  204. sets.precast.RA = {
  205. head="Orion Beret +1",body="Sylvan Caban +2",hands="Iuitl Wristbands",waist="Impulse Belt",legs="Nahtirah Trousers",feet="Wurrukatte Boots",back="Lutian Cape"}
  206.  
  207.  
  208. -- Weaponskill sets
  209. -- Default set for any weaponskill that isn't any more specifically defined
  210. sets.precast.WS = {
  211. head="Arcadian Beret +1",ear1="Vulcan's Pearl",ear2="Vulcan's Pearl",
  212. body="Kyujutsugi",hands="Arcadian Bracers +1",ring1="Ifrit Ring +1",ring2="Ifrit Ring +1",
  213. back="Sylvan Chlamys",waist=gear.ElementalBelt,legs="Nahtirah Trousers",feet="Orion Socks +1"}
  214.  
  215. sets.precast.WS.Acc = set_combine(sets.precast.WS, {body="Kyujutsugi",ring1="Hajduk Ring +1",
  216. back="Lutian Cape",legs="Arcadian Braccae +1"})
  217.  
  218. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  219. sets.precast.WS.Coronach = set_combine(sets.precast.WS, {neck="Breeze Gorget",waist="Breeze Belt",})
  220.  
  221. sets.precast.WS['Last Stand'] = set_combine(sets.precast.WS, {
  222. neck="Light Gorget",ear1="Moonshade Earring",ear2="Auster's Pearl",
  223. ring1="Garuda Ring",ring2="Garuda Ring",back="Lutian Cape",waist="Light Belt"})
  224.  
  225. sets.precast.WS.Wildfire = set_combine(sets.precast.WS, {
  226. head="Fugacity Beret",ear1="Friomisi Earring",ear2="Novio Earring",
  227. body="Orion Jerkin +1",hands="Orion Bracers +1",ring1="Garuda Ring",ring2="Garuda Ring",
  228. back="Argochampsa Mantle",waist="Yamabuki-no-obi",legs="Shneddick Tights +1",feet={name="Qaaxo Leggings", augments={'Attack+15','Mag.Atk.Bns+15','STR+12'}}})
  229.  
  230. sets.precast.WS['Namas Arrow'] = set_combine(sets.precast.WS.Coronach, {neck="Light Gorget",waist="Light Belt"})
  231.  
  232. sets.precast.WS["Jishnu's Radiance"] = set_combine(sets.precast.WS['Namas Arrow'], {})
  233.  
  234.  
  235. --------------------------------------
  236. -- Midcast sets
  237. --------------------------------------
  238.  
  239. -- Fast recast for spells
  240.  
  241. sets.midcast.FastRecast = {
  242. head="Orion Beret +1",ear1="Loquacious Earring",ring1="Prolix Ring",waist="Goading Belt",legs="Orion Braccae +1",feet="Orion Socks +1"}
  243.  
  244. sets.midcast.Utsusemi = {}
  245.  
  246. -- Ranged sets
  247.  
  248. sets.midcast.RA = {
  249. head="Arcadian Beret +1",neck="Ocachi Gorget",ear1="Volley Earring",ear2="Tripudio Earring",
  250. body="Kyujutsugi",hands="Seiryu's Kote",ring1="Rajas Ring",ring2="Hajduk Ring +1",
  251. back="Lutian Cape",waist="Patentia Sash",legs="Nahtirah Trousers",feet="Orion Socks +1"}
  252.  
  253. sets.midcast.RA.Mid = set_combine(sets.midcast.RA,{neck="Gaudryi Necklace",ring1="Hajduk Ring",legs="Arcadian Braccae +1"})
  254.  
  255. sets.midcast.RA.Acc = set_combine(sets.midcast.RA.Mid,
  256. {head="Umbani Cap",ear2="Clearview Earring",ring1="Hajduk Ring",waist="Elanid Belt"})
  257.  
  258. sets.midcast.RA.Annihilator = set_combine(sets.midcast.RA)
  259.  
  260. sets.midcast.RA.Annihilator = set_combine(sets.midcast.RA.Mid)
  261.  
  262. sets.midcast.RA.Annihilator.Acc = set_combine(sets.midcast.RA.Acc)
  263.  
  264. sets.midcast.RA.Yoichinoyumi = sets.midcast.RA
  265.  
  266. sets.midcast.RA.Yoichinoyumi.Acc = sets.midcast.RA.Acc
  267.  
  268. --------------------------------------
  269. -- Idle/resting/defense/etc sets
  270. --------------------------------------
  271.  
  272. -- Sets to return to when not performing an action.
  273.  
  274. -- Resting sets
  275. sets.resting = {head="Ocelomeh Headpiece +1",neck="Wiglen Gorget",ring1="Sheltered Ring",ring2="Paguroidea Ring"}
  276. -- Kheper Jacket
  277.  
  278. -- Idle sets
  279. sets.idle = {
  280. head="Ocelomeh Headpiece +1",neck="Wiglen Gorget",ear1="Black Earring",ear2="Ethereal Earring",
  281. body="Mekosu. Harness",hands="Buremte Gloves",ring1="Paguroidea Ring",ring2="Sheltered Ring",
  282. back="Engulfer Cape +1",waist="Flume Belt",legs="Qaaxo Tights",feet="Skadi's Jambeaux +1"}
  283. -- Kheper Jacket
  284.  
  285. sets.idle.Town = {
  286. head="Orion Beret +1",neck="Wiglen Gorget",ear1="Volley Earring",ear2="Tripudio Earring",
  287. body="Mekosu. Harness",hands="Seiryu's Kote",ring1="Hajduk Ring +1",ring2="Rajas Ring",
  288. back="Engulfer Cape +1",waist="Flume Belt",legs="Nahtirah Trousers",feet="Skadi's Jambeaux +1"}
  289.  
  290. -- Defense sets
  291. sets.defense.PDT = {
  292. head="Iuitl Headgear +1",neck="Twilight Torque",ear1="Black Earring",ear2="Ethereal Earring",
  293. body="Iuitl Vest +1",hands="Umuthi Gloves",ring1="Defending Ring",ring2="Dark Ring",
  294. back="Repulse Mantle",waist="Flume Belt",legs="Qaaxo Tights",feet="Iuitl Gaiters +1"}
  295.  
  296. sets.defense.MDT = set_combine(sets.defense.PDT,{back="Engulfer Cape +1"})
  297.  
  298. sets.Kiting = {legs="Blood Cuisses",feet="Skadi's Jambeaux +1"}
  299. sets.ExtraRegen = {head="Ocelomeh Headpiece +1"}
  300.  
  301.  
  302. --------------------------------------
  303. -- Engaged sets
  304. --------------------------------------
  305.  
  306. sets.engaged = {
  307. head="Whirlpool Mask",neck="Twilight Torque",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  308. body="Orion Jerkin +1", hands="Arcadian Bracers +1", ring1="Defending Ring",
  309. back="Shadow Mantle",waist="Flume Belt",legs="Nahtirah Trousers",feet="Orion Socks +1"}
  310.  
  311. sets.engaged.Acc = {
  312. head="Whirlpool Mask",neck="Asperity Necklace",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  313. body="Manibozho Jerkin",hands="Iuitl Wristbands",ring1="K'ayres Ring",ring2="Rajas Ring",
  314. back="Letalis Mantle",waist="Windbuffet Belt",legs="Manibozho Brais",feet="Iuitl Gaiters"}
  315.  
  316. --------------------------------------
  317. -- Custom buff sets
  318. --------------------------------------
  319.  
  320. sets.buff.Barrage = set_combine(sets.midcast.RA.Acc, {hands="Orion Bracers +1",legs="Desultor Tassets"})
  321. sets.buff.Camouflage = {body="Orion Jerkin +1"}
  322. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement