|
Gearswap Support Thread
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
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
By quelthos 2022-02-17 01:54:55
hmmm FastFollow the add on has an impact on bard lua?
What is the connection?
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
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
サーバ: Bahamut
Game: FFXI
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 Code --[[
Originally Created By: Faloun
Programmers: Arrchie, Kuroganashi, Byrne, Tuna
Testers:Arrchie, Kuroganashi, Haxetc, Patb, Whirlin, Petsmart
Contributors: Xilkk, Byrne, Blackhalo714
ASCII Art Generator: http://www.network-science.de/ascii/
]]
-- 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 = {
--Lol I got nothing
}
-------------------------------------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 = {
-- Add your set here
}
-------------------------------------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 = {
-- Add your set here
}
-------------------------------------DT
--[[
Offense Mode = MasterPet
Hybrid Mode = DT
]]
sets.engaged.MasterPet.DT = {
-- Add your set here
}
-------------------------------------Regen
--[[
Offense Mode = MasterPet
Hybrid Mode = Regen
]]
sets.engaged.MasterPet.Regen = {
-- Add your set here
}
-------------------------------------Magic Midcast
sets.midcast.Pet = {
-- Add your set here
}
sets.midcast.Pet.Cure = {
-- Add your set here
}
sets.midcast.Pet["Healing Magic"] = {
-- Add your set here
}
sets.midcast.Pet["Elemental Magic"] = {
-- Add your set here
}
sets.midcast.Pet["Enfeebling Magic"] = {
-- Add your set here
}
sets.midcast.Pet["Dark Magic"] = {
-- Add your set here
}
sets.midcast.Pet["Divine Magic"] = {
-- Add your set here
}
sets.midcast.Pet["Enhancing Magic"] = {
-- Add your set here
}
-------------------------------------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 = {
-- Add your set here
}
--[[
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 = {
-- Add your set here
}
-------------------------------------Enmity
sets.pet = {} -- Not Used
--Equipped automatically
sets.pet.Enmity = {
-- Add your set here
}
--[[
Activated by Alt+D or
F10 if Physical Defense Mode = PetDT
]]
sets.pet.EmergencyDT = {
-- Add your set here
}
-------------------------------------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 = {
-- Add your set here
}
--[[
Idle Mode = Idle
Hybrid Mode = TP
]]
sets.idle.Pet.Engaged.TP = {
-- Add your set here
}
--[[
Idle Mode = Idle
Hybrid Mode = DT
]]
sets.idle.Pet.Engaged.DT = {
-- Add your set here
}
--[[
Idle Mode = Idle
Hybrid Mode = Regen
]]
sets.idle.Pet.Engaged.Regen = {
-- Add your set here
}
--[[
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 = {
-- Add your set here
}
-- Resting sets
sets.resting = {
-- Add your set here
}
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
Lakshmi.Byrth
VIP
サーバ: Lakshmi
Game: FFXI
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
サーバ: Bahamut
Game: FFXI
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
サーバ: Ramuh
Game: FFXI
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
Game: FFXI
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
サーバ: Bahamut
Game: FFXI
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!
[+]
By flyingtaru 2022-02-17 23:35:52
I believe that command did break and maybe you don't have fully patched GS files.
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
Game: FFXI
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
Game: FFXI
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
サーバ: Asura
Game: FFXI
Posts: 104
By Asura.Nalfey 2022-02-22 18:02:41
Add this under your:
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
Game: FFXI
Posts: 79
By Asura.Iamarealgirl 2022-02-22 18:20:09
tyvm
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
サーバ: Bismarck
Game: FFXI
Posts: 694
By Bismarck.Xurion 2022-02-24 02:29:41
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
サーバ: Fenrir
Game: FFXI
Posts: 6
By Fenrir.Rolls 2022-02-24 07:59:44
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
サーバ: 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
サーバ: Bismarck
Game: FFXI
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
サーバ: Fenrir
Game: FFXI
Posts: 6
By Fenrir.Rolls 2022-02-24 12:50:27
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
サーバ: Fenrir
Game: FFXI
Posts: 6
By Fenrir.Rolls 2022-02-24 13:31:38
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.
[+]
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
サーバ: Bismarck
Game: FFXI
Posts: 148
By Bismarck.Radec 2022-02-26 10:02:30
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.
Just looking for someone to explain this addon a bit for me. It looks like it is an alternative to Spellcast.
Is it going to be replacing Spellcast? In which ways is it better or worse. I don't know any programming but I've slowly learned more and more about spellcast and the 'language' used in gearswap is confusing to me.
It says it uses packets so it potentially could be more detectable? but does that also eliminate any lag that spellcast may encounter?
I plan on redoing my PUP xml to include pet casting sets thanks to the new addon petschool. I'm just not sure if it's worth it to just wait until gearswap gets more popular or to go ahead and do it in spellcast.
If anyone could give me more info I'd greatly appreciate it.
|
|