Advertisement
Guest User

Untitled

a guest
Oct 25th, 2014
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.17 KB | None | 0 0
  1. include('perfectbob')
  2. -------------------------------------------------------------------------------------------------------------------
  3. -- Setup functions for this job. Generally should not be modified.
  4. -------------------------------------------------------------------------------------------------------------------
  5.  
  6. -- Initialization function for this job file.
  7. function get_sets()
  8. mote_include_version = 2
  9.  
  10. -- Load and initialize the include file.
  11. include('Mote-Include.lua')
  12. end
  13.  
  14.  
  15. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  16. function job_setup()
  17. state.Buff.Migawari = buffactive.migawari or false
  18. state.Buff.Doom = buffactive.doom or false
  19. state.Buff.Yonin = buffactive.Yonin or false
  20. state.Buff.Innin = buffactive.Innin or false
  21. state.Buff.Futae = buffactive.Futae or false
  22.  
  23. determine_haste_group()
  24. end
  25.  
  26. -------------------------------------------------------------------------------------------------------------------
  27. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  28. -------------------------------------------------------------------------------------------------------------------
  29.  
  30. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  31. function user_setup()
  32. state.OffenseMode:options('Normal', 'Acc')
  33. state.HybridMode:options('Normal', 'Evasion', 'PDT')
  34. state.WeaponskillMode:options('Normal', 'Acc', 'Mod')
  35. state.CastingMode:options('Normal', 'Resistant')
  36. state.PhysicalDefenseMode:options('PDT', 'Evasion')
  37.  
  38. gear.MovementFeet = {name="Danzo Sune-ate"}
  39. gear.DayFeet = "Danzo Sune-ate"
  40. gear.NightFeet = "Hachiya Kyahan +1"
  41.  
  42. select_movement_feet()
  43. select_default_macro_book()
  44. end
  45.  
  46.  
  47. -- Define sets and vars used by this job file.
  48. function init_gear_sets()
  49. --------------------------------------
  50. -- Precast sets
  51. --------------------------------------
  52.  
  53. -- Precast sets to enhance JAs
  54. sets.precast.JA['Mijin Gakure'] = {legs="Mochizuki Hakama +1",main="Nagi",ammo="Reacton Arm"}
  55. sets.precast.JA['Futae'] = {legs="Iga Tekko +2"}
  56. sets.precast.JA['Sange'] = {legs="Mochizuki Chainmail"}
  57.  
  58. -- Waltz set (chr and vit)
  59. sets.precast.Waltz = {ammo="Sonia's Plectrum",
  60. head="Felistris Mask",
  61. body="Hachiya Chainmail +1",hands="Buremte Gloves",ring1="Spiral Ring",
  62. back="Iximulew Cape",waist="Caudata Belt",legs="Nahtirah Trousers",feet="Otronif Boots +1"}
  63. -- Uk'uxkaj Cap, Daihanshi Habaki
  64.  
  65. -- Don't need any special gear for Healing Waltz.
  66. sets.precast.Waltz['Healing Waltz'] = {}
  67.  
  68. -- Set for acc on steps, since Yonin drops acc a fair bit
  69. sets.precast.Step = {
  70. head="Whirlpool Mask",neck="Ej Necklace",
  71. body="Otronif Harness +1",hands="Buremte Gloves",ring1="Patricius Ring",
  72. back="Yokaze Mantle",waist="Chaac Belt",legs="Manibozho Brais",feet="Otronif Boots +1"}
  73.  
  74. sets.precast.Flourish1 = {waist="Chaac Belt"}
  75.  
  76. -- Fast cast sets for spells
  77.  
  78. sets.precast.FC = {ammo="Impatiens",body="Mochizuki Chainmail +1",ear2="Loquacious Earring",hands="Thaumas Gloves",ring1="Prolix Ring",ring2="Veneficium Ring"}
  79. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads",body="Mochizuki Chainmail"})
  80.  
  81. -- Snapshot for ranged
  82. sets.precast.RA = {hands="Manibozho Gloves",legs="Nahtirah Trousers",feet="Wurrukatte Boots"}
  83.  
  84. -- Weaponskill sets
  85. -- Default set for any weaponskill that isn't any more specifically defined
  86. sets.precast.WS = {ammo="Fracas Grenade",
  87. head="Whirlpool Mask",neck=gear.ElementalGorget,ear1="Trux Earring",ear2="Brutal Earring",
  88. body="Hachiya Chainmail +1",hands="Mochizuki Tekko +1",ring1="Rajas Ring",ring2="Epona's Ring",
  89. back="Atheling Mantle",waist=gear.ElementalBelt,legs="Manibozho Brais",feet="Otronif Boots +1"}
  90. sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Jukukik Feather",hands="Buremte Gloves",
  91. back="Yokaze Mantle"})
  92.  
  93. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  94. sets.precast.WS['Blade: Jin'] = set_combine(sets.precast.WS,
  95. {neck="Rancor Collar",ear1="Brutal Earring",ear2="Moonshade Earring",feet="Daihanshi Habaki"})
  96.  
  97. sets.precast.WS['Blade: Hi'] = set_combine(sets.precast.WS,
  98. {head="Uk'uxkaj Cap",hands="Hachiya Tekko +1",ring1="Stormsoul Ring",legs="Mochizuki Hakama +1",ammo="Yetshila",ear1="Moonshade Earring",feet="Mochizuki Kyahan +1"})
  99.  
  100. sets.precast.WS['Blade: Shun'] = set_combine(sets.precast.WS, {feet="Daihanshi Habaki"})
  101.  
  102.  
  103. sets.precast.WS['Aeolian Edge'] = {
  104. head="Wayfarer Circlet",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Moonshade Earring",
  105. body="Wayfarer Robe",hands="Wayfarer Cuffs",ring1="Acumen Ring",ring2="Demon's Ring",
  106. back="Toro Cape",waist="Thunder Belt",legs="Shneddick Tights +1",feet="Daihanshi Habaki"}
  107.  
  108.  
  109. --------------------------------------
  110. -- Midcast sets
  111. --------------------------------------
  112.  
  113. sets.midcast.FastRecast = {
  114. head="Felistris Mask",ear2="Loquacious Earring",
  115. body="Hachiya Chainmail +1",hands="Mochizuki Tekko",ring1="Prolix Ring",
  116. legs="Hachiya Hakama",feet="Qaaxo Leggings"}
  117.  
  118. sets.midcast.Utsusemi = set_combine(sets.midcast.SelfNinjutsu, {feet="Iga Kyahan +2"})
  119.  
  120. sets.midcast.ElementalNinjutsu = {
  121. head="Hachiya Hatsuburi",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
  122. body="Hachiya Chainmail +1",hands="Iga Tekko +2",ring1="Icesoul Ring",ring2="Acumen Ring",
  123. back="Toro Cape",waist=gear.ElementalObi,legs="Nahtirah Trousers",feet="Hachiya Kyahan"}
  124.  
  125. sets.midcast.ElementalNinjutsu.Resistant = set_combine(sets.midcast.Ninjutsu, {ear1="Lifestorm Earring",ear2="Psystorm Earring",
  126. back="Yokaze Mantle"})
  127.  
  128. sets.midcast.NinjutsuDebuff = {
  129. head="Hachiya Hatsuburi",neck="Stoicheion Medal",ear1="Lifestorm Earring",ear2="Psystorm Earring",
  130. hands="Mochizuki Tekko",ring2="Sangoma Ring",
  131. back="Yokaze Mantle",feet="Hachiya Kyahan"}
  132.  
  133. sets.midcast.NinjutsuBuff = {head="Hachiya Hatsuburi",neck="Ej Necklace",back="Yokaze Mantle"}
  134.  
  135. sets.midcast.RA = {
  136. head="Felistris Mask",neck="Ej Necklace",
  137. body="Hachiya Chainmail +1",hands="Hachiya Tekko",ring1="Beeline Ring",
  138. back="Yokaze Mantle",legs="Nahtirah Trousers",feet="Qaaxo Leggings"}
  139. -- Hachiya Hakama/Thurandaut Tights +1
  140.  
  141. --------------------------------------
  142. -- Idle/resting/defense/etc sets
  143. --------------------------------------
  144.  
  145. -- Resting sets
  146. sets.resting = {head="Ocelomeh Headpiece +1",neck="Wiglen Gorget",
  147. ring1="Sheltered Ring",ring2="Paguroidea Ring"}
  148.  
  149. -- Idle sets
  150. sets.idle = {
  151. head="Whirlpool Mask",neck="Wiglen Gorget",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  152. body="Hachiya Chainmail +1",hands="Otronif Gloves",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  153. back="Shadow Mantle",waist="Flume Belt",legs="Hachiya Hakama",feet=gear.MovementFeet}
  154.  
  155. sets.idle.Town = {main="Nagi",sub="Taikogane",ammo="Togakushi Shuriken",
  156. head="Whirlpool Mask",neck="Hope Torque",ear1="Trux Earring",ear2="Brutal Earring",
  157. body="Hachiya Chainmail +1",hands="Otronif Gloves +1",ring1="Sheltered Ring",ring2="Epona's Ring",
  158. back="Mecisto. Mantle",waist="Windbuffet Belt +1",legs="Mochizuki Hakama +1",feet=gear.MovementFeet}
  159.  
  160. sets.idle.Weak = {
  161. head="Whirlpool Mask",neck="Wiglen Gorget",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  162. body="Hachiya Chainmail +1",hands="Otronif Gloves",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  163. back="Shadow Mantle",waist="Flume Belt",legs="Hachiya Hakama",feet=gear.MovementFeet}
  164.  
  165. -- Defense sets
  166. sets.defense.Evasion = {
  167. head="Felistris Mask",neck="Ej Necklace",
  168. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="Beeline Ring",
  169. back="Yokaze Mantle",waist="Flume Belt",legs="Nahtirah Trousers",feet="Otronif Boots +1"}
  170.  
  171. sets.defense.PDT = {ammo="Iron Gobbet",
  172. head="Whirlpool Mask",neck="Twilight Torque",
  173. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2=gear.DarkRing.physical,
  174. back="Shadow Mantle",waist="Flume Belt",legs="Nahtirah Trousers",feet="Otronif Boots +1"}
  175.  
  176. sets.defense.MDT = {ammo="Demonry Stone",
  177. head="Whirlpool Mask",neck="Twilight Torque",
  178. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="Shadow Ring",
  179. back="Engulfer Cape",waist="Flume Belt",legs="Nahtirah Trousers",feet="Otronif Boots +1"}
  180.  
  181.  
  182. sets.Kiting = {feet=gear.MovementFeet}
  183.  
  184.  
  185. --------------------------------------
  186. -- Engaged sets
  187. --------------------------------------
  188.  
  189. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  190. -- sets if more refined versions aren't defined.
  191. -- If you create a set with both offense and defense modes, the offense mode should be first.
  192. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  193.  
  194. -- Normal melee group
  195. sets.engaged = {ammo="Togakushi Shuriken",
  196. head="Iga Zukin +2",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  197. body="Hachiya Chainmail +1",hands="Otronif Gloves +1",ring1="Oneiros Ring",ring2="Epona's Ring",
  198. back="Atheling Mantle",waist="Windbuffet Belt +1",legs="Mochizuki Hakama +1",feet="Otronif Boots +1"}
  199. sets.engaged.Acc = {ammo="Qirmiz Tathlum",
  200. head="Whirlpool Mask",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  201. body="Mochizuki Chainmail",hands="Otronif Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
  202. back="Yokaze Mantle",waist="Hurch'lan Sash",legs="Hachiya Hakama",feet="Manibozho Boots"}
  203. sets.engaged.Evasion = {ammo="Qirmiz Tathlum",
  204. head="Felistris Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  205. body="Hachiya Chainmail +1",hands="Otronif Gloves",ring1="Beeline Ring",ring2="Epona's Ring",
  206. back="Yokaze Mantle",waist="Patentia Sash",legs="Hachiya Hakama",feet="Otronif Boots +1"}
  207. sets.engaged.Acc.Evasion = {ammo="Qirmiz Tathlum",
  208. head="Whirlpool Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  209. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Beeline Ring",ring2="Epona's Ring",
  210. back="Yokaze Mantle",waist="Hurch'lan Sash",legs="Hachiya Hakama",feet="Otronif Boots +1"}
  211. sets.engaged.PDT = {ammo="Qirmiz Tathlum",
  212. head="Felistris Mask",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  213. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="Epona's Ring",
  214. back="Yokaze Mantle",waist="Patentia Sash",legs="Hachiya Hakama",feet="Otronif Boots +1"}
  215. sets.engaged.Acc.PDT = {ammo="Qirmiz Tathlum",
  216. head="Whirlpool Mask",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  217. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="Epona's Ring",
  218. back="Yokaze Mantle",waist="Hurch'lan Sash",legs="Hachiya Hakama",feet="Otronif Boots +1"}
  219.  
  220. -- Custom melee group: High Haste (~20% DW)
  221. sets.engaged.HighHaste = {ammo="Togakushi Shuriken",
  222. head="Whirlpool Mask",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  223. body="Hachiya Chainmail +1",hands="Otronif Gloves +1",ring1="Oneiros Ring",ring2="Epona's Ring",
  224. back="Atheling Mantle",waist="Windbuffet Belt +1",legs="Hachiya Hakama +1",feet="Otronif Boots +1"}
  225. sets.engaged.Acc.HighHaste = {ammo="Qirmiz Tathlum",
  226. head="Whirlpool Mask",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  227. body="Mochizuki Chainmail",hands="Otronif Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
  228. back="Yokaze Mantle",waist="Hurch'lan Sash",legs="Hachiya Hakama",feet="Manibozho Boots"}
  229. sets.engaged.Evasion.HighHaste = {ammo="Qirmiz Tathlum",
  230. head="Whirlpool Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  231. body="Hachiya Chainmail +1",hands="Otronif Gloves",ring1="Beeline Ring",ring2="Epona's Ring",
  232. back="Yokaze Mantle",waist="Patentia Sash",legs="Hachiya Hakama",feet="Otronif Boots +1"}
  233. sets.engaged.Acc.Evasion.HighHaste = {ammo="Qirmiz Tathlum",
  234. head="Whirlpool Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  235. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Beeline Ring",ring2="Epona's Ring",
  236. back="Yokaze Mantle",waist="Hurch'lan Sash",legs="Hachiya Hakama",feet="Otronif Boots +1"}
  237. sets.engaged.PDT.HighHaste = {ammo="Qirmiz Tathlum",
  238. head="Whirlpool Mask",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  239. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="Epona's Ring",
  240. back="Yokaze Mantle",waist="Patentia Sash",legs="Hachiya Hakama",feet="Otronif Boots +1"}
  241. sets.engaged.Acc.PDT.HighHaste = {ammo="Qirmiz Tathlum",
  242. head="Whirlpool Mask",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  243. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="Epona's Ring",
  244. back="Yokaze Mantle",waist="Hurch'lan Sash",legs="Hachiya Hakama",feet="Otronif Boots +1"}
  245.  
  246. -- Custom melee group: Embrava Haste (7% DW)
  247. sets.engaged.EmbravaHaste = {ammo="Togakushi Shuriken",
  248. head="Whirlpool Mask",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  249. body="Thaumas Coat",hands="Otronif Gloves +1",ring1="Oneiros Ring",ring2="Epona's Ring",
  250. back="Atheling Mantle",waist="Windbuffet Belt +1",legs="Otronif Brais +1",feet="Otronif Boots +1"}
  251. sets.engaged.Acc.EmbravaHaste = {ammo="Qirmiz Tathlum",
  252. head="Whirlpool Mask",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  253. body="Mochizuki Chainmail",hands="Otronif Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
  254. back="Yokaze Mantle",waist="Hurch'lan Sash",legs="Manibozho Brais",feet="Manibozho Boots"}
  255. sets.engaged.Evasion.EmbravaHaste = {ammo="Qirmiz Tathlum",
  256. head="Whirlpool Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  257. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Beeline Ring",ring2="Epona's Ring",
  258. back="Yokaze Mantle",waist="Windbuffet Belt",legs="Hachiya Hakama",feet="Otronif Boots +1"}
  259. sets.engaged.Acc.Evasion.EmbravaHaste = {ammo="Qirmiz Tathlum",
  260. head="Whirlpool Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  261. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Beeline Ring",ring2="Epona's Ring",
  262. back="Yokaze Mantle",waist="Hurch'lan Sash",legs="Hachiya Hakama",feet="Otronif Boots +1"}
  263. sets.engaged.PDT.EmbravaHaste = {ammo="Qirmiz Tathlum",
  264. head="Whirlpool Mask",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  265. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="Epona's Ring",
  266. back="Yokaze Mantle",waist="Windbuffet Belt",legs="Manibozho Brais",feet="Otronif Boots +1"}
  267. sets.engaged.Acc.PDT.EmbravaHaste = {ammo="Qirmiz Tathlum",
  268. head="Whirlpool Mask",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  269. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="Epona's Ring",
  270. back="Yokaze Mantle",waist="Hurch'lan Sash",legs="Manibozho Brais",feet="Otronif Boots +1"}
  271.  
  272. -- Custom melee group: Max Haste (0% DW)
  273. sets.engaged.MaxHaste = {ammo="Togakushi Shuriken",
  274. head="Whirlpool Mask",neck="Asperity Necklace",ear1="Trux Earring",ear2="Brutal Earring",
  275. body="Thaumas Coat",hands="Otronif Gloves +1",ring1="Oneiros Ring",ring2="Epona's Ring",
  276. back="Atheling Mantle",waist="Windbuffet Belt +1",legs="Otronif Brais +1",feet="Otronif Boots +1"}
  277. sets.engaged.Acc.MaxHaste = {ammo="Qirmiz Tathlum",
  278. head="Whirlpool Mask",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  279. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
  280. back="Yokaze Mantle",waist="Hurch'lan Sash",legs="Manibozho Brais",feet="Manibozho Boots"}
  281. sets.engaged.Evasion.MaxHaste = {ammo="Qirmiz Tathlum",
  282. head="Whirlpool Mask",neck="Ej Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  283. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Beeline Ring",ring2="Epona's Ring",
  284. back="Yokaze Mantle",waist="Windbuffet Belt",legs="Hachiya Hakama",feet="Otronif Boots +1"}
  285. sets.engaged.Acc.Evasion.MaxHaste = {ammo="Qirmiz Tathlum",
  286. head="Whirlpool Mask",neck="Ej Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  287. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Beeline Ring",ring2="Epona's Ring",
  288. back="Yokaze Mantle",waist="Hurch'lan Sash",legs="Hachiya Hakama",feet="Otronif Boots +1"}
  289. sets.engaged.PDT.MaxHaste = {ammo="Qirmiz Tathlum",
  290. head="Whirlpool Mask",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  291. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="Epona's Ring",
  292. back="Yokaze Mantle",waist="Windbuffet Belt",legs="Manibozho Brais",feet="Otronif Boots +1"}
  293. sets.engaged.Acc.PDT.MaxHaste = {ammo="Qirmiz Tathlum",
  294. head="Whirlpool Mask",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  295. body="Otronif Harness +1",hands="Otronif Gloves",ring1="Defending Ring",ring2="Epona's Ring",
  296. back="Yokaze Mantle",waist="Hurch'lan Sash",legs="Manibozho Brais",feet="Otronif Boots +1"}
  297.  
  298.  
  299. --------------------------------------
  300. -- Custom buff sets
  301. --------------------------------------
  302.  
  303. sets.buff.Migawari = {body="Iga Ningi +2"}
  304. sets.buff.Doom = {ring2="Saida Ring"}
  305. sets.buff.Yonin = {}
  306. sets.buff.Innin = {}
  307. end
  308.  
  309. -------------------------------------------------------------------------------------------------------------------
  310. -- Job-specific hooks for standard casting events.
  311. -------------------------------------------------------------------------------------------------------------------
  312.  
  313. -- Run after the general midcast() is done.
  314. -- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
  315. function job_post_midcast(spell, action, spellMap, eventArgs)
  316. if state.Buff.Doom then
  317. equip(sets.buff.Doom)
  318. end
  319. end
  320.  
  321.  
  322. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  323. function job_aftercast(spell, action, spellMap, eventArgs)
  324. if not spell.interrupted and spell.english == "Migawari: Ichi" then
  325. state.Buff.Migawari = true
  326. end
  327. end
  328.  
  329. -------------------------------------------------------------------------------------------------------------------
  330. -- Job-specific hooks for non-casting events.
  331. -------------------------------------------------------------------------------------------------------------------
  332.  
  333. -- Called when a player gains or loses a buff.
  334. -- buff == buff gained or lost
  335. -- gain == true if the buff was gained, false if it was lost.
  336. function job_buff_change(buff, gain)
  337. -- If we gain or lose any haste buffs, adjust which gear set we target.
  338. if S{'haste','march','embrava','haste samba'}:contains(buff:lower()) then
  339. determine_haste_group()
  340. handle_equipping_gear(player.status)
  341. elseif state.Buff[buff] ~= nil then
  342. handle_equipping_gear(player.status)
  343. end
  344. end
  345.  
  346. function job_status_change(new_status, old_status)
  347. if new_status == 'Idle' then
  348. select_movement_feet()
  349. end
  350. end
  351.  
  352.  
  353. -------------------------------------------------------------------------------------------------------------------
  354. -- User code that supplements standard library decisions.
  355. -------------------------------------------------------------------------------------------------------------------
  356.  
  357. -- Get custom spell maps
  358. function job_get_spell_map(spell, default_spell_map)
  359. if spell.skill == "Ninjutsu" then
  360. if not default_spell_map then
  361. if spell.target.type == 'SELF' then
  362. return 'NinjutsuBuff'
  363. else
  364. return 'NinjutsuDebuff'
  365. end
  366. end
  367. end
  368. end
  369.  
  370. -- Modify the default idle set after it was constructed.
  371. function customize_idle_set(idleSet)
  372. if state.Buff.Migawari then
  373. idleSet = set_combine(idleSet, sets.buff.Migawari)
  374. end
  375. if state.Buff.Doom then
  376. idleSet = set_combine(idleSet, sets.buff.Doom)
  377. end
  378. return idleSet
  379. end
  380.  
  381.  
  382. -- Modify the default melee set after it was constructed.
  383. function customize_melee_set(meleeSet)
  384. if state.Buff.Migawari then
  385. meleeSet = set_combine(meleeSet, sets.buff.Migawari)
  386. end
  387. if state.Buff.Doom then
  388. meleeSet = set_combine(meleeSet, sets.buff.Doom)
  389. end
  390. return meleeSet
  391. end
  392.  
  393. -- Called by the default 'update' self-command.
  394. function job_update(cmdParams, eventArgs)
  395. select_movement_feet()
  396. determine_haste_group()
  397. end
  398.  
  399. -------------------------------------------------------------------------------------------------------------------
  400. -- Utility functions specific to this job.
  401. -------------------------------------------------------------------------------------------------------------------
  402.  
  403. function determine_haste_group()
  404. -- We have three groups of DW in gear: Hachiya body/legs, Iga head + Patentia Sash, and DW earrings
  405.  
  406. -- Standard gear set reaches near capped delay with just Haste (77%-78%, depending on HQs)
  407.  
  408. -- For high haste, we want to be able to drop one of the 10% groups.
  409. -- Basic gear hits capped delay (roughly) with:
  410. -- 1 March + Haste
  411. -- 2 March
  412. -- Haste + Haste Samba
  413. -- 1 March + Haste Samba
  414. -- Embrava
  415.  
  416. -- High haste buffs:
  417. -- 2x Marches + Haste Samba == 19% DW in gear
  418. -- 1x March + Haste + Haste Samba == 22% DW in gear
  419. -- Embrava + Haste or 1x March == 7% DW in gear
  420.  
  421. -- For max haste (capped magic haste + 25% gear haste), we can drop all DW gear.
  422. -- Max haste buffs:
  423. -- Embrava + Haste+March or 2x March
  424. -- 2x Marches + Haste
  425.  
  426. -- So we want four tiers:
  427. -- Normal DW
  428. -- 20% DW -- High Haste
  429. -- 7% DW (earrings) - Embrava Haste (specialized situation with embrava and haste, but no marches)
  430. -- 0 DW - Max Haste
  431.  
  432. classes.CustomMeleeGroups:clear()
  433.  
  434. if buffactive.embrava and (buffactive.march == 2 or (buffactive.march and buffactive.haste)) then
  435. classes.CustomMeleeGroups:append('MaxHaste')
  436. elseif buffactive.march == 2 and buffactive.haste then
  437. classes.CustomMeleeGroups:append('MaxHaste')
  438. elseif buffactive.embrava and (buffactive.haste or buffactive.march) then
  439. classes.CustomMeleeGroups:append('EmbravaHaste')
  440. elseif buffactive.march == 1 and buffactive.haste and buffactive['haste samba'] then
  441. classes.CustomMeleeGroups:append('HighHaste')
  442. elseif buffactive.march == 2 then
  443. classes.CustomMeleeGroups:append('HighHaste')
  444. end
  445. end
  446.  
  447.  
  448. function select_movement_feet()
  449. if world.time >= 17*60 or world.time < 7*60 then
  450. gear.MovementFeet.name = gear.NightFeet
  451. else
  452. gear.MovementFeet.name = gear.DayFeet
  453. end
  454. end
  455.  
  456.  
  457. -- Select default macro book on initial load or subjob change.
  458. function select_default_macro_book()
  459. -- Default macro set/book
  460. if player.sub_job == 'DNC' then
  461. set_macro_page(4, 3)
  462. elseif player.sub_job == 'THF' then
  463. set_macro_page(5, 3)
  464. else
  465. set_macro_page(1, 3)
  466. end
  467. end
  468.  
  469. goal_tp = 3000
  470. if buffactive['aftermath: lv.3'] then
  471. AM_start = os.clock()
  472. else
  473. AM_start = 0
  474. end
  475.  
  476.  
  477. function job_self_command(command,eventargs)
  478. eventargs.handled = pb.self_command(table.concat(command, ' '))
  479. end
  480.  
  481.  
  482. function user_pb_function()
  483. local koruflag, ulmiaflag, kupipiflag = false, false, false
  484.  
  485. for i,character in pairs(alliance[1]) do
  486. if character.name == 'Kupipi' and character.mpp < 25 and not pbuser.Engaged and pbuser.Number_of_Enemies == 0 then
  487. windower.send_command('gs c run stop;input /retr kupipi;wait 8;kupipi;wait 4;gs c run start')
  488. return
  489. elseif character.name == 'Ulmia' and character.mpp < 25 and not pbuser.Engaged and pbuser.Number_of_Enemies == 0 then
  490. windower.send_command('gs c run stop;input /retr Ulmia;wait 8;Ulmia;wait 4;gs c run start')
  491. return
  492. elseif character.name == 'Koru-Moru' and character.mpp < 25 and not pbuser.Engaged and pbuser.Number_of_Enemies == 0 then
  493. windower.send_command('gs c run stop;input /retr Koru-Moru;wait 8;Koru-Moru;wait 4;gs c run start')
  494. return
  495. end
  496. end
  497.  
  498. if player.target.type == 'MONSTER' and player.sub_job == 'WAR' and player.target.claim_id ~= player.id and pb.use_JA("Provoke",nil,0) then
  499. elseif not buffactive['Copy Image'] and not buffactive['Copy Image (2)'] and not buffactive['Copy Image (3)'] and not buffactive['Copy Image (4+)'] and pbuser.spell_recasts[339] < 1 then
  500. windower.send_command('input /ma "Utsusemi: Ni" <me>;')
  501. elseif player.target.type == 'MONSTER' and player.target.hpp > 35 and player.tp == 3000 and not buffactive['aftermath: lv.3'] and pb.use_WS("Blade: Kamu",nil,3) then
  502. AM_start = os.clock()
  503. elseif player.target.type == 'MONSTER' and player.target.hpp > 35 and player.tp >= 1000 and buffactive['aftermath: lv.3'] and os.clock()-AM_start < 175 and pb.use_WS('Blade: Hi',nil,3) then
  504. elseif not buffactive['Berserk'] and player.sub_job == 'WAR' and pb.use_JA('Berserk',nil,0) then
  505. elseif not buffactive['Warcry'] and player.sub_job == 'WAR' and pb.use_JA('Warcry',nil,0) then
  506. end
  507. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement