Advertisement
Guest User

nin.lua

a guest
Sep 21st, 2016
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 24.43 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job.  Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4. --Some Global Variables
  5. hastetype=1
  6. hastesambatype=0
  7. hastetbl = S{'haste','march','geo-haste','indi-haste','embrava','haste samba','aftermath','mighty guard'}
  8.  
  9. -- Initialization function for this job file.
  10. function get_sets()
  11.     mote_include_version = 2
  12.  
  13.     -- Load and initialize the include file.
  14.     include('Mote-Include.lua')
  15.  
  16. end
  17. include('augmented-items.lua')
  18.  
  19. -- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
  20. function job_setup()
  21.     state.Buff.Migawari = buffactive.migawari or false
  22.     state.Buff.Doom = buffactive.doom or false
  23.     state.Buff.Yonin = buffactive.Yonin or false
  24.     state.Buff.Innin = buffactive.Innin or false
  25.     state.Buff.Futae = buffactive.Futae or false
  26.  
  27.     determine_haste_group()
  28. end
  29.  
  30. -------------------------------------------------------------------------------------------------------------------
  31. -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
  32. -------------------------------------------------------------------------------------------------------------------
  33.  
  34. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  35. function user_setup()
  36.     state.OffenseMode:options('Normal', 'Acc', 'HighAcc')
  37.     state.HybridMode:options('Normal', 'Evasion', 'PDT')
  38.     state.WeaponskillMode:options('Normal', 'Acc', 'Mod')
  39.     state.CastingMode:options( 'MAB', 'Normal')
  40.     state.PhysicalDefenseMode:options('PDT', 'MDT')
  41.     state.hastemode = M{['description'] = 'Haste Mode'}
  42.     state.hastemode:options('NoHaste','HasteI','HasteII','Capped')
  43.  
  44.     gear.MovementFeet = {name="Hizamaru sune-ate +1"}
  45.     --gear.DayFeet = "Rao sune-ate"
  46.     --gear.NightFeet = "Hachiya Kyahan +1"
  47.     gear.DayFeet = "Hizamaru sune-ate +1"
  48.     gear.NightFeet = "Hizamaru sune-ate +1"
  49.  
  50.     --Binds--
  51.     send_command('bind ^q gs c hastetype')
  52.     send_command('bind @q gs c hastesambatype')
  53.     send_command('bind %numpad1 input /targetbnpc;wait .1;input /attack <t>')
  54.     send_command('bind numpad3 input /ws "Blade: Shun" <t>')
  55.      
  56.     select_movement_feet()
  57.     select_default_macro_book()
  58. end
  59.      
  60. -- Define sets and vars used by this job file.
  61. function init_gear_sets()
  62.     --------------------------------------
  63.     -- Precast sets
  64.     --------------------------------------
  65.     Andartia={}
  66.     Andartia.MAB={ name="Andartia's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','"Mag.Atk.Bns."+10',}}
  67.     Andartia.DA= { name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}}
  68.     Andartia.WSD= { name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}
  69.  
  70.     -- Precast sets to enhance JAs
  71.     sets.precast.JA['Mijin Gakure'] = {legs="Mochizuki Hakama"}
  72.     sets.precast.JA['Futae'] = {Hands="Hattori Tekko +1"}
  73.     sets.precast.JA['Sange'] = {legs="Mochizuki Chainmail +1"}
  74.  
  75.     -- Waltz set (chr and vit)
  76.     sets.precast.Waltz = {}
  77.          
  78.     -- Don't need any special gear for Healing Waltz.
  79.     sets.precast.Waltz['Healing Waltz'] = {}
  80.  
  81.     -- Set for acc on steps, since Yonin drops acc a fair bit
  82.     sets.precast.Step = {neck="Subtlety Spec."}
  83.  
  84.     sets.precast.Flourish1 = {waist="Chaac Belt"}
  85.  
  86.     -- Fast cast sets for spells
  87.      
  88.     sets.precast.FC = {
  89.         head=herchelm_fastcast,
  90.         neck="Orunmila's Torque",
  91.         body="Dread Jupon",
  92.         hands=leyline,
  93.         ring1="Prolix Ring",
  94.         ring2="Weatherspoon Ring",
  95.         --legs="Limbo Trousers",
  96.         ear1="Enchntr. Earring +1",
  97.         ear2="Loquac. Earring"
  98.     }
  99.          
  100.     sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {
  101.         --neck="Magoraga Beads",
  102.         --body="Mochi. Chainmail +1",
  103.     })
  104.  
  105.     -- Snapshot for ranged
  106.     sets.precast.RA = {}
  107.        
  108.     -- Weaponskill sets
  109.     -- Default set for any weaponskill that isn't any more specifically defined
  110.     sets.precast.WS = {
  111.         ammo="Seething Bomblet",
  112.         head=ah_head,
  113.         neck="Fotia Gorget",
  114.         left_ear=moonshade,
  115.         right_ear="Ishvara earring",
  116.         left_ring="Epona's Ring",
  117.         right_ring="Apate Ring",
  118.         body="Abnoba Kaftan",
  119.         hands=hercgloves_acc,
  120.         waist="Fotia Belt",
  121.         legs="Hiza. Hizayoroi +1",
  122.         feet=hercboots_acc,
  123.         back=andartia
  124.     }
  125.          
  126.     sets.precast.WS.Acc = set_combine(sets.precast.WS, {
  127.     })
  128.          
  129.  
  130.     -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
  131.     sets.precast.WS['Blade: Ten'] = set_combine(sets.precast.WS,
  132.         {
  133.             neck="Caro necklace",
  134.             waist="Grunfeld rope",
  135.             --          ammo="Seething bomblet",
  136.             --          head="Lilitu headpiece",
  137.             --          hands=HercHands.WSD,
  138.             --          body=HercBody.WSD,
  139.             --          legs="Hiza. Hizayoroi +1",
  140.             --          feet=HercFeet.WSD,
  141.             --          left_ear="Mache Earring",
  142.             --          left_ring="Ifrit Ring +1",
  143.             --          right_ring="Ifrit Ring +1"
  144.         })
  145.  
  146.     sets.precast.WS['Blade: Shun'] = set_combine(sets.precast.WS,
  147.         {  
  148.             --right_ear="Brutal Earring",
  149.             body=ah_body,
  150.             hands=ah_hands,
  151.             legs=samnuha_legs,
  152.             left_ring="Ramuh Ring",
  153.             right_ring="Ramuh Ring +1"
  154.         })
  155.  
  156.     sets.precast.WS['Blade: Metsu'] = set_combine(sets.precast.WS,
  157.     {  
  158.         neck="Caro necklace",
  159.         waist="Grunfeld rope",
  160.         right_ring="Ramuh Ring",
  161.         left_ring="Ramuh Ring +1"
  162. --        left_ear="Mache Earring",
  163. --        right_ear="Mache Earring",
  164. --      ammo="Jukukik feather",
  165. --        head="Lilitu headpiece",
  166. --        body=HercBody.WSD,
  167. --        hands=HercHands.WSD,
  168. --        legs=HercLegs.WSD,
  169. --        feet=HercFeet.WSD,
  170.     })
  171.  
  172.  
  173.     sets.precast.WS['Blade: Hi'] = {
  174.         ammo="Yetshila",
  175.         head=ah_head,
  176.         body="Abnoba Kaftan",
  177.         --hands={ name="Ryuo Tekko", augments={'DEX+10','Accuracy+20','"Dbl.Atk."+3',}},
  178.         --legs=HercLegs.CRIT,
  179.         --feet=HercFeet.CRIT,
  180.         --neck="Rancor Collar",
  181.         --waist="Windbuffet Belt +1",
  182.         --left_ear="Brutal Earring",
  183.         --right_ear="Cessance Earring",
  184.         --left_ring="Epona's Ring",
  185.         --right_ring="Apate Ring",
  186.     }
  187.  
  188.      
  189.     --------------------------------------
  190.     -- Midcast sets
  191.     --------------------------------------
  192.  
  193.     sets.midcast.FastRecast = {
  194.         ear2="Loquacious Earring",ring1="Prolix Ring"}
  195.          
  196.     sets.midcast.SelfNinjutsu = set_combine(sets.precast.FC,{
  197.         ammo="Staunch Tathlum",
  198.         --head="Hachiya hatsuburi +1",
  199.         body="Dread Jupon",
  200.         hands="Rawhide Gloves",
  201.         --legs=HercLegs.FC,
  202.         --feet="Mochi. Kyahan +1",
  203.         --neck="Willpower Torque",
  204.         --waist="Druid's Rope",
  205.         --left_ear="Stealth Earring",
  206.         right_ear="Loquac. Earring",
  207.         left_ring="Prolix Ring",  
  208.         --right_ring="Evanescence Ring",
  209.         back="Mujin Mantle",
  210.     })
  211.      
  212.     sets.midcast.Utsusemi = set_combine(sets.midcast.SelfNinjutsu, {
  213.         ammo="Staunch Tathlum",
  214.         head=herchelm_fastcast,
  215.         body="Dread Jupon",
  216.         hands=leyline,
  217.         --legs=HercLegs.FC,
  218.         --neck="Willpower Torque",
  219.         --waist="Druid's Rope",
  220.         --left_ear="Halasz Earring",
  221.         right_ear="Loquac. Earring",
  222.         left_ring="Prolix Ring",
  223.         right_ring="Defending Ring",
  224.         --feet="Hattori Kyahan",
  225.         back=andartia
  226.     })
  227.  
  228.     sets.midcast.ElementalNinjutsu = {
  229. --        ammo="Ghastly Tathlum",
  230. --        head=HercHead.MAB,
  231. --        body="Samnuha coat",
  232. --        Hands="Leyline gloves",
  233. --        legs=HercLegs.MAB,
  234. --        feet=HercFeet.MBD,
  235. --        neck="Sanctity necklace",
  236. --        waist="Cimmerian sash",
  237. --        left_ear="Friomisi Earring", right_ear="Static Earring",
  238. --        left_ring="Stikini Ring", right_ring="Stikini Ring",
  239. --        back=Andartia.MAB,
  240.     }
  241.  
  242.       sets.midcast.ElementalNinjutsu.MAB = {
  243. --        ammo="Ghastly Tathlum",
  244. --        head=HercHead.MAB,
  245. --        body="Samnuha coat",
  246. --        Hands="Leyline gloves",
  247. --        legs=HercLegs.MAB,
  248. --        feet=HercFeet.MBD,
  249. --        neck="Sanctity necklace",
  250. --        waist="Cimmerian sash",
  251. --        left_ear="Friomisi Earring", right_ear="Static Earring",
  252. --        left_ring="Locus Ring", right_ring="Mujin Band",
  253. --        back=Andartia.MAB,
  254.     }
  255.          
  256.     sets.midcast.NinjutsuDebuff = {
  257. --        ammo="Hydrocera",
  258. --        head="Hachi. Hatsu. +1",
  259. --        body="Samnuha coat",
  260. --        hands=HercHands.MACC,
  261. --        legs=HercLegs.MAB,
  262. --        feet=HercFeet.MAB,
  263. --        neck="Ninjutsu Torque",
  264. --        waist="Ovate rope",
  265. --        left_ear="Stealth Earring", right_ear="Ninjutsu Earring",
  266. --        left_ring="Stikini Ring", right_ring="Stikini Ring",
  267. --        back=Andartia.MAB,
  268.     }
  269.  
  270.     sets.midcast.NinjutsuBuff = {
  271. --        ammo="Staunch Tathlum",
  272. --        head="Hachiya hatsuburi +1",
  273. --        body="Foppish Tunica",
  274. --        hands="Rawhide Gloves",
  275. --        legs="Wukong's Haka. +1",
  276. --        feet="Mochi. Kyahan +1",
  277. --        neck="Ninjutsu Torque",
  278. --        waist="Cimmerian Rope",
  279. --        left_ear="Stealth Earring",
  280. --        right_ear="Ninjutsu Earring",
  281. --        left_ring="Stikini Ring",
  282. --        right_ring="Stikini Ring",
  283. --        back="Mujin Mantle",
  284.     }
  285.  
  286.     sets.midcast.RA = {}
  287.  
  288.     --------------------------------------
  289.     -- Idle/resting/defense/etc sets
  290.     --------------------------------------
  291.      
  292.     -- Resting sets
  293.     sets.resting = {
  294. --      ammo="Staunch Tathlum",
  295. --        head="Rao kabuto",
  296. --        body="Hizamaru haramaki +1",
  297. --        hands="Rao kote",
  298. --        legs={ name="Rao Haidate", augments={'Accuracy+20','"Dbl.Atk."+3','Pet: Accuracy+20',}},
  299. --        feet=gear.MovementFeet,
  300. --        neck="Sanctity necklace",
  301. --        waist="Flume Belt",
  302. --        left_ear="Infused Earring", right_ear="Genmei Earring",  
  303. --        left_ring="Shneddick Ring",
  304. --        right_ring="Defending Ring",
  305. --        back="Shadow mantle"
  306.     }
  307.          
  308.     -- Idle sets
  309.     sets.idle = {
  310.         main="Heishi Shorinken",
  311.         sub={ name="Shigi", augments={'Accuracy+50','Rng.Acc.+50','Damage Taken -5%',}},
  312.         --ammo="Staunch Tathlum",
  313.         ammo="Togakushi Shuriken",
  314.         --head="Rao kabuto",
  315.         --hands="Rao kote",
  316.         head="Genmei Kabuto",--5PDT
  317.         body="Hizamaru haramaki +1",
  318.         --legs={ name="Rao Haidate", augments={'Accuracy+20','"Dbl.Atk."+3','Pet: Accuracy+20',}},
  319.         feet=gear.MovementFeet,
  320.         hands=hercgloves_acc,
  321.         legs=herctrou_dt,
  322.         neck="Wiglen Gorget",
  323.         waist="Flume Belt +1",
  324.         ear1="Allegro Earring",
  325.         ear2="Infused Earring",
  326.         ring1="Defending Ring",
  327.         ring2="Paguroidea Ring",
  328.         back="Solemnity Cape"
  329.     }
  330.  
  331.     sets.idle.Town = sets.idle
  332.     --sets.idle.Town = {
  333. --      ammo="Staunch Tathlum",
  334. --        head="Rao kabuto",
  335. --        body="Hizamaru haramaki +1",
  336. --        hands="Rao kote",
  337. --        legs="Rao Haidate",
  338. --        feet=gear.MovementFeet,
  339. --        neck="Sanctity necklace",
  340. --        waist="Flume Belt",
  341. --        left_ear="Infused Earring", right_ear="Genmei Earring",  
  342. --        left_ring="Shneddick Ring",
  343. --        right_ring="Defending Ring",
  344. --        back="Shadow mantle"
  345.     --}
  346.      
  347. --    sets.idle.Weak = {ammo="Staunch Tathlum",
  348. --        head="Rao kabuto",
  349. --        body="Hizamaru haramaki +1",
  350. --        hands="Rao kote",
  351. --        legs="Rao Haidate",
  352. --        feet=gear.MovementFeet,
  353. --        neck="Sanctity necklace",
  354. --        waist="Flume Belt",
  355. --        left_ear="Infused Earring", right_ear="Genmei Earring",  
  356. --        left_ring="Shneddick Ring",
  357. --        right_ring="Defending Ring",
  358. --        back="Shadow mantle"}
  359.      
  360.     -- Defense sets
  361.         --sets.defense.Evasion = {neck="Subtlety Spec.", back="Yokaze Mantle"}
  362.  
  363.         sets.defense.PDT = {
  364. --          ammo="Togakushi Shuriken",
  365. --          head="Ryuo Somen",
  366. --          body="Emet Harness +1",
  367. --          hands=HercHands.PDT,
  368. --          legs=HercLegs.DT,
  369. --          feet=HercFeet.DT,
  370. --          neck="Loricate Torque",
  371. --          waist="Flume Belt",
  372. --          left_ear="Genmei Earring",
  373. --          right_ear="Suppanomimi",
  374. --          left_ring="Gelatinous Ring +1",
  375. --          right_ring="Defending Ring",
  376. --          back="Solemnity Cape",
  377.         }
  378.         sets.defense.MDT = {
  379. --          ammo="Togakushi Shuriken",
  380. --          head="Dampening Tam",
  381. --          body="Hiza. Haramaki +1",
  382. --          hands="Floral Gauntlets",
  383. --          legs=HercLegs.DT,
  384. --          feet=HercFeet.DT,
  385. --          neck="Loricate Torque",
  386. --          waist="Flume Belt",
  387. --          left_ear="Brutal Earring",
  388. --          right_ear="Static Earring",
  389. --          left_ring="Shadow Ring",
  390. --          right_ring="Defending Ring",
  391. --          back="Solemnity Cape",
  392.         }
  393.  
  394.     --sets.Kiting = {left_ring="Shneddick Ring",feet=gear.MovementFeet}
  395.     --------------------------------------
  396.     -- Engaged sets
  397.     --------------------------------------
  398.      
  399.     -- Normal melee group
  400.     sets.engaged = {
  401.         --ammo="Togakushi Shuriken",
  402.         ammo="Togakushi Shuriken",
  403.         head=ah_head,
  404.         body=ah_body,
  405.         hands=ah_hands,
  406.         legs=samnuha_legs,
  407.         feet=hercboots_ta,
  408.         neck="Asperity Necklace",
  409.         waist="Windbuffet Belt +1",
  410.         left_ear="Telos Earring",
  411.         right_ear="Cessance Earring",
  412.         left_ring="Petrov Ring",
  413.         right_ring="Epona's Ring",
  414.         back=andartia,
  415.  
  416.     }
  417.     sets.engaged.Acc = sets.engaged
  418. --    sets.engaged.Acc = {
  419. --      ammo="Togakushi Shuriken",
  420. --        head="Ryuo somen",
  421. --        body="Adhemar Jacket",
  422. --        hands="Floral gauntlets",
  423. --        legs=HercLegs.TA,
  424. --        feet="Hiza. Sune-Ate +1",
  425. --        neck="Erudition necklace",
  426. --        waist="Patentia sash",
  427. --        left_ear="Brutal Earring", right_ear="Suppanomimi",
  428. --        left_ring="Epona's Ring", right_ring="Petrov Ring",
  429. --        back=Andartia.DA}
  430. --    sets.engaged.HighAcc = {ammo="Togakushi Shuriken",
  431. --        head="Ryuo somen",
  432. --        body="Adhemar Jacket",
  433. --        hands="Floral gauntlets",
  434. --        legs=HercLegs.ACC,
  435. --        feet="Hiza. Sune-Ate +1",
  436. --        neck="Subtlety Spec.",
  437. --        waist="Patentia sash",
  438. --        left_ear="Cessance Earring", right_ear="Suppanomimi",
  439. --        left_ring="Epona's Ring", right_ring="Cacoethic Ring",
  440. --        back=Andartia.DA}
  441.     sets.engaged.Evasion = {}
  442.     sets.engaged.Acc.Evasion = {}
  443.     sets.engaged.PDT = {}
  444.     sets.engaged.Acc.PDT = {}
  445.  
  446.     -- Custom melee group: High Haste (~20% DW)
  447.  
  448.     --------------------------------------
  449.     -- Custom buff sets
  450.     --------------------------------------
  451.  
  452.     sets.buff.Migawari = {body="Adhemar Jacket"}
  453.     sets.buff.Doom = {waist="Gishdubar sash",ring1="Saida Ring",ring2="Saida Ring"}
  454.     sets.buff.Yonin = {}
  455.     sets.buff.Innin = {}
  456.  
  457.     --(1 - 35% Dual Wield)×(1024 - 256 Equipment Haste - 150 Magic Haste - 101 Job Ability Haste)÷1024 = 32.8% Delay remaining, or 67.18% Delay reduction
  458.     --(.65)×(1024 - 256 Equipment Haste)÷1024 = 48.75% Delay remaining, or 51.25% Delay reduction
  459.     --(.65)×(768)÷1024 = 48.75% Delay remaining, or 51.25% Delay reduction
  460.     --(.65)×(768)÷1024 = .4875
  461.     ah_body={ name="Adhemar Jacket", augments={'DEX+10','AGI+10','Accuracy+15',}}
  462.     floral={ name="Floral Gauntlets", augments={'Rng.Acc.+13','Accuracy+14','"Triple Atk."+1','Magic dmg. taken -2%',}}
  463.  
  464.     dw_legs ={ name="Taeon Tights", augments={'Accuracy+17 Attack+17','"Dual Wield"+4','STR+2 DEX+2',}}
  465.     dw_feet ={ name="Taeon Boots", augments={'Accuracy+17 Attack+17','"Dual Wield"+5','STR+4 DEX+4',}}
  466.  
  467.     sets.hastemode = {}
  468.     --(.26)×(.75) = .195, .65 - .26 = 39
  469.     sets.hastemode.NoHaste={ -- need 39, at 39
  470.         hands=floral, --5
  471.         body=ah_body,--5, 6 with HQ
  472.         ear1="Eabani Earring",--4
  473.         ear2="Suppanomimi",--5
  474.         waist="Reiki Yotai",--7
  475.         legs=dw_legs, --4
  476.         feet=dw_feet, --9
  477.     }
  478.     --(.65)×(618/1024) = .3922
  479.     --(.33)×(618/1024) = .1991, .65 - .33 = 32
  480.     sets.hastemode.HasteI={ -- need 32, at 32
  481.         body=ah_body,--5
  482.         hands=floral,--5
  483.         ear1="Eabani Earring",--4
  484.         ear2="Suppanomimi",--5
  485.         --waist="Reiki Yotai",--7
  486.         legs=dw_legs, --4
  487.         feet=dw_feet, --9
  488.     }
  489.     --(.65)×(468/1024) = .2970
  490.     --(.43)×(468/1024) = .1965, .65 - .43 = 22
  491.     sets.hastemode.HasteII={ -- need 22, at 22
  492.         body=ah_body,--5
  493.         hands=floral,--5
  494.         --ear1="Eabani Earring",--4
  495.         ear2="Suppanomimi",--5
  496.         waist="Reiki Yotai",--7
  497.     }
  498.     sets.hastemode.NoHaste=set_combine(sets.engaged,sets.hastemode.NoHaste)
  499.     sets.hastemode.HasteI=set_combine(sets.engaged,sets.hastemode.HasteI)
  500.     sets.hastemode.HasteII=set_combine(sets.engaged,sets.hastemode.HasteII)
  501.     sets.hastemode.Capped=set_combine(sets.engaged,{})
  502.  
  503. end
  504.  
  505. -------------------------------------------------------------------------------------------------------------------
  506. -- Job-specific hooks for standard casting events.
  507. -------------------------------------------------------------------------------------------------------------------
  508.  
  509. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  510. function job_aftercast(spell, action, spellMap, eventArgs)
  511.     if not spell.interrupted and spell.english == "Migawari: Ichi" then
  512.         state.Buff.Migawari = true
  513.     end
  514. end
  515.  
  516. -------------------------------------------------------------------------------------------------------------------
  517. -- Job-specific hooks for non-casting events.
  518. -------------------------------------------------------------------------------------------------------------------
  519.  
  520. function job_buff_change(buff, gain)
  521.     buff_lower = buff:lower()
  522.     if hastetbl:contains(buff_lower) then
  523.         check_haste_level()
  524.         handle_equipping_gear(player.status)
  525.     elseif state.Buff[buff] ~= nil then
  526.         handle_equipping_gear(player.status)
  527.     end
  528. end
  529.  
  530. function job_status_change(new_status, old_status)
  531.     if new_status == 'Idle' then
  532.         select_movement_feet()
  533.     end
  534. end
  535.  
  536.  
  537. -------------------------------------------------------------------------------------------------------------------
  538. -- User code that supplements standard library decisions.
  539. -------------------------------------------------------------------------------------------------------------------
  540.  
  541. -- Get custom spell maps
  542. function job_get_spell_map(spell, default_spell_map)
  543.     if spell.skill == "Ninjutsu" then
  544.         if not default_spell_map then
  545.             if spell.target.type == 'SELF' then
  546.                 return 'NinjutsuBuff'
  547.             else
  548.                 return 'NinjutsuDebuff'
  549.             end
  550.         end
  551.     end
  552. end
  553.  
  554. -- Modify the default idle set after it was constructed.
  555. function customize_idle_set(idleSet)
  556.     if state.Buff.Migawari then
  557.         idleSet = set_combine(idleSet, sets.buff.Migawari)
  558.     end
  559.     if state.Buff.Doom then
  560.         idleSet = set_combine(idleSet, sets.buff.Doom)
  561.     end
  562.     return idleSet
  563. end
  564.  
  565. -- Modify the default melee set after it was constructed.
  566. function customize_melee_set(meleeSet)
  567.     meleeSet = set_combine(meleeSet,sets.hastemode[state.hastemode.value])
  568.  
  569.     if state.Buff.Migawari then
  570.         meleeSet = set_combine(meleeSet, sets.buff.Migawari)
  571.     end
  572.     if state.Buff.Doom then
  573.         meleeSet = set_combine(meleeSet, sets.buff.Doom)
  574.     end
  575.     return meleeSet
  576. end
  577.  
  578. -- Called by the default 'update' self-command.
  579. function job_update(cmdParams, eventArgs)
  580.     select_movement_feet()
  581.     determine_haste_group()
  582. end
  583.  
  584. -------------------------------------------------------------------------------------------------------------------
  585. -- Utility functions specific to this job.
  586. -------------------------------------------------------------------------------------------------------------------
  587.  
  588. function determine_haste_group()
  589.  
  590.     classes.CustomMeleeGroups:clear()
  591.      
  592.     if buffactive.embrava and (buffactive.march == 2 or (buffactive.march and buffactive.haste)) then
  593.         classes.CustomMeleeGroups:append('MaxHaste')
  594.     elseif buffactive.march == 2 and buffactive.haste then
  595.         classes.CustomMeleeGroups:append('MaxHaste')
  596.     elseif buffactive.embrava and (buffactive.haste or buffactive.march) then
  597.         classes.CustomMeleeGroups:append('EmbravaHaste')
  598.     elseif buffactive.haste then
  599.         classes.CustomMeleeGroups:append('HighHaste')
  600.     elseif buffactive.march == 2 then
  601.         classes.CustomMeleeGroups:append('HighHaste')
  602.     elseif buffactive.march == 1 and buffactive['haste samba'] then
  603.         classes.CustomMeleeGroups:append('HighHaste')
  604.     end
  605. end
  606.  
  607. function select_movement_feet()
  608.     if world.time >= 17*60 or world.time < 7*60 then
  609.         gear.MovementFeet.name = gear.NightFeet
  610.     else
  611.         gear.MovementFeet.name = gear.DayFeet
  612.     end
  613. end
  614.  
  615. function job_post_precast(spell, action, spellMap, eventArgs)
  616.     if spell.type == 'WeaponSkill' then
  617.         if world.time >= 17*60 or world.time < 7*60 then -- Dusk to Genmei time.
  618.             equip({ear1="Lugra Earring +1", ear2="Lugra Earring"})
  619.         end
  620.     end
  621. end
  622.  
  623. function job_post_precast(spell, action, spellMap, eventArgs)
  624.     if spellMap == 'ElementalNinjutsu' then
  625.         if spell.english:contains(': San') then
  626.             equip({feet="Mochi. Kyahan +1"})
  627.         end
  628.     end
  629. end
  630.  
  631. function job_post_midcast(spell, action, spellMap, eventArgs)
  632.     if spellMap == 'ElementalNinjutsu' then
  633.         if spell.english:contains(': San') then
  634.             equip({head="Mochi. Hatsuburi +1"})
  635.         end
  636.         if spell.element == world.day_element or spell.element == world.weather_element then
  637.             equip({waist="Hachirin-no-Obi"})
  638.         end
  639.         if state.Buff.Futae then
  640.             equip(sets.precast.JA['Futae'])
  641.         end
  642.         if state.Buff.Doom then
  643.         equip(sets.buff.Doom)
  644.     end
  645.     end
  646. end
  647.  
  648. -- Select default macro book on initial load or subjob change.
  649. function select_default_macro_book()
  650.     -- Default macro set/book
  651.     if player.sub_job == 'DNC' then
  652.         set_macro_page(1, 4)
  653.     elseif player.sub_job == 'WAR' then
  654.         set_macro_page(2, 4)
  655.     elseif player.sub_job == 'RUN' then
  656.         set_macro_page(3, 4)
  657.     elseif player.sub_job == 'RDM' then
  658.         set_macro_page(4, 4)
  659.     else
  660.         set_macro_page(1, 4)
  661.     end
  662. end
  663.  
  664. function check_haste_level()
  665.     --pr(buffactive)
  666.     --33 is haste 1 and haste 2 580 is indi and geo haste
  667.     hastelevel = 0
  668.     if buffactive[33] and hastetype==1 then
  669.         hastelevel=hastelevel+15
  670.         add_to_chat(122,'Haste I detected')
  671.     elseif buffactive[33] and hastetype==2 then
  672.         hastelevel=hastelevel+30
  673.         add_to_chat(122,'Haste II detected')
  674.     end
  675.     if hastesambatype==1 then
  676.         hastelevel=hastelevel+5
  677.         add_to_chat(122,'Haste samba detected')
  678.     end
  679.     if hastesambatype==2 then
  680.         hastelevel=hastelevel+10
  681.         add_to_chat(122,'Haste samba (dnc) detected')
  682.     end
  683.     if buffactive[580] then --assuming non idris, indi/geo haste
  684.         hastelevel=hastelevel+33
  685.         --add_to_chat(122,'Geo Haste detected')
  686.     end
  687.     if buffactive['Mighty Guard'] then
  688.         hastelevel=hastelevel+15
  689.         --add_to_chat(122,'Mighty Guard detected')
  690.     end
  691.     if buffactive['slow'] then
  692.         hastelevel=hastelevel-30
  693.         add_to_chat(122,'Slow Detected')
  694.     end
  695.     if buffactive['Embrava'] then
  696.         hastelevel=hastelevel+25
  697.     end
  698.     if buffactive.march ==2 then --assuming song +3 at least
  699.         hastelevel=hastelevel+25
  700.     elseif buffactive.march ==1 then
  701.         hastelevel=hastelevel+15
  702.     elseif buffactive.march == 3 then
  703.         hastelevel=hastelevel+40
  704.     end
  705.     add_to_chat(122,'Haste level '..hastelevel)
  706.  
  707.     if hastelevel == 0 then
  708.         add_to_chat(122,'Haste level set to NoHaste')
  709.         state.hastemode:set('NoHaste')
  710.     elseif hastelevel >= 40 then
  711.         add_to_chat(122,'Haste level set to Capped')
  712.         state.hastemode:set('Capped')
  713.     elseif hastelevel >= 25 then
  714.         add_to_chat(122,'Haste level set to HasteII')
  715.         state.hastemode:set('HasteII')
  716.     elseif hastelevel >= 15 then
  717.         add_to_chat(122,'Haste level set to HasteI')
  718.         state.hastemode:set('HasteI')
  719.     end
  720. end
  721.  
  722. function job_self_command(cmdParams,eventArgs)
  723.     command = cmdParams[1]:lower()
  724.     if command=='hastetype' then
  725.         if hastetype == 1 then hastetype=2
  726.         else hastetype = 1 end
  727.         add_to_chat(122,'Haste '..hastetype)
  728.         check_haste_level()
  729.         handle_equipping_gear(player.status)
  730.     elseif command=='hastesambatype' then
  731.         if hastesambatype == 0 then hastesambatype=1
  732.         elseif hastesambatype == 1 then hastesambatype = 2
  733.         else hastesambatype = 0 end
  734.         add_to_chat(122,'Hastesambatype '..hastesambatype)
  735.     end
  736. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement