Advertisement
teuciont

NIN.LUA

Apr 27th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 23.59 KB | None | 0 0
  1. --TODO: CP cape rule
  2.  
  3. ------------------------------------
  4. -- Initialization function for this job file.
  5. ------------------------------------
  6. function get_sets()
  7.     mote_include_version = 2
  8.     -- Load and initialize the include file.
  9.     include('Mote-Include.lua')
  10. end
  11.  
  12. ------------------------------------
  13. -- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
  14. ------------------------------------
  15. function job_setup()
  16.     include('Mote-TreasureHunter.lua')
  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. end
  23.  
  24. ------------------------------------
  25. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  26. ------------------------------------
  27. function user_setup()
  28.     state.HasteMode = M{['description']='Haste Mode', 'Normal', 'Hi'}
  29.     state.OffenseMode:options('Normal', 'Acc', 'HighAcc')
  30.     state.HybridMode:options('Normal', 'Evasion', 'PDT')
  31.     state.WeaponskillMode:options('Normal', 'Acc', 'Mod')
  32.     state.CastingMode:options( 'MAB', 'Normal')
  33.     state.PhysicalDefenseMode:options('PDT', 'MDT')
  34.     state.IdleMode:options( 'MovementSpeed', 'Defense')
  35.     state.CP = M(false, "Capacity Points Mode")
  36.  
  37.     gear.MovementFeet = {name="Hachiya Kyahan +1"}
  38.     gear.DayFeet = "Danzo Sune-Ate"
  39.     gear.NightFeet = "Hachiya Kyahan +1"
  40.      
  41.     determine_haste_group()
  42.     select_movement_feet()
  43. end
  44.  
  45. ------------------------------------
  46. ---Gear sets.
  47. ------------------------------------
  48. function init_gear_sets()
  49.     sets.CP = {back="Mecistopins mantle"}
  50.     Andartia = {}
  51.     Andartia.MAB = "Izdubar Mantle"
  52.     Andartia.DA = { name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10',}}
  53.     Andartia.WSD = { name="Andartia's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','"Dbl.Atk."+10',}}
  54.    
  55.     HercLegs = {}
  56.     HercLegs.TP = { name="Herculean Trousers", augments={'Accuracy+25 Attack+25','Weapon skill damage +3%','Accuracy+15','Attack+9',}}
  57.     HercLegs.WS = { name="Herculean Trousers", augments={'Accuracy+25 Attack+25','Weapon skill damage +3%','Accuracy+15','Attack+9',}}
  58.     HercLegs.MAB = { name="Herculean Trousers", augments={'Magic burst dmg.+8%','INT+5','Mag. Acc.+5','"Mag.Atk.Bns."+13',}}
  59.    
  60.     HercHead = {}
  61.     HercHead.MACC = { name="Herculean Helm", augments={'AGI+5','Mag. Acc.+23','"Treasure Hunter"+2','Accuracy+19 Attack+19',}}
  62.     HercHead.MAB = { name="Herculean Helm", augments={'"Triple Atk."+3','"Mag.Atk.Bns."+24','"Store TP"+4','Accuracy+15 Attack+15','Mag. Acc.+14 "Mag.Atk.Bns."+14',}}
  63.    
  64.     -- Precast sets to enhance JAs
  65.     sets.precast.JA['Mijin Gakure'] = {}--{legs="Mochizuki Hakama"}
  66.     sets.precast.JA['Futae'] = {}--{Hands="Hattori Tekko +1"}
  67.     sets.precast.JA['Sange'] = {}--{legs="Mochizuki Chainmail +1"}
  68. ----TH----
  69.     sets.TreasureHunter = {
  70.         head={ name="Herculean Helm", augments={'AGI+5','Mag. Acc.+23','"Treasure Hunter"+2','Accuracy+19 Attack+19',}},
  71.         hands={ name="Herculean Gloves", augments={'Pet: Haste+4','DEX+5','"Treasure Hunter"+2','Mag. Acc.+17 "Mag.Atk.Bns."+17',}},
  72.     }
  73. ----WS----
  74.     sets.precast.WS = {
  75.             ammo="Seeth. Bomblet +1",
  76.             head={ name="Herculean Helm", augments={'"Triple Atk."+3','"Mag.Atk.Bns."+24','"Store TP"+4','Accuracy+15 Attack+15','Mag. Acc.+14 "Mag.Atk.Bns."+14',}},
  77.             neck="Fotia Gorget",
  78.             ear1="Heartseeker Earring",
  79.             ear2="Moonshade Earring",
  80.             body="Rawhide Vest",
  81.             hands="Adhemar Wristbands",
  82.             ring1="Apate Ring",
  83.             ring2="Rufescent ring",
  84.             back="Andartia's Mantle",
  85.             waist="Fotia Belt",
  86.             legs= HercLegs.WS,
  87.             feet="Rawhide Boots"
  88.     }
  89.     --For ACC options in the future.
  90.     sets.precast.WS.Acc = set_combine(sets.precast.WS, {
  91.        
  92.     })
  93.     --Specific WS
  94.     ---Ten(STR30/DEX30)---
  95.     sets.precast.WS["Blade: Ten"] = set_combine(sets.precast.WS, {
  96.             ammo="Happo Shuriken",
  97.             head={ name="Herculean Helm", augments={'"Triple Atk."+3','"Mag.Atk.Bns."+24','"Store TP"+4','Accuracy+15 Attack+15','Mag. Acc.+14 "Mag.Atk.Bns."+14',}},
  98.             neck="Erudit. Necklace",
  99.             ear1="Heartseeker Earring",
  100.             ear2="Moonshade Earring",
  101.             body="Rawhide Ves/t",
  102.             hands="Adhemar Wristbands",
  103.             ring1="Apate Ring",
  104.             ring2="Rufescent ring",
  105.             back="Andartia's Mantle",
  106.             legs= HercLegs.WS,
  107.             feet="Rawhide Boots"
  108.        
  109.     })
  110.     ---Shun(DEX73-85)--
  111.     sets.precast.WS["Blade: Shun"] = set_combine(sets.precast.WS, {
  112.             ammo="Seeth. Bomblet +1",
  113.             head= "Lilitu Headpiece",
  114.             neck="Fotia Gorget",
  115.             ear1="Heartseeker Earring",
  116.             ear2="Moonshade Earring",
  117.             body="Rawhide Ves/t",
  118.             hands="Adhemar Wristbands",
  119.             ring1="Apate Ring",
  120.             ring1="Enlivened Ring",
  121.             back="Andartia's Mantle",
  122.             legs= "Samnuha Tights",
  123.             waist="Fotia Belt",
  124.             feet="Hiza. Sune-Ate +1"
  125.        
  126.     })
  127.     ---Hi(AGI80)---
  128.     sets.precast.WS["Blade: Hi"] = set_combine(sets.precast.WS, {
  129.             ammo="Happo Shuriken",
  130.             head={ name="Herculean Helm", augments={'"Triple Atk."+3','"Mag.Atk.Bns."+24','"Store TP"+4','Accuracy+15 Attack+15','Mag. Acc.+14 "Mag.Atk.Bns."+14',}},
  131.             neck="Erudit. Necklace",
  132.             ear1="Heartseeker Earring",
  133.             ear2="Moonshade Earring",
  134.             body="Rawhide Vest",
  135.             hands="Adhemar Wristbands",
  136.             ring1="Apate Ring",
  137.             ring2="Rufescent ring",
  138.             back="Andartia's Mantle",
  139.             legs= HercLegs.WS,
  140.             feet="Rawhide Boots"
  141.        
  142.     })
  143.    
  144.     sets.precast.WS["Aeolian Edge"] = set_combine(sets.precast.WS, {
  145.         ring1 = "Weatherspoon Ring",
  146.         ring2 = "Acumen Ring",
  147.         ear1 = "Friomisi Earring",
  148.         ear2 = "Hecate's Earring",
  149.         neck = "Sanctity Necklace",
  150.         feet={ name="Herculean Boots", augments={'Mag. Acc.+15 "Mag.Atk.Bns."+15','"Fast Cast"+2','INT+3','Mag. Acc.+13','"Mag.Atk.Bns."+15',}},
  151.         hands={ name="Herculean Gloves", augments={'Mag. Acc.+18','Magic burst dmg.+5%','MND+5','"Mag.Atk.Bns."+8',}},
  152.         back = Andartia.MAB,
  153.         legs = HercLegs.MAB,
  154.         head={ name="Herculean Helm", augments={'AGI+5','Mag. Acc.+23','"Treasure Hunter"+2','Accuracy+19 Attack+19',}},
  155.         body = "Rawhide Vest"
  156.     })
  157.    
  158. ----Engaged----
  159.     --Normal melee group 39 DW.
  160.     sets.engaged = {
  161.         ammo="Happo Shuriken",--0
  162.         head= "Ryuo Somen",--8
  163.         neck="Erudit. Necklace",--0
  164.         ear1="Cessance Earring",--0
  165.         ear2="Suppanomimi",--5
  166.         body="Mochizuki chainmail +1",--7
  167.         hands="Floral Gauntlets",--5
  168.         ring1="Apate Ring",--0
  169.         ring2="Epona's Ring",--0
  170.         back = Andartia.DA,--0
  171.         waist="Shetal Stone",--6
  172.         legs= "Samnuha Tights",--0
  173.         feet="Hiza. Sune-Ate +1"--7
  174.     }--38
  175.  
  176.     sets.engaged.Acc = set_combine(sets.engaged, {
  177.         waist="Dynamic Belt +1",
  178.         ring1="Enlivened Ring",
  179.  
  180.     })--38
  181.  
  182.     sets.engaged.HighAcc = set_combine(sets.engaged.Acc, {
  183.         legs = HercLegs.TP,
  184.         body = "Rawhide Vest",
  185.         hands = "Adhemar Wristbands",
  186.     })--26
  187.  
  188.     sets.engaged.Evasion =  set_combine(sets.engaged.Acc, {})
  189.     sets.engaged.Acc.Evasion = set_combine(sets.engaged.Acc, {})
  190.     sets.engaged.PDT = set_combine(sets.engaged, {
  191.             back="Solmenity Cape",--4/4
  192.             feet = "Loyalist Sabatons",--3/0
  193.             neck = "Twilight Torque", --5/5
  194.         }
  195.     )--31
  196.     sets.engaged.Acc.PDT = set_combine(sets.engaged.Acc, {
  197.             back="Solmenity Cape",--4/4
  198.             feet = "Loyalist Sabatons",--3/0
  199.             neck = "Twilight Torque", --5/5
  200.         }
  201.     )--31
  202.  
  203.     --15% melee group 31 DW.
  204.     sets.engaged.Haste_15 = {
  205.         ammo="Happo Shuriken",--0
  206.         head= "Ryuo Somen",--8
  207.         neck="Erudit. Necklace",--0
  208.         ear1="Cessance Earring",--0
  209.         ear2="Suppanomimi",--5
  210.         body="Mochizuki chainmail +1",--7
  211.         hands="Floral Gauntlets",--5
  212.         ring1="Apate Ring",--0
  213.         ring2="Epona's Ring",--0
  214.         back = Andartia.DA,--0
  215.         waist="Sailfi Belt +1",--0
  216.         legs= "Samnuha Tights",--0
  217.         feet="Hiza. Sune-Ate +1"--7
  218.     }--32
  219.     sets.engaged.Acc.Haste_15 = set_combine(sets.engaged.Haste_15, {
  220.             ring1="Enlivened Ring",
  221.             waist="Dynamic belt +1",
  222.         }
  223.     )--32
  224.     sets.engaged.HighAcc.Haste_15 = set_combine(sets.engaged.Acc.Haste_15, {
  225.             legs = HercLegs.TP,
  226.             body = "Rawhide Vest",
  227.             hands = "Adhemar Wristbands",
  228.         }
  229.     )--19
  230.     sets.engaged.Evasion.Haste_15 = set_combine(sets.engaged.Haste_15, {})
  231.     sets.engaged.Acc.Evasion.Haste_15 = set_combine(sets.engaged.Haste_15, {})
  232.     sets.engaged.PDT.Haste_15 = set_combine(sets.engaged.Haste_15, {
  233.             back="Solmenity Cape",--4/4
  234.             feet = "Loyalist Sabatons",--3/0
  235.             neck = "Twilight Torque",--5/5
  236.         }
  237.     )--25
  238.     sets.engaged.Acc.PDT.Haste_15 = set_combine(sets.engaged.Acc.Haste_15, {
  239.             back="Solmenity Cape",--4/4
  240.             feet = "Loyalist Sabatons",--3/0
  241.             neck = "Twilight Torque",--5/5
  242.         }
  243.     )--25
  244.  
  245.     --30% melee group 20 DW.
  246.     sets.engaged.Haste_30 = {
  247.         ammo="Happo Shuriken",--0
  248.         head= "Ryuo Somen",--8
  249.         neck="Erudit. Necklace",--0
  250.         ear1="Cessance Earring",--0
  251.         ear2="Suppanomimi",--5
  252.         body="Rawhide Vest",--0
  253.         hands="Adhemar Wristbands",--0
  254.         ring1="Apate Ring",--0
  255.         ring2="Epona's Ring",--0
  256.         back = Andartia.DA,--0
  257.         waist="Sailfi Belt +1",--0
  258.         legs= "Samnuha Tights",--0
  259.         feet="Hiza. Sune-Ate +1"--7
  260.     }--20
  261.     sets.engaged.Acc.Haste_30 = set_combine(sets.engaged.Haste_30, {
  262.             ring1="Enlivened Ring",
  263.             waist="Dynamic belt +1",
  264.         }
  265.     )--20
  266.     sets.engaged.HighAcc.Haste_30 = set_combine(sets.engaged.Acc.Haste_30, {
  267.             legs = HercLegs.TP,
  268.         }
  269.     )--20
  270.     sets.engaged.Evasion.Haste_30 = set_combine(sets.engaged.Haste_30, {})
  271.     sets.engaged.Acc.Evasion.Haste_30 = set_combine(sets.engaged.Haste_30, {})
  272.     sets.engaged.PDT.Haste_30 = set_combine(sets.engaged.Haste_30, {
  273.             back="Solmenity Cape",--4/4
  274.             feet = "Loyalist Sabatons",--3/0
  275.             neck = "Twilight Torque",--5/5
  276.         }
  277.     )--13
  278.     sets.engaged.Acc.PDT.Haste_30 = set_combine(sets.engaged.Acc.Haste_30, {   
  279.             back="Solmenity Cape",--4/4
  280.             feet = "Loyalist Sabatons",--3/0
  281.             neck = "Twilight Torque",--5/5
  282.         }
  283.     )--13
  284.  
  285.     --35% melee group 13 DW.
  286.     sets.engaged.Haste_35 = {
  287.         ammo="Happo Shuriken",--0
  288.         head= "Adhemar Bonnet",--0
  289.         neck="Erudit. Necklace",--0
  290.         ear1="Cessance Earring",--0
  291.         ear2="Suppanomimi",--5
  292.         body="Rawhide Vest",--0
  293.         hands="Adhemar Wristbands",--0
  294.         ring1="Apate Ring",--0
  295.         ring2="Epona's Ring",--0
  296.         back = Andartia.DA,--0
  297.         waist="Sailfi Belt +1",--0
  298.         legs= "Samnuha Tights",--0
  299.         feet="Hiza. Sune-Ate +1"--7
  300.     }--12
  301.     sets.engaged.Acc.Haste_35 = set_combine(sets.engaged.Haste_35, {
  302.             head = "Dampening Tam",
  303.             ring1="Enlivened Ring",
  304.             waist="Dynamic belt +1",
  305.         }
  306.     )
  307.     sets.engaged.HighAcc.Haste_35 = set_combine(sets.engaged.Acc.Haste_35, {
  308.             legs = HercLegs.TP,
  309.         }
  310.     )
  311.     sets.engaged.Evasion.Haste_35 = set_combine(sets.engaged.Haste_35, {})
  312.     sets.engaged.Acc.Evasion.Haste_35 = set_combine(sets.engaged.Haste_35, {})
  313.     sets.engaged.PDT.Haste_35 = set_combine(sets.engaged.Haste_35, {
  314.             back="Solmenity Cape",--4/4
  315.             feet = "Loyalist Sabatons",--3/0
  316.             neck = "Twilight Torque",--5/5
  317.         }
  318.     )
  319.     sets.engaged.Acc.PDT.Haste_35 = set_combine(sets.engaged.Acc.Haste_35, {
  320.             back="Solmenity Cape",--4/4
  321.             feet = "Loyalist Sabatons",--3/0
  322.             neck = "Twilight Torque",--5/5
  323.         }
  324.     )
  325.  
  326.     --Max haste 0 DW.
  327.     sets.engaged.MaxHaste = {
  328.         ammo="Happo Shuriken",--0
  329.         head= "Adhemar Bonnet",--0
  330.         neck="Erudit. Necklace",--0
  331.         ear1="Cessance Earring",--0
  332.         ear2="Brutal Earring",--0
  333.         body="Rawhide Vest",--0
  334.         hands="Adhemar Wristbands",--0
  335.         ring1="Apate Ring",--0
  336.         ring2="Epona's Ring",--0
  337.         back = Andartia.DA,--0
  338.         waist="Sailfi Belt +1",--0
  339.         legs= "Samnuha Tights",--0
  340.         feet="Hiza. Sune-Ate +1"--7
  341.     }--7
  342.     sets.engaged.Acc.MaxHaste = set_combine(sets.engaged.MaxHaste,{
  343.             head = "Dampening Tam",
  344.             waist="Dynamic belt +1",
  345.         }
  346.     )
  347.     sets.engaged.HighAcc.MaxHaste = set_combine(sets.engaged.Acc.MaxHaste, {
  348.             legs = HercLegs.TP,
  349.         }
  350.     )
  351.     sets.engaged.Evasion.MaxHaste = set_combine(sets.engaged.MaxHaste,{})
  352.     sets.engaged.Acc.Evasion.MaxHaste = set_combine(sets.engaged.MaxHaste,{})
  353.     sets.engaged.PDT.MaxHaste = set_combine(sets.engaged.MaxHaste,{
  354.             back="Solmenity Cape",--4/4
  355.             feet = "Loyalist Sabatons",--3/0
  356.             neck = "Twilight Torque",--5/5
  357.         }
  358.     )
  359.     sets.engaged.Acc.PDT.MaxHaste = set_combine(sets.engaged.Acc.MaxHaste,{
  360.             back="Solmenity Cape",--4/4
  361.             feet = "Loyalist Sabatons",--3/0
  362.             neck = "Twilight Torque",--5/5
  363.         }
  364.     )
  365. ----Custom Buffs----
  366.     sets.buff.Migawari = {}
  367.     sets.buff.Doom = {}
  368.     sets.buff.Yonin = {}
  369.     sets.buff.Innin = {}
  370.  
  371. ----Ninjutsu----
  372.     --Precast
  373.     sets.precast.FC = {
  374.         ammo="Impatiens",
  375.         ear2="Loquac. Earring",
  376.         body="Taeon Tabard",
  377.         hands = "Leyline Gloves",
  378.         head = HercHead.MAB,
  379.         ring1 = "Weatherspoon Ring",
  380.     }
  381.    
  382.     sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {
  383.         body="Mochi. Chainmail +1",
  384.         back = "Andartia's Mantle",
  385.         feet = "Iga Kyahan +2"
  386.     })
  387.     --Midcast
  388.     sets.midcast.FastRecast = {
  389.         ear2="Loquac. Earring"
  390.     }
  391.  
  392.     sets.midcast.SelfNinjutsu = {
  393.         right_ear="Loquac. Earring"
  394.     }
  395.  
  396.     sets.midcast.Utsusemi = set_combine(sets.midcast.SelfNinjutsu, {
  397.  
  398.         back = "Andartia's Mantle",
  399.         feet = "Iga Kyahan +2"
  400.     })
  401.  
  402.     sets.midcast.ElementalNinjutsu = {--MACC primarily.
  403.         head="Mummu Bonnet +1",
  404.         ring1 = "Locus Ring",--"Perception Ring",
  405.         ring2 = "Weatherspoon Ring",
  406.         ear1 = "Friomisi Earring",
  407.         ear2 = "Gwati Earring",
  408.         neck = "Sanctity Necklace",
  409.         feet={ name="Herculean Boots", augments={'Mag. Acc.+15 "Mag.Atk.Bns."+15','"Fast Cast"+2','INT+3','Mag. Acc.+13','"Mag.Atk.Bns."+15',}},
  410.         hands= "Leyline Gloves",
  411.         back = Andartia.MAB,
  412.         legs = HercLegs.MAB,
  413.         body = "Samnuha Coat",
  414.         ammo = "Seething Bomblet +1"
  415.     }
  416.  
  417.     sets.midcast.ElementalNinjutsuMAB = set_combine(sets.midcast.ElementalNinjutsu, {--MAB.
  418.         head = HercHead.MAB,
  419.         ring2 = "Mujin Ring",
  420.         ear2 = "Hecate's Earring"
  421.        
  422.     })
  423.  
  424.     sets.midcast.NinjutsuDebuff = set_combine(sets.midcast.ElementalNinjutsu, {--Load this up with MACC.
  425.         hands = "Mummu Wrists +1",
  426.         ring1 = "Perception ring",
  427.     })
  428.  
  429.     sets.midcast.NinjutsuBuff = {--PDT/MDT.
  430.         back="Solemnity Cape",
  431.         ring1="Vocane Ring"
  432.     }
  433. ----Idle/Resting/Defense/Etc----
  434.     sets.resting = {}
  435.  
  436.     sets.idle = {--PDT/MDT/Regen.
  437.         head = "Dampening Tam",--0/4
  438.         hands = "Herculean Gloves",--2/0
  439.         legs = "Herculean Trousers",--2/0
  440.         feet = gear.MovementFeet,
  441.         back="Solmenity Cape",--4/4
  442.         neck="Sanctity necklace",--Regen+2
  443.         ear1 = "Infused Earring",--Regen+1
  444.         ring1 = "Archon Ring",--Occ Annul Magic
  445.     }
  446.  
  447.     sets.idle.Town = set_combine(sets.idle, {--Movement speed.
  448.         body="Councilor's Garb",
  449.         head = "Gadzradd's Helm"
  450.     })
  451.  
  452.     sets.idle.Defense = set_combine(sets.idle, {--DT
  453.         neck = "Twilight Torque",--4/4
  454.         feet = "Loyalist Sabatons",--3/0       
  455.     })
  456.    
  457.     sets.idle.MovementSpeed =  set_combine(sets.idle, {
  458.     })
  459.    
  460.     sets.idle.Weak = set_combine(sets.idle, {--PDT/MDT/Regen.
  461.     })
  462.  
  463.     sets.defense.PDT = set_combine(sets.idle, {
  464.         feet = "Loyalist Sabatons",--3/0
  465.     })
  466.  
  467.     sets.defense.MDT = set_combine(sets.idle, {
  468.         neck = "Warder's Charm",--Occ absorbs
  469.     })
  470.  
  471.     sets.Kiting = {
  472.         feet = gear.MovementFeet
  473.     }
  474.  
  475. end
  476.  
  477. ------------------------------------
  478. --Job specific hooks for casting events.
  479. ------------------------------------
  480. function job_aftercast(spell, action, spellMap, eventArgs)
  481.     if not spell.interrupted and spell.english == "Migawari: Ichi" then
  482.         state.Buff.Migawari = true
  483.     end
  484. end
  485.  
  486. ------------------------------------
  487. --Job specific hooks for non casting events.
  488. --When one of the haste related buffs come in/out of play, re-evaluate current haste values.
  489. ------------------------------------
  490. function job_buff_change(buff, gain)
  491.     if S{'haste', 'march', 'mighty guard', 'embrava', 'haste samba', 'geo-haste', 'indi-haste'}:contains(buff:lower()) then
  492.         determine_haste_group()
  493.         handle_equipping_gear(player.status)
  494.     elseif state.Buff[buff] ~= nil then
  495.         handle_equipping_gear(player.status)
  496.     end
  497. end
  498.  
  499. ------------------------------------------------------------------------
  500. ------------------------------------
  501. --User code that supplements standard library decisions.
  502. ------------------------------------
  503. ------------------------------------------------------------------------
  504.  
  505. ------------------------------------
  506. --Custom spell maps.
  507. ------------------------------------
  508. function job_get_spell_map(spell, default_spell_map)
  509.     if spell.skill == "Ninjutsu" then
  510.         if not default_spell_map then
  511.             if spell.target.type == 'SELF' then
  512.                 return 'NinjutsuBuff'
  513.             else
  514.                 return 'NinjutsuDebuff'
  515.             end
  516.         end
  517.     end
  518. end
  519.  
  520. ------------------------------------
  521. -- Modify the default idle set after it was constructed.
  522. ------------------------------------
  523. function customize_idle_set(idleSet)
  524.     if state.Buff.Migawari then
  525.         idleSet = set_combine(idleSet, sets.buff.Migawari)
  526.     end
  527.     if state.Buff.Doom then
  528.         idleSet = set_combine(idleSet, sets.buff.Doom)
  529.     end
  530.     if state.CP.current == 'on' then
  531.         equip(sets.CP)
  532.         disable('back')
  533.     else
  534.         enable('back')
  535.     end
  536.     return idleSet
  537. end
  538.  
  539. ------------------------------------
  540. -- Modify the default melee set after it was constructed.
  541. ------------------------------------
  542. function customize_melee_set(meleeSet)
  543.     if state.Buff.Migawari then
  544.         meleeSet = set_combine(meleeSet, sets.buff.Migawari)
  545.     end
  546.     if state.Buff.Doom then
  547.         meleeSet = set_combine(meleeSet, sets.buff.Doom)
  548.     end
  549.     return meleeSet
  550. end
  551.  
  552. ------------------------------------
  553. -- Called by the default 'update' self-command.
  554. ------------------------------------
  555. function job_update(cmdParams, eventArgs)
  556.     select_movement_feet()
  557.     determine_haste_group()
  558. end
  559.  
  560. ------------------------------------------------------------------------
  561. ------------------------------------
  562. --Job specific utlity functions.
  563. ------------------------------------
  564. ------------------------------------------------------------------------
  565.  
  566. ------------------------------------
  567. --Haste group determinent function.
  568. ------------------------------------
  569. function determine_haste_group()
  570.  
  571.     classes.CustomMeleeGroups:clear()
  572.     -- assuming +4 for marches (ghorn has +5)
  573.     -- Haste (white magic) 15%
  574.     -- Haste Samba (Sub) 5%
  575.     -- Haste (Merited DNC) 10% (never account for this)
  576.     -- Victory March +0/+3/+4/+5    9.4/14%/15.6%/17.1% +0
  577.     -- Advancing March +0/+3/+4/+5  6.3/10.9%/12.5%/14%  +0
  578.     -- Embrava 30% with 500 enhancing skill
  579.     -- Mighty Guard - 15%
  580.     -- buffactive[580] = geo haste
  581.     -- buffactive[33] = regular haste
  582.     -- buffactive[604] = mighty guard
  583.     -- state.HasteMode = toggle for when you know Haste II is being cast on you
  584.     -- Hi = Haste II is being cast. This is clunky to use when both haste II and haste I are being cast
  585.     if state.HasteMode.value == 'Hi' then
  586.         if ( ( (buffactive[33] or buffactive[580] or buffactive.embrava) and (buffactive.march or buffactive[604]) ) or
  587.              ( buffactive[33] and (buffactive[580] or buffactive.embrava) ) or
  588.              ( buffactive.march == 2 and buffactive[604] ) ) then
  589.             add_to_chat(8, '-------------Max-Haste Mode Enabled--------------')
  590.             classes.CustomMeleeGroups:append('MaxHaste')
  591.         elseif ( (buffactive[33] or buffactive.march == 2 or buffactive[580]) and buffactive['haste samba'] ) then
  592.             add_to_chat(8, '-------------Haste 35%-------------')
  593.             classes.CustomMeleeGroups:append('Haste_35')
  594.         elseif ( ( buffactive[580] or buffactive[33] or buffactive.march == 2 ) or
  595.                  ( buffactive.march == 1 and buffactive[604] ) ) then
  596.             add_to_chat(8, '-------------Haste 30%-------------')
  597.             classes.CustomMeleeGroups:append('Haste_30')
  598.         elseif ( buffactive.march == 1 or buffactive[604] ) then
  599.             add_to_chat(8, '-------------Haste 15%-------------')
  600.             classes.CustomMeleeGroups:append('Haste_15')
  601.         end
  602.     else
  603.         if ( buffactive[580] and ( buffactive.march or buffactive[33] or buffactive.embrava or buffactive[604]) ) or  -- geo haste + anything
  604.            ( buffactive.embrava and (buffactive.march or buffactive[33] or buffactive[604]) ) or  -- embrava + anything
  605.            ( buffactive.march == 2 and (buffactive[33] or buffactive[604]) ) or  -- two marches + anything
  606.            ( buffactive[33] and buffactive[604] and buffactive.march ) then -- haste + mighty guard + any marches
  607.             add_to_chat(8, '-------------Max Haste Mode Enabled--------------')
  608.             classes.CustomMeleeGroups:append('MaxHaste')
  609.         elseif ( (buffactive[604] or buffactive[33]) and buffactive['haste samba'] and buffactive.march == 1) or -- MG or haste + samba with 1 march
  610.                ( buffactive.march == 2 and buffactive['haste samba'] ) or
  611.                ( buffactive[580] and buffactive['haste samba'] ) then
  612.             add_to_chat(8, '-------------Haste 35%-------------')
  613.             classes.CustomMeleeGroups:append('Haste_35')
  614.         elseif ( buffactive.march == 2 ) or -- two marches from ghorn
  615.                ( (buffactive[33] or buffactive[604]) and buffactive.march == 1 ) or  -- MG or haste + 1 march
  616.                ( buffactive[580] ) or  -- geo haste
  617.                ( buffactive[33] and buffactive[604] ) then  -- haste with MG
  618.             add_to_chat(8, '-------------Haste 30%-------------')
  619.             classes.CustomMeleeGroups:append('Haste_30')
  620.         elseif buffactive[33] or buffactive[604] or buffactive.march == 1 then
  621.             add_to_chat(8, '-------------Haste 15%-------------')
  622.             classes.CustomMeleeGroups:append('Haste_15')
  623.         end
  624.     end
  625.  
  626. end
  627.  
  628. ------------------------------------
  629. --Movement feet, based on time of day.
  630. ------------------------------------
  631. function select_movement_feet()
  632.     if world.time >= 17*60 or world.time < 7*60 then
  633.         gear.MovementFeet.name = gear.NightFeet
  634.     else
  635.         gear.MovementFeet.name = gear.DayFeet
  636.     end
  637. end
  638.  
  639.  ------------------------------------
  640.  --Precast earrings, based on time of day.
  641.  ------------------------------------
  642. function job_post_precast(spell, action, spellMap, eventArgs)
  643.     if spell.type == 'WeaponSkill' then
  644.         if world.time >= 17*60 or world.time < 7*60 then
  645.             equip({ear1="Lugra Earring +1", ear2="Lugra Earring"})
  646.         end
  647.     end
  648. end
  649.  
  650.  ------------------------------------
  651.  --'Reduces Elemental Ninjutsu III (San spells) casting time by 5% per merit level'
  652.  ------------------------------------
  653. function job_post_precast(spell, action, spellMap, eventArgs)
  654.     if spellMap == 'ElementalNinjutsu' then
  655.         if spell.english:contains(': San') then
  656.             equip({})--{feet="Mochi. Kyahan +1"})
  657.         end
  658.     end
  659. end
  660.  
  661.   ------------------------------------
  662.  --'Reduces Elemental Ninjutsu III (San spells) casting time by 5% per merit level'
  663.  --Elemental obi.
  664.   ------------------------------------
  665. function job_post_midcast(spell, action, spellMap, eventArgs)
  666.     if spellMap == 'ElementalNinjutsu' then
  667.         if spell.english:contains(': San') then
  668.             equip({})--{head="Mochi. Hatsuburi +1"})
  669.         end
  670.         if spell.element == world.day_element or spell.element == world.weather_element then
  671.             equip({})--{waist="Hachirin-no-Obi"})
  672.         end
  673.         if state.Buff.Futae then
  674.             equip(sets.precast.JA['Futae'])
  675.         end
  676.         if state.Buff.Doom then
  677.         equip(sets.buff.Doom)
  678.     end
  679.     end
  680. end
  681. --------------
  682.  
  683. function precast(spell)
  684.     if sets.WS[spell.english] then
  685.         send_command('@input /echo '..spell.english)
  686.         equip(sets.WS[spell.english])
  687.     end
  688. end
  689.  
  690. -- Select default macro book on initial load or subjob change.
  691. function select_default_macro_book()
  692.     if player.sub_job == 'WAR' then
  693.         set_macro_page(1, 13)
  694.     elseif player.sub_job == 'DNC' then
  695.         set_macro_page(1, 14)
  696.     else
  697.         set_macro_page(1, 13)
  698.     end
  699. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement