Guest User

Arislan - BLM

a guest
Mar 9th, 2016
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 16.07 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.  
  17. end
  18.  
  19. -------------------------------------------------------------------------------------------------------------------
  20. -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
  21. -------------------------------------------------------------------------------------------------------------------
  22.  
  23. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  24. function user_setup()
  25.     state.OffenseMode:options('None', 'Normal')
  26.     state.CastingMode:options('Normal', 'Spaekona', 'Resistant')
  27.     state.IdleMode:options('Normal', 'PDT')
  28.    
  29.     state.MagicBurst = M(false, 'Magic Burst')
  30.     state.DeathMode = M(false, "Death Mode")
  31.  
  32.     lowTierNukes = S{'Stone', 'Water', 'Aero', 'Fire', 'Blizzard', 'Thunder'}
  33.    
  34.     -- Additional local binds
  35.     send_command('bind ^` input /ma Stun <t>')
  36.     send_command('bind !` gs c toggle MagicBurst')
  37.     send_command('bind @` gs c toggle DeathMode')
  38.     send_command('bind !o input /ma "Shock Spikes" <me>')
  39.     send_command('bind ^, input /ma Sneak <stpc>')
  40.     send_command('bind ^. input /ma Invisible <stpc>')
  41.  
  42.     select_default_macro_book()
  43. end
  44.  
  45. -- Called when this job file is unloaded (eg: job change)
  46. function user_unload()
  47.     send_command('unbind ^`')
  48.     send_command('unbind !`')
  49.     send_command('unbind @`')
  50.     send_command('unbind !o')
  51.     send_command('unbind ^,')
  52.     send_command('unbind !.')
  53. end
  54.  
  55.  
  56. -- Define sets and vars used by this job file.
  57. function init_gear_sets()
  58.     --------------------------------------
  59.     -- Start defining the sets
  60.     --------------------------------------
  61.    
  62.     ---- Precast Sets ----
  63.    
  64.     -- Precast sets to enhance JAs
  65.     sets.precast.JA['Mana Wall'] = {feet="Wicce Sabots +1"}
  66.     sets.precast.JA.Manafont = {body="Src. Coat +2"}
  67.    
  68.     -- equip to maximize HP (for Tarus) and minimize MP loss before using convert
  69.     sets.precast.JA.Convert = {}
  70.  
  71.  
  72.     -- Fast cast sets for spells
  73.  
  74.     sets.precast.FC = {
  75.         head="Amalric Coif", --10
  76.         body="Shango Robe", --8
  77.         legs="Psycloth Lappas", --7
  78.         feet="Regal Pumps +1", --7
  79.         neck="Orunmila's Torque", --5
  80.         ear1="Halasz Earring",
  81.         ear2="Loquacious Earring", --2
  82.         ring1="Prolix Ring", --2
  83.         ring2="Weather. Ring", --5
  84.         back="Swith Cape +1", --3
  85.         waist="Witful Belt", --2
  86.         }
  87.  
  88.     sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {
  89.         waist="Siegel Sash",
  90.         })
  91.  
  92.     sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {
  93.         waist="Refoccilation Stone"
  94.         })
  95.  
  96.     sets.precast.FC.Cure = set_combine(sets.precast.FC, {
  97.         main="Vadose Rod",
  98.         sub="Sors Shield", --5
  99.         ammo="Impatiens",
  100.         body="Vanya Robe", --7
  101.         feet="Vanya Clogs", --15
  102.         ring1="Lebeche Ring",
  103.         back="Pahtli Cape",
  104.         })
  105.  
  106.     sets.precast.FC.Curaga = sets.precast.FC.Cure
  107.    
  108.     sets.precast.FC.Impact = set_combine(sets.precast.FC['Elemental Magic'], {
  109.         head=empty,
  110.         body="Twilight Cloak"
  111.         })
  112.  
  113.     -- Weaponskill sets
  114.     -- Default set for any weaponskill that isn't any more specifically defined
  115.  
  116.     sets.precast.WS = {
  117.         head="Telchine Cap",
  118.         body="Telchine Chas.",
  119.         hands="Telchine Gloves",
  120.         legs="Telchine Braconi",
  121.         feet="Battlecast Gaiters",
  122.         neck=gear.ElementalGorget,
  123.         ear1="Steelflash Earring",
  124.         ear2="Bladeborn Earring",
  125.         ring1="Petrov Ring",
  126.         ring2="Ramuh Ring +1",
  127.         back="Toro Cape",
  128.         waist=gear.ElementalBelt,
  129.         }
  130.  
  131.     -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
  132.  
  133.     sets.precast.WS['Vidohunir'] = {
  134.         ammo="Ghastly Tathlum +1",
  135.         head="Pixie Hairpin +1",
  136.         body="Amalric Doublet",
  137.         hands="Amalric Gages",
  138.         legs="Merlinic Shalwar",
  139.         feet="Merlinic Crackows",
  140.         neck="Impodla Necklace",
  141.         ear1="Barkaro. Earring",
  142.         ear2="Moonshade Earring",
  143.         ring1="Shiva Ring +1",
  144.         ring2="Archon Ring",
  145.         back="Toro Cape",
  146.         waist="Yamabuki-no-Obi",
  147.         } -- INT
  148.  
  149.     sets.precast.WS['Myrkr'] = {
  150.         ammo="Strobilus",
  151.         head="Pixie Hairpin +1",
  152.         body="Amalric Doublet",
  153.         hands="Telchine Gloves",
  154.         legs="Psycloth Lappas",
  155.         feet="Telchine Pigaches",
  156.         neck="Orunmila's Torque",
  157.         ear1="Halasz Earring",
  158.         ear2="Loquacious Earring",
  159.         ring1="Mephitas's Ring +1",
  160.         ring2="Mephitas's Ring",
  161.         back="Bane Cape",
  162.         waist="Luminary Sash",
  163.         } -- Max MP
  164.  
  165.     sets.precast.Death = {
  166.         main="Grioavolr",
  167.         sub="Elder's Grip +1",
  168.         ammo="Strobilus",
  169.         head="Pixie Hairpin +1",
  170.         body="Amalric Doublet",
  171.         hands="Amalric Gages",
  172.         legs="Merlinic Shalwar",
  173.         feet="Merlinic Crackows",
  174.         neck="Mizu. Kubikazari",
  175.         ear1="Barkaro. Earring",
  176.         ear2="Static Earring",
  177.         ring1="Mephitas's Ring +1",
  178.         ring2="Archon Ring",
  179.         back="Seshaw Cape",
  180.         waist="Luminary Sash",
  181.         }
  182.    
  183.     ---- Midcast Sets ----
  184.  
  185.     sets.midcast.FastRecast = {
  186.         head="Amalric Coif",
  187.         hands="Amalric Gages",
  188.         legs="Merlinic Shalwar",
  189.         feet="Regal Pumps +1",
  190.         ear2="Loquacious Earring",
  191.         ring1="Prolix Ring",
  192.         back="Swith Cape +1",
  193.         waist="Witful Belt",
  194.         } -- Haste
  195.  
  196.     sets.midcast.Cure = {
  197.         main="Tamaxchi",
  198.         sub="Sors Shield",
  199.         ammo="Leisure Musk +1",
  200.         head="Vanya Hood",
  201.         body="Vanya Robe",
  202.         hands="Telchine Gloves",
  203.         legs="Telchine Braconi",
  204.         feet="Medium's Sabots",
  205.         neck="Incanter's Torque",
  206.         ear1="Roundel Earring",
  207.         ear2="Loquacious Earring",
  208.         ring1="Lebeche Ring",
  209.         ring2="Haoma's Ring",
  210.         back="Oretan. Cape +1",
  211.         waist="Bishop's Sash",
  212.         }
  213.  
  214.     sets.midcast.Curaga = set_combine(sets.midcast.Cure, {
  215.         ring2="Levia. Ring +1",
  216.         waist="Luminary Sash",
  217.         })
  218.  
  219.     sets.midcast.Cursna = {
  220.         feet="Vanya Clogs",
  221.         ring2="Haoma's Ring",
  222.         back="Oretan. Cape +1",
  223.         }
  224.  
  225.     sets.midcast['Enhancing Magic'] = {
  226.         head="Befouled Crown",
  227.         body="Telchine Chas.",
  228.         hands="Telchine Gloves",
  229.         legs="Telchine Braconi",
  230.         feet="Telchine Pigaches",
  231.         neck="Incanter's Torque",
  232.         ear2="Andoaa Earring",
  233.         ring2="Levia. Ring +1",
  234.         back="Fi Follet Cape +1",
  235.         waist="Olympus Sash",
  236.         }
  237.    
  238.     sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {
  239.         neck="Nodens Gorget",
  240.         waist="Siegel Sash",
  241.         })
  242.  
  243.     sets.midcast.Aquaveil = set_combine(sets.midcast['Enhancing Magic'], {
  244.         main="Vadose Rod",
  245.         head="Amalric Coif",
  246.         })
  247.  
  248.     sets.midcast.Protectra = set_combine(sets.midcast['Enhancing Magic'], {
  249.         ring1="Sheltered Ring",
  250.         })
  251.  
  252.     sets.midcast.Shellra = sets.midcast.Protectra
  253.  
  254.     sets.midcast['Enfeebling Magic'] = {
  255.         main="Lehbrailg +2",
  256.         sub="Mephitis Grip",
  257.         ammo="Pemphredo Tathlum",
  258.         head="Amalric Coif",
  259.         body="Vanya Robe",
  260.         hands="Amalric Gages",
  261.         legs="Psycloth Lappas",
  262.         feet="Medium's Sabots",
  263.         neck="Imbodla Necklace",
  264.         ear1="Barkaro. Earring",
  265.         ear2="Gwati Earring",
  266.         ring1="Sangoma Ring",
  267.         ring2="Weather. Ring",
  268.         back="Aurist's Cape +1",
  269.         waist="Luminary Sash",
  270.         } -- Magic accuracy
  271.        
  272.     sets.midcast.ElementalEnfeeble = sets.midcast['Enfeebling Magic']
  273.  
  274.     sets.midcast['Dark Magic'] = {
  275.         main="Lehbrailg +2",
  276.         sub="Mephitis Grip",
  277.         ammo="Pemphredo Tathlum",
  278.         head="Amalric Coif",
  279.         body="Shango Robe",
  280.         hands="Arch. Gloves +1",
  281.         legs="Psycloth Lappas",
  282.         feet="Merlinic Crackows",
  283.         neck="Incanter's Torque",
  284.         ear1="Barkaro. Earring",
  285.         ear2="Gwati Earring",
  286.         ring1="Evanescence Ring",
  287.         ring2="Weather. Ring",
  288.         back="Bane Cape",
  289.         waist=gear.ElementalObi,
  290.         }
  291.  
  292.     sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {
  293.         head="Pixie Hairpin +1",
  294.         ear2="Hirudinea Earring",
  295.         ring2="Archon Ring",
  296.         waist="Fucho-no-obi",
  297.         })
  298.    
  299.     sets.midcast.Aspir = sets.midcast.Drain
  300.  
  301.     sets.midcast.Stun = set_combine(sets.midcast['Dark Magic'], {
  302.         feet="Regal Pumps +1"
  303.         })
  304.  
  305.     sets.midcast.Death = set_combine(sets.precast.Death, {
  306.         waist=gear.ElementalObi,
  307.         })
  308.  
  309.     sets.midcast.BardSong = set_combine(sets.midcast['Enfeebling Magic'], {
  310.         feet="Telchine Pigaches",
  311.         })
  312.  
  313.     -- Elemental Magic sets
  314.    
  315.     sets.midcast['Elemental Magic'] = {
  316.         main="Lathi",
  317.         sub="Niobid Strap",
  318.         ammo="Pemphredo Tathlum",
  319.         head="Merlinic Hood",
  320.         body="Amalric Doublet",
  321.         hands="Amalric Gages",
  322.         legs="Merlinic Shalwar",
  323.         feet="Merlinic Crackows",
  324.         neck="Saevus Pendant +1",
  325.         ear1="Barkaro. Earring",
  326.         ear2="Friomisi Earring",
  327.         ring1="Shiva Ring +1",
  328.         ring2="Shiva Ring +1",
  329.         back="Toro Cape",
  330.         waist=gear.ElementalObi,
  331.         }
  332.  
  333.     sets.midcast['Elemental Magic'].Resistant = set_combine(sets.midcast['Elemental Magic'], {
  334.         ear2="Hermetic Earring",
  335.         ring2="Weather. Ring",
  336.         back="Aurist's Cape +1",
  337.         waist="Yamabuki-no-Obi",
  338.         })
  339.  
  340.            
  341.     sets.midcast['Elemental Magic'].Spaekona = set_combine(sets.midcast['Elemental Magic'], {
  342.         body="Spae. Coat +1",
  343.         })
  344.  
  345.     sets.midcast.Comet = set_combine(sets.midcast['Elemental Magic'], {
  346.         head="Pixie Hairpin +1",
  347.         ring2="Archon Ring",
  348.         })
  349.  
  350.     sets.midcast.Impact = set_combine(sets.midcast['Elemental Magic'], {
  351.         head=empty,
  352.         body="Twilight Cloak",
  353.         ring2="Archon Ring",
  354.         })
  355.  
  356.  
  357.     -- Minimal damage gear for procs
  358.     sets.midcast['Elemental Magic'].Proc = {
  359.         main="Chatoyant Staff"
  360.         }
  361.  
  362.  
  363.     -- Sets to return to when not performing an action.
  364.    
  365.     -- Resting sets
  366.     sets.resting = {
  367.         main="Chatoyant Staff",
  368.         waist="Austerity Belt +1",
  369.         }
  370.    
  371.  
  372.     -- Idle sets
  373.    
  374.     -- Normal refresh idle set
  375.     sets.idle = {
  376.         main="Bolelabunga",
  377.         sub="Genbu's Shield",
  378.         ammo="Pemphredo Tathlum",
  379.         head="Befouled Crown",
  380.         body="Amalric Doublet",
  381.         hands="Amalric Gages",
  382.         legs="Assid. Pants +1",
  383.         feet="Herald's Gaiters",
  384.         neck="Wiglen Gorget",
  385.         ear1="Barkaro. Earring",
  386.         ear2="Infused Earring",
  387.         ring1="Paguroidea Ring",
  388.         ring2="Sheltered Ring",
  389.         back="Umbra Cape",
  390.         waist="Refoccilation Stone",
  391.         }
  392.  
  393.     -- Idle mode that keeps PDT gear on, but doesn't prevent normal gear swaps for precast/etc.
  394.     sets.idle.PDT = set_combine(sets.idle, {
  395.         main="Bolelabunga",
  396.         sub="Genbu's Shield",
  397.         neck="Wiglen Gorget",
  398.         ring2="Dark Ring",
  399.         })
  400.  
  401.     -- Idle mode scopes:
  402.     -- Idle mode when weak.
  403.     sets.idle.Weak = sets.idle.PDT
  404.    
  405.     -- Town gear.
  406.     sets.idle.Town = set_combine(sets.idle, {
  407.         main="Lathi",
  408.         sub="Niobid Strap",
  409.         head="Merlinic Hood",
  410.         legs="Merlinic Shalwar",
  411.         neck="Saevus Pendant +1",
  412.         ring1="Shiva Ring +1",
  413.         ring2="Shiva Ring +1",
  414.         })
  415.        
  416.     -- Defense sets
  417.  
  418.     sets.defense.PDT = sets.idle.PDT
  419.  
  420.     sets.defense.MDT = {
  421.         ring2="Dark Ring",
  422.         }
  423.  
  424.     sets.Kiting = {
  425.         feet="Herald's Gaiters"
  426.         }
  427.  
  428.     sets.latent_refresh = {
  429.         waist="Fucho-no-obi"
  430.         }
  431.  
  432.     -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  433.    
  434.     sets.buff['Mana Wall'] = {
  435.         feet="Wicce Sabots +1",
  436.         }
  437.  
  438.  
  439.     sets.magic_burst = {
  440.         hands="Amalric Gages", --(5)
  441.         feet="Merlinic Shalwar", --6
  442.         feet="Merlinic Crackows", --11
  443.         neck="Mizu. Kubikazari", --10
  444.         ear2="Static Earring", --5
  445.         ring1="Locus Ring", --5
  446.         ring2="Mujin Band", --(5)
  447.         back="Seshaw Cape", --5
  448.         }
  449.  
  450.     -- Engaged sets
  451.  
  452.     -- Variations for TP weapon and (optional) offense/defense modes.  Code will fall back on previous
  453.     -- sets if more refined versions aren't defined.
  454.     -- If you create a set with both offense and defense modes, the offense mode should be first.
  455.     -- EG: sets.engaged.Dagger.Accuracy.Evasion
  456.    
  457.     -- Normal melee group
  458.  
  459.     sets.engaged = {       
  460.         head="Telchine Cap",
  461.         body="Vanya Robe",
  462.         hands="Telchine Gloves",
  463.         legs="Telchine Braconi",
  464.         feet="Battlecast Gaiters",
  465.         neck="Lissome Necklace",
  466.         ear1="Steelflash Earring",
  467.         ear2="Bladeborn Earring",
  468.         ring1="Petrov Ring",
  469.         ring2="Ramuh Ring +1",
  470.         back="Bane Cape",
  471.         waist="Windbuffet Belt +1",
  472.         }
  473.  
  474. end
  475.  
  476. -------------------------------------------------------------------------------------------------------------------
  477. -- Job-specific hooks for standard casting events.
  478. -------------------------------------------------------------------------------------------------------------------
  479.  
  480. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  481. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  482. function job_precast(spell, action, spellMap, eventArgs)
  483.     if spellMap == 'Cure' or spellMap == 'Curaga' then
  484.         gear.default.obi_waist = "Bishop's Sash"
  485.     elseif spell.skill == 'Elemental Magic' then
  486.         gear.default.obi_waist = "Refoccilation Stone"
  487.         if state.CastingMode.value == 'Proc' then
  488.             classes.CustomClass = 'Proc'
  489.         end
  490.     end
  491. end
  492.  
  493.  
  494. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  495. function job_midcast(spell, action, spellMap, eventArgs)
  496.  
  497. end
  498.  
  499. function job_post_midcast(spell, action, spellMap, eventArgs)
  500.     if spell.skill == 'Elemental Magic' and state.MagicBurst.value then
  501.         equip(sets.magic_burst)
  502.     end
  503. end
  504.  
  505. function job_aftercast(spell, action, spellMap, eventArgs)
  506.     if not spell.interrupted then
  507.         if spell.english == 'Death' then
  508.             state.DeathMode:reset()
  509.             enable('ammo', 'head', 'neck', 'ear1', 'ear2', 'body', 'hands', 'ring1', 'ring2', 'back', 'waist', 'legs', 'feet')
  510.         end
  511.         -- Lock feet after using Mana Wall.
  512.         if spell.english == 'Mana Wall' then
  513.             enable('feet')
  514.             equip(sets.buff['Mana Wall'])
  515.             disable('feet')
  516.         end
  517.     end
  518. end
  519.  
  520. -------------------------------------------------------------------------------------------------------------------
  521. -- Job-specific hooks for non-casting events.
  522. -------------------------------------------------------------------------------------------------------------------
  523.  
  524. -- Called when a player gains or loses a buff.
  525. -- buff == buff gained or lost
  526. -- gain == true if the buff was gained, false if it was lost.
  527. function job_buff_change(buff, gain)
  528.     -- Unlock feet when Mana Wall buff is lost.
  529.     if buff == "Mana Wall" and not gain then
  530.         enable('feet')
  531.         handle_equipping_gear(player.status)
  532.     end
  533. end
  534.  
  535. -- Handle notifications of general user state change.
  536. function job_state_change(stateField, newValue, oldValue)
  537.     if stateField == 'Offense Mode' then
  538.         if newValue == 'Normal' then
  539.             disable('main','sub','range')
  540.         else
  541.             enable('main','sub','range')
  542.         end
  543.     end
  544. end
  545.  
  546.  
  547. -------------------------------------------------------------------------------------------------------------------
  548. -- User code that supplements standard library decisions.
  549. -------------------------------------------------------------------------------------------------------------------
  550.  
  551. -- Custom spell mapping.
  552. function job_get_spell_map(spell, default_spell_map)
  553.     if spell.skill == 'Elemental Magic' and default_spell_map ~= 'ElementalEnfeeble' then
  554.         --[[ No real need to differentiate with current gear.
  555.         if lowTierNukes:contains(spell.english) then
  556.             return 'LowTierNuke'
  557.         else
  558.             return
  559.         end
  560.         --]]
  561.     end
  562. end
  563.  
  564. -- Modify the default idle set after it was constructed.
  565. function customize_idle_set(idleSet)
  566.     if state.DeathMode.current == 'on' then
  567.         equip(sets.precast.Death)
  568.         disable('ammo', 'head', 'neck', 'ear1', 'ear2', 'body', 'hands', 'ring1', 'ring2', 'back', 'waist', 'legs', 'feet')
  569.     else
  570.         enable('ammo', 'head', 'neck', 'ear1', 'ear2', 'body', 'hands', 'ring1', 'ring2', 'back', 'waist', 'legs', 'feet')
  571.     end
  572.     if player.mpp < 51 then
  573.         idleSet = set_combine(idleSet, sets.latent_refresh)
  574.     end
  575.    
  576.     return idleSet
  577. end
  578.  
  579.  
  580. -- Function to display the current relevant user state when doing an update.
  581. function display_current_job_state(eventArgs)
  582.     display_current_caster_state()
  583.     eventArgs.handled = true
  584. end
  585.  
  586.  
  587. -------------------------------------------------------------------------------------------------------------------
  588. -- Utility functions specific to this job.
  589. -------------------------------------------------------------------------------------------------------------------
  590.  
  591. -- Select default macro book on initial load or subjob change.
  592. function select_default_macro_book()
  593.     set_macro_page(1, 5)
  594. end
Advertisement
Add Comment
Please, Sign In to add comment