Sithel

BLM GearSwap (Mote)

Jun 8th, 2014
1,259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 17.62 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Initialization function that defines sets and variables to be used.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. -- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
  6.  
  7. -- Initialization function for this job file.
  8. function get_sets()
  9.     -- Load and initialize the include file.
  10.     include('Mote-Include.lua')
  11. end
  12.  
  13.  
  14. -- Setup vars that are user-independent.
  15. function job_setup()
  16.  
  17. end
  18.  
  19.  
  20. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  21. function user_setup()
  22.     -- Options: Override default values
  23.     options.CastingModes = {'Normal', 'Resistant', 'Proc'}
  24.     options.OffenseModes = {'None', 'Normal'}
  25.     options.DefenseModes = {'Normal'}
  26.     options.WeaponskillModes = {'Normal'}
  27.     options.IdleModes = {'Normal', 'PDT', 'Vanity'}
  28.     options.RestingModes = {'Normal'}
  29.     options.PhysicalDefenseModes = {'PDT'}
  30.     options.MagicalDefenseModes = {'MDT'}
  31.  
  32.     state.Defense.PhysicalMode = 'PDT'
  33.     state.OffenseMode = 'None'
  34.  
  35.     lowTierNukes = S{'Stone', 'Water', 'Aero', 'Fire', 'Blizzard', 'Thunder',
  36.         'Stone II', 'Water II', 'Aero II', 'Fire II', 'Blizzard II', 'Thunder II',
  37.         'Stone III', 'Water III', 'Aero III', 'Fire III', 'Blizzard III', 'Thunder III',
  38.         'Stonega', 'Waterga', 'Aeroga', 'Firaga', 'Blizzaga', 'Thundaga',
  39.         'Stonega II', 'Waterga II', 'Aeroga II', 'Firaga II', 'Blizzaga II', 'Thundaga II'}
  40.        
  41.     IceNukes = S{'Blizzard', 'Blizzard II', 'Blizzard III', 'Blizzard IV', 'Blizzard V', 'Blizzaga', 'Blizzaga II', 'Blizzaga III', 'Blizzaja', 'Freeze', 'Freeze II'}
  42.  
  43.     gear.macc_hagondes = {name="Hagondes Cuffs", augments={'Phys. dmg. taken -3%','Mag. Acc.+29'}}
  44.     gear.mab_hagondes = {name="Hagondes Pants", augments={'Phys. dmg. taken -2%','Mag.Atk.Bns.+16'}}
  45.  
  46.     -- Default macro set/book
  47.     set_macro_page(4, 17)
  48. end
  49.  
  50.  
  51. -- Called when this job file is unloaded (eg: job change)
  52. function file_unload()
  53.     if binds_on_unload then
  54.         binds_on_unload()
  55.     end
  56. end
  57.  
  58.  
  59. -- Define sets and vars used by this job file.
  60. function init_gear_sets()
  61.     --------------------------------------
  62.     -- Start defining the sets
  63.     --------------------------------------
  64.    
  65.     ---- Precast Sets ----
  66.    
  67.     -- Precast sets to enhance JAs
  68.     sets.precast.JA['Mana Wall'] = {feet="Goetia Sabots +2"}
  69.  
  70.     sets.precast.JA.Manafont = {body="Arch. Coat"}
  71.    
  72.     -- equip to maximize HP (for Tarus) and minimize MP loss before using convert
  73.     sets.precast.JA.Convert = {}
  74.  
  75.  
  76.     -- Fast cast sets for spells
  77.  
  78.     sets.precast.FC = {
  79.         ammo="Impatiens",
  80.             head="Nahtirah Hat",
  81.         ear2="Loquacious Earring",
  82.         body="Hedera Cotehardie",
  83.         hands="Repartie Gloves",
  84.         ring1="Prolix Ring",
  85.         back="Swith Cape",
  86.         waist="Witful Belt",
  87.         legs="Artsieq Hose",
  88.         feet="Umbani Boots"}
  89.  
  90.     sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  91.  
  92.     sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {neck="Stoicheion Medal"})
  93.  
  94.     sets.precast.FC.Cure = set_combine(sets.precast.FC, {body="Heka's Kalasiris", back="Pahtli Cape"})
  95.  
  96.     sets.precast.FC.Curaga = sets.precast.FC.Cure
  97.  
  98.     -- Weaponskill sets
  99.     -- Default set for any weaponskill that isn't any more specifically defined
  100.     sets.precast.WS = {}
  101.  
  102.     -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
  103.     sets.precast.WS['Vidohunir'] = {}
  104.    
  105.    
  106.     ---- Midcast Sets ----
  107.  
  108.     sets.midcast.FastRecast = {
  109.         head="Nahtirah Hat",
  110.         ear2="Loquacious Earring",
  111.         body="Hedera Cotehardie",
  112.         hands="Bokwus Gloves",
  113.         ring1="Prolix Ring",
  114.         back="Swith Cape",
  115.         waist="Witful Belt",
  116.         legs="Artsieq Hose",
  117.         feet="Hagondes Sabots"}
  118.  
  119.     sets.midcast.Cure = {
  120.         main="Tamaxchi",
  121.         sub="Genbu's Shield",
  122.         head="Nahtirah Hat",
  123.         ear2="Loquacious Earring",
  124.         body="Heka's Kalasiris",
  125.         hands="Serpentes Cuffs",
  126.         ring1="Prolix Ring",
  127.         ring2="Sirona's Ring",
  128.         back="Oretania's Cape",
  129.         waist="Witful Belt",
  130.         legs="Nares Trews",
  131.         feet="Serpentes Sabots"}
  132.  
  133.     sets.midcast.Curaga = sets.midcast.Cure
  134.  
  135.     sets.midcast['Enhancing Magic'] = {
  136.             neck="Colossus's Torque",
  137.             body="Manasa Chasuble",
  138.         hands="Ayao's Gages",
  139.             legs="Portent Pants"}
  140.    
  141.     sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
  142.  
  143.     sets.midcast['Enfeebling Magic'] = {
  144.         main="Kaladanda",
  145.         sub="Mephitis Grip",
  146.         ammo="Sturm's Report",
  147.             head="Nahtirah Hat",
  148.         neck="Weike Torque",
  149.         ear1="Psystorm Earring",
  150.         ear2="Lifestorm Earring",
  151.             body="Vanir Cotehardie",
  152.         hands="Yaoyotl Gloves",
  153.         ring1="Strendu Ring",
  154.         ring2="Sangoma Ring",
  155.             back="Bane Cape",
  156.         legs="Bokwus Slops",
  157.         feet="Bokwus Boots"}
  158.        
  159.     sets.midcast.ElementalEnfeeble = sets.midcast['Enfeebling Magic']
  160.  
  161.     sets.midcast['Dark Magic'] = {
  162.         main="Kaladanda",
  163.         sub="Mephitis Grip",
  164.         ammo="Sturm's Report",
  165.             head="Nahtirah Hat",
  166.         neck="Weike Torque",
  167.         ear1="Psystorm Earring",
  168.         ear2="Lifestorm Earring",
  169.             body="Vanir Cotehardie",
  170.         hands="Yaoyotl Gloves",
  171.         ring1="Strendu Ring",
  172.         ring2="Sangoma Ring",
  173.             back="Bane Cape",
  174.         legs="Bokwus Slops",
  175.         feet="Bokwus Boots"}
  176.  
  177.     sets.midcast.Drain = {
  178.         main="Kaladanda",
  179.         sub="Mephitis Grip",
  180.         ammo="Sturm's Report",
  181.             head="Nahtirah Hat",
  182.         neck="Aesir Torque",
  183.         ear1="Psystorm Earring",
  184.         ear2="Lifestorm Earring",
  185.             body="Vanir Cotehardie",
  186.         hands="Yaoyotl Gloves",
  187.         ring1="Strendu Ring",
  188.         ring2="Sangoma Ring",
  189.             back="Bane Cape",
  190.         waist="Fucho-no-Obi",
  191.         legs="Bokwus Slops",
  192.         feet="Goetia Sabots +2"}
  193.    
  194.     sets.midcast.Aspir = sets.midcast.Drain
  195.  
  196.     sets.midcast.Stun = {
  197.         main="Apamajas II",
  198.         sub="Wizzan Grip",
  199.         ammo="Impatiens",
  200.             head="Nahtirah Hat",
  201.         neck="Eddy Necklace",
  202.         ear1="Psystorm Earring",
  203.         ear2="Lifestorm Earring",
  204.             body="Hedera Cotehardie",
  205.         hands="Yaoyotl Gloves",
  206.         ring1="Prolix Ring",
  207.         ring2="Sangoma Ring",
  208.             back="Bane Cape",
  209.         waist="Aswang Sash",
  210.         legs="Artsieq Hose",
  211.         feet="Bokwus Boots"}
  212.  
  213.     sets.midcast.BardSong = {
  214.         main="Kaladanda",
  215.         sub="Mephitis Grip",
  216.         ammo="Sturm's Report",
  217.             head="Nahtirah Hat",
  218.         neck="Weike Torque",
  219.         ear1="Psystorm Earring",
  220.         ear2="Lifestorm Earring",
  221.             body="Hagondes Coat",
  222.         hands="Yaoyotl Gloves",
  223.         ring1="Strendu Ring",
  224.         ring2="Sangoma Ring",
  225.             back="Bane Cape",
  226.         waist="Witful Belt",
  227.         legs="Orvail Pants +1",
  228.         feet="Bokwus Boots"}
  229.  
  230.  
  231.     -- Elemental Magic sets
  232.    
  233.     sets.midcast['Elemental Magic'] = {
  234.         main="Kaladanda",
  235.         sub="Wizzan Grip",
  236.         --sub="Zuuxowu Grip",
  237.         ammo="Witchstone",
  238.         --ammo="Dosis Tathlum",
  239.             head="Bokwus circlet",
  240.         neck="Eddy Necklace",
  241.         ear1="Hecate's Earring",
  242.         ear2="Friomisi Earring",
  243.             body="Bokwus Robe",
  244.         hands="Yaoyotl Gloves",
  245.         ring1="Strendu Ring",
  246.         ring2="Acumen Ring",
  247.             back=gear.ElementalCape,
  248.         waist=gear.ElementalObi,
  249.         legs=gear.mab_hagondes,
  250.         feet="Umbani Boots"}   
  251.        
  252.     sets.midcast.IceNukes = set_combine(sets.midcast['Elemental Magic'], {
  253.         main="Ngqoqwanb"})
  254.  
  255.     sets.midcast['Elemental Magic'].Resistant = {
  256.         main="Kaladanda",
  257.         sub="Wizzan Grip",
  258.         ammo="Witchstone",
  259.         --ammo="Dosis Tathlum",
  260.             head="Bokwus circlet",
  261.         neck="Eddy Necklace",
  262.         ear1="Hecate's Earring",
  263.         ear2="Friomisi Earring",
  264.             body="Arch. Coat",
  265.         hands=gear.macc_hagondes,
  266.         ring1="Diamond Ring",
  267.         ring2="Acumen Ring",
  268.             back="Toro Cape",
  269.         waist=gear.ElementalObi,
  270.         legs=gear.mab_hagondes,
  271.         feet="Bokwus Boots"}
  272.        
  273.     sets.midcast.IceNukes.Resistant = set_combine(sets.midcast['Elemental Magic'].Resistant, {
  274.         main="Ngqoqwanb"}) 
  275.    
  276.     sets.midcast['Elemental Magic'].HighTierNuke = set_combine(sets.midcast['Elemental Magic'], {sub="Wizzan Grip"})
  277.     sets.midcast['Elemental Magic'].HighTierNuke.Resistant = set_combine(sets.midcast['Elemental Magic'], {sub="Wizzan Grip"})
  278.    
  279.  
  280.  
  281.     -- Minimal damage gear for procs.
  282.     sets.midcast['Elemental Magic'].Proc = {
  283.         main="Ngqoqwanb",
  284.         sub="Mephitis Grip",
  285.         ammo="Impatiens",
  286.             head="Nahtirah Hat",
  287.         neck="Twilight Torque",
  288.         ear1="Bloodgem Earring",
  289.         ear2="Loquacious Earring",
  290.             body="Manasa Chasuble",
  291.         hands="Serpentes Cuffs",
  292.         ring1="Sheltered Ring",
  293.         ring2="Paguroidea Ring",
  294.             back="Swith Cape",
  295.         waist="Witful Belt",
  296.         legs="Nares Trews",
  297.         feet="Chelona Boots +1"}
  298.  
  299.  
  300.    
  301.     -- Sets to return to when not performing an action.
  302.    
  303.     -- Resting sets
  304.     sets.resting = {
  305.         main="Chatoyant Staff",
  306.         ammo="Clarus Stone",
  307.             head="Wivre Hairpin",
  308.         neck="Grandiose Chain",
  309.             body="Heka's Kalasiris",
  310.         hands="Serpentes Cuffs",
  311.         ring1="Sheltered Ring",
  312.         ring2="Paguroidea Ring",
  313.             waist="Hierarch Belt",
  314.         legs="Nares Trews",
  315.         feet="Serpentes Sabots"}
  316.    
  317.  
  318.     -- Idle sets
  319.    
  320.     -- Normal refresh idle set
  321.     sets.idle = {
  322.         main="Bolelabunga",
  323.         sub="Genbu's Shield",
  324.         ammo="Witchstone",
  325.         head="Wivre Hairpin",
  326.         neck="Wiglen Gorget",
  327.         ear1="Moonshade Earring",
  328.         ear2="Loquacious Earring",
  329.         body="Hagondes Coat",
  330.         hands="Serpentes Cuffs",
  331.         ring1="Sheltered Ring",
  332.         ring2="Sangoma Ring",
  333.         back="Toro Cape",
  334.         waist="Hierarch Belt",
  335.         legs="Nares Trews",
  336.         feet="Serpentes Sabots"}
  337.  
  338.     -- Idle mode that keeps PDT gear on, but doesn't prevent normal gear swaps for precast/etc.
  339.     sets.idle.PDT = {main="Earth Staff", sub="Zuuxowu Grip",ammo="Witchstone",
  340.         head="Nahtirah Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  341.         body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Dark Ring",ring2="Dark Ring",
  342.         back="Umbra Cape",waist="Hierarch Belt",legs="Hagondes Pants",feet="Herald's Gaiters"}
  343.  
  344.     -- Idle mode scopes:
  345.     -- Idle mode when weak.
  346.     sets.idle.Weak = {main="Bolelabunga",sub="Genbu's Shield",ammo="Witchstone",
  347.         head="Hagondes Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  348.         body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Dark Ring",ring2="Paguroidea Ring",
  349.         back="Umbra Cape",waist="Hierarch Belt",legs="Nares Trews",feet="Hagondes Sabots"}
  350.    
  351.     -- Town gear.
  352.     sets.idle.Town = {
  353.         main="Kaladanda",
  354.         sub="Wizzan Grip",
  355.         ammo="Witchstone",
  356.         head="Nahtirah Hat",
  357.         neck="Eddy necklace",
  358.         ear1="Hecate's Earring",
  359.         ear2="Friomisi Earring",
  360.             body="Arch. Coat",
  361.         hands="Yaoyotl Gloves",
  362.         ring1="Strendu Ring",
  363.         ring2="Acumen Ring",
  364.             back="Toro Cape",
  365.         waist="Sekhmet Corset",
  366.         legs="Artsieq Hose",
  367.         feet="Umbani Boots"}
  368.  
  369.     sets.idle.Vanity = {
  370.         main="Kaladanda",
  371.         sub="Wizzan Grip",
  372.         ammo="Witchstone",
  373.         head="Nahtirah Hat",
  374.         neck="Eddy necklace",
  375.         ear1="Hecate's Earring",
  376.         ear2="Friomisi Earring",
  377.             body="Arch. Coat",
  378.         hands="Yaoyotl Gloves",
  379.         ring1="Strendu Ring",
  380.         ring2="Acumen Ring",
  381.             back="Toro Cape",
  382.         waist="Sekhmet Corset",
  383.         legs="Artsieq Hose",
  384.         feet="Umbani Boots"}
  385.        
  386.     -- Defense sets
  387.  
  388.     sets.defense.PDT = {main="Earth Staff",sub="Zuuxowu Grip",
  389.         head="Nahtirah Hat",neck="Twilight Torque",
  390.         body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Dark Ring",ring2="Dark Ring",
  391.         back="Umbra Cape",waist="Hierarch Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
  392.  
  393.     sets.defense.MDT = {ammo="Demonry Stone",
  394.         head="Nahtirah Hat",neck="Twilight Torque",
  395.         body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Dark Ring",ring2="Shadow Ring",
  396.         back="Tuilha Cape",waist="Hierarch Belt",legs="Bokwus Slops",feet="Hagondes Sabots"}
  397.  
  398.     sets.Kiting = {feet="Herald's Gaiters"}
  399.  
  400.     sets.latent_refresh = {waist="Fucho-no-obi"}
  401.  
  402.     -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  403.    
  404.     sets.buff['Mana Wall'] = {feet="Goetia Sabots +2"}
  405.    
  406.  
  407.     -- Engaged sets
  408.  
  409.     -- Variations for TP weapon and (optional) offense/defense modes.  Code will fall back on previous
  410.     -- sets if more refined versions aren't defined.
  411.     -- If you create a set with both offense and defense modes, the offense mode should be first.
  412.     -- EG: sets.engaged.Dagger.Accuracy.Evasion
  413.    
  414.     -- Normal melee group
  415.     sets.engaged = {
  416.         waist="Chaac Belt"}
  417. end
  418.  
  419. -------------------------------------------------------------------------------------------------------------------
  420. -- Job-specific hooks that are called to process player actions at specific points in time.
  421. -------------------------------------------------------------------------------------------------------------------
  422.  
  423. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  424. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  425. function job_precast(spell, action, spellMap, eventArgs)
  426.     if spellMap == 'Cure' or spellMap == 'Curaga' then
  427.         gear.default.obi_waist = "Goading Belt"
  428.     elseif spell.skill == 'Elemental Magic' then
  429.         gear.default.obi_waist = "Sekhmet Corset"          
  430.         if state.CastingMode == 'Proc' then
  431.             classes.CustomClass = 'Proc'
  432.         end
  433.     end
  434. end
  435.  
  436. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  437. function job_midcast(spell, action, spellMap, eventArgs)
  438.     if spell.action_type == 'Magic' then
  439.         -- Default base equipment layer is fast recast.
  440.         equip(sets.midcast.FastRecast)
  441.    
  442.        
  443.         if spell.skill == 'Elemental Magic' and state.CastingMode == 'Proc' then
  444.             add_to_chat(15,'Proc mode, no damage gear for midcast.')
  445.             eventArgs.handled = true      
  446.         end
  447.     end
  448. end
  449.  
  450.  
  451. function job_aftercast(spell, action, spellMap, eventArgs)
  452.     -- Lock feet after using Mana Wall.
  453.     if not spell.interrupted and spell.english == 'Mana Wall' then
  454.         enable('feet')
  455.         equip(sets.buff['Mana Wall'])
  456.         disable('feet')
  457.     end
  458. end
  459.  
  460. -------------------------------------------------------------------------------------------------------------------
  461. -- Customization hooks for idle and melee sets, after they've been automatically constructed.
  462. -------------------------------------------------------------------------------------------------------------------
  463.  
  464. -- Custom spell mapping.
  465. function job_get_spell_map(spell, default_spell_map)
  466.     if spell.skill == 'Elemental Magic' and default_spell_map ~= 'ElementalEnfeeble' then
  467.         if IceNukes:contains(spell.english) then
  468.         return 'IceNukes'
  469.         end
  470.         --[[ No real need to differentiate with current gear.
  471.         if lowTierNukes:contains(spell.english) then
  472.             return 'LowTierNuke'
  473.         else
  474.             return 'HighTierNuke'
  475.         end
  476.         --]]
  477.     end
  478. end
  479.  
  480. -- Modify the default idle set after it was constructed.
  481. function customize_idle_set(idleSet)
  482.     if player.mpp < 51 then
  483.         idleSet = set_combine(idleSet, sets.latent_refresh)
  484.     end
  485.    
  486.     return idleSet
  487. end
  488.  
  489.  
  490. -------------------------------------------------------------------------------------------------------------------
  491. -- General hooks for other events.
  492. -------------------------------------------------------------------------------------------------------------------
  493.  
  494. -- Called when a player gains or loses a buff.
  495. -- buff == buff gained or lost
  496. -- gain == true if the buff was gained, false if it was lost.
  497. function job_buff_change(buff, gain)
  498.     -- Unlock feet when Mana Wall buff is lost.
  499.     if buff == "Mana Wall" and not gain then
  500.         enable('feet')
  501.         handle_equipping_gear(player.status)
  502.     end
  503. end
  504.  
  505.  
  506. -------------------------------------------------------------------------------------------------------------------
  507. -- User code that supplements self-commands.
  508. -------------------------------------------------------------------------------------------------------------------
  509.  
  510. -- Handle notifications of general user state change.
  511. function job_state_change(stateField, newValue, oldValue)
  512.     if stateField == 'OffenseMode' then
  513.         if newValue == 'Normal' then
  514.             disable('main','sub')
  515.         else
  516.             enable('main','sub')
  517.         end
  518.     elseif stateField == 'Reset' then
  519.         if state.OffenseMode == 'None' then
  520.             enable('main','sub')
  521.         end
  522.     end
  523. end
  524.  
  525.  
  526. -- Function to display the current relevant user state when doing an update.
  527. -- Return true if display was handled, and you don't want the default info shown.
  528. function display_current_job_state(eventArgs)
  529.     local meleeString = ''
  530.     if state.OffenseMode == 'Normal' then
  531.         meleeString = 'Melee: Weapons locked, '
  532.     end
  533.    
  534.     local defenseString = ''
  535.     if state.Defense.Active then
  536.         local defMode = state.Defense.PhysicalMode
  537.         if state.Defense.Type == 'Magical' then
  538.             defMode = state.Defense.MagicalMode
  539.         end
  540.  
  541.         defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
  542.     end
  543.  
  544.     add_to_chat(122,meleeString..'Casting ['..state.CastingMode..'], Idle ['..state.IdleMode..'], '..defenseString..
  545.         'Kiting: '..on_off_names[state.Kiting])
  546.  
  547.     eventArgs.handled = true
  548. end
  549.  
  550. -------------------------------------------------------------------------------------------------------------------
  551. -- Utility functions specific to this job.
  552. -------------------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment