LauEra

BLM.lua

Mar 17th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 17.03 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Lau's Custom ERA BLM Lua -- Based on 75 Cap Private Server --
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. --[[
  6.     Custom commands:
  7.         Ctrl + = Cycles through the available treasure hunter modes.
  8.         Ctrl + F11 Toggles Resistance & Normal Sets.  
  9.         Ctrl + F12 Toggles Idle Sets.
  10.         Alt + Tilde Toggles Magic Burst On/Off
  11.    
  12.     Treasure hunter modes:
  13.         None - Will never equip TH gear.
  14.         Tag - Will equip Lotus Katana along with Elemental Magic skill gear everytime Magic is cast.
  15. --]]
  16.  
  17. -- Initialization function for this job file --
  18.  
  19. function get_sets()
  20.     mote_include_version = 2
  21.    
  22.     sets.obi = {
  23.         Fire = {waist="Karin Obi"},
  24.         Earth = {waist="Dorin Obi"},
  25.         Water = {waist="Suirin Obi"},
  26.         Wind = {waist="Furin Obi"},
  27.         Ice = {waist="Hyorin Obi"},
  28.         Lightning = {waist="Rairin Obi"},
  29.         Light = {waist="Korin Obi"},
  30.         Dark = {waist="Anrin Obi"}}
  31.    
  32.     sets.staff = {
  33.         Fire = {main="Chatoyant Staff"},
  34.         Earth = {main="Chatoyant Staff"},
  35.         Water = {main="Chatoyant Staff"},
  36.         Wind = {main="Chatoyant Staff"},
  37.         Ice = {main="Chatoyant Staff"},
  38.         Lightning = {main="Chatoyant Staff"},
  39.         Light = {main="Chatoyant Staff"},
  40.         Dark = {main="Chatoyant Staff"}}
  41.        
  42.     sets.grips = {
  43.         Fire = {sub="Fire Grip"},
  44.         Earth = {sub="Earth Grip"},
  45.         Water = {sub="Water Grip"},
  46.         Wind = {sub="Wind Grip"},
  47.         Ice = {sub="Ice Grip"},
  48.         Lightning = {sub="Thunder Grip"},
  49.         Light = {sub="Light Grip"},
  50.         Dark = {sub="Dark Grip"}}
  51.    
  52.     sets.tonban = {
  53.         legs="Sorcerer's Tonban +1"}   
  54.        
  55.     sets.boots = {
  56.         feet="Marabout Sandals"}   
  57.    
  58. -- Load and initialize the include file --
  59.     include('Mote-Include.lua')
  60. end
  61.  
  62.  
  63. -- Setup vars that are user-independent -- state.Buff vars initialized here will automatically be tracked --
  64.  
  65. function job_setup()
  66.     include('Mote-TreasureHunter')
  67. end
  68.  
  69. -------------------------------------------------------------------------------------------------------------------
  70. -- User setup functions for this job -- Recommend that these be overridden in a sidecar file --
  71. -------------------------------------------------------------------------------------------------------------------
  72.  
  73. -- Setup vars that are user-dependent -- Can override this function in a sidecar file --
  74.  
  75. function user_setup()
  76.     state.CastingMode:options('Normal', 'Resistant')
  77.     state.IdleMode:options('Normal', 'Refresh', 'Nuke','NukeRes', 'Dark', 'Debuff', 'Enfeeb', 'Show')
  78.     state.MagicBurst = M(false, 'Magic Burst')
  79.    
  80.     -- Additional local binds --
  81.     send_command('bind ^= gs c cycle TreasureMode')
  82.     send_command('bind ^` gs c toggle MagicBurst')
  83.  
  84.     select_default_macro_book()
  85. end
  86.  
  87. -- Called when this job file is unloaded (eg: job change) --
  88.  
  89. function user_unload()
  90.     send_command('unbind ^`')
  91.     send_command('unbind ^=')  
  92. end
  93.  
  94. -- Define sets and vars used by this job file --
  95.  
  96. function init_gear_sets()
  97.    
  98.     --------------------------------------
  99.     -- Start defining the sets --
  100.     --------------------------------------
  101.    
  102.     ---- Precast Set ----  
  103.        
  104.     sets.precast.FC = {
  105.         ear1="Loquacious Earring",
  106.         feet="Rostrum Pumps"}
  107.    
  108.     ---- Yellowing Set ----
  109.    
  110.     sets.precast.FC['Elemental Magic'] = {
  111.         head="Zenith Crown",
  112.         body="Dalmatica",
  113.         hands="Zenith Mitts +1",
  114.         legs="Zenith Slacks",
  115.         left_ring="Ether Ring",
  116.         back="Ixion Cape",
  117.         right_ring="Astral Ring",
  118.         ear1="Loquacious Earring",
  119.         feet="Rostrum Pumps"}
  120.    
  121.     ---- Precast Shadows ----
  122.    
  123.     sets.precast.FC.Utsusemi = {
  124.         ear1="Loquacious Earring",
  125.         feet="Rostrum Pumps"}
  126.  
  127.     ---- Midcast Sets ----
  128.    
  129.     sets.TreasureHunter = {
  130.         main="Lotus Katana",
  131.         hands="Wizard's Gloves +1",
  132.         neck="Lemegeton medallion +1",
  133.         ammo="Sturm's Report"}
  134.    
  135.     sets.midcast.Utsusemi = {
  136.         head="Walahra Turban",
  137.         ear1="Loquacious Earring",
  138.         body="Nashira Manteel",
  139.         feet="Rostrum Pumps"}
  140.    
  141.     sets.midcast.Cure = {
  142.         main="Chatoyant Staff",sub="Raptor Leather Strap +1",
  143.         body="Nashira Manteel",
  144.         head="Walahra Turban",
  145.         hands="Bricta's Cuffs",
  146.         back="Altruistic Cape",
  147.         legs="Mahatma Slops",
  148.         ring1="Star Ring",
  149.         ring2="Tamas Ring",
  150.         ear1="Celestial Earring",
  151.         ear2="Static Earring",
  152.         feet="Mahatma Pigaches",
  153.         ammo="Phtm. Tathlum",
  154.         neck="Fylgja Torque +1",
  155.         waist="Witch Sash"}
  156.  
  157.     sets.midcast.Curaga = sets.midcast.Cure
  158.    
  159.     sets.midcast['Enhancing Magic'] = {
  160.         main="Chatoyant Staff",sub="Raptor Leather Strap +1",
  161.         head="Walahra Turban",
  162.         hands="Bricta's Cuffs",
  163.         body="Nashira Manteel",
  164.         back="Merciful Cape",
  165.         legs="Mahatma Slops",
  166.         ring1="Snow Ring",
  167.         ring2="Tamas Ring",
  168.         ear1="Loquacious Earring",
  169.         ear2="Static Earring",
  170.         ammo="Phtm. Tathlum",
  171.         feet="Genie Huaraches",
  172.         neck="Faith Torque",
  173.         waist="Penitent's Rope"}
  174.  
  175.     sets.midcast.Stoneskin = {
  176.         main="Kirin's Pole",sub="Raptor Leather Strap +1",
  177.         head="Walahra Turban",
  178.         body="Mahatma Houppelande",
  179.         back="Ixion Cape",
  180.         hands="Bricta's Cuffs",
  181.         legs="Mahatma Slops",
  182.         ring1="Star Ring",
  183.         ring2="Tamas Ring",
  184.         ear1="Celestial Earring",
  185.         ammo="Phtm. Tathlum",
  186.         ear2="Static Earring",
  187.         feet="Genie Huaraches",
  188.         neck="Faith Torque",
  189.         waist="Penitent's Rope"}
  190.    
  191.     sets.midcast.IntEnfeebles =  {
  192.         main="Chatoyant Staff",
  193.         head="Genie Tiara",
  194.         waist="Witch Sash",
  195.         body="Wizard's Coat",
  196.         legs="Igqira Lappas",
  197.         hands="Oracle's Gloves",
  198.         neck="Enfeebling Torque",
  199.         ring1="Snow Ring",
  200.         ring2="Tamas Ring",
  201.         ear2="Abyssal Earring",
  202.         ammo="Sturm's Report",
  203.         ear1="Loquacious Earring",
  204.         back="Altruistic Cape",
  205.         feet="Avocat Pigaches"}
  206.        
  207.     sets.midcast.MndEnfeebles =  {
  208.         main="Chatoyant Staff",
  209.         head="Genie Tiara",
  210.         waist="Witch Sash",
  211.         body="Wizard's Coat",
  212.         legs="Igqira Lappas",
  213.         hands="Bricta's Cuffs",
  214.         neck="Enfeebling Torque",
  215.         ring1="Star Ring",
  216.         ring2="Tamas Ring",
  217.         ear2="Static Earring",
  218.         ammo="Sturm's Report",
  219.         ear1="Celestial Earring",
  220.         back="Altruistic Cape",
  221.         feet="Avocat Pigaches"}
  222.    
  223.     sets.midcast.ElementalEnfeeble = {
  224.         main="Chatoyant Staff",
  225.         head="Sorcerer's Petasos +1",
  226.         body="Sorcerer's Coat +1",
  227.         hands="Wizard's Gloves +1",
  228.         waist="Witch Sash",
  229.         back="Merciful Cape",
  230.         legs="Mahatma Slops",
  231.         neck="Elemental Torque",
  232.         ring1="Snow Ring",
  233.         ammo="Sturm's Report",
  234.         ring2="Tamas Ring",
  235.         ear2="Abyssal Earring",
  236.         ear1="Loquacious Earring",
  237.         feet="Sorcerer's Sabots +1"}
  238.        
  239.     sets.midcast['Dark Magic'] = {
  240.         main="Chatoyant Staff",sub="Dark Grip",
  241.         head="Nashira Turban",
  242.         waist="Witch Sash",
  243.         body="Nashira Manteel",
  244.         legs="Wizard's Tonban",
  245.         hands="Sorcerer's Gloves +1",
  246.         neck="Dark Torque",
  247.         ring1="Insect Ring",
  248.         back="Merciful Cape",
  249.         ring2="Tamas Ring",
  250.         ammo="Sturm's Report",
  251.         ear2="Abyssal Earring",
  252.         ear1="Loquacious Earring",
  253.         feet="Genie Huaraches"}
  254.        
  255.     -- Nuking Sets -- Ctrl + F11 Toggles Resistance & Normal Sets --
  256.    
  257.     sets.midcast['Elemental Magic'] = {
  258.         main="Claustrum",sub="Bugard Leather Strap +1",
  259.         head="Sorcerer's Petasos +1",
  260.         neck="Uggalepih Pendant",
  261.         body="Genie Weskit",
  262.         hands="Zenith Mitts +1",
  263.         waist="Witch Sash",
  264.         back="Hecate's Cape",
  265.         legs="Mahatma Slops",
  266.         ring2="Tamas Ring",
  267.         ring1="Sorcerer's Ring",
  268.         ear1="Novio Earring",
  269.         ammo="Phtm. Tathlum",
  270.         ear2="Moldavite Earring",
  271.         feet="Sorcerer's Sabots +1"}
  272.        
  273.     sets.midcast['Elemental Magic'].Resistant = {
  274.         main="Claustrum",
  275.         head="Sorcerer's Petasos +1",
  276.         neck="Lemegeton medallion +1",
  277.         body="Genie Weskit",
  278.         hands="Wizard's Gloves +1",
  279.         waist="Witch Sash",
  280.         back="Prism Cape",
  281.         legs="Mahatma Slops",
  282.         ring2="Tamas Ring",
  283.         ring1="Sorcerer's Ring",
  284.         ear1="Novio Earring",
  285.         ear2="Moldavite Earring",
  286.         ammo="Sturm's Report",
  287.         feet="Sorcerer's Sabots +1"}
  288.    
  289.     -- Resting Set --
  290.    
  291.     sets.resting = {
  292.         main="Claustrum",sub="Bugard Leather Strap +1",
  293.         body="Oracle's Robe",
  294.         waist="Qiqirn Sash +1",
  295.         neck="Beak Necklace +1",
  296.         hands="Oracle's Gloves",
  297.         legs="Oracle's Braconi",
  298.         ear2="Relaxing Earring",
  299.         ear1="Rapture Earring",
  300.         head="Oracle's Cap",
  301.         ring1="Star Ring",
  302.         ring2="Star Ring",
  303.         feet="Avocat Pigaches",
  304.         ammo="Bibiki Seashell"}
  305.  
  306.     -- Idle Set --
  307.    
  308.     sets.idle = {
  309.         main="Claustrum",sub="Bugard Leather Strap +1",
  310.         body="Dalmatica",
  311.         ear1="Loquacious Earring",
  312.         ear2="Static Earring",
  313.         neck="Orochi Nodowa",
  314.         waist="Witch Sash",
  315.         back="Hexerei Cape",
  316.         legs="Jet Seraweels",
  317.         head="Sorcerer's Petasos +1",
  318.         hands="Zenith Mitts +1",
  319.         ring1="Defending Ring",
  320.         ring2="Tamas Ring",
  321.         feet="Herald's Gaiters",
  322.         ammo="Bibiki Seashell"}
  323.    
  324.     -- Ctrl + F12 Toggles -- To show people my sets. --
  325.    
  326.     sets.idle.Refresh = {
  327.         main="Claustrum",sub="Bugard Leather Strap +1",
  328.         body="Dalmatica",
  329.         ear1="Loquacious Earring",
  330.         ear2="Static Earring",
  331.         neck="Orochi Nodowa",
  332.         waist="Witch Sash",
  333.         back="Hexerei Cape",
  334.         legs="Jet Seraweels",
  335.         head="Sorcerer's Petasos +1",
  336.         hands="Zenith Mitts +1",
  337.         ring1="Defending Ring",
  338.         ring2="Tamas Ring",
  339.         feet="Herald's Gaiters",
  340.         ammo="Bibiki Seashell"}
  341.  
  342.     sets.idle.Enfeeb =  {
  343.         main="Chatoyant Staff",
  344.         head="Genie Tiara",
  345.         waist="Witch Sash",
  346.         body="Wizard's Coat",
  347.         legs="Igqira Lappas",
  348.         hands="Oracle's Gloves",
  349.         neck="Enfeebling Torque",
  350.         ring1="Snow Ring",
  351.         ring2="Tamas Ring",
  352.         ear2="Abyssal Earring",
  353.         ammo="Phtm. Tathlum",
  354.         ear1="Loquacious Earring",
  355.         back="Altruistic Cape",
  356.         feet="Avocat Pigaches"}
  357.  
  358.     sets.idle.Debuff = {
  359.         main="Chatoyant Staff",sub="Thunder Grip",
  360.         head="Sorcerer's Petasos +1",
  361.         body="Sorcerer's Coat +1",
  362.         hands="Wizard's Gloves +1",
  363.         waist="Witch Sash",
  364.         back="Merciful Cape",
  365.         legs="Mahatma Slops",
  366.         neck="Elemental Torque",
  367.         ring1="Snow Ring",
  368.         ammo="Phtm. Tathlum",
  369.         ring2="Tamas Ring",
  370.         ear2="Abyssal Earring",
  371.         ear1="Loquacious Earring",
  372.         feet="Sorcerer's Sabots +1"}
  373.        
  374.     sets.idle.Dark = {
  375.         main="Chatoyant Staff",sub="Dark Grip",
  376.         head="Nashira Turban",
  377.         waist="Witch Sash",
  378.         body="Nashira Manteel",
  379.         legs="Wizard's Tonban",
  380.         hands="Sorcerer's Gloves +1",
  381.         neck="Dark Torque",
  382.         ring1="Insect Ring",
  383.         back="Merciful Cape",
  384.         ring2="Tamas Ring",
  385.         ammo="Sturm's Report",
  386.         ear2="Abyssal Earring",
  387.         ear1="Loquacious Earring",
  388.         feet="Genie Huaraches"}
  389.        
  390.     sets.idle.Nuke = {
  391.         main="Claustrum",sub="Bugard Leather Strap +1",
  392.         head="Sorcerer's Petasos +1",
  393.         neck="Uggalepih Pendant",
  394.         body="Genie Weskit",
  395.         hands="Zenith Mitts +1",
  396.         waist="Witch Sash",
  397.         back="Hecate's Cape",
  398.         legs="Mahatma Slops",
  399.         ring2="Tamas Ring",
  400.         ring1="Sorcerer's Ring",
  401.         ear1="Novio Earring",
  402.         ammo="Phtm. Tathlum",
  403.         ear2="Moldavite Earring",
  404.         feet="Sorcerer's Sabots +1"}
  405.        
  406.     sets.idle.NukeRes = {
  407.         main="Claustrum",sub="Thunder Grip",
  408.         head="Sorcerer's Petasos +1",
  409.         neck="Lemegeton medallion +1",
  410.         body="Genie Weskit",
  411.         hands="Wizard's Gloves +1",
  412.         waist="Witch Sash",
  413.         back="Prism Cape",
  414.         legs="Mahatma Slops",
  415.         ring2="Tamas Ring",
  416.         ring1="Sorcerer's Ring",
  417.         ear1="Novio Earring",
  418.         ear2="Moldavite Earring",
  419.         ammo="Sturm's Report",
  420.         feet="Sorcerer's Sabots +1"}
  421.        
  422.     sets.idle.Show = {
  423.         main="Claustrum",sub="Bugard Leather Strap +1",
  424.         ammo="Sturm's Report",
  425.         head="Nashira Turban",
  426.         body="Nashira Manteel",
  427.         hands="Zenith Mitts +1",
  428.         legs="Shadow Trews",
  429.         feet="Herald's Gaiters",
  430.         neck="Uggalepih Pendant",
  431.         waist="Witch Sash",
  432.         left_ear="Novio Earring",
  433.         right_ear="Static Earring",
  434.         left_ring="Defending Ring",
  435.         right_ring="Sorcerer's Ring",
  436.         back="Ixion Cape"}
  437.  
  438.        
  439.     -- Magic Burst Set -- Alt + Tilde Toggles Magic Burst On/Off --
  440.    
  441.     sets.magicburst = {
  442.         main="Claustrum",sub="Bugard Leather Strap +1",
  443.         head="Demon Helm +1",
  444.         hands="Sorcerer's Gloves +1",
  445.         legs="Shadow Trews",
  446.         ear2="Static Earring"}
  447. end
  448.  
  449. -------------------------------------------------------------------------------------------------------------------
  450. -- Job-specific hooks for standard casting events --
  451. -------------------------------------------------------------------------------------------------------------------
  452.  
  453. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done --
  454.  
  455. -- Run after the general precast() is done.
  456.  
  457. function job_midcast(spell, action, spellMap, eventArgs)
  458.     if spell.action_type == "Magic" then
  459.       equip(sets.grips[spell.element])
  460.     end
  461. end
  462.  
  463. function job_post_midcast(spell, action, spellMap, eventArgs)
  464.     if spell.skill == 'Elemental Magic' or spell.skill == 'Dark Magic' then
  465.         if spell.element == world.weather_element or spell.element == world.day_element then
  466.             equip(sets.obi[spell.element])
  467.         end
  468.     end
  469.     if spell.skill == 'Elemental Magic' or spell.skill == 'Dark Magic' then
  470.         if spell.element == world.weather_element then
  471.             equip(sets.staff[spell.element])
  472.         end
  473.     end
  474.     if spell.skill == 'Elemental Magic' and world.day_element == 'Fire' then
  475.         equip(sets.boots)
  476.     end
  477.     if spell.action_type == "Magic" and state.TreasureMode.value == 'Tag' then
  478.         equip(sets.TreasureHunter)
  479.         equip(sets.grips[spell.element])
  480.     end
  481.     if spell.skill == 'Elemental Magic' and state.MagicBurst.value then
  482.         equip(sets.magicburst)
  483.         end
  484.     if spell.skill == 'Elemental Magic' then
  485.         if spell.element == world.day_element then
  486.             equip(sets.tonban)
  487.         end
  488.     end
  489. end
  490.      
  491. function job_aftercast(spell)
  492.     if spell.english == 'Drain' or spell.english == 'Aspir' then
  493.         send_command('@wait 50;input /echo ------- '..spell.english..' is Ready!!! -------')
  494.     end
  495.     if spell.english == 'Stun' then
  496.         send_command('@wait 37;input /echo ------- '..spell.english..' is Ready!!! -------')
  497.     end
  498.     if spell.english == 'Sleep' or spell.english == 'Sleepga' then
  499.         send_command('@wait 50;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
  500.         send_command('@wait 55;input /echo ------- '..spell.english..' is wearing off in 5 seconds -------')
  501.         send_command('@wait 57;input /echo ------- '..spell.english..' is wearing off in 3 seconds -------')
  502.     elseif spell.english == 'Sleep II' or spell.english == 'Sleepga II' then
  503.         send_command('@wait 80;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
  504.         send_command('@wait 85;input /echo ------- '..spell.english..' is wearing off in 5 seconds -------')
  505.         send_command('@wait 87;input /echo ------- '..spell.english..' is wearing off in 3 seconds -------')
  506.     end
  507. end
  508.  
  509. function job_state_change(stateField, newValue, oldValue)
  510. end
  511.  
  512. -------------------------------------------------------------------------------------------------------------------
  513. -- Job-specific hooks for non-casting events --
  514. -------------------------------------------------------------------------------------------------------------------
  515.  
  516. -- gain == true if the buff was gained, false if it was lost --
  517.  
  518. function job_buff_change(buff, gain)
  519.     if buff == 'Silence' and gain == true then
  520.         send_command('@input /item "Echo Drops" <me>')
  521.     end
  522.     if buff == 'Food' and gain == false then
  523.         send_command('@input /item "Cream Puff" <me>')
  524.     end
  525.     if buff == 'Stoneskin' and gain == false then
  526.         send_command('@input /magic "Stoneskin" <me>')
  527.     end
  528. end
  529.  
  530. -------------------------------------------------------------------------------------------------------------------
  531. -- User code that supplements standard library decisions --
  532. -------------------------------------------------------------------------------------------------------------------
  533.  
  534. -- Custom spell mapping --
  535.  
  536. function job_get_spell_map(spell, default_spell_map)
  537.     if spell.action_type == 'Magic' then
  538.         if spell.skill == 'Enfeebling Magic' then
  539.             if spell.type == 'WhiteMagic' then
  540.                 return 'MndEnfeebles'
  541.             else
  542.                 return 'IntEnfeebles'
  543.             end
  544.         end
  545.     end
  546. end
  547.  
  548. function display_current_job_state(eventArgs)
  549.     msg = msg .. 'Casting'
  550.     msg = msg .. ': [' .. state.CastingMode.value .. '], '
  551.     msg = msg .. 'Idle'
  552.     msg = msg .. ': [' .. state.IdleMode.value .. '], '
  553.  
  554.     if state.MagicBurst.value == true then
  555.         msg = msg .. 'Magic Burst: [On]'
  556.     elseif state.MagicBurst.value == false then
  557.         msg = msg .. 'Magic Burst: [Off]'
  558.     end
  559.  
  560.     add_to_chat(122, msg)
  561.  
  562.     eventArgs.handled = true
  563. end
  564.  
  565. -- Function to display the current relevant user state when doing an update --
  566.  
  567. function display_current_job_state(eventArgs)
  568.     display_current_caster_state()
  569.     eventArgs.handled = true
  570. end
  571.  
  572. -------------------------------------------------------------------------------------------------------------------
  573. -- Utility functions specific to this job --
  574. -------------------------------------------------------------------------------------------------------------------
  575.  
  576. -- Select default macro book on initial load or subjob change --
  577.  
  578. function select_default_macro_book()
  579.     set_macro_page(1, 1)
  580. end
Add Comment
Please, Sign In to add comment