|
left ring ring1 not working..
By Mcdougall 2019-07-14 05:25:30
Should be simple but something isn't working and i cant figure it out... Its not equiping my varar ring +1 in the ring1 spot during abilities... I am usuing pergatory's GS. Any help would be greatly appreciated... Thank you.
Code -- IdleMode determines the set used after casting. You change it with "/console gs c <IdleMode>"
-- The modes are:
-- Refresh: Uses the most refresh available.
-- DT: A mix of refresh, PDT, and MDT to help when you can't avoid AOE.
-- PetDT: Sacrifice refresh to reduce avatar's damage taken. WARNING: Selenian Cap drops you below 119, use with caution!
-- DD: When melee mode is on and you're engaged, uses TP gear. Otherwise, avatar melee gear.
-- Favor: Uses Beckoner's Horn +1 and max smn skill to boost the favor effect.
-- 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)
-- Additional Bindings:
-- F9 - Toggles between a subset of IdleModes (Refresh > DT > PetDT)
-- F10 - Toggles MeleeMode (When enabled, equips Nirvana and Elan+1, then disables those 2 slots from swapping)
-- NOTE: If you don't already have the Nirvana & Elan+1 equipped, YOU WILL LOSE TP
-- Additional Commands:
-- /console gs c AccMode - Toggles high-accuracy sets to be used where appropriate.
-- /console gs c ImpactMode - Toggles between using normal magic BP set for Fenrir's Impact or a custom high-skill set for debuffs.
-- /console gs c ForceIlvl - I have this set up to override a few specific slots where I normally use non-ilvl pieces.
-- /console gs c LagMode - Used to help BPs land in the right gear in high-lag situations.
-- Sets a timer to swap gear 0.2s after the BP is used rather than waiting for server response.
function file_unload()
send_command('unbind f9')
send_command('unbind f10')
send_command('unbind ^f10')
end
function get_sets()
send_command('bind f9 gs c ToggleIdle')
send_command('bind f10 gs c MeleeMode')
send_command('bind ^f10 gs c ForceIlvl')
-- Set your merits here. This is used in deciding between Enticer's Pants or Apogee Slacks +1.
-- To change in-game, "/console gs c MeteorStrike3" will change Meteor Strike to 3/5 merits.
-- The damage difference is very minor unless you're over 2400 TP.
-- It's ok to just always use Enticer's Pants and ignore this section.
MeteorStrike = 1
HeavenlyStrike = 1
WindBlade = 1
Geocrush = 1
Thunderstorm = 5
GrandFall = 1
StartLockStyle = ''
IdleMode = 'Refresh'
AccMode = false
ImpactDebuff = false
MeleeMode = false
ForceIlvl = false
LagMode = false -- Default LagMode. If you have a lot of lag issues, change to "true".
AutoRemedy = false -- Auto Remedy when using an ability while Paralyzed.
AutoEcho = false -- Auto Echo Drop when using an ability while Silenced.
Test = 0
-- ===================================================================================================================
-- Sets
-- ===================================================================================================================
-- Base Damage Taken Set - Mainly used when IdleMode is "DT"
sets.DT_Base = {
}
sets.precast = {}
-- Fast Cast
sets.precast.FC = {
}
sets.midcast = {}
-- BP Timer Gear
sets.midcast.BP = {
main={ name="Espiritus", augments={'Enmity-6','Pet: "Mag.Atk.Bns."+30','Pet: Damage taken -4%',}},
sub="Vox Grip",
ammo="Sancus Sachet +1",
head="Beckoner's Horn +1",
body={ name="Glyphic Doublet +1", augments={'Reduces Sp. "Blood Pact" MP cost',}},
hands={ name="Glyphic Bracers +1", augments={'Inc. Sp. "Blood Pact" magic burst dmg.',}},
legs={ name="Glyphic Spats +1", augments={'Increases Sp. "Blood Pact" accuracy',}},
feet={ name="Glyph. Pigaches +1", augments={'Inc. Sp. "Blood Pact" magic crit. dmg.',}},
neck="Caller's Pendant",
waist="Lucidity Sash",
ear1="Gelos Earring",
ear2={ name="Moonshade Earring", augments={'Mag. Acc.+4','Latent effect: "Refresh"+1',}},
ring1="Varar Ring +1",
ring2="Varar Ring +1",
back={ name="Conveyance Cape", augments={'Summoning magic skill +2','Blood Pact Dmg.+2','Blood Pact ab. del. II -3',}},
}
-- Elemental Siphon sets. Zodiac Ring is affected by day, Chatoyant Staff by weather, and Twilight Cape by both.
sets.midcast.Siphon = {
main={ name="Espiritus", augments={'Summoning magic skill +15','Pet: Mag. Acc.+30','Pet: Damage taken -4%',}},
sub="Vox Grip",
ammo="Esper Stone +1",
head="Baayami Hat",
neck="Caller's Pendant",
body="Baayami Robe",
hands="Baayami Cuffs +1",
ring2="Evoker's Ring",
back={ name="Conveyance Cape", augments={'Summoning magic skill +2','Blood Pact Dmg.+2','Blood Pact ab. del. II -3',}},
legs="Baayami Slops",
feet="Beck. Pigaches +1"
}
sets.midcast.SiphonZodiac = set_combine()
sets.midcast.SiphonWeather = set_combine(sets.midcast.Siphon, { main="Chatoyant Staff" })
sets.midcast.SiphonWeatherZodiac = set_combine(sets.midcast.SiphonZodiac, { main="Chatoyant Staff" })
-- Summoning Midcast, cap spell interruption if possible (Baayami Robe gives 100, need 2 more)
sets.midcast.Summon = set_combine(sets.DT_Base, {
body="Baayami Robe +1",
legs="Lengo Pants"
})
sets.midcast.Cure = {
sub="Oneiros Grip",
ammo="Sancus Sachet +1",
hands="Telchine Gloves",
ring1="Weather. Ring",
legs="Assid. Pants +1",
feet="Merlinic Crackows",
}
sets.midcast.Cursna = set_combine(sets.precast.FC, {
})
sets.midcast.EnmityRecast = set_combine(sets.precast.FC, {
})
sets.midcast.Enfeeble = {
}
sets.midcast.Enhancing = {
}
sets.midcast.Stoneskin = set_combine(sets.midcast.Enhancing, {
})
sets.midcast.Nuke = {
}
sets.midcast["Refresh"] = set_combine(sets.midcast.Enhancing, {
})
sets.midcast["Aquaveil"] = set_combine(sets.midcast.Enhancing, {
})
sets.midcast["Mana Cede"] = { hands="Beckoner's Bracers" }
sets.midcast["Astral Flow"] = { }
sets.midcast["Garland of Bliss"] = {
main={ name="Espiritus", augments={'Enmity-6','Pet: "Mag.Atk.Bns."+30','Pet: Damage taken -4%',}},
sub="Vox Grip",
ammo="Sancus Sachet +1",
head="Tali'ah Turban +1",
body="Tali'ah Manteel",
hands="Tali'ah Gages +1",
legs="Tali'ah Seraweels",
feet="Tali'ah Crackows +1",
neck="Smn. Collar +2",
waist="Klouskap Sash +1",
left_ear="Mache Earring +1",
right_ear="Mache Earring +1",
left_ring="Ramuh Ring +1",
right_ring="Tali'ah Ring",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
}
sets.midcast["Shattersoul"] = {
main={ name="Espiritus", augments={'Enmity-6','Pet: "Mag.Atk.Bns."+30','Pet: Damage taken -4%',}},
sub="Vox Grip",
ammo="Sancus Sachet +1",
head="Tali'ah Turban +1",
body="Tali'ah Manteel",
hands="Tali'ah Gages +1",
legs="Tali'ah Seraweels",
feet="Tali'ah Crackows +1",
neck="Smn. Collar +2",
waist="Klouskap Sash +1",
left_ear="Mache Earring +1",
right_ear="Mache Earring +1",
left_ring="Ramuh Ring +1",
right_ring="Tali'ah Ring",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
}
sets.midcast["Cataclysm"] = sets.midcast.Nuke
sets.pet_midcast = {}
-- Main physical pact set (Volt Strike, Pred Claws, etc.)
sets.pet_midcast.Physical_BP = {
main="Gridarvor",
sub="Elan Strap",
ammo="Sancus Sachet +1",
head={ name="Apogee Crown +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
body="Con. Doublet +1",
hands={ name="Apogee Mitts +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
legs="Apogee Slacks +1",
feet={ name="Apogee Pumps +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
neck="Smn. Collar +2",
waist="Klouskap Sash +1",
ear1="Gelos Earring",
ear2="Kyrene's Earring",
ring1="Varar Ring +1",
ring2="Varar Ring +1",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
}
sets.pet_midcast.Physical_BP_AM3 = set_combine(sets.pet_midcast.Physical_BP, {
})
-- Physical pacts which benefit more from TP than Pet:DA (like single-hit BP)
sets.pet_midcast.Physical_BP_TP = set_combine(sets.pet_midcast.Physical_BP, {
})
-- Used for all physical pacts when AccMode is true
sets.pet_midcast.Physical_BP_Acc = set_combine(sets.pet_midcast.Physical_BP, {
})
-- Base magic pact set
sets.pet_midcast.Magic_BP_Base = {
main="Espiritus",
sub="Elan Strap",
ammo="Sancus Sachet +1",
head={ name="Apogee Crown +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
body="Con. Doublet +1",
hands={ name="Apogee Mitts +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
legs="Apogee Slacks +1",
feet={ name="Apogee Pumps +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
neck="Smn. Collar +2",
waist="Klouskap Sash +1",
ear1="Gelos Earring",
ear2="Kyrene's Earring",
ring1="Varar Ring +1",
ring2="Varar Ring +1",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
}
-- Some magic pacts benefit more from TP than others.
-- Note: This set will only be used on merit pacts if you have less than 4 merits.
-- Make sure to update your merit values at the top of this Lua.
sets.pet_midcast.Magic_BP_TP = set_combine(sets.pet_midcast.Magic_BP_Base, {
})
-- NoTP set used when you don't need Enticer's
sets.pet_midcast.Magic_BP_NoTP = set_combine(sets.pet_midcast.Magic_BP_Base, {
})
sets.pet_midcast.Magic_BP_TP_Acc = set_combine(sets.pet_midcast.Magic_BP_TP, {
})
sets.pet_midcast.Magic_BP_NoTP_Acc = set_combine(sets.pet_midcast.Magic_BP_NoTP, {
})
sets.pet_midcast.FlamingCrush = {
main="Espiritus",
sub="Elan Strap",
ammo="Sancus Sachet +1",
head={ name="Apogee Crown +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
body="Con. Doublet +1",
hands={ name="Apogee Mitts +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
legs="Apogee Slacks +1",
feet={ name="Apogee Pumps +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
neck="Smn. Collar +2",
waist="Klouskap Sash +1",
ear1="Gelos Earring",
ear2="Kyrene's Earring",
ring1="Varar Ring +1",
ring2="Varar Ring +1",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
}
sets.pet_midcast.FlamingCrush_Acc = set_combine(sets.pet_midcast.FlamingCrush, {
})
-- Pet: Magic Acc set - Mainly used for debuff pacts like Shock Squall
sets.pet_midcast.MagicAcc_BP = {
}
sets.pet_midcast.Debuff_Rage = sets.pet_midcast.MagicAcc_BP
-- Pure summoning magic set, mainly used for buffs like Hastega II.
sets.pet_midcast.SummoningMagic = {
main={ name="Espiritus", augments={'Summoning magic skill +15','Pet: Mag. Acc.+30','Pet: Damage taken -4%',}},
sub="Vox Grip",
ammo="Sancus Sachet +1",
head="Baayami Hat",
neck="Caller's Pendant",
body="Baayami Robe",
hands="Glyphic Bracers +1",
ring1="Evoker's Ring",
ring2="Fervor Ring",
back={ name="Conveyance Cape", augments={'Summoning magic skill +2','Blood Pact Dmg.+2','Blood Pact ab. del. II -3',}},
waist="Lucidity Sash",
legs="Baayami Slops",
feet="Baayami Sabots"
}
sets.pet_midcast.Buff = sets.pet_midcast.SummoningMagic
-- I use Apogee gear for healing BPs because the amount healed is affected by avatar max HP.
-- I'm probably stupid. It puts you in yellow HP after using a healing move.
sets.pet_midcast.Buff_Healing = set_combine(sets.pet_midcast.SummoningMagic, {
})
-- This set is used for certain blood pacts when ImpactDebuff mode is ON. (/console gs c ImpactDebuff)
-- These pacts are normally used as nukes, but they're also strong debuffs which are enhanced by smn skill.
sets.pet_midcast.Impact = set_combine(sets.pet_midcast.SummoningMagic, {
})
sets.aftercast = {}
-- Idle set with no avatar out.
sets.aftercast.Idle = {
ammo="Sancus Sachet +1",
head={ name="Apogee Crown +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
body="Shomonjijoe +1",
hands={ name="Apogee Mitts +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
legs={ name="Helios Spats", augments={'Pet: "Mag.Atk.Bns."+27','Pet: Crit.hit rate +2','Blood Pact Dmg.+5',}},
feet={ name="Apogee Pumps +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
neck="Twilight Torque",
waist="Lucidity Sash",
ear1="Gelos Earring",
ear2={ name="Moonshade Earring", augments={'Mag. Acc.+4','Latent effect: "Refresh"+1',}},
ring1="Varar Ring +1",
ring2="Varar Ring +1",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
}
-- Idle set used when ForceIlvl is ON. Use this mode to avoid Gaiters dropping ilvl.
sets.aftercast.Idle_Ilvl = set_combine(sets.aftercast.Idle, {
feet="Baayami Sabots"
})
sets.aftercast.DT = sets.DT_Base
-- Many idle sets inherit from this set.
-- Put common items here so you don't have to repeat them over and over.
sets.aftercast.Perp_Base = {
ammo="Sancus Sachet +1",
head="Beckoner's Horn +1",
body="Shomonjijoe +1",
hands={ name="Apogee Mitts +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
legs="Assid. Pants +1",
feet="Apogee Pumps +1",
neck="Caller's Pendant",
waist="Klouskap Sash +1",
ear1="Gelos Earring",
ear2={ name="Moonshade Earring", augments={'Mag. Acc.+4','Latent effect: "Refresh"+1',}},
ring1="Evoker's Ring",
ring2="Varar Ring +1",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
}
-- Avatar Melee set. Equipped when IdleMode is "DD" and MeleeMode is OFF.
sets.aftercast.Perp_DD = set_combine(sets.aftercast.Perp_Base, {
})
-- Refresh set with avatar out. Equipped when IdleMode is "Refresh".
sets.aftercast.Perp_Refresh = set_combine(sets.aftercast.Perp_Base, {
})
-- Refresh set when MP is under 50%
sets.aftercast.Perp_RefreshSub50 = set_combine(sets.aftercast.Perp_Refresh, {
})
sets.aftercast.Perp_Favor = set_combine(sets.aftercast.Perp_Refresh, {
head="Beckoner's Horn +1",
ring2="Evoker's Ring",
legs="Baayami Slops",
feet="Baayami Sabots"
})
sets.aftercast.Perp_Zendik = set_combine(sets.aftercast.Perp_Favor, {
})
-- TP set. Equipped when IdleMode is "DD" and MeleeMode is ON.
sets.aftercast.Perp_Melee = set_combine(sets.aftercast.Perp_Refresh, {
main={ name="Espiritus", augments={'Enmity-6','Pet: "Mag.Atk.Bns."+30','Pet: Damage taken -4%',}},
sub="Vox Grip",
ammo="Sancus Sachet +1",
head="Tali'ah Turban +1",
body="Tali'ah Manteel",
hands="Tali'ah Gages +1",
legs="Tali'ah Seraweels",
feet="Tali'ah Crackows +1",
neck="Smn. Collar +2",
waist="Klouskap Sash +1",
left_ear="Mache Earring +1",
right_ear="Mache Earring +1",
left_ring="Ramuh Ring +1",
right_ring="Tali'ah Ring",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
})
-- Pet:DT build. Equipped when IdleMode is "PetDT".
sets.aftercast.Avatar_DT = {
}
-- Perp down set used when ForceIlvl is ON. If you use Selenian Cap for Pet:DT, you can make another set here without it.
sets.aftercast.Avatar_DT_Ilvl = set_combine(sets.aftercast.Avatar_DT, {
})
-- DT build with avatar out. Equipped when IdleMode is "DT".
sets.aftercast.Perp_DT = set_combine(sets.DT_Base, {
waist="Lucidity Sash"
})
sets.aftercast.Spirit = {
}
-- ===================================================================================================================
-- End of Sets
-- ===================================================================================================================
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'}
Buff_BPs_Healing = S{'Healing Ruby','Healing Ruby II','Whispering Wind','Spring Water'}
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'}
Debuff_Rage_BPs = S{'Moonlit Charge','Tail Whip'}
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'}
Magic_BPs_TP = S{'Impact','Conflag Strike','Level ? Holy','Lunar Bay'}
Merit_BPs = S{'Meteor Strike','Geocrush','Grand Fall','Wind Blade','Heavenly Strike','Thunderstorm'}
Physical_BPs_TP = S{'Rock Buster','Mountain Buster','Crescent Fang','Spinning Dive'}
ZodiacElements = S{'Fire','Earth','Water','Wind','Ice','Lightning'}
AvatarList = S{'Shiva','Ramuh','Garuda','Leviathan','Diabolos','Titan','Fenrir','Ifrit','Carbuncle','Fire Spirit','Air Spirit','Ice Spirit','Thunder Spirit','Light Spirit','Dark Spirit','Earth Spirit','Water Spirit','Cait Sith','Alexander','Odin','Atomos'}
--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","al zahbi","nashmau","western adoulin","eastern adoulin"}
--Salvage = S{"Bhaflau Remnants","Zhayolm Remnants","Arrapago Remnants","Silver Sea Remnants"}
end
function pet_change(pet,gain)
idle()
end
function pretarget(spell,action)
if not buffactive['Muddle'] then
-- Auto Remedy --
if AutoRemedy and (spell.action_type == 'Magic' or spell.type == 'JobAbility') then
if buffactive['Paralysis'] or (buffactive['Silence'] and not AutoEcho) then
cancel_spell()
send_command('input /item "Remedy" <me>')
end
end
-- Auto Echo Drop --
if AutoEcho and spell.action_type == 'Magic' and buffactive['Silence'] then
cancel_spell()
send_command('input /item "Echo Drops" <me>')
end
end
end
function precast(spell)
if (pet.isvalid and pet_midaction()) or spell.type=="Item" then
return
end
-- Spell fast cast
if spell.action_type=="Magic" then
if spell.name=="Stoneskin" then
equip(sets.precast.FC,{waist="Siegel Sash"})
else
equip(sets.precast.FC)
end
end
end
function midcast(spell)
if (pet.isvalid and pet_midaction()) or spell.type=="Item" then
return
end
-- BP Timer gear needs to swap here
if (spell.type=="BloodPactWard" or spell.type=="BloodPactRage") then
if not buffactive["Astral Conduit"] then
equip(sets.midcast.BP)
end
-- If lag compensation mode is on, set up a timer to equip the BP gear.
if LagMode then
send_command('wait 0.5;gs c EquipBP '..spell.name)
end
-- Spell Midcast & Potency Stuff
elseif sets.midcast[spell.english] then
equip(sets.midcast[spell.english])
elseif spell.name=="Elemental Siphon" then
if pet.element==world.day_element and ZodiacElements:contains(pet.element) then
if pet.element==world.weather_element then
equip(sets.midcast.SiphonWeatherZodiac)
else
equip(sets.midcast.SiphonZodiac)
end
else
if pet.element==world.weather_element then
equip(sets.midcast.SiphonWeather)
else
equip(sets.midcast.Siphon)
end
end
elseif spell.type=="SummonerPact" then
equip(sets.midcast.Summon)
elseif spell.type=="WhiteMagic" then
if string.find(spell.name,"Cure") or string.find(spell.name,"Curaga") then
equip(sets.midcast.Cure)
elseif string.find(spell.name,"Protect") or string.find(spell.name,"Shell") then
equip(sets.midcast.Enhancing,{ring2="Sheltered Ring"})
elseif spell.skill=="Enfeebling Magic" then
equip(sets.midcast.Enfeeble)
elseif spell.skill=="Enhancing Magic" then
equip(sets.midcast.Enhancing)
else
idle()
end
elseif spell.type=="BlackMagic" then
if spell.skill=="Elemental Magic" then
equip(sets.midcast.Nuke)
end
elseif spell.action_type=="Magic" then
equip(sets.midcast.EnmityRecast)
else
idle()
end
-- Auto-cancel existing buffs
if spell.name=="Stoneskin" and buffactive["Stoneskin"] then
windower.send_command('cancel 37;')
elseif spell.name=="Sneak" and buffactive["Sneak"] and spell.target.type=="SELF" then
windower.send_command('cancel 71;')
elseif spell.name=="Utsusemi: Ichi" and buffactive["Copy Image"] then
windower.send_command('wait 1;cancel 66;')
end
end
function aftercast(spell)
if pet_midaction() or spell.type=="Item" then
return
end
if not string.find(spell.type,"BloodPact") then
idle()
end
end
function status_change(new,old)
if new=="Idle" then
idle()
end
end
function buff_change(name,gain)
if name=="Quickening" then
idle()
end
end
function pet_midcast(spell)
if not LagMode then
equipBPGear(spell.name)
end
end
function pet_aftercast(spell)
idle()
end
function equipBPGear(spell)
if spell=="Perfect Defense" then
equip(sets.pet_midcast.SummoningMagic)
elseif Debuff_BPs:contains(spell) then
equip(sets.pet_midcast.MagicAcc_BP)
elseif Buff_BPs_Healing:contains(spell) then
equip(sets.pet_midcast.Buff_Healing)
elseif Buff_BPs_Duration:contains(spell) then
equip(sets.pet_midcast.Buff)
elseif spell=="Flaming Crush" then
if AccMode then
equip(sets.pet_midcast.FlamingCrush_Acc)
else
equip(sets.pet_midcast.FlamingCrush)
end
elseif ImpactDebuff and (spell=="Impact" or spell=="Conflag Strike") then
equip(sets.pet_midcast.Impact)
elseif Magic_BPs_TP:contains(spell) or string.find(spell," II") or string.find(spell," IV") then
if AccMode then
equip(sets.pet_midcast.Magic_BP_TP_Acc)
else
equip(sets.pet_midcast.Magic_BP_TP)
end
elseif Magic_BPs_NoTP:contains(spell) then
if AccMode then
equip(sets.pet_midcast.Magic_BP_NoTP_Acc)
else
equip(sets.pet_midcast.Magic_BP_NoTP)
end
elseif Merit_BPs:contains(spell) then
if AccMode then
equip(sets.pet_midcast.Magic_BP_TP_Acc)
elseif spell=="Meteor Strike" and MeteorStrike>4 then
equip(sets.pet_midcast.Magic_BP_NoTP)
elseif spell=="Geocrush" and Geocrush>4 then
equip(sets.pet_midcast.Magic_BP_NoTP)
elseif spell=="Grand Fall" and GrandFall>4 then
equip(sets.pet_midcast.Magic_BP_NoTP)
elseif spell=="Wind Blade" and WindBlade>4 then
equip(sets.pet_midcast.Magic_BP_NoTP)
elseif spell=="Heavenly Strike" and HeavenlyStrike>4 then
equip(sets.pet_midcast.Magic_BP_NoTP)
elseif spell=="Thunderstorm" and Thunderstorm>4 then
equip(sets.pet_midcast.Magic_BP_NoTP)
else
equip(sets.pet_midcast.Magic_BP_TP)
end
elseif Debuff_Rage_BPs:contains(spell) then
equip(sets.pet_midcast.Debuff_Rage)
else
if AccMode then
equip(sets.pet_midcast.Physical_BP_Acc)
elseif Physical_BPs_TP:contains(spell) then
equip(sets.pet_midcast.Physical_BP_TP)
elseif buffactive["Aftermath: Lv.3"] then
equip(sets.pet_midcast.Physical_BP_AM3)
else
equip(sets.pet_midcast.Physical_BP)
end
end
end
-- This command is called whenever you input "gs c <command>"
function self_command(command)
IdleModeCommands = {'DD','Refresh','DT','Favor','PetDT','Zendik'}
is_valid = false
for _, v in ipairs(IdleModeCommands) do
if command:lower()==v:lower() then
IdleMode = v
send_command('console_echo "Idle Mode: ['..IdleMode..']"')
idle()
return
end
end
if string.sub(command,1,7)=="EquipBP" then
equipBPGear(string.sub(command,9,string.len(command)))
return
elseif command:lower()=="accmode" then
AccMode = AccMode==false
is_valid = true
send_command('console_echo "AccMode: '..tostring(AccMode)..'"')
elseif command:lower()=="impactmode" then
ImpactDebuff = ImpactDebuff==false
is_valid = true
send_command('console_echo "Impact Debuff: '..tostring(ImpactDebuff)..'"')
elseif command:lower()=="forceilvl" then
ForceIlvl = ForceIlvl==false
is_valid = true
send_command('console_echo "Force iLVL: '..tostring(ForceIlvl)..'"')
elseif command:lower()=="lagmode" then
LagMode = LagMode==false
is_valid = true
send_command('console_echo "Lag Compensation Mode: '..tostring(LagMode)..'"')
elseif command:lower()=="meleemode" then
if MeleeMode then
MeleeMode = false
enable("main","sub")
send_command('console_echo "Melee Mode: false"')
else
MeleeMode = true
equip({main="Nirvana",sub="Elan Strap +1"})
disable("main","sub")
send_command('console_echo "Melee Mode: true"')
end
is_valid = true
elseif command=="ToggleIdle" then
is_valid = true
if IdleMode=="Refresh" then
IdleMode = "DT"
elseif IdleMode=="DT" then
IdleMode = "PetDT"
elseif IdleMode=="PetDT" then
IdleMode = "DD"
else
IdleMode = "Refresh"
end
send_command('console_echo "Idle Mode: ['..IdleMode..']"')
elseif command:lower()=="lowhp" then
-- Use for "Cure 500 HP" objectives in Omen
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"})
return
elseif string.sub(command:lower(),1,12)=="meteorstrike" then
MeteorStrike = string.sub(command,13,13)
send_command('console_echo "Meteor Strike: '..MeteorStrike..'/5"')
is_valid = true
elseif string.sub(command:lower(),1,8)=="geocrush" then
Geocrush = string.sub(command,9,9)
send_command('console_echo "Geocrush: '..Geocrush..'/5"')
is_valid = true
elseif string.sub(command:lower(),1,9)=="grandfall" then
GrandFall = string.sub(command,10,10)
send_command('console_echo "Grand Fall: '..GrandFall..'/5"')
is_valid = true
elseif string.sub(command:lower(),1,9)=="windblade" then
WindBlade = +string.sub(command,10,10)
send_command('console_echo "Wind Blade: '..WindBlade..'/5"')
is_valid = true
elseif string.sub(command:lower(),1,14)=="heavenlystrike" then
HeavenlyStrike = string.sub(command,15,15)
send_command('console_echo "Heavenly Strike: '..HeavenlyStrike..'/5"')
is_valid = true
elseif string.sub(command:lower(),1,12)=="thunderstorm" then
Thunderstorm = string.sub(command,13,13)
send_command('console_echo "Thunderstorm: '..Thunderstorm..'/5"')
is_valid = true
elseif command=="TestMode" then
Test = Test + 1
if Test==3 then
Test = 0
end
is_valid = true
send_command('console_echo "Test Mode: '..tostring(Test)..'"')
end
if not is_valid then
send_command('console_echo "gs c {Refresh|DT|DD|PetDT|Favor} {AccMode} {ImpactMode} {MeleeMode}"')
end
idle()
end
function idle()
--if TownIdle:contains(world.area:lower()) then
-- return
--end
if pet.isvalid then
if IdleMode=='DT' then
equip(sets.aftercast.Perp_DT)
elseif string.find(pet.name,'Spirit') then
equip(sets.aftercast.Spirit)
elseif IdleMode=='PetDT' then
if ForceIlvl then
equip(sets.aftercast.Avatar_DT_Ilvl)
else
equip(sets.aftercast.Avatar_DT)
end
elseif IdleMode=='Refresh' then
if player.mpp < 50 then
equip(sets.aftercast.Perp_RefreshSub50)
else
equip(sets.aftercast.Perp_Refresh)
end
elseif IdleMode=='Favor' then
equip(sets.aftercast.Perp_Favor)
elseif IdleMode=='Zendik' then
equip(sets.aftercast.Perp_Zendik)
elseif MeleeMode then
equip(sets.aftercast.Perp_Melee)
elseif IdleMode=='DD' then
equip(sets.aftercast.Perp_DD)
end
-- Gaiters if Fleet Wind is up
if buffactive['Quickening'] and IdleMode~='DT' and not ForceIlvl then
equip({feet="Herald's Gaiters"})
end
else
if IdleMode=='DT' then
equip(sets.aftercast.DT)
elseif MeleeMode and IdleMode=='DD' then
equip(sets.aftercast.Perp_Melee)
elseif ForceIlvl then
equip(sets.aftercast.Idle_Ilvl)
else
equip(sets.aftercast.Idle)
end
end
-- Balrahn's Ring
--if Salvage:contains(world.area) then
-- equip({ring2="Balrahn's Ring"})
--end
-- Maquette Ring
--if world.area=='Maquette Abdhaljs-Legion' and not IdleMode=='DT' then
-- equip({ring2="Maquette Ring"})
--end
end
Asura.Eiryl
By Asura.Eiryl 2019-07-14 05:39:02
When you use two identical rings the best solution for that is putting one in a different wardrobe. Sometimes the game just can't figure out "oh you have two of the same thing! equip both?!" It tries to use the same ring twice and fails to equip properly.
Don't know if anyone has come up with a better solution than that, but having each in a different wardrobe works great.
By Mcdougall 2019-07-14 06:19:10
Wow.. that was te easiest fix ever... lol thank you
サーバ: Shiva
Game: FFXI
Posts: 1052
By Shiva.Arislan 2019-07-14 07:48:36
It's good to specify the locations in your lua, too:
Code ring1={name="Chirich Ring +1", bag="wardrobe3"},
ring2={name="Chirich Ring +1", bag="wardrobe4"},
サーバ: Leviathan
Game: FFXI
Posts: 6052
By Leviathan.Comeatmebro 2019-07-14 09:37:04
Sometimes the game just can't figure out "oh you have two of the same thing! equip both?!" It tries to use the same ring twice and fails to equip properly.
Nah, the packet used to equip gear specifies the slot in inventory that the ring is in. If gearswap doesn't handle that properly, it's a gearswap issue. Ashitacast has no trouble with double rings or earrings, as there is a coded exception to not try to equip the same inv slot on both.
Asura.Eiryl
By Asura.Eiryl 2019-07-14 09:57:19
It's not just a gearswap thing, if you try to do it with vanilla macros it'll fail too.
Don't know if equipsets make it work though (while being in the same bag)
サーバ: Asura
Game: FFXI
Posts: 696
By Asura.Chaostaru 2019-07-14 10:00:32
equipsets dont work with rostam unless both are in different wardrobes. Itll randomly main hand the one you dont want main handed unless you separate them in the wardrobes. Id assume rings/earring would be the same.
サーバ: Leviathan
Game: FFXI
Posts: 6052
By Leviathan.Comeatmebro 2019-07-14 10:09:46
It's not just a gearswap thing, if you try to do it with vanilla macros it'll fail too.
The issue being experienced is a gearswap thing. If vanilla also fails, it's for the same reason.
Neither gearswap nor the game actually sends out '/equip ring1 "Varar Ring +1"', they send out a packet with the equivalent of:
EQUIP [Equipment Slot] [Inventory Slot] [Bag]
(or in the case of equipset, many of these shoved together into a slightly compressed version)
If, on the back end, gearswap were to correctly realize it shouldn't send the same inventory slot for both, it would fix this. It is not a complicated bug, someone should've stepped up ages ago.
Leviathan.Isiolia
サーバ: Leviathan
Game: FFXI
Posts: 458
By Leviathan.Isiolia 2019-07-14 10:15:25
Was this an issue that persisted or just something you noticed when editing a file? I've seen it happen with a couple slots (even with repeated //gs enable all etc) only to go back to working fine after a job change.
サーバ: Asura
Game: FFXI
Posts: 496
By Asura.Elizabet 2019-07-14 11:26:32
For me, even putting them in two diff wardrobe didnt fix it 100%. But doing:
Code
ring1={name="Chirich Ring +1", bag="wardrobe3"},
[the rest of your gearset between the 2 rings]
ring2={name="Chirich Ring +1", bag="wardrobe4"},
did fix it.
[+]
Should be simple but something isn't working and i cant figure it out... Its not equiping my varar ring +1 in the ring1 spot during abilities... I am usuing pergatory's GS. Any help would be greatly appreciated... Thank you.
Code -- IdleMode determines the set used after casting. You change it with "/console gs c <IdleMode>"
-- The modes are:
-- Refresh: Uses the most refresh available.
-- DT: A mix of refresh, PDT, and MDT to help when you can't avoid AOE.
-- PetDT: Sacrifice refresh to reduce avatar's damage taken. WARNING: Selenian Cap drops you below 119, use with caution!
-- DD: When melee mode is on and you're engaged, uses TP gear. Otherwise, avatar melee gear.
-- Favor: Uses Beckoner's Horn +1 and max smn skill to boost the favor effect.
-- 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)
-- Additional Bindings:
-- F9 - Toggles between a subset of IdleModes (Refresh > DT > PetDT)
-- F10 - Toggles MeleeMode (When enabled, equips Nirvana and Elan+1, then disables those 2 slots from swapping)
-- NOTE: If you don't already have the Nirvana & Elan+1 equipped, YOU WILL LOSE TP
-- Additional Commands:
-- /console gs c AccMode - Toggles high-accuracy sets to be used where appropriate.
-- /console gs c ImpactMode - Toggles between using normal magic BP set for Fenrir's Impact or a custom high-skill set for debuffs.
-- /console gs c ForceIlvl - I have this set up to override a few specific slots where I normally use non-ilvl pieces.
-- /console gs c LagMode - Used to help BPs land in the right gear in high-lag situations.
-- Sets a timer to swap gear 0.2s after the BP is used rather than waiting for server response.
function file_unload()
send_command('unbind f9')
send_command('unbind f10')
send_command('unbind ^f10')
end
function get_sets()
send_command('bind f9 gs c ToggleIdle')
send_command('bind f10 gs c MeleeMode')
send_command('bind ^f10 gs c ForceIlvl')
-- Set your merits here. This is used in deciding between Enticer's Pants or Apogee Slacks +1.
-- To change in-game, "/console gs c MeteorStrike3" will change Meteor Strike to 3/5 merits.
-- The damage difference is very minor unless you're over 2400 TP.
-- It's ok to just always use Enticer's Pants and ignore this section.
MeteorStrike = 1
HeavenlyStrike = 1
WindBlade = 1
Geocrush = 1
Thunderstorm = 5
GrandFall = 1
StartLockStyle = ''
IdleMode = 'Refresh'
AccMode = false
ImpactDebuff = false
MeleeMode = false
ForceIlvl = false
LagMode = false -- Default LagMode. If you have a lot of lag issues, change to "true".
AutoRemedy = false -- Auto Remedy when using an ability while Paralyzed.
AutoEcho = false -- Auto Echo Drop when using an ability while Silenced.
Test = 0
-- ===================================================================================================================
-- Sets
-- ===================================================================================================================
-- Base Damage Taken Set - Mainly used when IdleMode is "DT"
sets.DT_Base = {
}
sets.precast = {}
-- Fast Cast
sets.precast.FC = {
}
sets.midcast = {}
-- BP Timer Gear
sets.midcast.BP = {
main={ name="Espiritus", augments={'Enmity-6','Pet: "Mag.Atk.Bns."+30','Pet: Damage taken -4%',}},
sub="Vox Grip",
ammo="Sancus Sachet +1",
head="Beckoner's Horn +1",
body={ name="Glyphic Doublet +1", augments={'Reduces Sp. "Blood Pact" MP cost',}},
hands={ name="Glyphic Bracers +1", augments={'Inc. Sp. "Blood Pact" magic burst dmg.',}},
legs={ name="Glyphic Spats +1", augments={'Increases Sp. "Blood Pact" accuracy',}},
feet={ name="Glyph. Pigaches +1", augments={'Inc. Sp. "Blood Pact" magic crit. dmg.',}},
neck="Caller's Pendant",
waist="Lucidity Sash",
ear1="Gelos Earring",
ear2={ name="Moonshade Earring", augments={'Mag. Acc.+4','Latent effect: "Refresh"+1',}},
ring1="Varar Ring +1",
ring2="Varar Ring +1",
back={ name="Conveyance Cape", augments={'Summoning magic skill +2','Blood Pact Dmg.+2','Blood Pact ab. del. II -3',}},
}
-- Elemental Siphon sets. Zodiac Ring is affected by day, Chatoyant Staff by weather, and Twilight Cape by both.
sets.midcast.Siphon = {
main={ name="Espiritus", augments={'Summoning magic skill +15','Pet: Mag. Acc.+30','Pet: Damage taken -4%',}},
sub="Vox Grip",
ammo="Esper Stone +1",
head="Baayami Hat",
neck="Caller's Pendant",
body="Baayami Robe",
hands="Baayami Cuffs +1",
ring2="Evoker's Ring",
back={ name="Conveyance Cape", augments={'Summoning magic skill +2','Blood Pact Dmg.+2','Blood Pact ab. del. II -3',}},
legs="Baayami Slops",
feet="Beck. Pigaches +1"
}
sets.midcast.SiphonZodiac = set_combine()
sets.midcast.SiphonWeather = set_combine(sets.midcast.Siphon, { main="Chatoyant Staff" })
sets.midcast.SiphonWeatherZodiac = set_combine(sets.midcast.SiphonZodiac, { main="Chatoyant Staff" })
-- Summoning Midcast, cap spell interruption if possible (Baayami Robe gives 100, need 2 more)
sets.midcast.Summon = set_combine(sets.DT_Base, {
body="Baayami Robe +1",
legs="Lengo Pants"
})
sets.midcast.Cure = {
sub="Oneiros Grip",
ammo="Sancus Sachet +1",
hands="Telchine Gloves",
ring1="Weather. Ring",
legs="Assid. Pants +1",
feet="Merlinic Crackows",
}
sets.midcast.Cursna = set_combine(sets.precast.FC, {
})
sets.midcast.EnmityRecast = set_combine(sets.precast.FC, {
})
sets.midcast.Enfeeble = {
}
sets.midcast.Enhancing = {
}
sets.midcast.Stoneskin = set_combine(sets.midcast.Enhancing, {
})
sets.midcast.Nuke = {
}
sets.midcast["Refresh"] = set_combine(sets.midcast.Enhancing, {
})
sets.midcast["Aquaveil"] = set_combine(sets.midcast.Enhancing, {
})
sets.midcast["Mana Cede"] = { hands="Beckoner's Bracers" }
sets.midcast["Astral Flow"] = { }
sets.midcast["Garland of Bliss"] = {
main={ name="Espiritus", augments={'Enmity-6','Pet: "Mag.Atk.Bns."+30','Pet: Damage taken -4%',}},
sub="Vox Grip",
ammo="Sancus Sachet +1",
head="Tali'ah Turban +1",
body="Tali'ah Manteel",
hands="Tali'ah Gages +1",
legs="Tali'ah Seraweels",
feet="Tali'ah Crackows +1",
neck="Smn. Collar +2",
waist="Klouskap Sash +1",
left_ear="Mache Earring +1",
right_ear="Mache Earring +1",
left_ring="Ramuh Ring +1",
right_ring="Tali'ah Ring",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
}
sets.midcast["Shattersoul"] = {
main={ name="Espiritus", augments={'Enmity-6','Pet: "Mag.Atk.Bns."+30','Pet: Damage taken -4%',}},
sub="Vox Grip",
ammo="Sancus Sachet +1",
head="Tali'ah Turban +1",
body="Tali'ah Manteel",
hands="Tali'ah Gages +1",
legs="Tali'ah Seraweels",
feet="Tali'ah Crackows +1",
neck="Smn. Collar +2",
waist="Klouskap Sash +1",
left_ear="Mache Earring +1",
right_ear="Mache Earring +1",
left_ring="Ramuh Ring +1",
right_ring="Tali'ah Ring",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
}
sets.midcast["Cataclysm"] = sets.midcast.Nuke
sets.pet_midcast = {}
-- Main physical pact set (Volt Strike, Pred Claws, etc.)
sets.pet_midcast.Physical_BP = {
main="Gridarvor",
sub="Elan Strap",
ammo="Sancus Sachet +1",
head={ name="Apogee Crown +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
body="Con. Doublet +1",
hands={ name="Apogee Mitts +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
legs="Apogee Slacks +1",
feet={ name="Apogee Pumps +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
neck="Smn. Collar +2",
waist="Klouskap Sash +1",
ear1="Gelos Earring",
ear2="Kyrene's Earring",
ring1="Varar Ring +1",
ring2="Varar Ring +1",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
}
sets.pet_midcast.Physical_BP_AM3 = set_combine(sets.pet_midcast.Physical_BP, {
})
-- Physical pacts which benefit more from TP than Pet:DA (like single-hit BP)
sets.pet_midcast.Physical_BP_TP = set_combine(sets.pet_midcast.Physical_BP, {
})
-- Used for all physical pacts when AccMode is true
sets.pet_midcast.Physical_BP_Acc = set_combine(sets.pet_midcast.Physical_BP, {
})
-- Base magic pact set
sets.pet_midcast.Magic_BP_Base = {
main="Espiritus",
sub="Elan Strap",
ammo="Sancus Sachet +1",
head={ name="Apogee Crown +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
body="Con. Doublet +1",
hands={ name="Apogee Mitts +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
legs="Apogee Slacks +1",
feet={ name="Apogee Pumps +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
neck="Smn. Collar +2",
waist="Klouskap Sash +1",
ear1="Gelos Earring",
ear2="Kyrene's Earring",
ring1="Varar Ring +1",
ring2="Varar Ring +1",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
}
-- Some magic pacts benefit more from TP than others.
-- Note: This set will only be used on merit pacts if you have less than 4 merits.
-- Make sure to update your merit values at the top of this Lua.
sets.pet_midcast.Magic_BP_TP = set_combine(sets.pet_midcast.Magic_BP_Base, {
})
-- NoTP set used when you don't need Enticer's
sets.pet_midcast.Magic_BP_NoTP = set_combine(sets.pet_midcast.Magic_BP_Base, {
})
sets.pet_midcast.Magic_BP_TP_Acc = set_combine(sets.pet_midcast.Magic_BP_TP, {
})
sets.pet_midcast.Magic_BP_NoTP_Acc = set_combine(sets.pet_midcast.Magic_BP_NoTP, {
})
sets.pet_midcast.FlamingCrush = {
main="Espiritus",
sub="Elan Strap",
ammo="Sancus Sachet +1",
head={ name="Apogee Crown +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
body="Con. Doublet +1",
hands={ name="Apogee Mitts +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
legs="Apogee Slacks +1",
feet={ name="Apogee Pumps +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
neck="Smn. Collar +2",
waist="Klouskap Sash +1",
ear1="Gelos Earring",
ear2="Kyrene's Earring",
ring1="Varar Ring +1",
ring2="Varar Ring +1",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
}
sets.pet_midcast.FlamingCrush_Acc = set_combine(sets.pet_midcast.FlamingCrush, {
})
-- Pet: Magic Acc set - Mainly used for debuff pacts like Shock Squall
sets.pet_midcast.MagicAcc_BP = {
}
sets.pet_midcast.Debuff_Rage = sets.pet_midcast.MagicAcc_BP
-- Pure summoning magic set, mainly used for buffs like Hastega II.
sets.pet_midcast.SummoningMagic = {
main={ name="Espiritus", augments={'Summoning magic skill +15','Pet: Mag. Acc.+30','Pet: Damage taken -4%',}},
sub="Vox Grip",
ammo="Sancus Sachet +1",
head="Baayami Hat",
neck="Caller's Pendant",
body="Baayami Robe",
hands="Glyphic Bracers +1",
ring1="Evoker's Ring",
ring2="Fervor Ring",
back={ name="Conveyance Cape", augments={'Summoning magic skill +2','Blood Pact Dmg.+2','Blood Pact ab. del. II -3',}},
waist="Lucidity Sash",
legs="Baayami Slops",
feet="Baayami Sabots"
}
sets.pet_midcast.Buff = sets.pet_midcast.SummoningMagic
-- I use Apogee gear for healing BPs because the amount healed is affected by avatar max HP.
-- I'm probably stupid. It puts you in yellow HP after using a healing move.
sets.pet_midcast.Buff_Healing = set_combine(sets.pet_midcast.SummoningMagic, {
})
-- This set is used for certain blood pacts when ImpactDebuff mode is ON. (/console gs c ImpactDebuff)
-- These pacts are normally used as nukes, but they're also strong debuffs which are enhanced by smn skill.
sets.pet_midcast.Impact = set_combine(sets.pet_midcast.SummoningMagic, {
})
sets.aftercast = {}
-- Idle set with no avatar out.
sets.aftercast.Idle = {
ammo="Sancus Sachet +1",
head={ name="Apogee Crown +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
body="Shomonjijoe +1",
hands={ name="Apogee Mitts +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
legs={ name="Helios Spats", augments={'Pet: "Mag.Atk.Bns."+27','Pet: Crit.hit rate +2','Blood Pact Dmg.+5',}},
feet={ name="Apogee Pumps +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
neck="Twilight Torque",
waist="Lucidity Sash",
ear1="Gelos Earring",
ear2={ name="Moonshade Earring", augments={'Mag. Acc.+4','Latent effect: "Refresh"+1',}},
ring1="Varar Ring +1",
ring2="Varar Ring +1",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
}
-- Idle set used when ForceIlvl is ON. Use this mode to avoid Gaiters dropping ilvl.
sets.aftercast.Idle_Ilvl = set_combine(sets.aftercast.Idle, {
feet="Baayami Sabots"
})
sets.aftercast.DT = sets.DT_Base
-- Many idle sets inherit from this set.
-- Put common items here so you don't have to repeat them over and over.
sets.aftercast.Perp_Base = {
ammo="Sancus Sachet +1",
head="Beckoner's Horn +1",
body="Shomonjijoe +1",
hands={ name="Apogee Mitts +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}},
legs="Assid. Pants +1",
feet="Apogee Pumps +1",
neck="Caller's Pendant",
waist="Klouskap Sash +1",
ear1="Gelos Earring",
ear2={ name="Moonshade Earring", augments={'Mag. Acc.+4','Latent effect: "Refresh"+1',}},
ring1="Evoker's Ring",
ring2="Varar Ring +1",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
}
-- Avatar Melee set. Equipped when IdleMode is "DD" and MeleeMode is OFF.
sets.aftercast.Perp_DD = set_combine(sets.aftercast.Perp_Base, {
})
-- Refresh set with avatar out. Equipped when IdleMode is "Refresh".
sets.aftercast.Perp_Refresh = set_combine(sets.aftercast.Perp_Base, {
})
-- Refresh set when MP is under 50%
sets.aftercast.Perp_RefreshSub50 = set_combine(sets.aftercast.Perp_Refresh, {
})
sets.aftercast.Perp_Favor = set_combine(sets.aftercast.Perp_Refresh, {
head="Beckoner's Horn +1",
ring2="Evoker's Ring",
legs="Baayami Slops",
feet="Baayami Sabots"
})
sets.aftercast.Perp_Zendik = set_combine(sets.aftercast.Perp_Favor, {
})
-- TP set. Equipped when IdleMode is "DD" and MeleeMode is ON.
sets.aftercast.Perp_Melee = set_combine(sets.aftercast.Perp_Refresh, {
main={ name="Espiritus", augments={'Enmity-6','Pet: "Mag.Atk.Bns."+30','Pet: Damage taken -4%',}},
sub="Vox Grip",
ammo="Sancus Sachet +1",
head="Tali'ah Turban +1",
body="Tali'ah Manteel",
hands="Tali'ah Gages +1",
legs="Tali'ah Seraweels",
feet="Tali'ah Crackows +1",
neck="Smn. Collar +2",
waist="Klouskap Sash +1",
left_ear="Mache Earring +1",
right_ear="Mache Earring +1",
left_ring="Ramuh Ring +1",
right_ring="Tali'ah Ring",
back={ name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+15 Attack+15','Pet: Attack+10 Pet: Rng.Atk.+10','Pet: Haste+10','Pet: Damage taken -5%',}},
})
-- Pet:DT build. Equipped when IdleMode is "PetDT".
sets.aftercast.Avatar_DT = {
}
-- Perp down set used when ForceIlvl is ON. If you use Selenian Cap for Pet:DT, you can make another set here without it.
sets.aftercast.Avatar_DT_Ilvl = set_combine(sets.aftercast.Avatar_DT, {
})
-- DT build with avatar out. Equipped when IdleMode is "DT".
sets.aftercast.Perp_DT = set_combine(sets.DT_Base, {
waist="Lucidity Sash"
})
sets.aftercast.Spirit = {
}
-- ===================================================================================================================
-- End of Sets
-- ===================================================================================================================
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'}
Buff_BPs_Healing = S{'Healing Ruby','Healing Ruby II','Whispering Wind','Spring Water'}
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'}
Debuff_Rage_BPs = S{'Moonlit Charge','Tail Whip'}
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'}
Magic_BPs_TP = S{'Impact','Conflag Strike','Level ? Holy','Lunar Bay'}
Merit_BPs = S{'Meteor Strike','Geocrush','Grand Fall','Wind Blade','Heavenly Strike','Thunderstorm'}
Physical_BPs_TP = S{'Rock Buster','Mountain Buster','Crescent Fang','Spinning Dive'}
ZodiacElements = S{'Fire','Earth','Water','Wind','Ice','Lightning'}
AvatarList = S{'Shiva','Ramuh','Garuda','Leviathan','Diabolos','Titan','Fenrir','Ifrit','Carbuncle','Fire Spirit','Air Spirit','Ice Spirit','Thunder Spirit','Light Spirit','Dark Spirit','Earth Spirit','Water Spirit','Cait Sith','Alexander','Odin','Atomos'}
--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","al zahbi","nashmau","western adoulin","eastern adoulin"}
--Salvage = S{"Bhaflau Remnants","Zhayolm Remnants","Arrapago Remnants","Silver Sea Remnants"}
end
function pet_change(pet,gain)
idle()
end
function pretarget(spell,action)
if not buffactive['Muddle'] then
-- Auto Remedy --
if AutoRemedy and (spell.action_type == 'Magic' or spell.type == 'JobAbility') then
if buffactive['Paralysis'] or (buffactive['Silence'] and not AutoEcho) then
cancel_spell()
send_command('input /item "Remedy" <me>')
end
end
-- Auto Echo Drop --
if AutoEcho and spell.action_type == 'Magic' and buffactive['Silence'] then
cancel_spell()
send_command('input /item "Echo Drops" <me>')
end
end
end
function precast(spell)
if (pet.isvalid and pet_midaction()) or spell.type=="Item" then
return
end
-- Spell fast cast
if spell.action_type=="Magic" then
if spell.name=="Stoneskin" then
equip(sets.precast.FC,{waist="Siegel Sash"})
else
equip(sets.precast.FC)
end
end
end
function midcast(spell)
if (pet.isvalid and pet_midaction()) or spell.type=="Item" then
return
end
-- BP Timer gear needs to swap here
if (spell.type=="BloodPactWard" or spell.type=="BloodPactRage") then
if not buffactive["Astral Conduit"] then
equip(sets.midcast.BP)
end
-- If lag compensation mode is on, set up a timer to equip the BP gear.
if LagMode then
send_command('wait 0.5;gs c EquipBP '..spell.name)
end
-- Spell Midcast & Potency Stuff
elseif sets.midcast[spell.english] then
equip(sets.midcast[spell.english])
elseif spell.name=="Elemental Siphon" then
if pet.element==world.day_element and ZodiacElements:contains(pet.element) then
if pet.element==world.weather_element then
equip(sets.midcast.SiphonWeatherZodiac)
else
equip(sets.midcast.SiphonZodiac)
end
else
if pet.element==world.weather_element then
equip(sets.midcast.SiphonWeather)
else
equip(sets.midcast.Siphon)
end
end
elseif spell.type=="SummonerPact" then
equip(sets.midcast.Summon)
elseif spell.type=="WhiteMagic" then
if string.find(spell.name,"Cure") or string.find(spell.name,"Curaga") then
equip(sets.midcast.Cure)
elseif string.find(spell.name,"Protect") or string.find(spell.name,"Shell") then
equip(sets.midcast.Enhancing,{ring2="Sheltered Ring"})
elseif spell.skill=="Enfeebling Magic" then
equip(sets.midcast.Enfeeble)
elseif spell.skill=="Enhancing Magic" then
equip(sets.midcast.Enhancing)
else
idle()
end
elseif spell.type=="BlackMagic" then
if spell.skill=="Elemental Magic" then
equip(sets.midcast.Nuke)
end
elseif spell.action_type=="Magic" then
equip(sets.midcast.EnmityRecast)
else
idle()
end
-- Auto-cancel existing buffs
if spell.name=="Stoneskin" and buffactive["Stoneskin"] then
windower.send_command('cancel 37;')
elseif spell.name=="Sneak" and buffactive["Sneak"] and spell.target.type=="SELF" then
windower.send_command('cancel 71;')
elseif spell.name=="Utsusemi: Ichi" and buffactive["Copy Image"] then
windower.send_command('wait 1;cancel 66;')
end
end
function aftercast(spell)
if pet_midaction() or spell.type=="Item" then
return
end
if not string.find(spell.type,"BloodPact") then
idle()
end
end
function status_change(new,old)
if new=="Idle" then
idle()
end
end
function buff_change(name,gain)
if name=="Quickening" then
idle()
end
end
function pet_midcast(spell)
if not LagMode then
equipBPGear(spell.name)
end
end
function pet_aftercast(spell)
idle()
end
function equipBPGear(spell)
if spell=="Perfect Defense" then
equip(sets.pet_midcast.SummoningMagic)
elseif Debuff_BPs:contains(spell) then
equip(sets.pet_midcast.MagicAcc_BP)
elseif Buff_BPs_Healing:contains(spell) then
equip(sets.pet_midcast.Buff_Healing)
elseif Buff_BPs_Duration:contains(spell) then
equip(sets.pet_midcast.Buff)
elseif spell=="Flaming Crush" then
if AccMode then
equip(sets.pet_midcast.FlamingCrush_Acc)
else
equip(sets.pet_midcast.FlamingCrush)
end
elseif ImpactDebuff and (spell=="Impact" or spell=="Conflag Strike") then
equip(sets.pet_midcast.Impact)
elseif Magic_BPs_TP:contains(spell) or string.find(spell," II") or string.find(spell," IV") then
if AccMode then
equip(sets.pet_midcast.Magic_BP_TP_Acc)
else
equip(sets.pet_midcast.Magic_BP_TP)
end
elseif Magic_BPs_NoTP:contains(spell) then
if AccMode then
equip(sets.pet_midcast.Magic_BP_NoTP_Acc)
else
equip(sets.pet_midcast.Magic_BP_NoTP)
end
elseif Merit_BPs:contains(spell) then
if AccMode then
equip(sets.pet_midcast.Magic_BP_TP_Acc)
elseif spell=="Meteor Strike" and MeteorStrike>4 then
equip(sets.pet_midcast.Magic_BP_NoTP)
elseif spell=="Geocrush" and Geocrush>4 then
equip(sets.pet_midcast.Magic_BP_NoTP)
elseif spell=="Grand Fall" and GrandFall>4 then
equip(sets.pet_midcast.Magic_BP_NoTP)
elseif spell=="Wind Blade" and WindBlade>4 then
equip(sets.pet_midcast.Magic_BP_NoTP)
elseif spell=="Heavenly Strike" and HeavenlyStrike>4 then
equip(sets.pet_midcast.Magic_BP_NoTP)
elseif spell=="Thunderstorm" and Thunderstorm>4 then
equip(sets.pet_midcast.Magic_BP_NoTP)
else
equip(sets.pet_midcast.Magic_BP_TP)
end
elseif Debuff_Rage_BPs:contains(spell) then
equip(sets.pet_midcast.Debuff_Rage)
else
if AccMode then
equip(sets.pet_midcast.Physical_BP_Acc)
elseif Physical_BPs_TP:contains(spell) then
equip(sets.pet_midcast.Physical_BP_TP)
elseif buffactive["Aftermath: Lv.3"] then
equip(sets.pet_midcast.Physical_BP_AM3)
else
equip(sets.pet_midcast.Physical_BP)
end
end
end
-- This command is called whenever you input "gs c <command>"
function self_command(command)
IdleModeCommands = {'DD','Refresh','DT','Favor','PetDT','Zendik'}
is_valid = false
for _, v in ipairs(IdleModeCommands) do
if command:lower()==v:lower() then
IdleMode = v
send_command('console_echo "Idle Mode: ['..IdleMode..']"')
idle()
return
end
end
if string.sub(command,1,7)=="EquipBP" then
equipBPGear(string.sub(command,9,string.len(command)))
return
elseif command:lower()=="accmode" then
AccMode = AccMode==false
is_valid = true
send_command('console_echo "AccMode: '..tostring(AccMode)..'"')
elseif command:lower()=="impactmode" then
ImpactDebuff = ImpactDebuff==false
is_valid = true
send_command('console_echo "Impact Debuff: '..tostring(ImpactDebuff)..'"')
elseif command:lower()=="forceilvl" then
ForceIlvl = ForceIlvl==false
is_valid = true
send_command('console_echo "Force iLVL: '..tostring(ForceIlvl)..'"')
elseif command:lower()=="lagmode" then
LagMode = LagMode==false
is_valid = true
send_command('console_echo "Lag Compensation Mode: '..tostring(LagMode)..'"')
elseif command:lower()=="meleemode" then
if MeleeMode then
MeleeMode = false
enable("main","sub")
send_command('console_echo "Melee Mode: false"')
else
MeleeMode = true
equip({main="Nirvana",sub="Elan Strap +1"})
disable("main","sub")
send_command('console_echo "Melee Mode: true"')
end
is_valid = true
elseif command=="ToggleIdle" then
is_valid = true
if IdleMode=="Refresh" then
IdleMode = "DT"
elseif IdleMode=="DT" then
IdleMode = "PetDT"
elseif IdleMode=="PetDT" then
IdleMode = "DD"
else
IdleMode = "Refresh"
end
send_command('console_echo "Idle Mode: ['..IdleMode..']"')
elseif command:lower()=="lowhp" then
-- Use for "Cure 500 HP" objectives in Omen
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"})
return
elseif string.sub(command:lower(),1,12)=="meteorstrike" then
MeteorStrike = string.sub(command,13,13)
send_command('console_echo "Meteor Strike: '..MeteorStrike..'/5"')
is_valid = true
elseif string.sub(command:lower(),1,8)=="geocrush" then
Geocrush = string.sub(command,9,9)
send_command('console_echo "Geocrush: '..Geocrush..'/5"')
is_valid = true
elseif string.sub(command:lower(),1,9)=="grandfall" then
GrandFall = string.sub(command,10,10)
send_command('console_echo "Grand Fall: '..GrandFall..'/5"')
is_valid = true
elseif string.sub(command:lower(),1,9)=="windblade" then
WindBlade = +string.sub(command,10,10)
send_command('console_echo "Wind Blade: '..WindBlade..'/5"')
is_valid = true
elseif string.sub(command:lower(),1,14)=="heavenlystrike" then
HeavenlyStrike = string.sub(command,15,15)
send_command('console_echo "Heavenly Strike: '..HeavenlyStrike..'/5"')
is_valid = true
elseif string.sub(command:lower(),1,12)=="thunderstorm" then
Thunderstorm = string.sub(command,13,13)
send_command('console_echo "Thunderstorm: '..Thunderstorm..'/5"')
is_valid = true
elseif command=="TestMode" then
Test = Test + 1
if Test==3 then
Test = 0
end
is_valid = true
send_command('console_echo "Test Mode: '..tostring(Test)..'"')
end
if not is_valid then
send_command('console_echo "gs c {Refresh|DT|DD|PetDT|Favor} {AccMode} {ImpactMode} {MeleeMode}"')
end
idle()
end
function idle()
--if TownIdle:contains(world.area:lower()) then
-- return
--end
if pet.isvalid then
if IdleMode=='DT' then
equip(sets.aftercast.Perp_DT)
elseif string.find(pet.name,'Spirit') then
equip(sets.aftercast.Spirit)
elseif IdleMode=='PetDT' then
if ForceIlvl then
equip(sets.aftercast.Avatar_DT_Ilvl)
else
equip(sets.aftercast.Avatar_DT)
end
elseif IdleMode=='Refresh' then
if player.mpp < 50 then
equip(sets.aftercast.Perp_RefreshSub50)
else
equip(sets.aftercast.Perp_Refresh)
end
elseif IdleMode=='Favor' then
equip(sets.aftercast.Perp_Favor)
elseif IdleMode=='Zendik' then
equip(sets.aftercast.Perp_Zendik)
elseif MeleeMode then
equip(sets.aftercast.Perp_Melee)
elseif IdleMode=='DD' then
equip(sets.aftercast.Perp_DD)
end
-- Gaiters if Fleet Wind is up
if buffactive['Quickening'] and IdleMode~='DT' and not ForceIlvl then
equip({feet="Herald's Gaiters"})
end
else
if IdleMode=='DT' then
equip(sets.aftercast.DT)
elseif MeleeMode and IdleMode=='DD' then
equip(sets.aftercast.Perp_Melee)
elseif ForceIlvl then
equip(sets.aftercast.Idle_Ilvl)
else
equip(sets.aftercast.Idle)
end
end
-- Balrahn's Ring
--if Salvage:contains(world.area) then
-- equip({ring2="Balrahn's Ring"})
--end
-- Maquette Ring
--if world.area=='Maquette Abdhaljs-Legion' and not IdleMode=='DT' then
-- equip({ring2="Maquette Ring"})
--end
end
|
|