|
Gearswap Support Thread
Server: Shiva
Game: FFXI
Posts: 463
By Shiva.Cerderic 2023-10-19 19:46:25
You cannot have 2 midcast sets (SIRD and Enmity). What should be happening is Enmity+SIRD (Enmity base with SIRD replacing pieces of the Enmity set). Maybe I'm misunderstanding but this definitely isn't true for my gs and I'm no expert. On long casting spells such as Tenebral Crush, it is definitely switching from FC -> eva/SIRD -> MAB. In odyssey, when a spell lags out midcast, I'm left standing in my SIRD set.
By Dodik 2023-10-20 06:52:37
IIRC GS cannot guarantee two midcasts will have the sets applied correctly. Not to mention the starting midcast set won't be on for the whole spell, meaning that SIRD won't be effective throughout the spell and can still get interrupted.
Cast a long casting spell like stoneskin in such sets with maxed SIRD and see if you get interrupted. If you do, the SIRD set is not applied for the whole spell - 99.9999% this is happening.
By drakefs 2023-10-20 09:29:17
Maybe I'm misunderstanding but this definitely isn't true for my gs and I'm no expert.
GS has three triggers on actions: Code function precast()
function midcast()
function aftercast() and these all trigger on specific packets.
Now, I am sure your gs lua has added functionality to equip a second set during midcast but it is likely not that accurate on swap times. I would strongly recommend building your SIRD set as I outlined in my previous post.
Code equip(set_combine(sets.midcast.second-equip, sets.midcast.SIRD))
This would make sure that at least some of the correct gear is equipped should the second swap never happen.
With how quickcast interacts with GS, as I understand it, your setup would never equip the second set.
Bahamut.Balduran
Server: Bahamut
Game: FFXI
Posts: 273
By Bahamut.Balduran 2023-10-21 01:47:29
You cannot have 2 midcast sets (SIRD and Enmity). What should be happening is Enmity+SIRD (Enmity base with SIRD replacing pieces of the Enmity set). Maybe I'm misunderstanding but this definitely isn't true for my gs and I'm no expert. On long casting spells such as Tenebral Crush, it is definitely switching from FC -> eva/SIRD -> MAB. In odyssey, when a spell lags out midcast, I'm left standing in my SIRD set.
I would suggest that you stick with the standard pre-cast > mid-cast and decide whether you want a guaranteed spell to land, regardless of potency, or if you will maximize FC then use skill to time your spell and land it with full potency gear. The 'sird in the middle' is not really a viable option, and as a matter of fact I tested in the past using the vanilla equipset macros and it wasn't reliable.
Server: Ragnarok
Game: FFXI
Posts: 43
By Ragnarok.Iamarealgirl 2023-10-30 17:22:27
anyone know how to completely disable the brd and geo auto's in selindriles luas? i use autogeo and singer, but now that i've switched to sel's gs theyre overlapping with his autos, i didnt even know he had autos until they started overlapping lol. i've asked in the discord but havent got a response so hoped i could get help here.
basically i want to turn off selindriles autos. use ivaar's autogeo and singer. but when i try to disable either of sel's gs's they stop working and i get nonstop errors on screen.
By Dodik 2023-10-30 17:52:55
What do you mean autos. Selindrile's luas don't auto cast anything unless you turn the auto stuff on afaik. For geo comment out 'autogeo' and 'autoindi' in your job file - again it needs to be enabled to cast even if these are set.
Fenrir.Jinxs
Server: Fenrir
Game: FFXI
Posts: 541
By Fenrir.Jinxs 2023-10-30 19:20:34
Id love to know how to use sels auto geo
I fail to see how those would conflict at all though.
What are you doing over there
By drakefs 2023-10-30 20:50:15
Selindrile's luas don't auto cast anything unless you turn the auto stuff on afaik.
Looking at the lua, it seems to default to Auto casting Indi\Geo.
Edit line 78:Code state.AutoGeoAbilities = M(true, 'Use Geo Abilities Automatically') to Code state.AutoGeoAbilities = M(false, 'Use Geo Abilities Automatically')
Alternatively you can use Code //gs c toggle AutoGeoAbilities in game to turn it off\on.
nvm that is specifically for JAs. You would have to turn off buff mode, probably?
I would probably just reccomend staying away from sels if you want to use the AutoGEO lua.
Server: Ragnarok
Game: FFXI
Posts: 43
By Ragnarok.Iamarealgirl 2023-10-30 21:21:44
i type in "//autogeo on" or "//sing on" to start ivaars addons and it cause both ivaars and sel's to start
but it seems like no one can help me so i guess i will just have to go back to my old GS files.
By Dodik 2023-10-30 21:39:08
Add:
Code send_command('gs c set AutoBuffMode off')
To your user_job_setup function in job file.
Fenrir.Jinxs
Server: Fenrir
Game: FFXI
Posts: 541
By Fenrir.Jinxs 2023-10-31 11:10:47
Ragnarok.Iamarealgirl said: »i type in "//autogeo on" or "//sing on" to start ivaars addons and it cause both ivaars and sel's to start
but it seems like no one can help me so i guess i will just have to go back to my old GS files. I've used singer a few times and I have never had sing or sing on interact with selins luas
Either way it's probably an alias or something you can change
Use the find in files function of notepad++ and check the gear swap folder tree for "sing" and "autogeo"
You will also want to check your init file if you imported stuff from someone elses
Quetzalcoatl.Balthor
Server: Quetzalcoatl
Game: FFXI
Posts: 20
By Quetzalcoatl.Balthor 2023-11-03 14:16:53
I am having an issue with a BLM gearswap. Any time I move, say kiting an enemy, and then come to a stop, I can't immediately cast because GS switches to my idle gear after I start casting. I copied someone's GS and filled in my own current gear (work in progress), but I'm not sure how to get it to stop changing to idle gear after I stop moving. I'm always in my idle refresh gear during midcast and it's driving me nuts. Can anyone look this over and tell me why it keeps doing this?
Thank you.
Code
---------------------------------------------------------------------------------
-- This lua is based off of the Kinematics template and uses Motenten globals. --
-- --
-----------------------------Authors of this file--------------------------------
------ ****************************************** ------
--- ---
-- Byrne (Asura) --------------- [Author Primary] --
-- Gamergiving (Asura) --------- [movement speed conversion mechanics] --
-- Verbannt (Asura) ------------ [organization of job functions And Github updates] --
--
-- --
---------------------------------------------------------------------------------
-- This file should be treated as a work in progress, check back to The Black Sacrament Guide or Github for updates
-------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
include('organizer-lib')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Setup which sets you want to contain which sets of gear.
-- By default my sets are: Normal is bursting gear, Occult_Acumen is Conserve MP/MP return body, FreeNuke_Effect self explanatory.
-- If you're new to gearswap, the F9~12 keys and CTRL keys in combination is how you activate this stuff.
function job_setup()
state.OffenseMode:options('None', 'Locked')
state.CastingMode:options('Normal', 'OccultAcumen', 'FreeNuke')
state.IdleMode:options('Normal', 'PDT')
state.VorsealMode = M('Normal', 'Vorseal')
state.ManawallMode = M('Swaps', 'No_Swaps')
state.Enfeebling = M('None', 'Effect')
--Vorseal mode is handled simply when zoning into an escha zone--
state.Moving = M(false, "moving")
element_table = L{'Earth','Wind','Ice','Fire','Water','Lightning'}
lowTierNukes = S{'Stone', 'Water', 'Aero', 'Fire', 'Blizzard', 'Thunder',
'Stone II', 'Water II', 'Aero II', 'Fire II', 'Blizzard II', 'Thunder II',
'Stone III', 'Water III', 'Aero III', 'Fire III', 'Blizzard III', 'Thunder III',
'Stonega', 'Waterga', 'Aeroga', 'Firaga', 'Blizzaga', 'Thundaga',
'Stonega II', 'Waterga II', 'Aeroga II', 'Firaga II', 'Blizzaga II', 'Thundaga II'}
degrade_array = {
['Fire'] = {'Fire','Fire II','Fire III','Fire IV','Fire V','Fire VI'},
['Firega'] = {'Firaga','Firaga II','Firaga III','Firaja'},
['Ice'] = {'Blizzard','Blizzard II','Blizzard III','Blizzard IV','Blizzard V','Blizzard VI'},
['Icega'] = {'Blizzaga','Blizzaga II','Blizzaga III','Blizzaja'},
['Wind'] = {'Aero','Aero II','Aero III','Aero IV','Aero V','Aero VI'},
['Windga'] = {'Aeroga','Aeroga II','Aeroga III','Aeroja'},
['Earth'] = {'Stone','Stone II','Stone III','Stone IV','Stone V','Stone VI'},
['Earthga'] = {'Stonega','Stonega II','Stonega III','Stoneja'},
['Lightning'] = {'Thunder','Thunder II','Thunder III','Thunder IV','Thunder V','Thunder VI'},
['Lightningga'] = {'Thundaga','Thundaga II','Thundaga III','Thundaja'},
['Water'] = {'Water', 'Water II','Water III', 'Water IV','Water V','Water VI'},
['Waterga'] = {'Waterga','Waterga II','Waterga III','Waterja'},
['Aspirs'] = {'Aspir','Aspir II','Aspir III'},
['Sleepgas'] = {'Sleepga','Sleepga II'}
}
send_command('bind f10 gs c cycle IdleMode')
send_command('bind f11 gs c cycle CastingMode')
send_command('bind ^f11 gs c cycle Enfeebling')
send_command('bind f12 gs c cycle ManawallMode')
send_command('bind !` input /ma Stun <t>') -- Alt-` Quick Stun Shortcut.
organizer_items = {aeonic="Khatvanga"}
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function user_unload()
send_command('unbind ^`')
send_command('unbind @`')
send_command('unbind f10')
send_command('unbind ^`f11')
send_command('unbind @`f11')
send_command('unbind ^f11')
send_command('unbind !`')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
---- Precast Sets ----
-- Precast sets to enhance JAs
sets.precast.JA['Mana Wall'] = {back="Taranus's cape",feet="Wicce Sabots +1"}
sets.precast.JA.Manafont = {body="Sorcerer's Coat +2"}
-- Can put HP/MP set here for convert
sets.precast.JA.Convert = {}
-- Base precast Fast Cast set, this set will have to show up many times in the function section of the lua
-- So dont forget to do that.
sets.precast.FC = {
ammo="Staunch Tathlum",
head={ name="Agwu's Cap", augments={'Path: A',}},
body={ name="Agwu's Robe", augments={'Path: A',}},
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Orunmila's Torque",
waist="Witful Belt",
left_ear="Malignance Earring",
right_ear="Loquac. Earring",
left_ring="Kishar Ring",
right_ring="Prolix Ring",
back="Swith Cape",
}
sets.precast['Impact'] = {
body="Twilight Cloak",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Orunmila's Torque",
waist="Witful Belt",
left_ear="Malignance Earring",
right_ear="Loquac. Earring",
left_ring="Kishar Ring",
right_ring="Prolix Ring",
back="Swith Cape",
}
sets.precast.FC.HighMP = {
ammo="Staunch Tathlum",
head={ name="Agwu's Cap", augments={'Path: A',}},
body={ name="Agwu's Robe", augments={'Path: A',}},
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Orunmila's Torque",
waist="Witful Belt",
left_ear="Malignance Earring",
right_ear="Loquac. Earring",
left_ring="Kishar Ring",
right_ring="Prolix Ring",
back="Swith Cape",
}
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
sets.precast.FC['Enfeebling Magic'] = sets.precast.FC
sets.precast.FC['Elemental Magic'] = {
ammo="Staunch Tathlum",
head="Wicce Petasos +2",
body={ name="Agwu's Robe", augments={'Path: A',}},
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Orunmila's Torque",
waist="Witful Belt",
left_ear="Malignance Earring",
right_ear="Loquac. Earring",
left_ring="Kishar Ring",
right_ring="Prolix Ring",
back="Swith Cape",
}
sets.precast.FC['Healing Magic'] = set_combine(sets.precast.FC, {body="Heka's Kalasiris",feet="Vanya Clogs",})
-- Midcast set for Death, Might as well only have one set, unless you plan on free-nuking death for some unexplainable reason.
sets.midcast['Death'] = {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
head="Pixie Hairpin +1",
body="Wicce Coat +2",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Erra Pendant",
waist="Refoccilation Stone",
left_ear="Malignance Earring",
right_ear={ name="Wicce Earring", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+8',}},
left_ring="Archon Ring",
right_ring="Freke Ring",
back="Argochampsa Mantle",
}
-- Sets for WS, Feel free to add one for Vidohunir if you have Laevateinn
sets.precast.WS = {
ammo="Oshasha's Treatise",
head="Nyame Helm",
body="Nyame Mail",
hands="Nyame Gauntlets",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck="Rep. Plat. Medal",
waist="Fotia Belt",
left_ear={ name="Moonshade Earring", augments={'Accuracy+4','TP Bonus +250',}},
right_ear="Assuage Earring",
left_ring="Cornelia's Ring",
right_ring="Shukuyu Ring",
back="Penetrating Cape",
}
---- Midcast Sets ----
sets.midcast.FastRecast = {}
sets.midcast['Healing Magic'] = {
ammo="Clarus Stone",
head="Wicce Petasos +2",
body="Wicce Coat +2",
hands={ name="Bokwus Gloves", augments={'"Mag.Atk.Bns."+13','INT+10','MND+10',}},
legs="Nares Trews",
feet={ name="Vanya Clogs", augments={'"Cure" potency +5%','"Cure" spellcasting time -15%','"Conserve MP"+6',}},
neck="Phalaina Locket",
waist="Austerity Belt",
left_ear="Halasz Earring",
right_ear="Roundel Earring",
left_ring="Menelaus's Ring",
right_ring="Lebeche Ring",
back="Oretania's Cape",
}
sets.midcast['Enhancing Magic'] = {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
head="Befouled Crown",
body="Anhur Robe",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet="Regal Pumps +1",
neck="Incanter's Torque",
waist="Embla Sash",
left_ear="Andoaa Earring",
right_ear="Halasz Earring",
left_ring="Defending Ring",
right_ring="Stikini Ring",
back="Fi Follet Cape +1",
}
sets.midcast.Mana_Wall_No_Swap = {
main="Terra's Staff",
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head="Kaabnax Hat",
body="Merlinic Jubbah",
hands="Hagondes Cuffs +1",
legs={ name="Hagondes Pants +1", augments={'Phys. dmg. taken -4%',}},
feet="Wicce Sabots +1",
neck="Loricate Torque +1",
waist="Slipor Sash",
left_ear="Merman's Earring",
right_ear="Merman's Earring",
left_ring="Dark Ring",
right_ring="Defending Ring",
back="Cheviot Cape",
}
-- I personally do not have gear to alter these abilities as of the time of disseminating this file, but
-- definitely add them here if you have them.
sets.midcast.Refresh = set_combine(sets.midcast['Enhancing Magic'], {})
sets.midcast.Haste = set_combine(sets.midcast['Enhancing Magic'], {})
sets.midcast.Phalanx = set_combine(sets.midcast['Enhancing Magic'], {})
sets.midcast.Aquaveil = set_combine(sets.midcast['Enhancing Magic'], {})
sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {
waist="Siegel Sash",})
sets.midcast['Enfeebling Magic'] = {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
head="Wicce Petasos +2",
body="Wicce Coat +2",
hands="Lurid Mitts",
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Incanter's Torque",
waist="Eschan Stone",
left_ear="Malignance Earring",
right_ear={ name="Wicce Earring", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+8',}},
left_ring="Kishar Ring",
right_ring="Stikini Ring",
back="Refraction Cape",
}
sets.midcast['Enfeebling Magic'].Effect = set_combine(sets.midcast['Enfeebling Magic'],{})
sets.midcast['Enfeebling Magic'] = set_combine(sets.midcast['Enfeebling Magic'],{})
sets.midcast.ElementalEnfeeble = sets.midcast['Enfeebling Magic']
sets.midcast['Dark Magic'] = {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
head="Pixie Hairpin +1",
body="Wicce Coat +2",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Merlinic Crackows", augments={'Mag. Acc.+15 "Mag.Atk.Bns."+15','Enmity-3','MND+9','Mag. Acc.+3','"Mag.Atk.Bns."+2',}},
neck="Erra Pendant",
waist="Fucho-no-Obi",
left_ear="Malignance Earring",
right_ear={ name="Wicce Earring", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+8',}},
left_ring="Archon Ring",
right_ring="Stikini Ring",
back="Argochampsa Mantle",
}
-- Elemental Magic sets
sets.midcast['Elemental Magic'] = {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
head="Wicce Petasos +2",
body="Wicce Coat +2",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Eddy Necklace",
waist="Refoccilation Stone",
left_ear="Malignance Earring",
right_ear={ name="Wicce Earring", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+8',}},
left_ring="Fenrir Ring +1",
right_ring="Freke Ring",
back="Argochampsa Mantle",
}
sets.midcast['Elemental Magic'].FreeNuke = set_combine(sets.midcast['Elemental Magic'], {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
head="Wicce Petasos +2",
body="Wicce Coat +2",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Eddy Necklace",
waist="Refoccilation Stone",
left_ear="Malignance Earring",
right_ear={ name="Wicce Earring", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+8',}},
left_ring="Fenrir Ring +1",
right_ring="Freke Ring",
back="Argochampsa Mantle",
})
sets.midcast['Elemental Magic'].OccultAcumen = set_combine(sets.midcast['Elemental Magic'].HighTierNuke, {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
head="Wicce Petasos +2",
body="Spaekona's Coat +2",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Eddy Necklace",
waist="Refoccilation Stone",
left_ear="Malignance Earring",
right_ear={ name="Wicce Earring", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+8',}},
left_ring="Fenrir Ring +1",
right_ring="Freke Ring",
back="Argochampsa Mantle",
})
sets.midcast['Elemental Magic'].HighTierNuke = set_combine(sets.midcast['Elemental Magic'], {})
sets.midcast['Elemental Magic'].HighTierNuke.FreeNuke = set_combine(sets.midcast['Elemental Magic'].HighTierNuke, {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
head="Wicce Petasos +2",
body="Wicce Coat +2",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Eddy Necklace",
waist="Refoccilation Stone",
left_ear="Malignance Earring",
right_ear={ name="Wicce Earring", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+8',}},
left_ring="Fenrir Ring +1",
right_ring="Freke Ring",
back="Argochampsa Mantle",
})
sets.midcast['Elemental Magic'].HighTierNuke.OccultAcumen = set_combine(sets.midcast['Elemental Magic'].HighTierNuke, {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
head="Wicce Petasos +2",
body="Wicce Coat +2",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Eddy Necklace",
waist="Refoccilation Stone",
left_ear="Malignance Earring",
right_ear={ name="Wicce Earring", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+8',}},
left_ring="Fenrir Ring +1",
right_ring="Freke Ring",
back="Argochampsa Mantle",
})
sets.midcast['Impact'] = {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
body="Twilight Cloak",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Eddy Necklace",
waist="Refoccilation Stone",
left_ear="Malignance Earring",
right_ear={ name="Wicce Earring", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+8',}},
left_ring="Fenrir Ring +1",
right_ring="Freke Ring",
back="Argochampsa Mantle",
}
sets.midcast['Comet'] = set_combine(sets.midcast['Elemental Magic'], {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
head="Wicce Petasos +2",
body="Wicce Coat +2",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Eddy Necklace",
waist="Refoccilation Stone",
left_ear="Malignance Earring",
right_ear={ name="Wicce Earring", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+8',}},
left_ring="Fenrir Ring +1",
right_ring="Freke Ring",
back="Argochampsa Mantle",
})
sets.midcast['Comet'].FreeNuke = set_combine(sets.midcast['Elemental Magic'], {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
head="Wicce Petasos +2",
body="Wicce Coat +2",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Eddy Necklace",
waist="Refoccilation Stone",
left_ear="Malignance Earring",
right_ear={ name="Wicce Earring", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+8',}},
left_ring="Fenrir Ring +1",
right_ring="Freke Ring",
back="Argochampsa Mantle",
})
sets.midcast.Klimaform = {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
head="Wicce Petasos +2",
body="Wicce Coat +2",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Agwu's Pigaches", augments={'Path: A',}},
neck="Eddy Necklace",
waist="Refoccilation Stone",
left_ear="Malignance Earring",
right_ear={ name="Wicce Earring", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+8',}},
left_ring="Fenrir Ring +1",
right_ring="Freke Ring",
back="Argochampsa Mantle",
}
sets.midcast.Flash = {}
-- These next two sets are used later in the functions to determine what gear will be used in High MP and Low MP situations
-- SPECIFICALLY for Aspir spells. In the LowMP set, put your best Aspir+ gear, in the other set put your best Max MP gear.
-- Find out how much your maximum MP is in each set, and adjust the MP values in the function area accordingly
-- (CTRL+F: Aspir Handling)
sets.midcast.HighMP = {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
head="Pixie Hairpin +1",
body="Wicce Coat +2",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Merlinic Crackows", augments={'Mag. Acc.+15 "Mag.Atk.Bns."+15','Enmity-3','MND+9','Mag. Acc.+3','"Mag.Atk.Bns."+2',}},
neck="Erra Pendant",
waist="Fucho-no-Obi",
left_ear="Malignance Earring",
right_ear={ name="Wicce Earring", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+8',}},
left_ring="Archon Ring",
right_ring="Stikini Ring",
back="Argochampsa Mantle",
}
sets.midcast.LowMP = {
ammo={ name="Ghastly Tathlum +1", augments={'Path: A',}},
head="Pixie Hairpin +1",
body="Wicce Coat +2",
hands={ name="Agwu's Gages", augments={'Path: A',}},
legs={ name="Agwu's Slops", augments={'Path: A',}},
feet={ name="Merlinic Crackows", augments={'Mag. Acc.+15 "Mag.Atk.Bns."+15','Enmity-3','MND+9','Mag. Acc.+3','"Mag.Atk.Bns."+2',}},
neck="Erra Pendant",
waist="Fucho-no-Obi",
left_ear="Malignance Earring",
right_ear={ name="Wicce Earring", augments={'System: 1 ID: 1676 Val: 0','Mag. Acc.+8',}},
left_ring="Archon Ring",
right_ring="Stikini Ring",
back="Argochampsa Mantle",
}
--Set to be equipped when Day/Weather match current spell element
sets.Obi = {waist="Hachirin-no-Obi",}
-- I actually have two references to equip this item, just in case your globals are out of date.
-- Resting sets
sets.resting = {}
-- Idle sets: Make general idle set a max MP set, later hooks will handle the rest of your refresh sets, but
-- remember to alter the refresh sets (Ctrl+F to find them)
sets.idle = {
ammo="Staunch Tathlum",
head="Befouled Crown",
body="Wicce Coat +2",
hands="Serpentes Cuffs",
legs="Assiduity Pants +1",
feet="Serpentes Sabots",
neck={ name="Loricate Torque +1", augments={'Path: A',}},
waist="Fucho-no-Obi",
left_ear="Ethereal Earring",
right_ear="Domes. Earring",
left_ring="Defending Ring",
right_ring="Woltaris Ring +1",
back="Cheviot Cape",
}
-- Idle mode that keeps PDT gear on, but doesn't prevent normal gear swaps for precast/etc.
sets.idle.PDT = {
ammo="Staunch Tathlum",
head="Wicce Petasos +2",
body="Wicce Coat +2",
hands="Nyame Gauntlets",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck={ name="Loricate Torque +1", augments={'Path: A',}},
waist="Plat. Mog. Belt",
left_ear="Ethereal Earring",
right_ear="Domes. Earring",
left_ring="Defending Ring",
right_ring="Woltaris Ring +1",
back="Cheviot Cape",
}
sets.Adoulin = {body="Councilor's Garb",}
sets.MoveSpeed = {feet = "Herald's Gaiters",}
sets.TreasureHunter = {
ammo="Per. Lucky Egg",
head="White Rarab Cap +1",
waist="Chaac Belt",
}
-- Set for Conserve MP toggle, convert damage to MP body.
sets.AFBody = {body="Spaekona's Coat +2"}
--- PDT set is designed to be used for MP total set, MDT can be used for whatever you like but in MDT mode
--- the player.mp arguments will likely stop working properly
sets.defense.PDT = {
ammo="Staunch Tathlum",
head="Wicce Petasos +2",
body="Wicce Coat +2",
hands="Nyame Gauntlets",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck={ name="Loricate Torque +1", augments={'Path: A',}},
waist="Plat. Mog. Belt",
left_ear="Ethereal Earring",
right_ear="Domes. Earring",
left_ring="Defending Ring",
right_ring="Woltaris Ring +1",
back="Cheviot Cape",
}
sets.defense.MDT = {
ammo="Staunch Tathlum",
head="Wicce Petasos +2",
head="Wicce Coat +2",
hands="Nyame Gauntlets",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck={ name="Loricate Torque +1", augments={'Path: A',}},
waist="Plat. Mog. Belt",
left_ear="Ethereal Earring",
right_ear="Domes. Earring",
left_ring="Defending Ring",
right_ring="Woltaris Ring +1",
back="Cheviot Cape",
}
sets.Kiting = {feet="Herald's Gaiters"}
sets.latent_refresh = {waist="Fucho-no-Obi"}
sets.auto_refresh = {
ammo="Staunch Tathlum",
head="Befouled Crown",
body="Wicce Coat +2",
hands="Serpentes Cuffs",
legs="Assiduity Pants +1",
feet="Serpentes Sabots",
neck={ name="Loricate Torque +1", augments={'Path: A',}},
waist="Fucho-no-Obi",
left_ear="Ethereal Earring",
right_ear="Domes. Earring",
left_ring="Defending Ring",
right_ring="Woltaris Ring +1",
back="Cheviot Cape",
}
-- Mana Wall idle set
sets.buff['Mana Wall'] = {
ammo="Staunch Tathlum",
head="Wicce Petasos +2",
body="Wicce Coat +2",
hands="Nyame Gauntlets",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck={ name="Loricate Torque +1", augments={'Path: A',}},
waist="Plat. Mog. Belt",
left_ear="Ethereal Earring",
right_ear="Domes. Earring",
left_ring="Defending Ring",
right_ring="Woltaris Ring +1",
back="Cheviot Cape",
}
sets.midcast.Cure = {
ammo="Clarus Stone",
head="Wicce Petasos +2",
body="Wicce Coat +2",
hands={ name="Bokwus Gloves", augments={'"Mag.Atk.Bns."+13','INT+10','MND+10',}},
legs="Nares Trews",
feet={ name="Vanya Clogs", augments={'"Cure" potency +5%','"Cure" spellcasting time -15%','"Conserve MP"+6',}},
neck="Phalaina Locket",
waist="Austerity Belt",
left_ear="Halasz Earring",
right_ear="Roundel Earring",
left_ring="Menelaus's Ring",
right_ring="Lebeche Ring",
back="Oretania's Cape",
}
sets.midcast.CureSelf = set_combine(sets.midcast.Cure, {waist="Gishdubar Sash"})
-- Engaged sets
-- Set is designed for engaging a monster before pop to ensure you are at maximum MP value when Geas Fete triggers an MP refill.
-- This is mostly used in this lua in situations where a fight is about to be initiated and you arent above whatever the maximum
-- value for your idle set is. Another simple way around this is to simply make a macro to equip the gear before the fight starts.
sets.engaged = {
ammo="Hasty Pinion +1",
head="Wicce Petasos +2",
body="Wicce Coat +2",
hands="Nyame Gauntlets",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck="Subtlety Spectacles",
waist="Eschan Stone",
left_ear="Steelflash Earring",
right_ear="Assuage Earring",
left_ring="Cacoethic Ring +1",
right_ring="Chirich Ring",
back="Penetrating Cape",
}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
--- Define MP and buff specific Fast Cast and Midcast sets for conservation of MP for death sets, most will be
--- handled on thier own. What you need to change is the player.mp value to match slightly under what your max
--- MP is in your standard fast cast set. The set is designed to Dynamically switch fast cast sets to sets that
--- preserve your MP total if you are above the amount at which equiping your standard set would decrease your
--- maximum MP. Due to a rework in how these arguments are organised, all gearsets are being handled above the
--- function block for this file.
function job_precast(spell, action, spellMap, eventArgs)
enable('feet','back')
if spell.english == "Impact" then
sets.precast.FC = sets.precast['Impact']
end
end
function job_post_precast(spell, action, spellMap, eventArgs)
if player.mp > 2000 and state.VorsealMode.value == 'Vorseal' then
equip(sets.precast.FC.HighMP)
elseif player.mp < 2000 and state.VorsealMode.value == 'Vorseal' then
equip(sets.precast.FC)
elseif player.mp > 1650 and state.VorsealMode.value == 'Normal' then
equip(sets.precast.FC.HighMP)
elseif player.mp < 1650 and state.VorsealMode.value == 'Normal' then
equip(sets.precast.FC)
end
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)
if spell.english == 'Jettatura' or spell.english == 'Geist Wall'
or spell.english == 'Soporific' or spell.english == 'Blank Gaze'
or spell.english == 'Sheep Song' or spell.english == 'Chaotic Eye'
or spell.english == 'Cursed Sphere' or spell.english == 'Flash' then
equip(sets.midcast.Flash)
end
if spell.english == 'Death' then
equip(sets.midcast['Death'])
end
if spell.english == "Impact" then
equip({head=empty,body="Twilight Cloak"})
end
end
-- Aspir Handling
-- This section is for you to define at what value your Aspir sets will change. This is to let your aspirs
-- get you into your death idle and higher MP values. This number should be around 100 MP lower than the
-- Fast cast argument above this to prevent looping. The intent is to ensure that if you use aspir while you
-- are already above a value defined in this section then it will put on your highest MP set, capping you off
-- rather than simply capping you to whatever your Aspir potency set's max MP value happens to be.
function job_post_midcast(spell, action, spellMap, eventArgs)
if (spell.skill == 'Elemental Magic' or spell.skill == 'Healing Magic') and (spell.element == world.weather_element or spell.element == world.day_element) then
equip(sets.Obi)
end
if spell.english == 'Aspir' or spell.english == 'Aspir II' or spell.english == 'Aspir III' and state.VorsealMode.value == 'Vorseal' and player.mp > 1765 then
equip(sets.midcast.HighMP)
elseif spell.english == 'Aspir' or spell.english == 'Aspir II' or spell.english == 'Aspir III' and state.VorsealMode.value == 'Vorseal' and player.mp < 1765 then
equip(sets.midcast.LowMP)
elseif spell.english == 'Aspir' or spell.english == 'Aspir II' or spell.english == 'Aspir III' and state.VorsealMode.value == 'Normal' and player.mp > 1580 then
equip(sets.midcast.HighMP)
elseif spell.english == 'Aspir' or spell.english == 'Aspir II' or spell.english == 'Aspir III' and state.VorsealMode.value == 'Normal' and player.mp < 1580 then
equip(sets.midcast.LowMP)
end
if spell.element == world.day_element or spell.element == world.weather_element then
if string.find(spell.english,'helix') then
equip(sets.midcast.Helix)
else
equip(sets.Obi)
end
end
if spell.skill == 'Elemental Magic' and spell.english ~= 'Impact' and (player.mp-spell.mp_cost) < 436 then
equip(sets.AFBody)
end
if spell.skill == 'Enfeebling Magic' and state.Enfeebling.Value == 'Effect' then
equip(sets.midcast['Enfeebling Magic'].Effect)
end
if spell.skill == 'Elemental Magic' and (string.find(spell.english,'ga') or string.find(spell.english,'ja') or string.find(spell.english,'ra')) then
equip(sets.AFBody)
end
if spellMap == 'Cure' and state.ManawallMode.Value == 'No_Swaps' then
equip(sets.midcast.Mana_Wall_No_Swap)
elseif spellMap == 'Cure' and spell.target.type == 'SELF' then
equip(sets.midcast.CureSelf)
end
if spell.skill == 'Enhancing Magic' and state.ManawallMode.Value == 'No_Swaps' then
equip(sets.midcast.Mana_Wall_No_Swap)
end
end
-- Duration arguments
-- Below you can include wait inputs for all spells that you are interested in having timers for
-- For the sake of brevity, I've only included crowd control spells into this list, but following
-- the same general format you should be able to intuitively include whatever you like.
function job_aftercast(spell, action, spellMap, eventArgs)
-- Lock feet after using Mana Wall.
if buffactive['Mana Wall'] then
enable('feet','back')
equip(sets.buff['Mana Wall'])
disable('feet','back')
end
if not spell.interrupted then
if spell.english == "Sleep II" or spell.english == "Sleepga II" then -- Sleep II Countdown --
send_command('wait 60;input /echo Sleep Effect: [WEARING OFF IN 30 SEC.];wait 15;input /echo Sleep Effect: [WEARING OFF IN 15 SEC.];wait 10;input /echo Sleep Effect: [WEARING OFF IN 5 SEC.]')
elseif spell.english == "Sleep" or spell.english == "Sleepga" then -- Sleep & Sleepga Countdown --
send_command('wait 30;input /echo Sleep Effect: [WEARING OFF IN 30 SEC.];wait 15;input /echo Sleep Effect: [WEARING OFF IN 15 SEC.];wait 10;input /echo Sleep Effect: [WEARING OFF IN 5 SEC.]')
elseif spell.english == "Break" or spell.english == "Breakga" then -- Break Countdown --
send_command('wait 25;input /echo Break Effect: [WEARING OFF IN 5 SEC.]')
elseif spell.english == "Paralyze" then -- Paralyze Countdown --
send_command('wait 115;input /echo Paralyze Effect: [WEARING OFF IN 5 SEC.]')
elseif spell.english == "Slow" then -- Slow Countdown --
send_command('wait 115;input /echo Slow Effect: [WEARING OFF IN 5 SEC.]')
end
end
--if buffactive['poison'] then
--send_command('input /item "antidote" <me>')
--end
end
function nuke(spell, action, spellMap, eventArgs)
if player.target.type == 'MONSTER' then
if state.AOE.value then
send_command('input /ma "'..degrade_array[element_table:append('ga')][#degrade_array[element_table:append('ga')]]..'" '..tostring(player.target.name))
else
send_command('input /ma "'..degrade_array[element_table][#degrade_array[element_table]]..'" '..tostring(player.target.name))
end
else
add_to_chat(5,'A Monster is not targetted.')
end
end
function job_self_command(commandArgs, eventArgs)
if commandArgs[1] == 'element' then
if commandArgs[2] then
if element_table:contains(commandArgs[2]) then
element_table = commandArgs[2]
add_to_chat(5, 'Current Nuke element ['..element_table..']')
else
add_to_chat(5,'Incorrect Element value')
return
end
else
add_to_chat(5,'No element specified')
end
elseif commandArgs[1] == 'nuke' then
nuke()
end
end
function refine_various_spells(spell, action, spellMap, eventArgs)
local aspirs = S{'Aspir','Aspir II','Aspir III'}
local sleeps = S{'Sleep','Sleep II'}
local sleepgas = S{'Sleepga','Sleepga II'}
local newSpell = spell.english
local spell_recasts = windower.ffxi.get_spell_recasts()
local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
local spell_index
end
mov = {counter=0}
if player and player.index and windower.ffxi.get_mob_by_index(player.index) then
mov.x = windower.ffxi.get_mob_by_index(player.index).x
mov.y = windower.ffxi.get_mob_by_index(player.index).y
mov.z = windower.ffxi.get_mob_by_index(player.index).z
end
moving = false
windower.raw_register_event('prerender',function()
mov.counter = mov.counter + 1;
if buffactive['Mana Wall'] then
moving = false
elseif mov.counter>15 then
local pl = windower.ffxi.get_mob_by_index(player.index)
if pl and pl.x and mov.x then
dist = math.sqrt( (pl.x-mov.x)^2 + (pl.y-mov.y)^2 + (pl.z-mov.z)^2 )
if dist > 1 and not moving then
state.Moving.value = true
send_command('gs c update')
if world.area:contains("Adoulin") then
send_command('gs equip sets.Adoulin')
else
send_command('gs equip sets.MoveSpeed')
end
moving = true
elseif dist < 1 and moving then
state.Moving.value = false
send_command('gs c update')
moving = false
end
end
if pl and pl.x then
mov.x = pl.x
mov.y = pl.y
mov.z = pl.z
end
mov.counter = 0
end
end)
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- 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.
function job_buff_change(buff, gain)
--if buff == "poison" and gain then
--send_command('input /item "antidote" <me>')
--end
if buff == "Vorseal" then
send_command('gs c cycle VorsealMode')
elseif buff == "Vorseal" and not gain then
send_command('gs c cycle VorsealMode')
end
-- Unlock feet when Mana Wall buff is lost.
if buff == "Mana Wall" then
send_command('wait 0.5;gs c update')
end
if buff == "Mana Wall" and not gain then
enable('feet','back')
handle_equipping_gear(player.status)
end
end
-- Handle notifications of general user state change.
function job_state_change(stateField, newValue, oldValue)
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
--[[function job_update(cmdParams, eventArgs)
job_display_current_state(eventArgs)
eventArgs.handled = true
end]]
function display_current_job_state(eventArgs)
end
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
if spell.skill == 'Elemental Magic' and default_spell_map ~= 'ElementalEnfeeble' then
if lowTierNukes:contains(spell.english) then
return 'LowTierNuke'
else
return 'HighTierNuke'
end
end
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if buffactive['Mana Wall'] then
idleSet = sets.buff['Mana Wall']
elseif player.mpp < 51 and state.IdleMode.value == 'PDT' then
idleSet = sets.idle.PDT
elseif player.mpp < 51 and state.IdleMode.value == 'Normal' then
idleSet = set_combine(sets.auto_refresh, sets.latent_refresh)
elseif player.mp < 1765 and state.VorsealMode.value == 'Vorseal' and state.IdleMode.value == 'PDT' then
idleSet = sets.idle.PDT
elseif player.mp < 1765 and state.VorsealMode.value == 'Vorseal' and state.IdleMode.value == 'Normal' then
idleSet = sets.auto_refresh
elseif player.mp < 1580 and state.VorsealMode.value == 'Normal' and state.IdleMode.value == 'PDT' then
idleSet = sets.idle.PDT
elseif player.mp < 1580 and state.VorsealMode.value == 'Normal' and state.IdleMode.value == 'Normal' then
idleSet = sets.auto_refresh
end
return idleSet
end
--- This is where I handle Death Mode Melee set modifications
function customize_melee_set(meleeSet)
if buffactive['Mana Wall'] then
meleeSet = set_combine(meleeSet, sets.buff['Mana Wall'])
end
return meleeSet
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
set_macro_page(1, 5)
-- Do not remove below argument or the file WILL NOT WORK PROPERLY when reloaded in an escha area--
if buffactive['Vorseal'] and state.VorsealMode.value == 'Normal' then
send_command('gs c cycle VorsealMode')
end
end
--{{Emulator Backend: log_filter=*:Info}}
Bismarck.Radec
Server: Bismarck
Game: FFXI
Posts: 146
By Bismarck.Radec 2023-11-03 14:43:01
Quetzalcoatl.Balthor said: »I am having an issue with a BLM gearswap. Any time I move, say kiting an enemy, and then come to a stop, I can't immediately cast because GS switches to my idle gear after I start casting. I copied someone's GS and filled in my own current gear (work in progress), but I'm not sure how to get it to stop changing to idle gear after I stop moving. I'm always in my idle refresh gear during midcast and it's driving me nuts. Can anyone look this over and tell me why it keeps doing this?
Thank you.
--code--
It has to do with the lines from 887-920. That bit is checking every 15 frames to see if you're moving or not, and it's equipping your current status set (idle, engaged, resting, etc) whenever the value changes.
Easy, but you lose functionality - you could remove line 909. It'd keep movespeed gear on after stopping, but wouldn't swap gear again unless you started moving. Aftercast sets wouldn't be affected, you'd have the normal DT/refresh feet instead of gaiters.
Harder, add a function to see if you're in the middle of a cast, and add that as a check before any of the 'gs c update' lines.
Quetzalcoatl.Balthor
Server: Quetzalcoatl
Game: FFXI
Posts: 20
By Quetzalcoatl.Balthor 2023-11-03 14:56:41
Thank you very much. I don't even own the Gaiters, so I wouldn't be missing anything. Could I just remove the entire section that has anything to do with moving? From 880-920?
Bismarck.Radec
Server: Bismarck
Game: FFXI
Posts: 146
By Bismarck.Radec 2023-11-03 15:03:42
Sure, if you don't care about equip-on-movement/stopping 880-920 can all go. It doesn't do anything else.
[+]
Necro Bump Detected!
[60 days between previous and next post]
Quetzalcoatl.Balthor
Server: Quetzalcoatl
Game: FFXI
Posts: 20
By Quetzalcoatl.Balthor 2024-01-02 20:22:35
I'm working on my Enmity sets for whn I'm not engaged and engaged for RUN/BLU. Could someone tell me the language needed to have my SID gear equipped while engaged, and the language for full enmity set when pulling while not engaged please. I would greatly appreciate it. I'm looking to add to this GS section for ease.
Code function midcast(spell,act)
if spell.english == 'Frightful Roar' or spell.english == 'Infrasonics' or spell.english == 'Barbed Crescent' or spell.english == 'Tourbillion' or spell.english == 'Cimicine Discharge' or spell.english == 'Sub-zero smash' or spell.english == 'Filamented Hold' or spell.english == 'Mind Blast' or spell.english == 'Sandspin' or spell.english == 'Hecatomb Wave' or spell.english == 'Cruel Joke' or spell.english == 'Cold Wave' or spell.english == 'Terror Touch' or spell.english == 'MP Drainkiss' or spell.english == 'Digest' or spell.english == 'Blood Saber' or spell.english == 'Blood Drain' or spell.english == 'Osmosis' or spell.english == 'Occultation' or spell.english == 'Magic Barrier' or spell.english == 'Diamondhide' or spell.english == 'Metallic Body' or spell.english == 'Retinal Glare' or spell.english == 'Jettatura' or spell.english == 'Cocoon' or spell.english == 'Sheep Song' or spell.english == 'Mysterious Light' or spell.english == 'Battle Dance' or spell.english == 'Claw Cyclone' or spell.english == 'Screwdriver' or spell.english == 'Grand Slam' or spell.english == 'Bomb Toss' or spell.english == 'Healing Breeze' or spell.english == 'Cursed Sphere' or spell.english == 'Blank Gaze' or spell.english == 'Foot Kick' or spell.english == 'Sprout Smack' then
equip(sets.enmitySID)
end
end
By drakefs 2024-01-03 12:57:59
Code function midcast(spell,act)
if spell.english == 'Frightful Roar' or spell.english == 'Infrasonics' or spell.english == 'Barbed Crescent' or spell.english == 'Tourbillion' or spell.english == 'Cimicine Discharge' or spell.english == 'Sub-zero smash' or spell.english == 'Filamented Hold' or spell.english == 'Mind Blast' or spell.english == 'Sandspin' or spell.english == 'Hecatomb Wave' or spell.english == 'Cruel Joke' or spell.english == 'Cold Wave' or spell.english == 'Terror Touch' or spell.english == 'MP Drainkiss' or spell.english == 'Digest' or spell.english == 'Blood Saber' or spell.english == 'Blood Drain' or spell.english == 'Osmosis' or spell.english == 'Occultation' or spell.english == 'Magic Barrier' or spell.english == 'Diamondhide' or spell.english == 'Metallic Body' or spell.english == 'Retinal Glare' or spell.english == 'Jettatura' or spell.english == 'Cocoon' or spell.english == 'Sheep Song' or spell.english == 'Mysterious Light' or spell.english == 'Battle Dance' or spell.english == 'Claw Cyclone' or spell.english == 'Screwdriver' or spell.english == 'Grand Slam' or spell.english == 'Bomb Toss' or spell.english == 'Healing Breeze' or spell.english == 'Cursed Sphere' or spell.english == 'Blank Gaze' or spell.english == 'Foot Kick' or spell.english == 'Sprout Smack' then
if player.status == 'Idle' then
equip(sets.enmity)
else
equip(sets.enmitySID)
end
end
end
Be careful, there are instances where you may be tanking and not engaged. I would suggest adding a toggle to make sure SIRD is equipped while casting as well.
Code if player.status == 'Engaged' or alwaysSIRD then
equip(sets.enmitySID)
else
equip(sets.enmity)
end
Where alwaysSIRD is a toggle betwen
I would also suggest using an array (string?) to store your enmity spells and check logic against that.
Code
function get_sets()
enmitySpells = {'Frightful Roar','Jettatura',...,'Blank Gaze'}
...
end
function midcast(spell,act)
if enmitySpells:contains(spell.english) then
if player.status == 'Idle' then
equip(sets.enmity)
else
equip(sets.enmitySID)
end
end
end
this should make it easier to remove and add spells to said check.
Quetzalcoatl.Balthor
Server: Quetzalcoatl
Game: FFXI
Posts: 20
By Quetzalcoatl.Balthor 2024-01-03 21:38:23
Thank you very much. I used the section from a BLU lua to add to the RUN lua for BLU spells. I'll be removing most of them because of level limit anyway. But the idle/engaged thing will help immensely.
Server: Ragnarok
Game: FFXI
Posts: 43
By Ragnarok.Iamarealgirl 2024-01-13 08:21:01
is there anyway to add a itemizer command to a jobs lua?
i want itemizer to grab my ninja tools and put them in my mog satchel when i job change to ninja. or jugs when i change to bst. or ammo when i change to rng/cor etc etc.
Server: Ragnarok
Game: FFXI
Posts: 43
By Ragnarok.Iamarealgirl 2024-01-13 08:22:55
Ragnarok.Iamarealgirl said: »i type in "//autogeo on" or "//sing on" to start ivaars addons and it cause both ivaars and sel's to start
but it seems like no one can help me so i guess i will just have to go back to my old GS files. I've used singer a few times and I have never had sing or sing on interact with selins luas
Either way it's probably an alias or something you can change
Use the find in files function of notepad++ and check the gear swap folder tree for "sing" and "autogeo"
You will also want to check your init file if you imported stuff from someone elses thanks i'll try this. i gave up on trying to figure out and didnt come back to see if i got any more responses. appreciate the help
By drakefs 2024-01-13 14:41:19
Ragnarok.Iamarealgirl said: »is there anyway to add a itemizer command to a jobs lua?
send_command() allows you to use any console command or input chat commands from a gs lua:
Code send_command('get <item> [bag] [count]')
send_command('@input /ws "Savage Blade" <t>')
Quetzalcoatl.Balthor
Server: Quetzalcoatl
Game: FFXI
Posts: 20
By Quetzalcoatl.Balthor 2024-01-16 12:39:24
Trying to make a function that checks for certain buffs while job abilities are active. Something like if Auspice and Last Resort(Desperate Blows 5/5) are up, to equip Relic Feet during LR activation and keep them on for the duration, and/or add DA/TA/QA to the gearset in spots I don't need the Subtle Blow while they are both or singularly active. Still learning, and my old macros just aren't cutting it for Mboze V15 tanking...
Once again, any help would be greatly appreciated. This is what I have so far. I've been messing around with gearsets and have them exported if I can get the language figured out for this scenario. Also, pay no attention to some of the outdated gear. A work in progress. :)
Code -------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('RagAcc','DA', 'DW', 'Subtle')
-- state.HybridMode:options ('Reraise')
state.WeaponskillMode:options('Normal', 'Acc')
state.CastingMode:options('Normal', 'Resistant')
state.PhysicalDefenseMode:options('PDT', 'Reraise')
state.MagicalDefenseMode:options('MDT')
select_default_macro_book()
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- sets.WSDayBonus = {head="Gavialis Helm"}
-- Precast sets to enhance JAs
sets.precast.JA['Diabolic Eye'] = {hands="Fallen's finger gauntlets +3"}
-- sets.precast.JA['Arcane Circle'] = {feet="Ignominy Sollerets +1"}
sets.precast.JA['Nether Void'] = {legs="Heathen's Flanchard +2"}
-- sets.precast.JA['Souleater'] = {head="Ignominy Burgeonet +1"}
sets.precast.JA['Weapon Bash'] = {hands="Ignominy Gauntlets +1"}
sets.precast.JA['Last Resort'] = {feet="Fallen's Sollerets +3"}
sets.precast.JA['Dark Seal'] = {head="Fallen's Burgeonet +3"}
sets.precast.JA['Blood Weapon'] = {head="Fallen's Cuirass +1"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {}
-- Fast cast sets for spells
-- Precast Sets
sets.precast.FC = {
head="Sakpata's Helm", --8
neck="Orunmila's Torque", --5
ear1="Malignance Earring", --4
ear2="Loquacious Earring", --2
hands="Buremte Gloves", --3
ring1="Kishar Ring", --4
ring2="Prolix Ring", --2, 10 macc
legs="Enif Cosciales", --8
feet="Carmine Greaves +1", --8
--44 Total
}
sets.precast.FC['Dark Magic'] = set_combine(sets.precast.FC, {head="Fallen's Burgeonet +3"})
sets.precast.FC['Drain'] = set_combine(sets.precast.FC, {head="Fallen's Burgeonet +3"}) --12
sets.precast.FC['Drain II'] = set_combine(sets.precast.FC, {head="Fallen's Burgeonet +3"}) --12
sets.precast.FC['Drain III'] = set_combine(sets.precast.FC, {head="Fallen's Burgeonet +3"}) --12
--48 with above
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
-- Specific spells
sets.midcast.Utsusemi = {}
sets.midcast['Dark Magic'] = {
ammo = "Plumose Sachet",
head = "Heathen's Burgeonet +2",
body = "Heathen's Cuirass +2",
hands = "Fallen's Finger Gauntlets +3",
left_ring = "Kishar Ring",
legs = "Heathen's Flanchard +2",
feet = "Heathen's Sollerets +2",
neck = "Erra Pendant",
waist = "Eschan Stone",
left_ear = "Malignance Earring",
right_ear = "Friomisi Earring",
right_ring = "Fenrir Ring +1",
back = "Niht Mantle",
}
sets.midcast.Endark = {
ammo = "Plumose Sachet",
head = "Heathen's Burgeonet +2",
body = "Heathen's Cuirass +2",
hands = "Fallen's Finger Gauntlets +3",
left_ring = "Kishar Ring",
legs = "Heathen's Flanchard +2",
feet = "Heathen's Sollerets +2",
neck = "Erra Pendant",
waist = "Eschan Stone",
left_ear = "Malignance Earring",
right_ear = "Friomisi Earring",
right_ring = "Fenrir Ring +1",
back = "Niht Mantle",
}
sets.midcast['Endark II'] = sets.midcast.Endark
sets.midcast['Dread Spikes'] = set_combine(sets.precast.FC, {body="Heathen's Cuirass +2"})
sets.midcast['Elemental Magic'] = {
ammo="Plumose Sachet",
head="Nyame Helm",
body="Nyame Mail",
hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}},
legs="Nyame Flanchard",
feet="Heath. Sollerets +2",
neck="Eddy Necklace",
waist="Eschan Stone",
left_ear="Friomisi Earring",
right_ear="Crematio Earring",
left_ring="Arvina Ringlet +1",
right_ring="Fenrir Ring +1",
back="Argocham. Mantle",
}
sets.midcast['Enfeebling Magic'] = {
ammo="Plumose Sachet",
head="Befouled Crown",
body="Heath. Cuirass +2",
hands="Heath. Gauntlets +2",
legs="Heath. Flanchard +2",
feet="Heath. Sollerets +2",
neck="Eddy Necklace",
waist="Eschan Stone",
left_ear="Lifestorm Earring",
right_ear="Psystorm Earring",
left_ring="Arvina Ringlet +1",
right_ring="Fenrir Ring +1",
back="Argocham. Mantle",
}
sets.midcast.Stun = {
ammo="Plumose Sachet",
head="Befouled Crown",
body="Heath. Cuirass +2",
hands="Heath. Gauntlets +2",
legs="Heath. Flanchard +2",
feet="Heath. Sollerets +2",
neck="Eddy Necklace",
waist="Eschan Stone",
left_ear="Lifestorm Earring",
right_ear="Psystorm Earring",
left_ring="Arvina Ringlet +1",
right_ring="Fenrir Ring +1",
back = "Niht Mantle",
}
sets.midcast.Absorb = {
ammo = "Plumose Sachet",
head = "Heathen's Burgeonet +2",
body = "Heathen's Cuirass +2",
hands = "Fallen's Finger Gauntlets +3",
left_ring = "Kishar Ring",
legs = "Heathen's Flanchard +2",
feet = "Heathen's Sollerets +2",
neck = "Erra Pendant",
waist = "Eschan Stone",
left_ear = "Malignance Earring",
right_ear = "Friomisi Earring",
right_ring = "Fenrir Ring +1",
back = "Niht Mantle",
}
sets.midcast.Drain = {
ammo = "Plumose Sachet",
head = "Heathen's Burgeonet +2",
body = "Heathen's Cuirass +2",
hands = "Fallen's Finger Gauntlets +3",
left_ring = "Kishar Ring",
legs = "Heathen's Flanchard +2",
feet = "Heathen's Sollerets +2",
neck = "Erra Pendant",
waist = "Eschan Stone",
left_ear = "Malignance Earring",
right_ear = "Friomisi Earring",
right_ring = "Fenrir Ring +1",
back = "Niht Mantle",
}
sets.midcast['Aspir'] = sets.midcast.Drain
sets.midcast['Aspir II'] = sets.midcast.Drain
sets.midcast['Drain II'] = sets.midcast.Drain
sets.midcast['Drain III'] = sets.midcast.Drain
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {
ammo="Oshasha's Treatise",
head="Nyame Helm",
body="Nyame Mail",
hands="Nyame Gauntlets",
legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}},
feet="Heath. Sollerets +2",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Schere Earring",
right_ear="Moonshade Earring",
left_ring="Cornelia's Ring",
right_ring="Epaminondas's Ring",
back={ name="Niht Mantle", augments={'Attack+12','Dark magic skill +4','"Drain" and "Aspir" potency +23','Weapon skill damage +3%',}},
}
--[[ -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Catastrophe'] = {}
sets.precast.WS['Catastrophe'].Acc = {}
sets.precast.WS['Sanguine Blade'] = {}
]]
sets.precast.WS['Torcleaver'] = {
ammo="Oshasha's Treatise",
head="Nyame Helm",
body="Nyame Mail",
hands="Nyame Gauntlets",
legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}},
feet="Heath. Sollerets +2",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear="Moonshade Earring",
left_ring="Cornelia's Ring",
right_ring="Epaminondas's Ring",
back={ name="Niht Mantle", augments={'Attack+12','Dark magic skill +4','"Drain" and "Aspir" potency +23','Weapon skill damage +3%',}},
}
sets.precast.WS['Torcleaver'].Acc = {}
sets.precast.WS['Scourge'] = {
ammo="Oshasha's Treatise",
head="Nyame Helm",
body="Nyame Mail",
hands="Nyame Gauntlets",
legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}},
feet="Heath. Sollerets +2",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Brutal Earring",
right_ear="Moonshade Earring",
left_ring="Cornelia's Ring",
right_ring="Epaminondas's Ring",
back={ name="Niht Mantle", augments={'Attack+12','Dark magic skill +4','"Drain" and "Aspir" potency +23','Weapon skill damage +3%',}},
}
sets.precast.WS['Scourge'].Acc = {}
--[[
sets.precast.WS['Savage Blade'] = {}
sets.precast.WS['Requiescat'] = {}
sets.precast.WS['Cross Reaper'] = {}
sets.precast.WS['Cross Reaper'].Acc = {}
sets.precast.WS['Quietus'] = {}
sets.precast.WS['Quietus'].Acc = {}
sets.precast.WS['Entropy'] = {}
sets.precast.WS['Entropy'].Acc = {}
sets.precast.WS['Insurgency'] = {}
sets.precast.WS['Insurgency'].Acc = {}
sets.precast.WS['Resolution'] = {}
sets.precast.WS['Resolution'].Acc = {}
]]
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {}
-- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
sets.idle = {
ammo = "Crepuscular Pebble",
head = "Jumalik Helm",
body = "Heathen's Cuirass +2",
hands = "Heathen's Gauntlets +2",
left_ring = "Defending Ring",
legs = "Heathen's Flanchard +2",
feet = "Heathen's Sollerets +2",
neck = "Loricate Torque +1",
waist = "Flume Belt",
left_ear = "Ethereal Earring",
right_ear = "Genmei Earring",
right_ring = "Chirich Ring",
back = "Atheling Mantle",
}
-- Defense sets
sets.defense.PDT = {}
sets.defense.Reraise = {
head = "Twilight Helm",
body = "Twilight Mail",
}
sets.defense.MDT = {}
-- Engaged sets
sets.engaged = {
ammo="Ginsen",
head="Flam. Zucchetto +2",
body="Sakpata's Plate",
hands="Heathen's Gauntlets +2",
legs="Sakpata's Cuisses",
feet="Sakpata's Leggings",
neck="Ganesha's Mala",
waist="Sailfi Belt +1",
left_ear="Brutal Earring",
right_ear={ name="Heathen's Earring", augments={'System: 1 ID: 1676 Val: 0','Accuracy+7','Mag. Acc.+7',}},
left_ring="Apate Ring",
right_ring="Niqmaddu Ring",
back="Atheling Mantle",
}
sets.engaged.RagAcc = {
ammo="Seething Bomblet +1",
head="Heathen's Burgeonet +2",
body="Heathen's Cuirass +2",
hands="Heathen's Gauntlets +2",
legs="Heathen's Flanchard +2",
feet="Heathen's Sollerets +2",
neck="Vim Torque +1",
waist="Ioskeha Belt",
left_ear="Dignitary's Earring",
right_ear={ name="Heathen's Earring", augments={'System: 1 ID: 1676 Val: 0','Accuracy+7','Mag. Acc.+7',}},
left_ring="Cacoethic Ring +1",
right_ring="Niqmaddu Ring",
back="Agema Cape",
}
sets.engaged.DA = {
ammo="Coiste Bodhar",
head="Sakpata's Helm",
body="Sakpata's Plate",
hands="Sakpata's Gauntlets",
legs="Sakpata's Cuisses",
feet="Sakpata's Leggings",
neck="Vim Torque +1",
waist="Ioskeha Belt",
left_ear="Brutal Earring",
right_ear="Schere Earring",
left_ring="Petrov Ring",
right_ring="Niqmaddu Ring",
back="Atheling Mantle",
}
sets.engaged.Subtle = {',}},
sub="Furtive Grip",
ammo="Crepuscular Pebble",
head={ name="Sakpata's Helm", augments={'Path: A',}},
body="Heath. Cuirass +2",
hands={ name="Sakpata's Gauntlets", augments={'Path: A',}},
legs={ name="Sakpata's Cuisses", augments={'Path: A',}},
feet={ name="Fall. Sollerets +3", augments={'Enhances "Desperate Blows" effect',}},
neck={ name="Bathy Choker +1", augments={'Path: A',}},
waist={ name="Sailfi Belt +1", augments={'Path: A',}},
left_ear="Digni. Earring",
right_ear="Assuage Earring",
left_ring="Apate Ring",
right_ring="Niqmaddu Ring",
back="Mollusca Mantle",
}
--[[
sets.engaged.RagHighAcc = {}
sets.engaged.NoStpTrait = {}
sets.engaged.Apoc = {}
sets.engaged.ApocAcc = {}
sets.engaged.ApocHighAcc = {}
]]
sets.engaged.DW = {
ammo="Ginsen",
head="Flam. Zucchetto +2",
body="Sakpata's Plate",
hands="Sakpata's Gauntlets",
legs={ name="Carmine Cuisses +1", augments={'Accuracy+20','Attack+12','"Dual Wield"+6',}},
feet="Sakpata's Leggings",
neck="Ganesha's Mala",
waist="Sailfi Belt +1",
left_ear="Brutal Earring",
right_ear="Suppanomimi",
left_ring="Cacoethic Ring +1",
right_ring="Niqmaddu Ring",
back="Atheling Mantle",
}
end
function precast(spell,abil)
--equips favorite weapon if disarmed
if player.equipment.main == "empty" or player.equipment.sub == "empty" then
equip({main="Apocalypse",
sub="Dilettante's Grip +1"})
end
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)
if spell.skill == 'Elemental Magic' then
if spell.element == world.day_element or spell.element == world.weather_element then
equip(sets.midcast['Elemental Magic'], {waist="Hachirin-No-Obi"})
end
end
end
------------------------------------------------------------------------------
--[[function job_post_midcast(spell, action, spellMap, eventArgs)
if (skillchain_elements[spell.skillchain_a]:contains(world.day_element) or skillchain_elements[spell.skillchain_b]:contains(world.day_element) or skillchain_elements[spell.skillchain_c]:contains(world.day_element))
then equip({head="Gavialis Helm"})
end
end
]]
function job_post_midcast(spell, action, spellMap, eventArgs)
if S{"Drain","Drain II","Drain III"}:contains(spell.english) and (spell.element==world.day_element or spell.element==world.weather_element) then
equip({waist="Hachirin-no-obi"})
end
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- 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.
--[[function job_buff_change(buff, gain)
if state.Buff[buff] ~= nil then
state.Buff[buff] = gain
end
if buff:lower()=='sleep' then
if gain and player.hp > 120 and player.status == "Engaged" then -- Equip Berserker's Torque When You Are Asleep
equip({neck="Berserker's Torque"})
elseif not gain then -- Take Berserker's off
handle_equipping_gear(player.status)
end
end
end
]]
--[[function customize_melee_set(meleeSet)
if state.Buff.Sleep and player.hp > 120 and player.status == "Engaged" then -- Equip Berserker's Torque When You Are Asleep
meleeSet = set_combine(meleeSet,{neck="Berserker's Torque"})
end
return meleeSet
end
]]
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
set_macro_page(2, 10)
end
Server: Ragnarok
Game: FFXI
Posts: 43
By Ragnarok.Iamarealgirl 2024-01-16 14:50:46
Ragnarok.Iamarealgirl said: »is there anyway to add a itemizer command to a jobs lua?
send_command() allows you to use any console command or input chat commands from a gs lua:
Code send_command('get <item> [bag] [count]')
send_command('@input /ws "Savage Blade" <t>')
ok, is there a way to add that to a function so it does the send command when i change to the job needing those items?
EDIT
just realized i was misunderstanding the send commands, my mind was stuck on send command was only used for keybinds lol. tyvm for the help
Valefor.Dathus
Server: Valefor
Game: FFXI
Posts: 18
By Valefor.Dathus 2024-02-07 23:08:20
How do you get Gearswap to use autobuffs from your subjob buffs? I.E: Berserk while on Corsair main.
Edit: I guess the better question is, how do I define which JAs to use in AutoBuff mode?
Server: Asura
Game: FFXI
Posts: 1
By Asura.Teleste 2024-02-29 07:25:22
This is probably a very simple question but after digging around the resources I had available, I couldn't find any reference to this at all.
What is the purpose of using the @ symbol in reference to the example below?
send_command('@input /p Doomed, please Cursna.')
send_command('input /p Doom removed.')
Does the @ symbol serve any purpose here when being put before "input"?
I see many different LUA's handling this differently and I'm just curious why I see it done both ways so often.
Thank you in advance for any info on this!
By drakefs 2024-03-01 08:14:22
How do you get Gearswap to use autobuffs from your subjob buffs? I.E: Berserk while on Corsair main.
Edit: I guess the better question is, how do I define which JAs to use in AutoBuff mode?
I would ask the person who made the Lua if possible, since "AutoBuff mode" is not a normal gearswap function.
Server: Asura
Game: FFXI
Posts: 22
By Asura.Kurdtray 2024-03-24 22:53:12
Ok how would I go about coding my lua so that while on drk if I use scarlet delirium it will equip a certain set until I take the first hit?
By drakefs 2024-03-25 13:20:50
I am not sure if GS tracks and exposes when you are hit. I would try asking in the windower discord in the gearswap support channel.
A not perfect way would be to note your HP when you use Scarlet Delirium and when your HP goes below said value to "do something". The issue is that this will require you to constantly check your HP in your LUA while Scarlet Delirium is active.
I do something similar in my RDM lua to check whether or not I need to equip my burst set or free nuke set.
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.
|
|