Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 33.96 KB | None | 0 0
  1. --------------------------------------------------------------------------
  2. --- RDM GEARSWAP LUA
  3. -------------------------------------------------------------------------- 
  4.  
  5. --[[   
  6.    
  7.     Ice     =   Paralyze, Bind, Frost, Eva Down, AGI Down
  8.     Wind    =   Silence, Gravity, Choke, Def Down, VIT Down
  9.     Earth   =   Slow, Petrify, Rasp, Acc Down, DEX Down
  10.     Thunder =   Stun, Shock, MND Down
  11.     Water   =   Poison, Drown, STR Down, Atk Down, M. Def Down
  12.     Fire    =   Addle, Amnesia, Virus, Burn, Nocturne, MAB down, INT Down
  13.    
  14. --]]
  15.  
  16.  
  17. --------------------------------------------------------------------------
  18. --- INCLUDE
  19. --------------------------------------------------------------------------
  20.  
  21.     function get_sets()
  22.  
  23.         include('Include.lua')
  24.         include('ui-lib-mule')
  25.  
  26.     end
  27.  
  28.  
  29. --------------------------------------------------------------------------
  30. --- JOB SETUP
  31. --------------------------------------------------------------------------
  32.    
  33.     function job_setup()
  34.        
  35.     --- Loading Addons  
  36.         send_command('lua load debuffed')  
  37.            
  38.     --- Enfeebling Spell Map       
  39.         enfeeb_maps = {
  40.        
  41.         --- Pure Macc  
  42.             ['Sleep']='macc', ['Sleep II']='macc', ['Sleepga']='macc',
  43.             ['Silence']='macc',
  44.             ['Dispel']='macc',
  45.             ['Break']='macc',
  46.             ['Bind']='macc',
  47.             ['Frazzle']='macc', ['Frazzle II']='macc',  
  48.            
  49.         --- Potency
  50.             ['Dia']='potency', ['Dia II']='potency', ['Dia III']='potency',
  51.             ['Bio']='potency', ['Bio II']='potency', ['Bio III']='potency',
  52.             ['Gravity']='potency', ['Gravity II']='potency',
  53.             ['Inundation']='potency',
  54.            
  55.         --- Mnd & Potency
  56.             ['Paralyze']='mndpot', ['Paralyze II']='mndpot',
  57.             ['Slow']='mndpot', ['Slow II']='mndpot',
  58.             ['Adle']='mndpot', ['Adle II']='mndpot',
  59.  
  60.         --- Int & Potency
  61.             ['Blind']='intpot', ['Blind II']='intpot',
  62.            
  63.         --- Skill, Mnd, & Potency
  64.             ['Frazzle III']='skillmndpot',
  65.             ['Distract']='skillmndpot', ['Distract II']='skillmndpot', ['Distract III']='skillmndpot',
  66.        
  67.         --- Skill & Potency
  68.             ['Poison']='skillpot', ['Poison II']='skillpot', ['Poisonga']='skillpot',
  69.  
  70.         }
  71.        
  72.         skill_spells = S{'Temper', 'Temper II', 'Enfire', 'Enfire II', 'Enblizzard', 'Enblizzard II', 'Enaero', 'Enaero II', 'Enstone', 'Enstone II', 'Enthunder', 'Enthunder II', 'Enwater', 'Enwater II'}
  73.  
  74.     --- Auto Modes
  75.         state.AutoShadowMode = M(false, 'Auto Shadow Mode')
  76.         state.AutoPositionMode = M(true, 'Auto Position Mode') 
  77.        
  78.     --- Nuke Gear  
  79.         gear.obi_high_nuke_waist = "Refoccilation Stone"
  80.  
  81.     end
  82.  
  83.  
  84. --------------------------------------------------------------------------
  85. --- USER SETUP
  86. --------------------------------------------------------------------------
  87.  
  88.     function user_setup()
  89.        
  90.     --- Default States
  91.         state.OffenseMode:options('None')
  92.         state.CastingMode:options('Normal')
  93.         state.IdleMode:options('Normal')   
  94.         state.Weapons:options('None','Crocea','Naegling','Murgleis')
  95.        
  96.     --- Auto Modes
  97.         send_command('bind ~numpad7 gs c toggle AutoPositionMode')
  98.        
  99.     --- Cycle Binds
  100.         send_command('bind %z gs c cycle Weapons')
  101.        
  102.     --- JobA Binds     
  103.         send_command('bind %e input /ja "Saboteur" <me>')
  104.         send_command('bind !e input /ja "Spontaneity" <me>')
  105.         send_command('bind delete input /ja "Composure" <me>')
  106.  
  107.     --- Buffs Binds
  108.         send_command('bind %1 input /ma "Aquaveil" <me>')
  109.         send_command('bind %2 input /ma "Blink" <me>')
  110.         send_command('bind %3 input /ma "Stoneskin" <me>')
  111.         send_command('bind %4 input /ma "Phalanx II" <stpt>')
  112.         send_command('bind %5 input /ma "Haste II" <stpt>')
  113.         send_command('bind %6 input /ma "Refresh III" <stpt>')
  114.         send_command('bind %7 input /ma "Regen II" <stpt>')
  115.         send_command('bind %8 input /ma "Shock Spikes" <me>')
  116.         send_command('bind %9 input /ma "Protect V" <stpt>')   
  117.         send_command('bind %0 input /ma "Shell V" <stpt>') 
  118.    
  119.     --- RDM Binds
  120.         send_command('bind ^d input /ma "Dispel" <t>')
  121.         send_command('bind !d input /ma "Drain" <t>')
  122.         send_command('bind ^a input /ma "Aspir" <t>')
  123.         send_command('bind ^s input /ma "Sleep II" <t>')
  124.        
  125.    
  126.     --- Subjobs Binds
  127.         if player.sub_job == 'SCH' then
  128.             send_command('bind end input /ja "Light Arts" <me>')
  129.             send_command('bind pagedown input /ja "Dark Arts" <me>')
  130.            
  131.             send_command('wait 5; input //gs equip sets.stylelock; wait 5; input /lockstyleset 1;wait 2; input //gs c update')
  132.            
  133.         elseif player.sub_job == 'BLM' then
  134.             send_command('bind %x input /ma "Stun" <t>; input /party Stun just used!')
  135.             send_command('bind !s input /ma "Sleepga" <t>')
  136.            
  137.             send_command('wait 5; input //gs equip sets.stylelock; wait 5; input /lockstyleset 1;wait 2; input //gs c update')
  138.            
  139.         elseif player.sub_job == 'NIN' then
  140.             send_command('bind end input /ja "Temper II" <me>')
  141.             send_command('bind pagedown input /ja "Gain-STR" <me>')    
  142.             send_command('bind %numpad9 gs c toggle AutoShadowMode')
  143.             send_command('bind %~e input /ma "Utsusemi: Ni" <me>')
  144.            
  145.             send_command('wait 5; input /lockstyleset 1')
  146.         end
  147.  
  148.     --- Misc
  149.         select_default_macro_book()
  150.        
  151.     --- Load Check 
  152.         windower.add_to_chat(8,'---- RDM.lua Loaded ----')
  153.                
  154.     end
  155.  
  156.  
  157. --- User Unload
  158.     function user_unload()
  159.    
  160.     --- Unlock Gear
  161.         send_command('input //gs enable all')  
  162.        
  163.     --- Unloading Addons
  164.         send_command('lua unload debuffed')    
  165.        
  166.     end
  167.  
  168.  
  169. --------------------------------------------------------------------------
  170. --- GEAR SETS
  171. --------------------------------------------------------------------------
  172.  
  173.     function init_gear_sets()
  174.  
  175.        
  176.     ----------------------------------------------------------------------
  177.     --- Misc
  178.     ---------------------------------------------------------------------- 
  179.    
  180. --- Remove Shield from Lockstyle
  181.     sets.stylelock = {
  182.         main  =  "Chatoyant Staff",
  183.         sub   =  "Enki Strap",
  184.     }
  185.  
  186.  
  187.     ----------------------------------------------------------------------
  188.     --- RDM Augments
  189.     ----------------------------------------------------------------------
  190.    
  191.     SucellosMND     = { name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','MND+10','Weapon skill damage +10%','Phys. dmg. taken-10%',}}
  192.     SucellosMeva    = { name="Sucellos's Cape", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','"Fast Cast"+10','Phys. dmg. taken-10%',}}
  193.     SucellosHeal    = { name="Sucellos's Cape", augments={'MND+20','MND+10','Enmity-10','Phys. dmg. taken-10%',}}
  194.     SucellosINT     = { name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Mag.Atk.Bns."+10','Phys. dmg. taken-10%',}}
  195.     SucellosDW      = { name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+5','"Dual Wield"+10','Phys. dmg. taken-10%',}}
  196.     SucellosWSD     = { name="Sucellos's Cape", augments={'STR+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}}
  197.  
  198.     TelchineHead_ENHD = { name="Telchine Cap", augments={'Enh. Mag. eff. dur. +9',}}
  199.     TelchineLegs_ENHD = { name="Telchine Braconi", augments={'Enh. Mag. eff. dur. +10',}}
  200.    
  201.     TaeonHead_Phalanx  = { name="Taeon Chapeau", augments={'"Conserve MP"+3','Phalanx +2',}}
  202.     TaeonHands_Phalanx = { name="Taeon Gloves", augments={'"Conserve MP"+2','Phalanx +2',}}
  203.    
  204.     ChironicHoseMnd = { name="Chironic Hose", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','MND+12','Mag. Acc.+13','"Mag.Atk.Bns."+4',}}
  205.  
  206.     GrioavolrMND = { name="Grioavolr", augments={'"Conserve MP"+5','MND+15','Mag. Acc.+21','"Mag.Atk.Bns."+2','Magic Damage +3',}}
  207.  
  208.  
  209.     ----------------------------------------------------------------------
  210.     --- Set Buffs
  211.     ----------------------------------------------------------------------
  212.    
  213.     sets.precast.JA['Chainspell'] = { body="Vitiation Tabard +3" }
  214.  
  215.  
  216.     --------------------------------------------------------------------------
  217.     --- Idle
  218.     --------------------------------------------------------------------------         
  219.  
  220. --- Idle | PDT 51/50
  221.     sets.idle = {
  222.         main  =  "Bolelabunga",
  223.         sub   =  "Genmei Shield",
  224.         ammo  =  "Staunch Tathlum +1",
  225.         range =  empty,
  226.         head  =  "Vitiation Chapeau +3", -- REF'3
  227.         neck  =  "Warder's Charm +1",
  228.         ear1  =  "Genmei Earring", --- Etiolation
  229.         ear2  =  "Hearty Earring",
  230.         body  =  "Atrophy Tabard +3", -- REF'3
  231.         hands =  "Ayanmo Manopolas +2", -- DT'3
  232.         ring1 =  "Vocane Ring", -- DT'7
  233.         ring2 =  "Defending Ring", -- DT'10
  234.         back  =  SucellosMeva, -- PDT'10
  235.         waist =  "Carrier's Sash",
  236.         legs  =  "Vitiation Tights +3", -- PDT'5       
  237.         feet  =  "Ayanmo Gambieras +2" -- DT'3
  238.     }
  239.  
  240. --- Refresh on Low MP
  241.     sets.latent_refresh = {
  242.         ammo  =  "Homiliary",
  243.         neck  =  "Loricate Torque +1",
  244.         waist =  "Fucho-no-Obi",
  245.         ring1 =  {name="Stikini Ring +1", bag="wardrobe"},
  246.         ring2 =  {name="Stikini Ring +1", bag="wardrobe2"}
  247.     }
  248.    
  249. --- Resting
  250.     sets.resting = {
  251.         main  =  "Chatoyant Staff",
  252.         waist =  "Austerity Belt +1"
  253.     }
  254.  
  255.    
  256.     --------------------------------------------------------------------------
  257.     --- Defense
  258.     --------------------------------------------------------------------------         
  259.  
  260.     sets.defense.PDT = set_combine(sets.idle, {})
  261.     sets.defense.MDT = set_combine(sets.idle, {})
  262.  
  263.  
  264.     --------------------------------------------------------------------------
  265.     --- Precast & Recast
  266.     --------------------------------------------------------------------------
  267.  
  268. --- FastCast | FC'50/42
  269.     sets.precast.FC = {
  270.     --- main  =  "Mafic Cudgel",
  271.         head  =  "Atrophy Chapeau +2", -- FC'16%
  272.         ear1  =  "Etiolation Earring", -- FC'1%
  273.         ear2  =  "Loquacious Earring", -- FC'2%
  274.         body  =  "Vitiation Tabard +3", -- FC'15%
  275.         back  =  SucellosMeva, -- FC'10%
  276.         legs  =  "Ayanmo Cosciales +2", -- FC'6%
  277.     }
  278.        
  279.     --- FastRecast and Conserve MP
  280.         sets.midcast.FastRecast = set_combine(sets.precast.FC, {
  281.             range =  empty,
  282.             ammo  =  "Pemphredo Tathlum", -- CMP'4
  283.             neck  =  "Incanter's Torque", -- 1% Save
  284.             ear1  =  "Calamitous Earring", -- CMP'4
  285.             ear2  =  "Magnetic Earring", -- CMP'5
  286.             back  =  "Fi Follet Cape +1", -- CMP'5
  287.             waist =  "Hachirin-no-Obi" -- 1% Save
  288.         })
  289.    
  290.     --- Utsusemi
  291.         sets.precast.FC.Utsusemi = sets.precast.FC
  292.        
  293.  
  294.     --------------------------------------------------------------------------
  295.     --- Healing Magic
  296.     --------------------------------------------------------------------------
  297.    
  298. --- Cure | CP'61/50 | EN'45/45
  299.     sets.midcast.Cure = {
  300.         main  =  "Tamaxchi", -- CP'22
  301.         sub   =  "Ammurapi Shield",
  302.         ammo  =  "Esper Stone +1", -- EN'-5
  303.         range =  empty,
  304.         head  =  "Kaykaus Mitra +1", -- CP'11 | EN'-6
  305.     --  neck  =  "Incanter's Torque",
  306.         ear1  =  "Regal Earring",
  307.         ear2  =  "Healing Earring",
  308.         body  =  "Kaykaus Bliaut +1", -- EN'-6
  309.         hands =  "Kaykaus Cuffs +1", -- CP'11 | EN'-6
  310.         ring1 =  {name="Stikini Ring +1", bag="wardrobe"},
  311.         ring2 =  {name="Stikini Ring +1", bag="wardrobe2"},
  312.         waist =  "Bishop's Sash",
  313.         back  =  SucellosHeal, -- EN'-10
  314.         legs  =  "Kaykaus Tights +1",  -- CP'11 | EN'-6
  315.         feet  =  "Kaykaus Boots +1" -- CP'17 | EN'-6
  316.     }
  317.  
  318.         sets.midcast.Curaga = set_combine(sets.midcast.Cure,{})
  319.  
  320.         sets.midcast.CureWeather = set_combine(sets.midcast.Cure,{
  321.             main  =  "Chatoyant Staff",
  322.             sub   =  "Enki Strap",
  323.         --  waist = "Hachirin-no-Obi",
  324.         --  back  = "Twilight Cape"
  325.         })
  326.  
  327.         sets.midcast.StatusRemoval = set_combine(sets.midcast.Cure,{
  328.         --  head  =  "Vanya Hood",
  329.         --  body  =  "Vanya Robe",
  330.             legs  =  "Atrophy Tights +2",
  331.         --  feet  =  VanyaFeet_CST -- CRN'+5   
  332.         })
  333.  
  334.             sets.midcast.Cursna = set_combine(sets.midcast.StatusRemoval,{
  335.                 neck  =  "Malison Medallion", -- CRN'+10
  336.                 body  =  "Vitiation Tabard +3",
  337.             --  hands =  VanyaHands_HMS,
  338.                 ring1 =  "Ephedra Ring", -- CRN'+5
  339.             --  back  =  "Oretania's Cape +1", -- CRN'+5
  340.             --  legs  =  VanyaLegs_HMS,
  341.             --  feet  =  VanyaFeet_CST -- CRN'+5
  342.             })
  343.  
  344.    
  345.     --------------------------------------------------------------------------
  346.     --- Enhancing Magic
  347.     -------------------------------------------------------------------------- 
  348.    
  349. --- Enhancing Base | 516/500
  350.     sets.midcast['Enhancing Magic'] = {
  351.         main  =  "Colada",
  352.         sub   =  "Ammurapi Shield",
  353.         head  =  TelchineHead_ENHD,
  354.         neck  =  "Duelist's Torque +2",
  355.         ear1  =  "Andoaa Earring",
  356.         ear2  =  "Augmenting Earring",
  357.         body  =  "Vitiation Tabard +3",
  358.         hands =  "Atrophy Gloves +3",
  359.         ring1 =  {name="Stikini Ring +1", bag="wardrobe"},
  360.         ring2 =  {name="Stikini Ring +1", bag="wardrobe2"},
  361.         back  =  "Ghostfyre Cape",
  362.         waist =  "Olympus Sash",
  363.         legs  =  TelchineLegs_ENHD,
  364.         feet  =  "Lethargy Houseaux +1"
  365.     }
  366.    
  367.     --- Enhancing Skill | Temper Enspells
  368.         sets.midcast.EnhancingSkill = set_combine(sets.midcast['Enhancing Magic'], {
  369.             main  =  "Pukulatmuj +1",
  370.             sub  =   "Pukulatmuj",
  371.             head  =  "Umuthi Hat", -- Befouled Crown
  372.         --  neck  =  "Incanter's Torque"
  373.             hands =  "Vitiation Gloves +3",
  374.             legs  =  "Atrophy Tights +2",
  375.             feet  =  "Lethargy Houseaux +1"
  376.         })
  377.    
  378.     --- Gain & Spikes
  379.         sets.midcast.GainSpell = { hands="Vitiation Gloves +3" }
  380.         sets.midcast.SpikesSpell = { legs="Vitiation Tights +3" }
  381.    
  382. --- Duration for NoSkill Enhancing Magic
  383.     sets.midcast.EnhancingDuration = {
  384.         main  =  "Colada",
  385.         sub   =  "Ammurapi Shield",
  386.         head  =  TelchineHead_ENHD,
  387.         neck  =  "Duelist's Torque +2",
  388.         body  =  "Vitiation Tabard +3",
  389.         hands =  "Atrophy Gloves +3",
  390.         ring1 =  {name="Stikini Ring +1", bag="wardrobe"},
  391.         ring2 =  {name="Stikini Ring +1", bag="wardrobe2"},
  392.         back  =  "Ghostfyre Cape",
  393.         legs  =  TelchineLegs_ENHD,
  394.         feet  =  "Lethargy Houseaux +1"
  395.     }  
  396.    
  397.         --- Enhancing on others
  398.             sets.midcast.Composure = set_combine(sets.midcast.EnhancingDuration, {
  399.                 head  =  "Lethargy Chappel +1",
  400.                 body  =  "Lethargy Sayon +1",
  401.                 legs  =  "Lethargy Fuseau +1",
  402.                 feet  =  "Lethargy Houseaux +1"
  403.             })
  404.        
  405.         --- Refresh
  406.             sets.midcast.Refresh = set_combine(sets.midcast.EnhancingDuration, {
  407.                 head  =  "Amalric Coif +1", -- +2
  408.                 body  =  "Atrophy Tabard +3", -- +3
  409.                 legs  =  "Lethargy Fuseau +1", -- +2
  410.             })
  411.            
  412.             --- RefreshSelf
  413.                 sets.Self_Refresh = {
  414.                 --- waist = "Gishdubar Sash",
  415.                     back  = "Grapevine Cape"
  416.                 }
  417.                
  418.         --- Stoneskin
  419.             sets.midcast.Stoneskin = set_combine(sets.midcast.EnhancingDuration, {
  420.                 neck  =  "Nodens Gorget"
  421.             })
  422.            
  423.         --- Aquaveil
  424.             sets.midcast.Aquaveil = set_combine(sets.midcast.EnhancingDuration, {
  425.             --- main  =  "Vadose Rod",
  426.                 head  =  "Amalric Coif +1",
  427.             --- hands =  "Regal Cuffs",
  428.                 waist =  "Emphatikos Rope"
  429.             })
  430.  
  431.         --- Storm
  432.             sets.midcast.Storm = set_combine(sets.midcast.EnhancingDuration, {})
  433.                    
  434.         --- Phalanx | 504
  435.             sets.midcast['Phalanx'] = set_combine(sets.midcast.EnhancingDuration, {
  436.                 head  = TaeonHead_Phalanx,
  437.                 hands = TaeonHands_Phalanx
  438.             })
  439.                    
  440.         --- Protect
  441.             sets.midcast.Protect = set_combine(sets.midcast.EnhancingDuration, {
  442.                 ring1 = "Sheltered Ring"
  443.             })
  444.                
  445.                 sets.midcast.Protectra = sets.midcast.Protect
  446.  
  447.         --- Shell      
  448.             sets.midcast.Shell = set_combine(sets.midcast.EnhancingDuration, {
  449.                 ring1 = "Sheltered Ring"
  450.             })
  451.            
  452.                 sets.midcast.Shellra = sets.midcast.Shell
  453.  
  454.  
  455.     --------------------------------------------------------------------------
  456.     --- Enfeebling Magic
  457.     --------------------------------------------------------------------------
  458.  
  459.     sets.midcast.Enfeebling = {}
  460.    
  461. --- Pure Macc | Sleep  Silence  Dispel  Break  Bind  Frazzle I-II
  462.     sets.midcast.Enfeebling.macc = {
  463.         main  =  "Murgleis",
  464.         sub   =  "Ammurapi Shield",
  465.         range =  "Ullr",
  466.         ammo  =  empty,
  467.         head  =  "Vitiation Chapeau +3",
  468.         neck  =  "Duelist's Torque +2",
  469.         ear1  =  "Dignitary's Earring",
  470.         ear2  =  "Regal Earring",
  471.         body  =  "Atrophy Tabard +3",
  472.         hands =  "Kaykaus Cuffs +1",
  473.         ring1 =  {name="Stikini Ring +1", bag="wardrobe"},
  474.         ring2 =  {name="Stikini Ring +1", bag="wardrobe2"},
  475.         back  =  SucellosINT,
  476.         legs  =  ChironicHoseMnd,
  477.         waist =  "Luminary Sash",
  478.         feet  =  "Vitiation Boots +3"
  479.     }
  480.    
  481.     --- Stun
  482.         sets.midcast["Stun"] = set_combine(sets.midcast.Enfeebling.macc, {})
  483.    
  484.     --- Mnd & Potency | Paralyze  Slow  Addle
  485.         sets.midcast.Enfeebling.mndpot = set_combine(sets.midcast.Enfeebling.macc, {
  486.         --- Regal Gem
  487.             back  =  SucellosMND,
  488.         })
  489.        
  490.     --- Int & Potency | Blind
  491.         sets.midcast.Enfeebling.intpot= set_combine(sets.midcast.Enfeebling.macc, {
  492.         --- Regal Gem
  493.             body  = "Lethargy Sayon +1"
  494.         })
  495.        
  496.     --- Skill & Potency | Poison
  497.         sets.midcast.Enfeebling.skillpot= set_combine(sets.midcast.Enfeebling.macc, {
  498.         --- Regal Gem
  499.         })
  500.        
  501.     --- Skill, Mnd, & Potency | Frazzle III  Distract I-III
  502.         sets.midcast.Enfeebling.skillmndpot= set_combine(sets.midcast.Enfeebling.macc, {
  503.             back  =  SucellosMND,
  504.         })
  505.        
  506.     --- Potency | Dia  Bio  Gravity  Inundation
  507.         sets.midcast.Enfeebling.potency= set_combine(sets.midcast.Enfeebling.macc, {
  508.         --- Regal Gem
  509.             ring2 = "Kishar Ring",
  510.             body  = "Lethargy Sayon +1"
  511.         })
  512.            
  513.     --- Aspir
  514.         sets.midcast.Aspir = set_combine(sets.midcast.Enfeebling.macc, {
  515.             head  =  "Pixie Hairpin +1",
  516.             neck  =  "Erra Pendant",
  517.             waist =  "Fucho-no-Obi",
  518.         })
  519.    
  520.         --- Drain
  521.             sets.midcast.Drain = set_combine(sets.midcast.Aspir, {})   
  522.            
  523.        
  524.     --------------------------------------------------------------------------
  525.     --- Divine Magic
  526.     --------------------------------------------------------------------------
  527.  
  528.     sets.midcast['Divine Magic'] = {
  529.  
  530.     }
  531.  
  532.  
  533.     --------------------------------------------------------------------------
  534.     --- Elemental Magic
  535.     --------------------------------------------------------------------------
  536.    
  537.    sets.midcast['Elemental Magic'] = {
  538.         main  =  GrioavolrMND,
  539.         sub   =  "Enki Strap",
  540.         range =  "Ullr",
  541.         ammo  =  empty,
  542.         head  =  "Amalric Coif +1",
  543.         neck  =  "Duelist's Torque +2",
  544.         ear1  =  "Friomisi Earring",
  545.         ear2  =  "Regal Earring",
  546.         body  =  "Amalric Doublet +1",
  547.         hands =  "Amalric Gages +1",
  548.         ring1 =  "Jhakri Ring",
  549.         ring2 =  "Shiva Ring +1",
  550.         back  =  SucellosINT,
  551.         waist =  gear.ElementalObi,
  552.         legs  =  "Amalric Slops +1",
  553.         feet  =  "Amalric Nails +1"
  554.    }
  555.  
  556.    
  557.     --------------------------------------------------------------------------
  558.     --- Weapons
  559.     --------------------------------------------------------------------------
  560.  
  561.     sets.weapons.Crocea = {
  562.         main  =  "Crocea Mors",
  563.         sub   =  "Tauret",
  564.         range =  "Ullr",
  565.         ammo  =  "Silver Arrow"
  566.     }
  567.    
  568.     sets.weapons.Murgleis = {
  569.         main  =  "Murgleis",
  570.         sub   =  "Thibron",
  571.         range =  "Ullr",
  572.         ammo  =  "Silver Arrow"
  573.     }
  574.  
  575.     sets.weapons.Naegling = {
  576.         main  =  "Naegling",
  577.         sub   =  "Thibron",
  578.         range =  "Ullr",
  579.         ammo  =  "Silver Arrow"
  580.     }
  581.  
  582.     sets.EnhWeapon = {
  583.         main  =  "Pukulatmuj +1",
  584.         sub   =  "Pukulatmuj"
  585.     }
  586.    
  587.  
  588.     --------------------------------------------------------------------------
  589.     --- Enganged
  590.     --------------------------------------------------------------------------
  591.  
  592.     sets.engaged = {
  593.         head  =  "Ayanmo Zucchetto +1",
  594.         neck  =  "Anu Torque", 
  595.         ear1  =  "Dignitary's Earring", -- Sherida
  596.         ear2  =  "Dedition Earring",       
  597.         body  =  "Ayanmo Corazza +2",
  598.         hands =  "Ayanmo Manopolas +2",
  599.         ring1 =  {name="Chirich Ring +1", bag="wardrobe"},
  600.         ring2 =  {name="Chirich Ring +1", bag="wardrobe2"},
  601.         back  =  SucellosDW, -- DA Cape
  602.         waist =  "Windbuffet Belt +1", 
  603.         legs  =  "Ayanmo Cosciales +2",
  604.         feet  =  "Ayanmo Gambieras +2"
  605.     }
  606.    
  607.    
  608.     --------------------------------------------------------------------------
  609.     --- Enganged Crocea Mors
  610.     --------------------------------------------------------------------------
  611.  
  612.     sets.engaged.Crocea = {
  613.         head  =  "Ayanmo Zucchetto +1",
  614.         neck  =  "Anu Torque", 
  615.         ear1  =  "Dignitary's Earring", -- Sherida
  616.         ear2  =  "Dedition Earring",       
  617.         body  =  "Ayanmo Corazza +2",
  618.         hands =  "Ayanmo Manopolas +2",
  619.         ring1 =  {name="Chirich Ring +1", bag="wardrobe"},
  620.         ring2 =  {name="Chirich Ring +1", bag="wardrobe2"},
  621.         back  =  SucellosDW,
  622.         waist =  "Orpheus's Sash", 
  623.         legs  =  "Ayanmo Cosciales +2",
  624.         feet  =  "Ayanmo Gambieras +2"
  625.     }
  626.    
  627.  
  628.     --------------------------------------------------------------------------
  629.     --- Enganged Murgleis
  630.     --------------------------------------------------------------------------
  631.  
  632.     sets.engaged.Murgleis = {
  633.         head  =  "Ayanmo Zucchetto +1",
  634.         neck  =  "Anu Torque", 
  635.         ear1  =  "Dignitary's Earring", -- Sherida
  636.         ear2  =  "Dedition Earring",       
  637.         body  =  "Ayanmo Corazza +2",
  638.         hands =  "Ayanmo Manopolas +2",
  639.         ring1 =  {name="Chirich Ring +1", bag="wardrobe"},
  640.         ring2 =  {name="Chirich Ring +1", bag="wardrobe2"},
  641.         back  =  SucellosDW,
  642.         waist =  "Windbuffet Belt +1", 
  643.         legs  =  "Ayanmo Cosciales +2",
  644.         feet  =  "Ayanmo Gambieras +2"
  645.     }
  646.  
  647.  
  648.     --------------------------------------------------------------------------
  649.     --- Weaponskills
  650.     -------------------------------------------------------------------------- 
  651.    
  652. --- Savage Blade | Death Blossom   
  653.     sets.precast.WS = {
  654.         head  =  "Vitiation Chapeau +3",
  655.         neck  =  "Duelist's Torque +2",    
  656.         ear1  =  "Regal Earring",
  657.         ear2  =  "Ishvara Earring",
  658.         body  =  "Vitiation Tabard +3",
  659.         hands =  "Atrophy Gloves +3",
  660.         ring1 =  "Epaminondas's Ring",
  661.         ring2 =  "Rufescent Ring", 
  662.         back  =  SucellosWSD,
  663.         waist =  "Prosilio Belt +1",           
  664.         legs  =  "Jhakri Slops +2",
  665.         feet  =  "Jhakri Pigaches +2" -- DM?
  666.     }
  667.    
  668. --- Chant du Cygne (80% DEX | fTP: 1.6 )
  669. --  sets.precast.WS['Chant du Cygne'] = {
  670. --
  671. --  }
  672.  
  673. --- Requiescat (73~85% MND | fTP: 1 )
  674.     sets.precast.WS['Requiescat'] = {
  675.     --  ammmo =  "Regal Gem",
  676.         head  =  "Jhakri Coronal +1",
  677.         neck  =  "Duelist's Torque +2", --- Fotia  
  678.         ear1  =  "Regal Earring",   --  ear1  =  "Sherida Earring",
  679.         ear2  =  "Ishvara Earring",     --  ear2  =  "Moonshade Earring"
  680.         body  =  "Jhakri Robe +2",
  681.         hands =  "Atrophy Gloves +3",
  682.         ring1 =  "Epaminondas's Ring", --- Shukuyu Ring
  683.         ring2 =  "Rufescent Ring", 
  684.         back  =  SucellosWSD, -- DA Cape
  685.         waist =  "Prosilio Belt +1", --- Fotia         
  686.         legs  =  "Jhakri Slops +2",
  687.         feet  =  "Jhakri Pigaches +2"
  688.     }  
  689.    
  690. --- Sanguine Blade (50% MND / 30% STR | fTP: 2.75 | Dark Element)
  691.     sets.precast.WS['Sanguine Blade'] = {
  692.         range =  "Ullr",   
  693.         head  =  "Pixie Hairpin +1",
  694.         neck  =  "Duelist's Torque +2", -- Baetyl Pendant
  695.         ear1  =  "Friomisi Earring",
  696.         ear2  =  "Regal Earring",
  697.         body  =  "Amalric Doublet +1",
  698.         hands =  "Jhakri Cuffs +2",
  699.         ring1 =  "Epaminondas's Ring",
  700.         ring2 =  "Shiva Ring +1", -- Archon Ring
  701.         back  =  SucellosMND,
  702.         waist =  "Orpheus's Sash", 
  703.         legs  =  "Amalric Slops +1",
  704.         feet  =  "Amalric Nails +1"
  705.     }
  706.    
  707. --- Seraph Blade (40% STR / 40% MND | fTP: 1.125-4.125 | Light Element)
  708.     sets.precast.WS['Seraph Blade'] = {
  709.         range =  "Ullr",   
  710.         head  =  "Jhakri Coronal +1",
  711.         neck  =  "Duelist's Torque +2", -- Baetyl Pendant
  712.         ear1  =  "Friomisi Earring",
  713.         ear2  =  "Regal Earring",
  714.         body  =  "Amalric Doublet +1",
  715.         hands =  "Jhakri Cuffs +2",
  716.         ring1 =  "Epaminondas's Ring",
  717.         ring2 =  "Shiva Ring +1", -- Weather. Ring
  718.         back  =  SucellosMND,
  719.         waist =  "Orpheus's Sash",
  720.         legs  =  "Amalric Slops +1",
  721.         feet  =  "Amalric Nails +1"
  722.     }
  723.  
  724. --- Red Lotus Blade (40% STR / 40% INT | fTP: 1-3.75 | Fire Element)
  725.     sets.precast.WS['Red Lotus Blade'] = {
  726.         range =  "Ullr",   
  727.         head  =  "Jhakri Coronal +1",
  728.         neck  =  "Duelist's Torque +2", -- Baetyl Pendant
  729.         ear1  =  "Friomisi Earring",
  730.         ear2  =  "Regal Earring",
  731.         body  =  "Amalric Doublet +1",
  732.         hands =  "Jhakri Cuffs +2",
  733.         ring1 =  "Epaminondas's Ring",
  734.         ring2 =  "Shiva Ring +1", -- Weather. Ring
  735.         back  =  SucellosMND,
  736.         waist =  "Orpheus's Sash",
  737.         legs  =  "Amalric Slops +1",
  738.         feet  =  "Amalric Nails +1"
  739.     }
  740.    
  741. --- Black Halo (70% MND / 30% STR | fTP: 3-9.75)
  742.     sets.precast.WS['Black Halo'] = {
  743.     --  ammo =  "Regal Gem",   
  744.         head  =  "Vitiation Chapeau +3",
  745.         neck  =  "Duelist's Torque +2",
  746.         ear1  =  "Regal Earring",
  747.     --  ear2  =  "Moonshade Earring",
  748.         body  =  "Vitiation Tabard +3",
  749.         hands =  "Atrophy Gloves +3",
  750.         ring1 =  "Epaminondas's Ring",
  751.         ring2 =  "Rufescent Ring", 
  752.         back  =  SucellosMND,
  753.         waist =  "Luminary Sash",  
  754.         legs  =  "Vitiation Tights +3",
  755.         feet  =  "Jhakri Pigaches +2" -- DM?
  756.     }
  757.    
  758.    
  759.     end
  760.    
  761.  
  762. --------------------------------------------------------------------------
  763. --- Filter FUNCTION
  764. --------------------------------------------------------------------------
  765.  
  766. --- Filter Precast
  767.     function job_filter_precast(spell, spellMap, eventArgs)
  768.        
  769.         if spell.name == "Light Arts" then
  770.             if buffactive['Light Arts']  then
  771.                 cancel_spell()
  772.                 send_command('input /ja "Addendum: White" <me>')
  773.             elseif buffactive['Addendum: White'] then
  774.                 cancel_spell()
  775.                 send_command('input /ma "Aurorastorm" <me>')
  776.             end
  777.         elseif spell.name == "Dark Arts" then
  778.             if buffactive['Dark Arts']  then
  779.                 cancel_spell()
  780.                 send_command('input /ja "Addendum: Black" <me>')
  781.             end
  782.         end    
  783.        
  784.     end
  785.  
  786.  
  787. --------------------------------------------------------------------------
  788. --- PRECAST FUNCTION
  789. -------------------------------------------------------------------------- 
  790.    
  791.     function job_precast(spell, spellMap, eventArgs)
  792.  
  793.         if spell.action_type == 'Magic' then
  794.             if spell.skill == 'Elemental Magic' and default_spell_map ~= 'ElementalEnfeeble' then
  795.                 gear.default.obi_waist = gear.obi_high_nuke_waist
  796.             elseif spell.english == 'Phalanx II' and (spell.target.type == 'SELF' or buffactive.Accession) then
  797.                 windower.chat.input('/ma "Phalanx" <me>')
  798.                 cancel_spell()
  799.                 eventArgs.cancel = true
  800.             elseif spell.english == 'Phalanx' and (spell.target.type ~= 'SELF') then
  801.                 windower.chat.input('/ws "Phalanx II" '..spell.target.raw)
  802.                 cancel_spell()
  803.                 eventArgs.cancel = true
  804.             end
  805.         end
  806.        
  807.     end
  808.  
  809.    
  810. --------------------------------------------------------------------------
  811. --- MIDCAST FUNCTION
  812. -------------------------------------------------------------------------- 
  813.  
  814. --- Post Midcast
  815.     function job_post_midcast(spell, action, spellMap, eventArgs)
  816.    
  817.         local enfeebMap = get_enfeeb_map(spell)
  818.    
  819.         if spell.skill == 'Enhancing Magic' then
  820.        
  821.         --- Duration Gear
  822.             if classes.NoSkillSpells:contains(spell.english) then
  823.                 equip(sets.midcast.EnhancingDuration)
  824.                 if spellMap == 'Refresh' then
  825.                     equip(sets.midcast.Refresh)
  826.                     if spell.target.type == 'SELF' then
  827.                         equip(sets.Self_Refresh)
  828.                     end
  829.                 end
  830.             elseif skill_spells:contains(spell.english) then
  831.                 equip(sets.midcast.EnhancingSkill)
  832.             --- Equip Weapons for Temper / Enspells
  833.                 if sets.EnhWeapon then
  834.                     enable('main','sub','range','ammo')
  835.                     equip(sets.EnhWeapon)
  836.                 end
  837.             elseif spell.english:startswith('Gain') then
  838.                 equip(sets.midcast.GainSpell)
  839.             elseif spell.english:contains('Spikes') then
  840.                 equip(sets.midcast.SpikesSpell)
  841.             end
  842.            
  843.         --- Composure on Targets
  844.             if (spell.target.type == 'PLAYER' or spell.target.type == 'NPC') and buffactive['Composure'] then
  845.                 equip(sets.midcast.Composure)
  846.             end
  847.        
  848.         elseif spell.skill == 'Enfeebling Magic' then
  849.             equip(sets.midcast.Enfeebling[enfeebMap])
  850.         end
  851.    
  852.     end
  853.  
  854.  
  855. --------------------------------------------------------------------------
  856. --- AFTERCAST
  857. --------------------------------------------------------------------------
  858.  
  859.     function job_aftercast(spell, spellMap, eventArgs)
  860.    
  861.     --- Equip Back Weapons after Temper / Enspells
  862.         if not spell.interrupted and state.Weapons.value ~= "None" then
  863.             if skill_spells:contains(spell.english) then
  864.                 if player.equipment.main and sets.EnhWeapon and player.equipment.main == sets.EnhWeapon.main and player.equipment.main ~= sets.weapons[state.Weapons.value].main then
  865.                     handle_weapons()
  866.                 end
  867.             end
  868.         end
  869.        
  870.     end
  871.  
  872.  
  873. --------------------------------------------------------------------------
  874. --- SPELL MAP
  875. --------------------------------------------------------------------------
  876.  
  877.     function job_get_spell_map(spell, default_spell_map)
  878.    
  879.         if spell.action_type == 'Magic' then
  880.             if default_spell_map == 'Cure' or default_spell_map == 'Curaga' then
  881.                 if (world.weather_element == 'Light' or world.day_element == 'Light') then
  882.                     return 'CureWeather'
  883.                 end
  884.             end
  885.         end
  886.        
  887.     end
  888.  
  889.     function get_enfeeb_map(spell)
  890.         return enfeeb_maps[spell.name]
  891.     end
  892.  
  893.  
  894. --------------------------------------------------------------------------
  895. --- UPDATE COMBAT/MELEE FORM | JOB | STATUS FUNCTION
  896. --------------------------------------------------------------------------
  897.    
  898. --- Melee Groups
  899.     function update_melee_groups()
  900.         classes.CustomMeleeGroups:clear()
  901.     end
  902.    
  903. --- Call Update
  904.     function job_update(cmdParams, eventArgs)
  905.         update_melee_groups()
  906.     end
  907.  
  908.  
  909. --------------------------------------------------------------------------
  910. --- BUFF CHANGE FUNCTION
  911. --------------------------------------------------------------------------
  912.  
  913.     function job_buff_change(buff, gain)
  914.  
  915.     --- Roll Buff Gain
  916.         if buff:startswith('Aftermath') then
  917.             update_melee_groups()
  918.         end
  919.  
  920.     --- Loss Notifications
  921.         if buff == "Aftermath: Lv.3" and not gain then
  922.             add_to_chat(28, '---- Aftermath Down ----')
  923.         elseif buff:startswith('Food') and not gain then
  924.             add_to_chat(28, '---- Food Off ----')  
  925.         end
  926.        
  927.     end
  928.    
  929.  
  930. --------------------------------------------------------------------------
  931. --- JOB STATE CHANGE
  932. --------------------------------------------------------------------------
  933.  
  934.     function job_state_change(stateField, newValue, oldValue)
  935.  
  936.     --- State Change on Weapon Switch
  937.         if stateField == 'Weapons' then
  938.        
  939.             if newValue == 'Crocea' then
  940.                
  941.                 autows = "Sanguine Blade"
  942.                 autowstp = 2000
  943.  
  944.             --- Bind WeaponSkills
  945.                 send_command('bind !q input /ws "Savage Blade" <t>')
  946.                 send_command('bind %q input /ws "Sanguine Blade" <t>')
  947.                 send_command('bind ^q input /ws "Chant du Cygne" <t>') 
  948.                 send_command('bind pagedown input /ja "Gain-INT" <me>')
  949.            
  950.             elseif newValue == 'Murgleis' then
  951.                
  952.                 autows = "Death Blossom"
  953.                 autowstp = 1000
  954.                 send_command('wait 5; input /lockstyleset 2')
  955.                
  956.             --- Bind WeaponSkills
  957.                 send_command('bind !q input /ws "Savage Blade" <t>')
  958.                 send_command('bind %q input /ws "Death Blossom" <t>')
  959.                 send_command('bind ^q input /ws "Chant du Cygne" <t>') 
  960.                 send_command('bind pagedown input /ja "Gain-STR" <me>')
  961.                
  962.             elseif newValue == 'Naegling' then
  963.                
  964.                 autows = "Savage Blade"
  965.                 autowstp = 1000
  966.                 send_command('wait 5; input /lockstyleset 2')
  967.                
  968.             --- Bind WeaponSkills
  969.                 send_command('bind %q input /ws "Savage Blade" <t>')
  970.                 send_command('bind ^q input /ws "Chant du Cygne" <t>') 
  971.                 send_command('bind pagedown input /ja "Gain-STR" <me>')
  972.                
  973.             elseif newValue == 'None' then
  974.            
  975.                 autowstp = 1000
  976.                
  977.             end
  978.            
  979.         end
  980.        
  981.     end
  982.    
  983.    
  984. --------------------------------------------------------------------------
  985. --- MELEE SET FUNCTION
  986. --------------------------------------------------------------------------
  987.  
  988.     function job_customize_melee_set(meleeSet)
  989.  
  990.     --- Low HP Rule
  991.         if player.hp < 500 then
  992.             meleeSet = set_combine(meleeSet, sets.defense.PDT)
  993.             add_to_chat(28, '---- Low HP | Hyprid Gear ----')
  994.         end
  995.        
  996.         return meleeSet
  997.        
  998.     end
  999.    
  1000.    
  1001. --------------------------------------------------------------------------
  1002. --- IDLE SET FUNCTION
  1003. --------------------------------------------------------------------------
  1004.  
  1005.     function job_customize_idle_set(idleSet)
  1006.  
  1007.     --- Refresh on Low MP
  1008.         if player.mpp < 51 and state.DefenseMode.value == 'None' then
  1009.             idleSet = set_combine(idleSet, sets.latent_refresh)
  1010.         end
  1011.            
  1012.         return idleSet
  1013.    
  1014.     end
  1015.    
  1016.    
  1017. --------------------------------------------------------------------------
  1018. --- CALL TICK
  1019. --------------------------------------------------------------------------     
  1020.  
  1021.     function job_tick()
  1022.         if check_shadows() then return true end
  1023.         if check_position() then return true end
  1024.         return false
  1025.     end
  1026.    
  1027.    
  1028. --------------------------------------------------------------------------
  1029. --- AUTO SHADOW FUNCTION
  1030. -------------------------------------------------------------------------- 
  1031.  
  1032. --- Count Shadows
  1033.     function has_shadows()
  1034.         if  buffactive["Copy Image (4+)"] then
  1035.             return 4
  1036.         elseif buffactive["Copy Image (3)"] then
  1037.             return 3
  1038.         elseif buffactive["Copy Image (2)"] then
  1039.             return 2
  1040.         elseif buffactive["Copy Image"] then
  1041.             return 1
  1042.         else
  1043.             return 0
  1044.         end
  1045.     end
  1046.  
  1047. --- Check Shadows
  1048.     function check_shadows()
  1049.         if not state.AutoShadowMode.value or areas.Cities:contains(world.area) then
  1050.             return false
  1051.         elseif handle_shadows() then
  1052.             return true
  1053.         else
  1054.             return false
  1055.         end
  1056.     end
  1057.  
  1058. --- Handle Shadows
  1059.     function handle_shadows()
  1060.         local spell_recasts = windower.ffxi.get_spell_recasts()
  1061.         local currentshadows = has_shadows()
  1062.  
  1063.         if player.sub_job == 'NIN' then
  1064.             if currentshadows < 2 then
  1065.                 if spell_recasts[339] < spell_latency then
  1066.                     windower.chat.input('/ma "Utsusemi: Ni" <me>')
  1067.                     tickdelay = os.clock() + 1.8
  1068.                     return true
  1069.                 elseif spell_recasts[338] < spell_latency then
  1070.                     windower.chat.input('/ma "Utsusemi: Ichi" <me>')
  1071.                     tickdelay = os.clock() + 2
  1072.                     return true
  1073.                 else
  1074.                     return false
  1075.                 end
  1076.             else
  1077.                 return false
  1078.             end
  1079.         end
  1080.     end
  1081.    
  1082.    
  1083. --------------------------------------------------------------------------
  1084. --- AUTO POSITION FUNCTION
  1085. --------------------------------------------------------------------------     
  1086.  
  1087. --- Check Position
  1088.     function check_position()
  1089.         if not state.AutoPositionMode.value or areas.Cities:contains(world.area) then
  1090.             return false
  1091.         elseif handle_position() then
  1092.             return true
  1093.         else
  1094.             return false
  1095.         end
  1096.     end
  1097.        
  1098. --- Handle Position
  1099.     function handle_position()
  1100.         if player.status == "Engaged" and player.target.type == "MONSTER" then
  1101.             face_target(actor)
  1102.         end
  1103.     end
  1104.  
  1105.  
  1106. --------------------------------------------------------------------------
  1107. --- UTILITY FUNCTIONS
  1108. --------------------------------------------------------------------------
  1109.    
  1110. --- Lock off on Engage
  1111.     function job_status_change(newStatus, oldStatus, eventArgs)
  1112.    
  1113.         if newStatus == "Engaged" and player.target.type == "MONSTER" then
  1114.             send_command('input /lockon')
  1115.         end
  1116.        
  1117.     end
  1118.  
  1119. --- Display States
  1120.     function display_current_job_state(eventArgs)
  1121.         display_current_caster_state()
  1122.         eventArgs.handled = true
  1123.     end
  1124.  
  1125. --- Change Macro Book to BLM
  1126.     function select_default_macro_book()
  1127.         set_macro_page(1, 1)
  1128.     end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement