Gearswap Support Thread

Eorzea Time
 
 
 
言語: JP EN FR DE
日本語版のFFXIVPRO利用したい場合は、上記の"JP"を設定して、又はjp.ffxivpro.comを直接に利用してもいいです
users online
フォーラム » Windower » Support » Gearswap Support Thread
Gearswap Support Thread
First Page 2 3 ... 165 166 167 ... 183 184 185
Offline
Posts: 40
By quelthos 2022-02-16 22:23:07  
I am having issue with bard lua,
Already tried Arislan, Sam and kinematics bard luas.
all having the same problem
//gs showswaps is showing that precast, midcast and aftercast all gets swapped in 1 second, resulting in aftercast gear getting equipped before the song finishes singing.

Please help

Code
-------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job.  Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------

--[[
    Custom commands:
    
    ExtraSongsMode may take one of three values: None, Dummy, FullLength
    
    You can set these via the standard 'set' and 'cycle' self-commands.  EG:
    gs c cycle ExtraSongsMode
    gs c set ExtraSongsMode Dummy
    
    The Dummy state will equip the bonus song instrument and ensure non-duration gear is equipped.
    The FullLength state will simply equip the bonus song instrument on top of standard gear.
    
    
    Simple macro to cast a dummy Daurdabla song:
    /console gs c set ExtraSongsMode Dummy
    /ma "Shining Fantasia" <me>
    
    To use a Terpander rather than Daurdabla, set the info.ExtraSongInstrument variable to
    'Terpander', and info.ExtraSongs to 1.
--]]

-- Initialization function for this job file.
function get_sets()
    mote_include_version = 2
    
    -- Load and initialize the include file.
    include('Mote-Include.lua')
end


-- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
function job_setup()
    state.ExtraSongsMode = M{['description']='Extra Songs', 'None', 'Dummy'}

    state.Buff['Pianissimo'] = buffactive['pianissimo'] or false

    -- For tracking current recast timers via the Timers plugin.
    custom_timers = {}
end

-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------

-- Setup vars that are user-dependent.  Can override this function in a sidecar file.
function user_setup()
    state.OffenseMode:options('None', 'DualWield')
    state.CastingMode:options('Normal', 'Resistant')
    state.IdleMode:options('Normal', 'Refresh')
	
	state.WeaponSet = M{['description']='Weapon Set', 'Kali', 'Naegling', 'Tauret'}


    send_command('bind f10 gs c cycle idlemode')
    send_command('bind @r gs c cycle WeaponSet')

    -- Adjust this if using the Terpander (new +song instrument)
    info.ExtraSongInstrument = 'Daurdabla'
    -- How many extra songs we can keep from Daurdabla/Terpander
    info.ExtraSongs = 2
    
    -- Set this to false if you don't want to use custom timers.
    state.UseCustomTimers = M(true, 'Use Custom Timers')
    
    -- Additional local binds
    send_command('bind ^` gs c cycle ExtraSongsMode')
    send_command('bind !` input /ma "Chocobo Mazurka" <me>')

    select_default_macro_book()
end


-- Called when this job file is unloaded (eg: job change)
function user_unload()
    send_command('unbind ^`')
    send_command('unbind !`')
    send_command('unbind f10')
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 = {    
	head="Nahtirah Hat",
    body="Inyanga Jubbah +2",
    hands="Gende. Gages +1",
    legs="Aya. Cosciales +2",
    feet="Inyan. Crackows +2",
    neck="Baetyl Pendant",
    waist="Embla Sash",
    left_ear="Loquac. Earring",
    right_ear="Etiolation Earring",
    left_ring="Kishar Ring",
    right_ring="Weather. Ring",
    back={ name="Fi Follet Cape +1", augments={'Path: A',}},
}

    sets.precast.FC.Cure = set_combine(sets.precast.FC, {
	
	})

    sets.precast.FC.Stoneskin = set_combine(sets.precast.FC, {
	
	})

    sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})

    sets.precast.FC.BardSong = set_combine(sets.precast.FC, {
	main="Kali",
	range="Gjallarhorn",
        head="Fili Calot +1", --14
		})

    sets.precast.FC.Daurdabla = set_combine(sets.precast.FC.BardSong, {range=info.ExtraSongInstrument})
        
    
    -- Precast sets to enhance JAs
    
    sets.precast.JA.Nightingale = {feet="Bihu Slippers"}
    sets.precast.JA.Troubadour = {body="Bihu Justaucorps"}
    sets.precast.JA['Soul Voice'] = {legs="Bihu Cannions"}

    -- Waltz set (chr and vit)
    sets.precast.Waltz = {
	}
    
       
    -- Weaponskill sets
    -- Default set for any weaponskill that isn't any more specifically defined
	    sets.precast.WS = {

    range={ name="Linos", augments={'Attack+16','Weapon skill damage +3%','Quadruple Attack +2',}},
    head={ name="Blistering Sallet +1", augments={'Path: A',}},
    body="Ayanmo Corazza +2",
    hands="Aya. Manopolas +2",
    legs={ name="Zoar Subligar +1", augments={'Path: A',}},
    feet="Aya. Gambieras +2",
    neck="Caro Necklace",
    waist={ name="Sailfi Belt +1", augments={'Path: A',}},
    left_ear="Regal Earring",
    right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
    left_ring="Epaminondas's Ring",
    right_ring={ name="Metamor. Ring +1", augments={'Path: A',}},
    back={ name="Intarabus's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%',}},
		}
    
    -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
    sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS)

    sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS)

    sets.precast.WS['Mordant Rime'] = set_combine(sets.precast.WS)
    
    
    -- Midcast Sets

    -- General set for recast times.
    sets.midcast.FastRecast = {
	}
        
    -- Gear to enhance certain classes of songs.  No instruments added here since Gjallarhorn is being used.
    sets.midcast.Ballad = {legs="Fili Rhingrave +1"}
    sets.midcast.Lullaby = {hands="Brioso Cuffs +3"}
    sets.midcast.Madrigal = {head="Fili Calot +1"}
	sets.midcast.Prelude = {}
    sets.midcast.March = {hands="Fili Manchettes +1"}
	sets.midcast.HonorMarch = {hands="Fili Manchettes +1",range="Marsyas"}
    sets.midcast.Minuet = {body="Fili Hongreline +1"}
    sets.midcast.Minne = {}
    sets.midcast.Paeon = {head="Brioso Roundlet +3"}
    sets.midcast.Carol = {hands="Mousai Gages"}
    sets.midcast["Sentinel's Scherzo"] = {feet="Fili Cothurnes +1"}
    sets.midcast['Magic Finale'] = {legs="Fili Rhingrave +1"}
    sets.midcast.Mazurka = {}


    -- For song buffs (duration and AF3 set bonus)
    sets.midcast.SongEffect = {		
		main="Kali",
        --main="Carnwenhan",
        range="Gjallarhorn",
        head="Fili Calot +1",
        body="Fili Hongreline +1",
        hands="Fili Manchettes +1",
        legs="Inyanga Shalwar +2",
        feet="Brioso Slippers +2",
        neck="Mnbw. Whistle +1",
	}

    -- For song defbuffs (duration primary, accuracy secondary)
    sets.midcast.SongDebuff = {
	main="Kali",
        --main="Carnwenhan",
    sub="Ammurapi Shield",
    range="Gjallarhorn",
    head="C. Palug Crown",
    body="Inyanga Jubbah +2",
    hands="Inyan. Dastanas +2",
    legs={ name="Chironic Hose", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Enmity-4','Mag. Acc.+15','"Mag.Atk.Bns."+10',}},
    feet="Inyan. Crackows +2",
        neck="Mnbw. Whistle +1",
        ear1="Digni. Earring",
        ear2="Regal Earring",
        ring1={name="Stikini Ring +1", bag="wardrobe2"},
        ring2="Metamor. Ring +1",
        waist="Acuity Belt +1",
        back="Aurist's Cape +1",
		}

    -- For song defbuffs (accuracy primary, duration secondary)
    sets.midcast.ResistantSongDebuff = set_combine(sets.midcast.SongDebuff, {})

    -- Song-specific recast reduction
    sets.midcast.SongRecast = {ear2="Loquacious Earring",ring1="Kishar Ring",legs="Fili Rhingrave +1"}
	
    --sets.midcast.Daurdabla = set_combine(sets.midcast.FastRecast, sets.midcast.SongRecast, {range=info.ExtraSongInstrument})

    -- Cast spell with normal gear, except using Daurdabla instead
    sets.midcast.Daurdabla = {range=info.ExtraSongInstrument}

    -- Dummy song with Daurdabla; minimize duration to make it easy to overwrite.
    sets.midcast.DaurdablaDummy = {range=info.ExtraSongInstrument}

    -- Other general spells and classes.
    sets.midcast.Cure = {
        main="Daybreak", --30
        sub="Ammurapi Shield",
    head={ name="Vanya Hood", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
    body={ name="Kaykaus Bliaut", augments={'MP+60','"Cure" potency +5%','"Conserve MP"+6',}},
    hands={ name="Kaykaus Cuffs +1", augments={'MP+80','MND+12','Mag. Acc.+20',}},
        legs="Chironic Hose", --11/(+2)/(-6)
    feet={ name="Vanya Clogs", augments={'"Cure" potency +5%','"Cure" spellcasting time -15%','"Conserve MP"+6',}},
        neck="Incanter's Torque",
    waist="Luminary Sash",
    left_ear="Mendi. Earring",
    right_ear="Meili Earring",
    left_ring="Haoma's Ring",
    right_ring="Sirona's Ring",
	back="Aurist's Cape +1"
		}
        
    sets.midcast.Curaga = sets.midcast.Cure
        
    sets.midcast.Stoneskin = {
        }
        
    sets.midcast.Cursna = {
        }

    
    -- Sets to return to when not performing an action.
    
    -- Resting sets
    sets.resting = {
	}
    
    
    -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
    sets.idle = {
		--main="Kali",
        --main="Carnwenhan",
        --range="Gjallarhorn",
        --head="Fili Calot +1",
        --body="Fili Hongreline +1",
        --hands="Fili Manchettes +1",
        --legs="Inyanga Shalwar +2",
        --feet="Brioso Slippers +2",
        --neck="Mnbw. Whistle +1",

    head="Aya. Zucchetto +2",
    body="Bunzi's Robe",
    hands="Bunzi's Gloves",
    legs="Aya. Cosciales +2",
    feet="Aya. Gambieras +2",
    neck={ name="Loricate Torque +1", augments={'Path: A',}},
    waist="Flume Belt",
	left_ear="Genmei Earring",
    right_ear="Etiolation Earring",
    left_ring="Defending Ring",
    right_ring={ name="Gelatinous Ring +1", augments={'Path: A',}},
    back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Phys. dmg. taken-10%',}},
		}

    sets.idle.Refresh = {
    head="Inyanga Tiara +2",
    body="Bunzi's Robe",
    hands="Bunzi's Gloves",
    legs="Inyanga Shalwar +2",
    feet="Inyanga Crackows +2",
    neck={ name="Loricate Torque +1", augments={'Path: A',}},
    waist="Flume Belt",
	left_ear="Genmei Earring",
    right_ear="Etiolation Earring",
    ring1={name="Stikini Ring +1", bag="wardrobe2"},
    ring2={name="Stikini Ring +1", bag="wardrobe3"},
    back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Phys. dmg. taken-10%',}},
		}

    sets.idle.Town = {
	}
    
    sets.idle.Weak = {
	}
    
    
    -- Defense sets

    sets.defense.PDT = {}

    sets.defense.MDT = {}

    sets.Kiting = {}

    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 = {
    range={ name="Linos", augments={'Accuracy+15','"Store TP"+3','DEX+7',}},
    head="Aya. Zucchetto +2",
    body="Ayanmo Corazza +2",
    hands="Bunzi's Gloves",
    legs={ name="Zoar Subligar +1", augments={'Path: A',}},
    feet="Aya. Gambieras +2",
    neck="Combatant's Torque",
    waist={ name="Kentarch Belt +1", augments={'Path: A',}},
    left_ear="Cessance Earring",
    right_ear="Telos Earring",
        ring1={name="Chirich Ring +1", bag="wardrobe2"},
        ring2={name="Chirich Ring +1", bag="wardrobe3"},
    back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Phys. dmg. taken-10%',}},
		}

    -- Set if dual-wielding
    sets.engaged.DualWield = set_combine(sets.engaged, {
        ear1="Eabani Earring", --4
        waist="Reiki Yotai", --7
		})
		
	--sets.Kali = {main="Kali", sub="Genmei Shield"}
    --sets.Twashtar = {main="Twashtar", sub="Taming Sari"}
    --sets.Tauret = {main="Tauret", sub="Ternion Dagger +1"}
    --sets.Naegling = {main="Naegling", sub="Demers. Degen +1",}--sub="Centovente"}

		
end


-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------

-- 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)
    if spell.type == 'BardSong' then
        -- Auto-Pianissimo
        if ((spell.target.type == 'PLAYER' and not spell.target.charmed) or (spell.target.type == 'NPC' and spell.target.in_party)) and
            not state.Buff['Pianissimo'] then
            
            local spell_recasts = windower.ffxi.get_spell_recasts()
            if spell_recasts[spell.recast_id] < 2 then
                send_command('@input /ja "Pianissimo" <me>; wait 1.5; input /ma "'..spell.name..'" '..spell.target.name)
                eventArgs.cancel = true
                return
            end
        end
    end
end

-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_midcast(spell, action, spellMap, eventArgs)
    if spell.action_type == 'Magic' then
        if spell.type == 'BardSong' then
            -- layer general gear on first, then let default handler add song-specific gear.
            local generalClass = get_song_class(spell)
            if generalClass and sets.midcast[generalClass] then
                equip(sets.midcast[generalClass])
            end
        end
    end
end

function job_post_midcast(spell, action, spellMap, eventArgs)
    if spell.type == 'BardSong' then
        if state.ExtraSongsMode.value == 'FullLength' then
            equip(sets.midcast.Daurdabla)
        end
		state.ExtraSongsMode:reset()
    end
end

-- Set eventArgs.handled to true if we don't want automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
    if spell.type == 'BardSong' and not spell.interrupted then
        if spell.target and spell.target.type == 'SELF' then
            adjust_timers(spell, spellMap)
        end
    end
end

-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------

-- Handle notifications of general user state change.
function job_state_change(stateField, newValue, oldValue)
    if stateField == 'Offense Mode' then
        if newValue == 'Normal' then
            disable('main','sub','ammo')
        else
            enable('main','sub','ammo')
        end
    end
end

-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------




-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
    if player.mpp < 51 then
        idleSet = set_combine(idleSet, sets.latent_refresh)
    end
    
    return idleSet
end


-- Function to display the current relevant user state when doing an update.
function display_current_job_state(eventArgs)
    display_current_caster_state()
    eventArgs.handled = true
end

-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------

-- Determine the custom class to use for the given song.
function get_song_class(spell)
    -- Can't use spell.targets:contains() because this is being pulled from resources
    if set.contains(spell.targets, 'Enemy') then
        if state.CastingMode.value == 'Resistant' then
            return 'ResistantSongDebuff'
        else
            return 'SongDebuff'
        end
    elseif state.ExtraSongsMode.value == 'Dummy' then
        return 'DaurdablaDummy'
    else
        return 'SongEffect'
    end
end


-- Function to create custom buff-remaining timers with the Timers plugin,
-- keeping only the actual valid songs rather than spamming the default
-- buff remaining timers.
function adjust_timers(spell, spellMap)
    if state.UseCustomTimers.value == false then
        return
    end
    
    local current_time = os.time()
    
    -- custom_timers contains a table of song names, with the os time when they
    -- will expire.
    
    -- Eliminate songs that have already expired from our local list.
    local temp_timer_list = {}
    for song_name,expires in pairs(custom_timers) do
        if expires < current_time then
            temp_timer_list[song_name] = true
        end
    end
    for song_name,expires in pairs(temp_timer_list) do
        custom_timers[song_name] = nil
    end
    
    local dur = calculate_duration(spell.name, spellMap)
    if custom_timers[spell.name] then
        -- Songs always overwrite themselves now, unless the new song has
        -- less duration than the old one (ie: old one was NT version, new
        -- one has less duration than what's remaining).
        
        -- If new song will outlast the one in our list, replace it.
        if custom_timers[spell.name] < (current_time + dur) then
            send_command('timers delete "'..spell.name..'"')
            custom_timers[spell.name] = current_time + dur
            send_command('timers create "'..spell.name..'" '..dur..' down')
        end
    else
        -- Figure out how many songs we can maintain.
        local maxsongs = 2
        if player.equipment.range == info.ExtraSongInstrument then
            maxsongs = maxsongs + info.ExtraSongs
        end
        if buffactive['Clarion Call'] then
            maxsongs = maxsongs + 1
        end
        -- If we have more songs active than is currently apparent, we can still overwrite
        -- them while they're active, even if not using appropriate gear bonuses (ie: Daur).
        if maxsongs < table.length(custom_timers) then
            maxsongs = table.length(custom_timers)
        end
        
        -- Create or update new song timers.
        if table.length(custom_timers) < maxsongs then
            custom_timers[spell.name] = current_time + dur
            send_command('timers create "'..spell.name..'" '..dur..' down')
        else
            local rep,repsong
            for song_name,expires in pairs(custom_timers) do
                if current_time + dur > expires then
                    if not rep or rep > expires then
                        rep = expires
                        repsong = song_name
                    end
                end
            end
            if repsong then
                custom_timers[repsong] = nil
                send_command('timers delete "'..repsong..'"')
                custom_timers[spell.name] = current_time + dur
                send_command('timers create "'..spell.name..'" '..dur..' down')
            end
        end
    end
end

-- Function to calculate the duration of a song based on the equipment used to cast it.
-- Called from adjust_timers(), which is only called on aftercast().
function calculate_duration(spellName, spellMap)
    local mult = 1
    if player.equipment.range == 'Daurdabla' then mult = mult + 0.3 end -- change to 0.25 with 90 Daur
    if player.equipment.range == "Gjallarhorn" then mult = mult + 0.4 end -- change to 0.3 with 95 Gjall
	if player.equipment.range == "Marsyas" then mult = mult + 0.5 end -- 
    
    if player.equipment.main == "Carnwenhan" then mult = mult + 0.1 end -- 0.1 for 75, 0.4 for 95, 0.5 for 99/119
    if player.equipment.main == "Legato Dagger" then mult = mult + 0.05 end
    if player.equipment.main == "Kali" then mult = mult + 0.05 end
    if player.equipment.sub == "Kali" then mult = mult + 0.05 end
    if player.equipment.sub == "Legato Dagger" then mult = mult + 0.05 end
    if player.equipment.neck == "Aoidos' Matinee" then mult = mult + 0.1 end
	if player.equipment.neck == "Moonbow Whistle" then mult = mult + 0.2 end
	if player.equipment.neck == "Mnbw. Whistle +1" then mult = mult + 0.3 end
    if player.equipment.body == "Fili Hongreline +1" then mult = mult + 0.12 end
    if player.equipment.legs == "Inyanga Shalwar +1" then mult = mult + 0.15 end
	if player.equipment.legs == "Inyanga Shalwar +2" then mult = mult + 0.17 end
    if player.equipment.feet == "Brioso Slippers" then mult = mult + 0.1 end
    if player.equipment.feet == "Brioso Slippers +1" then mult = mult + 0.11 end
	if player.equipment.feet == "Brioso Slippers +2" then mult = mult + 0.13 end
	if player.equipment.feet == "Brioso Slippers +3" then mult = mult + 0.15 end
    
    if spellMap == 'Paeon' and player.equipment.head == "Brioso Roundlet" then mult = mult + 0.1 end
	if spellMap == 'Paeon' and player.equipment.head == "Brioso Roundlet +3" then mult = mult + 0.2 end
	if spellMap == 'Paeon' and player.equipment.head == "Brioso Roundlet +2" then mult = mult + 0.1 end
    if spellMap == 'Paeon' and player.equipment.head == "Brioso Roundlet +1" then mult = mult + 0.1 end
    if spellMap == 'Madrigal' and player.equipment.head == "Fili Calot +1" then mult = mult + 0.1 end
    if spellMap == 'Minuet' and player.equipment.body == "Fili Hongreline +1" then mult = mult + 0.1 end
    if spellMap == 'March' and player.equipment.hands == 'Fili Manchettes +1' then mult = mult + 0.1 end
    if spellMap == 'Ballad' and player.equipment.legs == "Fili Rhingrave +1" then mult = mult + 0.1 end
	if spellMap == 'Lullaby' and player.equipment.hands == 'Brioso Cuffs +1' then mult = mult + 0.1 end
	if spellMap == 'Lullaby' and player.equipment.hands == 'Brioso Cuffs +2' then mult = mult + 0.1 end
	if spellMap == 'Lullaby' and player.equipment.hands == 'Brioso Cuffs +3' then mult = mult + 0.2 end
    if spellname == "Sentinel's Scherzo" and player.equipment.feet == "Fili Cothurnes +1" then mult = mult + 0.1 end
    
    if buffactive.Troubadour then
        mult = mult*2
    end
    if spellName == "Sentinel's Scherzo" then
        if buffactive['Soul Voice'] then
            mult = mult*2
        elseif buffactive['Marcato'] then
            mult = mult*1.5
        end
    end
    
    local totalDuration = math.floor(mult*120)

    return totalDuration
end



-- Function to reset timers.
function reset_timers()
    for i,v in pairs(custom_timers) do
        send_command('timers delete "'..i..'"')
    end
    custom_timers = {}
end


-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
    set_macro_page(3, 19)
end

function job_state_change(stateField, newValue, oldValue)

    equip(sets[state.WeaponSet.current])

end

function job_handle_equipping_gear(playerStatus, eventArgs)    		
	if state.IdleMode.value == "Refresh" then
	equip(sets.idle.Refresh)
	elseif state.IdleMode.value == "Normal" then
	equip(sets.idle)
	end	
end

function job_update(cmdParams, eventArgs)
    handle_equipping_gear(player.status)
end

windower.raw_register_event('zone change',reset_timers)
windower.raw_register_event('logout',reset_timers)
 Cerberus.Shadowmeld
Offline
サーバ: Cerberus
Game: FFXI
Posts: 1809
By Cerberus.Shadowmeld 2022-02-16 23:58:33  
Hazard a guess you’re usindpg fast follow addon?

If so you have to do some commands to fix it. I don’t know what they are
Offline
Posts: 40
By quelthos 2022-02-17 01:54:55  
hmmm FastFollow the add on has an impact on bard lua?
What is the connection?
Offline
Posts: 40
By quelthos 2022-02-17 02:45:41  
Cerberus.Shadowmeld said: »
Hazard a guess you’re usindpg fast follow addon?

If so you have to do some commands to fix it. I don’t know what they are

omg I disabled fastfollow addon and now the lua works correctly, how odd!.

Thank you for your help!

though I wish I can continue to use FastFollow addon, its a pretty good one.
 Cerberus.Shadowmeld
Offline
サーバ: Cerberus
Game: FFXI
Posts: 1809
By Cerberus.Shadowmeld 2022-02-17 07:17:53  
You can. You just have to two commands. I just can never remember what they are
 Bahamut.Mizuharu
Offline
サーバ: Bahamut
Game: FFXI
user: Mizuharu
Posts: 1988
By Bahamut.Mizuharu 2022-02-17 17:32:06  
I'm about to tear my hair out and I know it's gonna be over something simple, but help please? Can't get this to load. Keeps saying 402 '}' expected to close '{' at line 386 near sets
 
Offline
Posts:
By 2022-02-17 19:09:23
 Undelete | Edit  | Link | 引用 | 返事
 
Post deleted by User.
 Lakshmi.Byrth
VIP
Offline
サーバ: Lakshmi
Game: FFXI
user: Byrthnoth
Posts: 6197
By Lakshmi.Byrth 2022-02-17 19:17:31  
This was specifically the problem:
Code
hands = 'Tali'ah gages +1',


Three single quotes. You need to use double quotes around pieces of gear that have apostrophes (single quotes) in them.
 Bahamut.Mizuharu
Offline
サーバ: Bahamut
Game: FFXI
user: Mizuharu
Posts: 1988
By Bahamut.Mizuharu 2022-02-17 19:28:11  
Ok, thank you!

I changed it around, but still not able to load it rip
 Ramuh.Austar
Offline
サーバ: Ramuh
Game: FFXI
user: Austar
Posts: 10481
By Ramuh.Austar 2022-02-17 19:41:03  
Seems to not show any errors when I just change the quotations. Did you happen to change something else?
Code
--[[
 
    Originally Created By: Faloun
    Programmers: Arrchie, Kuroganashi, Byrne, Tuna
    Testers:Arrchie, Kuroganashi, Haxetc, Patb, Whirlin, Petsmart
    Contributors: Xilkk, Byrne, Blackhalo714
 
    ASCII Art Generator: <a href="http://www.network-science.de/ascii/" rel="nofollow">http://www.network-science.de/ascii/</a>
     
]]
-- Initialization function for this job file.
-- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
function get_sets()
    mote_include_version = 2

    -- Load and initialize the include file.
    include("Mote-Include.lua")
end

function user_setup()
    --[[ 
    Alt-F10 - Toggles Kiting Mode.
    ]]
    --[[
        F9 - Cycle Offense Mode (the offensive half of all 'hybrid' melee modes).
         
        These are for when you are fighting with or without Pet
        When you are IDLE and Pet is ENGAGED that is handled by the Idle Sets
    ]]
    state.OffenseMode:options("MasterPet", "Master", "Trusts")

    --[[
        Ctrl-F9 - Cycle Hybrid Mode (the defensive half of all 'hybrid' melee modes).
         
        Used when you are Engaged with Pet
        Used when you are Idle and Pet is Engaged
    ]]
    state.HybridMode:options("Normal", "Acc", "TP", "DT", "Regen", "Ranged")

    --[[
        Alt-F12 - Turns off any emergency mode
         
        Ctrl-F10 - Cycle type of Physical Defense Mode in use.
        F10 - Activate emergency Physical Defense Mode. Replaces Magical Defense Mode, if that was active.
    ]]
    state.PhysicalDefenseMode:options("PetDT", "MasterDT")

    --[[
        Alt-F12 - Turns off any emergency mode
 
        F11 - Activate emergency Magical Defense Mode. Replaces Physical Defense Mode, if that was active.
    ]]
    state.MagicalDefenseMode:options("PetMDT")

    --[[ IDLE Mode Notes:
 
        F12 - Update currently equipped gear, and report current status.
        Ctrl-F12 - Cycle Idle Mode.
         
        Will automatically set IdleMode to Idle when Pet becomes Engaged and you are Idle
    ]]
    state.IdleMode:options("Idle", "MasterDT")

    --Various Cycles for the different types of PetModes
    state.PetStyleCycleTank = M {"NORMAL", "DD", "MAGIC", "SPAM"}
    state.PetStyleCycleMage = M {"NORMAL", "HEAL", "SUPPORT", "MB", "DD"}
    state.PetStyleCycleDD = M {"NORMAL", "BONE", "SPAM", "OD", "ODACC"}

    --The actual Pet Mode and Pet Style cycles
    --Default Mode is Tank
    state.PetModeCycle = M {"TANK", "DD", "MAGE"}
    --Default Pet Cycle is Tank
    state.PetStyleCycle = state.PetStyleCycleTank

    --Toggles
    --[[
        Alt + E will turn on or off Auto Maneuver
    ]]
    state.AutoMan = M(false, "Auto Maneuver")

    --[[
        //gs c toggle autodeploy
    ]]
    state.AutoDeploy = M(false, "Auto Deploy")

    --[[
        Alt + D will turn on or off Lock Pet DT
        (Note this will block all gearswapping when active)
    ]]
    state.LockPetDT = M(false, "Lock Pet DT")

    --[[
        Alt + (tilda) will turn on or off the Lock Weapon
    ]]
    state.LockWeapon = M(false, "Lock Weapon")

    --[[
        //gs c toggle setftp
    ]]
    state.SetFTP = M(false, "Set FTP")

    --[[
        This will hide the entire HUB
        //gs c hub all
    ]]
    state.textHideHUB = M(false, "Hide HUB")

    --[[
        This will hide the Mode on the HUB
        //gs c hub mode
    ]]
    state.textHideMode = M(false, "Hide Mode")

    --[[
        This will hide the State on the HUB
        //gs c hub state
    ]]
    state.textHideState = M(false, "Hide State")

    --[[
        This will hide the Options on the HUB
        //gs c hub options
    ]]
    state.textHideOptions = M(false, "Hide Options")

    --[[
        This will toggle the HUB lite mode
        //gs c hub lite
    ]]
    state.useLightMode = M(false, "Toggles Lite mode")

    --[[
        This will toggle the default Keybinds set up for any changeable command on the window
        //gs c hub keybinds
    ]]
    state.Keybinds = M(false, "Hide Keybinds")

    --[[ 
        This will toggle the CP Mode 
        //gs c toggle CP 
    ]]
    state.CP = M(false, "CP")
    CP_CAPE = "Aptitude Mantle +1"

    --[[
        Enter the slots you would lock based on a custom set up.
        Can be used in situation like Salvage where you don't want
        certain pieces to change.
 
        //gs c toggle customgearlock
        ]]
    state.CustomGearLock = M(false, "Custom Gear Lock")
    --Example customGearLock = T{"head", "waist"}
    customGearLock = T {}

    send_command("bind !f7 gs c cycle PetModeCycle")
    send_command("bind ^f7 gs c cycleback PetModeCycle")
    send_command("bind !f8 gs c cycle PetStyleCycle")
    send_command("bind ^f8 gs c cycleback PetStyleCycle")
    send_command("bind !e gs c toggle AutoMan")
    send_command("bind !d gs c toggle LockPetDT")
    send_command("bind !f6 gs c predict")
    send_command("bind ^` gs c toggle LockWeapon")
    send_command("bind home gs c toggle setftp")
    send_command("bind PAGEUP gs c toggle autodeploy")
    send_command("bind PAGEDOWN gs c hide keybinds")
    send_command("bind end gs c toggle CP")
    send_command("bind = gs c clear")

    select_default_macro_book()

    -- Adjust the X (horizontal) and Y (vertical) position here to adjust the window
    pos_x = 0
    pos_y = 0
    setupTextWindow(pos_x, pos_y)
end

function file_unload()
    send_command("unbind !f7")
    send_command("unbind ^f7")
    send_command("unbind !f8")
    send_command("unbind ^f8")
    send_command("unbind !e")
    send_command("unbind !d")
    send_command("unbind !f6")
    send_command("unbind ^`")
    send_command("unbind home")
    send_command("unbind PAGEUP")
    send_command("unbind PAGEDOWN")
    send_command("unbind end")
    send_command("unbind =")
end

function job_setup()
    include("PUP-LIB.lua")
end

function init_gear_sets()
    --Table of Contents
    ---Gear Variables
    ---Master Only Sets
    ---Hybrid Only Sets
    ---Pet Only Sets
    ---Misc Sets
    --[[
        This section is best ultilized for defining gear that is used among multiple sets
        You can simply use or ignore the below
    ]]
    Animators = {}
    Animators.Range = "Animator P"
    Animators.Melee = "Animator P"

    --Adjust to your reforge level
    --Sets up a Key, Value Pair
    Artifact_Foire = {}
    Artifact_Foire.Head_PRegen = "Foire Taj +1"
    Artifact_Foire.Body_WSD_PTank = "Foire Tobe +1"
    Artifact_Foire.Hands_Mane_Overload = "Foire Dastanas +1"
    Artifact_Foire.Legs_PCure = "Foire Churidars"
    Artifact_Foire.Feet_Repair_PMagic = "Foire Babouches +1"

    Relic_Pitre = {}
    Relic_Pitre.Head_PRegen = "Pitre Taj +1" --Enhances Optimization
    Relic_Pitre.Body_PTP = "Pitre Tobe" --Enhances Overdrive
    Relic_Pitre.Hands_WSD = "Pitre Dastanas" --Enhances Fine-Tuning
    Relic_Pitre.Legs_PMagic = "Pitre Churidars" --Enhances Ventriloquy
    Relic_Pitre.Feet_PMagic = "Pitre Babouches +1" --Role Reversal

    Empy_Karagoz = {}
    Empy_Karagoz.Head_PTPBonus = "Karagoz Capello"
    Empy_Karagoz.Body_Overload = "Karagoz Farsetto"
    Empy_Karagoz.Hands = "Karagoz Guanti"
    Empy_Karagoz.Legs_Combat = "Karagoz Pantaloni +1"
    Empy_Karagoz.Feet_Tatical = "Karagoz Scarpe +1"

    Visucius = {}
    Visucius.PetDT = {
        name = "Visucius's Mantle",
        augments = {
            "Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20",
            "Accuracy+20 Attack+20",
            "Pet: Accuracy+4 Pet: Rng. Acc.+4",
            'Pet: "Regen"+10',
            "Pet: Damage taken -5%"
        }
    }
    Visucius.PetMagic = {
        name = "Visucius's Mantle",
        augments = {
            "Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20",
            "Accuracy+20 Attack+20",
            "Pet: Accuracy+4 Pet: Rng. Acc.+4",
            'Pet: "Regen"+10',
            "Pet: Damage taken -5%"
        }
    }
    --This section is best utilized for Master Sets
    --[[
        Will be activated when Pet is not active, otherwise refer to sets.idle.Pet
    ]]
    sets.TH = {
        head = "White rarab cap +1",
        waist = "Chaac belt"
    }
    sets.idle = {
        head = Artifact_Foire.Head_PRegen,
        neck = "Sanctity Necklace",
        ear1 = "Etiolation earring",
        ear2 = "Handler's earring +1",
        body = "Hizamaru haramaki +1",
        hands = "Rao kote",
        ring1 = "Sheltered ring",
        ring2 = "Paguroidea ring",
        back = "Kumbira cape",
        legs = "Assiduity pants +1",
        feet = "Heremes' sandals"
    }
    -------------------------------------Fastcast
    sets.precast.FC = {
        head = "Herculean helm",
        neck = "Orunmila's torque",
        ear1 = "Etiolation earring",
        ear2 = "Loquacious earring",
        body = "Taeon tabard",
        hands = "Thamas gloves",
        ring1 = "Prolix ring",
        ring2 = "Veneficium ring",
        back = "Swith cape",
        legs = "Orvail pants +1",
        feet = "Chelona boots"
    }

    -------------------------------------Midcast
    sets.midcast = {} --Can be left empty

    sets.midcast.FastRecast = {}

    -------------------------------------Kiting
    sets.Kiting = {feet = "Hermes' Sandals"}

    -------------------------------------JA
    sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck = "Magoraga Beads", body = "Passion Jacket"})

    -- Precast sets to enhance JAs
    sets.precast.JA = {} -- Can be left empty

    sets.precast.JA["Tactical Switch"] = {feet = Empy_Karagoz.Feet_Tatical}

    sets.precast.JA["Ventriloquy"] = {legs = Relic_Pitre.Legs_PMagic}

    sets.precast.JA["Role Reversal"] = {feet = Relic_Pitre.Feet_PMagic}

    sets.precast.JA["Overdrive"] = {body = Relic_Pitre.Body_PTP}

    sets.precast.JA["Repair"] = {
        ammo = "Automat. Oil +3",
        body = Artifact_Foire.Body_WSD_PTank,
        hands = "Rao kote",
        feet = Artifact_Foire.Feet_Repair_PMagic,
        ear1 = "Guignol earring"
    }

    sets.precast.JA["Maintenance"] = set_combine(sets.precast.JA["Repair"], {})

    sets.precast.JA.Maneuver = {
        neck = "Buffoon's Collar",
        body = "Karagoz Farsetto",
        hands = Artifact_Foire.Hands_Mane_Overload,
        back = "Visucius's Mantle",
        ear1 = "Burana Earring"
    }

    sets.precast.JA["Activate"] = {back = "Visucius's Mantle"}

    sets.precast.JA["Deus Ex Automata"] = sets.precast.JA["Activate"]

    sets.precast.JA["Provoke"] = {}

    --Waltz set (chr and vit)
    sets.precast.Waltz = {
        head = "Uk'uxkaj cap",
        neck = "Unmoving collar +1",
        ear1 = "Roundel earring",
        body = "Passion jacket",
        hands = "Tali'ah gages +1",
        back = "Kumbira cape",
        waist = "Chaax belt",
        legs = "Hizamaru hizayoroi +2",
        feet = Relic_Pitre.Feet_PMagic
    }

    -------------------------------------WS
    -- Weaponskill sets
    -- Default set for any weaponskill that isn't any more specifically defined
    sets.precast.WS = {
        head = {name = "Herculean Helm", augments = {"Accuracy+25", '"Triple Atk."+3', "AGI+4"}},
        body = "Hiza. Haramaki +1",
        hands = "Tali'ah Gages +1",
        legs = "Hiza. Hizayoroi +2",
        feet = {name = "Herculean Boots", augments = {"Accuracy+17", '"Triple Atk."+3', "Attack+9"}},
        neck = "Fotia Gorget",
        waist = "Fotia Belt",
        left_ear = "Brutal Earring",
        right_ear = {name = "Moonshade Earring", augments = {"Accuracy+4", "TP Bonus +250"}},
        left_ring = "Petrov Ring",
        right_ring = "Spiral Ring",
        back = {
            name = "Visucius's Mantle",
            augments = {"STR+20", "Accuracy+20 Attack+20", "Accuracy+10", '"Dbl.Atk."+10'}
        }
    }

    -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
    sets.precast.WS["Stringing Pummel"] =
        set_combine(
        sets.precast.WS,
        {
            ring2 = "Begrudging ring"
        }
    )

    sets.precast.WS["Victory Smite"] =
        set_combine(
        sets.precast.WS,
        {
            waist = "Grunfeld Rope",
            legs = {name = "Samnuha tights", augments = {"STR+8", "DEX+9", '"Dbl.Atk."+3', '"Triple Atk."+2'}},
            ring2 = "Begrudging ring"
        }
    )
    sets.precast.WS["Shijin Spiral"] =
        set_combine(
        sets.precast.WS,
        {
            ear2 = "Cessance earring",
            ring2 = "Epona's ring",
            hands = {name = "Herculean gloves", augments = {"Accuracy+10", "Attack+6", '"Triple Atk."+3'}}
        }
    )

    sets.precast.WS["Howling Fist"] = set_combine(sets.precast.WS, {})

    -------------------------------------Idle
    --[[
        Pet is not active
        Idle Mode = MasterDT
    ]]
    sets.idle.MasterDT = {
        head = Artifact_Foire.Head_PRegen,
        neck = "Sanctity Necklace",
        ear1 = "Etiolation earring",
        ear2 = "Handler's earring +1",
        body = "Hizamaru haramaki +1",
        hands = "Rao kote",
        ring1 = "Sheltered ring",
        ring2 = "Paguroidea ring",
        back = "Kumbira cape",
        legs = "Assiduity pants +1",
        feet = "Heremes' sandals"
    }

    -------------------------------------Engaged
    --[[
        Offense Mode = Master
        Hybrid Mode = Normal
    ]]
    sets.engaged.Master = {
        head = "Hizamaru Somen +1",
        body = "Tali'ah Manteel +2",
        hands = {name = "Herculean Gloves", augments = {"Accuracy+30", '"Triple Atk."+3', "Attack+6"}},
        legs = {
            name = "Herculean Trousers",
            augments = {"Accuracy+25 Attack+25", '"Triple Atk."+4', "STR+4", "Attack+15"}
        },
        feet = {name = "Herculean Boots", augments = {"Accuracy+17", '"Triple Atk."+3', "Attack+9"}},
        neck = "Asperity Necklace",
        waist = "Windbuffet Belt",
        left_ear = "Brutal Earring",
        right_ear = "Cessance Earring",
        left_ring = "Petrov Ring",
        right_ring = "Epona's Ring",
        back = {
            name = "Visucius's Mantle",
            augments = {"DEX+20", "Accuracy+20 Attack+20", "Accuracy+10", "Pet: Haste+10"}
        }
    }

    -------------------------------------Acc
    --[[
        Offense Mode = Master
        Hybrid Mode = Acc
    ]]
    sets.engaged.Master.Acc = {
        head = "Hizamaru Somen +1",
        body = "Tali'ah Manteel +2",
        hands = {name = "Herculean Gloves", augments = {"Accuracy+30", '"Triple Atk."+3', "Attack+6"}},
        legs = "Tali'ah Sera. +1",
        feet = {name = "Herculean Boots", augments = {"Accuracy+17", '"Triple Atk."+3', "Attack+9"}},
        neck = "Empath Necklace",
        waist = "Grunfeld Rope",
        left_ear = "Brutal Earring",
        right_ear = "Cessance Earring",
        left_ring = "Petrov Ring",
        right_ring = "Epona's Ring",
        back = {
            name = "Visucius's Mantle",
            augments = {"DEX+20", "Accuracy+20 Attack+20", "Accuracy+10", "Pet: Haste+10"}
        }
    }

    -------------------------------------TP
    --[[
        Offense Mode = Master
        Hybrid Mode = TP
    ]]
    sets.engaged.Master.TP = {}

    -------------------------------------DT
    --[[
        Offense Mode = Master
        Hybrid Mode = DT
    ]]
    sets.engaged.Master.DT = {
        head = "Hizamaru Somen +1",
        body = "Hiza. Haramaki +1",
        hands = "Kurys Gloves",
        legs = {
            name = "Herculean Trousers",
            augments = {"Accuracy+25 Attack+25", '"Triple Atk."+4', "STR+4", "Attack+15"}
        },
        feet = "Tali'ah Crackows +1",
        neck = "Loricate Torque",
        waist = "Grunfeld Rope",
        left_ear = "Flashward Earring",
        right_ear = "Etiolation Earring",
        left_ring = "Warden's Ring",
        right_ring = "Patricius Ring",
        back = "Solemnity Cape"
    }

    --[[
        These sets are designed to be a hybrid of player and pet gear for when you are
        fighting along side your pet. Basically gear used here should benefit both the player
        and the pet.
    ]]
    --[[
        Offense Mode = MasterPet
        Hybrid Mode = Normal
    ]]
    sets.engaged.MasterPet = {
        main = {name = "Ohtas", augments = {"Accuracy+70", "Pet: Accuracy+70", "Pet: Haste+10%"}},
        range = "Animator P",
        head = "Tali'ah Turban +1",
        body = "Tali'ah Manteel +2",
        hands = {name = "Herculean Gloves", augments = {"Accuracy+30", '"Triple Atk."+3', "Attack+6"}},
        legs = {
            name = "Herculean Trousers",
            augments = {"Accuracy+25 Attack+25", '"Triple Atk."+4', "STR+4", "Attack+15"}
        },
        feet = "Tali'ah Crackows +1",
        neck = "Empath Necklace",
        waist = "Incarnation Sash",
        left_ear = "Brutal Earring",
        right_ear = "Cessance Earring",
        left_ring = "Petrov Ring",
        right_ring = "Epona's Ring",
        back = {
            name = "Visucius's Mantle",
            augments = {"DEX+20", "Accuracy+20 Attack+20", "Accuracy+10", "Pet: Haste+10"}
        }
    }

    -------------------------------------Acc
    --[[
        Offense Mode = MasterPet
        Hybrid Mode = Acc
    ]]
    sets.engaged.MasterPet.Acc = {
        main = {name = "Ohtas", augments = {"Accuracy+70", "Pet: Accuracy+70", "Pet: Haste+10%"}},
        range = "Animator P",
        head = "Tali'ah Turban +1",
        body = "Tali'ah Manteel +2",
        hands = {name = "Herculean Gloves", augments = {"Accuracy+30", '"Triple Atk."+3', "Attack+6"}},
        legs = {
            name = "Herculean Trousers",
            augments = {"Accuracy+25 Attack+25", '"Triple Atk."+4', "STR+4", "Attack+15"}
        },
        feet = "Tali'ah Crackows +1",
        neck = "Empath Necklace",
        waist = "Incarnation Sash",
        left_ear = "Brutal Earring",
        right_ear = "Cessance Earring",
        left_ring = "Petrov Ring",
        right_ring = "Epona's Ring",
        back = {
            name = "Visucius's Mantle",
            augments = {"DEX+20", "Accuracy+20 Attack+20", "Accuracy+10", "Pet: Haste+10"}
        }
    }

    -------------------------------------TP
    --[[
        Offense Mode = MasterPet
        Hybrid Mode = TP
    ]]
    sets.engaged.MasterPet.TP = {}

    -------------------------------------DT
    --[[
        Offense Mode = MasterPet
        Hybrid Mode = DT
    ]]
    sets.engaged.MasterPet.DT = {}

    -------------------------------------Regen
    --[[
        Offense Mode = MasterPet
        Hybrid Mode = Regen
    ]]
    sets.engaged.MasterPet.Regen = {}

    -------------------------------------Magic Midcast
    sets.midcast.Pet = {}

    sets.midcast.Pet.Cure = {}

    sets.midcast.Pet["Healing Magic"] = {}

    sets.midcast.Pet["Elemental Magic"] = {}

    sets.midcast.Pet["Enfeebling Magic"] = {}

    sets.midcast.Pet["Dark Magic"] = {}

    sets.midcast.Pet["Divine Magic"] = {}

    sets.midcast.Pet["Enhancing Magic"] = {}

    -------------------------------------Idle
    --[[
        This set will become default Idle Set when the Pet is Active 
        and sets.idle will be ignored
        Player = Idle and not fighting
        Pet = Idle and not fighting
 
        Idle Mode = Idle
    ]]
    sets.idle.Pet = {}

    --[[
        If pet is active and you are idle and pet is idle
        Player = idle and not fighting
        Pet = idle and not fighting
 
        Idle Mode = MasterDT
    ]]
    sets.idle.Pet.MasterDT = {}

    -------------------------------------Enmity
    sets.pet = {} -- Not Used

    --Equipped automatically
    sets.pet.Enmity = {}

    --[[
        Activated by Alt+D or
        F10 if Physical Defense Mode = PetDT
    ]]
    sets.pet.EmergencyDT = {}

    -------------------------------------Engaged for Pet Only
    --[[
      For Technical Users - This is layout of below
      sets.idle[idleScope][state.IdleMode][ Pet[Engaged] ][CustomIdleGroups] 
 
      For Non-Technical Users:
      If you the player is not fighting and your pet is fighting the first set that will activate is sets.idle.Pet.Engaged
      You can further adjust this by changing the HyrbidMode using Ctrl+F9 to activate the Acc/TP/DT/Regen/Ranged sets
    ]]
    --[[
        Idle Mode = Idle
        Hybrid Mode = Normal
    ]]
    sets.idle.Pet.Engaged = {
        main = {name = "Midnights", augments = {"Pet: Attack+25", "Pet: Accuracy+25", "Pet: Damage taken -3%"}},
        range = "Animator P",
        head = {name = "Anwig Salade", augments = {"Attack+3", "Pet: Damage taken -10%", "Accuracy+3", "Pet: Haste+5"}},
        body = {
            name = "Taeon Tabard",
            augments = {"Pet: Accuracy+21 Pet: Rng. Acc.+21", 'Pet: "Dbl. Atk."+5', "Pet: Damage taken -4%"}
        },
        hands = {name = "Rao Kote", augments = {"Pet: HP+100", "Pet: Accuracy+15", "Pet: Damage taken -3%"}},
        legs = "Tali'ah Sera. +1",
        feet = "Tali'ah Crackows +1",
        neck = "Shepherd's Chain",
        waist = "Isa Belt",
        left_ear = "Handler's Earring",
        right_ear = "Handler's Earring +1",
        left_ring = "Warden's Ring",
        right_ring = "Patricius Ring",
        back = "Contriver's Cape"
    }

    --[[
        Idle Mode = Idle
        Hybrid Mode = Acc
    ]]
    sets.idle.Pet.Engaged.Acc = {}

    --[[
        Idle Mode = Idle
        Hybrid Mode = TP
    ]]
    sets.idle.Pet.Engaged.TP = {}

    --[[
        Idle Mode = Idle
        Hybrid Mode = DT
    ]]
    sets.idle.Pet.Engaged.DT = {}

    --[[
        Idle Mode = Idle
        Hybrid Mode = Regen
    ]]
    sets.idle.Pet.Engaged.Regen = {}

    --[[
        Idle Mode = Idle
        Hybrid Mode = Ranged
    ]]
    sets.idle.Pet.Engaged.Ranged =
        set_combine(
        sets.idle.Pet.Engaged,
        {
            legs = Empy_Karagoz.Legs_Combat
        }
    )

    -------------------------------------WS
    --[[
        WSNoFTP is the default weaponskill set used
    ]]
    sets.midcast.Pet.WSNoFTP = {
        head = Empy_Karagoz.Head_PTPBonus
        -- Add your set here
    }

    --[[
        If we have a pet weaponskill that can benefit from WSFTP
        then this set will be equipped
    ]]
    sets.midcast.Pet.WSFTP = {
        head = Empy_Karagoz.Head_PTPBonus
        -- Add your set here
    }

    --[[
        Base Weapon Skill Set
        Used by default if no modifier is found
    ]]
    sets.midcast.Pet.WS = {}

    --Chimera Ripper, String Clipper
    sets.midcast.Pet.WS["STR"] = set_combine(sets.midcast.Pet.WSNoFTP, {})

    -- Bone crusher, String Shredder
    sets.midcast.Pet.WS["VIT"] =
        set_combine(
        sets.midcast.Pet.WSNoFTP,
        {
            -- Add your gear here that would be different from sets.midcast.Pet.WSNoFTP
            head = Empy_Karagoz.Head_PTPBonus
        }
    )

    -- Cannibal Blade
    sets.midcast.Pet.WS["MND"] = set_combine(sets.midcast.Pet.WSNoFTP, {})

    -- Armor Piercer, Armor Shatterer
    sets.midcast.Pet.WS["DEX"] = set_combine(sets.midcast.Pet.WSNoFTP, {})

    -- Arcuballista, Daze
    sets.midcast.Pet.WS["DEXFTP"] =
        set_combine(
        sets.midcast.Pet.WSFTP,
        {
            -- Add your gear here that would be different from sets.midcast.Pet.WSFTP
            head = Empy_Karagoz.Head_PTPBonus
        }
    )

    -- Town Set
    sets.idle.Town = {}

    -- Resting sets
    sets.resting = {}

    sets.defense.MasterDT = sets.idle.MasterDT

    sets.defense.PetDT = sets.pet.EmergencyDT

    sets.defense.PetMDT = set_combine(sets.pet.EmergencyDT, {})
end

-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
    -- Default macro set/book
    if player.sub_job == "WAR" then
        set_macro_page(1, 1)
    elseif player.sub_job == "NIN" then
        set_macro_page(1, 1)
    elseif player.sub_job == "DNC" then
        set_macro_page(1, 1)
    else
        set_macro_page(1, 1)
    end
end
 Asura.Yottaxa
Offline
サーバ: Asura
Game: FFXI
user: Yottaxa
Posts: 176
By Asura.Yottaxa 2022-02-17 19:41:13  
I hope this isn't a dumb question, but is anyone else having issues with the //gs validate command? I don't see it listed as any known issue with in the broken plugin's post, but this appears to be since the last patch.

Prior to the last update I would issue //gs validate and it would check all bags and return missing?

Now I am seeing a list of all the gear as if its not in inventory, but all swaps are happening normal, just the list return acts like it sees no gear.? Anyone else having issues? (Its prolly something dumb I did.) Thanks.
[+]
 Bahamut.Mizuharu
Offline
サーバ: Bahamut
Game: FFXI
user: Mizuharu
Posts: 1988
By Bahamut.Mizuharu 2022-02-17 19:50:10  
So, I copied what I had put together and moved it to another folder, then put in the default lua provided in the PUP part of the forums, and THAT loaded. Then, after moving that same file back over, it loaded that when I reloaded gearswap

I have no clue wtf that accomplished but it's working now at least lol

Thanks for the help!
[+]
Offline
By flyingtaru 2022-02-17 23:35:52  
I believe that command did break and maybe you don't have fully patched GS files.


Asura.Yottaxa said: »
I hope this isn't a dumb question, but is anyone else having issues with the //gs validate command? I don't see it listed as any known issue with in the broken plugin's post, but this appears to be since the last patch.

Prior to the last update I would issue //gs validate and it would check all bags and return missing?

Now I am seeing a list of all the gear as if its not in inventory, but all swaps are happening normal, just the list return acts like it sees no gear.? Anyone else having issues? (Its prolly something dumb I did.) Thanks.
 Asura.Yottaxa
Offline
サーバ: Asura
Game: FFXI
user: Yottaxa
Posts: 176
By Asura.Yottaxa 2022-02-18 11:52:53  
--I believe that command did break and maybe you don't have fully patched GS files.

Thanks. I do have latest files, so I'm just going to go with it being broken. :)
 Asura.Iamarealgirl
Offline
サーバ: Asura
Game: FFXI
user: Latravant
Posts: 79
By Asura.Iamarealgirl 2022-02-22 17:53:21  
does anyone have a script i can add to my war lua so it auto uses hasso when it wears off? i multibox so it'd be a great help. thanks
 Asura.Nalfey
Offline
サーバ: Asura
Game: FFXI
user: Nalf
Posts: 104
By Asura.Nalfey 2022-02-22 18:02:41  
Add this under your:
Code
function user_setup()

Code
	state.AutoHasso = M(false, "Auto Hasso")	


and
Code
	send_command('bind @h gs c toggle AutoHasso')


Add this function:
Code
function check_for_hasso()
    if not (buffactive['Hasso']) then
        send_command('input /ja "Hasso" <me>')
        coroutine.schedule(check_for_hasso, 2)
    end
end


Add this under your:
Code
function job_buff_change(buff, gain, eventArgs)

Code
    if buff:contains("Hasso") and gain == false then
        add_to_chat(167, "*** HASSO DOWN ***")
    end
	if  
		buff:contains("Hasso")
		and gain == false 
		and player.hp > 0
		and not areas.Cities:contains(world.area)
		and state.AutoHasso.current == 'on'
	then
		send_command('input /ja "Hasso" <me>')
		coroutine.schedule(check_for_hasso, 2)
    end	




With that keybind you can turn the Auto Hasso ON/OFF with "WindowsKey + H"
[+]
 Asura.Iamarealgirl
Offline
サーバ: Asura
Game: FFXI
user: Latravant
Posts: 79
By Asura.Iamarealgirl 2022-02-22 18:20:09  
tyvm
Offline
Posts: 7
By RollsTroyce 2022-02-23 21:10:55  
Hello

Problem: midcast cure always doing equipping no TP set when I have TP. I've got to be doing something wrong in the function after that part. I've tried the disable('main', 'sub', 'range') also and it doesn't work.
PS:... I know it's horrid. I don't want to use the one's it comes with and paste/edit someone else's lua because I don't know enough about this stuff and don't like not understanding what's in the lua. I haven't touched this stuff since I had my .xml for spellcast and won't start actually playing again until I get this thing figured out.

Any help will be much appreciated!


areas = {}

-- City areas for town gear and behavior.
areas.Cities = S{
"Ru'Lude Gardens",
"Upper Jeuno",
"Lower Jeuno",
"Port Jeuno",
"Port Windurst",
"Windurst Waters",
"Windurst Woods",
"Windurst Walls",
"Heavens Tower",
"Port San d'Oria",
"Northern San d'Oria",
"Southern San d'Oria",
"Port Bastok",
"Bastok Markets",
"Bastok Mines",
"Metalworks",
"Aht Urhgan Whitegate",
"Tavnazian Safehold",
"Nashmau",
"Selbina",
"Mhaura",
"Norg",
"Eastern Adoulin",
"Western Adoulin",
"Kazham",
"Rabao",
"Chocobo Circuit",
}
-- Adoulin areas, where Ionis will grant special stat bonuses.
areas.Adoulin = S{
"Yahse Hunting Grounds",
"Ceizak Battlegrounds",
"Foret de Hennetiel",
"Morimar Basalt Fields",
"Yorcia Weald",
"Yorcia Weald ",
"Cirdas Caverns",
"Cirdas Caverns ",
"Marjami Ravine",
"Kamihr Drifts",
"Sih Gates",
"Moh Gates",
"Dho Gates",
"Woh Gates",
"Rala Waterways",
"Rala Waterways ",
"Outer Ra'Kaznar",
"Outer Ra'Kaznar "
}


enfeeb_maps = {
--skill pot = enfeebling magic skill
--macc is magic accuracy
--potency: This needs to have Dia, Bio, and Gravity sub categories added below and to the gear sets then be deleted
-- Bio and Dia set to take advantage of weather, elemental affinity, magic attack, and "enhances spell" equipment.
--Gravity's accuracy is Enfeebling Magic Skill and INT
--mnd pot = MND
--int pot = INT
--skillmndpot = enfeebling magic skill + MND
--Can reuse the types (potency, intpot, ect) for all magic maps
['Dia']='potency', ['Dia II']='potency', ['Dia III']='potency',
['Bio']='potency', ['Bio II']='potency', ['Bio III']='potency',
['Paralyze']='mndpot', ['Paralyze II']='mndpot',
['Slow']='mndpot', ['Slow II']='mndpot',
['Addle']='mndpot', ['Addle II']='mndpot',
['Sleep']='macc', ['Sleep II']='macc', ['Sleepga']='macc',
['Silence']='macc',
['Inundation']='macc',
['Dispel']='macc',
['Break']='macc',
['Bind']='macc',
['Blind']='intpot', ['Blind II']='intpot',
['Gravity']='potency', ['Gravity II']='potency',
-- We leave Fazzle and FrazzleII as pure macc to help land it in cases its a high resist.
-- This lets us follow up with a high potency Frazzle3
['Frazzle']='macc', ['Frazzle II']='macc', ['Frazzle III']='skillmndpot',
['Distract']='skillmndpot', ['Distract II']='skillmndpot', ['Distract III']='skillmndpot',
['Poison']='skillpot', ['Poison II']='skillpot', ['Poisonga']='skillpot',
}

--ADD FOLLOWING
--enhancing magic
--status removal
--elemental maps (light, dark, wind, fire, water, ice, earth, thunder)

--XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
--XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
--XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

function get_sets()

sets.idle = {} -- Leave this empty
sets.melee = {} -- Leave this empty
sets.ws = {} -- Leave this empty
sets.ja = {} -- Leave this empty
sets.precast = {} -- leave this empty
sets.midcast = {} -- leave this empty
sets.midcast.enfeebling = {} -- Leave this empty
-- sets.midcast.enfeebling.mndpot = {}
-- Might need to make one for each enfeebType... need to test
sets.midcast.enhancing = {} -- Leave this empty
sets.midcast.status_removal = {}-- Leave this empty
sets.midcast.elemental = {} -- Leave this empty
sets.aftercast = {} -- leave this empty
sets.status_change = {} -- Leave this empty

sets.pet_change = {} -- Leave this empty
sets.pet_midcast = {} -- Leave this empty
sets.pet_aftercast = {} -- Leave this empty
sets.pet_status_change = {} -- Leave this empty

-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
--GEAR SETS FOR IDLE

--Field
sets.idle.field = {
main="Joyeuse",
sub="Genbu's Shield",
ammo="Bibiki Seashell",
head="Duelist's Chapeau",
body="Scp. Harness +1",
hands="Duelist's Gloves",
legs="Blood Cuisses",
feet="Dls. Boots +1",
neck="Chivalrous Chain",
waist="Warwolf Belt",
left_ear="Suppanomimi",
left_ring="Iota Ring",
back="Boxer's Mantle",
}

--Town
sets.idle.town = {
main=empty,
sub=empty,
ammo=empty,
head="Duelist's Chapeau",
body="Kingdom Aketon",
hands="Duelist's Gloves",
legs="Blood Cuisses",
feet="Dls. Boots +1",
neck="Chocobo Whistle",
waist="Rabbit Belt",
left_ear="Signal Pearl",
right_ear="Tactics Pearl",
back=empty,
left_ring="Tavnazian Ring",
right_ring=empty,
}

-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
--GEAR SETS FOR MELEE

-- Melee /NIN
sets.melee.subnin = {
main = "Joyeuse",
sub = "Justice Sword",
range = empty,
ammo = "Bibiki Seashell",
head = "Optical Hat",
body = "Scp. Harness +1",
hands = "Duelist's Gloves",
legs = "Nashira Seraweels",
feet = "Nashira Crackows",
neck = "Chivalrous Chain",
waist = "Warwolf Belt",
left_ear = "Suppanomimi",
right_ear = "Magnetic Earring",
left_ring = "Iota Ring",
right_ring = "Rajas Ring",
back = "Boxer's Mantle",
}

--/Everything Else Melee
sets.melee.notsubnin = set_combine (sets.melee.subnin, {
main = "Joyeuse",
sub = "Genbu's Shield",
range = empty,
})

-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
--GEAR SETS FOR WEAPON SKILLS
--Leave Death Blossom along and use it as a template. Functions call names of Weapon Skills.

--Death Blossom
sets.ws['Death Blossom'] = {
ammo="Bibiki Seashell",
head="Teal Chapeau",
body="Teal Saio",
hands="Duelist's Gloves",
legs="Zenith Slacks",
feet="Dls. Boots +1",
neck="Thunder Gorget",
waist="Witch Sash",
left_ear="Suppanomimi",
right_ear="Magnetic Earring",
left_ring="Neptune's Ring",
right_ring="Rajas Ring",
back="Rainbow Cape",
}

-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
--GEAR SETS FOR JOB ABILITIES
--Leave Convert alone and use it as a template. Functions call names of Job Abilities.

--Convert
sets.ja['Convert'] = {}

-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
--GEAR SETS FOR CASTING

--PRECAST

--Fast Cast without TP (Caps at 80)
sets.precast.fastcastnotp = {
head="Wlk. Chapeau +1", -- -10%
body="Duelist's Tabard", -- -10%
left_ear="Loquac. Earring", -- -2%
}

--Fast Cast with TP & /NIN (Caps at 80)
sets.precast.fastcasttpsubnin = set_combine (sets.precast.fastcastnotp, {main="Joyeuse", sub="Justice Sword", range=empty})

--Fast Cast with TP & without /NIN (Capst at 80)
sets.precast.fastcasttpnotsubnin = set_combine (sets.precast.fastcastnotp, {main="Joyeuse", sub="Genbu's Shield", range=empty})

--MIDCAST

--Cure Set without TP
sets.midcast.curenotp = {
main = "Light Staff",
sub = "Reign Grip",
range = empty,
ammo = "Bibiki Seashell",
head = "Teal Chapeau",
body = "Duelist's Tabard",
hands = "Duelist's Gloves",
legs = "Warlock's Tights",
feet = "Dls. Boots +1",
neck = "Healing Torque",
waist = "Witch Sash",
left_ear = "Loquac. Earring",
right_ear = "Magnetic Earring",
left_ring = "Omega Ring",
right_ring = "Neptune's Ring",
back = "Rainbow Cape",
}

--Cure Set with TP & /NIN
sets.midcast.curetpsubnin = set_combine (sets.midcast.curenotp, {main="Joyeuse", sub="Justice Sword", range=empty})

--Cure Set with TP & without /NIN
sets.midcast.curetpnotsubnin = set_combine (sets.midcast.curenotp, {main="Joyeuse", sub="Genbu's Shield", range=empty})

--Enfeebling MND Potency without TP
sets.midcast.enfeebling.mndpot = {
main="Water Staff",
sub="Reign Grip",
range= empty,
ammo="Bibiki Seashell",
head="Teal Chapeau",
body="Teal Saio",
hands="Nashira Gages",
legs="Zenith Slacks",
feet="Dls. Boots +1",
neck="Enfeebling Torque",
waist="Witch Sash",
left_ear="Suppanomimi",
right_ear="Magnetic Earring",
left_ring="Omega Ring",
right_ring="Neptune's Ring",
back="Rainbow Cape",
}

--Enfeebling MND Potency with TP & /NIN
sets.midcast.enfeebling.mndpot.tpsubnin = set_combine (sets.midcast.enfeebling.mndpot, {main="Joyeuse", sub="Justice Sword", range=empty,})

--Enfeebling MND Potency With TP & without /NIN
sets.midcast.enfeebling.mndpot.tpnotsubnin = set_combine (sets.midcast.enfeebling.mndpot, {main="Joyeuse", sub="Genbu's Shield", range=empty,})

--Remaining Enfeeb sets to make
sets.midcast.enfeebling.intpot = {}
sets.midcast.enfeebling.potency = {}
sets.midcast.enfeebling.macc = {}
sets.midcast.enfeebling.skillmndpot = {}
sets.midcast.enfeebling.skillpot = {}

--Enhancing Sets x3
--Nuke Sets x3, these will have earth, water, wind, fire, ice, thunder, dark, and light to cover all instead of typing out every spell
--One off sets

--Think about making sets for weather and days.. need to do research
end

--AFTERCAST

--XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXX
--XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXX
--XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXX

--FUNCTIONS

function idle()
if player.status=='Engaged'
and player.sub_job == 'NIN'
then equip(sets.melee.subnin)
elseif player.status=='Engaged'
and player.sub_job ~= 'NIN'
then equip(sets.melee.notsubnin)
elseif player.tp ~= 0
and player.sub_job == 'NIN'
then equip(sets.melee.subnin)
elseif player.tp ~= 0
and player.sub_job ~= 'NIN'
then equip(sets.melee.notsubnin)
else equip(sets.idle.field)
end
end

--Precast Function
--function precast(spell)
--if spell.type ~= 'JobAbility'
--and player.tp == 0
--then equip(sets.precast.fastcastnotp)
--elseif spell.type ~= 'JobAbility'
--and player.tp > 0
--and player.sub_job == 'NIN'
--then equip(sets.precast.fastcasttpsubnin)
--elseif spell.type ~= 'JobAbility'
--and player.tp > 0
--and player.sub_job ~= 'NIN'
--then equip(sets.precast.fastcasttpnotsubnin)
--end

--if sets.ja[spell.name] then
--equip(sets.ja[spell.name])
--elseif sets.ws[spell.name] then
--equip(sets.ws[spell.name])
--end
--end

--Midcast Funciton
function midcast(spell)
local enfeebType = get_enfeeb_map(spell)
-- Curing
if spell.name:match('Cure') or
spell.name:match('Cura')
and player.tp == 0
then equip(sets.midcast.curenotp)
elseif spell.name:match('Cure') or
spell.name:match('Cura')
and player.tp > 0
and player.sub_job == 'NIN'
then equip(sets.midcast.curetpsubnin)
elseif spell.name:match('Cure') or
spell.name:match('Cura')
and player.tp > 0
and player.sub_job ~= 'NIN'
then equip(sets.midcast.curetpnotsubnin)
-- Enfeebling
elseif spell.skill == 'Enfeebling Magic'
and player.tp == 0
then equip(sets.midcast.enfeebling[enfeebType])
-- Enfeebling MNDPOT
elseif spell.skill == 'Enfeebling Magic'
and player.tp ~= 0
and player.sub_job == 'NIN'
then equip(sets.midcast.enfeebling.mndpot.tpsubnin[enfeebType])
elseif spell.skill == 'Enfeebling Magic'
and player.tp ~= 0
and player.sub_job ~= 'NIN'
then equip(sets.midcast.enfeebling.mndpot.tpnotsubnin[enfeebType])
end
-- Enhancing
-- Nuking
-- One Offs
end


--Aftercast Function
function aftercast(spell)
idle()
end

--Status Change Function
function status_change(new,old)
if S{"Ru'Lude Gardens","Upper Jeuno","Lower Jeuno","Port Jeuno","Port Windurst","Windurst Waters","Windurst Woods","Windurst Walls","Heavens Tower","Port San d'Oria","Northern San d'Oria","Southern San d'Oria","Port Bastok","Bastok Markets","Bastok Mines","Metalworks","Aht Urhgan Whitegate","Tavnazian Safehold","Nashmau","Selbina","Mhaura","Norg","Eas tern Adoulin","Western Adoulin","Kazham","Rabao","Chocobo Circuit",}:contains(world.area) then
equip(sets.idle.town)
else
idle()
end
end

-- Get Mapping Enfeeble Spells
function get_enfeeb_map(spell)
return enfeeb_maps[spell.name]
end
 Bismarck.Xurion
Offline
サーバ: Bismarck
Game: FFXI
user: Xurion
Posts: 694
By Bismarck.Xurion 2022-02-24 02:29:41  
RollsTroyce said: »
Problem: midcast cure always doing equipping no TP set when I have TP.
Not sure if this is just worded in a slightly odd way or not, but your TP set equips when you're engaged on a target, and not when you have TP.
 Fenrir.Rolls
Offline
サーバ: Fenrir
Game: FFXI
Posts: 6
By Fenrir.Rolls 2022-02-24 07:59:44  
Bismarck.Xurion said: »
RollsTroyce said: »
Problem: midcast cure always doing equipping no TP set when I have TP.
Not sure if this is just worded in a slightly odd way or not, but your TP set equips when you're engaged on a target, and not when you have TP.

I'm not using the mote or mode files. The midcast function towards the bottom specifically for cures. I'm trying to get it to use the gearset in the second elseif when those conditions are met. It's always using the gear set for the previous conditions which wipes out my TP despite player.tp > 0.
 Fenrir.Rolls
Offline
サーバ: Fenrir
Game: FFXI
Posts: 6
By Fenrir.Rolls 2022-02-24 09:12:47  
Hre's the piece with the problem.

if spell.name:match('Cure') or
spell.name:match('Cura')
and player.tp == 0
then equip(sets.midcast.curenotp)
elseif spell.name:match('Cure') or
spell.name:match('Cura')
and player.tp > 0
and player.sub_job == 'NIN'
then equip(sets.midcast.curetpsubnin)
elseif spell.name:match('Cure') or
spell.name:match('Cura')
and player.tp > 0
and player.sub_job ~= 'NIN'
then equip(sets.midcast.curetpnotsubnin)
 Bismarck.Xurion
Offline
サーバ: Bismarck
Game: FFXI
user: Xurion
Posts: 694
By Bismarck.Xurion 2022-02-24 10:22:01  
Your logic looks fine. Try running in debug mode with //gs debugmode and see what it says.
[+]
 Fenrir.Rolls
Offline
サーバ: Fenrir
Game: FFXI
Posts: 6
By Fenrir.Rolls 2022-02-24 12:50:27  
Bismarck.Xurion said: »
Your logic looks fine. Try running in debug mode with //gs debugmode and see what it says.

Is there a way to increase the debug log level in game or is there a debug log file? I looked for one, but wouldn't be surprised if I looked right over it. Currently in game it just said it was entering the various functions. No errors listed.
 Fenrir.Rolls
Offline
サーバ: Fenrir
Game: FFXI
Posts: 6
By Fenrir.Rolls 2022-02-24 13:31:38  
Fenrir.Rolls said: »
Bismarck.Xurion said: »
Your logic looks fine. Try running in debug mode with //gs debugmode and see what it says.

Is there a way to increase the debug log level in game or is there a debug log file? I looked for one, but wouldn't be surprised if I looked right over it. Currently in game it just said it was entering the various functions. No errors listed.

It wound up being the or logic needing to be braced. Obsidian over on BGForum called it.
[+]
Offline
Posts: 113
By Heck 2022-02-26 09:09:35  
Trying to add a weapon wheel cycle for BLU, and I pretty much got all of it down except for when I don't have Dual-Wield on BLU set. Usually would have
Code
    if player.sub_job ~= 'NIN' and player.sub_job ~= 'DNC' then
        equip(sets.DefaultShield)
    end

but in this case BLU traits it so it doesn't really work. Is there a way to define when you have a BLU spell set or something close to that so it recognizes to equip shield when no DW present
 Bismarck.Radec
Offline
サーバ: Bismarck
Game: FFXI
user: Radec
Posts: 148
By Bismarck.Radec 2022-02-26 10:02:30  
Heck said: »
Trying to add a weapon wheel cycle for BLU, and I pretty much got all of it down except for when I don't have Dual-Wield on BLU set. Usually would have
Code
    if player.sub_job ~= 'NIN' and player.sub_job ~= 'DNC' then
        equip(sets.DefaultShield)
    end

but in this case BLU traits it so it doesn't really work. Is there a way to define when you have a BLU spell set or something close to that so it recognizes to equip shield when no DW present
Code
function blu_dw_check()
	dw_spells = S{'list','of','dw','spell','ids'}
	local player = windower.ffxi.get_player()
	local dw_spell_count = 0
	if player.main_job == "BLU" then
	    t = windower.ffxi.get_mjob_data()
	elseif player.sub_job == "BLU" then
	    t = windower.ffxi.get_sjob_data()
	else
		return dw_spell_count --not blu or /blu
	end
	
	if t.spells then
	    for _,v in pairs(t.spells) do
	        if dw_spells:contains(v) then
	        	dw_spell_count = dw_spell_count + 1
	        	--Do something to account for molting being 8 set points
	        end
	    end
	end
	return dw_spell_count
	--If this is >=2, you have DW trait
end


It's untested/incomplete, but something like this can check if specific spell IDs are set.
First Page 2 3 ... 165 166 167 ... 183 184 185