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.
Bismarck.Mitchel
Offline
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 end I 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 end So 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) end 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') then Also 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') then Also 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! Offline
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? Asura.Mirlikovir
Offline
//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-2024 SQUARE ENIX CO., LTD. FINAL
FANTASY is a registered trademark of Square Enix Co., Ltd.
|