Gearswap Support Thread

Language: JP EN DE FR
2010-09-08
New Items
users online
Forum » Windower » Support » Gearswap Support Thread
Gearswap Support Thread
First Page 2 3 ... 110 111 112 ... 182 183 184
 Valefor.Omnys
Offline
Server: Valefor
Game: FFXI
user: omnys
Posts: 1759
By Valefor.Omnys 2016-09-29 10:43:16
Link | Quote | Reply
 
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
 Asura.Azagarth
Offline
Server: Asura
Game: FFXI
user: Azagarth
Posts: 1326
By Asura.Azagarth 2016-09-29 11:44:21
Link | Quote | Reply
 
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?
 Ragnarok.Flippant
Offline
Server: Ragnarok
Game: FFXI
user: Enceladus
Posts: 660
By Ragnarok.Flippant 2016-09-29 13:51:54
Link | Quote | Reply
 
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("'","&apos;"):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).
[+]
 Valefor.Omnys
Offline
Server: Valefor
Game: FFXI
user: omnys
Posts: 1759
By Valefor.Omnys 2016-09-29 14:15:49
Link | Quote | Reply
 
You'd get all my +'s if clicking it multiple times didn't just take it away and put it back, etc.

Thanks!
 Ragnarok.Flippant
Offline
Server: Ragnarok
Game: FFXI
user: Enceladus
Posts: 660
By Ragnarok.Flippant 2016-09-29 14:25:35
Link | Quote | Reply
 
No problem, thank you for suggesting such a useful function o: I will definitely be using it myself.
 Bismarck.Mitchel
Offline
Server: Bismarck
Game: FFXI
Posts: 153
By Bismarck.Mitchel 2016-10-02 04:59:35
Link | Quote | Reply
 
Having some trouble switching back to my idle set when I have weapon drawn, any suggestions?
 Ragnarok.Flippant
Offline
Server: Ragnarok
Game: FFXI
user: Enceladus
Posts: 660
By Ragnarok.Flippant 2016-10-02 10:17:03
Link | Quote | Reply
 
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
[+]
 Asura.Azagarth
Offline
Server: Asura
Game: FFXI
user: Azagarth
Posts: 1326
By Asura.Azagarth 2016-10-04 01:56:35
Link | Quote | Reply
 
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.
 Asura.Brennski
Offline
Server: Asura
Game: FFXI
user: Ogri
Posts: 127
By Asura.Brennski 2016-10-04 02:18:04
Link | Quote | Reply
 
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.
 Asura.Azagarth
Offline
Server: Asura
Game: FFXI
user: Azagarth
Posts: 1326
By Asura.Azagarth 2016-10-04 02:19:56
Link | Quote | Reply
 
Going to give that a try, if you dont hear from me you know it worked!
 Ragnarok.Flippant
Offline
Server: Ragnarok
Game: FFXI
user: Enceladus
Posts: 660
By Ragnarok.Flippant 2016-10-04 03:25:33
Link | Quote | Reply
 
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.
 Odin.Psycooo
Offline
Server: Odin
Game: FFXI
user: Psycooo
Posts: 42
By Odin.Psycooo 2016-10-07 21:00:35
Link | Quote | Reply
 
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
 Ragnarok.Flippant
Offline
Server: Ragnarok
Game: FFXI
user: Enceladus
Posts: 660
By Ragnarok.Flippant 2016-10-07 22:20:42
Link | Quote | Reply
 
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.
 Odin.Psycooo
Offline
Server: Odin
Game: FFXI
user: Psycooo
Posts: 42
By Odin.Psycooo 2016-10-08 00:55:42
Link | Quote | Reply
 
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?
 Ragnarok.Flippant
Offline
Server: Ragnarok
Game: FFXI
user: Enceladus
Posts: 660
By Ragnarok.Flippant 2016-10-08 01:30:46
Link | Quote | Reply
 
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
 Odin.Psycooo
Offline
Server: Odin
Game: FFXI
user: Psycooo
Posts: 42
By Odin.Psycooo 2016-10-08 01:38:38
Link | Quote | Reply
 
k, both sets work thank you.
 Asura.Clack
Offline
Server: Asura
Game: FFXI
user: cocl
Posts: 9
By Asura.Clack 2016-10-10 05:03:20
Link | Quote | Reply
 
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
 Ragnarok.Flippant
Offline
Server: Ragnarok
Game: FFXI
user: Enceladus
Posts: 660
By Ragnarok.Flippant 2016-10-10 13:16:37
Link | Quote | Reply
 
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.
 Odin.Lygre
Offline
Server: Odin
Game: FFXI
user: Dylaudid
Posts: 89
By Odin.Lygre 2016-10-10 13:20:10
Link | Quote | Reply
 
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
 Asura.Clack
Offline
Server: Asura
Game: FFXI
user: cocl
Posts: 9
By Asura.Clack 2016-10-10 17:56:06
Link | Quote | Reply
 
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
By Calinari 2016-10-10 19:46:03
Link | Quote | Reply
 
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
 Phoenix.Habar
Offline
Server: Phoenix
Game: FFXI
user: habarnam
Posts: 19
By Phoenix.Habar 2016-10-15 12:59:04
Link | Quote | Reply
 
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)
 Valefor.Sehachan
Guide Maker
Offline
Server: Valefor
Game: FFXI
user: Seha
Posts: 24219
By Valefor.Sehachan 2016-10-15 14:08:07
Link | Quote | Reply
 
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
Offline
Server: Phoenix
Game: FFXI
user: habarnam
Posts: 19
By Phoenix.Habar 2016-10-15 16:06:55
Link | Quote | Reply
 
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.Prothescar
Guide Master
Offline
Server: Valefor
Game: FFXI
Posts: 19647
By Valefor.Prothescar 2016-10-15 18:45:37
Link | Quote | Reply
 
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
 Asura.Bloodlusty
Offline
Server: Asura
Game: FFXI
Posts: 81
By Asura.Bloodlusty 2016-10-16 07:16:28
Link | Quote | Reply
 
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
Server: Asura
Game: FFXI
user: eoz41
Posts: 3
By Asura.Mirlikovir 2016-10-16 07:20:02
Link | Quote | Reply
 
//gs showswaps

Same command to remove it.
 Asura.Bloodlusty
Offline
Server: Asura
Game: FFXI
Posts: 81
By Asura.Bloodlusty 2016-10-16 07:32:02
Link | Quote | Reply
 
Ok that's works but its a bit much. Still shows the correct gear is changing, so thank you :P
First Page 2 3 ... 110 111 112 ... 182 183 184
Log in to post.