Pergatory

Pergatory's SMN Gearswap

Jan 27th, 2017 (edited)
23,192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 54.67 KB | None | 0 0
  1. -- Summoner Gearswap Lua by Pergatory - http://pastebin.com/u/pergatory
  2. -- IdleMode determines the set used after casting. You change it with "/console gs c <IdleMode>"
  3. -- The out-of-the-box modes are:
  4. -- Refresh: Uses the most refresh available.
  5. -- DT: A mix of refresh, PDT, and MDT to help when you can't avoid AOE.
  6. -- PetDT: Sacrifice refresh to reduce avatar's damage taken. WARNING: Selenian Cap drops you below 119, use with caution!
  7. -- DD: When melee mode is on and you're engaged, uses TP gear. Otherwise, avatar melee gear.
  8. -- Favor: Uses Beckoner's Horn and max smn skill to boost the favor effect.
  9. -- Zendik: Favor build with the Zendik Robe added in, for Shiva's Favor in manaburn parties. (Shut up, it sounded like a good idea at the time)
  10.  
  11. -- You can add your own modes in the IdleModes list, just make sure to add corresponding sets as well.
  12.  
  13. -- Additional Bindings:
  14. -- F9 - Toggles between a subset of IdleModes (Refresh > DT > PetDT)
  15. -- Ctrl+F9 - Toggles WeaponLock (When enabled, equips Nirvana and Elan+1, then disables those 2 slots from swapping)
  16. --       NOTE: If you don't already have the Nirvana & Elan+1 equipped, YOU WILL LOSE TP
  17.  
  18. -- Additional Commands:
  19. -- /console gs c AccMode - Toggles high-accuracy sets to be used where appropriate.
  20. -- /console gs c ImpactMode - Toggles between using normal magic BP set for Fenrir's Impact or a custom high-skill set for debuffs.
  21. -- /console gs c ForceIlvl - I have this set up to override a few specific slots where I normally use non-ilvl pieces.
  22. -- /console gs c TH - Treasure Hunter toggle. By default, this is only used for Dia, Dia II, and Diaga.
  23. -- /console gs c LagMode - Used to help BPs land in the right gear in high-lag situations.
  24. --                          Sets a timer to swap gear 0.5s after the BP is used rather than waiting for server response.
  25.  
  26. function file_unload()
  27.     send_command('unbind f9')
  28.     send_command('unbind f11')
  29.     send_command('unbind ^f9')
  30.     send_command('unbind ^f10')
  31.     enable("main","sub","range","ammo","head","neck","ear1","ear2","body","hands","ring1","ring2","back","waist","legs","feet")
  32. end
  33.  
  34. function get_sets()
  35.     enable("main","sub","range","ammo","head","neck","ear1","ear2","body","hands","ring1","ring2","back","waist","legs","feet")
  36.     -- Binding shorthand: ^ = Ctrl, ! = Alt, ~ = Shift, @ = Win, # = Apps
  37.     send_command('bind f9 gs c ToggleIdle') -- F9 = Cycle through commonly used idle modes
  38.     send_command('bind f11 gs c ForceIlvl') -- Ctrl+F9 = Toggle ForceIlvl
  39.     send_command('bind ^f9 gs c WeaponLock') -- F10 = Toggle Melee Mode
  40.     send_command('bind ^f10 gs c TH') -- Ctrl+F10 = Treasure Hunter toggle
  41.  
  42.     -- Set your merits here. This is used in deciding between Enticer's Pants or Apogee Slacks +1.
  43.     -- To change in-game, "/console gs c MeteorStrike3" will change Meteor Strike to 3/5 merits.
  44.     -- The damage difference is very minor unless you're over 2400 TP.
  45.     -- It's ok to just always use Enticer's Pants and ignore this section.
  46.     MeteorStrike = 1
  47.     HeavenlyStrike = 1
  48.     WindBlade = 1
  49.     Geocrush = 1
  50.     Thunderstorm = 5
  51.     GrandFall = 1
  52.  
  53.     StartLockStyle = '85'
  54.     IdleMode = 'Refresh'
  55.     AccMode = false
  56.     ImpactDebuff = false
  57.     WeaponLock = false
  58.     TreasureHunter = false
  59.     Empy = false -- Empy toggle for Wards. I use this set in V25s to try for a chance at a ward that lasts the whole fight.
  60.     THSpells = S{"Dia","Dia II","Diaga","Bio","Bio II"} -- If you want Treasure Hunter gear to swap for a spell/ability, add it here.
  61.     ForceIlvl = false
  62.     LagMode = false -- Default LagMode. If you have a lot of lag issues, change to "true".
  63.         -- Warning: LagMode can cause problems if you spam BPs during Conduit because it doesn't trust server packets to say whether the BP is readying or not.
  64.     SacTorque = true -- If you have Sacrifice Torque, this will auto-equip it when slept in order to wake up.
  65.     AutoRemedy = false -- Auto Remedy when using an ability while Paralyzed.
  66.     AutoEcho = false -- Auto Echo Drop when using an ability while Silenced.
  67.     TestMode = false
  68.  
  69.     -- Add idle modes here if you need more options for your sets
  70.     IdleModes = {'Refresh','DT','DD','PetDT','PetDD','Favor','Zendik','MEva','Enspell','Kite'}
  71.    
  72.     -- Custom idle modes - If you want toggles that change the normal behavior you can add them here.
  73.     -- For example when I lock Opashoro, I lose the perp down of Nirvana and my sets need to compensate, so I added a custom mode for it.
  74.     -- "/console gs c Custom <mode>" to change mode, and append ".<mode>" to the end of the set name to use it in that mode.
  75.     CustomMode = 'None'
  76.     CustomModes = {'None','Opashoro'}
  77.  
  78.     -- ===================================================================================================================
  79.     --      Sets
  80.     -- ===================================================================================================================
  81.  
  82.     -- Base Damage Taken Set - Mainly used when IdleMode is "DT"
  83.     sets.DT_Base = {
  84.         main="Nirvana",
  85.         sub="Oneiros Grip",
  86.         ammo="Epitaph",
  87.         head="Beckoner's Horn +3",
  88.         neck="Summoner's Collar +2",
  89.         ear1="Cath Palug Earring",
  90.         ear2="Beckoner's Earring +1",
  91.         body="Beckoner's Doublet +3",
  92.         hands={ name="Merlinic Dastanas", augments={'Pet: Crit.hit rate +2','"Mag.Atk.Bns."+25','"Refresh"+2','Mag. Acc.+10 "Mag.Atk.Bns."+10',}},
  93.         ring1="Inyanga Ring",
  94.         ring2="Defending Ring",
  95.         back={ name="Campestres's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Mag.Atk.Bns."+10','Phys. dmg. taken-10%',}},
  96.         waist="Carrier's Sash",
  97.         legs="Inyanga Shalwar +2",
  98.         feet="Baayami Sabots +1"
  99.     }
  100.  
  101.     -- Treasure Hunter set. Don't put anything in here except TH+ gear.
  102.     -- It overwrites slots in other sets when TH toggle is on (Ctrl+F10).
  103.     sets.TH = {
  104.         head="Volte Cap",
  105.         waist="Chaac Belt",
  106.         body="Nyame Mail", -- Because otherwise Cohort Cloak and such mess up the swap
  107.         hands="Volte Bracers",
  108.         feet="Volte Boots"
  109.     }
  110.    
  111.     -- This gets equipped automatically when you have Sneak/Invis or Quickening such as from Fleet Wind.
  112.     sets.Movement = {
  113.         ring1="Shneddick Ring +1"
  114.         --feet="Herald's Gaiters"
  115.     }
  116.  
  117.     sets.precast = {}
  118.  
  119.     -- Fast Cast
  120.     sets.precast.FC = {
  121.         main={ name="Grioavolr", augments={'"Fast Cast"+6','INT+2','"Mag.Atk.Bns."+17',}}, -- +10
  122.         sub="Clerisy Strap +1", -- +3
  123.         --ammo="Sapience Orb",
  124.         head="Amalric Coif +1", -- +11
  125.         neck="Orunmila's Torque", -- +5
  126.         ear1="Malignance Earring", -- +4
  127.         ear2="Loquacious Earring", -- +2
  128.         hands={ name="Telchine Gloves", augments={'Mag. Evasion+25','"Fast Cast"+5','Enh. Mag. eff. dur. +10',}},
  129.         body="Inyanga Jubbah +2", -- +14
  130.         ring1="Lebeche Ring",
  131.         ring2="Kishar Ring", -- +4
  132.         back={ name="Campestres's Cape", augments={'Pet: M.Acc.+20 Pet: M.Dmg.+20','Eva.+20 /Mag. Eva.+20','Pet: Mag. Acc.+10','"Fast Cast"+10',}},
  133.         waist="Witful Belt", -- +3
  134.         legs={ name="Merlinic Shalwar", augments={'"Fast Cast"+6','CHR+6','Mag. Acc.+14','"Mag.Atk.Bns."+14',}},
  135.         feet="Regal Pumps +1" -- +5~7
  136.     }
  137.  
  138.     sets.precast["Dispelga"] = set_combine(sets.precast.FC, {
  139.         main="Daybreak",
  140.         sub="Ammurapi Shield"
  141.     })
  142.  
  143.     sets.midcast = {}
  144.  
  145.     -- BP Timer Gear
  146.     -- Use BP Recast Reduction here, along with Avatar's Favor gear.
  147.     -- Avatar's Favor skill tiers are 512 / 575 / 670 / 735.
  148.     sets.midcast.BP = {
  149.         main={ name="Espiritus", augments={'Summoning magic skill +15','Pet: Mag. Acc.+30','Pet: Damage taken -4%',}},
  150.         sub="Vox Grip",
  151.         ammo="Sancus Sachet +1",
  152.         head="Beckoner's Horn +3", -- Always use Beckoner's Horn here.
  153.         neck="Incanter's Torque",
  154.         ear1="Cath Palug Earring",
  155.         ear2="Lodurr Earring",
  156.         body="Baayami Robe +1",
  157.         hands="Baayami Cuffs +1",
  158.         ring1={name="Stikini Ring +1", bag="wardrobe2"},
  159.         ring2="Evoker's Ring",
  160.         back={ name="Conveyance Cape", augments={'Summoning magic skill +5','Pet: Enmity+12','Blood Pact Dmg.+2',}},
  161.         waist="Kobo Obi",
  162.         legs="Baayami Slops +1",
  163.         feet="Baayami Sabots +1"
  164.     }
  165.    
  166.     -- Shock Squall is too fast to swap gear in pet_midcast() or otherwise. It'll generally land in your BP timer set.
  167.     -- I settle for the 670-skill favor tier so I can fit more Pet:MAcc, credit to Papesse of Carbuncle for suggesting this compromise
  168.     sets.midcast.BP["Shock Squall"] = set_combine(sets.midcast.BP, {
  169.         neck="Summoner's Collar +2",
  170.         ear1="Enmerkar Earring",
  171.         ear2="Lugalbanda Earring",
  172.         ring1="Cath Palug Ring",
  173.         ring2="Fickblix's Ring",
  174.         back={ name="Campestres's Cape", augments={'Pet: M.Acc.+20 Pet: M.Dmg.+20','Eva.+20 /Mag. Eva.+20','Pet: Mag. Acc.+10','"Fast Cast"+10',}},
  175.         waist="Incarnation Sash",
  176.     })
  177.  
  178.     -- Elemental Siphon sets. Zodiac Ring is affected by day, Chatoyant Staff by weather, and Twilight Cape by both.
  179.     sets.midcast.Siphon = {
  180.         main={ name="Espiritus", augments={'Summoning magic skill +15','Pet: Mag. Acc.+30','Pet: Damage taken -4%',}},
  181.         sub="Vox Grip",
  182.         ammo="Esper Stone +1",
  183.         head="Baayami Hat +1",
  184.         neck="Incanter's Torque",
  185.         ear1="Cath Palug Earring",
  186.         ear2="Lodurr Earring",
  187.         body="Baayami Robe +1",
  188.         hands="Baayami Cuffs +1",
  189.         ring1={name="Stikini Ring +1", bag="wardrobe2"},
  190.         ring2="Evoker's Ring",
  191.         back={ name="Conveyance Cape", augments={'Summoning magic skill +5','Pet: Enmity+12','Blood Pact Dmg.+2',}},
  192.         waist="Kobo Obi",
  193.         legs="Baayami Slops +1",
  194.         feet="Beckoner's Pigaches +3"
  195.     }
  196.  
  197.     sets.midcast.SiphonZodiac = set_combine(sets.midcast.Siphon, { ring1="Zodiac Ring" })
  198.  
  199.     sets.midcast.SiphonWeather = set_combine(sets.midcast.Siphon, { main="Chatoyant Staff" })
  200.    
  201.     sets.midcast.SiphonWeatherZodiac = set_combine(sets.midcast.SiphonZodiac, { main="Chatoyant Staff" })
  202.  
  203.     -- Summoning Midcast, cap spell interruption if possible (Baayami Robe gives 100, need 2 more)
  204.     -- PDT isn't a bad idea either, so don't overwrite a lot from the DT set it inherits from.
  205.     sets.midcast.Summon = set_combine(sets.DT_Base, {
  206.         body="Baayami Robe +1",
  207.         waist="Rumination Sash"
  208.     })
  209.  
  210.     -- If you ever lock your weapon, keep that in mind when building cure potency set.
  211.     sets.midcast.Cure = {
  212.         main="Nirvana",
  213.         sub="Clerisy Strap +1",
  214.         head={ name="Vanya Hood", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
  215.         neck="Orunmila's Torque",
  216.         ear1="Meili Earring",
  217.         ear2="Novia Earring",
  218.         body="Zendik Robe",
  219.         hands={ name="Telchine Gloves", augments={'Mag. Evasion+25','"Fast Cast"+5','Enh. Mag. eff. dur. +10',}},
  220.         ring1="Lebeche Ring",
  221.         ring2="Menelaus's Ring",
  222.         back="Tempered Cape +1",
  223.         waist="Luminary Sash",
  224.         legs="Convoker's Spats +3",
  225.         feet={ name="Vanya Clogs", augments={'MP+50','"Cure" potency +7%','Enmity-6',}}
  226.     }
  227.  
  228.     sets.midcast.Cursna = set_combine(sets.precast.FC, {
  229.         neck="Debilis Medallion",
  230.         ear1="Meili Earring",
  231.         ear2="Beatific Earring",
  232.         ring1="Menelaus's Ring",
  233.         ring2="Haoma's Ring",
  234.         back="Tempered Cape +1",
  235.         waist="Bishop's Sash",
  236.         feet={ name="Vanya Clogs", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}}
  237.     })
  238.    
  239.     -- Just a standard set for spells that have no set
  240.     sets.midcast.EnmityRecast = set_combine(sets.precast.FC, {
  241.         main="Nirvana",
  242.         ear1="Novia Earring",
  243.         body={ name="Apo. Dalmatica +1", augments={'Summoning magic skill +20','Enmity-6','Pet: Damage taken -4%',}}
  244.     })
  245.  
  246.     -- Strong alternatives: Daybreak and Ammurapi Shield, Cath Crown, Gwati Earring
  247.     sets.midcast.Enfeeble = {
  248.         main="Contemplator +1",
  249.         sub="Enki Strap",
  250.         head=empty,
  251.         neck="Null Loop",
  252.         ear1="Malignance Earring",
  253.         ear2="Dignitary's Earring",
  254.         body="Cohort Cloak +1",
  255.         hands="Inyanga Dastanas +2",
  256.         ring1={name="Stikini Ring +1", bag="wardrobe2"},
  257.         ring2={name="Stikini Ring +1", bag="wardrobe4"},
  258.         back="Aurist's Cape +1",
  259.         waist="Null Belt",
  260.         legs="Inyanga Shalwar +2",
  261.         feet="Skaoi Boots"
  262.     }
  263.     sets.midcast.Enfeeble.INT = set_combine(sets.midcast.Enfeeble, {
  264.         waist="Acuity Belt +1"
  265.     })
  266.  
  267.     sets.midcast.Enhancing = {
  268.         main={ name="Gada", augments={'Enh. Mag. eff. dur. +6','DEX+1','Mag. Acc.+5','"Mag.Atk.Bns."+18','DMG:+4',}},
  269.         sub="Ammurapi Shield",
  270.         head={ name="Telchine Cap", augments={'Mag. Evasion+24','"Conserve MP"+4','Enh. Mag. eff. dur. +10',}},
  271.         neck="Incanter's Torque",
  272.         ear1="Mimir Earring",
  273.         ear2="Andoaa Earring",
  274.         body={ name="Telchine Chas.", augments={'Mag. Evasion+25','"Conserve MP"+5','Enh. Mag. eff. dur. +10',}},
  275.         hands={ name="Telchine Gloves", augments={'Mag. Evasion+25','"Fast Cast"+5','Enh. Mag. eff. dur. +10',}},
  276.         ring1={name="Stikini Ring +1", bag="wardrobe2"},
  277.         ring2={name="Stikini Ring +1", bag="wardrobe4"},
  278.         back="Merciful Cape",
  279.         waist="Embla Sash",
  280.         legs={ name="Telchine Braconi", augments={'Mag. Evasion+25','"Conserve MP"+4','Enh. Mag. eff. dur. +10',}},
  281.         feet={ name="Telchine Pigaches", augments={'Mag. Evasion+24','"Conserve MP"+3','Enh. Mag. eff. dur. +10',}}
  282.     }
  283.  
  284.     sets.midcast.Stoneskin = set_combine(sets.midcast.Enhancing, {
  285.         neck="Nodens Gorget",
  286.         ear2="Earthcry Earring",
  287.         waist="Siegel Sash",
  288.         --legs="Shedir Seraweels"
  289.     })
  290.  
  291.     -- Alternatives: Cath Palug Crown, Amalric gear, Sanctity Necklace, Eschan Stone
  292.     sets.midcast.Nuke = {
  293.         main="Opashoro",
  294.         sub="Enki Strap",
  295.         head="Bunzi's Hat",
  296.         neck="Sibyl Scarf",
  297.         ear1="Malignance Earring",
  298.         ear2="Friomisi Earring",
  299.         body={ name="Amalric Doublet +1", augments={'MP+80','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
  300.         hands="Bunzi's Gloves",
  301.         ring1="Freke Ring",
  302.         ring2="Metamorph Ring +1",
  303.         back={ name="Campestres's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Mag.Atk.Bns."+10','Phys. dmg. taken-10%',}},
  304.         waist="Acuity Belt +1",
  305.         legs="Bunzi's Pants",
  306.         feet="Bunzi's Sabots"
  307.     }
  308.  
  309.     sets.midcast["Refresh"] = set_combine(sets.midcast.Enhancing, {
  310.         head="Amalric Coif +1",
  311.         waist="Gishdubar Sash"
  312.     })
  313.  
  314.     sets.midcast["Aquaveil"] = set_combine(sets.midcast.Enhancing, {
  315.         main="Vadose Rod",
  316.         head="Amalric Coif +1",
  317.         hands="Regal Cuffs",
  318.         waist="Emphatikos Rope",
  319.     })
  320.  
  321.     sets.midcast["Dispelga"] = set_combine(sets.midcast.Enfeeble, {
  322.         main="Daybreak",
  323.         sub="Ammurapi Shield"
  324.     })
  325.  
  326.     sets.midcast["Mana Cede"] = { hands="Beckoner's Bracers +3" }
  327.  
  328.     sets.midcast["Astral Flow"] = { head="Glyphic Horn +3" }
  329.    
  330.     -- ===================================================================================================================
  331.     --  Weaponskills
  332.     -- ===================================================================================================================
  333.  
  334.     -- Base weaponskill set, used when you don't have a specific set for the weaponskill.
  335.     sets.Weaponskill = {
  336.         head="Nyame Helm",
  337.         neck="Fotia Gorget",
  338.         ear1="Malignance Earring",
  339.         ear2="Crepuscular Earring",
  340.         body="Nyame Mail",
  341.         hands="Nyame Gauntlets",
  342.         ring1="Epaminondas's Ring",
  343.         ring2="Metamorph Ring +1",
  344.         back="Aurist's Cape +1",
  345.         waist="Fotia Belt",
  346.         legs="Nyame Flanchard",
  347.         feet="Nyame Sollerets"
  348.     }
  349.  
  350.     -- It's ok to just target accuracy & magic accuracy for this set, and use it to get AM3, apply defense down, and/or open skillchains.
  351.     sets.midcast["Garland of Bliss"] = set_combine(sets.Weaponskill, {
  352.         neck="Sanctity Necklace",
  353.         ear2="Friomisi Earring",
  354.         waist="Orpheus's Sash",
  355.     })
  356.  
  357.     -- Shattersoul is a good weaponskill for skillchaining with Ifrit. If that's your intent, I suggest stacking accuracy.
  358.     -- If you have access to Oshala, that's generally a better use.
  359.     sets.midcast["Shattersoul"] = set_combine(sets.Weaponskill, {
  360.         head="Beckoner's Horn +3",
  361.         ear1="Zennaroi Earring",
  362.         ear2="Telos Earring",
  363.         body="Tali'ah Manteel +2",
  364.         hands="Beckoner's Bracers +3",
  365.         back={ name="Campestres's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}},
  366.         waist="Fotia Belt",
  367.         feet="Beckoner's Pigaches +3"
  368.     })
  369.  
  370.     sets.midcast["Cataclysm"] = set_combine(sets.midcast["Garland of Bliss"], {})
  371.    
  372.     -- Magic accuracy here to land defense down
  373.     sets.midcast["Shell Crusher"] = set_combine(sets.Weaponskill, {
  374.         head="Beckoner's Horn +3",
  375.         neck="Sanctity Necklace",
  376.         ear1="Dignitary's Earring",
  377.         body="Beckoner's Doublet +3",
  378.         hands="Beckoner's Bracers +3",
  379.         ring1={name="Stikini Ring +1", bag="wardrobe2"},
  380.         back={ name="Campestres's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}},
  381.         waist="Eschan Stone",
  382.         feet="Beckoner's Pigaches +3",
  383.     })
  384.    
  385.     sets.midcast["Black Halo"] = set_combine(sets.Weaponskill, {
  386.         neck="Republican Platinum Medal",
  387.         waist="Grunfeld Rope",
  388.     })
  389.    
  390.     sets.midcast["Oshala"] = set_combine(sets.Weaponskill, {
  391.         ear2="Telos Earring",
  392.         neck="Shulmanu Collar",
  393.         ring1="Epaminondas's Ring",
  394.         ring2="Metamorph Ring +1",
  395.         waist="Acuity Belt +1",
  396.     })
  397.  
  398.     sets.pet_midcast = {}
  399.  
  400.     -- Main physical pact set (Volt Strike, Pred Claws, etc.)
  401.     -- Prioritize BP Damage & Pet: Double Attack
  402.     -- Strong Alternatives:
  403.     --   Nirvana, Gridarvor, Apogee Crown, Apogee Pumps, AF body, Apogee Dalmatica, Shulmanu Collar (equal to ~R15 Collar),
  404.     --   Gelos Earring, Regal Belt, Varar Ring, Kyrene's Earring
  405.     sets.pet_midcast.Physical_BP = {
  406.         main="Opashoro",
  407.         sub="Elan Strap +1",
  408.         ammo="Epitaph",
  409.         head={ name="Helios Band", augments={'Pet: Attack+30 Pet: Rng.Atk.+30','Pet: "Dbl. Atk."+8','Blood Pact Dmg.+7',}},
  410.         neck="Summoner's Collar +2",
  411.         ear1="Lugalbanda Earring",
  412.         ear2="Beckoner's Earring +1",
  413.         body="Glyphic Doublet +3",
  414.         hands={ name="Merlinic Dastanas", augments={'Pet: Attack+24 Pet: Rng.Atk.+24','Blood Pact Dmg.+9','Pet: STR+10','Pet: Mag. Acc.+7',}},
  415.         ring1="Cath Palug Ring",
  416.         ring2="Fickblix's Ring",
  417.         back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Eva.+20 /Mag. Eva.+20','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: "Regen"+10','Pet: Damage taken -5%',}},
  418.         waist="Incarnation Sash",
  419.         legs={ name="Apogee Slacks +1", augments={'Pet: STR+20','Blood Pact Dmg.+14','Pet: "Dbl. Atk."+4',}},
  420.         feet={ name="Helios Boots", augments={'Pet: Accuracy+28 Pet: Rng. Acc.+28','Pet: "Dbl. Atk."+8','Blood Pact Dmg.+7',}}
  421.     }
  422.  
  423.     -- Physical Pact AM3 set, less emphasis on Pet:DA
  424.     sets.pet_midcast.Physical_BP_AM3 = set_combine(sets.pet_midcast.Physical_BP, {
  425.         body="Convoker's Doublet +3",
  426.         ring1="Varar Ring +1",
  427.         feet={ name="Apogee Pumps +1", augments={'MP+80','Pet: Attack+35','Blood Pact Dmg.+8',}}
  428.     })
  429.  
  430.     -- Physical pacts which benefit more from TP than Pet:DA (like Spinning Dive and other pacts you never use except that one time)
  431.     sets.pet_midcast.Physical_BP_TP = set_combine(sets.pet_midcast.Physical_BP, {
  432.         head={ name="Apogee Crown +1", augments={'MP+80','Pet: Attack+35','Blood Pact Dmg.+8',}},
  433.         body="Convoker's Doublet +3",
  434.         ring1="Varar Ring +1",
  435.         waist="Regal Belt",
  436.         legs="Enticer's Pants",
  437.         feet={ name="Apogee Pumps +1", augments={'MP+80','Pet: Attack+35','Blood Pact Dmg.+8',}}
  438.     })
  439.  
  440.     -- Used for all physical pacts when AccMode is true
  441.     sets.pet_midcast.Physical_BP_Acc = set_combine(sets.pet_midcast.Physical_BP, {
  442.         head={ name="Apogee Crown +1", augments={'MP+80','Pet: Attack+35','Blood Pact Dmg.+8',}},
  443.         body="Convoker's Doublet +3",
  444.         hands={ name="Merlinic Dastanas", augments={'Pet: Accuracy+28 Pet: Rng. Acc.+28','Blood Pact Dmg.+10','Pet: DEX+9','Pet: Mag. Acc.+9','Pet: "Mag.Atk.Bns."+3',}},
  445.         feet="Beckoner's Pigaches +3"
  446.     })
  447.  
  448.     -- Base magic pact set
  449.     -- Prioritize BP Damage & Pet:MAB
  450.     -- Strong Alternatives:
  451.     -- Espiritus, Apogee Crown, Adad Amulet (equal to ~R12 Collar)
  452.     sets.pet_midcast.Magic_BP_Base = {
  453.         main={ name="Grioavolr", augments={'Blood Pact Dmg.+10','Pet: STR+5','Pet: Mag. Acc.+18','Pet: "Mag.Atk.Bns."+25',}},
  454.         sub="Elan Strap +1",
  455.         ammo="Epitaph",
  456.         head="Cath Palug Crown",
  457.         neck="Summoner's Collar +2",
  458.         ear1="Lugalbanda Earring",
  459.         ear2="Beckoner's Earring +1",
  460.         body={ name="Apo. Dalmatica +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
  461.         hands={ name="Merlinic Dastanas", augments={'Pet: Mag. Acc.+25 Pet: "Mag.Atk.Bns."+25','Blood Pact Dmg.+10','Pet: "Mag.Atk.Bns."+7',}},
  462.         ring1={name="Varar Ring +1", bag="wardrobe2"},
  463.         --ring2={name="Varar Ring +1", bag="wardrobe4"},
  464.         ring2="Fickblix's Ring",
  465.         back={ name="Campestres's Cape", augments={'Pet: M.Acc.+20 Pet: M.Dmg.+20','Eva.+20 /Mag. Eva.+20','Pet: Mag. Acc.+10','"Fast Cast"+10',}},
  466.         waist="Regal Belt",
  467.         feet={ name="Apogee Pumps +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}}
  468.     }
  469.    
  470.     -- Some magic pacts benefit more from TP than others.
  471.     -- Note: This set will only be used on merit pacts if you have less than 4 merits.
  472.     --       Make sure to update your merit values at the top of this Lua.
  473.     sets.pet_midcast.Magic_BP_TP = set_combine(sets.pet_midcast.Magic_BP_Base, {
  474.         legs="Enticer's Pants"
  475.     })
  476.  
  477.     -- NoTP set used when you don't need Enticer's
  478.     sets.pet_midcast.Magic_BP_NoTP = set_combine(sets.pet_midcast.Magic_BP_Base, {
  479.         legs={ name="Apogee Slacks +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}}
  480.     })
  481.  
  482.     sets.pet_midcast.Magic_BP_TP_Acc = set_combine(sets.pet_midcast.Magic_BP_TP, {
  483.         head={ name="Merlinic Hood", augments={'Pet: Mag. Acc.+21 Pet: "Mag.Atk.Bns."+21','Blood Pact Dmg.+7','Pet: INT+6','Pet: "Mag.Atk.Bns."+11',}},
  484.         body="Convoker's Doublet +3",
  485.         hands={ name="Merlinic Dastanas", augments={'Pet: Mag. Acc.+29','Blood Pact Dmg.+10','Pet: INT+7','Pet: "Mag.Atk.Bns."+10',}}
  486.     })
  487.  
  488.     sets.pet_midcast.Magic_BP_NoTP_Acc = set_combine(sets.pet_midcast.Magic_BP_NoTP, {
  489.         head={ name="Merlinic Hood", augments={'Pet: Mag. Acc.+21 Pet: "Mag.Atk.Bns."+21','Blood Pact Dmg.+7','Pet: INT+6','Pet: "Mag.Atk.Bns."+11',}},
  490.         body="Convoker's Doublet +3",
  491.         hands={ name="Merlinic Dastanas", augments={'Pet: Mag. Acc.+29','Blood Pact Dmg.+10','Pet: INT+7','Pet: "Mag.Atk.Bns."+10',}}
  492.     })
  493.  
  494.     -- Favor BP Damage above all. Pet:MAB also very strong.
  495.     -- Pet: Accuracy, Attack, Magic Accuracy moderately important.
  496.     -- Strong Alternatives:
  497.     -- Nirvana, Keraunos, Grioavolr, Espiritus, Was, Apogee Crown, Apogee Dalmatica, Adad Amulet
  498.     sets.pet_midcast.FlamingCrush = {
  499.         main="Opashoro",
  500.         sub="Elan Strap +1",
  501.         ammo="Epitaph",
  502.         head="Cath Palug Crown",
  503.         neck="Summoner's Collar +2",
  504.         ear1="Lugalbanda Earring",
  505.         ear2="Beckoner's Earring +1",
  506.         body="Convoker's Doublet +3",
  507.         hands={ name="Merlinic Dastanas", augments={'Pet: Mag. Acc.+25 Pet: "Mag.Atk.Bns."+25','Blood Pact Dmg.+10','Pet: "Mag.Atk.Bns."+7',}},
  508.         ring1={name="Varar Ring +1", bag="wardrobe2"},
  509.         ring2="Fickblix's Ring",
  510.         back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Eva.+20 /Mag. Eva.+20','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: "Regen"+10','Pet: Damage taken -5%',}},
  511.         waist="Regal Belt",
  512.         legs={ name="Apogee Slacks +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
  513.         feet={ name="Apogee Pumps +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}}
  514.     }
  515.  
  516.     sets.pet_midcast.FlamingCrush_Acc = set_combine(sets.pet_midcast.FlamingCrush, {
  517.         hands={ name="Merlinic Dastanas", augments={'Pet: Accuracy+28 Pet: Rng. Acc.+28','Blood Pact Dmg.+10','Pet: DEX+9','Pet: Mag. Acc.+9','Pet: "Mag.Atk.Bns."+3',}},
  518.         feet="Beckoner's Pigaches +3"
  519.     })
  520.  
  521.     -- Pet: Magic Acc set - Mainly used for debuff pacts like Bitter Elegy
  522.     sets.pet_midcast.MagicAcc_BP = {
  523.         main="Opashoro",
  524.         sub="Vox Grip",
  525.         ammo="Epitaph",
  526.         head="Beckoner's Horn +3",
  527.         neck="Summoner's Collar +2",
  528.         ear1="Enmerkar Earring",
  529.         ear2="Lugalbanda Earring",
  530.         body="Convoker's Doublet +3",
  531.         hands="Lamassu Mitts +1",
  532.         ring1="Cath Palug Ring",
  533.         ring2="Fickblix's Ring",
  534.         back={ name="Campestres's Cape", augments={'Pet: M.Acc.+20 Pet: M.Dmg.+20','Eva.+20 /Mag. Eva.+20','Pet: Mag. Acc.+10','"Fast Cast"+10',}},
  535.         waist="Regal Belt",
  536.         legs="Convoker's Spats +3",
  537.         feet="Bunzi's Sabots"
  538.     }
  539.  
  540.     sets.pet_midcast.Debuff_Rage = sets.pet_midcast.MagicAcc_BP
  541.  
  542.     -- Pure summoning magic set, mainly used for buffs like Hastega II.
  543.     -- Strong Alternatives:
  544.     -- Andoaa Earring, Summoning Earring, Lamassu Mitts +1, Caller's Pendant
  545.     sets.pet_midcast.SummoningMagic = {
  546.         main={ name="Espiritus", augments={'Summoning magic skill +15','Pet: Mag. Acc.+30','Pet: Damage taken -4%',}},
  547.         sub="Vox Grip",
  548.         ammo="Epitaph",
  549.         head="Baayami Hat +1",
  550.         neck="Incanter's Torque",
  551.         ear1="Cath Palug Earring",
  552.         ear2="Lodurr Earring",
  553.         body="Baayami Robe +1",
  554.         hands="Baayami Cuffs +1",
  555.         ring1={name="Stikini Ring +1", bag="wardrobe2"},
  556.         ring2="Evoker's Ring",
  557.         back={ name="Conveyance Cape", augments={'Summoning magic skill +5','Pet: Enmity+12','Blood Pact Dmg.+2',}},
  558.         waist="Kobo Obi",
  559.         legs="Baayami Slops +1",
  560.         feet="Baayami Sabots +1"
  561.     }
  562.  
  563.     sets.pet_midcast.Buff = set_combine(sets.pet_midcast.SummoningMagic, {})
  564.    
  565.     -- Super optional set. I use it in 15-minute Odyssey fights where a proc at the start would save me from having to reapply it.
  566.     sets.pet_midcast.Buff.Empy = set_combine(sets.pet_midcast.Buff, {
  567.         head="Beckoner's Horn +3", -- 8
  568.         body="Beckoner's Doublet +3", -- 13
  569.         --hands="Beckoner's Bracers +3", -- 33
  570.         legs="Beckoner's Spats +3", -- 5
  571.         feet="Beckoner's Pigaches +3", -- 29
  572.     })
  573.    
  574.     -- Wind's Blessing set. Pet:MND increases potency.
  575.     sets.pet_midcast.Buff_MND = set_combine(sets.pet_midcast.Buff, {
  576.         main="Opashoro",
  577.         neck="Summoner's Collar +2",
  578.         ear2="Beckoner's Earring +1",
  579.         hands="Lamassu Mitts +1",
  580.         back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Eva.+20 /Mag. Eva.+20','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: "Regen"+10','Pet: Damage taken -5%',}},
  581.         legs="Assiduity Pants +1",
  582.         feet="Bunzi's Sabots"
  583.     })
  584.  
  585.     -- Don't drop Avatar level in this set if you can help it.
  586.     -- You can use Avatar:HP+ gear to increase the HP recovered, but most of it will decrease your own max HP.
  587.     sets.pet_midcast.Buff_Healing = set_combine(sets.pet_midcast.Buff, {
  588.         main="Opashoro",
  589.         back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Eva.+20 /Mag. Eva.+20','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: "Regen"+10','Pet: Damage taken -5%',}},
  590.         --body={ name="Apo. Dalmatica +1", augments={'Summoning magic skill +20','Enmity-6','Pet: Damage taken -4%',}},
  591.         --feet={ name="Apogee Pumps +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}}
  592.     })
  593.  
  594.     -- This set is used for certain blood pacts when ImpactDebuff mode is turned ON. (/console gs c ImpactDebuff)
  595.     -- These pacts are normally used with magic damage gear, but they're also strong debuffs when enhanced by summoning skill.
  596.     -- This set is safe to ignore.
  597.     sets.pet_midcast.Impact = set_combine(sets.pet_midcast.SummoningMagic, {
  598.         main="Opashoro",
  599.         head="Beckoner's Horn +3",
  600.         ear1="Enmerkar Earring",
  601.         ear2="Lugalbanda Earring",
  602.         hands="Lamassu Mitts +1"
  603.     })
  604.    
  605.     -- ===================================================================================================================
  606.     -- Aftercast Sets
  607.     -- ===================================================================================================================
  608.     -- Syntax: sets.aftercast.{IdleMode}.{PetName|Spirit|Avatar}.{PlayerStatus}.{LowMP}.{ForceIlvl}.{CustomMode}
  609.  
  610.     -- Example: sets.aftercast.DT["Cait Sith"] will be a set used when IdleMode is "DT" and you have Cait Sith summoned.
  611.  
  612.     -- This is your default idle gear used as a baseline for most idle sets below. Put gear here and you won't have to repeat it over and over.
  613.     -- I focus on refresh. Strong alternatives: Asteria Mitts, Convoker Horn, Shomonjijoe
  614.     sets.aftercast = {
  615.         main="Mpaca's Staff",
  616.         sub="Oneiros Grip",
  617.         ammo="Epitaph",
  618.         head="Beckoner's Horn +3",
  619.         neck="Loricate Torque +1",
  620.         ear1="Cath Palug Earring",
  621.         ear2="Beckoner's Earring +1",
  622.         body={ name="Apo. Dalmatica +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
  623.         hands={ name="Merlinic Dastanas", augments={'Pet: Crit.hit rate +2','"Mag.Atk.Bns."+25','"Refresh"+2','Mag. Acc.+10 "Mag.Atk.Bns."+10',}},
  624.         ring1="Shneddick Ring +1",
  625.         --ring1={name="Stikini Ring +1", bag="wardrobe2"},
  626.         ring2="Defending Ring",
  627.         back={ name="Campestres's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Mag.Atk.Bns."+10','Phys. dmg. taken-10%',}},
  628.         waist="Regal Belt",
  629.         legs="Assiduity Pants +1",
  630.         --feet="Herald's Gaiters"
  631.         feet="Baayami Sabots +1"
  632.     }
  633.    
  634.     -- sets.aftercast.ForceIlvl = set_combine(sets.aftercast, {
  635.         -- feet="Baayami Sabots +1"
  636.     -- })
  637.     sets.aftercast.LowMP = set_combine(sets.aftercast, {
  638.         waist="Fucho-no-obi"
  639.     })
  640.     -- sets.aftercast.LowMP.ForceIlvl = set_combine(sets.aftercast.LowMP, {
  641.         -- feet="Baayami Sabots +1"
  642.     -- })
  643.    
  644.     -- Main perpetuation set ~~ Strong Alternatives:
  645.     -- Gridarvor, Asteria Mitts, Shomonjijoe, Convoker's Horn, Evans Earring, Isa Belt
  646.     sets.aftercast.Avatar = {
  647.         main="Nirvana",
  648.         sub="Oneiros Grip",
  649.         ammo="Epitaph",
  650.         head="Beckoner's Horn +3",
  651.         neck="Caller's Pendant",
  652.         ear1="Cath Palug Earring",
  653.         ear2="Beckoner's Earring +1",
  654.         body={ name="Apo. Dalmatica +1", augments={'Summoning magic skill +20','Enmity-6','Pet: Damage taken -4%',}},
  655.         hands={ name="Merlinic Dastanas", augments={'Pet: Crit.hit rate +2','"Mag.Atk.Bns."+25','"Refresh"+2','Mag. Acc.+10 "Mag.Atk.Bns."+10',}},
  656.         ring1={name="Stikini Ring +1", bag="wardrobe2"},
  657.         ring2="Evoker's Ring",
  658.         back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Eva.+20 /Mag. Eva.+20','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: "Regen"+10','Pet: Damage taken -5%',}},
  659.         waist="Lucidity Sash",
  660.         legs="Assiduity Pants +1",
  661.         feet="Baayami Sabots +1"
  662.     }
  663.     -- If you have Fucho and don't need Lucidity Sash for perp down, you can uncomment the belt here to enable using it.
  664.     sets.aftercast.Avatar.LowMP = set_combine(sets.aftercast.Avatar, {
  665.         --waist="Fucho-no-obi"
  666.     })
  667.  
  668.     sets.aftercast.Avatar.Opashoro = set_combine(sets.aftercast.Avatar, {
  669.         body="Beckoner's Doublet +3",
  670.     })
  671.  
  672.     -- Damage Taken set
  673.     sets.aftercast.DT = set_combine(sets.DT_Base, {
  674.     })
  675.  
  676.     sets.aftercast.DT.Avatar = set_combine(sets.aftercast.DT, {
  677.         waist="Isa Belt"
  678.     })
  679.    
  680.     sets.aftercast.DT.Avatar.Opashoro = set_combine(sets.aftercast.DT.Avatar, {
  681.         feet="Beckoner's Pigaches +3"
  682.     })
  683.  
  684.     -- You aren't likely to be in PetDT mode without an avatar for long, but I default to the DT set in that scenario.
  685.     sets.aftercast.PetDT = set_combine(sets.aftercast.DT, { })
  686.  
  687.     -- Pet:DT build. Equipped when IdleMode is "PetDT".
  688.     -- Strong alternatives:
  689.     -- Selenian Cap, Enticer's Pants, Enmerkar Earring, Handler's Earring, Rimeice Earring, Tali'ah Seraweels
  690.     sets.aftercast.PetDT.Avatar = {
  691.         main="Nirvana",
  692.         sub="Oneiros Grip",
  693.         ammo="Epitaph",
  694.         head={ name="Apogee Crown +1", augments={'Pet: Accuracy+25','"Avatar perpetuation cost"+7','Pet: Damage taken -4%',}},
  695.         neck="Summoner's Collar +2",
  696.         ear1="Enmerkar Earring",
  697.         ear2="Beckoner's Earring +1",
  698.         body={ name="Apo. Dalmatica +1", augments={'Summoning magic skill +20','Enmity-6','Pet: Damage taken -4%',}},
  699.         hands={ name="Telchine Gloves", augments={'Pet: DEF+17','Pet: "Regen"+3','Pet: Damage taken -4%',}},
  700.         --ring1="Thurandaut Ring +1",
  701.         ring1={name="Stikini Ring +1", bag="wardrobe2"},
  702.         ring2={name="Stikini Ring +1", bag="wardrobe4"},
  703.         back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Eva.+20 /Mag. Eva.+20','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: "Regen"+10','Pet: Damage taken -5%',}},
  704.         waist="Isa Belt",
  705.         legs="Bunzi's Pants",
  706.         feet={ name="Telchine Pigaches", augments={'Pet: DEF+14','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  707.     }
  708.  
  709.     -- ===================================================================================================================
  710.     -- Sets below this point are extremely niche. If just getting set up, this is a good stopping point to save for later.
  711.    
  712.     -- Kite set. I just use this to gather up mobs in Escha Ru'Aun for merit farming.
  713.     sets.aftercast.Kite = set_combine(sets.aftercast.DT, sets.Movement)
  714.     sets.aftercast.Kite.Avatar = set_combine(sets.aftercast.DT.Avatar, sets.Movement)
  715.  
  716.     -- These 2 sets are for when you're in DD mode but not actually engaged to something.
  717.     sets.aftercast.DD = set_combine(sets.aftercast, {
  718.         head="Null Masque",
  719.     })
  720.  
  721.     sets.aftercast.DD.Avatar = set_combine(sets.aftercast.Avatar, {
  722.         head="Null Masque",
  723.     })
  724.     sets.aftercast.DD.Avatar.Opashoro = set_combine(sets.aftercast.DD.Avatar, {
  725.         body="Beckoner's Doublet +3",
  726.     })
  727.  
  728.     -- Main melee set
  729.     -- If you want specific things equipped only when an avatar is out, modify "sets.aftercast.DD.Avatar.Engaged" below.
  730.     sets.aftercast.DD.Engaged = set_combine(sets.aftercast.DD.Avatar, {
  731.         --head="Beckoner's Horn +3",
  732.         head="Bunzi's Hat",
  733.         neck="Shulmanu Collar",
  734.         ear1="Telos Earring",
  735.         ear2="Cessance Earring",
  736.         body="Tali'ah Manteel +2",
  737.         hands="Bunzi's Gloves",
  738.         ring1={ name="Chirich Ring +1", bag="wardrobe2" },
  739.         ring2="Fickblix's Ring",
  740.         back={ name="Campestres's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10','Phys. dmg. taken-10%',}},
  741.         waist="Cetl Belt",
  742.         legs="Nyame Flanchard",
  743.         feet="Beckoner's Pigaches +3"
  744.     })
  745.    
  746.     -- Main melee set when engaged with an avatar out. Usually doesn't have many changes from the above set.
  747.     sets.aftercast.DD.Avatar.Engaged = set_combine(sets.aftercast.DD.Engaged, {
  748.         ear2="Sroda Earring"
  749.     })
  750.    
  751.     sets.aftercast.DD.Avatar.Engaged.Opashoro = set_combine(sets.aftercast.DD.Engaged, {
  752.         body="Beckoner's Doublet +3",
  753.     })
  754.  
  755.     sets.aftercast.Enspell = set_combine(sets.aftercast, { })
  756.     sets.aftercast.Enspell.Avatar = set_combine(sets.aftercast.Avatar, { })
  757.    
  758.     -- Enspell set I mainly use for Peach Power. Load up on accuracy & magic accuracy. Doesn't seem to help much honestly, it's a work in progress.
  759.     sets.aftercast.Enspell.Engaged = set_combine(sets.aftercast.DD.Avatar.Engaged, {
  760.         ear1="Crepuscular Earring",
  761.         ear2="Beckoner's Earring +1",
  762.         body="Beckoner's Doublet +3", --replaces feet for perp cost
  763.         ring1="Metamorph Ring +1",
  764.         waist="Orpheus's Sash",
  765.         feet="Nyame Sollerets",
  766.     })
  767.     sets.aftercast.Enspell.Avatar.Engaged = set_combine(sets.aftercast.Enspell.Engaged, {})
  768.    
  769.     sets.aftercast.Favor = set_combine(sets.aftercast, { })
  770.    
  771.     -- Used when IdleMode is "Favor" to maximize avatar's favor effect.
  772.     -- Skill tiers are 512 / 575 / 670 / 735
  773.     sets.aftercast.Favor.Avatar = set_combine(sets.aftercast.Avatar, {
  774.         head="Beckoner's Horn +3",
  775.         --ear2="Lodurr Earring",
  776.         body="Beckoner's Doublet +3",
  777.         hands="Baayami Cuffs +1",
  778.         legs="Baayami Slops +1",
  779.         feet="Baayami Sabots +1"
  780.     })
  781.  
  782.     sets.aftercast.PetDD = set_combine(sets.aftercast, { })
  783.  
  784.     -- Avatar Melee set. You really don't need this set. It's only here because I can't bring myself to throw it away.
  785.     sets.aftercast.PetDD.Avatar = set_combine(sets.aftercast.Avatar, {
  786.         ear2="Rimeice Earring",
  787.         body="Glyphic Doublet +3",
  788.         hands={ name="Helios Gloves", augments={'Pet: Accuracy+22 Pet: Rng. Acc.+22','Pet: "Dbl. Atk."+8','Pet: Haste+6',}},
  789.         ring2="Fickblix's Ring",
  790.         waist="Klouskap Sash",
  791.         feet={ name="Helios Boots", augments={'Pet: Accuracy+21 Pet: Rng. Acc.+21','Pet: "Dbl. Atk."+8','Pet: Haste+6',}}
  792.     })
  793.  
  794.     sets.aftercast.Zendik = set_combine(sets.aftercast, {
  795.         body="Zendik Robe"
  796.     })
  797.     -- sets.aftercast.Zendik.ForceIlvl = set_combine(sets.aftercast.Zendik, {
  798.         -- feet="Baayami Sabots +1"
  799.     -- })
  800.     sets.aftercast.Zendik.LowMP = set_combine(sets.aftercast.Zendik, {
  801.         waist="Fucho-no-obi"
  802.     })
  803.     -- sets.aftercast.Zendik.LowMP.ForceIlvl = set_combine(sets.aftercast.Zendik.LowMP, {
  804.         -- feet="Baayami Sabots +1"
  805.     -- })
  806.  
  807.     sets.aftercast.Zendik.Avatar = set_combine(sets.aftercast.Favor.Avatar, {
  808.         body="Zendik Robe"
  809.     })
  810.  
  811.     -- I use this mode for Mewing Lullaby duty in V20+ Gaol. Heaviest defense possible, less attention toward MP management.
  812.     sets.aftercast.MEva = set_combine(sets.aftercast.DT, {
  813.         sub="Khonsu",
  814.         hands="Nyame Gauntlets",
  815.         feet="Baayami Sabots +1"
  816.     })
  817.  
  818.     sets.aftercast.MEva.Avatar = set_combine(sets.aftercast.MEva, {
  819.         ear1="Enmerkar Earring",
  820.         waist="Isa Belt",
  821.         back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Eva.+20 /Mag. Eva.+20','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: "Regen"+10','Pet: Damage taken -5%',}},
  822.     })
  823.  
  824.     -- Idle set used when you have a spirit summoned. Glyphic Spats will make them cast more frequently.
  825.     sets.aftercast.Spirit = {
  826.         main="Nirvana",
  827.         sub="Vox Grip",
  828.         ammo="Epitaph",
  829.         head="Beckoner's Horn +3",
  830.         neck="Incanter's Torque",
  831.         ear1="Cath Palug Earring",
  832.         ear2="Evans Earring",
  833.         body="Baayami Robe +1",
  834.         hands="Baayami Cuffs +1",
  835.         ring1={name="Stikini Ring +1", bag="wardrobe2"},
  836.         ring2="Evoker's Ring",
  837.         back={ name="Conveyance Cape", augments={'Summoning magic skill +5','Pet: Enmity+12','Blood Pact Dmg.+2',}},
  838.         waist="Lucidity Sash",
  839.         legs="Glyphic Spats +3",
  840.         feet="Baayami Sabots +1"
  841.     }
  842.     sets.aftercast.Favor.Spirit = set_combine(sets.aftercast.Spirit, {
  843.     })
  844.     sets.aftercast.Zendik.Spirit = set_combine(sets.aftercast.Favor.Spirit, {
  845.     })
  846.    
  847.     sets.aftercast.Town = set_combine(sets.aftercast.Avatar, {
  848.         main="Opashoro",
  849.         sub="Oneiros Grip",
  850.         head="Null Masque",
  851.         neck="Summoner's Collar +2",
  852.         hands="Nyame Gauntlets",
  853.         ring1="Shneddick Ring +1",
  854.         ring2="Fickblix's Ring",
  855.         waist="Ninurta's Sash",
  856.         legs="Bunzi's Pants",
  857.     })
  858.    
  859.     sets.Test = set_combine(sets.pet_midcast.Magic_BP_NoTP, {
  860.         hands={ name="Merlinic Dastanas", augments={'Pet: Attack+16 Pet: Rng.Atk.+16','Blood Pact Dmg.+10','Pet: STR+9','Pet: "Mag.Atk.Bns."+5',}},
  861.         waist="Incarnation Sash",
  862.         feet="Beckoner's Pigaches +3"
  863.     })
  864.  
  865.     -- ===================================================================================================================
  866.     --      End of Sets
  867.     -- ===================================================================================================================
  868.  
  869.     Buff_BPs_Duration = S{'Shining Ruby','Aerial Armor','Frost Armor','Rolling Thunder','Crimson Howl','Lightning Armor','Ecliptic Growl','Glittering Ruby','Earthen Ward','Hastega','Noctoshield','Ecliptic Howl','Dream Shroud','Earthen Armor','Fleet Wind','Inferno Howl','Heavenward Howl','Hastega II','Soothing Current','Crystal Blessing','Katabatic Blades'}
  870.     Buff_BPs_Healing = S{'Healing Ruby','Healing Ruby II','Whispering Wind','Spring Water'}
  871.     Buff_BPs_MND = S{"Wind's Blessing"}
  872.     Debuff_BPs = S{'Mewing Lullaby','Eerie Eye','Lunar Cry','Lunar Roar','Nightmare','Pavor Nocturnus','Ultimate Terror','Somnolence','Slowga','Tidal Roar','Diamond Storm','Sleepga','Shock Squall','Bitter Elegy','Lunatic Voice'}
  873.     Debuff_Rage_BPs = S{'Moonlit Charge','Tail Whip'}
  874.  
  875.     Magic_BPs_NoTP = S{'Holy Mist','Nether Blast','Aerial Blast','Searing Light','Diamond Dust','Earthen Fury','Zantetsuken','Tidal Wave','Judgment Bolt','Inferno','Howling Moon','Ruinous Omen','Night Terror','Thunderspark','Tornado II','Sonic Buffet'}
  876.     Magic_BPs_TP = S{'Impact','Conflag Strike','Level ? Holy','Lunar Bay'}
  877.     Merit_BPs = S{'Meteor Strike','Geocrush','Grand Fall','Wind Blade','Heavenly Strike','Thunderstorm'}
  878.     Physical_BPs_TP = S{'Rock Buster','Mountain Buster','Crescent Fang','Spinning Dive','Roundhouse'}
  879.    
  880.     ZodiacElements = S{'Fire','Earth','Water','Wind','Ice','Lightning'}
  881.  
  882.     TownIdle = S{"windurst woods","windurst waters","windurst walls","port windurst","bastok markets","bastok mines","port bastok","southern san d'oria","northern san d'oria","port san d'oria","upper jeuno","lower jeuno","port jeuno","ru'lude gardens","norg","kazham","tavnazian safehold","rabao","selbina","mhaura","aht urhgan whitegate","nashmau","western adoulin","eastern adoulin","chocobo circuit"}
  883.     --Salvage = S{"Bhaflau Remnants","Zhayolm Remnants","Arrapago Remnants","Silver Sea Remnants"}
  884.  
  885.     -- Select initial macro set and set lockstyle
  886.     -- This section likely requires changes or removal if you aren't Pergatory
  887.     -- NOTE: This doesn't change your macro set for you during play, your macros have to do that. This is just for when the Lua is loaded.
  888.     if pet.isvalid then
  889.         if pet.name=='Fenrir' then
  890.             send_command('input /macro book 10;wait .1;input /macro set 2;wait 3;input /lockstyleset '..StartLockStyle)
  891.         elseif pet.name=='Ifrit' then
  892.             send_command('input /macro book 10;wait .1;input /macro set 3;wait 3;input /lockstyleset '..StartLockStyle)
  893.         elseif pet.name=='Titan' then
  894.             send_command('input /macro book 10;wait .1;input /macro set 4;wait 3;input /lockstyleset '..StartLockStyle)
  895.         elseif pet.name=='Leviathan' then
  896.             send_command('input /macro book 10;wait .1;input /macro set 5;wait 3;input /lockstyleset '..StartLockStyle)
  897.         elseif pet.name=='Garuda' then
  898.             send_command('input /macro book 10;wait .1;input /macro set 6;wait 3;input /lockstyleset '..StartLockStyle)
  899.         elseif pet.name=='Shiva' then
  900.             send_command('input /macro book 10;wait .1;input /macro set 7;wait 3;input /lockstyleset '..StartLockStyle)
  901.         elseif pet.name=='Ramuh' then
  902.             send_command('input /macro book 10;wait .1;input /macro set 8;wait 3;input /lockstyleset '..StartLockStyle)
  903.         elseif pet.name=='Diabolos' then
  904.             send_command('input /macro book 10;wait .1;input /macro set 9;wait 3;input /lockstyleset '..StartLockStyle)
  905.         elseif pet.name=='Cait Sith' then
  906.             send_command('input /macro book 11;wait .1;input /macro set 2;wait 3;input /lockstyleset '..StartLockStyle)
  907.         elseif pet.name=='Siren' then
  908.             send_command('input /macro book 11;wait .1;input /macro set 4;wait 3;input /lockstyleset '..StartLockStyle)
  909.         end
  910.     else
  911.         -- Macro set for no avatar out (usually the case unless you're reloading Gearswap in the field)
  912.         send_command('input /macro book 10;wait .1;input /macro set 1;wait 3;input /lockstyleset '..StartLockStyle)
  913.     end
  914.     -- End macro set / lockstyle section
  915. end
  916.  
  917. -- ===================================================================================================================
  918. --      Gearswap rules below this point - Modify at your own peril
  919. -- ===================================================================================================================
  920.  
  921. function pretarget(spell,action)
  922.     if not buffactive['Muddle'] then
  923.         -- Auto Remedy --
  924.         if AutoRemedy and (spell.action_type == 'Magic' or spell.type == 'JobAbility') then
  925.             if buffactive['Paralysis'] or (buffactive['Silence'] and not AutoEcho) then
  926.                 cancel_spell()
  927.                 send_command('input /item "Remedy" <me>')
  928.             end
  929.         end
  930.         -- Auto Echo Drop --
  931.         if AutoEcho and spell.action_type == 'Magic' and buffactive['Silence'] then
  932.             cancel_spell()
  933.             send_command('input /item "Echo Drops" <me>')
  934.         end
  935.     end
  936. end
  937.  
  938. function precast(spell)
  939.     if (pet.isvalid and pet_midaction() and not spell.type=="SummonerPact") or spell.type=="Item" then
  940.         -- Do not swap if pet is mid-action. I added the type=SummonerPact check because sometimes when the avatar
  941.         -- dies mid-BP, pet.isvalid and pet_midaction() continue to return true for a brief time.
  942.         return
  943.     end
  944.     -- Spell fast cast
  945.     if sets.precast[spell.english] then
  946.         equip(sets.precast[spell.english])
  947.     elseif spell.action_type=="Magic" then
  948.         if spell.name=="Stoneskin" then
  949.             equip(sets.precast.FC,{waist="Siegel Sash"})
  950.         else
  951.             equip(sets.precast.FC)
  952.         end
  953.     end
  954. end
  955.  
  956. function midcast(spell)
  957.     if (pet.isvalid and pet_midaction()) or spell.type=="Item" then
  958.         return
  959.     end
  960.     -- BP Timer gear needs to swap here
  961.     if (spell.type=="BloodPactWard" or spell.type=="BloodPactRage") then
  962.         if not buffactive["Astral Conduit"] then
  963.             equipSet = sets.midcast.BP
  964.             if equipSet[spell.name] then
  965.                 equipSet = equipSet[spell.name]
  966.             end
  967.             equip(equipSet)
  968.         end
  969.         -- If lag compensation mode is on, set up a timer to equip the BP gear.
  970.         if LagMode then
  971.             send_command('wait 0.5;gs c EquipBP '..spell.name)
  972.         end
  973.     -- Spell Midcast & Potency Stuff
  974.     elseif sets.midcast[spell.english] then
  975.         equip(sets.midcast[spell.english])
  976.     elseif spell.name=="Elemental Siphon" then
  977.         if pet.element==world.day_element and ZodiacElements:contains(pet.element) then
  978.             if pet.element==world.weather_element then
  979.                 equip(sets.midcast.SiphonWeatherZodiac)
  980.             else
  981.                 equip(sets.midcast.SiphonZodiac)
  982.             end
  983.         else
  984.             if pet.element==world.weather_element then
  985.                 equip(sets.midcast.SiphonWeather)
  986.             else
  987.                 equip(sets.midcast.Siphon)
  988.             end
  989.         end
  990.     elseif spell.type=="SummonerPact" then
  991.         equip(sets.midcast.Summon)
  992.     elseif string.find(spell.name,"Cure") or string.find(spell.name,"Curaga") then
  993.         equip(sets.midcast.Cure)
  994.     elseif string.find(spell.name,"Protect") or string.find(spell.name,"Shell") then
  995.         equip(sets.midcast.Enhancing,{ring2="Sheltered Ring"})
  996.     elseif spell.skill=="Enfeebling Magic" then
  997.         equip(sets.midcast.Enfeeble)
  998.     elseif spell.skill=="Enhancing Magic" then
  999.         equip(sets.midcast.Enhancing)
  1000.     elseif spell.skill=="Elemental Magic" then
  1001.         equip(sets.midcast.Nuke)
  1002.     elseif spell.action_type=="Magic" then
  1003.         equip(sets.midcast.EnmityRecast)
  1004.     elseif spell.type=="WeaponSkill" then
  1005.         equip(sets.Weaponskill)
  1006.     else
  1007.         idle()
  1008.     end
  1009.     -- Treasure Hunter
  1010.     if TreasureHunter and THSpells:contains(spell.name) then
  1011.         equip(sets.TH)
  1012.     end
  1013.     -- Auto-cancel existing buffs
  1014.     if spell.name=="Stoneskin" and buffactive["Stoneskin"] then
  1015.         windower.send_command('cancel 37;')
  1016.     elseif spell.name=="Sneak" and buffactive["Sneak"] and spell.target.type=="SELF" then
  1017.         windower.send_command('cancel 71;')
  1018.     elseif spell.name=="Utsusemi: Ichi" and buffactive["Copy Image"] then
  1019.         windower.send_command('wait 1;cancel 66;')
  1020.     end
  1021. end
  1022.  
  1023. function aftercast(spell)
  1024.     if pet_midaction() or spell.type=="Item" then
  1025.         return
  1026.     end
  1027.     if not string.find(spell.type,"BloodPact") then
  1028.         idle()
  1029.     end
  1030. end
  1031.  
  1032. function pet_change(pet,gain)
  1033.     if (not (gain and pet_midaction())) then
  1034.         idle()
  1035.     end
  1036. end
  1037.  
  1038. function status_change(new,old)
  1039.     if not midaction() and not pet_midaction() then
  1040.         idle()
  1041.     end
  1042. end
  1043.  
  1044. function buff_change(name,gain)
  1045.     if name=="quickening" and not pet_midaction() then
  1046.         idle()
  1047.     end
  1048.     if SacTorque and name=="sleep" and gain and pet.isvalid then
  1049.         equip({neck="Sacrifice Torque"})
  1050.         disable("neck")
  1051.         if buffactive["Stoneskin"] then
  1052.             windower.send_command('cancel 37;')
  1053.         end
  1054.     end
  1055.     if SacTorque and name=="sleep" and not gain then
  1056.         enable("neck")
  1057.     end
  1058. end
  1059.  
  1060. function pet_midcast(spell)
  1061.     if not LagMode then
  1062.         equipBPGear(spell.name)
  1063.     end
  1064. end
  1065.  
  1066. function pet_aftercast(spell)
  1067.     idle()
  1068. end
  1069.  
  1070. function equipBPGear(spell)
  1071.     if spell=="Shock Squall" then
  1072.         return -- Don't bother for Shock Squall, it already went off by the time we get here
  1073.     end
  1074.     if spell=="Perfect Defense" then
  1075.         equip(sets.pet_midcast.SummoningMagic)
  1076.     elseif Debuff_BPs:contains(spell) then
  1077.         equip(sets.pet_midcast.MagicAcc_BP)
  1078.     elseif Buff_BPs_Healing:contains(spell) then
  1079.         equip(sets.pet_midcast.Buff_Healing)
  1080.     elseif Buff_BPs_Duration:contains(spell) then
  1081.         if Empy then
  1082.             equip(sets.pet_midcast.Buff.Empy)
  1083.         else
  1084.             equip(sets.pet_midcast.Buff)
  1085.         end
  1086.     elseif Buff_BPs_MND:contains(spell) then
  1087.         equip(sets.pet_midcast.Buff_MND)
  1088.     elseif spell=="Flaming Crush" then
  1089.         if AccMode then
  1090.             equip(sets.pet_midcast.FlamingCrush_Acc)
  1091.         else
  1092.             equip(sets.pet_midcast.FlamingCrush)
  1093.         end
  1094.     elseif ImpactDebuff and (spell=="Impact" or spell=="Conflag Strike") then
  1095.         equip(sets.pet_midcast.Impact)
  1096.     elseif Magic_BPs_NoTP:contains(spell) then
  1097.         if AccMode then
  1098.             equip(sets.pet_midcast.Magic_BP_NoTP_Acc)
  1099.         else
  1100.             equip(sets.pet_midcast.Magic_BP_NoTP)
  1101.         end
  1102.     elseif Magic_BPs_TP:contains(spell) or string.find(spell," II") or string.find(spell," IV") then
  1103.         if AccMode then
  1104.             equip(sets.pet_midcast.Magic_BP_TP_Acc)
  1105.         else
  1106.             equip(sets.pet_midcast.Magic_BP_TP)
  1107.         end
  1108.     elseif Merit_BPs:contains(spell) then
  1109.         if AccMode then
  1110.             equip(sets.pet_midcast.Magic_BP_TP_Acc)
  1111.         elseif spell=="Meteor Strike" and MeteorStrike>4 then
  1112.             equip(sets.pet_midcast.Magic_BP_NoTP)
  1113.         elseif spell=="Geocrush" and Geocrush>4 then
  1114.             equip(sets.pet_midcast.Magic_BP_NoTP)
  1115.         elseif spell=="Grand Fall" and GrandFall>4 then
  1116.             equip(sets.pet_midcast.Magic_BP_NoTP)
  1117.         elseif spell=="Wind Blade" and WindBlade>4 then
  1118.             equip(sets.pet_midcast.Magic_BP_NoTP)
  1119.         elseif spell=="Heavenly Strike" and HeavenlyStrike>4 then
  1120.             equip(sets.pet_midcast.Magic_BP_NoTP)
  1121.         elseif spell=="Thunderstorm" and Thunderstorm>4 then
  1122.             equip(sets.pet_midcast.Magic_BP_NoTP)
  1123.         else
  1124.             equip(sets.pet_midcast.Magic_BP_TP)
  1125.         end
  1126.     elseif Debuff_Rage_BPs:contains(spell) then
  1127.         equip(sets.pet_midcast.Debuff_Rage)
  1128.     else
  1129.         if AccMode then
  1130.             equip(sets.pet_midcast.Physical_BP_Acc)
  1131.         elseif Physical_BPs_TP:contains(spell) then
  1132.             equip(sets.pet_midcast.Physical_BP_TP)
  1133.         elseif buffactive["Aftermath: Lv.3"] and not CustomMode=="Opashoro" then
  1134.             equip(sets.pet_midcast.Physical_BP_AM3)
  1135.         else
  1136.             equip(sets.pet_midcast.Physical_BP)
  1137.         end
  1138.     end
  1139.     if TestMode then
  1140.         equip(sets.Test)
  1141.     end
  1142.     -- Custom Timers
  1143.     if spell=="Mewing Lullaby" and string.find(world.area,"Walk of Echoes %[P") then
  1144.         send_command('timers create "Mewing Resist: can go @ 30s" 60 down') -- In Gaol, underperforms if used every 20s. 60s is full potency.
  1145.         -- Tip: I found it was best to go after 30 seconds. It doesn't fully drain them but you can't afford to wait the full 60.
  1146.         -- Use the time between this to use BP:Rages for additional damage! They feed no TP, as long as your avatar doesn't attack.
  1147.     end
  1148. end
  1149.  
  1150. -- This command is called whenever you input "gs c <command>"
  1151. function self_command(command)
  1152.     if string.sub(command,1,7)=="EquipBP" then
  1153.         equipBPGear(string.sub(command,9,string.len(command)))
  1154.         return
  1155.     end
  1156.  
  1157.     is_valid = command:lower()=="idle"
  1158.  
  1159.     for _, v in ipairs(IdleModes) do
  1160.         if command:lower()==v:lower() then
  1161.             IdleMode = v
  1162.             send_command('console_echo "Idle Mode: ['..IdleMode..']"')
  1163.             is_valid = true
  1164.         end
  1165.     end
  1166.     if not is_valid then
  1167.         if string.sub(command,1,6):lower()=="custom" then
  1168.             for _, v in ipairs(CustomModes) do
  1169.                 if string.sub(command,8,string.len(command)):lower()==v:lower() then
  1170.                     CustomMode = v
  1171.                     send_command('console_echo "Custom Mode: ['..CustomMode..']"')
  1172.                     is_valid = true
  1173.                 end
  1174.             end
  1175.         elseif command:lower()=="accmode" then
  1176.             AccMode = AccMode==false
  1177.             is_valid = true
  1178.             send_command('console_echo "AccMode: '..tostring(AccMode)..'"')
  1179.         elseif command:lower()=="impactmode" then
  1180.             ImpactDebuff = ImpactDebuff==false
  1181.             is_valid = true
  1182.             send_command('console_echo "Impact Debuff: '..tostring(ImpactDebuff)..'"')
  1183.         elseif command:lower()=="forceilvl" then
  1184.             ForceIlvl = ForceIlvl==false
  1185.             is_valid = true
  1186.             send_command('console_echo "Force iLVL: '..tostring(ForceIlvl)..'"')
  1187.         elseif command:lower()=="lagmode" then
  1188.             LagMode = LagMode==false
  1189.             is_valid = true
  1190.             send_command('console_echo "Lag Compensation Mode: '..tostring(LagMode)..'"')
  1191.         elseif command:lower()=="th" then
  1192.             TreasureHunter = TreasureHunter==false
  1193.             is_valid = true
  1194.             send_command('console_echo "Treasure Hunter Mode: '..tostring(TreasureHunter)..'"')
  1195.         elseif command:lower()=="empy" then
  1196.             Empy = Empy==false
  1197.             is_valid = true
  1198.             send_command('console_echo "Empyrean Ward Mode: '..tostring(Empy)..'"')
  1199.         elseif command:lower()=="test" then
  1200.             TestMode = TestMode==false
  1201.             is_valid = true
  1202.             send_command('console_echo "Test Mode: '..tostring(TestMode)..'"')
  1203.         elseif command:lower()=="weaponlock" then
  1204.             if WeaponLock then
  1205.                 enable("main","sub")
  1206.                 WeaponLock = false
  1207.             else
  1208.                 equip({main="Nirvana",sub="Elan Strap +1"})
  1209.                 disable("main","sub")
  1210.                 WeaponLock = true
  1211.             end
  1212.             is_valid = true
  1213.             send_command('console_echo "Weapon Lock: '..tostring(WeaponLock)..'"')
  1214.         elseif command=="ToggleIdle" then
  1215.             is_valid = true
  1216.             -- If you want to change the sets cycled with F9, this is where you do it
  1217.             if IdleMode=="Refresh" then
  1218.                 IdleMode = "DT"
  1219.             elseif IdleMode=="DT" then
  1220.                 IdleMode = "PetDT"
  1221.             elseif IdleMode=="PetDT" then
  1222.                 IdleMode = "DD"
  1223.             else
  1224.                 IdleMode = "Refresh"
  1225.             end
  1226.             send_command('console_echo "Idle Mode: ['..IdleMode..']"')
  1227.         elseif command:lower()=="lowhp" then
  1228.             -- Use for "Cure 500 HP" objectives in Omen
  1229.             equip({head="Apogee Crown +1",body={ name="Apo. Dalmatica +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},legs="Apogee Slacks +1",feet="Apogee Pumps +1",back="Campestres's Cape"})
  1230.             return
  1231.         elseif string.sub(command:lower(),1,12)=="meteorstrike" then
  1232.             MeteorStrike = string.sub(command,13,13)
  1233.             send_command('console_echo "Meteor Strike: '..MeteorStrike..'/5"')
  1234.             is_valid = true
  1235.         elseif string.sub(command:lower(),1,8)=="geocrush" then
  1236.             Geocrush = string.sub(command,9,9)
  1237.             send_command('console_echo "Geocrush: '..Geocrush..'/5"')
  1238.             is_valid = true
  1239.         elseif string.sub(command:lower(),1,9)=="grandfall" then
  1240.             GrandFall = string.sub(command,10,10)
  1241.             send_command('console_echo "Grand Fall: '..GrandFall..'/5"')
  1242.             is_valid = true
  1243.         elseif string.sub(command:lower(),1,9)=="windblade" then
  1244.             WindBlade = +string.sub(command,10,10)
  1245.             send_command('console_echo "Wind Blade: '..WindBlade..'/5"')
  1246.             is_valid = true
  1247.         elseif string.sub(command:lower(),1,14)=="heavenlystrike" then
  1248.             HeavenlyStrike = string.sub(command,15,15)
  1249.             send_command('console_echo "Heavenly Strike: '..HeavenlyStrike..'/5"')
  1250.             is_valid = true
  1251.         elseif string.sub(command:lower(),1,12)=="thunderstorm" then
  1252.             Thunderstorm = string.sub(command,13,13)
  1253.             send_command('console_echo "Thunderstorm: '..Thunderstorm..'/5"')
  1254.             is_valid = true
  1255.         elseif command:lower()=="opa" then
  1256.             if CustomMode=='Opashoro' then
  1257.                 enable("main","sub")
  1258.                 WeaponLock = false
  1259.                 CustomMode = 'None'
  1260.             else
  1261.                 enable("main","sub")
  1262.                 equip({main="Opashoro",sub="Elan Strap +1"})
  1263.                 disable("main","sub")
  1264.                 WeaponLock = true
  1265.                 CustomMode = 'Opashoro'
  1266.             end
  1267.             send_command('console_echo "Opashoro Mode: '..tostring(WeaponLock)..'"')
  1268.             is_valid = true
  1269.         end
  1270.     end
  1271.  
  1272.     if is_valid then
  1273.         if not midaction() and not pet_midaction() then
  1274.             idle()
  1275.         end
  1276.     else
  1277.         sanitized = command:gsub("\"", "")
  1278.         send_command('console_echo "Invalid self_command: '..sanitized..'"') -- Note: If you use Gearinfo, comment out this line
  1279.     end
  1280. end
  1281.  
  1282. -- This function is for returning to aftercast gear after an action/event.
  1283. function idle()
  1284.     equipSet = sets.aftercast
  1285.     if TownIdle:contains(world.area:lower()) then
  1286.         equipSet = sets.aftercast.Town
  1287.     end
  1288.     if equipSet[IdleMode] then
  1289.         equipSet = equipSet[IdleMode]
  1290.     end
  1291.     if pet.isvalid then
  1292.         if equipSet[pet.name] then
  1293.             equipSet = equipSet[pet.name]
  1294.         elseif string.find(pet.name,'Spirit') and equipSet["Spirit"] then
  1295.             equipSet = equipSet["Spirit"]
  1296.         elseif equipSet["Avatar"] then
  1297.             equipSet = equipSet["Avatar"]
  1298.         end
  1299.     end
  1300.     if equipSet[player.status] then
  1301.         equipSet = equipSet[player.status]
  1302.     end
  1303.     if player.mpp < 50 and equipSet["LowMP"] then
  1304.         equipSet = equipSet["LowMP"]
  1305.     end
  1306.     if ForceIlvl and equipSet["ForceIlvl"] then
  1307.         equipSet = equipSet["ForceIlvl"]
  1308.     end
  1309.     if equipSet[CustomMode] then
  1310.         equipSet = equipSet[CustomMode]
  1311.     end
  1312.     equip(equipSet)
  1313.  
  1314.     if (buffactive['Quickening'] or buffactive['Sneak'] or buffactive['Invisible']) and IdleMode~='DT' then
  1315.         --if not ForceIlvl then
  1316.             equip(sets.Movement)
  1317.         --end
  1318.     end
  1319.     -- Balrahn's Ring
  1320.     --if Salvage:contains(world.area) then
  1321.     --  equip({ring2="Balrahn's Ring"})
  1322.     --end
  1323.     -- Maquette Ring (works in Ambuscade too)
  1324.     --if world.area=='Maquette Abdhaljs-Legion' and not IdleMode=='DT' then
  1325.     --  equip({ring2="Maquette Ring"})
  1326.     --end
  1327. end
Add Comment
Please, Sign In to add comment