BARD Lua Issues |
||
|
BARD lua issues
so i found a really great bard lua online from some one named SammehFFXI installed and put my gear in ... i really like it but my problem is i cant get my dummy songs to cast in normal gear instead of song duration .. i tried a few things and nothing is working .. i know its some thing stupid but im not as clued up as some of you guys so any help would be amazing ... thank you
Should post your lua if you want someone to be able to 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>
--]]
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
include('sammeh_custom_functions.lua')
include('lullaby.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', 'FullLength', 'Dummy'}
state.LullabyMode = M{['description']='Lullaby Mode','Gjallarhorn','Daurdabla'}
state.Buff['Pianissimo'] = buffactive['pianissimo'] or false
state.IdleMode:options('Normal','PDT','MEVA')
state.TPMode = M{['description']='TP Mode', 'Normal', 'WeaponLock'}
send_command('alias tp gs c cycle tpmode')
send_command('bind f10 gs c cycle idlemode')
send_command('bind f11 gs c cycle LullabyMode')
send_command("alias buff gs equip sets.midcast.SongEffect")
send_command("alias debuff gs equip sets.midcast.SongDebuff")
send_command("alias macc gs equip sets.midcast.ResistantSongDebuff")
send_command("alias lul gs equip sets.midcast.LullabyFull")
send_command("alias fc gs equip sets.precast.FastCast.BardSong")
send_command("alias idle gs equip sets.Idle.Current")
send_command("alias meva gs equip sets.meva")
send_command("alias enh gs equip sets.midcast['Enhancing Magic']")
send_command("alias eng gs equip sets.engaged")
send_command("alias wsset gs equip sets.precast.WS")
-- For tracking current recast timers via the Timers plugin.
custom_timers = {}
send_command("alias g11_m2g16 input /ws Rudra's Storm")
send_command("alias g11_m2g17 input /ws Mordant Rime")
send_command("alias g11_m2g18 input /ws Exenterator")
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', 'Shield')
state.CastingMode:options('Normal', 'Resistant')
-- Adjust this if using the Terpander (new +song instrument)
info.ExtraSongInstrument = 'Daurdabla'
-- How many extra songs we can keep from Daurdabla/Terpander
info.MaxSongs = 4
-- If Max Job Points - adds alot of timers to the custom timers
MaxJobPoints = 1
-- Set this to false if you don't want to use custom timers.
state.UseCustomv = M(false, '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()
send_command('@wait 5;input /lockstyleset 40')
waittime = 2.7
end
-- Called when this job file is unloaded (eg: job change)
function user_unload()
send_command('unbind ^`')
send_command('unbind !`')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
weaponlock_main="Kali"
weaponlock_sub="Genmei Shield"
-- Precast Sets
-- Fast cast sets for spells
sets.precast.FastCast = {
main={ name="Kali", augments={'Mag. Acc.+15','String instrument skill +10','Wind instrument skill +10',}},
sub="Ammurapi Shield",
ammo="Sapience orb",
head={ name="Vanya Hood", augments={'MP+50','"Fast Cast"+10','Haste+2%',}},
body="Inyanga Jubbah +1",
hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -2%','"Cure" spellcasting time -1%',}},
legs="Artsieq Hose",
feet="Nyame Sollerets",
neck="Voltsurge Torque",
waist="Embla sash",
left_ear="Enchntr. Earring +1",
right_ear="Loquac. Earring",
left_ring="Defending Ring",
right_ring="Kishar Ring",
back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}},
}
sets.precast.FastCast.Cure = set_combine(sets.precast.FastCast, {
main={ name="Serenity", augments={'MP+50','Enha.mag. skill +10','"Cure" potency +5%','"Cure" spellcasting time -10%',}},
sub="Clerisy Strap",
ammo="Impatiens",
head={ name="Vanya Hood", augments={'MP+50','"Fast Cast"+10','Haste+2%',}},
body="Heka's Kalasiris",
hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -2%','"Cure" spellcasting time -1%',}},
legs={ name="Lengo Pants", augments={'INT+4','Mag. Acc.+2','"Mag.Atk.Bns."+4',}},
feet={ name="Vanya Clogs", augments={'"Cure" potency +5%','"Cure" spellcasting time -15%','"Conserve MP"+6',}},
neck="Phalaina Locket",
waist="Acerbic Sash +1",
left_ear="Halasz Earring",
right_ear="Loquac. Earring",
left_ring="Sirona's Ring",
right_ring="Stikini Ring +1",
back="Perimede Cape",
})
sets.precast.FastCast.Stoneskin = set_combine(sets.precast.FastCast, {head="Umuthi Hat",legs="Doyen Pants"})
sets.precast.FastCast['Enhancing Magic'] = set_combine(sets.precast.FastCast, {waist="Seigal Sash",ammo=""})
sets.precast.FastCast.BardSong = {
main="Kali",
head="fili calot +1",
body="Inyanga Jubbah +1",
hands="Mdk. Dastanas +1",
legs="Fili rhingrave +1",
feet="Bihu slippers",
neck="Aoidos' Matinee",
waist="Aoidos' belt",
left_ear="Etiolation Earring",
right_ear="Loquac. Earring",
left_ring="Kishar Ring",
right_ring="Prolix Ring",
back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}},
}
sets.precast.FastCast.Daurdabla = set_combine(sets.precast.FastCast.BardSong, {range=info.ExtraSongInstrument})
-- Precast sets to enhance JAs
sets.precast.JA.Nightingale = {feet="Bihu Slippers +1"}
sets.precast.JA.Troubadour = {body={ name="Bihu Jstcorps. +1", augments={'Enhances "Troubadour" effect',}},}
sets.precast.JA['Soul Voice'] = {legs={ name="Bihu Cannions +1", augments={'Enhances "Soul Voice" effect',}},}
-- 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+20','Weapon skill damage +3%','STR+6 DEX+6',}},
head="Volte Tiara",
body={ name="Bihu Jstcorps. +1", augments={'Enhances "Troubadour" effect',}},
hands="Nyame Gauntlets",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Ishvara Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
left_ring="Ilabrat Ring",
right_ring="Hetairoi Ring",
back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10','Damage taken-5%',}},
}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Evisceration'] = {
range={ name="Linos", augments={'Attack+20','Weapon skill damage +3%','STR+6 DEX+6',}},
head="Volte Tiara",
body={ name="Bihu Jstcorps. +1", augments={'Enhances "Troubadour" effect',}},
hands="Nyame Gauntlets",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Ishvara Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
left_ring="Ilabrat Ring",
right_ring="Hetairoi Ring",
back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10','Damage taken-5%',}},
}
sets.precast.WS['Rudras Storm'] = {
range={ name="Linos", augments={'Attack+20','Weapon skill damage +3%','STR+6 DEX+6',}},
head="Volte Tiara",
body={ name="Bihu Jstcorps. +1", augments={'Enhances "Troubadour" effect',}},
hands="Nyame Gauntlets",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Ishvara Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
left_ring="Ilabrat Ring",
right_ring="Hetairoi Ring",
back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10','Damage taken-5%',}},
}
sets.precast.WS['Exenterator'] = {
range={ name="Linos", augments={'Attack+20','Weapon skill damage +3%','STR+6 DEX+6',}},
head="Volte Tiara",
body={ name="Bihu Jstcorps. +1", augments={'Enhances "Troubadour" effect',}},
hands="Nyame Gauntlets",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Ishvara Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
left_ring="Ilabrat Ring",
right_ring="Hetairoi Ring",
back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10','Damage taken-5%',}},
}
sets.precast.WS['Mordant Rime'] = {
range={ name="Linos", augments={'Attack+20','Weapon skill damage +3%','STR+6 DEX+6',}},
head="Nyame Helm",
body={ name="Bihu Jstcorps. +1", augments={'Enhances "Troubadour" effect',}},
hands="Nyame Gauntlets",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck="Fotia Gorget",
waist="Fotia Belt",
left_ear="Ishvara Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
left_ring="Ilabrat Ring",
right_ring="Hetairoi Ring",
back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10','Damage taken-5%',}},
}
sets.precast['Savage Blade'] = {
range={ name="Linos", augments={'Attack+20','Weapon skill damage +3%','STR+6 DEX+6',}},
head="Nyame Helm",
body={ name="Bihu Jstcorps. +1", augments={'Enhances "Troubadour" effect',}},
hands="Nyame Gauntlets",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck="Fotia Gorget",
waist="Sailfi Belt +1",
left_ear="Ishvara Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
left_ring="Ilabrat Ring",
right_ring="Hetairoi Ring",
back={ name="Intarabus's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%','Damage taken-5%',}},
}
-- Midcast Sets
-- General set for recast times.
sets.midcast.FastRecast = {
}
sets.midcast['Savage Blade'] = {
range={ name="Linos", augments={'Attack+20','Weapon skill damage +3%','STR+6 DEX+6',}},
head="Nyame Helm",
body={ name="Bihu Jstcorps. +1", augments={'Enhances "Troubadour" effect',}},
hands="Nyame Gauntlets",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck="Fotia Gorget",
waist="Sailfi Belt +1",
left_ear="Ishvara Earring",
right_ear={ name="Moonshade Earring", augments={'Attack+4','TP Bonus +250',}},
left_ring="Ilabrat Ring",
right_ring="Hetairoi Ring",
back={ name="Intarabus's Cape", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%','Damage taken-5%',}},
}
-- Gear to enhance certain classes of songs.
sets.midcast.Ballad = {legs="Fili Rhingrave +1"}
sets.midcast.Lullaby = { main="Kali",
sub="Ammurapi Shield",
head="Brioso Roundlet +1",
body="Brioso Justau. +1",
hands="Brioso Cuffs +1",
legs="Brioso Cannions +1",
feet="Brioso Slippers +2",
neck="Moonbow whistle",
waist="Demonry sash",
left_ear="Digni. Earring",
right_ear="Darkside Earring",
left_ring="Sangoma Ring",
right_ring="Stikini Ring +1",
back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}},
}
sets.midcast.Madrigal = {head="Fili Calot +1",back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}},}
sets.midcast.Prelude = {back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}}}
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 = {legs="Mousai Seraweels"}
sets.midcast.Paeon = {head="Brioso Roundlet +1"}
sets.midcast.Carol = {hands="Mousai Gages"}
sets.midcast["Sentinel's Scherzo"] = {feet="Fili Cothurnes +1"}
sets.midcast['Magic Finale'] = { main="",
sub="Ammurapi Shield",
head="Brioso Roundlet +1",
body="Brioso Justau. +1",
hands="Brioso Cuffs +1",
legs="Fili rhingrave +1",
feet="Brioso Slippers +2",
neck="Moonbow whistle",
waist="Demonry Sash",
left_ear="Digni. Earring",
right_ear="Darkside Earring",
left_ring="Sangoma Ring",
right_ring="Stikini Ring +1",
back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}},
}
sets.midcast.Mazurka = {}
-- For song buffs (duration and AF3 set bonus)
sets.midcast.SongEffect = {main="Kali",
sub="Genmei Shield",
range="Gjallarhorn",
head="fili calot +1",
body="Fili Hongreline +1",
hands="Fili manchettes +1",
legs="Inyanga Shalwar +1",
feet="Brioso Slippers +2",
neck="Moonbow whistle",
waist="Luminary Sash",
left_ear="Musical Earring",
right_ear="Darkside Earring",
left_ring="Stikini ring",
right_ring="Stikini Ring +1",
back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}},
}
-- For song defbuffs (duration primary, accuracy secondary)
sets.midcast.SongDebuff = {
main="Kali",
sub="Ammurapi Shield",
head="Brioso Roundlet +1",
body="Brioso Justau. +1",
hands="Brioso Cuffs +1",
legs="Brioso Cannions +1",
feet="Brioso Slippers +2",
neck="Moonbow whistle",
waist="Luminary Sash",
left_ear="Digni. Earring",
right_ear="Darkside Earring",
left_ring="Sangoma Ring",
right_ring="Stikini Ring",
back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}},
}
-- For song defbuffs (accuracy primary, duration secondary)
sets.midcast.ResistantSongDebuff = {
main="Kali",
sub="Ammurapi Shield",
head="Brioso Roundlet +1",
body="Brioso Justau. +1",
hands="Brioso Cuffs +1",
legs="Brioso Cannions +1",
feet="Brioso Slippers +2",
neck="Moonbow whistle",
waist="Luminary Sash",
left_ear="Digni. Earring",
right_ear="Darkside Earring",
left_ring="Sangoma Ring",
right_ring="Stikini Ring",
back={ name="Intarabus's Cape", augments={'CHR+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}},
}
sets.midcast.LullabyFull = set_combine(sets.midcast.SongDebuff, sets.midcast.Lullaby)
sets.midcast.LullabyFull.ResistantSongDebuff = set_combine(sets.midcast.ResistantSongDebuff, sets.midcast.Lullaby)
-- Song-specific recast reduction
sets.midcast.SongRecast = {legs="Fili Rhingrave +1",} --back="Harmony Cape",waist="Corvax Sash",
--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="Daurdabla",
}
-- Other general spells and classes.
sets.midcast.Cure = {
main={ name="Serenity", augments={'MP+50','Enha.mag. skill +10','"Cure" potency +5%','"Cure" spellcasting time -10%',}},
sub="Clerisy Strap",
ammo="Impatiens",
head={ name="Vanya Hood", augments={'MP+50','"Fast Cast"+10','Haste+2%',}},
body="Heka's Kalasiris",
hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -2%','"Cure" spellcasting time -1%',}},
legs={ name="Lengo Pants", augments={'INT+4','Mag. Acc.+2','"Mag.Atk.Bns."+4',}},
feet={ name="Vanya Clogs", augments={'"Cure" potency +5%','"Cure" spellcasting time -15%','"Conserve MP"+6',}},
neck="Phalaina Locket",
waist="Hachirin-no-obi",
left_ear="Halasz Earring",
right_ear="Loquac. Earring",
left_ring="Sirona's Ring",
right_ring="Stikini Ring +1",
back="Perimede Cape",
}
sets.midcast.Curaga = sets.midcast.Cure
sets.midcast.Cursna = sets.midcast.Cure
sets.midcast['Enhancing Magic'] = {
sub="Ammurapi Shield",
head={ name="Telchine Cap", augments={'Enh. Mag. eff. dur. +6',}},
body={ name="Telchine Chas.", augments={'Spell interruption rate down -10%','Enh. Mag. eff. dur. +9',}},
hands={ name="Telchine Gloves", augments={'"Conserve MP"+5','Enh. Mag. eff. dur. +9',}},
legs={ name="Telchine Braconi", augments={'Enh. Mag. eff. dur. +10',}},
feet={ name="Telchine Pigaches", augments={'Mag. Evasion+9','"Fast Cast"+5','Enh. Mag. eff. dur. +10',}},
neck="Incanter's Torque",
waist="Embla sash",
left_ear="Gifted Earring",
right_ear="",
left_ring="Defending Ring",
right_ring="Lebeche Ring",
back="Perimede Cape",
}
sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
sets.midcast.RefreshRecieved = set_combine(sets.midcast['Enhancing Magic'], {back="Grapevine Cape",waist="Gishdubar Sash"})
-- Sets to return to when not performing an action.
-- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
sets.Idle = {}
sets.Idle.Main = {
main={ name="Kali", augments={'Mag. Acc.+15','String instrument skill +10','Wind instrument skill +10',}},
sub="Genmei Shield",
range="Oneiros Harp",
head="Fili Calot +1",
body={ name="Bihu Jstcorps +1", augments={'Enhances "Troubadour" effect',}},
hands={ name="Bihu Cuffs +1", augments={'Enhances "Con Brio" effect',}},
legs="Aya. Cosciales +2",
feet="Fili Cothurnes +1",
neck={ name="Loricate Torque +1", augments={'Path: A',}},
waist="Flume Belt +1",
left_ear="Musical Earring",
right_ear="Ethereal Earring",
left_ring="Defending Ring",
right_ring="Stikini Ring +1",
back={ name="Rhapsode's Cape", augments={'HP+29','Mag. Acc.+4','Enmity-5','Damage taken-1%',}},
}
sets.Idle.PDT = {
main={ name="Kali", augments={'Mag. Acc.+15','String instrument skill +10','Wind instrument skill +10',}},
sub="Genmei Shield",
range="Oneiros Harp",
head="Fili Calot +1",
body={ name="Bihu Jstcorps +1", augments={'Enhances "Troubadour" effect',}},
hands={ name="Bihu Cuffs +1", augments={'Enhances "Con Brio" effect',}},
legs="Aya. Cosciales +2",
feet="Fili Cothurnes +1",
neck={ name="Loricate Torque +1", augments={'Path: A',}},
waist="Flume Belt +1",
left_ear="Musical Earring",
right_ear="Ethereal Earring",
left_ring="Defending Ring",
right_ring="Stikini Ring +1",
back={ name="Rhapsode's Cape", augments={'HP+29','Mag. Acc.+4','Enmity-5','Damage taken-1%',}},
}
sets.Idle.Current = sets.Idle.Main
-- Defense sets
sets.defense.PDT = {}
sets.defense.MDT = {}
sets.Kiting = {feet="Fili Cothurnes +1"}
sets.latent_refresh = {waist="Fucho-no-obi"}
-- Engaged sets
sets.engaged = {
main="Aeneas",
sub="Genmei Shield",
range={ name="Linos", augments={'Accuracy+12 Attack+12','"Store TP"+4','Quadruple Attack +3',}},
head="Aya. Zucchetto +2",
body="Ayanmo Corazza +2",
hands="Bunzi's Gloves",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck="Bard's Charm +1",
waist="Sailfi Belt +1",
left_ear="Telos Earring",
right_ear="Brutal Earring",
left_ring="Ayanmo Ring",
right_ring="Hetairoi Ring",
back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10','Damage taken-5%',}},
}
sets.engaged.DualWield = {
main="Naegling",
sub="Centovente",
range={ name="Linos", augments={'Accuracy+12 Attack+12','"Store TP"+4','Quadruple Attack +3',}},
head="Aya. Zucchetto +2",
body="Ayanmo Corazza +2",
hands="Bunzi's Gloves",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck={ name="Bard's Charm +1", augments={'Path: A',}},
waist={ name="Sailfi Belt +1", augments={'Path: A',}},
left_ear="Telos Earring",
right_ear="Cessance Earring",
left_ring="Ayanmo Ring",
right_ring="Hetairoi Ring",
back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dual Wield"+10','Damage taken-5%',}},
}
sets.engaged.Shield = {
main="Naegling",
sub="Genmei Shield",
range={ name="Linos", augments={'Accuracy+12 Attack+12','"Store TP"+4','Quadruple Attack +3',}},
head="Aya. Zucchetto +2",
body="Ayanmo Corazza +2",
hands="Bunzi's Gloves",
legs="Nyame Flanchard",
feet="Nyame Sollerets",
neck={ name="Bard's Charm +1", augments={'Path: A',}},
waist={ name="Sailfi Belt +1", augments={'Path: A',}},
left_ear="Telos Earring",
right_ear="Cessance Earring",
left_ring="Ayanmo Ring",
right_ring="Hetairoi Ring",
back={ name="Intarabus's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10','Damage taken-5%',}},
}
sets.meva = {
main="Terra's Staff",
sub="Irenic Strap +1",
ammo="Staunch Tathlum",
head="Volte Cap",
body={ name="Telchine Chas.", augments={'Mag. Evasion+24','Enemy crit. hit rate -4','Enh. Mag. eff. dur. +10',}},
hands="Volte Bracers",
legs={ name="Telchine Braconi", augments={'Mag. Evasion+24','Enemy crit. hit rate -4','Enh. Mag. eff. dur. +9',}},
feet="Volte Boots",
neck="Warder's Charm +1",
waist="Carrier's Sash",
left_ear="Eabani Earring",
right_ear="Flashward Earring",
left_ring="Purity Ring",
right_ring="Vengeful Ring",
back="Solemnity Cape",
}
-- Relevant Obis. Add the ones you have.
sets.obi = {}
sets.obi.Wind = {waist='Hachirin-no-obi'}
sets.obi.Ice = {waist='Hachirin-no-obi'}
sets.obi.Lightning = {waist='Hachirin-no-obi'}
sets.obi.Light = {waist='Hachirin-no-obi'}
sets.obi.Dark = {waist='Hachirin-no-obi'}
sets.obi.Water = {waist='Hachirin-no-obi'}
sets.obi.Earth = {waist='Hachirin-no-obi'}
sets.obi.Fire = {waist='Hachirin-no-obi'}
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_pretarget(spell)
checkblocking(spell)
if spell.action_type == 'Magic' then
if aftercast_start and os.clock() - aftercast_start < waittime then
windower.add_to_chat(8,"Precast too early! Adding Delay:"..waittime - (os.clock() - aftercast_start))
cast_delay(waittime - (os.clock() - aftercast_start))
end
end
end
function job_precast(spell, action, spellMap, eventArgs)
--windower.add_to_chat(2,'Party Buffs in range?')
checkblocking(spell)
--[[
for i,v in pairs(buff) do
for i2,v2 in pairs(v) do
print(i2,v2)
end
end
]]
-- handle_equipping_gear(player.status)
precast_start = os.clock()
handle_equipping_gear(player.status)
if spell.type == 'BardSong' then
if buffactive.Nightingale then
local generalClass = get_song_class(spell)
if generalClass and sets.midcast[generalClass] then
windower.add_to_chat(8,'Equipping Midcast - Nightingale active.'..generalClass)
equip(sets.midcast[generalClass])
end
else
equip(sets.precast.FastCast.BardSong)
end
if buffactive.Troubadour and string.find(spell.name,'Lullaby') then
equip({range="Marsyas"})
equip(sets.midcast.LullabyFull)
windower.add_to_chat(8,'Marsyas Equipped - Troubadour / Lullaby active')
end
elseif string.find(spell.name,'Cur') and spell.name ~= 'Cursna' then
equip(sets.precast.FastCast.Cure)
elseif spell.name == 'Stoneskin' then
equip(sets.precast.FastCast.Stoneskin)
else
equip(sets.precast.FastCast)
end
-- Auto use Extra Song Instrument for Buffs if less than max # of songs
-- Some thoughts:
-- How to watch party buffs - can take from partybuffs lua and build a table.
local bard_buff_ids = S{195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 218, 219, 220, 221, 222}
num_bard_songs = 0
local self = windower.ffxi.get_player()
for i,v in pairs(self.buffs) do
if bard_buff_ids:contains(v) then
num_bard_songs = num_bard_songs +1
end
end
local generalClass = get_song_class(spell)
if num_bard_songs >= 2 and num_bard_songs < info.MaxSongs and spell.name ~= 'Honor March' and generalClass == 'SongEffect' then
windower.add_to_chat(10,"Swapping to "..info.ExtraSongInstrument.."! Number of bard buffs = "..num_bard_songs)
equip({range=info.ExtraSongInstrument})
end
-- end --
if spell.name == 'Honor March' then
equip({range="Marsyas"})
end
if string.find(spell.name,'Horde') and state.LullabyMode == 'Daurdabla' then
equip({range="Daurdabla"})
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)
local generalClass = get_song_class(spell)
if spell.action_type == 'Magic' then
if spell.type == 'BardSong' then
-- layer general gear on first, then let default handler add song-specific gear.
if generalClass and sets.midcast[generalClass] then
equip(sets.midcast[generalClass])
end
end
end
-- Auto use Extra Song Instrument for Buffs if less than max # of songs
if spell.english == 'Refresh' and spell.target.type == 'SELF' then
equip(sets.midcast.RefreshRecieved)
end
if num_bard_songs >= 2 and num_bard_songs < info.MaxSongs and spell.name ~= 'Honor March' and generalClass == 'SongEffect' then
equip({range=info.ExtraSongInstrument})
end
-- end --
if spell.name == 'Honor March' then
equip(sets.midcast.HonorMarch)
end
if buffactive.Troubadour and string.find(spell.name,'Lullaby') then
equip(sets.midcast.LullabyFull)
equip({range="Marsyas"})
end
weathercheck(spell.element)
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
end
weathercheck(spell.element)
end
function job_aftercast(spell, action, spellMap, eventArgs)
aftercast_start = os.clock()
local generalClass = get_song_class(spell)
if spell.type == 'BardSong' and not spell.interrupted then
-- if spell.target and spell.target.type == 'SELF' then
-- if spell.target.type ~= 'SELF' and spell.name ~= "Magic Finale" then -- (Only using Custom Timers for debuffs; no huge reason for buffs)
if spell.name ~= "Magic Finale" and (generalClass == "SongDebuff" or generalClass == "ResistantSongDebuff") then -- (Only using Custom Timers for debuffs; no huge reason for buffs)
--adjust_timers(spell, spellMap)
local dur = calculate_duration(spell, spellMap)
send_command('timers create "'..spell.target.name..':'..spell.name..'" '..dur..' down')
end
state.ExtraSongsMode:reset()
end
if state.SpellDebug.value == "On" then
spelldebug(spell)
end
if spell.interrupted then
add_to_chat(8,'--------- Casting Interupted: '..spell.name..'---------')
end
equip(sets.Idle.Current)
check_run_status()
if precast_start and state.SpellDebug.value == "On" then
add_to_chat(8,"Spell: "..spell.name..string.format(" Casting Time: %.2f", aftercast_start - precast_start))
end
precast_start = nil
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
function status_change(new,tab)
handle_equipping_gear(player.status)
if new == 'Resting' then
equip(sets.Resting)
else
equip(sets.Idle.Current)
end
end
-- Handle notifications of general user state change.
function job_state_change(stateField, newValue, oldValue)
job_handle_equipping_gear(player.status)
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- 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 spell.skill == 'Singing' then
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
else
return spell.skill
end
end
function calculate_duration(spell, 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 == "Moonbow 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 +2" 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 +2" 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 +1" 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" 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 +1' then mult = mult + 0.2 end
if spell.name == "Sentinel's Scherzo" and player.equipment.feet == "Fili Cothurnes +1" then mult = mult + 0.1 end
if MaxJobPoints == 1 then
mult = mult + 0.05
end
if buffactive.Troubadour then
mult = mult*2
end
if spell.name == "Sentinel's Scherzo" then
if buffactive['Soul Voice'] then
mult = mult*2
elseif buffactive['Marcato'] then
mult = mult*1.5
end
end
local generalClass = get_song_class(spell)
-- add_to_chat(8,'Info: Spell Name'..spell.name..' Spell Map:'..spellMap..' General Class:'..generalClass..' Multiplier:'..mult)
if spell.name == "Foe Lullaby II" or spell.name == "Horde Lullaby II" then
base = 60
elseif spell.name == "Foe Lullaby" or spell.name == "Horde Lullaby" then
base = 30
elseif spell.name == "Carnage Elegy" then
base = 180
elseif spell.name == "Battlefield Elegy" then
base = 120
elseif spell.name == "Pining Nocturne" then
base = 120
elseif spell.name == "Maiden's Virelai" then
base = 20
end
if generalClass == 'SongEffect' then
base = 120
totalDuration = math.floor(mult*base)
end
totalDuration = math.floor(mult*base)
if MaxJobPoints == 1 then
if string.find(spell.name,'Lullaby') then
-- add_to_chat(8,'Adding 20 seconds to Timer for Lullaby Job Points')
totalDuration = totalDuration + 20
end
if buffactive['Clarion Call'] then
if buffactive.Troubadour then
-- Doubles Clarion Call Gain for 80 seconds
totalDuration = totalDuration + 80
else
-- add_to_chat(8,'Adding 20 seconds to Timer for Clarion Call Job Points')
totalDuration = totalDuration + 40
end
end
if buffactive['Tenuto'] then
-- add_to_chat(8,'Adding 20 seconds to Timer for Tenuto Job Points')
totalDuration = totalDuration + 20
end
if buffactive['Marcato'] then
-- add_to_chat(8,'Adding 20 seconds to Timer for Marcato Job Points')
totalDuration = totalDuration + 20
end
end
if buffactive.Troubadour then
totalDuration = totalDuration + 20 -- Assuming 20 seconds for capped Trobodour and you actually pre-cast with a Bihu Justaucorps.
end
add_to_chat(8,'Total Duration:'..totalDuration)
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
-- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
function job_handle_equipping_gear(playerStatus, eventArgs)
disable_specialgear()
if state.TPMode.value == "WeaponLock" then
equip({main=weaponlock_main,sub=weaponlock_sub})
disable("main")
disable("sub")
else
enable("main")
enable("sub")
end
if state.IdleMode.value == "PDT" then
sets.Idle.Current = sets.Idle.PDT
elseif state.IdleMode.value == "MEVA" then
sets.Idle.Current = sets.meva
else
sets.Idle.Current = sets.Idle.Main
end
if playerStatus == 'Idle' then
equip(sets.Idle.Current)
end
end
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
set_macro_page(1, 3)
end
windower.raw_register_event('logout',reset_timers)While I'm not 100% skilled with GS enough to know exactly what needs changed, the reason it's messing up is there's a line in there that resets your ExtraSongsMode for some reason. This happens after you sing your first dummy song, and so you'd have to toggle back into Dummy mode every single time you sing a Dummy song, which is annoying.
I am terrible with GS and this is the same lua I use. All I did was create a set for my dummy songs and just labeled as the specific song the same way that this has a set for madrigal, prelude etc. You can then erase all the dummy set BS.
Leviathan.Boposhopo said: » While I'm not 100% skilled with GS enough to know exactly what needs changed, the reason it's messing up is there's a line in there that resets your ExtraSongsMode for some reason. This happens after you sing your first dummy song, and so you'd have to toggle back into Dummy mode every single time you sing a Dummy song, which is annoying. remove line 753, works after that. its the commands i dont understand tbh ... i have tried /console gs c setup ExtraSongMode dummy but its not working .. it still casts in full lenth gear ..
It's either /con gs c cycle ExtraSongsMode or /con gs c set ExtraSongsMode Dummy. The former will cycle through 'None', 'FullLength' and 'Dummy' while the latter will set it to 'Dummy'.
As Boposhopo said, if you remove line 753, it should stay in the mode you set it in. If I understand correctly : Because of line 734, 'FullLength' mode will use sets.midcast.Daurdabla to cast your songs. Because of line 817, 'Dummy' mode will use sets.midcast.DaurdablaDummy to cast your songs. |
||
|
All FFXI content and images © 2002-2025 SQUARE ENIX CO., LTD. FINAL
FANTASY is a registered trademark of Square Enix Co., Ltd.
|
||