|
Gearswap Support Thread
Server: Asura
Game: FFXI
Posts: 21
By Asura.Hadroncollider 2025-06-21 07:49:25
Hello. I doubt I'm the only one with the following problems, but I need help.
With the new macro tester buff and also the Limbus grace buffs, I get a Lua runtime error: GearSwap/packet_parsing.lua:464: attempt to index field '?' (a nil value)
Also I get the Lua runtime error: GearSwap/packet_parsing.lua:246: attempt to index field '?' (a nil value) if I try to equip any +4 relic, af or null gear.
Since gearswap stops working with those errors, I can basically not attempt the new content nor play my main job anymore. I'd be really glad if somoene has a solution for those problems. Thanks in advance!
Okay, found it out myself. For anyone wondering: it's an update error. Erasing the update folder and the res folder and restarting windower afterwards fixes the issue.
So... thanks for nothing!
[+]
Quetzalcoatl.Xilkk
Server: Quetzalcoatl
Game: FFXI
Posts: 1508
By Quetzalcoatl.Xilkk 2025-07-02 13:47:58
I've been trying out Lycus' Bst lua
I like alot of things in it, and I've pulled over all the stuff from my previous lua that it doesn't have.
I don't think Lycus is still playing. hasn't been a post or updates for 3 years.
The nice features include weaponlocking, the hud and weaponcycling.
However, it seems the sub weapon cycling breaks when player is not dualwielding.
I've been looking thru it and I can't find where it breaks down. I had it very briefly working bst/war. but after changing jobs and reloading it doesn't actually swap the sub slot anymore. the hud shows the value changing, but the equip doesn't actually swap.
Wondering if fresh eyes could help.
Best regards.
Fenrir.Jinxs
Server: Fenrir
Game: FFXI
Posts: 986
By Fenrir.Jinxs 2025-07-02 14:13:26
To understand better
Someone will need to know what you are doing and what is the expected outcome vs what it does
Also what's in your subhand if you are let's say war sub
Quote: I had it very briefly working bst/war. but after changing jobs and reloading it doesn't actually swap the sub slot anymore. the hud shows the value changing, but the equip doesn't actually swap. This is hard to follow can you break it down
Quetzalcoatl.Xilkk
Server: Quetzalcoatl
Game: FFXI
Posts: 1508
By Quetzalcoatl.Xilkk 2025-07-02 14:23:19
There is a toggle button in the lua to swap the currently equipped main hand weapon from a list, and the same w/ a different toggle button for the sub slot. it cycles thru a list of weapons, in the char_bst.lua main file.
When you change to a non-dual wield support job, the toggle for the sub slot keeps changing as reflected in the HUD, but it doesn't actually change your equipped offhand.
Code KeyBinds:
F9 ........... Cycle Offense Mode
Alt+F9 ....... Cycle Haste Mode (What kind of haste spell is being cast on you)
Ctrl+F9 ...... Toggle Solo / Party Mode (For determining whether or not your buffs are coming from Trusts)
F10 .......... Toggle Defense Mode
Alt+F10 ...... Reset Defense Mode
Ctrl+F10 ..... Cycle Defense Mode Options
F11 .......... Cycle Main-Hand
Ctrl+F11 ..... Toggle Main Weapon enable/disable
CtrlF8 ....... Cycle Off-Hand
Alt+F8........ Toggle Off-Hand enable/disable
Alt+F12 ...... Toggle Kiting
Home ......... Cycle Jugs List (List is obtained from your current inventory & wardrobes)
End .......... Cycle Reward Item
Ctrl+PageUp .. Toggle Showing Keybinds In HUD
Ctrl+PageDn .. Toggle HUD On/Off
Windows+1~7 .. Use Ready Move for # (/bstpet #)
send_command('bind !f8 gs c cycle Sub')
send_command('bind ^f8 gs c cycle LockSub')
--Weapon lists. Feel free to customize
state.Main = M{['description']='Main-hand Mode', "Aymur", "Spalirisos", "Pangu", "Dolichenus", "Tri-Edge"}
state.Sub = M{['description']='Off-hand Mode', 'Empty', "Agwu's Axe", "Fernagu", "Spalirisos", "Izizoeksi", "Diamond Aspis", "Sacro Bulwark", "Adapa Shield", "Ikenga's Axe"}
--By default weapons/shield swaps are enabled
state.LockMain = M{['description']='Main-hand', 'enabled', 'disabled'}
state.LockSub = M{['description']='Off-hand', 'enabled', 'disabled'}
the following functions in the bst-lib.lua
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
if state.LockMain.value ~= 'disabled' or player.equipment.main == '' then
meleeSet = set_combine(meleeSet, {main=state.Main.value})
end
if (state.LockSub.value ~= 'disabled' or player.equipment.sub == '') and dualwield then
if state.Sub.value:lower() == 'empty' then
meleeSet = set_combine(meleeSet, {sub=empty})
else
meleeSet = set_combine(meleeSet, {sub=state.Sub.value})
end
end
return meleeSet
end
function customize_defense_set(defenseSet)
if state.LockMain.value ~= 'disabled' or player.equipment.main == '' then
defenseSet = set_combine(defenseSet, {main=state.Main.value})
end
if (state.LockSub.value ~= 'disabled' or player.equipment.sub == '') and dualwield then
if state.Sub.value:lower() == 'empty' then
defenseSet = set_combine(defenseSet, {sub=empty})
else
defenseSet = set_combine(defenseSet, {sub=state.Sub.value})
end
end
return defenseSet
end
Fenrir.Jinxs
Server: Fenrir
Game: FFXI
Posts: 986
By Fenrir.Jinxs 2025-07-02 14:31:27
Right I can see that part
But I am asking what are you expecting to be equipped when you are /war empty? Is this on idle, what action?
And it looks like you have main and sub coded into various sets so understanding when it's not swapping and what will also be helpful and what your setup is at the time including subjob action
Then we can work backwards on whatever the UI is telling you
Quetzalcoatl.Xilkk
Server: Quetzalcoatl
Game: FFXI
Posts: 1508
By Quetzalcoatl.Xilkk 2025-07-02 14:42:39
I expect it to equip Sacro Bulwark when I toggle it to Sacro Bulwark. I expect it to equip Adapa shield when I toggle it to Adapa Shield, etc. I do NOT expect it to equip an offhand axe ofcourse.
Normally if I toggle it when on /dnc or /nin, it will cycle thru and equip each item in turn and equip them. Unless I have toggled the lock function, which I have not.
It doesn't matter whether I'm idle or engaged. It does not equip any shield in the sub slot. I cycle thru to Sacro Bulwark, Adapa Shield, or Diamond Aspis, but it does not equip it. The only thing that equips is if I use Killer instinct, because I also have Diamond Aspis in that precast set.
If I am /dnc or /nin it will equip diamond aspis, for the job ability then revert to whichiever off-hand is selected, as expected.
at present I am standing idle, pressing the bind hot-key to cycle the sub weapon slot. however if i'm engaged, the toggle likewise, changes the listed weapon in the hud, but does not change the equipped shield.
Fenrir.Jinxs
Server: Fenrir
Game: FFXI
Posts: 986
By Fenrir.Jinxs 2025-07-02 14:45:37
Now I have found that the gs lock command does not come off if I reload the gearswap
Only if I unload then reload it or turn off specific locks
What happens when you start on something like sub war with these conditions
Fenrir.Jinxs
Server: Fenrir
Game: FFXI
Posts: 986
By Fenrir.Jinxs 2025-07-02 14:57:58
Code
function customize_idle_set(idleSet)
if pet.isvalid then
if pet.status == 'Engaged' then
if state.DefenseMode.Value == 'None' then
idleSet = set_combine(idleSet, sets.idle.Field.Pet.engaged)
else
idleSet = set_combine(idleSet, sets.idle.Field.Pet.engaged[state.ActiveDefenseMode.Value])
end
end
end
if state.LockMain.value ~= 'disabled' or player.equipment.main == '' then
idleSet = set_combine(idleSet, {main=state.Main.value})
end
if (state.LockSub.value ~= 'disabled' or player.equipment.sub == '') and dualwield then
if state.Sub.value:lower() == 'empty' then
idleSet = set_combine(idleSet, {sub=empty})
else
idleSet = set_combine(idleSet, {sub=state.Sub.value})
end
end
return idleSet
end
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
if state.LockMain.value ~= 'disabled' or player.equipment.main == '' then
meleeSet = set_combine(meleeSet, {main=state.Main.value})
end
if (state.LockSub.value ~= 'disabled' or player.equipment.sub == '') and dualwield then
if state.Sub.value:lower() == 'empty' then
meleeSet = set_combine(meleeSet, {sub=empty})
else
meleeSet = set_combine(meleeSet, {sub=state.Sub.value})
end
end
return meleeSet
end
function customize_defense_set(defenseSet)
if state.LockMain.value ~= 'disabled' or player.equipment.main == '' then
defenseSet = set_combine(defenseSet, {main=state.Main.value})
end
if (state.LockSub.value ~= 'disabled' or player.equipment.sub == '') and dualwield then
if state.Sub.value:lower() == 'empty' then
defenseSet = set_combine(defenseSet, {sub=empty})
else
defenseSet = set_combine(defenseSet, {sub=state.Sub.value})
end
end
return defenseSet
end
The code in the side car file bst-lib
Without really deep diving it nor am I an expert mind you
Has "and dual wield" on most of the statements that even do anything with sub so unless you alter this it won't even look at the sub without dual wield
Server: Fenrir
Game: FFXI
Posts: 300
By Fenrir.Brimstonefox 2025-07-02 14:59:28
In the lib it appears the check_haste() function is relying on /dnc or /nin so that's probably why its not doing anything. (best guess just from eyeballing the code)
The the engaged sets in the main file appear to have DW in the name too not sure if there's a check where else that might be related, is it changing any gear at all?
Quetzalcoatl.Xilkk
Server: Quetzalcoatl
Game: FFXI
Posts: 1508
By Quetzalcoatl.Xilkk 2025-07-02 15:05:06
Thank you very much
Server: Fenrir
Game: FFXI
Posts: 300
By Fenrir.Brimstonefox 2025-07-03 08:53:06
Were you able to get it to work then?
Necro Bump Detected!
[36 days between previous and next post]
By Rentwokay 2025-08-08 12:20:07
I'm returning to the game after a long break and carried over my old Gearswap LUA files.
When I last played the game, we only had up to Mog Wardrobe 4. I noticed last night that my gear was not swapping if it was in a newer wardrobe; 6, specifically. The gear swapped properly after moving it to my main intentory.
Is there something I need to do or update to make use of the newer wardrobes?
Thanks.
Quetzalcoatl.Xilkk
Server: Quetzalcoatl
Game: FFXI
Posts: 1508
By Quetzalcoatl.Xilkk 2025-08-08 12:26:46
look at your gearswap luas and check if any of them reference specific wardrobes.
This is a nice feature when you have 2 identical items like 2x Stikini ring +1
however if you used such references, and moved the files while they still had such a reference, that would certainly break it.
otherwise, you just might need a little time.
@Brimstonefox
I changed my approach, and I haven't finished yet. I'm trying to incorporate the features from lycus's lua into mine. and I haven't had a lot of time to dedicate to it lately. been playing :D
Bismarck.Nanoprim
Server: Bismarck
Game: FFXI
Posts: 4
By Bismarck.Nanoprim 2025-08-12 14:46:05
How do i define what trusts are called when using Auto Trust function? I can't seem to find in any lua's or how define what ones i want called (either globally or on a per job basis) - anyone know?
By Nedavets1 2025-08-20 13:29:00
Really struggling with my gearswap with pld and hp. Switching between the sets (FC, enmity, idle, etc), the hp loss is really significant. I've tried assigning priority, but cant seem to reduce the amount of hp loss between switching sets, losing more than 25% hp when switching back to idle. Anyone have any idea why this is happening?
Code require 'organizer-lib'
-------------------------------------------------------------------------------------------------------------------
-- Keybinds
-------------------------------------------------------------------------------------------------------------------
-- Modes: [ F9 ] Cycle Offense Modes
-- [ CTRL+F9 ] Cycle Defense Modes
-- [ ALT+F9 ] Weaponskill Modes
-- [ F10 ] PDT Modes
-- [ CTRL+F10 ] Cycle PDT Modes
-- [ ALT+F10 ] Toggle Kiting Modes
-- [ F11 ] MDT Modes
-- [ CTRL+F11 ] Casting Modes
-- [ F12 ] Cycle MDT Modes
-- [ CTRL+F12 ] Cycle Idle Modes
-- [ ALT+F12 ] Cancel MDT Mode
--
---------------------------------------------------------------------------------------------------------------------------------------
-------------------------------- Initialization function that defines sets and variables to be used -----------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
-- IMPORTANT: Make sure to also get the Mote-Include.lua file to go with this.
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include file.
include('Mote-IncludePLD.lua')
include('organizer-lib')
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
options.OffenseModes = {'Normal', 'Acc'}
options.DefenseModes = {'Normal', 'PDT'}
options.WeaponskillModes = {'Normal', 'Acc'}
options.CastingModes = {'Normal', 'DT'}
options.IdleModes = {'Normal',}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'Aegis', 'Srivatsa', 'Ochain'}
options.MagicalDefenseModes = {'MDT' ,'BDT','ResistCharm'}
options.HybridDefenseModes = {'None', 'Reraise',}
options.BreathDefenseModes = {'BDT'}
state.Defense.PhysicalMode = 'Aegis'
state.HybridDefenseMode = 'None'
state.BreathDefenseModes = 'BDT'
send_command('bind f12 gs c cycle MagicalDefense')
send_command('bind ^= gs c activate MDT')
select_default_macro_book()
end
function user_unload()
send_command('unbind `')
send_command('unbind ^`')
send_command('unbind !`')
send_command('unbind ^-')
send_command('unbind !-')
send_command('unbind ^=')
send_command('unbind !=')
send_command('unbind delete')
send_command('unbind end')
send_command('unbind home')
end
-- Define sets and vars used by this job file.
function job_setup()
include('caster_buffWatcher.lua')
buffWatcher.watchList =
{
["Enlight"]="Enlight II",
["Enmity Boost"]="Crusade",
["Phalanx"]="Phalanx",
["Protect"]="Protect V",
["Shell"]="Shell IV",
}
include('common_info.status.lua')
end
--------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------Precast sets-----------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
function init_gear_sets()
-- Precast sets to enhance JAs
sets.precast.JA['Invincible'] = set_combine(sets.precast.JA['Provoke'], {legs="Cab. Breeches +3"})
sets.precast.JA['Holy Circle'] = set_combine(sets.precast.JA['Provoke'], {feet="Rev. Leggings +3"})
sets.precast.JA['Shield Bash'] = set_combine(sets.precast.JA['Provoke'], {hands="Cab. Gauntlets +2", left_ear="Knightly Earring", left_ring="Guardian's Ring",right_ring="Fenian Ring"})
sets.precast.JA['Intervene'] = sets.precast.JA['Shield Bash']
sets.precast.JA['Sentinel'] = set_combine(sets.precast.JA['Provoke'],
{
ammo="Iron Gobbet",
head="Loess Barbuta +1",
body="Chev. Cuirass +3",
hands="Souv. Handsch. +1",
legs="Souv. Diechlings +1",
feet="Caballarius Leggings +3",
neck="Moonlight Necklace",
waist="Creed Baudrier",
left_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
right_ear="Cryptic Earring",
left_ring="Apeile Ring +1",
right_ring="Stikini Ring +1",
back="Rudianos's Mantle",})
--The amount of damage absorbed is variable, determined by VIT*2
sets.precast.JA['Rampart'] =
{
ammo="Iron Gobbet",
head="Cab. Coronet +1",
body="Chev. Cuirass +3",
hands="Souv. Handsch. +1",
legs="Souv. Diechlings +1",
feet="Souveran Schuhs +1",
neck="Moonlight Necklace",
waist="Creed Baudrier",
left_ear="Cryptic Earring",
left_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
left_ring="Apeile Ring +1",
right_ring="Moonbeam Ring",
back="Rudianos's Mantle",}
sets.buff['Rampart'] = sets.precast.JA['Rampart'], {head="Rev. Coronet +1"}
sets.precast.JA['Fealty'] = set_combine(sets.precast.JA['Provoke'], {body="Cab. Surcoat +3",})
sets.precast.JA['Divine Emblem'] = set_combine(sets.precast.JA['Provoke'], {feet="Chev. Sabatons +3"})
--15 + min(max(floor((user VIT + user MND - target VIT*2)/4),0),15)
sets.precast.JA['Cover'] = set_combine(sets.precast.JA['Rampart'], {head="Cab. Coronet +1", body="Cab. Surcoat +3"})
sets.buff['Cover'] = sets.precast.JA['Cover']
-- add MND for Chivalry
sets.precast.JA['Chivalry'] =
{
ammo="Strobilus",
head="Jumalik Helm",
body="Rev. Surcoat +3",
hands={ name="Cab. Gauntlets +3", augments={'Enhances "Chivalry" effect',}},
legs={ name="Cab. Breeches +3", augments={'Enhances "Invincible" effect',}},
feet="Odyssean Greaves",
neck="Dualism Collar +1",
waist="Creed Baudrier",
left_ear="Cryptic Earring",
right_ear="Nourish. Earring +1",
left_ring="Levia. Ring +1",
right_ring={name="Stikini Ring +1",bag="wardrobe3"},
back={ name="Weard Mantle", augments={'VIT+5','DEX+3','Phalanx +5',}},
}
------------------------ Sub WAR ------------------------
sets.precast.JA['Provoke'] = --enmity +152
{
ammo="Iron Gobbet",
head="Loess Barbuta +1",
body="Chev. Cuirass +3",
hands="Souv. Handsch. +1",
legs="Souv. Diechlings +1",
feet="Souveran Schuhs +1",
neck="Moonlight Necklace",
waist="Creed Baudrier",
left_ear="Cryptic Earring",
left_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
left_ring="Apeile Ring +1",
right_ring="Moonbeam Ring",
back="Rudianos's Mantle",
}
sets.precast.JA['Warcry'] = sets.precast.JA['Provoke']
sets.precast.JA['Defender'] = sets.precast.JA['Provoke']
------------------------ Sub DNC ------------------------
-- Waltz set (chr and vit)
sets.precast.Waltz =
{
ammo="Iron Gobbet",
head={ name="Jumalik Helm", augments={'MND+10','"Mag.Atk.Bns."+15','Magic burst dmg.+10%','"Refresh"+1',}},
body={ name="Found. Breastplate", augments={'Accuracy+11','Mag. Acc.+10','Attack+10','"Mag.Atk.Bns."+9',}},
hands={ name="Founder's Gauntlets", augments={'STR+10','Attack+15','"Mag.Atk.Bns."+15','Phys. dmg. taken -5%',}},
legs="Dashing Subligar",
feet={ name="Odyssean Greaves", augments={'Accuracy+5 Attack+5','"Dbl.Atk."+4','VIT+15',}},
neck="Kgt. Beads +1",
waist="Latria Sash",
left_ear="Terra's Pearl",
right_ear="Terra's Pearl",
left_ring="Valseur's Ring",
right_ring="Asklepian Ring",
back={ name="Rudianos's Mantle", augments={'VIT+20','Accuracy+20 Attack+20','VIT+10','Enmity+10',}},
}
-- Special gear for Healing Waltz.
sets.precast.Waltz['Healing Waltz'] = sets.precast.Waltz
sets.precast.Step = sets.precast.JA['Provoke']
sets.precast.Flourish1 = sets.precast.Step
------------------------ Sub RUN ------------------------
sets.precast.JA['Ignis'] = sets.precast.JA['Provoke']
sets.precast.JA['Gelus'] = sets.precast.JA['Provoke']
sets.precast.JA['Flabra'] = sets.precast.JA['Provoke']
sets.precast.JA['Tellus'] = sets.precast.JA['Provoke']
sets.precast.JA['Sulpor'] = sets.precast.JA['Provoke']
sets.precast.JA['Unda'] = sets.precast.JA['Provoke']
sets.precast.JA['Lux'] = sets.precast.JA['Provoke']
sets.precast.JA['Tenebrae'] = sets.precast.JA['Provoke']
sets.precast.JA['Vallation'] = sets.precast.JA['Provoke']
sets.precast.JA['Pflug'] = sets.precast.JA['Provoke']
-- Fast cast sets for spells 2844HP FC+60/80
sets.precast.FC =
{
ammo="Sapience Orb",
head={ name="Carmine Mask +1", priority=12},
body="Rev. Surcoat +3",
hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
legs="Enif Cosciales",
feet={ name="Chev. Sabatons +3", priority=13},
neck="Voltsurge Torque",
waist={ name="Creed Baudrier", priority=11},
left_ear="Etiolation Earring",
right_ear="Loquac. Earring",
left_ring="Kishar Ring",
right_ring="Naji's Loop",
back={ name="Rudianos's Mantle", priority=10},
}
sets.precast.FC.DT =
{
ammo="Sapience Orb",
head="Carmine Mask +1",
body="Rev. Surcoat +3",
hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
legs="Enif Cosciales",
feet="Chev. Sabatons +3",
neck="Voltsurge Torque",
waist="Flume Belt +1",
left_ear="Etiolation Earring",
right_ear="Loquac. Earring",
left_ring="Kishar Ring",
right_ring="Naji's Loop",
back="Rudianos's Mantle",
}
sets.precast.FC.Phalanx = set_combine(sets.precast.FC , {waist="Siegel Sash",})
sets.precast.FC.Enlight = sets.precast.FC.Phalanx
sets.precast.FC['Enlight II'] = sets.precast.FC.Phalanx
sets.precast.FC.Protect = sets.precast.FC.Phalanx
sets.precast.FC.Shell = sets.precast.FC.Phalanx
sets.precast.FC.Crusade = sets.precast.FC.Phalanx
sets.precast.FC.Cure =
{
ammo="Sapience Orb",
head="Carmine Mask +1",
body="Rev. Surcoat +3",
hands="Leyline Gloves",
legs="Enif Cosciales",
feet="Chev. Sabatons +3",
neck="Voltsurge Torque",
waist="Creed Baudrier",
left_ear="Etiolation Earring",
right_ear="Loquac. Earring",
left_ring="Kishar Ring",
right_ring="Naji's Loop",
back="Rudianos's Mantle",
}
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS =
{
ammo="Oshasha's Treatise",
head={ name="Nyame Helm", augments={'Path: B',}},
body={ name="Nyame Mail", augments={'Path: B',}},
hands={ name="Nyame Gauntlets", augments={'Path: B',}},
legs={ name="Nyame Flanchard", augments={'Path: B',}},
feet={ name="Nyame Sollerets", augments={'Path: B',}},
neck="Fotia Gorget",
waist={ name="Sailfi Belt +1", augments={'Path: A',}},
left_ear="Thrud Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
left_ring="Cornelia's Ring",
right_ring="Epaminondas's Ring",
back={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+9','Weapon skill damage +10%',}},
}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
--Stat Modifier: 73~85% MND fTP: 1.0
sets.precast.WS['Sanguine Blade'] =
{
ammo="Oshasha's Treatise",
head={ name="Nyame Helm", augments={'Path: B',}},
body={ name="Nyame Mail", augments={'Path: B',}},
hands={ name="Nyame Gauntlets", augments={'Path: B',}},
legs={ name="Nyame Flanchard", augments={'Path: B',}},
feet={ name="Nyame Sollerets", augments={'Path: B',}},
neck="Fotia Gorget",
waist={ name="Sailfi Belt +1", augments={'Path: A',}},
left_ear="Thrud Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
left_ring="Cornelia's Ring",
right_ring="Epaminondas's Ring",
back={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+9','Weapon skill damage +10%',}},
}
sets.precast.WS['Aeolian Edge'] =
{
ammo="Oshasha's Treatise",
head={ name="Nyame Helm", augments={'Path: B',}},
body={ name="Nyame Mail", augments={'Path: B',}},
hands={ name="Nyame Gauntlets", augments={'Path: B',}},
legs={ name="Nyame Flanchard", augments={'Path: B',}},
feet={ name="Nyame Sollerets", augments={'Path: B',}},
neck="Fotia Gorget",
waist={ name="Sailfi Belt +1", augments={'Path: A',}},
left_ear="Thrud Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
left_ring="Cornelia's Ring",
right_ring="Epaminondas's Ring",
back={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+9','Weapon skill damage +10%',}},
}
--Stat Modifier: 50%MND / 50%STR fTP: 1000:4.0 2000:10.25 3000:13.75
sets.precast.WS['Savage Blade'] =
{
ammo="Oshasha's Treatise",
head={ name="Nyame Helm", augments={'Path: B',}},
body={ name="Nyame Mail", augments={'Path: B',}},
hands={ name="Nyame Gauntlets", augments={'Path: B',}},
legs={ name="Nyame Flanchard", augments={'Path: B',}},
feet={ name="Nyame Sollerets", augments={'Path: B',}},
neck="Fotia Gorget",
waist={ name="Sailfi Belt +1", augments={'Path: A',}},
left_ear="Thrud Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
left_ring="Cornelia's Ring",
right_ring="Epaminondas's Ring",
back={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+9','Weapon skill damage +10%',}},
}
sets.precast.WS['Hexa Strike'] =
{
ammo="Crepuscular Pebble",
head={ name="Odyssean Helm", augments={'Accuracy+23','Weapon skill damage +3%','STR+2',}},
body="Sakpata's Plate",
hands="Sakpata's Gauntlets",
legs="Sakpata's Cuisses",
feet="Sulev. Leggings +2",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Thrud Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
left_ring="Begrudging Ring",
right_ring="Regal Ring",
back={ name="Rudianos's Mantle", augments={'VIT+20','Accuracy+20 Attack+20','VIT+10','Enmity+10','Damage taken-5%',}},
}
--Stat Modifier: 80%DEX fTP:2.25
sets.precast.WS['Chant du Cygne'] =
{
ammo="Oshasha's Treatise",
head={ name="Nyame Helm", augments={'Path: B',}},
body={ name="Nyame Mail", augments={'Path: B',}},
hands={ name="Nyame Gauntlets", augments={'Path: B',}},
legs={ name="Nyame Flanchard", augments={'Path: B',}},
feet={ name="Nyame Sollerets", augments={'Path: B',}},
neck="Fotia Gorget",
waist={ name="Sailfi Belt +1", augments={'Path: A',}},
left_ear="Thrud Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
left_ring="Cornelia's Ring",
right_ring="Epaminondas's Ring",
back={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+9','Weapon skill damage +10%',}},
}
--Stat Modifier: WS damage + 62/81 2350DMG maxaggro
sets.precast.WS['Atonement'] =
{
ammo="Iron Gobbet",
head="Loess Barbuta +1",
body="Chev. Cuirass +3",
hands="Souv. Handsch. +1",
legs="Souv. Diechlings +1",
feet="Souveran Schuhs +1",
neck="Moonlight Necklace",
waist="Fotia Belt",
left_ear="Cryptic Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
left_ring="Vexer Ring +1",
right_ring="Epaminondas's Ring",
back={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+9','Weapon skill damage +10%',}},
}
------------------------------------------------------------------------------------------------
-----------------------------------------Midcast sets-------------------------------------------
------------------------------------------------------------------------------------------------
sets.midcast.FastRecast =
{
ammo="Staunch Tathlum +1",
head="Loess Barbuta +1",
body="Chev. Cuirass +3",
hands="Regal Gauntlets",
legs="Founder's Hose",
feet="Odyssean Greaves",
neck="Moonlight Necklace",
waist="Audumbla Sash",
left_ear="Knightly Earring",
right_ear="Nourish. Earring +1",
left_ring="Evanescence Ring",
right_ring="Defending Ring",
back="Rudianos's Mantle",
}
-- Divine Skill 599/560 140 Acc
sets.midcast.Divine =
{
ammo="Staunch Tathlum +1",
head="Loess Barbuta +1",
body="Rev. Surcoat +3",
hands="Souv. Handsch. +1",
legs="Souv. Diechlings +1",
feet="Souveran Schuhs +1",
neck="Incanter's Torque",
waist="Creed Baudrier",
left_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
right_ear="Cryptic Earring",
left_ring="Apeile Ring +1",
right_ring={name="Stikini Ring +1",bag="wardrobe3"},
back="Rudianos's Mantle",
}
sets.midcast.Divine.DT =
{
ammo="Staunch Tathlum +1",
head={ name="Jumalik Helm", augments={'MND+10','"Mag.Atk.Bns."+15','Magic burst dmg.+10%','"Refresh"+1',}},
body="Rev. Surcoat +3",
hands={ name="Eschite Gauntlets", augments={'Mag. Evasion+15','Spell interruption rate down +15%','Enmity+7',}},
legs={ name="Kaiser Diechlings", augments={'Magic dmg. taken -3%','Divine magic skill +5',}},
feet="Souveran Schuhs +1",
neck="Incanter's Torque",
waist="Asklepian Belt",
left_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
right_ear={ name="Chev. Earring +2", augments={'System: 1 ID: 1676 Val: 0','Accuracy+17','Mag. Acc.+17','Damage taken-6%','STR+9 VIT+9',}},
left_ring={name="Stikini Ring +1",bag="wardrobe2"},
right_ring={name="Stikini Ring +1",bag="wardrobe3"},
back="Moonlight Cape",
}
--skill 430
sets.midcast['Enhancing Magic'] =
{
ammo="Staunch Tathlum +1",
head="Chev. Armet +2",
body="Shab. Cuirass +1",
hands="Regal Gauntlets",
legs={ name="Carmine Cuisses +1", augments={'HP+80','STR+12','INT+12',}},
neck="Incanter's Torque",
waist="Rumination sash",
feet="Cab. Leggings +3",
left_ear="Andoaa Earring",
right_ear="Mimir Earring",
left_ring={name="Stikini Ring +1",bag="wardrobe2"},
right_ring={name="Stikini Ring +1",bag="wardrobe3"},
back="Merciful Cape",
}
sets.midcast.MAB =
{
ammo="Pemphredo Tathlum",
head="Jumalik Helm",
neck="Warder's Charm +1",
ear1="Static Earring",
ear2="Friomisi Earring",
body="Sacro Breastplate",
ring1="Locus Ring",
ring2="Mujin Band",
back="Rudianos's Mantle",
waist="Skrymir Cord",
legs="Augury Cuisses +1",
}
sets.midcast.Flash = -- 113 to 126
{
ammo="Iron Gobbet",
head="Loess Barbuta +1",
body="Chev. Cuirass +3",
hands="Souv. Handsch. +1",
legs="Souv. Diechlings +1",
feet="Chev. Sabatons +3",
neck="Moonlight Necklace",
waist="Creed Baudrier",
left_ear="Friomisi Earring",
right_ear="Cryptic Earring",
left_ring="Apeile Ring +1",
right_ring="Stikini Ring +1",
back="Rudianos's Mantle",
}
sets.midcast.Enlight = sets.midcast.Divine --+95 accu
sets.midcast['Enlight II'] = sets.midcast.Enlight--+142 accu (+2 acc each 20 divine skill)
--Max HP+ set for reprisal 3880HP / war so 7760 damage reflect before it off (8k+ with food)
sets.midcast.Reprisal =
{
ammo="Egoist's Tathlum",
head="Souv. Schaller +1",
body="Shab. Cuirass +1",
hands="Regal Gauntlets",
legs="Souv. Diechlings +1",
feet="Souveran Schuhs +1",
neck="Moonlight Necklace",
waist="Silver Mog. Belt",
left_ear="Cryptic Earring",
left_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
left_ring="Moonlight Ring",
right_ring="Evanescence ring",
back="Moonlight Cape",
}
--Phalanx skill 391/386 = Damage-31/31 + (phalanx +equipment) 31/31 total 62/62; after test = 61
sets.midcast.Phalanx =
{
ammo="Staunch Tathlum +1",
head={ name="Yorium Barbuta", priority=12},
body={ name="Yorium Cuirass", priority=11},
hands={ name="Souv. Handsch. +1", priority=13},
legs={ name="Founder's hose", priority=9},
feet={ name="Souveran Schuhs +1", priority=10},
neck="Moonlight Necklace",
waist="Audumbla Sash",
left_ear="Knightly Earring",
right_ear="Chev. Earring +1",
left_ring={name="Stikini Ring +1",bag="wardrobe2"},
right_ring={name="Stikini Ring +1",bag="wardrobe3"},
back={ name="Weard Mantle", priority=8},
}
sets.midcast.Banish =
{
ammo="Pemphredo Tathlum",
head="Wh. Rarab Cap +1",
body={ name="Odyss. Chestplate", augments={'Pet: "Subtle Blow"+9','Pet: Mag. Acc.+13 Pet: "Mag.Atk.Bns."+13','"Treasure Hunter"+1',}},
hands={ name="Founder's Gauntlets", augments={'STR+10','Attack+15','"Mag.Atk.Bns."+15','Phys. dmg. taken -5%',}},
legs={ name="Odyssean Cuisses", augments={'Pet: "Dbl.Atk."+1 Pet: Crit.hit rate +1','AGI+14','"Treasure Hunter"+2',}},
feet={ name="Founder's Greaves", augments={'VIT+10','Accuracy+15','"Mag.Atk.Bns."+15','Mag. Evasion+15',}},
neck="Eddy Necklace",
waist="Orpheus's Sash",
left_ear="Cryptic Earring",
right_ear="Friomisi Earring",
left_ring="Metamor. Ring +1",
right_ring="Fenian Ring",
back={ name="Rudianos's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%','Mag. Evasion+15',}},
}
sets.midcast['Banish II'] = set_combine(sets.midcast.MAB, {right_ring="Fenian Ring"})
sets.midcast.Holy = sets.midcast.MAB
sets.midcast['Holy II'] = sets.midcast.Holy
sets.midcast.Crusade =
{
ammo="Staunch Tathlum +1",
head="Loess Barbuta +1",
body={ name="Souv. Cuirass +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}},
hands="Regal Gauntlets",
legs={ name="Founder's Hose", augments={'MND+8','Mag. Acc.+14','Attack+13','Breath dmg. taken -3%',}},
feet="Souveran Schuhs +1",
neck="Kgt. Beads +1",
waist="Rumination Sash",
left_ear="Cryptic Earring",
right_ear="Chev. Earring +1",
left_ring="Evanescence Ring",
right_ring="Apeile Ring +1",
back={ name="Rudianos's Mantle", augments={'VIT+20','Eva.+20 /Mag. Eva.+20','VIT+10','Enmity+10',}},
}
-- Cure1=120; Cure2=266; Cure3=600; Cure4=1123; cure potency caps at 50/50% received caps at 32/30%. sans signet
sets.midcast.Cure =
{
ammo="Staunch Tathlum +1",
head={ name="Souv. Schaller +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%', priority=11}},
body={ name="Souv. Cuirass +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%', priority=12}},
hands={ name="Souv. Handsch. +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%', priority=13}},
legs="Founder's Hose",
feet="Odyssean Greaves",
neck="Moonlight Necklace",
waist="Audumbla Sash",
left_ear="Tuisto Earring",
right_ear="Nourish. Earring",
left_ring="Gelatinous Ring +1",
right_ring="Stikini Ring +1",
back="Rudianos's Mantle",
}
sets.midcast.Cure.DT =
{
ammo="Staunch Tathlum +1",
head="Loess Barbuta +1",
body="Chev. Cuirass +3",
hands="Souv. Handsch. +1",
legs="Founder's Hose",
feet="Odyssean Greaves",
neck="Moonlight Necklace",
waist="Audumbla Sash",
left_ear="Knightly Earring",
right_ear="Chev. Earring +1",
left_ring="Apeile Ring +1",
right_ring="Apeile Ring",
back={ name="Rudianos's Mantle", augments={'HP+45','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10','Spell interruption rate down-10%',}},
}
-- 630 HP (curecheat)
sets.self_healing =
{
ammo="Staunch Tathlum +1",
head={ name="Souv. Schaller +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%', priority=11}},
body={ name="Souv. Cuirass +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%', priority=12}},
hands={ name="Souv. Handsch. +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%', priority=13}},
legs="Founder's Hose",
feet="Odyssean Greaves",
neck="Moonlight Necklace",
waist="Audumbla Sash",
left_ear="Tuisto Earring",
right_ear="Nourish. Earring",
left_ring="Gelatinous Ring +1",
right_ring="Stikini Ring +1",
back="Rudianos's Mantle",
}
sets.self_healing.DT =
{
ammo="Staunch Tathlum +1",
head={ name="Souv. Schaller +1", augments={'Accuracy+13','Attack+12','Enmity+5',}},
body="Sakpata's Plate",
hands="Chev. Gauntlets +2",
legs={ name="Souv. Diechlings +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}},
feet={ name="Odyssean Greaves", augments={'Attack+23','"Fast Cast"+3','DEX+3','Accuracy+15',}},
neck="Diemer Gorget",
waist="Flume Belt +1",
left_ear="Nourish. Earring +1",
right_ear={ name="Chev. Earring +2", augments={'System: 1 ID: 1676 Val: 0','Accuracy+17','Mag. Acc.+17','Damage taken-6%','STR+9 VIT+9',}},
left_ring="Kishar Ring",
right_ring="Defending Ring",
back={ name="Rudianos's Mantle", augments={'HP+45','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10','Spell interruption rate down-10%',}},
}
sets.midcast.Protect =
{
ammo="Staunch Tathlum +1",
head="Souv. Schaller +1",
body="Shab. Cuirass +1",
hands="Regal Gauntlets",
legs="Founder's Hose",
feet="Odyssean Greaves",
neck="Incanter's Torque",
waist="Rumination Sash",
left_ear="Halasz Earring",
right_ear="Chev. Earring +1",
left_ring="Evanescence Ring",
right_ring="Sheltered Ring",
back="Solemnity Cape",
}
sets.midcast.Shell =
{
ammo="Staunch Tathlum +1",
head="Souv. Schaller +1",
body="Shab. Cuirass +1",
hands="Regal Gauntlets",
legs="Founder's Hose",
feet="Odyssean Greaves",
neck="Incanter's Torque",
waist="Rumination Sash",
left_ear="Halasz Earring",
right_ear="Chev. Earring +1",
left_ring="Evanescence Ring",
right_ring="Sheltered Ring",
back="Solemnity Cape",
}
sets.midcast.Raise =
{
ammo="Staunch Tathlum +1",
head="Souv. Schaller +1",
body={ name="Souv. Cuirass +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}},
hands="Regal Gauntlets",
legs={ name="Founder's Hose", augments={'MND+8','Mag. Acc.+14','Attack+13','Breath dmg. taken -3%',}},
feet={ name="Odyssean Greaves", augments={'"Mag.Atk.Bns."+10','"Fast Cast"+6',}},
neck="Moonlight Necklace",
waist="Rumination Sash",
left_ear="Halasz Earring",
right_ear={ name="Chev. Earring +2", augments={'System: 1 ID: 1676 Val: 0','Accuracy+17','Mag. Acc.+17','Damage taken-6%','STR+9 VIT+9',}},
left_ring="Moonlight Ring",
right_ring="Defending Ring",
back="Moonlight Cape",
}
sets.midcast.Stun = sets.midcast.Flash
--Spell interupt down (pro shell raise)104/102
sets.SID =
{
ammo="Staunch Tathlum +1",
head="Loess Barbuta +1",
body="Chev. Cuirass +3",
hands="Souv. Handsch. +1",
legs="Souv. Diechlings +1",
feet="Eschite Greaves",
neck="Incanter's Torque",
waist="Creed Baudrier",
left_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
right_ear="Chev. Earring +1",
left_ring="Apeile Ring +1",
right_ring="Stikini Ring +1",
back="Rudianos's Mantle",
}
sets.RefreshPotencyRecieved =
{
hands="Regal Gauntlets",
feet="Shabti Sabatons +1",
waist="Gishdubar Sash",
}
---------- NIN Spell --------------
sets.midcast.Utsusemi =
{
ammo="Staunch Tathlum +1",
head="Souv. Schaller +1",
body={ name="Souv. Cuirass +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}},
hands="Regal Gauntlets",
legs={ name="Founder's Hose", augments={'MND+8','Mag. Acc.+14','Attack+13','Breath dmg. taken -3%',}},
feet={ name="Odyssean Greaves", augments={'"Mag.Atk.Bns."+10','"Fast Cast"+6',}},
neck="Incanter's Torque",
waist="Rumination Sash",
left_ear="Halasz Earring",
right_ear={ name="Chev. Earring +2", augments={'System: 1 ID: 1676 Val: 0','Accuracy+17','Mag. Acc.+17','Damage taken-6%','STR+9 VIT+9',}},
left_ring="Evanescence Ring",
right_ring="Defending Ring",
back="Solemnity Cape",
}
---------- BLU Spell --------------
sets.midcast['Geist Wall'] =
{
ammo="Staunch Tathlum +1",
head="Loess Barbuta +1",
body="Chev. Cuirass +3",
hands="Souv. Handsch. +1",
legs="Founder's Hose",
feet="Odyssean Greaves",
neck="Moonbeam Necklace",
waist="Audumbla Sash",
left_ear="Knightly Earring",
right_ear="Cryptic Earring",
left_ring="Apeile Ring +1",
right_ring="Apeile Ring",
back={ name="Rudianos's Mantle", augments={'HP+45','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10','Spell interruption rate down-10%',}},
}
sets.midcast['Sheep Song'] =
{
ammo="Staunch Tathlum +1",
head="Loess Barbuta +1",
body="Chev. Cuirass +3",
hands="Souv. Handsch. +1",
legs="Founder's Hose",
feet="Odyssean Greaves",
neck="Moonbeam Necklace",
waist="Audumbla Sash",
left_ear="Knightly Earring",
right_ear="Cryptic Earring",
left_ring="Apeile Ring +1",
right_ring="Apeile Ring",
back={ name="Rudianos's Mantle", augments={'HP+45','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10','Spell interruption rate down-10%',}},
}
sets.midcast.Cocoon =
{
ammo="Staunch Tathlum +1",
head="Loess Barbuta +1",
body="Chev. Cuirass +3",
hands="Souv. Handsch. +1",
legs="Founder's Hose",
feet="Odyssean Greaves",
neck="Moonbeam Necklace",
waist="Audumbla Sash",
left_ear="Knightly Earring",
right_ear="Cryptic Earring",
left_ring="Apeile Ring +1",
right_ring="Apeile Ring",
back={ name="Rudianos's Mantle", augments={'HP+45','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10','Spell interruption rate down-10%',}},
}
sets.midcast['Blank Gaze'] =
{
ammo="Staunch Tathlum +1",
head="Loess Barbuta +1",
body="Chev. Cuirass +3",
hands="Souv. Handsch. +1",
legs="Founder's Hose",
feet="Odyssean Greaves",
neck="Moonbeam Necklace",
waist="Audumbla Sash",
left_ear="Knightly Earring",
right_ear="Cryptic Earring",
left_ring="Apeile Ring +1",
right_ring="Apeile Ring",
back={ name="Rudianos's Mantle", augments={'HP+45','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10','Spell interruption rate down-10%',}},
}
sets.midcast['Bomb Toss'] =
{
ammo="Staunch Tathlum +1",
head="Loess Barbuta +1",
body="Chev. Cuirass +3",
hands="Souv. Handsch. +1",
legs="Founder's Hose",
feet="Odyssean Greaves",
neck="Moonbeam Necklace",
waist="Audumbla Sash",
left_ear="Knightly Earring",
right_ear="Cryptic Earring",
left_ring="Apeile Ring +1",
right_ring="Apeile Ring",
back={ name="Rudianos's Mantle", augments={'HP+45','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10','Spell interruption rate down-10%',}},
}
sets.midcast['Jettatura'] =
{
ammo="Staunch Tathlum +1",
head="Loess Barbuta +1",
body="Chev. Cuirass +3",
hands="Souv. Handsch. +1",
legs="Founder's Hose",
feet="Odyssean Greaves",
neck="Moonbeam Necklace",
waist="Audumbla Sash",
left_ear="Knightly Earring",
right_ear="Cryptic Earring",
left_ring="Apeile Ring +1",
right_ring="Apeile Ring",
back={ name="Rudianos's Mantle", augments={'HP+45','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10','Spell interruption rate down-10%',}},
}
--------------------------------------
-- Idle/resting/defense/etc sets
--------------------------------------
sets.Cover = set_combine(sets.precast.JA['Rampart'], {main="Kheshig Blade", head="Cab. Coronet +1", body="Cab. Surcoat +3"})
sets.Doom = {neck="Nicander's Necklace", legs="Shabti Cuisses",left_ring="Saida Ring",right_ring="Eschmun's Ring", waist="Gishdubar Sash"} -- +85%
sets.Reraise = {head="Twilight Helm", body="Twilight Mail"}
sets.Breath =
{
ammo="Staunch Tathlum +1",
head="Chev. Armet +3",
body="Sakpata's Plate",
hands="Sakpata's Gauntlets",
legs="Chev. Cuisses +3",
feet="Sakpata's Leggings",
neck="Unmoving Collar +1",
waist="Carrier's Sash",
left_ear="Odnowa Earring +1",
right_ear="Chev. Earring +1",
left_ring="Gelatinous Ring +1",
right_ring="Fortified Ring",
back="Rudianos's Mantle",
}
sets.resting =
{
ammo="Staunch Tathlum +1",
head="Chev. Armet +3",
body="Sakpata's Plate",
hands="Sakpata's Gauntlets",
legs="Chev. Cuisses +3",
feet="Sakpata's Leggings",
neck="Unmoving Collar +1",
waist="Carrier's Sash",
left_ear="Odnowa Earring +1",
right_ear="Chev. Earring +1",
left_ring="Gelatinous Ring +1",
right_ring="Fortified Ring",
back="Rudianos's Mantle",
}
-- Idle sets
sets.idle =
{
ammo="Staunch Tathlum +1",
head={ name="Chev. Armet +3", priority=12},
body={ name="Adamantite Armor", priority=13},
hands={ name="Sakpata's Gauntlets", priority=7},
legs={ name="Chev. Cuisses +3", priority=11},
feet={ name="Sakpata's Leggings", priority=10},
neck={ name="Unmoving Collar +1", priority=8},
waist={ name="Platinum Moogle Belt", priority=9},
left_ear="Odnowa Earring +1",
right_ear={ name="Chev. Earring +1", priority=7},
left_ring={ name="Gelatinous Ring +1", priority=10},
right_ring="Fortified Ring",
back="Rudianos's Mantle",
}
sets.idle.Town =
{
ammo="Staunch Tathlum +1",
head={ name="Chev. Armet +3", priority=12},
body={ name="Adamantite Armor", priority=13},
hands={ name="Sakpata's Gauntlets", priority=7},
legs={ name="Chev. Cuisses +3", priority=11},
feet={ name="Sakpata's Leggings", priority=10},
neck={ name="Unmoving Collar +1", priority=8},
waist={ name="Platinum Moogle Belt", priority=9},
left_ear="Odnowa Earring +1",
right_ear={ name="Chev. Earring +1", priority=7},
left_ring={ name="Gelatinous Ring +1", priority=10},
right_ring="Fortified Ring",
back="Rudianos's Mantle",
}
sets.idle.Weak =
{
ammo="Staunch Tathlum +1",
head="Chev. Armet +3",
body="Sakpata's Plate",
hands="Sakpata's Gauntlets",
legs="Chev. Cuisses +3",
feet="Sakpata's Leggings",
neck="Unmoving Collar +1",
waist="Carrier's Sash",
left_ear="Odnowa Earring +1",
right_ear="Chev. Earring +1",
left_ring="Gelatinous Ring +1",
right_ring="Fortified Ring",
back="Rudianos's Mantle",
}
sets.idle.Weak.Reraise = set_combine(sets.idle.Weak, sets.Reraise)
sets.HQ =
{
ammo="Staunch Tathlum +1",
head="Sakpata's Helm",
body="Sakpata's Plate",
hands="Sakpata's Gauntlets",
legs="Chev. Cuisses +3",
feet="Sakpata's Leggings",
neck="Warder's Charm +1",
waist="Asklepian Belt",
left_ear="Spellbreaker Earring",
right_ear={ name="Chev. Earring +2", augments={'System: 1 ID: 1676 Val: 0','Accuracy+17','Mag. Acc.+17','Damage taken-6%','STR+9 VIT+9',}},
left_ring="Vexer Ring +1",
right_ring="Warden's Ring",
back={ name="Rudianos's Mantle", augments={'VIT+20','Accuracy+20 Attack+20','Accuracy+2','Enmity+10','Damage taken-5%',}},
}
-- Physical
-- PDT
-- Aegis
-- Defense sets
-- Magical
-- MDT
-- Hybrid (on top of either physical or magical)
-- Repulse
-- Reraise
-- RepulseReraise
-- Custom
-- sets.Repulse = {back="Repulse Mantle"}
--3367 HP
sets.defense.PDT =
{
ammo="Staunch Tathlum +1",
head="Sakpata's Helm",
body="Sakpata's Plate",
hands="Sakpata's Gauntlets",
legs="Chev. Cuisses +3",
feet="Sakpata's Leggings",
neck="Unmoving Collar +1",
waist="Carrier's Sash",
left_ear="Odnowa Earring +1",
right_ear="Chev. Earring +1",
left_ring="Apeile Ring +1",
right_ring="Gelatinous Ring +1",
back="Rudianos's Mantle",
}
-- To cap MDT with Shell IV (52/256), need 76/256 in gear. Current gear set is 248/256.
-- Shellra V can provide 75/256.
sets.defense.MDT =
{
ammo="Staunch Tathlum +1",
head={ name="Souv. Schaller +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}},
body={ name="Souv. Cuirass +1", augments={'VIT+12','Attack+25','"Refresh"+3',}},
hands="Sulev. Gauntlets +2",
legs="Sulev. Cuisses +2",
feet="Rev. Leggings +3",
neck="Moonlight Necklace",
waist="Plat. Mog. Belt",
left_ear="Impreg. Earring",
right_ear={ name="Chev. Earring +2", augments={'System: 1 ID: 1676 Val: 0','Accuracy+17','Mag. Acc.+17','Damage taken-6%','STR+9 VIT+9',}},
left_ring="Moonlight Ring",
right_ring="Defending Ring",
back={ name="Rudianos's Mantle", augments={'VIT+20','Accuracy+20 Attack+20','Accuracy+2','Enmity+10','Damage taken-5%',}},
}
sets.defense.BDT =
{
ammo="Staunch Tathlum +1",
head="Souv. Schaller +1",
body={ name="Souv. Cuirass +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}},
hands="Chev. Gauntlets +2",
legs="Souv. Diechlings +1",
feet="Souveran Schuhs +1",
neck="Kgt. Beads +1",
waist="Creed Baudrier",
left_ear="Tuisto Earring",
left_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
left_ring="Moonlight Ring",
right_ring="Defending Ring",
back={ name="Rudianos's Mantle", augments={'VIT+20','Eva.+20 /Mag. Eva.+20','VIT+10','Enmity+10',}},
}
sets.defense.ResistCharm =
{
ammo="Staunch Tathlum +1",
head="Souv. Schaller +1",
body={ name="Souv. Cuirass +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}},
hands="Chev. Gauntlets +2",
legs="Souv. Diechlings +1",
feet="Souveran Schuhs +1",
neck="Kgt. Beads +1",
waist="Asklepian Belt",
left_ear="Eabani Earring",
right_ear="Volunt. Earring",
left_ring="Unyielding Ring",
right_ring="Wuji Ring",
back="Solemnity Cape",
}
sets.defense.Ochain =
{
ammo="Staunch Tathlum +1",
head="Sakpata's Helm",
body="Sakpata's Plate",
hands="Sakpata's Gauntlets",
legs="Chev. Cuisses +3",
feet="Sakpata's Leggings",
neck="Unmoving Collar +1",
waist="Carrier Sash",
left_ear="Odnowa Earring +1",
right_ear="Chev. Earring +1",
left_ring="Apeile Ring +1",
right_ring="Gelatinous Ring +1",
back="Rudianos's Mantle",
}
sets.defense.Aegis =
{
--main="burtgang",
sub="Aegis",
ammo="Staunch Tathlum +1",
head="Sakpata's Helm",
body="Sakpata's Plate",
hands="Sakpata's Gauntlets",
legs="Sakpata's Cuisses",
feet="Sakpata's Leggings",
neck={ name="Unmoving Collar +1", augments={'Path: A',}},
waist="Carrier's Sash",
left_ear="Thureous Earring",
right_ear={ name="Chev. Earring +2", augments={'System: 1 ID: 1676 Val: 0','Accuracy+17','Mag. Acc.+17','Damage taken-6%','STR+9 VIT+9',}},
left_ring="Moonlight Ring",
right_ring="Gelatinous Ring +1",
back="Moonbeam Cape",
}
sets.defense.Srivatsa =
{
--main="burtgang",
ammo="Staunch Tathlum +1",
head="Sakpata's Helm",
body="Sakpata's Plate",
hands="Sakpata's Gauntlets",
legs="Chev. Cuisses +3",
feet="Sakpata's Leggings",
neck="Unmoving Collar +1",
waist="Carrier Sash",
left_ear="Odnowa Earring +1",
right_ear="Chev. Earring +1",
left_ring="Apeile Ring +1",
right_ring="Gelatinous Ring +1",
back="Rudianos's Mantle",
}
--Doom/RR",
sets.defense.PDT.Reraise = set_combine(sets.defense.PDT, sets.Reraise)
sets.defense.Aegis.Reraise = set_combine(sets.defense.Aegis, sets.Reraise)
sets.defense.MDT.Reraise = set_combine(sets.defense.MDT, sets.Reraise)
sets.defense.Aegis.Reraise = set_combine(sets.defense.Aegis, sets.Reraise)
sets.defense.PDT.Doom = set_combine(sets.defense.PDT, sets.Doom)
sets.defense.Aegis.Doom = set_combine(sets.defense.Aegis, sets.Doom)
sets.defense.MDT.Doom = set_combine(sets.defense.PDT, sets.Doom)
sets.defense.Aegis.Doom = set_combine(sets.defense.Aegis, sets.Doom)
sets.Kiting = {legs="Carmine Cuisses +1", right_ring="Shneddick Ring"}
--------------------------------------
-- Engaged sets
--------------------------------------
sets.engaged = --1124 / 1264 avec enlight up
{
ammo="Coiste Bodhar",
head="Chev. Armet +3",
body="Chev. Cuirass +3",
hands="Chev. Gauntlets +3",
legs="Chev. Cuisses +3",
feet="Chev. Sabatons +3",
neck="Null Loop",
waist={ name="Sailfi Belt +1", augments={'Path: A',}},
left_ear="Odnowa Earring +1",
right_ear="Chev. Earring +1",
left_ring="Gelatinous Ring +1",
right_ring="Chirich Ring +1",
back="Rudianos's Mantle",
--ammo="Staunch Tathlum +1",
--head="Chev. Armet +2",
--body="Sakpata's Plate",
--hands="Chev. Gauntlets +2",
--legs="Chev. Cuisses +2",
--feet={ name="Sakpata's Leggings", augments={'Path: A',}},
--neck={ name="Kgt. Beads +1", augments={'Path: A',}},
--waist="Plat. Mog. Belt",
--left_ear={ name="Odnowa Earring +1", augments={'Path: A',}},
--right_ear={ name="Chev. Earring +2", augments={'System: 1 ID: 1676 Val: 0','Accuracy+17','Mag. Acc.+17','Damage taken-6%','STR+9 VIT+9',}},
--left_ring="Moonlight Ring",
--right_ring="Petrov Ring",
--back={ name="Rudianos's Mantle", augments={'VIT+20','Accuracy+20 Attack+20','VIT+10','Enmity+10','Damage taken-5%',}},
}
sets.engaged.Acc = --1199 / 1341 avec enlight up
{
ammo="Hasty Pinion +1",
head={ name="Valorous Mask", augments={'Accuracy+27','"Dbl.Atk."+3','DEX+10',}},
body={ name="Valorous Mail", augments={'Accuracy+22 Attack+22','Weapon Skill Acc.+10','DEX+3','Accuracy+6',}},
hands={ name="Valorous Mitts", augments={'Accuracy+30','Crit.hit rate+2','Attack+3',}},
legs={ name="Odyssean Cuisses", augments={'"Mag.Atk.Bns."+29','Accuracy+24','Accuracy+17 Attack+17','Mag. Acc.+10 "Mag.Atk.Bns."+10',}},
feet={ name="Valorous Greaves", augments={'Accuracy+24 Attack+24','Accuracy+15','Attack+4',}},
neck="Combatant's Torque",
waist="Olseni Belt",
left_ear="Digni. Earring",
right_ear="Telos Earring",
left_ring="Moonlight Ring",
right_ring="Defending Ring",
back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Mag. Evasion+15',}},
}
end
------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------Job-specific hooks that are called to process player actions at specific points in time-----------
------------------------------------------------------------------------------------------------------------------------------------------
function job_update(cmdParams, eventArgs)
update_defense_mode()
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
if state.Buff.Doom then
idleSet = set_combine(idleSet, sets.buff.Doom)
end
return idleSet
end
function customize_defense_set(defenseSet)
if state.ExtraDefenseMode.value ~= 'None' then
defenseSet = set_combine(defenseSet, sets[state.ExtraDefenseMode.value])
end
if state.EquipShield.value == true then
defenseSet = set_combine(defenseSet, sets[state.DefenseMode.current .. 'Shield'])
end
return defenseSet
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
-- General hooks for change events.
-------------------------------------------------------------------------------------------------------------------
-- Run after the default precast() is done.
-- eventArgs is the same one used in job_precast, in case information needs to be persisted.
function job_post_precast(spell, action, spellMap, eventArgs)
refine_various_spells(spell, action, spellMap, eventArgs)
end
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_midcast(spell, action, spellMap, eventArgs)
end
-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
end
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
end
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
return idleSet
end
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
return meleeSet
end
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
--print( buff )
--print( state.Buff[buff] )
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)
update_defense_mode()
end
-- Called when the player's status changes.
function job_state_change(field, new_value, old_value)
if field == 'HybridDefenseMode' then
classes.CustomDefenseGroups:clear()
classes.CustomDefenseGroups:append(new_value)
end
end
-- Set eventArgs.handled to true if we don't want the automatic display to be run.
function display_current_job_state(eventArgs)
end
function update_defense_mode()
if player.equipment.main == 'burtgang' and not classes.CustomDefenseGroups:contains('burtgang') then
classes.CustomDefenseGroups:append('burtgang')
end
if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
if player.equipment.sub and not player.equipment.sub:endswith('Shield') and
player.equipment.sub ~= 'Aegis' and player.equipment.sub ~= 'Ochain' then
state.CombatForm = 'DW'
else
state.CombatForm = nil
end
end
end
function job_buff_change(buff, gain)
if buff == "Cover" then
if gain then
equip (sets.Cover)
disable('Body','Head')
else
enable('Body','Head')
handle_equipping_gear(player.status)
end
elseif buff == "doom" then
if gain then
equip(sets.Doom)
send_command('@input /item "Holy Water" <me>')
disable('neck','legs','ring1','ring2','waist')
elseif not gain and not player.status == "Dead" and not player.status == "Engaged Dead" then
enable('neck','legs','ring1','ring2','waist')
handle_equipping_gear(player.status)
else
enable('neck', 'legs','ring1','ring2','waist')
end
elseif buff == "petrification" then
if gain then
equip(sets.Petri)
else
end
elseif buff == "Charm" then
if gain then
else
end
elseif buff == "paralysis" then
if gain then
send_command('@input /item "Remedy" <me>')
end
elseif buff == "Silence" then
if gain then
send_command('@input /item "Remedy" <me>')
else
end
end
for index,value in pairs(buffWatcher.watchList) do
if index==buff then
buffWatch()
break
end
end
end
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'DNC' then
set_macro_page(6, 2)
elseif player.sub_job == 'NIN' then
set_macro_page(1, 7)
elseif player.sub_job == 'RDM' then
set_macro_page(6, 2)
elseif player.sub_job == 'RUN' then
set_macro_page(8, 7)
elseif player.sub_job == 'WAR' then
set_macro_page(6, 2)
elseif player.sub_job == 'BLU' then
set_macro_page(6, 2)
else
set_macro_page(8, 8)
end
end
function job_post_midcast(spell, action, spellMap, eventArgs)
if spellMap == 'Cure' and spell.target.type == 'SELF' then
if options.CastingModes.value == 'DT' then
equip(sets.self_healing.DT)
else
equip(sets.self_healing)
end
end
end
function job_self_command(cmdParams, eventArgs)
if cmdParams[1] == 'buffWatcher' then
buffWatch(cmdParams[2],cmdParams[3])
end
if cmdParams[1] == 'stopBuffWatcher' then
stopBuffWatcher()
end
end
-- Spell swap rules
function refine_various_spells(spell,action,spellMap,eventArgs)
cures = S{'Cure','Cure II','Cure III','Cure IV'}
ban = S{'Banish','Banish II'}
blus = S{"Geist Wall","Sheep Song","Stinking Gas"}
if not cures:contains(spell.english)
and not ban:contains(spell.english)
and not blus:contains(spell.english)then
return
end
local newSpell = spell.english
local spell_recasts = windower.ffxi.get_spell_recasts()
local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
if spell_recasts[spell.recast_id] > 0 then
if cures:contains(spell.english) then
if spell.english == 'Cure' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Cure II' then
newSpell = 'Cure'
elseif spell.english == 'Cure III' then
newSpell = 'Cure II'
elseif spell.english == 'Cure IV' then
newSpell = 'Cure III'
end
elseif ban:contains(spell.english) then
if spell.english == 'Banish' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Banish II' then
newSpell = 'Banish'
end
elseif blus:contains(spell.english) then
if spell.english == "Geist Wall" then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == "Geist Wall" then
newSpell = "Sheep Song"
elseif spell.english == "Sheep Song" then
newSpell = "Stinking Gas"
elseif spell.english == "Stinking Gas" then
newSpell = "Geist Wall"
end
end
end
if newSpell ~= spell.english then
send_command('@input /ma "'..newSpell..'" '..tostring(spell.target.raw))
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
end
end
Thanks for the help!
Bahamut.Bojack
Server: Bahamut
Game: FFXI
Posts: 2170
By Bahamut.Bojack 2025-08-23 21:32:21
Code function idle()
if player.status == 'Engaged' then
equip(sets.engaged.melee)
else
equip(sets.idle.dt)
end
end
In this function how would I add the command equip(sets.idle.nightdt) during 'dusk to dawn' for Nin AF boots.
Just looking for someone to explain this addon a bit for me. It looks like it is an alternative to Spellcast.
Is it going to be replacing Spellcast? In which ways is it better or worse. I don't know any programming but I've slowly learned more and more about spellcast and the 'language' used in gearswap is confusing to me.
It says it uses packets so it potentially could be more detectable? but does that also eliminate any lag that spellcast may encounter?
I plan on redoing my PUP xml to include pet casting sets thanks to the new addon petschool. I'm just not sure if it's worth it to just wait until gearswap gets more popular or to go ahead and do it in spellcast.
If anyone could give me more info I'd greatly appreciate it.
|
|