|
Gearswap Support Thread
Valefor.Mattyc
Serveur: Valefor
Game: FFXI
Posts: 745
By Valefor.Mattyc 2014-08-25 13:19:25
hi, im sure this is a silly question, for my gearswap on ws's i use ifrit rings for both slots, im sure the problem is that same slot is trying to equip same ring and cancels out one, but is there a way i can fix it so this doesnt happen anymore? gets real annoying ws'n in k'yares/rajas/or PDT ring, any help would be greatly appreciated.
[+]
Serveur: Phoenix
Game: FFXI
Posts: 118
By Phoenix.Tigertail 2014-08-25 16:46:16
I'm using Bokura's SAM lua, and when I do ranged attacks im getting the error "Gearswap has detected an error in the user function precast:" it appears to be on line 444. attempt to index field '?' (a nil value). This is what line 444 says:
if player.equipment.ammo == 'empty' or player.inventory[check_ammo].count <= check_ammo_count then
I'm supernoobish with gearswap so I don't know what could be wrong. Any help would be appreciated. :D I haven't made changes to Bokura's file except for the gear parts. Thanks in advance.
By gdiShun 2014-08-25 17:05:39
Which file binds the F9-F12 keys?
VIP
Serveur: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-08-25 21:21:23
If you're using the Mote-* libraries, Mote-Globals. They can be overriden with your own file, User-Globals or <CharacterName>-Globals.
Also: read the wiki ( https://github.com/Kinematics/GearSwap-Jobs/wiki )
[+]
Serveur: Sylph
Game: FFXI
Posts: 21
By Sylph.Kingzak 2014-08-26 11:00:40
Hi, i would like to specifically only use dummy mode for paeons. I am/have a lazy brd mule and i dont want to cycle or set after every paeon, or use a macro.
Could anyone help me out? im using mototoototen brd GS. Thanks
Serveur: Odin
Game: FFXI
Posts: 84
By Odin.Celoria 2014-08-26 11:44:32
If someone can help me I would be eternally grateful, Keme from Phoenix did help me getting all the gearswap working for me, and all my jobs are working fine with all the gear with the exception of one.
My drk gearswap for some reason is not changing gear during souleater buff. Any other buff I use and it immediately swaps gear, however anytime I use souleater it never once changes, I checked spelling of gear and ja' but i couldn't find anything. Again I am a noob in training on this, no I don't even have my noob badge yet, so any help would be great.
--[[
=== Notes ===
-- Set format is as follows:
sets.engaged.[CombatForm][CombatWeapon][Offense or DefenseMode]
CombatForm = War
CombatWeapon = Scythe
The default sets are for Sam subjob with a Greatsword.
The above set format allows you to build sets for war and sam sub with either scythe or gs
--]]
--
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent.
function job_setup()
--state.Buff['Aftermath'] = buffactive['Aftermath: Lv.1'] or
--buffactive['Aftermath: Lv.2'] or
--buffactive['Aftermath: Lv.3']
--or false
state.Buff['Souleater'] = buffactive['Souleater'] or false
state.Buff['Last Resort'] = buffactive['Last Resort'] or false
scytheList = S{ 'Xbalanque', 'Anahera Scythe', 'Tajabit', 'Twilight Scythe' }
gsList = S{'Inanna', 'Tunglmyrkvi', 'Ukudyoni', 'Kaquljaan', 'Macbain' }
adjust_engaged_sets()
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
options.OffenseModes = {'Normal', 'Mid', 'Acc'}
options.DefenseModes = {'Normal', 'PDT', 'Reraise'}
options.WeaponskillModes = {'Normal', 'Mid', 'Acc'}
options.CastingModes = {'Normal'}
options.IdleModes = {'Normal'}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'PDT', 'Reraise'}
options.MagicalDefenseModes = {'MDT'}
state.Defense.PhysicalMode = 'PDT'
war_sj = player.sub_job == 'WAR' or false
adjust_engaged_sets()
get_combat_form()
-- Additional local binds
send_command('bind ^` input /ja "Hasso" <me>')
send_command('bind !` input /ja "Seigan" <me>')
send_command('bind ^[ input /lockstyle on')
send_command('bind ![ input /lockstyle off')
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function file_unload()
if binds_on_unload then
binds_on_unload()
end
send_command('unbind ^`')
send_command('unbind !-')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Precast sets to enhance JAs
sets.precast.JA['Diabolic Eye'] = {hands="Fallen's Finger Gauntlets"}
sets.precast.JA['Arcane Circle'] = {feet="Ignominy Sollerets"}
sets.precast.JA['Nether Void'] = {legs="Bale Flanchard +2"}
sets.precast.JA['Dark Seal'] = {head="Fallen's burgeonet"}
sets.precast.JA['Souleater'] = {head="Ignominy burgeonet +1"}
sets.precast.JA['Last Resort'] = {feet="Fallen's Sollerets"}
sets.precast.JA['Blood Weapon'] = {body="Fallen's Cuirass +1"}
sets.NightAccAmmo = {ammo="Fire Bomblet"}
sets.DayAccAmmo = {ammo="Tengu-no-Hane"}
sets.RegularAmmo = {ammo="Hagneia Stone"}
sets.Ammo = select_static_ammo()
-- Waltz set (chr and vit)
sets.precast.Waltz = {
head="Yaoyotl Helm",
body="Fallen's Cuirass +1",
legs="Cizin Breeches +1",
feet="Whirlpool Greaves"
}
-- Fast cast sets for spells
sets.precast.FC = {
head="Cizin Helm",
ear1="Loquacious Earring",
hands="Buremte Gloves",
ring2="Prolix Ring"
}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, { neck="Magoraga Beads" })
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, { neck="Stoicheion Medal" })
sets.precast.FC['Absorb-TP'] = set_combine(sets.precast.FC, { hands="Bale Gauntlets +2" })
sets.precast.FC['Dark Magic'] = set_combine(sets.precast.FC, { head="Fallen's Burgeonet" })
-- Midcast Sets
sets.midcast.FastRecast = {
head="Otomi Helm",
hands="Cizin Mufflers +1",
waist="Goading Belt",
feet="Ejekamal Boots"
}
-- Specific spells
sets.midcast.Utsusemi = {
head="Otomi Helm",
waist="Goading Belt",
feet="Ejekamal Boots"
}
sets.midcast['Dark Magic'] = {
head="Ignominy burgeonet +1",
neck="Dark Torque",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="Demon's Harness",
hands="Pavor Gauntlets",
ring1="Sangoma Ring",
ring2="Anhja Ring",
back="Abyss Cape",
waist="Goading Belt",
legs="Bale Flanchard +2",
feet="Ignominy sollerets"
}
sets.midcast['Enfeebling Magic'] = set_combine(sets.midcast['Dark Magic'], {
head="Otomi Helm",
feet="Ignominy Sollerets",
waist="Ovate rope",
back="Abyss Cape"
})
sets.midcast['Elemental Magic'] = {
head="Ignominy burgeonet +1",
neck="Stoicheion Medal",
ear1="Friomisi Earring",
ear2="Crematio Earring",
body="Fallen's Cuirass +1",
hands="Fallen's Finger Gauntlets",
--legs="Haruspex Slops",
legs="Ignominy Flanchard +1",
ring1="Sangoma Ring",
ring2="Acumen Ring",
back="Toro Cape",
feet="Ignominy Sollerets"
}
sets.midcast['Dread Spikes'] = set_combine(sets.midcast['Dark Magic'], {
--head="Fallen's Burgeonet +1",
body="Bale Cuirass +2",
hands="Boor Braceletes",
ring1="Beeline Ring",
ring2="K'ayres Ring",
back="Repulse Mantle",
legs="Ignominy Flanchard +1",
feet="Ejekamal Boots"
})
sets.midcast.Drain = sets.midcast['Dark Magic']
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Absorb = set_combine(sets.midcast['Dark Magic'], {
back="Chuparrosa Mantle",
feet="Black Sollerets"
})
sets.midcast['Absorb-TP'] = set_combine(sets.midcast.Absorb, {
hands="Pavor gauntlets"
})
-- Weaponskill sets
sets.precast.WS = {
ammo="Aqreqaq Bomblet",
head="Otomi Helm",
neck="Bale Choker",
ear1="Brutal Earring",
ear2="Moonshade Earring",
body="Ignominy Cuirass +1",
hands="Mikinaak Gauntlets",
ring1="Rajas Ring",
ring2="Pyrosoul Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Ignominy Flanchard +1",
feet="Ejekamal boots"
}
sets.precast.WS.Mid = set_combine(sets.precast.WS, {
head="Otomi Helm",
feet="Ejekamal Boots"
})
sets.precast.WS.Acc = set_combine(sets.precast.WS.Mid, {
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
ring1="Mars's Ring"
})
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Catastrophe'] = set_combine(sets.precast.WS, {neck="Shadow Gorget"})
sets.precast.WS['Catastrophe'].Mid = set_combine(sets.precast.WS['Catastrophe'], {waist="Soil Belt"})
sets.precast.WS['Catastrophe'].Acc = set_combine(sets.precast.WS.Acc, {neck="Shadow Gorget", waist="Soil Belt"})
-- INT
sets.precast.WS['Entropy'] = set_combine(sets.precast.WS, {
head="Otomi Helm",
neck="Shadow Gorget",
back="Atheling Mantle",
ring1="Diamond Ring",
waist="Soil Belt",
feet="Ejekamal Boots"
})
sets.precast.WS['Sanguine Blade'] = set_combine(sets.precast.WS, {
head="Ignominy burgeonet +1",
neck="Stoicheion Medal",
ear1="Friomisi Earring",
ear2="Crematio Earring",
body="Fallen's Cuirass +1",
hands="Fallen's Finger Gauntlets",
--legs="Haruspex Slops",
legs="Ignominy Flanchard +1",
ring1="Diamond Ring",
ring2="Acumen Ring",
back="Toro Cape",
feet="Ignominy Sollerets"
})
sets.precast.WS['Entropy'].Mid = set_combine(sets.precast.WS['Entropy'], {waist="Caudata Belt"})
sets.precast.WS['Entropy'].Acc = set_combine(sets.precast.WS['Entropy'].Mid, {
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
})
sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {
head="Ighwa Cap",
neck="Shadow Gorget",
hands="Umuthi Gloves",
back="Atheling Mantle",
waist="Soil Belt",
feet="Whirlpool Greaves"
})
sets.precast.WS['Resolution'] = set_combine(sets.precast.WS, {
ear1="Brutal Earring",
ear2="Moonshade Earring",
neck="Soil Gorget",
--hands="Mikinaak gauntlets",
back="Atheling Mantle",
waist="Soil Belt",
})
sets.precast.WS['Resolution'].Mid = set_combine(sets.precast.WS['Resolution'], {
head="Otomi Helm",
hands="Mikinaak Gauntlets",
feet="Ejekamal Boots"
})
sets.precast.WS['Resolution'].Acc = set_combine(sets.precast.WS.Acc, {
neck="Soil Gorget",
waist="Soil Belt"
})
sets.precast.WS['Torcleaver'] = set_combine(sets.precast.WS, {
body="Phorcys Korazin",
neck="Aqua Gorget",
waist="Caudata Belt"
})
-- 60% STR / 60% MND
sets.precast.WS['Cross Reapter'] = set_combine(sets.precast.WS, {
hands="Cizin Mufflers +1",
neck="Aqua Gorget",
waist="Metalsinger belt"
})
-- 50% STR / 50% INT
sets.precast.WS['Spiral Hell'] = set_combine(sets.precast.WS['Entropy'], {
head="Ighwa Cap",
body="Phorcys Korazin",
neck="Aqua Gorget",
waist="Metalsinger belt",
})
sets.precast.WS['Shadow of Death'] = set_combine(sets.precast.WS['Entropy'], {
head="Ignominy burgeonet +1",
neck="Aqua Gorget",
ear1="Friomisi Earring",
ear2="Crematio Earring",
hands="Fallen's Finger Gauntlets",
waist="Windbuffet Belt",
back="Toro Cape",
feet="Ignominy Sollerets"
})
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {
head="Twilight Helm",
neck="Republican Silver Medal",
body="Ares' Cuirass +1",
hands="Cizin Mufflers +1",
ring1="Dark Ring",
ring2="Paguroidea Ring",
legs="Crimson Cuisses"
}
-- Idle sets
sets.idle.Town = {
head="Ignominy burgeonet +1",
neck="Agitator's Collar",
ear1="Brutal Earring",
ear2="Trux Earring",
body="Ares' Cuirass +1",
hands="Ares' Gauntlets +1",
ring1="Rajas Ring",
ring2="Mars's Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Crimson Cuisses",
feet="Fallen's Sollerets +1"
}
sets.idle.Field = set_combine(sets.idle.Town, {
head="Twilight Helm",
neck="Bale Choker",
body="Ares' Cuirass +1",
hands="Cizin Mufflers +1",
ring1="Dark Ring",
ring2="Paguroidea Ring",
back="Repulse Mantle",
legs="Crimson Cuisses",
feet="Fallen's Sollerets +1"
})
sets.idle.Weak = {
head="Twilight Helm",
neck="Bale Choker",
body="Twilight Mail",
ring1="Dark Ring",
ring2="Paguroidea Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Crimson Cuisses",
feet="Fallen's Sollerets +1"
}
sets.refresh = {
neck="Bale Choker",
body="Ares' Cuirass +1"
}
-- Defense sets
sets.defense.PDT = {
head="Ighwa Cap",
neck="Agitator's Collar",
body="Xaddi Mail",
hands="Cizin Mufflers +1",
back="Repulse Mantle",
ring1="Dark Ring",
ring2="Patricius Ring",
legs="Cizin Breeches +1",
feet="Cizin Greaves +1"
}
sets.defense.Reraise = sets.idle.Weak
sets.defense.MDT = set_combine(sets.defense.PDT, {
neck="Twilight Torque",
ring2="K'ayres Ring"
})
sets.Kiting = {legs="Crimson Cuisses"}
sets.Reraise = {head="Twilight Helm",body="Twilight Mail"}
-- Defensive sets to combine with various weapon-specific sets below
-- These allow hybrid acc/pdt sets for difficult content
sets.Defensive = {
head="Ighwa Cap",
neck="Agitator's Collar",
hands="Cizin Mufflers +1",
ring2="Patricius Ring",
legs="Cizin Breeches +1"
}
sets.Defensive_Mid = {
head="Ighwa Cap",
neck="Agitator's Collar",
body="Cizin Mail +1",
hands="Cizin Mufflers +1",
ring2="Patricius Ring",
legs="Cizin Breeches +1"
}
sets.Defensive_Acc = {
head="Ighwa Cap",
neck="Agitator's Collar",
hands="Umuthi Gloves",
body="Cizin Mail +1",
ring1="Beeline Ring",
ring2="Patricius Ring",
legs="Cizin Breeches +1",
feet="Cizin Greaves +1"
}
-- Engaged set
-- Macbain = needs 30 STP TP & 5 STP in WS
sets.engaged = {
--sub="Pole Grip",
ammo="Hagneia Stone",
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
body="Pak corselet",
hands="Cizin Mufflers +1",
ring1="Rajas Ring",
ring2="K'ayres Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Aetosaur trousers",
feet="Ejekamal Boots"
}
sets.engaged.Mid = set_combine(sets.engaged, {
ammo="Fire Bomblet",
head="Yaoyotl Helm",
hands="Xaddi Gauntlets",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
})
sets.engaged.Acc = set_combine(sets.engaged.Mid, {
neck="Iqabi Necklace",
ring1="Mars's Ring",
ring2="Patricius Ring",
hands="Xaddi Gauntlets",
waist="Anguinus Belt",
})
sets.engaged.PDT = set_combine(sets.engaged, sets.Defensive)
sets.engaged.Mid.PDT = set_combine(sets.engaged.Mid, sets.Defensive_Mid)
sets.engaged.Acc.PDT = set_combine(sets.engaged.Acc, sets.Defensive_Acc)
-- lower delay greatswords
sets.engaged.LDGS = set_combine(sets.engaged, {
head="Yaoyotl Helm",
feet="Mikinaak Greaves"
})
sets.engaged.LDGS.Mid = set_combine(sets.engaged.LDGS, {
ammo="Fire Bomblet",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
})
sets.engaged.LDGS.Acc = sets.engaged.Acc
sets.engaged.LDGS.PDT = set_combine(sets.engaged.LDGS, sets.Defensive)
sets.engaged.LDGS.Mid.PDT = set_combine(sets.engaged.LDGS.Mid, sets.Defensive_Mid)
sets.engaged.LDGS.Acc.PDT = sets.engaged.Acc.PDT
-- GS war sub
sets.engaged.War = set_combine(sets.engaged, {
ear1="Brutal Earring",
ear2="Tripudio Earring",
head="Yaoyotl Helm",
legs="Phorcys Dirs"
})
sets.engaged.War.Mid = set_combine(sets.engaged.War, {
ammo="Hagneia Stone",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
legs="Xaddi Cuisses",
feet="Ejekamal Boots"
})
sets.engaged.War.Acc = set_combine(sets.engaged.War.Mid, {
neck="Iqabi Necklace",
hands="Xaddi Gauntlets",
ring1="Mars's Ring",
ring2="Patricius Ring",
waist="Anguinus Belt"
})
sets.engaged.War.PDT = set_combine(sets.engaged.War, sets.Defensive)
sets.engaged.War.Mid.PDT = set_combine(sets.engaged.War.Mid, sets.Defensive_Mid)
sets.engaged.War.Acc.PDT = set_combine(sets.engaged.War.Acc, sets.Defensive_Acc)
-- Scythe
sets.engaged.Scythe = set_combine(sets.engaged, {
--sub="Pole Grip",
ammo="Hagneia Stone",
hands="Xaddi Gauntlets",
legs="Cizin Breeches +1",
feet="Ejekamal Boots"
})
sets.engaged.Scythe.Mid = set_combine(sets.engaged.Scythe, {
head="Yaoyotl Helm",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
legs="Xaddi Cuisses"
})
sets.engaged.Scythe.Acc = set_combine(sets.engaged.Scythe.Mid, {
neck="Iqabi Necklace",
ring1="Mars's Ring",
ring2="Patricius Ring",
waist="Anguinus Belt"
})
sets.engaged.Scythe.PDT = set_combine(sets.engaged.Scythe, sets.Defensive)
sets.engaged.Scythe.Mid.PDT = set_combine(sets.engaged.Scythe.Mid, sets.Defensive_Mid)
sets.engaged.Scythe.Acc.PDT = set_combine(sets.engaged.Scythe.Acc, sets.Defensive_Acc)
-- Scythe war sub (aim for 40 stp)
sets.engaged.War.Scythe = {
--sub="Bloodrain Strap",
ammo="Hagneia Stone",
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Brutal Earring",
ear2="Tripudio Earring",
body="Xaddi Mail",
hands="Cizin Mufflers +1",
ring1="Rajas Ring",
ring2="K'ayres Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Xaddi Cuisses",
feet="Mikinaak Greaves"
}
sets.engaged.War.Scythe.Mid = set_combine(sets.engaged.War.Scythe, {
head="Yaoyotl Helm",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
feet="Ejekamal Boots"
})
sets.engaged.War.Scythe.Acc = set_combine(sets.engaged.War.Scythe.Mid, {
neck="Iqabi Necklace",
hands="Buremte Gloves",
ring1="Mars's Ring",
ring2="Patricius Ring",
waist="Anguinus Belt",
})
sets.engaged.War.Scythe.PDT = set_combine(sets.engaged.War.Scythe, sets.Defensive)
sets.engaged.War.Scythe.Mid.PDT = set_combine(sets.engaged.War.Scythe.Mid, sets.Defensive_Mid)
sets.engaged.War.Scythe.Acc.PDT = set_combine(sets.engaged.War.Scythe.Acc, sets.Defensive_Acc)
sets.engaged.Reraise = set_combine(sets.engaged, {
head="Twilight Helm",neck="Twilight Torque",
body="Twilight Mail"
})
sets.engaged.HighHaste = set_combine(sets.engaged, {
head="Otomi Helm",
waist="Windbuffet Belt",
})
sets.engaged.MaxHaste = sets.engaged.HighHaste
sets.engaged.EmbravaHaste = sets.engaged.HighHaste
sets.buff['Last Resort'] = {
feet="Fallen's Sollerets"
}
state.Buff['Souleater'] = { head="Ignominy burgeonet +1" }
end
function job_pretarget(spell, action, spellMap, eventArgs)
end
-- 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 state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = true
end
if spell.action_type == 'Magic' then
equip(sets.precast.FC)
end
if Souleater_active() then
disable('head')
else
enable('head')
end
end
function job_post_precast(spell, action, spellMap, eventArgs)
if spell.type == 'WeaponSkill' then
if state.Buff['Souleater'] then
equip(sets.buff.Souleater)
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
equip(sets.midcast.FastRecast)
end
end
-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
if state.DefenseMode == 'Reraise' or
(state.Defense.Active and state.Defense.Type == 'Physical' and state.Defense.PhysicalMode == 'Reraise') then
equip(sets.Reraise)
end
end
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
end
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-- Called before the Include starts constructing melee/idle/resting sets.
-- Can customize state or custom melee class values at this point.
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_handle_equipping_gear(status, eventArgs)
sets.Ammo = select_static_ammo()
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 50 then
idleSet = set_combine(idleSet, sets.refresh)
end
return idleSet
end
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
meleeSet = set_combine(meleeSet, sets.Ammo)
if state.Buff['Souleater'] then
meleeSet = set_combine(meleeSet, sets.buff.Souleater)
end
if state.Buff['Last Resort'] then
meleeSet = set_combine(meleeSet, sets.buff['Last Resort'])
end
return meleeSet
end
-------------------------------------------------------------------------------------------------------------------
-- General hooks for other events.
-------------------------------------------------------------------------------------------------------------------
-- Called when the player's status changes.
function job_status_change(newStatus, oldStatus, eventArgs)
sets.Ammo = select_static_ammo()
if newStatus == "Engaged" then
adjust_engaged_sets()
end
if Souleater_active() then
disable('head')
else
enable('head')
end
end
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
--if S{'haste','march','embrava','haste samba', 'last resort'}:contains(buff:lower()) then
--if S{'last resort'}:contains(buff:lower()) then
-- determine_haste_group()
-- handle_equipping_gear(player.status)
--end
if state.Buff[buff] ~= nil then
state.Buff[buff] = gain
handle_equipping_gear(player.status)
end
-- Some informative output
if buff == 'Nether Void' and gain then
add_to_chat(122, 'Next Absorb or Drain potency +75%!')
elseif buff == 'Dark Seal' and gain then
add_to_chat(122, 'Enhanced Dark Magic Accuracy!')
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)
war_sj = player.sub_job == 'WAR' or false
adjust_engaged_sets()
get_combat_form()
sets.Ammo = select_static_ammo()
if Souleater_active() then
disable('head')
else
enable('head')
end
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function get_combat_form()
if war_sj then
state.CombatForm = "War"
else
state.CombatForm = nil
end
end
function Souleater_active()
return state.Buff['Souleater']
end
function adjust_engaged_sets()
if scytheList:contains(player.equipment.main) then
state.CombatWeapon = "Scythe"
elseif gsList:contains(player.equipment.main) then
state.CombatWeapon = "LDGS"
else -- use regular set
state.CombatWeapon = nil
end
--adjust_melee_groups()
--determine_haste_group()
end
function select_static_ammo()
if state.OffenseMode == 'Acc' or state.OffenseMode == 'Mid' then
if world.time >= (18*60) or world.time <= (6*60) then
return sets.NightAccAmmo
else
return sets.DayAccAmmo
end
else
return sets.RegularAmmo
end
end
--function adjust_melee_groups()
-- classes.CustomMeleeGroups:clear()
-- if state.Buff.Aftermath then
-- classes.CustomMeleeGroups:append('AM')
-- end
--end
function determine_haste_group()
-- This section only applies to LR being up
--
-- 1) uncapped delay reduction: 26% gear haste + LR's 25% JA haste
-- 2) HighHaste - Marches: 16% gear haste with march+3, 14% with march+4, 12% with march+5
-- 3) EmbravaHaste - embrava: 21% gear haste if sch is naked alt, 17% if it's capped potency
-- 4) MaxHaste - capped magic haste: 12% gear haste
classes.CustomMeleeGroups:clear()
--if buffactive.embrava and (buffactive['last resort'] or buffactive.march == 2 or (buffactive.march and buffactive.haste)) then
-- classes.CustomMeleeGroups:append('MaxHaste')
--elseif buffactive.march == 2 and (buffactive.haste or buffactive['last resort']) then
-- classes.CustomMeleeGroups:append('MaxHaste')
--elseif buffactive.embrava and (buffactive.haste or buffactive.march) then
-- classes.CustomMeleeGroups:append('EmbravaHaste')
--elseif buffactive.march == 1 and (buffactive['last resort'] or buffactive.haste or buffactive['haste samba']) then
-- classes.CustomMeleeGroups:append('HighHaste')
--elseif buffactive.march == 2 then
-- classes.CustomMeleeGroups:append('HighHaste')
if buffactive['last resort'] then
classes.CustomMeleeGroups:append('LastResort')
end
end
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'DNC' then
set_macro_page(6, 2)
elseif player.sub_job == 'SAM' then
set_macro_page(6, 4)
else
set_macro_page(6, 2)
end
end
Cerberus.Conagh
Serveur: Cerberus
Game: FFXI
Posts: 3189
By Cerberus.Conagh 2014-08-26 11:53:28
Code -- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
meleeSet = set_combine(meleeSet, sets.Ammo)
if state.Buff['Souleater'] then
meleeSet = set_combine(meleeSet, sets.buff.Souleater)
end
if state.Buff['Last Resort'] then
meleeSet = set_combine(meleeSet, sets.buff['Last Resort'])
Why is Last resort and Souleater sets defined differently? Code set_combine(meleeSet, sets.buff['Souleater'])
end
if state.Buf Makes more sense.
as your sets defineed like this ~
Code sets.buff['Last Resort'] = {
feet="Fallen's Sollerets"
}
state.Buff['Souleater'] = { head="Ignominy burgeonet +1" }
end
You have also defined sets incorrectly, you have created s state for Souleater, but created a set for Last Resort. Your rule for when Souleater is active is to equip a set you have not defined~ so you need to change state Souleater to Code
sets.buff['Souleater'] ={ feet="Fallen's Sollerets" }
Serveur: Odin
Game: FFXI
Posts: 84
By Odin.Celoria 2014-08-26 12:13:19
So could you translate that to complete idiot for me?
I don't know why it was set separately I actually copied and pasted this from another site and adjusted it for myself. Can you tell me what lines I am removing for which of these modifications.
Cerberus.Conagh
Serveur: Cerberus
Game: FFXI
Posts: 3189
By Cerberus.Conagh 2014-08-26 12:22:45
So could you translate that to complete idiot for me?
I don't know why it was set separately I actually copied and pasted this from another site and adjusted it for myself. Can you tell me what lines I am removing for which of these modifications. Code --[[
=== Notes ===
-- Set format is as follows:
sets.engaged.[CombatForm][CombatWeapon][Offense or DefenseMode]
CombatForm = War
CombatWeapon = Scythe
The default sets are for Sam subjob with a Greatsword.
The above set format allows you to build sets for war and sam sub with either scythe or gs
--]]
--
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent.
function job_setup()
--state.Buff['Aftermath'] = buffactive['Aftermath: Lv.1'] or
--buffactive['Aftermath: Lv.2'] or
--buffactive['Aftermath: Lv.3']
--or false
state.Buff['Souleater'] = buffactive['Souleater'] or false
state.Buff['Last Resort'] = buffactive['Last Resort'] or false
scytheList = S{ 'Xbalanque', 'Anahera Scythe', 'Tajabit', 'Twilight Scythe' }
gsList = S{'Inanna', 'Tunglmyrkvi', 'Ukudyoni', 'Kaquljaan', 'Macbain' }
adjust_engaged_sets()
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
options.OffenseModes = {'Normal', 'Mid', 'Acc'}
options.DefenseModes = {'Normal', 'PDT', 'Reraise'}
options.WeaponskillModes = {'Normal', 'Mid', 'Acc'}
options.CastingModes = {'Normal'}
options.IdleModes = {'Normal'}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'PDT', 'Reraise'}
options.MagicalDefenseModes = {'MDT'}
state.Defense.PhysicalMode = 'PDT'
war_sj = player.sub_job == 'WAR' or false
adjust_engaged_sets()
get_combat_form()
-- Additional local binds
send_command('bind ^` input /ja "Hasso" <me>')
send_command('bind !` input /ja "Seigan" <me>')
send_command('bind ^[ input /lockstyle on')
send_command('bind ![ input /lockstyle off')
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function file_unload()
if binds_on_unload then
binds_on_unload()
end
send_command('unbind ^`')
send_command('unbind !-')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Precast sets to enhance JAs
sets.precast.JA['Diabolic Eye'] = {hands="Fallen's Finger Gauntlets"}
sets.precast.JA['Arcane Circle'] = {feet="Ignominy Sollerets"}
sets.precast.JA['Nether Void'] = {legs="Bale Flanchard +2"}
sets.precast.JA['Dark Seal'] = {head="Fallen's burgeonet"}
sets.precast.JA['Souleater'] = {head="Ignominy burgeonet +1"}
sets.precast.JA['Last Resort'] = {feet="Fallen's Sollerets"}
sets.precast.JA['Blood Weapon'] = {body="Fallen's Cuirass +1"}
sets.NightAccAmmo = {ammo="Fire Bomblet"}
sets.DayAccAmmo = {ammo="Tengu-no-Hane"}
sets.RegularAmmo = {ammo="Hagneia Stone"}
sets.Ammo = select_static_ammo()
-- Waltz set (chr and vit)
sets.precast.Waltz = {
head="Yaoyotl Helm",
body="Fallen's Cuirass +1",
legs="Cizin Breeches +1",
feet="Whirlpool Greaves"
}
-- Fast cast sets for spells
sets.precast.FC = {
head="Cizin Helm",
ear1="Loquacious Earring",
hands="Buremte Gloves",
ring2="Prolix Ring"
}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, { neck="Magoraga Beads" })
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, { neck="Stoicheion Medal" })
sets.precast.FC['Absorb-TP'] = set_combine(sets.precast.FC, { hands="Bale Gauntlets +2" })
sets.precast.FC['Dark Magic'] = set_combine(sets.precast.FC, { head="Fallen's Burgeonet" })
-- Midcast Sets
sets.midcast.FastRecast = {
head="Otomi Helm",
hands="Cizin Mufflers +1",
waist="Goading Belt",
feet="Ejekamal Boots"
}
-- Specific spells
sets.midcast.Utsusemi = {
head="Otomi Helm",
waist="Goading Belt",
feet="Ejekamal Boots"
}
sets.midcast['Dark Magic'] = {
head="Ignominy burgeonet +1",
neck="Dark Torque",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="Demon's Harness",
hands="Pavor Gauntlets",
ring1="Sangoma Ring",
ring2="Anhja Ring",
back="Abyss Cape",
waist="Goading Belt",
legs="Bale Flanchard +2",
feet="Ignominy sollerets"
}
sets.midcast['Enfeebling Magic'] = set_combine(sets.midcast['Dark Magic'], {
head="Otomi Helm",
feet="Ignominy Sollerets",
waist="Ovate rope",
back="Abyss Cape"
})
sets.midcast['Elemental Magic'] = {
head="Ignominy burgeonet +1",
neck="Stoicheion Medal",
ear1="Friomisi Earring",
ear2="Crematio Earring",
body="Fallen's Cuirass +1",
hands="Fallen's Finger Gauntlets",
--legs="Haruspex Slops",
legs="Ignominy Flanchard +1",
ring1="Sangoma Ring",
ring2="Acumen Ring",
back="Toro Cape",
feet="Ignominy Sollerets"
}
sets.midcast['Dread Spikes'] = set_combine(sets.midcast['Dark Magic'], {
--head="Fallen's Burgeonet +1",
body="Bale Cuirass +2",
hands="Boor Braceletes",
ring1="Beeline Ring",
ring2="K'ayres Ring",
back="Repulse Mantle",
legs="Ignominy Flanchard +1",
feet="Ejekamal Boots"
})
sets.midcast.Drain = sets.midcast['Dark Magic']
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Absorb = set_combine(sets.midcast['Dark Magic'], {
back="Chuparrosa Mantle",
feet="Black Sollerets"
})
sets.midcast['Absorb-TP'] = set_combine(sets.midcast.Absorb, {
hands="Pavor gauntlets"
})
-- Weaponskill sets
sets.precast.WS = {
ammo="Aqreqaq Bomblet",
head="Otomi Helm",
neck="Bale Choker",
ear1="Brutal Earring",
ear2="Moonshade Earring",
body="Ignominy Cuirass +1",
hands="Mikinaak Gauntlets",
ring1="Rajas Ring",
ring2="Pyrosoul Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Ignominy Flanchard +1",
feet="Ejekamal boots"
}
sets.precast.WS.Mid = set_combine(sets.precast.WS, {
head="Otomi Helm",
feet="Ejekamal Boots"
})
sets.precast.WS.Acc = set_combine(sets.precast.WS.Mid, {
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
ring1="Mars's Ring"
})
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Catastrophe'] = set_combine(sets.precast.WS, {neck="Shadow Gorget"})
sets.precast.WS['Catastrophe'].Mid = set_combine(sets.precast.WS['Catastrophe'], {waist="Soil Belt"})
sets.precast.WS['Catastrophe'].Acc = set_combine(sets.precast.WS.Acc, {neck="Shadow Gorget", waist="Soil Belt"})
-- INT
sets.precast.WS['Entropy'] = set_combine(sets.precast.WS, {
head="Otomi Helm",
neck="Shadow Gorget",
back="Atheling Mantle",
ring1="Diamond Ring",
waist="Soil Belt",
feet="Ejekamal Boots"
})
sets.precast.WS['Sanguine Blade'] = set_combine(sets.precast.WS, {
head="Ignominy burgeonet +1",
neck="Stoicheion Medal",
ear1="Friomisi Earring",
ear2="Crematio Earring",
body="Fallen's Cuirass +1",
hands="Fallen's Finger Gauntlets",
--legs="Haruspex Slops",
legs="Ignominy Flanchard +1",
ring1="Diamond Ring",
ring2="Acumen Ring",
back="Toro Cape",
feet="Ignominy Sollerets"
})
sets.precast.WS['Entropy'].Mid = set_combine(sets.precast.WS['Entropy'], {waist="Caudata Belt"})
sets.precast.WS['Entropy'].Acc = set_combine(sets.precast.WS['Entropy'].Mid, {
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
})
sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {
head="Ighwa Cap",
neck="Shadow Gorget",
hands="Umuthi Gloves",
back="Atheling Mantle",
waist="Soil Belt",
feet="Whirlpool Greaves"
})
sets.precast.WS['Resolution'] = set_combine(sets.precast.WS, {
ear1="Brutal Earring",
ear2="Moonshade Earring",
neck="Soil Gorget",
--hands="Mikinaak gauntlets",
back="Atheling Mantle",
waist="Soil Belt",
})
sets.precast.WS['Resolution'].Mid = set_combine(sets.precast.WS['Resolution'], {
head="Otomi Helm",
hands="Mikinaak Gauntlets",
feet="Ejekamal Boots"
})
sets.precast.WS['Resolution'].Acc = set_combine(sets.precast.WS.Acc, {
neck="Soil Gorget",
waist="Soil Belt"
})
sets.precast.WS['Torcleaver'] = set_combine(sets.precast.WS, {
body="Phorcys Korazin",
neck="Aqua Gorget",
waist="Caudata Belt"
})
-- 60% STR / 60% MND
sets.precast.WS['Cross Reapter'] = set_combine(sets.precast.WS, {
hands="Cizin Mufflers +1",
neck="Aqua Gorget",
waist="Metalsinger belt"
})
-- 50% STR / 50% INT
sets.precast.WS['Spiral Hell'] = set_combine(sets.precast.WS['Entropy'], {
head="Ighwa Cap",
body="Phorcys Korazin",
neck="Aqua Gorget",
waist="Metalsinger belt",
})
sets.precast.WS['Shadow of Death'] = set_combine(sets.precast.WS['Entropy'], {
head="Ignominy burgeonet +1",
neck="Aqua Gorget",
ear1="Friomisi Earring",
ear2="Crematio Earring",
hands="Fallen's Finger Gauntlets",
waist="Windbuffet Belt",
back="Toro Cape",
feet="Ignominy Sollerets"
})
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {
head="Twilight Helm",
neck="Republican Silver Medal",
body="Ares' Cuirass +1",
hands="Cizin Mufflers +1",
ring1="Dark Ring",
ring2="Paguroidea Ring",
legs="Crimson Cuisses"
}
-- Idle sets
sets.idle.Town = {
head="Ignominy burgeonet +1",
neck="Agitator's Collar",
ear1="Brutal Earring",
ear2="Trux Earring",
body="Ares' Cuirass +1",
hands="Ares' Gauntlets +1",
ring1="Rajas Ring",
ring2="Mars's Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Crimson Cuisses",
feet="Fallen's Sollerets +1"
}
sets.idle.Field = set_combine(sets.idle.Town, {
head="Twilight Helm",
neck="Bale Choker",
body="Ares' Cuirass +1",
hands="Cizin Mufflers +1",
ring1="Dark Ring",
ring2="Paguroidea Ring",
back="Repulse Mantle",
legs="Crimson Cuisses",
feet="Fallen's Sollerets +1"
})
sets.idle.Weak = {
head="Twilight Helm",
neck="Bale Choker",
body="Twilight Mail",
ring1="Dark Ring",
ring2="Paguroidea Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Crimson Cuisses",
feet="Fallen's Sollerets +1"
}
sets.refresh = {
neck="Bale Choker",
body="Ares' Cuirass +1"
}
-- Defense sets
sets.defense.PDT = {
head="Ighwa Cap",
neck="Agitator's Collar",
body="Xaddi Mail",
hands="Cizin Mufflers +1",
back="Repulse Mantle",
ring1="Dark Ring",
ring2="Patricius Ring",
legs="Cizin Breeches +1",
feet="Cizin Greaves +1"
}
sets.defense.Reraise = sets.idle.Weak
sets.defense.MDT = set_combine(sets.defense.PDT, {
neck="Twilight Torque",
ring2="K'ayres Ring"
})
sets.Kiting = {legs="Crimson Cuisses"}
sets.Reraise = {head="Twilight Helm",body="Twilight Mail"}
-- Defensive sets to combine with various weapon-specific sets below
-- These allow hybrid acc/pdt sets for difficult content
sets.Defensive = {
head="Ighwa Cap",
neck="Agitator's Collar",
hands="Cizin Mufflers +1",
ring2="Patricius Ring",
legs="Cizin Breeches +1"
}
sets.Defensive_Mid = {
head="Ighwa Cap",
neck="Agitator's Collar",
body="Cizin Mail +1",
hands="Cizin Mufflers +1",
ring2="Patricius Ring",
legs="Cizin Breeches +1"
}
sets.Defensive_Acc = {
head="Ighwa Cap",
neck="Agitator's Collar",
hands="Umuthi Gloves",
body="Cizin Mail +1",
ring1="Beeline Ring",
ring2="Patricius Ring",
legs="Cizin Breeches +1",
feet="Cizin Greaves +1"
}
-- Engaged set
-- Macbain = needs 30 STP TP & 5 STP in WS
sets.engaged = {
--sub="Pole Grip",
ammo="Hagneia Stone",
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
body="Pak corselet",
hands="Cizin Mufflers +1",
ring1="Rajas Ring",
ring2="K'ayres Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Aetosaur trousers",
feet="Ejekamal Boots"
}
sets.engaged.Mid = set_combine(sets.engaged, {
ammo="Fire Bomblet",
head="Yaoyotl Helm",
hands="Xaddi Gauntlets",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
})
sets.engaged.Acc = set_combine(sets.engaged.Mid, {
neck="Iqabi Necklace",
ring1="Mars's Ring",
ring2="Patricius Ring",
hands="Xaddi Gauntlets",
waist="Anguinus Belt",
})
sets.engaged.PDT = set_combine(sets.engaged, sets.Defensive)
sets.engaged.Mid.PDT = set_combine(sets.engaged.Mid, sets.Defensive_Mid)
sets.engaged.Acc.PDT = set_combine(sets.engaged.Acc, sets.Defensive_Acc)
-- lower delay greatswords
sets.engaged.LDGS = set_combine(sets.engaged, {
head="Yaoyotl Helm",
feet="Mikinaak Greaves"
})
sets.engaged.LDGS.Mid = set_combine(sets.engaged.LDGS, {
ammo="Fire Bomblet",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
})
sets.engaged.LDGS.Acc = sets.engaged.Acc
sets.engaged.LDGS.PDT = set_combine(sets.engaged.LDGS, sets.Defensive)
sets.engaged.LDGS.Mid.PDT = set_combine(sets.engaged.LDGS.Mid, sets.Defensive_Mid)
sets.engaged.LDGS.Acc.PDT = sets.engaged.Acc.PDT
-- GS war sub
sets.engaged.War = set_combine(sets.engaged, {
ear1="Brutal Earring",
ear2="Tripudio Earring",
head="Yaoyotl Helm",
legs="Phorcys Dirs"
})
sets.engaged.War.Mid = set_combine(sets.engaged.War, {
ammo="Hagneia Stone",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
legs="Xaddi Cuisses",
feet="Ejekamal Boots"
})
sets.engaged.War.Acc = set_combine(sets.engaged.War.Mid, {
neck="Iqabi Necklace",
hands="Xaddi Gauntlets",
ring1="Mars's Ring",
ring2="Patricius Ring",
waist="Anguinus Belt"
})
sets.engaged.War.PDT = set_combine(sets.engaged.War, sets.Defensive)
sets.engaged.War.Mid.PDT = set_combine(sets.engaged.War.Mid, sets.Defensive_Mid)
sets.engaged.War.Acc.PDT = set_combine(sets.engaged.War.Acc, sets.Defensive_Acc)
-- Scythe
sets.engaged.Scythe = set_combine(sets.engaged, {
--sub="Pole Grip",
ammo="Hagneia Stone",
hands="Xaddi Gauntlets",
legs="Cizin Breeches +1",
feet="Ejekamal Boots"
})
sets.engaged.Scythe.Mid = set_combine(sets.engaged.Scythe, {
head="Yaoyotl Helm",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
legs="Xaddi Cuisses"
})
sets.engaged.Scythe.Acc = set_combine(sets.engaged.Scythe.Mid, {
neck="Iqabi Necklace",
ring1="Mars's Ring",
ring2="Patricius Ring",
waist="Anguinus Belt"
})
sets.engaged.Scythe.PDT = set_combine(sets.engaged.Scythe, sets.Defensive)
sets.engaged.Scythe.Mid.PDT = set_combine(sets.engaged.Scythe.Mid, sets.Defensive_Mid)
sets.engaged.Scythe.Acc.PDT = set_combine(sets.engaged.Scythe.Acc, sets.Defensive_Acc)
-- Scythe war sub (aim for 40 stp)
sets.engaged.War.Scythe = {
--sub="Bloodrain Strap",
ammo="Hagneia Stone",
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Brutal Earring",
ear2="Tripudio Earring",
body="Xaddi Mail",
hands="Cizin Mufflers +1",
ring1="Rajas Ring",
ring2="K'ayres Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Xaddi Cuisses",
feet="Mikinaak Greaves"
}
sets.engaged.War.Scythe.Mid = set_combine(sets.engaged.War.Scythe, {
head="Yaoyotl Helm",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
feet="Ejekamal Boots"
})
sets.engaged.War.Scythe.Acc = set_combine(sets.engaged.War.Scythe.Mid, {
neck="Iqabi Necklace",
hands="Buremte Gloves",
ring1="Mars's Ring",
ring2="Patricius Ring",
waist="Anguinus Belt",
})
sets.engaged.War.Scythe.PDT = set_combine(sets.engaged.War.Scythe, sets.Defensive)
sets.engaged.War.Scythe.Mid.PDT = set_combine(sets.engaged.War.Scythe.Mid, sets.Defensive_Mid)
sets.engaged.War.Scythe.Acc.PDT = set_combine(sets.engaged.War.Scythe.Acc, sets.Defensive_Acc)
sets.engaged.Reraise = set_combine(sets.engaged, {
head="Twilight Helm",neck="Twilight Torque",
body="Twilight Mail"
})
sets.engaged.HighHaste = set_combine(sets.engaged, {
head="Otomi Helm",
waist="Windbuffet Belt",
})
sets.engaged.MaxHaste = sets.engaged.HighHaste
sets.engaged.EmbravaHaste = sets.engaged.HighHaste
sets.buff['Last Resort'] = {
feet="Fallen's Sollerets"
}
state.Buff['Souleater'] = { head="Ignominy burgeonet +1" }
end
function job_pretarget(spell, action, spellMap, eventArgs)
end
-- 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 state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = true
end
if spell.action_type == 'Magic' then
equip(sets.precast.FC)
end
if Souleater_active() then
disable('head')
else
enable('head')
end
end
function job_post_precast(spell, action, spellMap, eventArgs)
if spell.type == 'WeaponSkill' then
if state.Buff['Souleater'] then
equip(sets.buff.Souleater)
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
equip(sets.midcast.FastRecast)
end
end
-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
if state.DefenseMode == 'Reraise' or
(state.Defense.Active and state.Defense.Type == 'Physical' and state.Defense.PhysicalMode == 'Reraise') then
equip(sets.Reraise)
end
end
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
end
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-- Called before the Include starts constructing melee/idle/resting sets.
-- Can customize state or custom melee class values at this point.
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_handle_equipping_gear(status, eventArgs)
sets.Ammo = select_static_ammo()
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 50 then
idleSet = set_combine(idleSet, sets.refresh)
end
return idleSet
end
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
meleeSet = set_combine(meleeSet, sets.Ammo)
if state.Buff['Souleater'] then
meleeSet = set_combine(meleeSet, sets.buff.Souleater)
end
if state.Buff['Last Resort'] then
meleeSet = set_combine(meleeSet, sets.buff['Last Resort'])
end
return meleeSet
end
-------------------------------------------------------------------------------------------------------------------
-- General hooks for other events.
-------------------------------------------------------------------------------------------------------------------
-- Called when the player's status changes.
function job_status_change(newStatus, oldStatus, eventArgs)
sets.Ammo = select_static_ammo()
if newStatus == "Engaged" then
adjust_engaged_sets()
end
if Souleater_active() then
disable('head')
else
enable('head')
end
end
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
--if S{'haste','march','embrava','haste samba', 'last resort'}:contains(buff:lower()) then
--if S{'last resort'}:contains(buff:lower()) then
-- determine_haste_group()
-- handle_equipping_gear(player.status)
--end
if state.Buff[buff] ~= nil then
state.Buff[buff] = gain
handle_equipping_gear(player.status)
end
-- Some informative output
if buff == 'Nether Void' and gain then
add_to_chat(122, 'Next Absorb or Drain potency +75%!')
elseif buff == 'Dark Seal' and gain then
add_to_chat(122, 'Enhanced Dark Magic Accuracy!')
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)
war_sj = player.sub_job == 'WAR' or false
adjust_engaged_sets()
get_combat_form()
sets.Ammo = select_static_ammo()
if Souleater_active() then
disable('head')
else
enable('head')
end
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function get_combat_form()
if war_sj then
state.CombatForm = "War"
else
state.CombatForm = nil
end
end
function Souleater_active()
return state.Buff['Souleater']
end
function adjust_engaged_sets()
if scytheList:contains(player.equipment.main) then
state.CombatWeapon = "Scythe"
elseif gsList:contains(player.equipment.main) then
state.CombatWeapon = "LDGS"
else -- use regular set
state.CombatWeapon = nil
end
--adjust_melee_groups()
--determine_haste_group()
end
function select_static_ammo()
if state.OffenseMode == 'Acc' or state.OffenseMode == 'Mid' then
if world.time >= (18*60) or world.time <= (6*60) then
return sets.NightAccAmmo
else
return sets.DayAccAmmo
end
else
return sets.RegularAmmo
end
end
--function adjust_melee_groups()
-- classes.CustomMeleeGroups:clear()
-- if state.Buff.Aftermath then
-- classes.CustomMeleeGroups:append('AM')
-- end
--end
function determine_haste_group()
-- This section only applies to LR being up
--
-- 1) uncapped delay reduction: 26% gear haste + LR's 25% JA haste
-- 2) HighHaste - Marches: 16% gear haste with march+3, 14% with march+4, 12% with march+5
-- 3) EmbravaHaste - embrava: 21% gear haste if sch is naked alt, 17% if it's capped potency
-- 4) MaxHaste - capped magic haste: 12% gear haste
classes.CustomMeleeGroups:clear()
--if buffactive.embrava and (buffactive['last resort'] or buffactive.march == 2 or (buffactive.march and buffactive.haste)) then
-- classes.CustomMeleeGroups:append('MaxHaste')
--elseif buffactive.march == 2 and (buffactive.haste or buffactive['last resort']) then
-- classes.CustomMeleeGroups:append('MaxHaste')
--elseif buffactive.embrava and (buffactive.haste or buffactive.march) then
-- classes.CustomMeleeGroups:append('EmbravaHaste')
--elseif buffactive.march == 1 and (buffactive['last resort'] or buffactive.haste or buffactive['haste samba']) then
-- classes.CustomMeleeGroups:append('HighHaste')
--elseif buffactive.march == 2 then
-- classes.CustomMeleeGroups:append('HighHaste')
if buffactive['last resort'] then
classes.CustomMeleeGroups:append('LastResort')
end
end
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'DNC' then
set_macro_page(6, 2)
elseif player.sub_job == 'SAM' then
set_macro_page(6, 4)
else
set_macro_page(6, 2)
end
end
Try this then.
It replaces the bits of code that are wrong, I've not tested but you now have a set for Sets.buff['Souleater'] which was missing before, and I have corrected a rule for equipping that was sets.buff.souleater when your LR rule was sets/buff['Last Resort'], which although would work anyway, looks messy and having different scripting rules makes it difficiult to read sometimes to find errors.
Serveur: Odin
Game: FFXI
Posts: 84
By Odin.Celoria 2014-08-26 12:43:53
Still same problem >.<
I think i brokeded the toy
Cerberus.Conagh
Serveur: Cerberus
Game: FFXI
Posts: 3189
By Cerberus.Conagh 2014-08-26 12:57:35
Still same problem >.<
I think i brokeded the toy
Try removing this part
Quote: if Souleater_active() then
disable('head')
else
enable('head')
end
Disabling the head would stop it swapping until Souleater is down and might be conflicting, you dont have this on for Last Resort.
Your also trying to create a set that equips both at the same time which may conflict ~
Try this instead, my fault for skimming the code. Code --[[
=== Notes ===
-- Set format is as follows:
sets.engaged.[CombatForm][CombatWeapon][Offense or DefenseMode]
CombatForm = War
CombatWeapon = Scythe
The default sets are for Sam subjob with a Greatsword.
The above set format allows you to build sets for war and sam sub with either scythe or gs
--]]
--
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent.
function job_setup()
--state.Buff['Aftermath'] = buffactive['Aftermath: Lv.1'] or
--buffactive['Aftermath: Lv.2'] or
--buffactive['Aftermath: Lv.3']
--or false
state.Buff['Souleater'] = buffactive['Souleater'] or false
state.Buff['Last Resort'] = buffactive['Last Resort'] or false
scytheList = S{ 'Xbalanque', 'Anahera Scythe', 'Tajabit', 'Twilight Scythe' }
gsList = S{'Inanna', 'Tunglmyrkvi', 'Ukudyoni', 'Kaquljaan', 'Macbain' }
adjust_engaged_sets()
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
options.OffenseModes = {'Normal', 'Mid', 'Acc'}
options.DefenseModes = {'Normal', 'PDT', 'Reraise'}
options.WeaponskillModes = {'Normal', 'Mid', 'Acc'}
options.CastingModes = {'Normal'}
options.IdleModes = {'Normal'}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'PDT', 'Reraise'}
options.MagicalDefenseModes = {'MDT'}
state.Defense.PhysicalMode = 'PDT'
war_sj = player.sub_job == 'WAR' or false
adjust_engaged_sets()
get_combat_form()
-- Additional local binds
send_command('bind ^` input /ja "Hasso" <me>')
send_command('bind !` input /ja "Seigan" <me>')
send_command('bind ^[ input /lockstyle on')
send_command('bind ![ input /lockstyle off')
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function file_unload()
if binds_on_unload then
binds_on_unload()
end
send_command('unbind ^`')
send_command('unbind !-')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Precast sets to enhance JAs
sets.precast.JA['Diabolic Eye'] = {hands="Fallen's Finger Gauntlets"}
sets.precast.JA['Arcane Circle'] = {feet="Ignominy Sollerets"}
sets.precast.JA['Nether Void'] = {legs="Bale Flanchard +2"}
sets.precast.JA['Dark Seal'] = {head="Fallen's burgeonet"}
sets.precast.JA['Souleater'] = {head="Ignominy burgeonet +1"}
sets.precast.JA['Last Resort'] = {feet="Fallen's Sollerets"}
sets.precast.JA['Blood Weapon'] = {body="Fallen's Cuirass +1"}
sets.NightAccAmmo = {ammo="Fire Bomblet"}
sets.DayAccAmmo = {ammo="Tengu-no-Hane"}
sets.RegularAmmo = {ammo="Hagneia Stone"}
sets.Ammo = select_static_ammo()
-- Waltz set (chr and vit)
sets.precast.Waltz = {
head="Yaoyotl Helm",
body="Fallen's Cuirass +1",
legs="Cizin Breeches +1",
feet="Whirlpool Greaves"
}
-- Fast cast sets for spells
sets.precast.FC = {
head="Cizin Helm",
ear1="Loquacious Earring",
hands="Buremte Gloves",
ring2="Prolix Ring"
}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, { neck="Magoraga Beads" })
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, { neck="Stoicheion Medal" })
sets.precast.FC['Absorb-TP'] = set_combine(sets.precast.FC, { hands="Bale Gauntlets +2" })
sets.precast.FC['Dark Magic'] = set_combine(sets.precast.FC, { head="Fallen's Burgeonet" })
-- Midcast Sets
sets.midcast.FastRecast = {
head="Otomi Helm",
hands="Cizin Mufflers +1",
waist="Goading Belt",
feet="Ejekamal Boots"
}
-- Specific spells
sets.midcast.Utsusemi = {
head="Otomi Helm",
waist="Goading Belt",
feet="Ejekamal Boots"
}
sets.midcast['Dark Magic'] = {
head="Ignominy burgeonet +1",
neck="Dark Torque",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="Demon's Harness",
hands="Pavor Gauntlets",
ring1="Sangoma Ring",
ring2="Anhja Ring",
back="Abyss Cape",
waist="Goading Belt",
legs="Bale Flanchard +2",
feet="Ignominy sollerets"
}
sets.midcast['Enfeebling Magic'] = set_combine(sets.midcast['Dark Magic'], {
head="Otomi Helm",
feet="Ignominy Sollerets",
waist="Ovate rope",
back="Abyss Cape"
})
sets.midcast['Elemental Magic'] = {
head="Ignominy burgeonet +1",
neck="Stoicheion Medal",
ear1="Friomisi Earring",
ear2="Crematio Earring",
body="Fallen's Cuirass +1",
hands="Fallen's Finger Gauntlets",
--legs="Haruspex Slops",
legs="Ignominy Flanchard +1",
ring1="Sangoma Ring",
ring2="Acumen Ring",
back="Toro Cape",
feet="Ignominy Sollerets"
}
sets.midcast['Dread Spikes'] = set_combine(sets.midcast['Dark Magic'], {
--head="Fallen's Burgeonet +1",
body="Bale Cuirass +2",
hands="Boor Braceletes",
ring1="Beeline Ring",
ring2="K'ayres Ring",
back="Repulse Mantle",
legs="Ignominy Flanchard +1",
feet="Ejekamal Boots"
})
sets.midcast.Drain = sets.midcast['Dark Magic']
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Absorb = set_combine(sets.midcast['Dark Magic'], {
back="Chuparrosa Mantle",
feet="Black Sollerets"
})
sets.midcast['Absorb-TP'] = set_combine(sets.midcast.Absorb, {
hands="Pavor gauntlets"
})
-- Weaponskill sets
sets.precast.WS = {
ammo="Aqreqaq Bomblet",
head="Otomi Helm",
neck="Bale Choker",
ear1="Brutal Earring",
ear2="Moonshade Earring",
body="Ignominy Cuirass +1",
hands="Mikinaak Gauntlets",
ring1="Rajas Ring",
ring2="Pyrosoul Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Ignominy Flanchard +1",
feet="Ejekamal boots"
}
sets.precast.WS.Mid = set_combine(sets.precast.WS, {
head="Otomi Helm",
feet="Ejekamal Boots"
})
sets.precast.WS.Acc = set_combine(sets.precast.WS.Mid, {
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
ring1="Mars's Ring"
})
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Catastrophe'] = set_combine(sets.precast.WS, {neck="Shadow Gorget"})
sets.precast.WS['Catastrophe'].Mid = set_combine(sets.precast.WS['Catastrophe'], {waist="Soil Belt"})
sets.precast.WS['Catastrophe'].Acc = set_combine(sets.precast.WS.Acc, {neck="Shadow Gorget", waist="Soil Belt"})
-- INT
sets.precast.WS['Entropy'] = set_combine(sets.precast.WS, {
head="Otomi Helm",
neck="Shadow Gorget",
back="Atheling Mantle",
ring1="Diamond Ring",
waist="Soil Belt",
feet="Ejekamal Boots"
})
sets.precast.WS['Sanguine Blade'] = set_combine(sets.precast.WS, {
head="Ignominy burgeonet +1",
neck="Stoicheion Medal",
ear1="Friomisi Earring",
ear2="Crematio Earring",
body="Fallen's Cuirass +1",
hands="Fallen's Finger Gauntlets",
--legs="Haruspex Slops",
legs="Ignominy Flanchard +1",
ring1="Diamond Ring",
ring2="Acumen Ring",
back="Toro Cape",
feet="Ignominy Sollerets"
})
sets.precast.WS['Entropy'].Mid = set_combine(sets.precast.WS['Entropy'], {waist="Caudata Belt"})
sets.precast.WS['Entropy'].Acc = set_combine(sets.precast.WS['Entropy'].Mid, {
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
})
sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {
head="Ighwa Cap",
neck="Shadow Gorget",
hands="Umuthi Gloves",
back="Atheling Mantle",
waist="Soil Belt",
feet="Whirlpool Greaves"
})
sets.precast.WS['Resolution'] = set_combine(sets.precast.WS, {
ear1="Brutal Earring",
ear2="Moonshade Earring",
neck="Soil Gorget",
--hands="Mikinaak gauntlets",
back="Atheling Mantle",
waist="Soil Belt",
})
sets.precast.WS['Resolution'].Mid = set_combine(sets.precast.WS['Resolution'], {
head="Otomi Helm",
hands="Mikinaak Gauntlets",
feet="Ejekamal Boots"
})
sets.precast.WS['Resolution'].Acc = set_combine(sets.precast.WS.Acc, {
neck="Soil Gorget",
waist="Soil Belt"
})
sets.precast.WS['Torcleaver'] = set_combine(sets.precast.WS, {
body="Phorcys Korazin",
neck="Aqua Gorget",
waist="Caudata Belt"
})
-- 60% STR / 60% MND
sets.precast.WS['Cross Reapter'] = set_combine(sets.precast.WS, {
hands="Cizin Mufflers +1",
neck="Aqua Gorget",
waist="Metalsinger belt"
})
-- 50% STR / 50% INT
sets.precast.WS['Spiral Hell'] = set_combine(sets.precast.WS['Entropy'], {
head="Ighwa Cap",
body="Phorcys Korazin",
neck="Aqua Gorget",
waist="Metalsinger belt",
})
sets.precast.WS['Shadow of Death'] = set_combine(sets.precast.WS['Entropy'], {
head="Ignominy burgeonet +1",
neck="Aqua Gorget",
ear1="Friomisi Earring",
ear2="Crematio Earring",
hands="Fallen's Finger Gauntlets",
waist="Windbuffet Belt",
back="Toro Cape",
feet="Ignominy Sollerets"
})
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {
head="Twilight Helm",
neck="Republican Silver Medal",
body="Ares' Cuirass +1",
hands="Cizin Mufflers +1",
ring1="Dark Ring",
ring2="Paguroidea Ring",
legs="Crimson Cuisses"
}
-- Idle sets
sets.idle.Town = {
head="Ignominy burgeonet +1",
neck="Agitator's Collar",
ear1="Brutal Earring",
ear2="Trux Earring",
body="Ares' Cuirass +1",
hands="Ares' Gauntlets +1",
ring1="Rajas Ring",
ring2="Mars's Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Crimson Cuisses",
feet="Fallen's Sollerets +1"
}
sets.idle.Field = set_combine(sets.idle.Town, {
head="Twilight Helm",
neck="Bale Choker",
body="Ares' Cuirass +1",
hands="Cizin Mufflers +1",
ring1="Dark Ring",
ring2="Paguroidea Ring",
back="Repulse Mantle",
legs="Crimson Cuisses",
feet="Fallen's Sollerets +1"
})
sets.idle.Weak = {
head="Twilight Helm",
neck="Bale Choker",
body="Twilight Mail",
ring1="Dark Ring",
ring2="Paguroidea Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Crimson Cuisses",
feet="Fallen's Sollerets +1"
}
sets.refresh = {
neck="Bale Choker",
body="Ares' Cuirass +1"
}
-- Defense sets
sets.defense.PDT = {
head="Ighwa Cap",
neck="Agitator's Collar",
body="Xaddi Mail",
hands="Cizin Mufflers +1",
back="Repulse Mantle",
ring1="Dark Ring",
ring2="Patricius Ring",
legs="Cizin Breeches +1",
feet="Cizin Greaves +1"
}
sets.defense.Reraise = sets.idle.Weak
sets.defense.MDT = set_combine(sets.defense.PDT, {
neck="Twilight Torque",
ring2="K'ayres Ring"
})
sets.Kiting = {legs="Crimson Cuisses"}
sets.Reraise = {head="Twilight Helm",body="Twilight Mail"}
-- Defensive sets to combine with various weapon-specific sets below
-- These allow hybrid acc/pdt sets for difficult content
sets.Defensive = {
head="Ighwa Cap",
neck="Agitator's Collar",
hands="Cizin Mufflers +1",
ring2="Patricius Ring",
legs="Cizin Breeches +1"
}
sets.Defensive_Mid = {
head="Ighwa Cap",
neck="Agitator's Collar",
body="Cizin Mail +1",
hands="Cizin Mufflers +1",
ring2="Patricius Ring",
legs="Cizin Breeches +1"
}
sets.Defensive_Acc = {
head="Ighwa Cap",
neck="Agitator's Collar",
hands="Umuthi Gloves",
body="Cizin Mail +1",
ring1="Beeline Ring",
ring2="Patricius Ring",
legs="Cizin Breeches +1",
feet="Cizin Greaves +1"
}
-- Engaged set
-- Macbain = needs 30 STP TP & 5 STP in WS
sets.engaged = {
--sub="Pole Grip",
ammo="Hagneia Stone",
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
body="Pak corselet",
hands="Cizin Mufflers +1",
ring1="Rajas Ring",
ring2="K'ayres Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Aetosaur trousers",
feet="Ejekamal Boots"
}
sets.engaged.Mid = set_combine(sets.engaged, {
ammo="Fire Bomblet",
head="Yaoyotl Helm",
hands="Xaddi Gauntlets",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
})
sets.engaged.Acc = set_combine(sets.engaged.Mid, {
neck="Iqabi Necklace",
ring1="Mars's Ring",
ring2="Patricius Ring",
hands="Xaddi Gauntlets",
waist="Anguinus Belt",
})
sets.engaged.PDT = set_combine(sets.engaged, sets.Defensive)
sets.engaged.Mid.PDT = set_combine(sets.engaged.Mid, sets.Defensive_Mid)
sets.engaged.Acc.PDT = set_combine(sets.engaged.Acc, sets.Defensive_Acc)
-- lower delay greatswords
sets.engaged.LDGS = set_combine(sets.engaged, {
head="Yaoyotl Helm",
feet="Mikinaak Greaves"
})
sets.engaged.LDGS.Mid = set_combine(sets.engaged.LDGS, {
ammo="Fire Bomblet",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
})
sets.engaged.LDGS.Acc = sets.engaged.Acc
sets.engaged.LDGS.PDT = set_combine(sets.engaged.LDGS, sets.Defensive)
sets.engaged.LDGS.Mid.PDT = set_combine(sets.engaged.LDGS.Mid, sets.Defensive_Mid)
sets.engaged.LDGS.Acc.PDT = sets.engaged.Acc.PDT
-- GS war sub
sets.engaged.War = set_combine(sets.engaged, {
ear1="Brutal Earring",
ear2="Tripudio Earring",
head="Yaoyotl Helm",
legs="Phorcys Dirs"
})
sets.engaged.War.Mid = set_combine(sets.engaged.War, {
ammo="Hagneia Stone",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
legs="Xaddi Cuisses",
feet="Ejekamal Boots"
})
sets.engaged.War.Acc = set_combine(sets.engaged.War.Mid, {
neck="Iqabi Necklace",
hands="Xaddi Gauntlets",
ring1="Mars's Ring",
ring2="Patricius Ring",
waist="Anguinus Belt"
})
sets.engaged.War.PDT = set_combine(sets.engaged.War, sets.Defensive)
sets.engaged.War.Mid.PDT = set_combine(sets.engaged.War.Mid, sets.Defensive_Mid)
sets.engaged.War.Acc.PDT = set_combine(sets.engaged.War.Acc, sets.Defensive_Acc)
-- Scythe
sets.engaged.Scythe = set_combine(sets.engaged, {
--sub="Pole Grip",
ammo="Hagneia Stone",
hands="Xaddi Gauntlets",
legs="Cizin Breeches +1",
feet="Ejekamal Boots"
})
sets.engaged.Scythe.Mid = set_combine(sets.engaged.Scythe, {
head="Yaoyotl Helm",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
legs="Xaddi Cuisses"
})
sets.engaged.Scythe.Acc = set_combine(sets.engaged.Scythe.Mid, {
neck="Iqabi Necklace",
ring1="Mars's Ring",
ring2="Patricius Ring",
waist="Anguinus Belt"
})
sets.engaged.Scythe.PDT = set_combine(sets.engaged.Scythe, sets.Defensive)
sets.engaged.Scythe.Mid.PDT = set_combine(sets.engaged.Scythe.Mid, sets.Defensive_Mid)
sets.engaged.Scythe.Acc.PDT = set_combine(sets.engaged.Scythe.Acc, sets.Defensive_Acc)
-- Scythe war sub (aim for 40 stp)
sets.engaged.War.Scythe = {
--sub="Bloodrain Strap",
ammo="Hagneia Stone",
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Brutal Earring",
ear2="Tripudio Earring",
body="Xaddi Mail",
hands="Cizin Mufflers +1",
ring1="Rajas Ring",
ring2="K'ayres Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Xaddi Cuisses",
feet="Mikinaak Greaves"
}
sets.engaged.War.Scythe.Mid = set_combine(sets.engaged.War.Scythe, {
head="Yaoyotl Helm",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
feet="Ejekamal Boots"
})
sets.engaged.War.Scythe.Acc = set_combine(sets.engaged.War.Scythe.Mid, {
neck="Iqabi Necklace",
hands="Buremte Gloves",
ring1="Mars's Ring",
ring2="Patricius Ring",
waist="Anguinus Belt",
})
sets.engaged.War.Scythe.PDT = set_combine(sets.engaged.War.Scythe, sets.Defensive)
sets.engaged.War.Scythe.Mid.PDT = set_combine(sets.engaged.War.Scythe.Mid, sets.Defensive_Mid)
sets.engaged.War.Scythe.Acc.PDT = set_combine(sets.engaged.War.Scythe.Acc, sets.Defensive_Acc)
sets.engaged.Reraise = set_combine(sets.engaged, {
head="Twilight Helm",neck="Twilight Torque",
body="Twilight Mail"
})
sets.engaged.HighHaste = set_combine(sets.engaged, {
head="Otomi Helm",
waist="Windbuffet Belt",
})
sets.engaged.MaxHaste = sets.engaged.HighHaste
sets.engaged.EmbravaHaste = sets.engaged.HighHaste
sets.buff['Last Resort'] = {
feet="Fallen's Sollerets"
}
sets.Buff['Souleater'] = { head="Ignominy burgeonet +1" }
sets.Buff['LR Combo'] = { head="Ignominy burgeonet +1", feet="Fallen's Sollerets" }
end
function job_pretarget(spell, action, spellMap, eventArgs)
end
-- 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 state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = true
end
if spell.action_type == 'Magic' then
equip(sets.precast.FC)
end
end
function job_post_precast(spell, action, spellMap, eventArgs)
if spell.type == 'WeaponSkill' then
if state.Buff['Souleater'] then
equip(sets.buff.Souleater)
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
equip(sets.midcast.FastRecast)
end
end
-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
if state.DefenseMode == 'Reraise' or
(state.Defense.Active and state.Defense.Type == 'Physical' and state.Defense.PhysicalMode == 'Reraise') then
equip(sets.Reraise)
end
end
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
end
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-- Called before the Include starts constructing melee/idle/resting sets.
-- Can customize state or custom melee class values at this point.
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_handle_equipping_gear(status, eventArgs)
sets.Ammo = select_static_ammo()
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 50 then
idleSet = set_combine(idleSet, sets.refresh)
end
return idleSet
end
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
meleeSet = set_combine(meleeSet, sets.Ammo)
if state.Buff['Souleater'] and not state.buff['Last Resort'] then
meleeSet = set_combine(meleeSet, sets.buff['Souleater'])
end
if state.Buff['Last Resort'] and not state.buff['Souleater'] then
meleeSet = set_combine(meleeSet, sets.buff['Last Resort'])
end
if state.buff['Last Resort'] and state.buff['Souleater'] then
meleeSet = set_combine(meleeSet, sets.buff['LR Combo'])
return meleeSet
end
-------------------------------------------------------------------------------------------------------------------
-- General hooks for other events.
-------------------------------------------------------------------------------------------------------------------
-- Called when the player's status changes.
function job_status_change(newStatus, oldStatus, eventArgs)
sets.Ammo = select_static_ammo()
if newStatus == "Engaged" then
adjust_engaged_sets()
end
end
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
--if S{'haste','march','embrava','haste samba', 'last resort'}:contains(buff:lower()) then
--if S{'last resort'}:contains(buff:lower()) then
-- determine_haste_group()
-- handle_equipping_gear(player.status)
--end
if state.Buff[buff] ~= nil then
state.Buff[buff] = gain
handle_equipping_gear(player.status)
end
-- Some informative output
if buff == 'Nether Void' and gain then
add_to_chat(122, 'Next Absorb or Drain potency +75%!')
elseif buff == 'Dark Seal' and gain then
add_to_chat(122, 'Enhanced Dark Magic Accuracy!')
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)
war_sj = player.sub_job == 'WAR' or false
adjust_engaged_sets()
get_combat_form()
sets.Ammo = select_static_ammo()
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function get_combat_form()
if war_sj then
state.CombatForm = "War"
else
state.CombatForm = nil
end
end
function Souleater_active()
return state.Buff['Souleater']
end
function adjust_engaged_sets()
if scytheList:contains(player.equipment.main) then
state.CombatWeapon = "Scythe"
elseif gsList:contains(player.equipment.main) then
state.CombatWeapon = "LDGS"
else -- use regular set
state.CombatWeapon = nil
end
--adjust_melee_groups()
--determine_haste_group()
end
function select_static_ammo()
if state.OffenseMode == 'Acc' or state.OffenseMode == 'Mid' then
if world.time >= (18*60) or world.time <= (6*60) then
return sets.NightAccAmmo
else
return sets.DayAccAmmo
end
else
return sets.RegularAmmo
end
end
--function adjust_melee_groups()
-- classes.CustomMeleeGroups:clear()
-- if state.Buff.Aftermath then
-- classes.CustomMeleeGroups:append('AM')
-- end
--end
function determine_haste_group()
-- This section only applies to LR being up
--
-- 1) uncapped delay reduction: 26% gear haste + LR's 25% JA haste
-- 2) HighHaste - Marches: 16% gear haste with march+3, 14% with march+4, 12% with march+5
-- 3) EmbravaHaste - embrava: 21% gear haste if sch is naked alt, 17% if it's capped potency
-- 4) MaxHaste - capped magic haste: 12% gear haste
classes.CustomMeleeGroups:clear()
--if buffactive.embrava and (buffactive['last resort'] or buffactive.march == 2 or (buffactive.march and buffactive.haste)) then
-- classes.CustomMeleeGroups:append('MaxHaste')
--elseif buffactive.march == 2 and (buffactive.haste or buffactive['last resort']) then
-- classes.CustomMeleeGroups:append('MaxHaste')
--elseif buffactive.embrava and (buffactive.haste or buffactive.march) then
-- classes.CustomMeleeGroups:append('EmbravaHaste')
--elseif buffactive.march == 1 and (buffactive['last resort'] or buffactive.haste or buffactive['haste samba']) then
-- classes.CustomMeleeGroups:append('HighHaste')
--elseif buffactive.march == 2 then
-- classes.CustomMeleeGroups:append('HighHaste')
if buffactive['last resort'] then
classes.CustomMeleeGroups:append('LastResort')
end
end
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'DNC' then
set_macro_page(6, 2)
elseif player.sub_job == 'SAM' then
set_macro_page(6, 4)
else
set_macro_page(6, 2)
end
end
VIP
Serveur: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-08-26 13:53:43
Hi, i would like to specifically only use dummy mode for paeons. I am/have a lazy brd mule and i dont want to cycle or set after every paeon, or use a macro.
Could anyone help me out? im using mototoototen brd GS. Thanks
If you're only using macros to cast the paeons, then just write them like this: Code
/console gs c set DaurdaublaMode Dummy
/ma "Army's Paeon VI" <me>
Note: DaurdablaMode will be changing to ExtraSongsMode in the next update (system currently on dev).
If you're casting paeons from the menu or command line, you'd need to tweak the rules handling.
In current system: Code
function job_precast(spell, action, spellMap, eventArgs)
if spell.english:startswith("Army's Paeon") then
state.DaurdablaMode = 'Dummy'
end
end
With the updated system: Code
function job_precast(spell, action, spellMap, eventArgs)
if spell.english:startswith("Army's Paeon") then
state.ExtraSongsMode:set('Dummy')
end
end
VIP
Serveur: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-08-26 13:55:36
If someone can help me I would be eternally grateful, Keme from Phoenix did help me getting all the gearswap working for me, and all my jobs are working fine with all the gear with the exception of one.
My drk gearswap for some reason is not changing gear during souleater buff. Any other buff I use and it immediately swaps gear, however anytime I use souleater it never once changes, I checked spelling of gear and ja' but i couldn't find anything. Again I am a noob in training on this, no I don't even have my noob badge yet, so any help would be great.
Gear set:
state.Buff['Souleater'] = { head="Ignominy burgeonet +1" }
Should be
sets.buff['Souleater'] = { head="Ignominy burgeonet +1" }
Serveur: Odin
Game: FFXI
Posts: 84
By Odin.Celoria 2014-08-26 17:16:45
Still same problem >.<
I think i brokeded the toy
Try removing this part
Quote: if Souleater_active() then
disable('head')
else
enable('head')
end
Disabling the head would stop it swapping until Souleater is down and might be conflicting, you dont have this on for Last Resort.
Your also trying to create a set that equips both at the same time which may conflict ~
Try this instead, my fault for skimming the code. Code --[[
=== Notes ===
-- Set format is as follows:
sets.engaged.[CombatForm][CombatWeapon][Offense or DefenseMode]
CombatForm = War
CombatWeapon = Scythe
The default sets are for Sam subjob with a Greatsword.
The above set format allows you to build sets for war and sam sub with either scythe or gs
--]]
--
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent.
function job_setup()
--state.Buff['Aftermath'] = buffactive['Aftermath: Lv.1'] or
--buffactive['Aftermath: Lv.2'] or
--buffactive['Aftermath: Lv.3']
--or false
state.Buff['Souleater'] = buffactive['Souleater'] or false
state.Buff['Last Resort'] = buffactive['Last Resort'] or false
scytheList = S{ 'Xbalanque', 'Anahera Scythe', 'Tajabit', 'Twilight Scythe' }
gsList = S{'Inanna', 'Tunglmyrkvi', 'Ukudyoni', 'Kaquljaan', 'Macbain' }
adjust_engaged_sets()
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
options.OffenseModes = {'Normal', 'Mid', 'Acc'}
options.DefenseModes = {'Normal', 'PDT', 'Reraise'}
options.WeaponskillModes = {'Normal', 'Mid', 'Acc'}
options.CastingModes = {'Normal'}
options.IdleModes = {'Normal'}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'PDT', 'Reraise'}
options.MagicalDefenseModes = {'MDT'}
state.Defense.PhysicalMode = 'PDT'
war_sj = player.sub_job == 'WAR' or false
adjust_engaged_sets()
get_combat_form()
-- Additional local binds
send_command('bind ^` input /ja "Hasso" <me>')
send_command('bind !` input /ja "Seigan" <me>')
send_command('bind ^[ input /lockstyle on')
send_command('bind ![ input /lockstyle off')
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function file_unload()
if binds_on_unload then
binds_on_unload()
end
send_command('unbind ^`')
send_command('unbind !-')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Precast sets to enhance JAs
sets.precast.JA['Diabolic Eye'] = {hands="Fallen's Finger Gauntlets"}
sets.precast.JA['Arcane Circle'] = {feet="Ignominy Sollerets"}
sets.precast.JA['Nether Void'] = {legs="Bale Flanchard +2"}
sets.precast.JA['Dark Seal'] = {head="Fallen's burgeonet"}
sets.precast.JA['Souleater'] = {head="Ignominy burgeonet +1"}
sets.precast.JA['Last Resort'] = {feet="Fallen's Sollerets"}
sets.precast.JA['Blood Weapon'] = {body="Fallen's Cuirass +1"}
sets.NightAccAmmo = {ammo="Fire Bomblet"}
sets.DayAccAmmo = {ammo="Tengu-no-Hane"}
sets.RegularAmmo = {ammo="Hagneia Stone"}
sets.Ammo = select_static_ammo()
-- Waltz set (chr and vit)
sets.precast.Waltz = {
head="Yaoyotl Helm",
body="Fallen's Cuirass +1",
legs="Cizin Breeches +1",
feet="Whirlpool Greaves"
}
-- Fast cast sets for spells
sets.precast.FC = {
head="Cizin Helm",
ear1="Loquacious Earring",
hands="Buremte Gloves",
ring2="Prolix Ring"
}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, { neck="Magoraga Beads" })
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, { neck="Stoicheion Medal" })
sets.precast.FC['Absorb-TP'] = set_combine(sets.precast.FC, { hands="Bale Gauntlets +2" })
sets.precast.FC['Dark Magic'] = set_combine(sets.precast.FC, { head="Fallen's Burgeonet" })
-- Midcast Sets
sets.midcast.FastRecast = {
head="Otomi Helm",
hands="Cizin Mufflers +1",
waist="Goading Belt",
feet="Ejekamal Boots"
}
-- Specific spells
sets.midcast.Utsusemi = {
head="Otomi Helm",
waist="Goading Belt",
feet="Ejekamal Boots"
}
sets.midcast['Dark Magic'] = {
head="Ignominy burgeonet +1",
neck="Dark Torque",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="Demon's Harness",
hands="Pavor Gauntlets",
ring1="Sangoma Ring",
ring2="Anhja Ring",
back="Abyss Cape",
waist="Goading Belt",
legs="Bale Flanchard +2",
feet="Ignominy sollerets"
}
sets.midcast['Enfeebling Magic'] = set_combine(sets.midcast['Dark Magic'], {
head="Otomi Helm",
feet="Ignominy Sollerets",
waist="Ovate rope",
back="Abyss Cape"
})
sets.midcast['Elemental Magic'] = {
head="Ignominy burgeonet +1",
neck="Stoicheion Medal",
ear1="Friomisi Earring",
ear2="Crematio Earring",
body="Fallen's Cuirass +1",
hands="Fallen's Finger Gauntlets",
--legs="Haruspex Slops",
legs="Ignominy Flanchard +1",
ring1="Sangoma Ring",
ring2="Acumen Ring",
back="Toro Cape",
feet="Ignominy Sollerets"
}
sets.midcast['Dread Spikes'] = set_combine(sets.midcast['Dark Magic'], {
--head="Fallen's Burgeonet +1",
body="Bale Cuirass +2",
hands="Boor Braceletes",
ring1="Beeline Ring",
ring2="K'ayres Ring",
back="Repulse Mantle",
legs="Ignominy Flanchard +1",
feet="Ejekamal Boots"
})
sets.midcast.Drain = sets.midcast['Dark Magic']
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Absorb = set_combine(sets.midcast['Dark Magic'], {
back="Chuparrosa Mantle",
feet="Black Sollerets"
})
sets.midcast['Absorb-TP'] = set_combine(sets.midcast.Absorb, {
hands="Pavor gauntlets"
})
-- Weaponskill sets
sets.precast.WS = {
ammo="Aqreqaq Bomblet",
head="Otomi Helm",
neck="Bale Choker",
ear1="Brutal Earring",
ear2="Moonshade Earring",
body="Ignominy Cuirass +1",
hands="Mikinaak Gauntlets",
ring1="Rajas Ring",
ring2="Pyrosoul Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Ignominy Flanchard +1",
feet="Ejekamal boots"
}
sets.precast.WS.Mid = set_combine(sets.precast.WS, {
head="Otomi Helm",
feet="Ejekamal Boots"
})
sets.precast.WS.Acc = set_combine(sets.precast.WS.Mid, {
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
ring1="Mars's Ring"
})
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Catastrophe'] = set_combine(sets.precast.WS, {neck="Shadow Gorget"})
sets.precast.WS['Catastrophe'].Mid = set_combine(sets.precast.WS['Catastrophe'], {waist="Soil Belt"})
sets.precast.WS['Catastrophe'].Acc = set_combine(sets.precast.WS.Acc, {neck="Shadow Gorget", waist="Soil Belt"})
-- INT
sets.precast.WS['Entropy'] = set_combine(sets.precast.WS, {
head="Otomi Helm",
neck="Shadow Gorget",
back="Atheling Mantle",
ring1="Diamond Ring",
waist="Soil Belt",
feet="Ejekamal Boots"
})
sets.precast.WS['Sanguine Blade'] = set_combine(sets.precast.WS, {
head="Ignominy burgeonet +1",
neck="Stoicheion Medal",
ear1="Friomisi Earring",
ear2="Crematio Earring",
body="Fallen's Cuirass +1",
hands="Fallen's Finger Gauntlets",
--legs="Haruspex Slops",
legs="Ignominy Flanchard +1",
ring1="Diamond Ring",
ring2="Acumen Ring",
back="Toro Cape",
feet="Ignominy Sollerets"
})
sets.precast.WS['Entropy'].Mid = set_combine(sets.precast.WS['Entropy'], {waist="Caudata Belt"})
sets.precast.WS['Entropy'].Acc = set_combine(sets.precast.WS['Entropy'].Mid, {
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
})
sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {
head="Ighwa Cap",
neck="Shadow Gorget",
hands="Umuthi Gloves",
back="Atheling Mantle",
waist="Soil Belt",
feet="Whirlpool Greaves"
})
sets.precast.WS['Resolution'] = set_combine(sets.precast.WS, {
ear1="Brutal Earring",
ear2="Moonshade Earring",
neck="Soil Gorget",
--hands="Mikinaak gauntlets",
back="Atheling Mantle",
waist="Soil Belt",
})
sets.precast.WS['Resolution'].Mid = set_combine(sets.precast.WS['Resolution'], {
head="Otomi Helm",
hands="Mikinaak Gauntlets",
feet="Ejekamal Boots"
})
sets.precast.WS['Resolution'].Acc = set_combine(sets.precast.WS.Acc, {
neck="Soil Gorget",
waist="Soil Belt"
})
sets.precast.WS['Torcleaver'] = set_combine(sets.precast.WS, {
body="Phorcys Korazin",
neck="Aqua Gorget",
waist="Caudata Belt"
})
-- 60% STR / 60% MND
sets.precast.WS['Cross Reapter'] = set_combine(sets.precast.WS, {
hands="Cizin Mufflers +1",
neck="Aqua Gorget",
waist="Metalsinger belt"
})
-- 50% STR / 50% INT
sets.precast.WS['Spiral Hell'] = set_combine(sets.precast.WS['Entropy'], {
head="Ighwa Cap",
body="Phorcys Korazin",
neck="Aqua Gorget",
waist="Metalsinger belt",
})
sets.precast.WS['Shadow of Death'] = set_combine(sets.precast.WS['Entropy'], {
head="Ignominy burgeonet +1",
neck="Aqua Gorget",
ear1="Friomisi Earring",
ear2="Crematio Earring",
hands="Fallen's Finger Gauntlets",
waist="Windbuffet Belt",
back="Toro Cape",
feet="Ignominy Sollerets"
})
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {
head="Twilight Helm",
neck="Republican Silver Medal",
body="Ares' Cuirass +1",
hands="Cizin Mufflers +1",
ring1="Dark Ring",
ring2="Paguroidea Ring",
legs="Crimson Cuisses"
}
-- Idle sets
sets.idle.Town = {
head="Ignominy burgeonet +1",
neck="Agitator's Collar",
ear1="Brutal Earring",
ear2="Trux Earring",
body="Ares' Cuirass +1",
hands="Ares' Gauntlets +1",
ring1="Rajas Ring",
ring2="Mars's Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Crimson Cuisses",
feet="Fallen's Sollerets +1"
}
sets.idle.Field = set_combine(sets.idle.Town, {
head="Twilight Helm",
neck="Bale Choker",
body="Ares' Cuirass +1",
hands="Cizin Mufflers +1",
ring1="Dark Ring",
ring2="Paguroidea Ring",
back="Repulse Mantle",
legs="Crimson Cuisses",
feet="Fallen's Sollerets +1"
})
sets.idle.Weak = {
head="Twilight Helm",
neck="Bale Choker",
body="Twilight Mail",
ring1="Dark Ring",
ring2="Paguroidea Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Crimson Cuisses",
feet="Fallen's Sollerets +1"
}
sets.refresh = {
neck="Bale Choker",
body="Ares' Cuirass +1"
}
-- Defense sets
sets.defense.PDT = {
head="Ighwa Cap",
neck="Agitator's Collar",
body="Xaddi Mail",
hands="Cizin Mufflers +1",
back="Repulse Mantle",
ring1="Dark Ring",
ring2="Patricius Ring",
legs="Cizin Breeches +1",
feet="Cizin Greaves +1"
}
sets.defense.Reraise = sets.idle.Weak
sets.defense.MDT = set_combine(sets.defense.PDT, {
neck="Twilight Torque",
ring2="K'ayres Ring"
})
sets.Kiting = {legs="Crimson Cuisses"}
sets.Reraise = {head="Twilight Helm",body="Twilight Mail"}
-- Defensive sets to combine with various weapon-specific sets below
-- These allow hybrid acc/pdt sets for difficult content
sets.Defensive = {
head="Ighwa Cap",
neck="Agitator's Collar",
hands="Cizin Mufflers +1",
ring2="Patricius Ring",
legs="Cizin Breeches +1"
}
sets.Defensive_Mid = {
head="Ighwa Cap",
neck="Agitator's Collar",
body="Cizin Mail +1",
hands="Cizin Mufflers +1",
ring2="Patricius Ring",
legs="Cizin Breeches +1"
}
sets.Defensive_Acc = {
head="Ighwa Cap",
neck="Agitator's Collar",
hands="Umuthi Gloves",
body="Cizin Mail +1",
ring1="Beeline Ring",
ring2="Patricius Ring",
legs="Cizin Breeches +1",
feet="Cizin Greaves +1"
}
-- Engaged set
-- Macbain = needs 30 STP TP & 5 STP in WS
sets.engaged = {
--sub="Pole Grip",
ammo="Hagneia Stone",
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
body="Pak corselet",
hands="Cizin Mufflers +1",
ring1="Rajas Ring",
ring2="K'ayres Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Aetosaur trousers",
feet="Ejekamal Boots"
}
sets.engaged.Mid = set_combine(sets.engaged, {
ammo="Fire Bomblet",
head="Yaoyotl Helm",
hands="Xaddi Gauntlets",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
})
sets.engaged.Acc = set_combine(sets.engaged.Mid, {
neck="Iqabi Necklace",
ring1="Mars's Ring",
ring2="Patricius Ring",
hands="Xaddi Gauntlets",
waist="Anguinus Belt",
})
sets.engaged.PDT = set_combine(sets.engaged, sets.Defensive)
sets.engaged.Mid.PDT = set_combine(sets.engaged.Mid, sets.Defensive_Mid)
sets.engaged.Acc.PDT = set_combine(sets.engaged.Acc, sets.Defensive_Acc)
-- lower delay greatswords
sets.engaged.LDGS = set_combine(sets.engaged, {
head="Yaoyotl Helm",
feet="Mikinaak Greaves"
})
sets.engaged.LDGS.Mid = set_combine(sets.engaged.LDGS, {
ammo="Fire Bomblet",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
})
sets.engaged.LDGS.Acc = sets.engaged.Acc
sets.engaged.LDGS.PDT = set_combine(sets.engaged.LDGS, sets.Defensive)
sets.engaged.LDGS.Mid.PDT = set_combine(sets.engaged.LDGS.Mid, sets.Defensive_Mid)
sets.engaged.LDGS.Acc.PDT = sets.engaged.Acc.PDT
-- GS war sub
sets.engaged.War = set_combine(sets.engaged, {
ear1="Brutal Earring",
ear2="Tripudio Earring",
head="Yaoyotl Helm",
legs="Phorcys Dirs"
})
sets.engaged.War.Mid = set_combine(sets.engaged.War, {
ammo="Hagneia Stone",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
legs="Xaddi Cuisses",
feet="Ejekamal Boots"
})
sets.engaged.War.Acc = set_combine(sets.engaged.War.Mid, {
neck="Iqabi Necklace",
hands="Xaddi Gauntlets",
ring1="Mars's Ring",
ring2="Patricius Ring",
waist="Anguinus Belt"
})
sets.engaged.War.PDT = set_combine(sets.engaged.War, sets.Defensive)
sets.engaged.War.Mid.PDT = set_combine(sets.engaged.War.Mid, sets.Defensive_Mid)
sets.engaged.War.Acc.PDT = set_combine(sets.engaged.War.Acc, sets.Defensive_Acc)
-- Scythe
sets.engaged.Scythe = set_combine(sets.engaged, {
--sub="Pole Grip",
ammo="Hagneia Stone",
hands="Xaddi Gauntlets",
legs="Cizin Breeches +1",
feet="Ejekamal Boots"
})
sets.engaged.Scythe.Mid = set_combine(sets.engaged.Scythe, {
head="Yaoyotl Helm",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
legs="Xaddi Cuisses"
})
sets.engaged.Scythe.Acc = set_combine(sets.engaged.Scythe.Mid, {
neck="Iqabi Necklace",
ring1="Mars's Ring",
ring2="Patricius Ring",
waist="Anguinus Belt"
})
sets.engaged.Scythe.PDT = set_combine(sets.engaged.Scythe, sets.Defensive)
sets.engaged.Scythe.Mid.PDT = set_combine(sets.engaged.Scythe.Mid, sets.Defensive_Mid)
sets.engaged.Scythe.Acc.PDT = set_combine(sets.engaged.Scythe.Acc, sets.Defensive_Acc)
-- Scythe war sub (aim for 40 stp)
sets.engaged.War.Scythe = {
--sub="Bloodrain Strap",
ammo="Hagneia Stone",
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Brutal Earring",
ear2="Tripudio Earring",
body="Xaddi Mail",
hands="Cizin Mufflers +1",
ring1="Rajas Ring",
ring2="K'ayres Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Xaddi Cuisses",
feet="Mikinaak Greaves"
}
sets.engaged.War.Scythe.Mid = set_combine(sets.engaged.War.Scythe, {
head="Yaoyotl Helm",
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
feet="Ejekamal Boots"
})
sets.engaged.War.Scythe.Acc = set_combine(sets.engaged.War.Scythe.Mid, {
neck="Iqabi Necklace",
hands="Buremte Gloves",
ring1="Mars's Ring",
ring2="Patricius Ring",
waist="Anguinus Belt",
})
sets.engaged.War.Scythe.PDT = set_combine(sets.engaged.War.Scythe, sets.Defensive)
sets.engaged.War.Scythe.Mid.PDT = set_combine(sets.engaged.War.Scythe.Mid, sets.Defensive_Mid)
sets.engaged.War.Scythe.Acc.PDT = set_combine(sets.engaged.War.Scythe.Acc, sets.Defensive_Acc)
sets.engaged.Reraise = set_combine(sets.engaged, {
head="Twilight Helm",neck="Twilight Torque",
body="Twilight Mail"
})
sets.engaged.HighHaste = set_combine(sets.engaged, {
head="Otomi Helm",
waist="Windbuffet Belt",
})
sets.engaged.MaxHaste = sets.engaged.HighHaste
sets.engaged.EmbravaHaste = sets.engaged.HighHaste
sets.buff['Last Resort'] = {
feet="Fallen's Sollerets"
}
sets.Buff['Souleater'] = { head="Ignominy burgeonet +1" }
sets.Buff['LR Combo'] = { head="Ignominy burgeonet +1", feet="Fallen's Sollerets" }
end
function job_pretarget(spell, action, spellMap, eventArgs)
end
-- 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 state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = true
end
if spell.action_type == 'Magic' then
equip(sets.precast.FC)
end
end
function job_post_precast(spell, action, spellMap, eventArgs)
if spell.type == 'WeaponSkill' then
if state.Buff['Souleater'] then
equip(sets.buff.Souleater)
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
equip(sets.midcast.FastRecast)
end
end
-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
if state.DefenseMode == 'Reraise' or
(state.Defense.Active and state.Defense.Type == 'Physical' and state.Defense.PhysicalMode == 'Reraise') then
equip(sets.Reraise)
end
end
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
end
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-- Called before the Include starts constructing melee/idle/resting sets.
-- Can customize state or custom melee class values at this point.
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_handle_equipping_gear(status, eventArgs)
sets.Ammo = select_static_ammo()
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 50 then
idleSet = set_combine(idleSet, sets.refresh)
end
return idleSet
end
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
meleeSet = set_combine(meleeSet, sets.Ammo)
if state.Buff['Souleater'] and not state.buff['Last Resort'] then
meleeSet = set_combine(meleeSet, sets.buff['Souleater'])
end
if state.Buff['Last Resort'] and not state.buff['Souleater'] then
meleeSet = set_combine(meleeSet, sets.buff['Last Resort'])
end
if state.buff['Last Resort'] and state.buff['Souleater'] then
meleeSet = set_combine(meleeSet, sets.buff['LR Combo'])
return meleeSet
end
-------------------------------------------------------------------------------------------------------------------
-- General hooks for other events.
-------------------------------------------------------------------------------------------------------------------
-- Called when the player's status changes.
function job_status_change(newStatus, oldStatus, eventArgs)
sets.Ammo = select_static_ammo()
if newStatus == "Engaged" then
adjust_engaged_sets()
end
end
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
--if S{'haste','march','embrava','haste samba', 'last resort'}:contains(buff:lower()) then
--if S{'last resort'}:contains(buff:lower()) then
-- determine_haste_group()
-- handle_equipping_gear(player.status)
--end
if state.Buff[buff] ~= nil then
state.Buff[buff] = gain
handle_equipping_gear(player.status)
end
-- Some informative output
if buff == 'Nether Void' and gain then
add_to_chat(122, 'Next Absorb or Drain potency +75%!')
elseif buff == 'Dark Seal' and gain then
add_to_chat(122, 'Enhanced Dark Magic Accuracy!')
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)
war_sj = player.sub_job == 'WAR' or false
adjust_engaged_sets()
get_combat_form()
sets.Ammo = select_static_ammo()
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function get_combat_form()
if war_sj then
state.CombatForm = "War"
else
state.CombatForm = nil
end
end
function Souleater_active()
return state.Buff['Souleater']
end
function adjust_engaged_sets()
if scytheList:contains(player.equipment.main) then
state.CombatWeapon = "Scythe"
elseif gsList:contains(player.equipment.main) then
state.CombatWeapon = "LDGS"
else -- use regular set
state.CombatWeapon = nil
end
--adjust_melee_groups()
--determine_haste_group()
end
function select_static_ammo()
if state.OffenseMode == 'Acc' or state.OffenseMode == 'Mid' then
if world.time >= (18*60) or world.time <= (6*60) then
return sets.NightAccAmmo
else
return sets.DayAccAmmo
end
else
return sets.RegularAmmo
end
end
--function adjust_melee_groups()
-- classes.CustomMeleeGroups:clear()
-- if state.Buff.Aftermath then
-- classes.CustomMeleeGroups:append('AM')
-- end
--end
function determine_haste_group()
-- This section only applies to LR being up
--
-- 1) uncapped delay reduction: 26% gear haste + LR's 25% JA haste
-- 2) HighHaste - Marches: 16% gear haste with march+3, 14% with march+4, 12% with march+5
-- 3) EmbravaHaste - embrava: 21% gear haste if sch is naked alt, 17% if it's capped potency
-- 4) MaxHaste - capped magic haste: 12% gear haste
classes.CustomMeleeGroups:clear()
--if buffactive.embrava and (buffactive['last resort'] or buffactive.march == 2 or (buffactive.march and buffactive.haste)) then
-- classes.CustomMeleeGroups:append('MaxHaste')
--elseif buffactive.march == 2 and (buffactive.haste or buffactive['last resort']) then
-- classes.CustomMeleeGroups:append('MaxHaste')
--elseif buffactive.embrava and (buffactive.haste or buffactive.march) then
-- classes.CustomMeleeGroups:append('EmbravaHaste')
--elseif buffactive.march == 1 and (buffactive['last resort'] or buffactive.haste or buffactive['haste samba']) then
-- classes.CustomMeleeGroups:append('HighHaste')
--elseif buffactive.march == 2 then
-- classes.CustomMeleeGroups:append('HighHaste')
if buffactive['last resort'] then
classes.CustomMeleeGroups:append('LastResort')
end
end
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'DNC' then
set_macro_page(6, 2)
elseif player.sub_job == 'SAM' then
set_macro_page(6, 4)
else
set_macro_page(6, 2)
end
end
There is an error now,
'end' expected (to close 'function' at line 63
Honestly think it means line 631 because it goes too far on the screen then
Quetzalcoatl.Elysien
Serveur: Quetzalcoatl
Game: FFXI
Posts: 452
By Quetzalcoatl.Elysien 2014-08-28 19:51:46
can GS detect when double marches are active?
can GS detect trusts?
if so, please let me know how! ty :D
Bismarck.Inference
Serveur: Bismarck
Game: FFXI
Posts: 417
By Bismarck.Inference 2014-08-28 21:27:47
Quetzalcoatl.Elysien said: »can GS detect when double marches are active?
buffactive['March'] would return the number of marches you have(nil, 1, 2).
Unsure of the trusts part but my current guess is no(party.count might be able to detect the numerical value, but this would get flipped for real players and not only trust, additionally having a combination of real players and trust would obviously throw it off.)
There is an error now,
'end' expected (to close 'function' at line 63
Honestly think it means line 631 because it goes too far on the screen then
Looks like you're right, add an extra end around 646
(after "return meleeSet" and "end")
Odin.Itay
Serveur: Odin
Game: FFXI
Posts: 3
By Odin.Itay 2014-08-29 12:28:04
Someone please help me with my COR.lua :[
It is about PDT and MDT. I can only active those sets via the keyboard, with f10 and f11. What do I need to add to the lua file that it recognize a windower macro?
And the second problem is: How do I turn these sets off again? When I used spellcast I toggled these sets on and off, but I don't know how to do that now with gs... please help :[
Code
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
options.OffenseModes = {'Ranged', 'Melee', 'Acc'}
options.RangedModes = {'Normal', 'Acc'}
options.WeaponskillModes = {'Normal', 'Acc', 'Att', 'Mod'}
options.CastingModes = {'Normal', 'Resistant'}
options.IdleModes = {'Normal'}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'PDT'}
options.MagicalDefenseModes = {'MDT'}
state.Defense.PhysicalMode = 'PDT'
gear.RAbullet = "Adlivun Bullet"
gear.WSbullet = "Adlivun Bullet"
gear.MAbullet = "Adlivun Bullet"
gear.QDbullet = "Animikii Bullet"
options.ammo_warning_limit = 15
-- Additional local binds
-- Cor doesn't use hybrid defense mode; using that for ranged mode adjustments.
send_command('bind ^f9 gs c cycle RangedMode')
send_command('bind ^` input /ja "Double-up" <me>')
send_command('bind !` input /ja "Bolter\'s Roll" <me>')
select_default_macro_book()
end
Bismarck.Inference
Serveur: Bismarck
Game: FFXI
Posts: 417
By Bismarck.Inference 2014-08-29 14:27:09
Macros would be
PDT: /console gs c activate PhysicalDefense
MDT: /console gs c activate MagicalDefense
Take off : /console gs c reset defense
Don't need to add anything to the LUA file, just make those macros and you should be good to go.
By camaroz 2014-08-31 02:02:13
Getting error after a push just now gearswap/refresh.lua:437: attempt to perform arithmetic on a nil value
Ragnarok.Beef
Serveur: Ragnarok
Game: FFXI
Posts: 342
By Ragnarok.Beef 2014-08-31 07:11:00
Getting error after a push just now gearswap/refresh.lua:437: attempt to perform arithmetic on a nil value
load //updates and it should fix it. it fixed mine.
Cerberus.Conagh
Serveur: Cerberus
Game: FFXI
Posts: 3189
By Cerberus.Conagh 2014-08-31 12:13:18
how do I code Balrahn's ring in for latent refresh in assault areas on e.g. my RDM gearswap? is the ring's latent predefined in any of the libs or do i have to put the function of the latent in every gearswap? line 252 and 319 gives an idea of how it would look but idk how to define it completely, plz help! Plz? :<
idle Rule:
Code function Idle()
if buffactive['Sandstorm'] then
equip(sets.aftercast_Move)
elseif world.time >= (17*60) or world.time <= (7*60) then
if world.area == T{'Mamool Ja Training Grounds''Periqia','Lebros Cavern','Ilrusi Atoll','Leujaoam Sanctum'} then
equip(sets.aftercast_AssaultNight)
else
equip(sets.aftercast_IdleNight)
end
else
if world.area == T{'Mamool Ja Training Grounds''Periqia','Lebros Cavern','Ilrusi Atoll','Leujaoam Sanctum'} then
equip(sets.aftercast_AssaultDay)
else
equip(sets.aftercast_IdleDay)
end
end
end
Aftercast and Status New
Code function aftercast(spell,action)
if Armor == '119' then
equip(sets.aftercast_Idle119)
else
Idle()
end
end
function status_change(new,action)
if new=='Idle' then
if Armor == '119' then
equip(sets.aftercast_Idle119)
else
Idle()
end
elseif new=='Resting' then
equip(sets.Resting)
end
end
Leviathan.Comedies
Serveur: Leviathan
Game: FFXI
By Leviathan.Comedies 2014-09-01 19:05:53
I just made my second set of Qaaxo, and I have been looking and can not find a definite answer of how to implement both sets into my gearswap. I am using Motes's GS for most jobs that would utilize the alternate set.
Would it be something like this:
QaaxoHarnA = {name="Qaaxo Harness",augments={"Attack +15","Evasion +15",'"Dbl.Atk" +2'}}
QaaxoHarnB = {name="Qaaxo Harness",augments={"Accuracy +15","STR +7","Phys. dmg. taken -3%"}}
Then in the sets put it;
sets.engaged = {body=gear.QaaxoHarnA}
Thanks!
By kenshynofshiva 2014-09-01 21:52:57
Easiest way is just put on gear and hit gs export and bam you got it exactly.
Gives this:
hands={ name="Manibozho Gloves", augments={'Rng.Atk.+15','Rng.Acc.+10','AGI+10',}},
Leviathan.Comedies
Serveur: Leviathan
Game: FFXI
By Leviathan.Comedies 2014-09-02 13:31:35
Thanks that works better then the other method I was told about.
Asura.Folant
Serveur: Asura
Game: FFXI
Posts: 73
By Asura.Folant 2014-09-03 14:42:50
Edit:
Ended up being able to fix it myself. o/
By gdiShun 2014-09-03 15:55:36
Just trying to get self_commands working.
Code function job_self_command(commandArgs, eventArgs)
if commandArgs == 'blah' then
send_command('input /echo blah')
end
end
I type 'gs c blah' in the console and nothing. If I change that equal(==) to a not equal(~=), typing 'gs c blah' (or anything) works. I feel like it's something incredibly stupid on my part but I can't figure it out. lol.
EDIT: Nevermind. Needed this [1] due to the string split w/ Mote's I'm assuming. Code function job_self_command(commandArgs, eventArgs)
if commandArgs[1] == 'blah' then
send_command('input /echo blah')
end
end
Serveur: Phoenix
Game: FFXI
Posts: 90
By Phoenix.Mudrunner 2014-09-03 16:07:28
Using the GS sets from the share folder and Moren's includes I'm having an issue with no matter what job I am on. If I / nin and cast shadows the game wants to infinitely keep casting shadows over and over and will not stop till I disable g/s. And then I can no longer choose spells from my spell list and have to command them in /ma "utsunemi: ni" <me> and the spell will cast. (With GS disabled) I have turnt off spell cast as I once heard this was the issue and deleted it. At times I feel this is something with itemizer? Thanks in advance. Will post sets later as I learn more.
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.
|
|