Gearswap Support Thread

Eorzea Time
 
 
 
Language: JP EN FR DE
users online
Forum » Windower » Support » Gearswap Support Thread
Gearswap Support Thread
First Page 2 3 ... 187 188
Offline
Server: Asura
Game: FFXI
Posts: 21
By Asura.Hadroncollider 2025-06-21 07:49:25
Link | Quote | Reply
 
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
Offline
Server: Quetzalcoatl
Game: FFXI
user: Xilk
Posts: 1508
By Quetzalcoatl.Xilkk 2025-07-02 13:47:58
Link | Quote | Reply
 
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
Offline
Server: Fenrir
Game: FFXI
user: Jinxs
Posts: 986
By Fenrir.Jinxs 2025-07-02 14:13:26
Link | Quote | Reply
 
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
Offline
Server: Quetzalcoatl
Game: FFXI
user: Xilk
Posts: 1508
By Quetzalcoatl.Xilkk 2025-07-02 14:23:19
Link | Quote | Reply
 
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
Offline
Server: Fenrir
Game: FFXI
user: Jinxs
Posts: 986
By Fenrir.Jinxs 2025-07-02 14:31:27
Link | Quote | Reply
 
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
Offline
Server: Quetzalcoatl
Game: FFXI
user: Xilk
Posts: 1508
By Quetzalcoatl.Xilkk 2025-07-02 14:42:39
Link | Quote | Reply
 
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
Offline
Server: Fenrir
Game: FFXI
user: Jinxs
Posts: 986
By Fenrir.Jinxs 2025-07-02 14:45:37
Link | Quote | Reply
 
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
Offline
Server: Fenrir
Game: FFXI
user: Jinxs
Posts: 986
By Fenrir.Jinxs 2025-07-02 14:57:58
Link | Quote | Reply
 
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
 Fenrir.Brimstonefox
Offline
Server: Fenrir
Game: FFXI
user: Brimstone
Posts: 300
By Fenrir.Brimstonefox 2025-07-02 14:59:28
Link | Quote | Reply
 
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
Offline
Server: Quetzalcoatl
Game: FFXI
user: Xilk
Posts: 1508
By Quetzalcoatl.Xilkk 2025-07-02 15:05:06
Link | Quote | Reply
 
Thank you very much
 Fenrir.Brimstonefox
Offline
Server: Fenrir
Game: FFXI
user: Brimstone
Posts: 300
By Fenrir.Brimstonefox 2025-07-03 08:53:06
Link | Quote | Reply
 
Were you able to get it to work then?
necroskull Necro Bump Detected! [36 days between previous and next post]
By Rentwokay 2025-08-08 12:20:07
Link | Quote | Reply
 
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
Offline
Server: Quetzalcoatl
Game: FFXI
user: Xilk
Posts: 1508
By Quetzalcoatl.Xilkk 2025-08-08 12:26:46
Link | Quote | Reply
 
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
Offline
Server: Bismarck
Game: FFXI
user: Yenyoju
Posts: 4
By Bismarck.Nanoprim 2025-08-12 14:46:05
Link | Quote | Reply
 
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?
Offline
Posts: 9
By Nedavets1 2025-08-20 13:29:00
Link | Quote | Reply
 
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
Offline
Server: Bahamut
Game: FFXI
user: Bojack316
Posts: 2170
By Bahamut.Bojack 2025-08-23 21:32:21
Link | Quote | Reply
 
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.
First Page 2 3 ... 187 188