Ragnarok.Flippant said: »
Don't believe copying to clipboard is something available in the API.
I thought it did, but google to make sure: http://dev.windower.net/doku.php?id=lua:api:functions:start&s[]=clipboard#windowercopy_to_clipboard_str
Gearswap Support Thread |
||
|
Gearswap Support Thread
Ragnarok.Flippant said: » Don't believe copying to clipboard is something available in the API. I thought it did, but google to make sure: http://dev.windower.net/doku.php?id=lua:api:functions:start&s[]=clipboard#windowercopy_to_clipboard_str Ragnarok.Flippant said: » Because of what you describe, it'd be easier to just do it the other way around (put those in the sets and equip Moonshade when <2950 or whatever you want the threshold to be. Assuming you intend this for a Mote-based file. Code 1 2 3 4 5 6 7 8 9 moonshade_WS = S{"Blade: Ten"} function job_post_precast(spell,action,spellMap,eventArgs) if spell.type=="WeaponSkill" then if moonshade_WS:contains(spell.english) and player.tp<2950 then equip({ear1="Moonshade Earring"}) end end end Be mindful if you already have a job_post_precast function in your file and place the contents inside that one. As always you rock!!! That logic makes much better sense, and allows me to place it after lugra rule, so that moonshade will override it yes? aka lugra+1/lugra at night, then it removes the 2nd lugra since moonshade rule would then trigger? thus ending ws in Lugra+1/moonshade at night? Yes.
Valefor.Omnys said: » Ragnarok.Flippant said: » Don't believe copying to clipboard is something available in the API. I thought it did, but google to make sure: http://dev.windower.net/doku.php?id=lua:api:functions:start&s[]=clipboard#windowercopy_to_clipboard_str For whatever reason, I only expected functions in the subtables, so didn't check that page x: Replace your export.lua file: Code --Copyright (c) 2013~2016, Byrthnoth
--All rights reserved.
--Redistribution and use in source and binary forms, with or without
--modification, are permitted provided that the following conditions are met:
-- * Redistributions of source code must retain the above copyright
-- notice, this list of conditions and the following disclaimer.
-- * Redistributions in binary form must reproduce the above copyright
-- notice, this list of conditions and the following disclaimer in the
-- documentation and/or other materials provided with the distribution.
-- * Neither the name of <addon name> nor the
-- names of its contributors may be used to endorse or promote products
-- derived from this software without specific prior written permission.
--THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
--ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
--WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
--DISCLAIMED. IN NO EVENT SHALL <your name> BE LIABLE FOR ANY
--DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
--(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
--LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
--ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
--(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
--SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
function export_set(options)
local item_list = T{}
local targinv,all_items,xml,all_sets,use_job_in_filename,use_subjob_in_filename,overwrite_existing,export_slot,export_slot_name
if #options > 0 then
for _,v in ipairs(options) do
if S{'inventory','inv','i'}:contains(v:lower()) then
targinv = true
elseif v:lower() == 'all' then
all_items = true
elseif S{'xml'}:contains(v:lower()) then
xml = true
elseif S{'sets','set','s'}:contains(v:lower()) then
all_sets = true
if not user_env or not user_env.sets then
msg.addon_msg(123,'Cannot export the sets table of the current file because there is no file loaded.')
return
end
elseif v:lower() == 'mainjob' then
use_job_in_filename = true
elseif v:lower() == 'mainsubjob' then
use_subjob_in_filename = true
elseif v:lower() == 'overwrite' then
overwrite_existing = true
elseif slot_map[v:lower()] then
export_slot = slot_map[v:lower()]
export_slot_name = v:lower()
end
end
end
local buildmsg = 'Exporting '
if all_items then
buildmsg = buildmsg..'your all items'
elseif targinv then
buildmsg = buildmsg..'your current inventory'
elseif all_sets then
buildmsg = buildmsg..'your current sets table'
elseif export_slot then
buildmsg = buildmsg..'your '..export_slot_name..' to clipboard.'
else
buildmsg = buildmsg..'your currently equipped gear'
end
if xml then
buildmsg = buildmsg..' as an xml file.'
elseif not export_slot then
buildmsg = buildmsg..' as a lua file.'
end
if use_job_in_filename then
buildmsg = buildmsg..' (Naming format: Character_JOB)'
elseif use_subjob_in_filename then
buildmsg = buildmsg..' (Naming format: Character_JOB_SUB)'
end
if overwrite_existing then
buildmsg = buildmsg..' Will overwrite existing files with same name.'
end
msg.addon_msg(123,buildmsg)
if not windower.dir_exists(windower.addon_path..'data/export') then
windower.create_dir(windower.addon_path..'data/export')
end
if all_items then
for i = 0, #res.bags do
item_list:extend(get_item_list(items[res.bags[i].english:gsub(' ', ''):lower()]))
end
elseif targinv then
item_list:extend(get_item_list(items.inventory))
elseif all_sets then
-- Iterate through user_env.sets and find all the gear.
item_list,exported = unpack_names({},'L1',user_env.sets,{},{empty=true})
else
-- Default to loading the currently worn gear.
for i = 1,16 do -- ipairs will be used on item_list
if not item_list[i] then
item_list[i] = {}
item_list[i].name = empty
item_list[i].slot = toslotname(i-1)
end
end
for slot_name,gs_item_tab in pairs(table.reassign({},items.equipment)) do -- Not sure why I have to reassign it here
if gs_item_tab.slot ~= empty then
local item_tab
local bag_name = to_windower_bag_api(res.bags[gs_item_tab.bag_id].en)
if res.items[items[bag_name][gs_item_tab.slot].id] then
item_tab = items[bag_name][gs_item_tab.slot]
item_list[slot_map[slot_name]+1] = {
name = res.items[item_tab.id][language],
slot = slot_name
}
if not xml then
local augments = extdata.decode(item_tab).augments or {}
local aug_str = ''
for aug_ind,augment in pairs(augments) do
if augment ~= 'none' then aug_str = aug_str.."'"..augment:gsub("'","\\'").."'," end
end
if string.len(aug_str) > 0 then
item_list[slot_map[slot_name]+1].augments = aug_str
end
end
else
msg.addon_msg(123,'You are wearing an item that is not in the resources yet.')
end
end
end
end
if #item_list == 0 then
msg.addon_msg(123,'There is nothing to export.')
return
else
local not_empty
for i,v in pairs(item_list) do
if v.name ~= empty then
not_empty = true
break
end
end
if not not_empty then
msg.addon_msg(123,'There is nothing to export.')
return
end
end
if not windower.dir_exists(windower.addon_path..'data/export') then
windower.create_dir(windower.addon_path..'data/export')
end
local path = windower.addon_path..'data/export/'..player.name
if use_job_in_filename then
path = path..'_'..windower.ffxi.get_player().main_job
elseif use_subjob_in_filename then
path = path..'_'..windower.ffxi.get_player().main_job..'_'..windower.ffxi.get_player().sub_job
else
path = path..os.date(' %H %M %S%p %y-%d-%m')
end
if xml then
-- Export in .xml
if (not overwrite_existing) and windower.file_exists(path..'.xml') then
path = path..' '..os.clock()
end
local f = io.open(path..'.xml','w+')
f:write('<spellcast>\n <sets>\n <group name="exported">\n <set name="exported">\n')
for i,v in ipairs(item_list) do
if v.name ~= empty then
local slot = xmlify(tostring(v.slot))
local name = xmlify(tostring(v.name))
f:write(' <'..slot..'>'..name..'</'..slot..'>\n')
end
end
f:write(' </set>\n </group>\n </sets>\n</spellcast>')
f:close()
elseif export_slot then
for i,v in ipairs(item_list) do
if i-1==export_slot then
if v.augments then
--Advanced set table
windower.copy_to_clipboard(v.slot..'={name="'..v.name..'", augments={'..v.augments..'}},')
else
windower.copy_to_clipboard(v.slot..'="'..v.name..'"')
end
return
end
end
else
-- Default to exporting in .lua
if (not overwrite_existing) and windower.file_exists(path..'.lua') then
path = path..' '..os.clock()
end
local f = io.open(path..'.lua','w+')
f:write('sets.exported={\n')
for i,v in ipairs(item_list) do
if not export_slot and v.name ~= empty then
if v.augments then
--Advanced set table
f:write(' '..v.slot..'={ name="'..v.name..'", augments={'..v.augments..'}},\n')
else
f:write(' '..v.slot..'="'..v.name..'",\n')
end
end
end
f:write('}')
f:close()
end
end
function unpack_names(ret_tab,up,tab_level,unpacked_table,exported)
for i,v in pairs(tab_level) do
local flag,alt
if type(v)=='table' and i ~= 'augments' and not ret_tab[tostring(tab_level[i])] then
ret_tab[tostring(tab_level[i])] = true
unpacked_table,exported = unpack_names(ret_tab,i,v,unpacked_table,exported)
elseif i=='name' and type(v) == 'string' then
alt = up
flag = true
elseif type(v) == 'string' and v~='augment' and v~= 'augments' and v~= 'priority' then
alt = i
flag = true
end
if flag then
if not exported[v:lower()] then
unpacked_table[#unpacked_table+1] = {}
local tempname,tempslot = unlogify_unpacked_name(v)
unpacked_table[#unpacked_table].name = tempname
unpacked_table[#unpacked_table].slot = tempslot or alt
if tab_level.augments then
local aug_str = ''
for aug_ind,augment in pairs(tab_level.augments) do
if augment ~= 'none' then aug_str = aug_str.."'"..augment:gsub("'","\\'").."'," end
end
if aug_str ~= '' then unpacked_table[#unpacked_table].augments = aug_str end
end
if tab_level.augment then
local aug_str = unpacked_table[#unpacked_table].augments or ''
if tab_level.augment ~= 'none' then aug_str = aug_str.."'"..augment:gsub("'","\\'").."'," end
if aug_str ~= '' then unpacked_table[#unpacked_table].augments = aug_str end
end
exported[tempname:lower()] = true
exported[v:lower()] = true
end
end
end
return unpacked_table,exported
end
function unlogify_unpacked_name(name)
local slot
name = name:lower()
for i,v in pairs(res.items) do
if type(v) == 'table' then
if v[language..'_log']:lower() == name then
name = v[language]
local potslots = v.slots
if potslots then potslots = to_windower_api(res.slots[potslots:it()()].english) end
slot = potslots or 'item'
break
elseif v[language]:lower() == name then
name = v[language]
local potslots = v.slots
if potslots then potslots = to_windower_api(res.slots[potslots:it()()].english) end
slot = potslots or 'item'
break
end
end
end
return name,slot
end
function xmlify(phrase)
if tonumber(phrase:sub(1,1)) then phrase = 'NUM'..phrase end
return phrase --:gsub('"','"'):gsub("'","'"):gsub('<','<'):gsub('>','>'):gsub('&&','&')
end
function get_item_list(bag)
local items_in_bag = {}
-- Load the entire inventory
for _,v in pairs(bag) do
if type(v) == 'table' and v.id ~= 0 then
if res.items[v.id] then
items_in_bag[#items_in_bag+1] = {}
items_in_bag[#items_in_bag].name = res.items[v.id][language]
local potslots,slot = copy_entry(res.items[v.id].slots)
if potslots then
slot = res.slots[potslots:it()()].english:gsub(' ','_'):lower() -- Multi-lingual support requires that we add more languages to slots.lua
end
items_in_bag[#items_in_bag].slot = slot or 'item'
if not xml then
local augments = extdata.decode(v).augments or {}
local aug_str = ''
for aug_ind,augment in pairs(augments) do
if augment ~= 'none' then aug_str = aug_str.."'"..augment:gsub("'","\\'").."'," end
end
if string.len(aug_str) > 0 then
items_in_bag[#items_in_bag].augments = aug_str
end
end
else
msg.addon_msg(123,'You possess an item that is not in the resources yet.')
end
end
end
return items_in_bag
end
and use //gs export back (will accept any slot name that GS accepts). You'd get all my +'s if clicking it multiple times didn't just take it away and put it back, etc.
Thanks! No problem, thank you for suggesting such a useful function o: I will definitely be using it myself.
Having some trouble switching back to my idle set when I have weapon drawn, any suggestions?
This is best thing I could think of.
Code function job_handle_equipping_gear(playerStatus, eventArgs)
if playerStatus=='Engaged' and state.OffenseMode.value=='None' then
equip(get_idle_set())
eventArgs.handled = true
end
endI am having issue, my metsu set is not loading the left ramuh ring. I am not seeing why, it loads the set up until that ring. Please if anyone can debugg the why for me, it would greatly help.
I think GearSwap sometimes has trouble if you have two of the same named item next to each other, try putting right_ring at top of the set and left_ring at the bottom for example.
Going to give that a try, if you dont hear from me you know it worked!
I can't reproduce the issue using your GS, but maybe if you can add some specifics.
The only issue I know with rings is if you're already wearing one of the rings, Gearswap will cancel equipping both rings. I could've sworn I reported this to Byrth years ago, but I can't find it so I must've not submitted after all... I looked just now and the issue appears to be when it gets rid of "redundancies," canceling gear if it determines that same piece is currently equipped; this is because it's selecting the same exact item (by ID) for both rings, which is the real problem. I'll take another look tomorrow and see if I can think of something to fix that. But that doesn't seem to be your problem since I don't see Ramuh Ring in any other sets, so I assume you don't already have it equipped? Note that the order that you put elements in a table has no effect on anything, specifically because of the way tables work. But you could try assigning different priorities. i.e. ring1={name="Ramuh's ring",priority=16}; items with higher priority are equipped first. I assume this won't fix it. Is there a way to toggle enmity gear for cure sets kinda like magic burst sets? I have been trying to get it set up but it seems my standard cure sets overrides my enmity set
Edit: neither of my toggles are working on one lua, but work fine on the other I have Code state.MagicBurst = M(false, 'Magic Burst')
state.CureHate = M(false, 'Cure Hate')
send_command('bind !` gs c toggle MagicBurst')
send_command('bind ^` gs c toggle CureHate')
sets.magic_burst = {}
sets.cure_hate = {}
function job_post_midcast(spell, action, spellMap, eventArgs)
if spell.skill == 'Elemental Magic' then
if state.MagicBurst.value then
equip(sets.magic_burst)
end
end
if spell.skill == 'Elemental Magic' and spell.element == world.day_element or spell.element == world.weather_element then
equip ({waist="Hachirin-no-Obi"})
end
end
I also tried various forms of Code
if spell.skill == 'Healing Magic' then
if state.CureHate.value then
equip(sets.magic_burst)
end
end
Also tried swapping 'Healing Magic" for 'Cure' Cure Curaga etc It says it will toggle, but the gear is not using the correct gearsets, but for some reason the magic burst rule is identical in my sch lua and works fine. Here is a bare version of my lua You can only have one function of the same name, and you have two job_post_midcasts (one after another). You should incorporate the rules within the elseif spellMap=='Cure' then section and place it depending on the hierarchy you want. For example, if you want CureWeather to take precedence, then you should place the rules for your hate set before that.
K, so I tried this, and it still isn't equipping either set the magic burst or the cure hate set. It still says the toggle is there, but the gear isn't using the correct sets.
Feel so utterly confused here. Someone want to translate this down to idiot for me? Sorry, I thought you were only talking about getting the cure to work and you were just using the MB as a reference. You wouldn't want to put the MB rules within the spellMap=='Cure' since nukes would never be a cure (unless you're really bored on Vinipata!).
Try this. Note I put the cure hate rule after the self-target rule just in case that was what was throwing you off (so if they are both true, you'll end up in cure hate last). Code function job_post_midcast(spell, action, spellMap, eventArgs)
if spell.skill == 'Enfeebling Magic' and state.Buff.Saboteur then
equip(sets.buff.Saboteur)
elseif spell.skill == 'Enhancing Magic' and not spell.english == 'Stoneskin' then
equip(sets.midcast.EnhancingDuration)
if buffactive.composure and spell.target.type == 'PLAYER' then
equip(sets.buff.ComposureOther)
end
elseif spellMap == 'Cure' then
if spell.target.type == 'SELF' then
equip(sets.midcast.CureSelf)
end
if state.CureHate.value then
equip(sets.cure_hate)
end
if world.weather_element == 'Light' then
equip(sets.midcast.CureWeather)
end
elseif spell.skill == 'Elemental Magic' then
if state.MagicBurst.value then
equip(sets.magic_burst)
end
if spell.element == world.day_element or spell.element == world.weather_element then
equip({waist="Hachirin-no-Obi"})
end
elseif spell.skill == "Ninjutsu" then
equip(sets.midcast.Recast)
if spell.name == 'Utsusemi: Ichi' and ShadowType == 'Ni' then
if buffactive['Copy Image'] then
windower.ffxi.cancel_buff(66)
elseif buffactive['Copy Image (2)'] then
windower.ffxi.cancel_buff(444)
elseif buffactive['Copy Image (3)'] then
windower.ffxi.cancel_buff(445)
elseif buffactive['Copy Image (4+)'] then
windower.ffxi.cancel_buff(446)
end
elseif spell.name == 'Monomi: Ichi' and buffactive.Sneak and spell.target.type == 'SELF' then
windower.ffxi.cancel_buff(71)
end
end
endSo this has been frustrating me for a while and I can't seem to figure it out. Whenever I have aurorastorm up and I try to cast a -na spell or erase, it equips my cure weather set instead of my statusremoval/fast cast set. I've tried to clean up this gearswap as much as I can, but with limited knowledge I just can't seem to get it to work right. Any help is much appreciated!
Code -------------------------------------------------------------------------------------------------------------------
-- Initialization function that defines sets and variables to be used.
-------------------------------------------------------------------------------------------------------------------
-- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Mappings.lua')
include('Mote-Include.lua')
include('organizer-lib')
end
-- Setup vars that are user-independent.
function job_setup()
state.Buff['Afflatus Solace'] = buffactive['Afflatus Solace'] or false
state.Buff['Afflatus Misery'] = buffactive['Afflatus Misery'] or false
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
options.OffenseModes = {'None', 'Normal'}
options.DefenseModes = {'Normal'}
options.WeaponskillModes = {'Normal'}
options.CastingModes = {'Normal', 'Resistant', 'Dire'}
options.IdleModes = {'Normal', 'PDT'}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'PDT'}
options.MagicalDefenseModes = {'MDT'}
state.OffenseMode = 'None'
select_default_macro_book()
Cures = S{'Cure','Cure II','Cure III','Cure IV','Cure V','Cure VI'}
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Fast cast sets for spells
sets.precast.FC = {
ammo="Incantor stone",
head="Nahtirah Hat",
body="Anhur Robe",
hands="Fanatic Gloves",
legs="Lengo pants",
feet="Regal Pumps +1",
neck="Orunmila's torque",
waist="Witful Belt",
left_ear="Enchntr. Earring +1",
right_ear="Loquac. Earring",
left_ring="Prolix Ring",
right_ring="Defending Ring",
back="Swith Cape +1",
}
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
sets.precast.FC.Stoneskin = set_combine(sets.precast.FC['Enhancing Magic'], {head="Umuthi Hat"})
sets.precast.FC['Healing Magic'] = set_combine(sets.precast.FC, {legs="Ebers Pantaloons +1"})
sets.precast.FC.StatusRemoval = sets.precast.FC['Healing Magic']
sets.precast.FC.Cure = set_combine(sets.precast.FC['Healing Magic'], {
main="Queller Rod",
sub="Sors Shield",
ammo="impatiens",
head="Piety Cap",
body="Anhur Robe",
hands="Fanatic Gloves",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'System: 2 ID: 124 Val: 4','System: 2 ID: 123 Val: 14','System: 2 ID: 177 Val: 5',}},
neck="Orunmila's Torque",
waist="Witful Belt",
left_ear="Nourish. Earring +1",
right_ear="Nourish. Earring",
left_ring="Prolix Ring",
right_ring="Defending Ring",
back="Ogapepo Cape",
})
sets.precast.FC.Curaga = sets.precast.FC.Cure
-- Precast sets to enhance JAs
sets.precast.JA.Benediction = {body="Piety Briault"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {
head="Nahtirah Hat",ear1="Roundel Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",
back="Refraction Cape",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
gear.default.weaponskill_neck = "Asperity Necklace"
gear.default.weaponskill_waist = ""
sets.precast.WS = {
head="Nahtirah Hat",neck=gear.ElementalGorget,ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Refraction Cape",waist=gear.ElementalBelt,legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
sets.precast.WS['Flash Nova'] = {
head="Nahtirah Hat",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="Strendu Ring",}
-- Midcast Sets
sets.midcast.FastRecast = {
ammo="Incantor stone",
head="Nahtirah Hat",
body="Anhur Robe",
hands="Fanatic Gloves",
legs="Lengo pants",
feet="Regal Pumps +1",
neck="Orunmila's torque",
waist="Witful Belt",
left_ear="Enchntr. Earring +1",
right_ear="Loquac. Earring",
left_ring="Prolix Ring",
right_ring="Defending Ring",
back="Swith Cape +1",
}
-- Cure sets
gear.default.obi_waist = "hachirin-no-obi"
gear.default.obi_back = "Twilight Cape"
sets.midcast.CureSolace = {
main={ name="Queller Rod", augments={'Healing magic skill +15','"Cure" potency +10%','"Cure" spellcasting time -7%',}},
sub="Sors Shield",
ammo="Leisure Musk +1",
head={ name="Vanya Hood", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
body="Ebers Bliaud +1",
hands="Theo. Mitts +1",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
neck="Lasaia Pendant",
waist="Austerity Belt",
left_ear="Nourish. Earring +1",
right_ear="Novia Earring",
left_ring="Kuchekula Ring",
right_ring="Haoma's Ring",
back={ name="Mending Cape", augments={'Healing magic skill +4','Enha.mag. skill +1','Mag. Acc.+5','"Cure" potency +4%',}},
}
sets.midcast.CureWeather = {
main="Chatoyant Staff",
sub="Achaq Grip",
ammo="Leisure Musk +1",
head={ name="Vanya Hood", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
body="Ebers Bliaud +1",
hands="Theo. Mitts +1",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
neck="Lasaia Pendant",
waist="Hachirin-no-Obi",
left_ear="Nourish. Earring +1",
right_ear="Novia Earring",
left_ring="Sirona's Ring",
right_ring="Kuchekula Ring",
back={ name="Mending Cape", augments={'Healing magic skill +4','Enha.mag. skill +1','Mag. Acc.+5','"Cure" potency +4%',}},
}
sets.midcast.Cure = {
main={ name="Queller Rod", augments={'Healing magic skill +15','"Cure" potency +10%','"Cure" spellcasting time -7%',}},
sub="Sors Shield",
ammo="Leisure Musk +1",
head={ name="Vanya Hood", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
body="Ebers Bliaud +1",
hands="Theo. Mitts +1",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
neck="Lasaia Pendant",
waist="Austerity Belt",
left_ear="Nourish. Earring +1",
right_ear="Novia Earring",
left_ring="Kuchekula Ring",
right_ring="Haoma's Ring",
back={ name="Mending Cape", augments={'Healing magic skill +4','Enha.mag. skill +1','Mag. Acc.+5','"Cure" potency +4%',}},
}
sets.midcast.Curaga = {
main={ name="Queller Rod", augments={'Healing magic skill +15','System: 2 ID: 124 Val: 9','System: 2 ID: 123 Val: 6',}},
sub="Sors Shield",
ammo="Oreiad's Tathlum",
head={ name="Gende. Caubeen +1", augments={'Phys. dmg. taken -1%','"Cure" potency +6%',}},
body="Ebers bliaud +1",
hands="Theo. Mitts +1",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'System: 2 ID: 124 Val: 4','System: 2 ID: 123 Val: 14','System: 2 ID: 177 Val: 5',}},
neck="Colossus's Torque",
waist="Bishop's Sash",
left_ear="Nourish. Earring +1",
right_ear="Beatific Earring",
left_ring="Sirona's Ring",
right_ring="Haoma's Ring",
back="Tempered cape +1",
}
sets.midcast.CureMelee = {main="Tamaxchi",sub="sors Shield",ammo="kalboron stone",
head="Gendewitha Caubeen",neck="nuna gorget +1",ear1="novia Earring",ear2="beatific Earring",
body="Orison Bliaud +2",hands="yaoyotl gloves",ring1="sirona's Ring",ring2="haoma's Ring",
back="pahtli Cape",waist=gear.ElementalObi,legs="Orison Pantaloons +2",feet="Piety Duckbills +1"}
sets.midcast.Cursna = {
main="Yagrush",
sub="Sors Shield",
ammo="Incantor Stone",
head="Nahtirah Hat",
body="Ebers Bliaud +1",
hands={ name="Fanatic Gloves", augments={'MP+50','Healing magic skill +10','"Conserve MP"+7','"Fast Cast"+7',}},
legs="Ebers Pant. +1",
feet={ name="Gende. Galosh. +1", augments={'Phys. dmg. taken -1%','"Cure" spellcasting time -4%',}},
neck="Malison Medallion",
waist="Bishop's Sash",
left_ear="Healing Earring",
right_ear="Beatific Earring",
left_ring="Haoma's Ring",
right_ring="Haoma's Ring",
back={ name="Mending Cape", augments={'Healing magic skill +6','Enha.mag. skill +6','Mag. Acc.+9','"Cure" potency +2%',}},
}
sets.midcast.StatusRemoval = {
main="Yagrush",
sub="Sors Shield",
ammo="Incantor Stone",
head="Nahtirah Hat",
body="Anhur Robe",
hands={ name="Fanatic Gloves", augments={'MP+50','Healing magic skill +10','"Conserve MP"+7','"Fast Cast"+7',}},
legs="Ebers Pant. +1",
feet="Regal Pumps +1",
neck="Orunmila's Torque",
waist="Witful Belt",
left_ear="Enchntr. Earring +1",
right_ear="Loquac. Earring",
left_ring="Prolix Ring",
right_ring="Defending Ring",
back="Swith Cape +1",
}
-- 110 total Enhancing Magic Skill; caps even without Light Arts
sets.midcast['Enhancing Magic'] = {
main="Beneficus",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Vanir Battery",
head="Umuthi Hat",
body="Anhur Robe",
hands="Dynasty Mitts",
legs={ name="Piety Pantaln. +1", augments={'Enhances "Shellra V" effect',}},
feet="Orsn. Duckbills +2",
neck="Colossus's Torque",
waist="Olympus Sash",
left_ear="Andoaa Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Prolix Ring",
right_ring="defending Ring",
back="Merciful Cape",
}
sets.midcast.Stoneskin = {
head="Nahtirah Hat",neck="Orison Locket",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Dynasty Mitts",
back="Swith Cape +1",waist="Siegel Sash",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
sets.midcast.Auspice = {hands="Dynasty Mitts",feet="Orison Duckbills +2"}
sets.midcast.BarElement = {
main="Beneficus",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Vanir Battery",
head="Orison Cap +2",
body="ebers bliaud +1",
hands="Orison Mitts +2",
legs={ name="Piety Pantaln. +1", augments={'Enhances "Shellra V" effect',}},
feet="Orsn. Duckbills +2",
neck="Colossus's Torque",
waist="Olympus Sash",
left_ear="Andoaa Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Prolix Ring",
right_ring="Weather. Ring",
back="Merciful Cape",
}
sets.midcast.Regen = {main="Bolelabunga",sub="Genbu's Shield",
body="Piety Briault +1",hands="Orison Mitts +2",
legs="Theophany Pantaloons"}
sets.midcast.Protectra = {ring1="Sheltered Ring",feet="Piety Duckbills +1"}
sets.midcast.Shellra = {ring1="Sheltered Ring",legs="Piety Pantaloons +1"}
sets.midcast['Divine Magic'] = {
main="Marin Staff +1",
sub="Elder's Grip +1",
ammo="Ghastly Tathlum",
head={ name="Helios Band", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','"Occult Acumen"+10','INT+10',}},
body={ name="Witching Robe", augments={'MP+45','Mag. Acc.+14','"Mag.Atk.Bns."+14',}},
hands={ name="Helios Gloves", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','"Occult Acumen"+3','INT+9',}},
legs={ name="Lengo Pants", augments={'INT+8','Mag. Acc.+14','"Mag.Atk.Bns."+13',}},
feet={ name="Helios Boots", augments={'"Mag.Atk.Bns."+25','"Fast Cast"+5','INT+4 MND+4',}},
neck="Eddy Necklace",
waist="Othila Sash",
left_ear="Friomisi Earring",
right_ear="Hecate's Earring",
left_ring="Fenrir Ring +1",
right_ring="Fenrir Ring +1",
back="Toro Cape",
}
sets.midcast['Dark Magic'] = {main="ngqoqwanb", sub="mephitis grip",
head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Demonry Sash",legs="Bokwus Slops",feet="Piety Duckbills +1"}
-- Custom spell classes
sets.midcast.MndEnfeebles = {
main={ name="Twebuliij", augments={'MP+60','Mag. Acc.+15','MND+12',}},
sub="Mephitis Grip",
ammo="Pemphredo Tathlum",
body="Respite Cloak",
hands="Lurid Mitts",
legs={ name="Artsieq Hose", augments={'MP+30','Mag. Acc.+20','MND+7',}},
feet={ name="Medium's Sabots", augments={'MP+40','MND+6','"Conserve MP"+5','"Cure" potency +3%',}},
neck="Imbodla Necklace",
waist="Ovate Rope",
left_ear="Enchntr. Earring +1",
right_ear="Gwati Earring",
left_ring="Levia. Ring +1",
right_ring="Levia. Ring +1",
back="Ogapepo Cape",
}
sets.midcast.IntEnfeebles = {
main={ name="Twebuliij", augments={'MP+60','Mag. Acc.+15','MND+12',}},
sub="Benthos Grip",
ammo="Oreiad's Tathlum",
head={ name="Artsieq Hat", augments={'MP+30','Mag. Acc.+20','MND+7',}},
body="Vanir Cotehardie",
hands="Lurid Mitts",
legs={ name="Artsieq Hose", augments={'MP+30','Mag. Acc.+20','MND+7',}},
feet={ name="Piety Duckbills +1", augments={'Enhances "Protectra V" effect',}},
neck="Imbodla Necklace",
waist="Ovate Rope",
left_ear="Lifestorm Earring",
right_ear="Psystorm Earring",
left_ring="Levia. Ring +1",
right_ring="Levia. Ring +1",
back="Merciful Cape",
}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {main=gear.Staff.HMP,
body="Gendewitha Bliaut",hands="Serpentes Cuffs",
waist="Austerity Belt",legs="Nares Trews",feet="Chelona Boots +1"}
-- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
sets.idle = {
main="Bolelabunga",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Homiliary",
body="Respite Cloak",
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','Haste+1','CHR+3','"Mag.Atk.Bns."+13',}},
legs="Assid. Pants +1",
feet={ name="Piety Duckbills +1", augments={'Enhances "Protectra V" effect',}},
neck="Bathy Choker",
waist="Slipor Sash",
left_ear="Infused Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Paguroidea Ring",
right_ring="Sheltered Ring",
back="Kumbira Cape",
}
sets.idle.PDT = {main="owleyes", sub="Genbu's Shield",ammo="sihirik",
head="wivre hairpin",neck="twilight torque",ear1="ethereal Earring",ear2="Loquacious Earring",
body="gendewitha bliaut",hands="Serpentes Cuffs",ring1="dark Ring",ring2="dark Ring",
back="shadow mantle",waist="slipor sash",legs="Nares Trews",feet="serpentes sabots"}
sets.idle.Town = {
main="Bolelabunga",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Homiliary",
body="Respite Cloak",
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','Haste+1','CHR+3','"Mag.Atk.Bns."+13',}},
legs="Assid. Pants +1",
feet={ name="Piety Duckbills +1", augments={'Enhances "Protectra V" effect',}},
neck="Bathy Choker",
waist="Slipor Sash",
left_ear="Infused Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Paguroidea Ring",
right_ring="Sheltered Ring",
back="Kumbira Cape",
}
sets.idle.Weak = {
main="Bolelabunga",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Homiliary",
body="Respite Cloak",
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','Haste+1','CHR+3','"Mag.Atk.Bns."+13',}},
legs="Assid. Pants +1",
feet={ name="Piety Duckbills +1", augments={'Enhances "Protectra V" effect',}},
neck="Bathy Choker",
waist="Slipor Sash",
left_ear="Infused Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Paguroidea Ring",
right_ring="Sheltered Ring",
back="Kumbira Cape",
}
-- Defense sets
sets.defense.PDT = {main=gear.Staff.PDT,sub="Achaq Grip",
head="Gendewitha Caubeen",neck="Twilight Torque",
body="Gendewitha Bliaut",hands="Gendewitha Gages",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Umbra Cape",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
sets.defense.MDT = {main=gear.Staff.PDT,sub="Achaq Grip",
head="Nahtirah Hat",neck="Twilight Torque",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Shadow Ring",
back="Tuilha Cape",legs="Bokwus Slops",feet="Gendewitha Galoshes"}
sets.Kiting = {feet="Herald's Gaiters"}
sets.latent_refresh = {waist="Fucho-no-obi"}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Basic set for if no TP weapon is defined.
sets.engaged = {
head="Nahtirah Hat",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Vanir Cotehardie",hands="Dynasty Mitts",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Umbra Cape",waist="Goading Belt",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Divine Caress'] = {hands="Orison Mitts +2",back="Mending Cape"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks that are called to process player actions at specific points in time.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
function job_precast(spell, action, spellMap, eventArgs)
local map = spell_maps[spell.en]
if map == 'Cure' and player.sub_job == "SCH" and not buffactive.Aurorastorm then
add_to_chat(123,'Aurorastorm not active.')
windower.play_sound('C:\\Program Files (x86)\\Windower4\\addons\\GearSwap\\data\\wav\\Chime.wav')
end
if map == 'Curaga' and player.sub_job == "SCH" and not buffactive.Aurorastorm then
add_to_chat(123,'Aurorastorm not active.')
windower.play_sound('C:\\Program Files (x86)\\Windower4\\addons\\GearSwap\\data\\wav\\Chime.wav')
end
if spell.english == "Paralyna" and buffactive.Paralyzed then
eventArgs.handled = true
end
if spell.skill == 'Healing Magic' then
gear.default.obi_back = "Mending Cape"
else
gear.default.obi_back = "toro caoe"
end
end
--[[function job_precast(spell, action, spellMap, eventArgs)
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = true
end
end]]
function job_post_midcast(spell, action, spellMap, eventArgs)
-- Apply Divine Caress boosting items as highest priority over other gear, if applicable.
if spellMap == 'StatusRemoval' and buffactive['Divine Caress'] then
equip(sets.buff['Divine Caress'])
end
if spell.prefix == 'Cure' or 'Curaga' then
if spell.element == world.weather_element or spell.element==world.day_element then
equip(sets.midcast.CureWeather)
end
end
end
-- Return true if we handled the aftercast work. Otherwise it will fall back
-- to the general aftercast() code in Mote-Include.
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
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
end
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
return idleSet
end
-------------------------------------------------------------------------------------------------------------------
-- General hooks for other 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 state.Buff[buff] ~= nil then
state.Buff[buff] = gain
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command.
function job_update(cmdParams, eventArgs)
if cmdParams[1] == 'user' and not areas.Cities:contains(world.area) then
local needsArts =
player.sub_job:lower() == 'sch' and
not buffactive['Light Arts'] and
not buffactive['Addendum: White'] and
not buffactive['Dark Arts'] and
not buffactive['Addendum: Black']
if not buffactive['Afflatus Solace'] and not buffactive['Afflatus Misery'] then
if needsArts then
send_command('@input /ja "Afflatus Solace" <me>;wait 1.2;input /ja "Light Arts" <me>')
else
send_command('@input /ja "Afflatus Solace" <me>')
end
end
end
end
-- Handle notifications of general user state change.
function job_state_change(stateField, newValue, oldValue)
if stateField == 'OffenseMode' then
if newValue == 'Normal' then
disable('main','sub')
else
enable('main','sub')
end
elseif stateField == 'Reset' then
if state.OffenseMode == 'None' then
enable('main','sub')
end
end
end
-- Function to display the current relevant user state when doing an update.
-- Return true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
local defenseString = ''
if state.Defense.Active then
local defMode = state.Defense.PhysicalMode
if state.Defense.Type == 'Magical' then
defMode = state.Defense.MagicalMode
end
defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
end
local meleeString = ''
if state.OffenseMode == 'Normal' then
meleeString = 'Melee: Weapons locked, '
end
add_to_chat(122,'Casting ['..state.CastingMode..'], '..meleeString..'Idle ['..state.IdleMode..'], '..defenseString..
'Kiting: '..on_off_names[state.Kiting])
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
-- Default macro set/book
set_macro_page(4, 14)
endLine 514 does not actually make sense.
Code if spell.prefix == 'Cure' or 'Curaga' then First, spell.prefix is the in-game command prefix ('/magic' for spells, '/jobability' for JAs, etc.), so "spell.prefix == 'Cure'" will never be true. Secondly, your second condition is actually just asking if 'Curaga' is not nil or false (which it inherently could never be because it's a string/word). So this condition will always be true. The easiest thing to do is to use the spellMaps that Mote provides for his framework: Code if spellMap=='Cure' or spellMap=='Curaga' then Alternatively, you can use the string library that Windower provides to check if a string starts with another string: Code if spell.english:startswith('Cure') or spell.english:startswith('Curaga') thenAlso not sure if this is on purpose, but you're canceling your precast gear when you're Paralyzed and trying to Paralyna. Code -------------------------------------------------------------------------------------------------------------------
-- Initialization function that defines sets and variables to be used.
-------------------------------------------------------------------------------------------------------------------
-- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Mappings.lua')
include('Mote-Include.lua')
include('organizer-lib')
end
-- Setup vars that are user-independent.
function job_setup()
state.Buff['Afflatus Solace'] = buffactive['Afflatus Solace'] or false
state.Buff['Afflatus Misery'] = buffactive['Afflatus Misery'] or false
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
options.OffenseModes = {'None', 'Normal'}
options.DefenseModes = {'Normal'}
options.WeaponskillModes = {'Normal'}
options.CastingModes = {'Normal', 'Resistant', 'Dire'}
options.IdleModes = {'Normal', 'PDT'}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'PDT'}
options.MagicalDefenseModes = {'MDT'}
state.OffenseMode = 'None'
select_default_macro_book()
Cures = S{'Cure','Cure II','Cure III','Cure IV','Cure V','Cure VI'}
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Fast cast sets for spells
sets.precast.FC = {
ammo="Incantor stone",
head="Nahtirah Hat",
body="Anhur Robe",
hands="Fanatic Gloves",
legs="Lengo pants",
feet="Regal Pumps +1",
neck="Orunmila's torque",
waist="Witful Belt",
left_ear="Enchntr. Earring +1",
right_ear="Loquac. Earring",
left_ring="Prolix Ring",
right_ring="Defending Ring",
back="Swith Cape +1",
}
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
sets.precast.FC.Stoneskin = set_combine(sets.precast.FC['Enhancing Magic'], {head="Umuthi Hat"})
sets.precast.FC['Healing Magic'] = set_combine(sets.precast.FC, {legs="Ebers Pantaloons +1"})
sets.precast.FC.StatusRemoval = sets.precast.FC['Healing Magic']
sets.precast.FC.Cure = set_combine(sets.precast.FC['Healing Magic'], {
main="Queller Rod",
sub="Sors Shield",
ammo="impatiens",
head="Piety Cap",
body="Anhur Robe",
hands="Fanatic Gloves",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'System: 2 ID: 124 Val: 4','System: 2 ID: 123 Val: 14','System: 2 ID: 177 Val: 5',}},
neck="Orunmila's Torque",
waist="Witful Belt",
left_ear="Nourish. Earring +1",
right_ear="Nourish. Earring",
left_ring="Prolix Ring",
right_ring="Defending Ring",
back="Ogapepo Cape",
})
sets.precast.FC.Curaga = sets.precast.FC.Cure
-- Precast sets to enhance JAs
sets.precast.JA.Benediction = {body="Piety Briault"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {
head="Nahtirah Hat",ear1="Roundel Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",
back="Refraction Cape",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
gear.default.weaponskill_neck = "Asperity Necklace"
gear.default.weaponskill_waist = ""
sets.precast.WS = {
head="Nahtirah Hat",neck=gear.ElementalGorget,ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Refraction Cape",waist=gear.ElementalBelt,legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
sets.precast.WS['Flash Nova'] = {
head="Nahtirah Hat",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="Strendu Ring",}
-- Midcast Sets
sets.midcast.FastRecast = {
ammo="Incantor stone",
head="Nahtirah Hat",
body="Anhur Robe",
hands="Fanatic Gloves",
legs="Lengo pants",
feet="Regal Pumps +1",
neck="Orunmila's torque",
waist="Witful Belt",
left_ear="Enchntr. Earring +1",
right_ear="Loquac. Earring",
left_ring="Prolix Ring",
right_ring="Defending Ring",
back="Swith Cape +1",
}
-- Cure sets
gear.default.obi_waist = "hachirin-no-obi"
gear.default.obi_back = "Twilight Cape"
sets.midcast.CureSolace = {
main={ name="Queller Rod", augments={'Healing magic skill +15','"Cure" potency +10%','"Cure" spellcasting time -7%',}},
sub="Sors Shield",
ammo="Leisure Musk +1",
head={ name="Vanya Hood", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
body="Ebers Bliaud +1",
hands="Theo. Mitts +1",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
neck="Lasaia Pendant",
waist="Austerity Belt",
left_ear="Nourish. Earring +1",
right_ear="Novia Earring",
left_ring="Kuchekula Ring",
right_ring="Haoma's Ring",
back={ name="Mending Cape", augments={'Healing magic skill +4','Enha.mag. skill +1','Mag. Acc.+5','"Cure" potency +4%',}},
}
sets.midcast.CureWeather = {
main="Chatoyant Staff",
sub="Achaq Grip",
ammo="Leisure Musk +1",
head={ name="Vanya Hood", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
body="Ebers Bliaud +1",
hands="Theo. Mitts +1",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
neck="Lasaia Pendant",
waist="Hachirin-no-Obi",
left_ear="Nourish. Earring +1",
right_ear="Novia Earring",
left_ring="Sirona's Ring",
right_ring="Kuchekula Ring",
back={ name="Mending Cape", augments={'Healing magic skill +4','Enha.mag. skill +1','Mag. Acc.+5','"Cure" potency +4%',}},
}
sets.midcast.Cure = {
main={ name="Queller Rod", augments={'Healing magic skill +15','"Cure" potency +10%','"Cure" spellcasting time -7%',}},
sub="Sors Shield",
ammo="Leisure Musk +1",
head={ name="Vanya Hood", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
body="Ebers Bliaud +1",
hands="Theo. Mitts +1",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
neck="Lasaia Pendant",
waist="Austerity Belt",
left_ear="Nourish. Earring +1",
right_ear="Novia Earring",
left_ring="Kuchekula Ring",
right_ring="Haoma's Ring",
back={ name="Mending Cape", augments={'Healing magic skill +4','Enha.mag. skill +1','Mag. Acc.+5','"Cure" potency +4%',}},
}
sets.midcast.Curaga = {
main={ name="Queller Rod", augments={'Healing magic skill +15','System: 2 ID: 124 Val: 9','System: 2 ID: 123 Val: 6',}},
sub="Sors Shield",
ammo="Oreiad's Tathlum",
head={ name="Gende. Caubeen +1", augments={'Phys. dmg. taken -1%','"Cure" potency +6%',}},
body="Ebers bliaud +1",
hands="Theo. Mitts +1",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'System: 2 ID: 124 Val: 4','System: 2 ID: 123 Val: 14','System: 2 ID: 177 Val: 5',}},
neck="Colossus's Torque",
waist="Bishop's Sash",
left_ear="Nourish. Earring +1",
right_ear="Beatific Earring",
left_ring="Sirona's Ring",
right_ring="Haoma's Ring",
back="Tempered cape +1",
}
sets.midcast.CureMelee = {main="Tamaxchi",sub="sors Shield",ammo="kalboron stone",
head="Gendewitha Caubeen",neck="nuna gorget +1",ear1="novia Earring",ear2="beatific Earring",
body="Orison Bliaud +2",hands="yaoyotl gloves",ring1="sirona's Ring",ring2="haoma's Ring",
back="pahtli Cape",waist=gear.ElementalObi,legs="Orison Pantaloons +2",feet="Piety Duckbills +1"}
sets.midcast.Cursna = {
main="Yagrush",
sub="Sors Shield",
ammo="Incantor Stone",
head="Nahtirah Hat",
body="Ebers Bliaud +1",
hands={ name="Fanatic Gloves", augments={'MP+50','Healing magic skill +10','"Conserve MP"+7','"Fast Cast"+7',}},
legs="Ebers Pant. +1",
feet={ name="Gende. Galosh. +1", augments={'Phys. dmg. taken -1%','"Cure" spellcasting time -4%',}},
neck="Malison Medallion",
waist="Bishop's Sash",
left_ear="Healing Earring",
right_ear="Beatific Earring",
left_ring="Haoma's Ring",
right_ring="Haoma's Ring",
back={ name="Mending Cape", augments={'Healing magic skill +6','Enha.mag. skill +6','Mag. Acc.+9','"Cure" potency +2%',}},
}
sets.midcast.StatusRemoval = {
main="Yagrush",
sub="Sors Shield",
ammo="Incantor Stone",
head="Nahtirah Hat",
body="Anhur Robe",
hands={ name="Fanatic Gloves", augments={'MP+50','Healing magic skill +10','"Conserve MP"+7','"Fast Cast"+7',}},
legs="Ebers Pant. +1",
feet="Regal Pumps +1",
neck="Orunmila's Torque",
waist="Witful Belt",
left_ear="Enchntr. Earring +1",
right_ear="Loquac. Earring",
left_ring="Prolix Ring",
right_ring="Defending Ring",
back="Swith Cape +1",
}
-- 110 total Enhancing Magic Skill; caps even without Light Arts
sets.midcast['Enhancing Magic'] = {
main="Beneficus",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Vanir Battery",
head="Umuthi Hat",
body="Anhur Robe",
hands="Dynasty Mitts",
legs={ name="Piety Pantaln. +1", augments={'Enhances "Shellra V" effect',}},
feet="Orsn. Duckbills +2",
neck="Colossus's Torque",
waist="Olympus Sash",
left_ear="Andoaa Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Prolix Ring",
right_ring="defending Ring",
back="Merciful Cape",
}
sets.midcast.Stoneskin = {
head="Nahtirah Hat",neck="Orison Locket",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Dynasty Mitts",
back="Swith Cape +1",waist="Siegel Sash",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
sets.midcast.Auspice = {hands="Dynasty Mitts",feet="Orison Duckbills +2"}
sets.midcast.BarElement = {
main="Beneficus",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Vanir Battery",
head="Orison Cap +2",
body="ebers bliaud +1",
hands="Orison Mitts +2",
legs={ name="Piety Pantaln. +1", augments={'Enhances "Shellra V" effect',}},
feet="Orsn. Duckbills +2",
neck="Colossus's Torque",
waist="Olympus Sash",
left_ear="Andoaa Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Prolix Ring",
right_ring="Weather. Ring",
back="Merciful Cape",
}
sets.midcast.Regen = {main="Bolelabunga",sub="Genbu's Shield",
body="Piety Briault +1",hands="Orison Mitts +2",
legs="Theophany Pantaloons"}
sets.midcast.Protectra = {ring1="Sheltered Ring",feet="Piety Duckbills +1"}
sets.midcast.Shellra = {ring1="Sheltered Ring",legs="Piety Pantaloons +1"}
sets.midcast['Divine Magic'] = {
main="Marin Staff +1",
sub="Elder's Grip +1",
ammo="Ghastly Tathlum",
head={ name="Helios Band", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','"Occult Acumen"+10','INT+10',}},
body={ name="Witching Robe", augments={'MP+45','Mag. Acc.+14','"Mag.Atk.Bns."+14',}},
hands={ name="Helios Gloves", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','"Occult Acumen"+3','INT+9',}},
legs={ name="Lengo Pants", augments={'INT+8','Mag. Acc.+14','"Mag.Atk.Bns."+13',}},
feet={ name="Helios Boots", augments={'"Mag.Atk.Bns."+25','"Fast Cast"+5','INT+4 MND+4',}},
neck="Eddy Necklace",
waist="Othila Sash",
left_ear="Friomisi Earring",
right_ear="Hecate's Earring",
left_ring="Fenrir Ring +1",
right_ring="Fenrir Ring +1",
back="Toro Cape",
}
sets.midcast['Dark Magic'] = {main="ngqoqwanb", sub="mephitis grip",
head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Demonry Sash",legs="Bokwus Slops",feet="Piety Duckbills +1"}
-- Custom spell classes
sets.midcast.MndEnfeebles = {
main={ name="Twebuliij", augments={'MP+60','Mag. Acc.+15','MND+12',}},
sub="Mephitis Grip",
ammo="Pemphredo Tathlum",
body="Respite Cloak",
hands="Lurid Mitts",
legs={ name="Artsieq Hose", augments={'MP+30','Mag. Acc.+20','MND+7',}},
feet={ name="Medium's Sabots", augments={'MP+40','MND+6','"Conserve MP"+5','"Cure" potency +3%',}},
neck="Imbodla Necklace",
waist="Ovate Rope",
left_ear="Enchntr. Earring +1",
right_ear="Gwati Earring",
left_ring="Levia. Ring +1",
right_ring="Levia. Ring +1",
back="Ogapepo Cape",
}
sets.midcast.IntEnfeebles = {
main={ name="Twebuliij", augments={'MP+60','Mag. Acc.+15','MND+12',}},
sub="Benthos Grip",
ammo="Oreiad's Tathlum",
head={ name="Artsieq Hat", augments={'MP+30','Mag. Acc.+20','MND+7',}},
body="Vanir Cotehardie",
hands="Lurid Mitts",
legs={ name="Artsieq Hose", augments={'MP+30','Mag. Acc.+20','MND+7',}},
feet={ name="Piety Duckbills +1", augments={'Enhances "Protectra V" effect',}},
neck="Imbodla Necklace",
waist="Ovate Rope",
left_ear="Lifestorm Earring",
right_ear="Psystorm Earring",
left_ring="Levia. Ring +1",
right_ring="Levia. Ring +1",
back="Merciful Cape",
}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {main=gear.Staff.HMP,
body="Gendewitha Bliaut",hands="Serpentes Cuffs",
waist="Austerity Belt",legs="Nares Trews",feet="Chelona Boots +1"}
-- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
sets.idle = {
main="Bolelabunga",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Homiliary",
body="Respite Cloak",
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','Haste+1','CHR+3','"Mag.Atk.Bns."+13',}},
legs="Assid. Pants +1",
feet={ name="Piety Duckbills +1", augments={'Enhances "Protectra V" effect',}},
neck="Bathy Choker",
waist="Slipor Sash",
left_ear="Infused Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Paguroidea Ring",
right_ring="Sheltered Ring",
back="Kumbira Cape",
}
sets.idle.PDT = {main="owleyes", sub="Genbu's Shield",ammo="sihirik",
head="wivre hairpin",neck="twilight torque",ear1="ethereal Earring",ear2="Loquacious Earring",
body="gendewitha bliaut",hands="Serpentes Cuffs",ring1="dark Ring",ring2="dark Ring",
back="shadow mantle",waist="slipor sash",legs="Nares Trews",feet="serpentes sabots"}
sets.idle.Town = {
main="Bolelabunga",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Homiliary",
body="Respite Cloak",
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','Haste+1','CHR+3','"Mag.Atk.Bns."+13',}},
legs="Assid. Pants +1",
feet={ name="Piety Duckbills +1", augments={'Enhances "Protectra V" effect',}},
neck="Bathy Choker",
waist="Slipor Sash",
left_ear="Infused Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Paguroidea Ring",
right_ring="Sheltered Ring",
back="Kumbira Cape",
}
sets.idle.Weak = {
main="Bolelabunga",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Homiliary",
body="Respite Cloak",
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','Haste+1','CHR+3','"Mag.Atk.Bns."+13',}},
legs="Assid. Pants +1",
feet={ name="Piety Duckbills +1", augments={'Enhances "Protectra V" effect',}},
neck="Bathy Choker",
waist="Slipor Sash",
left_ear="Infused Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Paguroidea Ring",
right_ring="Sheltered Ring",
back="Kumbira Cape",
}
-- Defense sets
sets.defense.PDT = {main=gear.Staff.PDT,sub="Achaq Grip",
head="Gendewitha Caubeen",neck="Twilight Torque",
body="Gendewitha Bliaut",hands="Gendewitha Gages",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Umbra Cape",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
sets.defense.MDT = {main=gear.Staff.PDT,sub="Achaq Grip",
head="Nahtirah Hat",neck="Twilight Torque",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Shadow Ring",
back="Tuilha Cape",legs="Bokwus Slops",feet="Gendewitha Galoshes"}
sets.Kiting = {feet="Herald's Gaiters"}
sets.latent_refresh = {waist="Fucho-no-obi"}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Basic set for if no TP weapon is defined.
sets.engaged = {
head="Nahtirah Hat",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Vanir Cotehardie",hands="Dynasty Mitts",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Umbra Cape",waist="Goading Belt",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Divine Caress'] = {hands="Orison Mitts +2",back="Mending Cape"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks that are called to process player actions at specific points in time.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
function job_precast(spell, action, spellMap, eventArgs)
local map = spell_maps[spell.en]
if map == 'Cure' and player.sub_job == "SCH" and not buffactive.Aurorastorm then
add_to_chat(123,'Aurorastorm not active.')
windower.play_sound('C:\\Program Files (x86)\\Windower4\\addons\\GearSwap\\data\\wav\\Chime.wav')
end
if map == 'Curaga' and player.sub_job == "SCH" and not buffactive.Aurorastorm then
add_to_chat(123,'Aurorastorm not active.')
windower.play_sound('C:\\Program Files (x86)\\Windower4\\addons\\GearSwap\\data\\wav\\Chime.wav')
end
if spell.english == "Paralyna" and buffactive.Paralyzed then
eventArgs.handled = true
end
if spell.skill == 'Healing Magic' then
gear.default.obi_back = "Mending Cape"
else
gear.default.obi_back = "toro caoe"
end
end
--[[function job_precast(spell, action, spellMap, eventArgs)
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = true
end
end]]
function job_post_midcast(spell, action, spellMap, eventArgs)
-- Apply Divine Caress boosting items as highest priority over other gear, if applicable.
if spellMap == 'StatusRemoval' and buffactive['Divine Caress'] then
equip(sets.buff['Divine Caress'])
end
if spellMap == 'Cure' or spellMap == 'Curaga' then
if spell.element == world.weather_element or spell.element==world.day_element then
equip(sets.midcast.CureWeather)
end
end
end
-- Return true if we handled the aftercast work. Otherwise it will fall back
-- to the general aftercast() code in Mote-Include.
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
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
end
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
return idleSet
end
-------------------------------------------------------------------------------------------------------------------
-- General hooks for other 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 state.Buff[buff] ~= nil then
state.Buff[buff] = gain
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command.
function job_update(cmdParams, eventArgs)
if cmdParams[1] == 'user' and not areas.Cities:contains(world.area) then
local needsArts =
player.sub_job:lower() == 'sch' and
not buffactive['Light Arts'] and
not buffactive['Addendum: White'] and
not buffactive['Dark Arts'] and
not buffactive['Addendum: Black']
if not buffactive['Afflatus Solace'] and not buffactive['Afflatus Misery'] then
if needsArts then
send_command('@input /ja "Afflatus Solace" <me>;wait 1.2;input /ja "Light Arts" <me>')
else
send_command('@input /ja "Afflatus Solace" <me>')
end
end
end
end
-- Handle notifications of general user state change.
function job_state_change(stateField, newValue, oldValue)
if stateField == 'OffenseMode' then
if newValue == 'Normal' then
disable('main','sub')
else
enable('main','sub')
end
elseif stateField == 'Reset' then
if state.OffenseMode == 'None' then
enable('main','sub')
end
end
end
-- Function to display the current relevant user state when doing an update.
-- Return true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
local defenseString = ''
if state.Defense.Active then
local defMode = state.Defense.PhysicalMode
if state.Defense.Type == 'Magical' then
defMode = state.Defense.MagicalMode
end
defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
end
local meleeString = ''
if state.OffenseMode == 'Normal' then
meleeString = 'Melee: Weapons locked, '
end
add_to_chat(122,'Casting ['..state.CastingMode..'], '..meleeString..'Idle ['..state.IdleMode..'], '..defenseString..
'Kiting: '..on_off_names[state.Kiting])
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
-- Default macro set/book
set_macro_page(4, 14)
end
Try this. ***What flippant said Ragnarok.Flippant said: » Line 514 does not actually make sense. Code if spell.prefix == 'Cure' or 'Curaga' then First, spell.prefix is the in-game command prefix ('/magic' for spells, '/jobability' for JAs, etc.), so "spell.prefix == 'Cure'" will never be true. Secondly, your second condition is actually just asking if 'Curaga' is not nil or false (which it inherently could never be because it's a string/word). So this condition will always be true. The easiest thing to do is to use the spellMaps that Mote provides for his framework: Code if spellMap=='Cure' or spellMap=='Curaga' then Alternatively, you can use the string library that Windower provides to check if a string starts with another string: Code if spell.english:startswith('Cure') or spell.english:startswith('Curaga') thenAlso not sure if this is on purpose, but you're canceling your precast gear when you're Paralyzed and trying to Paralyna. Thanks for this! I'll be the first to admit I'm somewhat dumb when it comes to gearswap :P. Odin.Lygre said: » Code -------------------------------------------------------------------------------------------------------------------
-- Initialization function that defines sets and variables to be used.
-------------------------------------------------------------------------------------------------------------------
-- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Mappings.lua')
include('Mote-Include.lua')
include('organizer-lib')
end
-- Setup vars that are user-independent.
function job_setup()
state.Buff['Afflatus Solace'] = buffactive['Afflatus Solace'] or false
state.Buff['Afflatus Misery'] = buffactive['Afflatus Misery'] or false
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
options.OffenseModes = {'None', 'Normal'}
options.DefenseModes = {'Normal'}
options.WeaponskillModes = {'Normal'}
options.CastingModes = {'Normal', 'Resistant', 'Dire'}
options.IdleModes = {'Normal', 'PDT'}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'PDT'}
options.MagicalDefenseModes = {'MDT'}
state.OffenseMode = 'None'
select_default_macro_book()
Cures = S{'Cure','Cure II','Cure III','Cure IV','Cure V','Cure VI'}
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Fast cast sets for spells
sets.precast.FC = {
ammo="Incantor stone",
head="Nahtirah Hat",
body="Anhur Robe",
hands="Fanatic Gloves",
legs="Lengo pants",
feet="Regal Pumps +1",
neck="Orunmila's torque",
waist="Witful Belt",
left_ear="Enchntr. Earring +1",
right_ear="Loquac. Earring",
left_ring="Prolix Ring",
right_ring="Defending Ring",
back="Swith Cape +1",
}
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
sets.precast.FC.Stoneskin = set_combine(sets.precast.FC['Enhancing Magic'], {head="Umuthi Hat"})
sets.precast.FC['Healing Magic'] = set_combine(sets.precast.FC, {legs="Ebers Pantaloons +1"})
sets.precast.FC.StatusRemoval = sets.precast.FC['Healing Magic']
sets.precast.FC.Cure = set_combine(sets.precast.FC['Healing Magic'], {
main="Queller Rod",
sub="Sors Shield",
ammo="impatiens",
head="Piety Cap",
body="Anhur Robe",
hands="Fanatic Gloves",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'System: 2 ID: 124 Val: 4','System: 2 ID: 123 Val: 14','System: 2 ID: 177 Val: 5',}},
neck="Orunmila's Torque",
waist="Witful Belt",
left_ear="Nourish. Earring +1",
right_ear="Nourish. Earring",
left_ring="Prolix Ring",
right_ring="Defending Ring",
back="Ogapepo Cape",
})
sets.precast.FC.Curaga = sets.precast.FC.Cure
-- Precast sets to enhance JAs
sets.precast.JA.Benediction = {body="Piety Briault"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {
head="Nahtirah Hat",ear1="Roundel Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",
back="Refraction Cape",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
gear.default.weaponskill_neck = "Asperity Necklace"
gear.default.weaponskill_waist = ""
sets.precast.WS = {
head="Nahtirah Hat",neck=gear.ElementalGorget,ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Refraction Cape",waist=gear.ElementalBelt,legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
sets.precast.WS['Flash Nova'] = {
head="Nahtirah Hat",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="Strendu Ring",}
-- Midcast Sets
sets.midcast.FastRecast = {
ammo="Incantor stone",
head="Nahtirah Hat",
body="Anhur Robe",
hands="Fanatic Gloves",
legs="Lengo pants",
feet="Regal Pumps +1",
neck="Orunmila's torque",
waist="Witful Belt",
left_ear="Enchntr. Earring +1",
right_ear="Loquac. Earring",
left_ring="Prolix Ring",
right_ring="Defending Ring",
back="Swith Cape +1",
}
-- Cure sets
gear.default.obi_waist = "hachirin-no-obi"
gear.default.obi_back = "Twilight Cape"
sets.midcast.CureSolace = {
main={ name="Queller Rod", augments={'Healing magic skill +15','"Cure" potency +10%','"Cure" spellcasting time -7%',}},
sub="Sors Shield",
ammo="Leisure Musk +1",
head={ name="Vanya Hood", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
body="Ebers Bliaud +1",
hands="Theo. Mitts +1",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
neck="Lasaia Pendant",
waist="Austerity Belt",
left_ear="Nourish. Earring +1",
right_ear="Novia Earring",
left_ring="Kuchekula Ring",
right_ring="Haoma's Ring",
back={ name="Mending Cape", augments={'Healing magic skill +4','Enha.mag. skill +1','Mag. Acc.+5','"Cure" potency +4%',}},
}
sets.midcast.CureWeather = {
main="Chatoyant Staff",
sub="Achaq Grip",
ammo="Leisure Musk +1",
head={ name="Vanya Hood", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
body="Ebers Bliaud +1",
hands="Theo. Mitts +1",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
neck="Lasaia Pendant",
waist="Hachirin-no-Obi",
left_ear="Nourish. Earring +1",
right_ear="Novia Earring",
left_ring="Sirona's Ring",
right_ring="Kuchekula Ring",
back={ name="Mending Cape", augments={'Healing magic skill +4','Enha.mag. skill +1','Mag. Acc.+5','"Cure" potency +4%',}},
}
sets.midcast.Cure = {
main={ name="Queller Rod", augments={'Healing magic skill +15','"Cure" potency +10%','"Cure" spellcasting time -7%',}},
sub="Sors Shield",
ammo="Leisure Musk +1",
head={ name="Vanya Hood", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
body="Ebers Bliaud +1",
hands="Theo. Mitts +1",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
neck="Lasaia Pendant",
waist="Austerity Belt",
left_ear="Nourish. Earring +1",
right_ear="Novia Earring",
left_ring="Kuchekula Ring",
right_ring="Haoma's Ring",
back={ name="Mending Cape", augments={'Healing magic skill +4','Enha.mag. skill +1','Mag. Acc.+5','"Cure" potency +4%',}},
}
sets.midcast.Curaga = {
main={ name="Queller Rod", augments={'Healing magic skill +15','System: 2 ID: 124 Val: 9','System: 2 ID: 123 Val: 6',}},
sub="Sors Shield",
ammo="Oreiad's Tathlum",
head={ name="Gende. Caubeen +1", augments={'Phys. dmg. taken -1%','"Cure" potency +6%',}},
body="Ebers bliaud +1",
hands="Theo. Mitts +1",
legs="Ebers Pant. +1",
feet={ name="Vanya Clogs", augments={'System: 2 ID: 124 Val: 4','System: 2 ID: 123 Val: 14','System: 2 ID: 177 Val: 5',}},
neck="Colossus's Torque",
waist="Bishop's Sash",
left_ear="Nourish. Earring +1",
right_ear="Beatific Earring",
left_ring="Sirona's Ring",
right_ring="Haoma's Ring",
back="Tempered cape +1",
}
sets.midcast.CureMelee = {main="Tamaxchi",sub="sors Shield",ammo="kalboron stone",
head="Gendewitha Caubeen",neck="nuna gorget +1",ear1="novia Earring",ear2="beatific Earring",
body="Orison Bliaud +2",hands="yaoyotl gloves",ring1="sirona's Ring",ring2="haoma's Ring",
back="pahtli Cape",waist=gear.ElementalObi,legs="Orison Pantaloons +2",feet="Piety Duckbills +1"}
sets.midcast.Cursna = {
main="Yagrush",
sub="Sors Shield",
ammo="Incantor Stone",
head="Nahtirah Hat",
body="Ebers Bliaud +1",
hands={ name="Fanatic Gloves", augments={'MP+50','Healing magic skill +10','"Conserve MP"+7','"Fast Cast"+7',}},
legs="Ebers Pant. +1",
feet={ name="Gende. Galosh. +1", augments={'Phys. dmg. taken -1%','"Cure" spellcasting time -4%',}},
neck="Malison Medallion",
waist="Bishop's Sash",
left_ear="Healing Earring",
right_ear="Beatific Earring",
left_ring="Haoma's Ring",
right_ring="Haoma's Ring",
back={ name="Mending Cape", augments={'Healing magic skill +6','Enha.mag. skill +6','Mag. Acc.+9','"Cure" potency +2%',}},
}
sets.midcast.StatusRemoval = {
main="Yagrush",
sub="Sors Shield",
ammo="Incantor Stone",
head="Nahtirah Hat",
body="Anhur Robe",
hands={ name="Fanatic Gloves", augments={'MP+50','Healing magic skill +10','"Conserve MP"+7','"Fast Cast"+7',}},
legs="Ebers Pant. +1",
feet="Regal Pumps +1",
neck="Orunmila's Torque",
waist="Witful Belt",
left_ear="Enchntr. Earring +1",
right_ear="Loquac. Earring",
left_ring="Prolix Ring",
right_ring="Defending Ring",
back="Swith Cape +1",
}
-- 110 total Enhancing Magic Skill; caps even without Light Arts
sets.midcast['Enhancing Magic'] = {
main="Beneficus",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Vanir Battery",
head="Umuthi Hat",
body="Anhur Robe",
hands="Dynasty Mitts",
legs={ name="Piety Pantaln. +1", augments={'Enhances "Shellra V" effect',}},
feet="Orsn. Duckbills +2",
neck="Colossus's Torque",
waist="Olympus Sash",
left_ear="Andoaa Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Prolix Ring",
right_ring="defending Ring",
back="Merciful Cape",
}
sets.midcast.Stoneskin = {
head="Nahtirah Hat",neck="Orison Locket",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Dynasty Mitts",
back="Swith Cape +1",waist="Siegel Sash",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
sets.midcast.Auspice = {hands="Dynasty Mitts",feet="Orison Duckbills +2"}
sets.midcast.BarElement = {
main="Beneficus",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Vanir Battery",
head="Orison Cap +2",
body="ebers bliaud +1",
hands="Orison Mitts +2",
legs={ name="Piety Pantaln. +1", augments={'Enhances "Shellra V" effect',}},
feet="Orsn. Duckbills +2",
neck="Colossus's Torque",
waist="Olympus Sash",
left_ear="Andoaa Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Prolix Ring",
right_ring="Weather. Ring",
back="Merciful Cape",
}
sets.midcast.Regen = {main="Bolelabunga",sub="Genbu's Shield",
body="Piety Briault +1",hands="Orison Mitts +2",
legs="Theophany Pantaloons"}
sets.midcast.Protectra = {ring1="Sheltered Ring",feet="Piety Duckbills +1"}
sets.midcast.Shellra = {ring1="Sheltered Ring",legs="Piety Pantaloons +1"}
sets.midcast['Divine Magic'] = {
main="Marin Staff +1",
sub="Elder's Grip +1",
ammo="Ghastly Tathlum",
head={ name="Helios Band", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','"Occult Acumen"+10','INT+10',}},
body={ name="Witching Robe", augments={'MP+45','Mag. Acc.+14','"Mag.Atk.Bns."+14',}},
hands={ name="Helios Gloves", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','"Occult Acumen"+3','INT+9',}},
legs={ name="Lengo Pants", augments={'INT+8','Mag. Acc.+14','"Mag.Atk.Bns."+13',}},
feet={ name="Helios Boots", augments={'"Mag.Atk.Bns."+25','"Fast Cast"+5','INT+4 MND+4',}},
neck="Eddy Necklace",
waist="Othila Sash",
left_ear="Friomisi Earring",
right_ear="Hecate's Earring",
left_ring="Fenrir Ring +1",
right_ring="Fenrir Ring +1",
back="Toro Cape",
}
sets.midcast['Dark Magic'] = {main="ngqoqwanb", sub="mephitis grip",
head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Demonry Sash",legs="Bokwus Slops",feet="Piety Duckbills +1"}
-- Custom spell classes
sets.midcast.MndEnfeebles = {
main={ name="Twebuliij", augments={'MP+60','Mag. Acc.+15','MND+12',}},
sub="Mephitis Grip",
ammo="Pemphredo Tathlum",
body="Respite Cloak",
hands="Lurid Mitts",
legs={ name="Artsieq Hose", augments={'MP+30','Mag. Acc.+20','MND+7',}},
feet={ name="Medium's Sabots", augments={'MP+40','MND+6','"Conserve MP"+5','"Cure" potency +3%',}},
neck="Imbodla Necklace",
waist="Ovate Rope",
left_ear="Enchntr. Earring +1",
right_ear="Gwati Earring",
left_ring="Levia. Ring +1",
right_ring="Levia. Ring +1",
back="Ogapepo Cape",
}
sets.midcast.IntEnfeebles = {
main={ name="Twebuliij", augments={'MP+60','Mag. Acc.+15','MND+12',}},
sub="Benthos Grip",
ammo="Oreiad's Tathlum",
head={ name="Artsieq Hat", augments={'MP+30','Mag. Acc.+20','MND+7',}},
body="Vanir Cotehardie",
hands="Lurid Mitts",
legs={ name="Artsieq Hose", augments={'MP+30','Mag. Acc.+20','MND+7',}},
feet={ name="Piety Duckbills +1", augments={'Enhances "Protectra V" effect',}},
neck="Imbodla Necklace",
waist="Ovate Rope",
left_ear="Lifestorm Earring",
right_ear="Psystorm Earring",
left_ring="Levia. Ring +1",
right_ring="Levia. Ring +1",
back="Merciful Cape",
}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {main=gear.Staff.HMP,
body="Gendewitha Bliaut",hands="Serpentes Cuffs",
waist="Austerity Belt",legs="Nares Trews",feet="Chelona Boots +1"}
-- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
sets.idle = {
main="Bolelabunga",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Homiliary",
body="Respite Cloak",
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','Haste+1','CHR+3','"Mag.Atk.Bns."+13',}},
legs="Assid. Pants +1",
feet={ name="Piety Duckbills +1", augments={'Enhances "Protectra V" effect',}},
neck="Bathy Choker",
waist="Slipor Sash",
left_ear="Infused Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Paguroidea Ring",
right_ring="Sheltered Ring",
back="Kumbira Cape",
}
sets.idle.PDT = {main="owleyes", sub="Genbu's Shield",ammo="sihirik",
head="wivre hairpin",neck="twilight torque",ear1="ethereal Earring",ear2="Loquacious Earring",
body="gendewitha bliaut",hands="Serpentes Cuffs",ring1="dark Ring",ring2="dark Ring",
back="shadow mantle",waist="slipor sash",legs="Nares Trews",feet="serpentes sabots"}
sets.idle.Town = {
main="Bolelabunga",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Homiliary",
body="Respite Cloak",
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','Haste+1','CHR+3','"Mag.Atk.Bns."+13',}},
legs="Assid. Pants +1",
feet={ name="Piety Duckbills +1", augments={'Enhances "Protectra V" effect',}},
neck="Bathy Choker",
waist="Slipor Sash",
left_ear="Infused Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Paguroidea Ring",
right_ring="Sheltered Ring",
back="Kumbira Cape",
}
sets.idle.Weak = {
main="Bolelabunga",
sub={ name="Genbu's Shield", augments={'"Cure" potency +3%','"Cure" spellcasting time -8%','Wind resistance+9',}},
ammo="Homiliary",
body="Respite Cloak",
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','Haste+1','CHR+3','"Mag.Atk.Bns."+13',}},
legs="Assid. Pants +1",
feet={ name="Piety Duckbills +1", augments={'Enhances "Protectra V" effect',}},
neck="Bathy Choker",
waist="Slipor Sash",
left_ear="Infused Earring",
right_ear={ name="Moonshade Earring", augments={'MP+25','Latent effect: "Refresh"+1',}},
left_ring="Paguroidea Ring",
right_ring="Sheltered Ring",
back="Kumbira Cape",
}
-- Defense sets
sets.defense.PDT = {main=gear.Staff.PDT,sub="Achaq Grip",
head="Gendewitha Caubeen",neck="Twilight Torque",
body="Gendewitha Bliaut",hands="Gendewitha Gages",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Umbra Cape",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
sets.defense.MDT = {main=gear.Staff.PDT,sub="Achaq Grip",
head="Nahtirah Hat",neck="Twilight Torque",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Shadow Ring",
back="Tuilha Cape",legs="Bokwus Slops",feet="Gendewitha Galoshes"}
sets.Kiting = {feet="Herald's Gaiters"}
sets.latent_refresh = {waist="Fucho-no-obi"}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Basic set for if no TP weapon is defined.
sets.engaged = {
head="Nahtirah Hat",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Vanir Cotehardie",hands="Dynasty Mitts",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Umbra Cape",waist="Goading Belt",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Divine Caress'] = {hands="Orison Mitts +2",back="Mending Cape"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks that are called to process player actions at specific points in time.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
function job_precast(spell, action, spellMap, eventArgs)
local map = spell_maps[spell.en]
if map == 'Cure' and player.sub_job == "SCH" and not buffactive.Aurorastorm then
add_to_chat(123,'Aurorastorm not active.')
windower.play_sound('C:\\Program Files (x86)\\Windower4\\addons\\GearSwap\\data\\wav\\Chime.wav')
end
if map == 'Curaga' and player.sub_job == "SCH" and not buffactive.Aurorastorm then
add_to_chat(123,'Aurorastorm not active.')
windower.play_sound('C:\\Program Files (x86)\\Windower4\\addons\\GearSwap\\data\\wav\\Chime.wav')
end
if spell.english == "Paralyna" and buffactive.Paralyzed then
eventArgs.handled = true
end
if spell.skill == 'Healing Magic' then
gear.default.obi_back = "Mending Cape"
else
gear.default.obi_back = "toro caoe"
end
end
--[[function job_precast(spell, action, spellMap, eventArgs)
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = true
end
end]]
function job_post_midcast(spell, action, spellMap, eventArgs)
-- Apply Divine Caress boosting items as highest priority over other gear, if applicable.
if spellMap == 'StatusRemoval' and buffactive['Divine Caress'] then
equip(sets.buff['Divine Caress'])
end
if spellMap == 'Cure' or spellMap == 'Curaga' then
if spell.element == world.weather_element or spell.element==world.day_element then
equip(sets.midcast.CureWeather)
end
end
end
-- Return true if we handled the aftercast work. Otherwise it will fall back
-- to the general aftercast() code in Mote-Include.
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
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
end
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
return idleSet
end
-------------------------------------------------------------------------------------------------------------------
-- General hooks for other 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 state.Buff[buff] ~= nil then
state.Buff[buff] = gain
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command.
function job_update(cmdParams, eventArgs)
if cmdParams[1] == 'user' and not areas.Cities:contains(world.area) then
local needsArts =
player.sub_job:lower() == 'sch' and
not buffactive['Light Arts'] and
not buffactive['Addendum: White'] and
not buffactive['Dark Arts'] and
not buffactive['Addendum: Black']
if not buffactive['Afflatus Solace'] and not buffactive['Afflatus Misery'] then
if needsArts then
send_command('@input /ja "Afflatus Solace" <me>;wait 1.2;input /ja "Light Arts" <me>')
else
send_command('@input /ja "Afflatus Solace" <me>')
end
end
end
end
-- Handle notifications of general user state change.
function job_state_change(stateField, newValue, oldValue)
if stateField == 'OffenseMode' then
if newValue == 'Normal' then
disable('main','sub')
else
enable('main','sub')
end
elseif stateField == 'Reset' then
if state.OffenseMode == 'None' then
enable('main','sub')
end
end
end
-- Function to display the current relevant user state when doing an update.
-- Return true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
local defenseString = ''
if state.Defense.Active then
local defMode = state.Defense.PhysicalMode
if state.Defense.Type == 'Magical' then
defMode = state.Defense.MagicalMode
end
defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
end
local meleeString = ''
if state.OffenseMode == 'Normal' then
meleeString = 'Melee: Weapons locked, '
end
add_to_chat(122,'Casting ['..state.CastingMode..'], '..meleeString..'Idle ['..state.IdleMode..'], '..defenseString..
'Kiting: '..on_off_names[state.Kiting])
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
-- Default macro set/book
set_macro_page(4, 14)
end
Try this. ***What flippant said Thanks, you and Flippant solved it for me! Can someone link an up to date blm lua so I can see how to add all the things I need to add.
One preferably as uncomplicated as possible. as long as it has a burst mode, free nuke mode, death mode, and obi rules + reive adoulin neck rule Hello~
Getting this error whenever equip new ambuscade gear, anyone have the same issue? Lua runtime error: gearswap/equip_proccesing.lua:268: attempt to index field '?' (a nil value) Hellow~
I'm making a gs file for my nin and have a question: I'm doing the rules for ninjutsu, is there a way to include them all instead of writing them one at a time? Phoenix.Habar said: » Hello~ Getting this error whenever equip new ambuscade gear, anyone have the same issue? Lua runtime error: gearswap/equip_proccesing.lua:268: attempt to index field '?' (a nil value) If anyone has the same issue or similar, seems that some people don't get they're windower resources automatically updated. You can download them in the links below: https://github.com/Windower/Resources/tree/master/lua http://resources.windower.net/live/lua/ Valefor.Sehachan said: » Hellow~ I'm making a gs file for my nin and have a question: I'm doing the rules for ninjutsu, is there a way to include them all instead of writing them one at a time? if spell.skill == 'Ninjutsu' then equip(setnamehere) end Can anyone let me know the command to see in the chat log when you change gears. I.e
Fastcast Cure Midcast Cure Idle Do I need to write it into the file or its it a simple command that needs to be toggled? //gs showswaps
Same command to remove it. Ok that's works but its a bit much. Still shows the correct gear is changing, so thank you :P
|
||
|
All FFXI content and images © 2002-2025 SQUARE ENIX CO., LTD. FINAL
FANTASY is a registered trademark of Square Enix Co., Ltd.
|
||