|
Gearswap Support Thread
Asura.Rinuko
サーバ: Asura
Game: FFXI
Posts: 144
By Asura.Rinuko 2015-06-27 05:35:15
How do I force gs to swich to magian of trial staves? i.e on thunderbased spells i want it to switch to Apamajas I
Code --------------------------------------------------------------------------
-----------------------------------------
-- Setup functions for this job. Generally should not be modified.
--------------------------------------------------------------------------
-----------------------------------------
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent. state.Buff vars initialized here
will automatically be tracked.
function job_setup()
end
--------------------------------------------------------------------------
-----------------------------------------
-- User setup functions for this job. Recommend that these be overridden
in a sidecar file.
--------------------------------------------------------------------------
-----------------------------------------
-- Setup vars that are user-dependent. Can override this function in a
sidecar file.
function user_setup()
state.OffenseMode:options('None', 'Normal')
state.CastingMode:options('Normal', 'Resistant', 'Proc')
state.IdleMode:options('Normal', 'PDT')
state.MagicBurst = M(false, 'Magic Burst')
lowTierNukes = S{'Stone', 'Water', 'Aero', 'Fire', 'Blizzard',
'Thunder',
'Stone II', 'Water II', 'Aero II', 'Fire II', 'Blizzard II',
'Thunder II',
'Stone III', 'Water III', 'Aero III', 'Fire III', 'Blizzard III',
'Thunder III',
'Stonega', 'Waterga', 'Aeroga', 'Firaga', 'Blizzaga', 'Thundaga',
'Stonega II', 'Waterga II', 'Aeroga II', 'Firaga II', 'Blizzaga
II', 'Thundaga II'}
gear.macc_hagondes = {}
-- Additional local binds
send_command('bind ^` input /ma Stun <t>')
send_command('bind @` gs c activate MagicBurst')
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function user_unload()
send_command('unbind ^`')
send_command('unbind @`')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
---- Precast Sets ----
-- Precast sets to enhance JAs
sets.precast.JA['Mana Wall'] = {feet="Goetia Sabots +2"}
sets.precast.JA.Manafont = {body="Sorcerer's Coat +2"}
-- equip to maximize HP (for Tarus) and minimize MP loss before using
convert
sets.precast.JA.Convert = {}
-- Fast cast sets for spells
sets.precast.FC = {ear2="Loquacious Earring", back="Swith Cape"}
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC,
{hands="Carapacho Cuffs"})
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC,
{neck="Stoicheion Medal"})
sets.precast.FC.Cure = set_combine(sets.precast.FC)
sets.precast.FC.Curaga = sets.precast.FC.Cure
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically
defined
sets.precast.WS = {}
-- Specific weaponskill sets. Uses the base set if an appropriate
WSMod version isn't found.
sets.precast.WS['Vidohunir'] = {}
---- Midcast Sets ----
sets.midcast.FastRecast = {
ear2="Loquacious Earring", back="Swith Cape"}
sets.midcast.Cure = {main="chatoyant staff"}
sets.midcast.Curaga = sets.midcast.Cure
sets.midcast['Enhancing Magic'] = {hands="Carapacho Cuffs"}
sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'],
{hands="Carapacho Cuffs"})
sets.midcast['Enfeebling Magic'] = {body="wizard's coat"}
sets.midcast.ElementalEnfeeble = sets.midcast['Enfeebling Magic']
sets.midcast['Dark Magic'] = {legs="wizard's tonban"}
sets.midcast.Drain = {legs="wizard's tonban"}
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Stun = sets.precast.FC
sets.midcast.BardSong = {}
-- Elemental Magic sets
sets.midcast['Elemental Magic'] = {main="teiwaz", sub="wize strap",
ammo="snow sachet", head="wayfarer circlet", neck="stoicheion medal",
ear1="hecate's earring", ear2="moldavite earring", body="wayfarer robe",
hands="wayfarer cuffs", ring1="shiva ring", ring2="shiva ring",
back="goetia mantle", waist="cognition belt", legs="wayfarer slops",
feet="wayfarer clogs"}
sets.midcast['Elemental Magic'].Resistant = {main="teiwaz", sub="wize
strap", ammo="snow sachet", head="wayfarer circlet", neck="stoicheion
medal", ear1="hecate's earring", ear2="moldavite earring", body="wayfarer
robe", hands="wayfarer cuffs", ring1="shiva ring", ring2="shiva ring",
back="goetia mantle", waist="cognition belt", legs="wayfarer slops",
feet="wayfarer clogs"}
sets.midcast['Elemental Magic'].HighTierNuke = set_combine
(sets.midcast['Elemental Magic'], {sub="Wizzan Grip"})
sets.midcast['Elemental Magic'].HighTierNuke.Resistant = set_combine
(sets.midcast['Elemental Magic'], {sub="Wizzan Grip"})
-- Minimal damage gear for procs.
sets.midcast['Elemental Magic'].Proc = {}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {main="Chatoyant Staff",body="errant hpl.", neck="beak
necklace", ear1="magnetic earring", waist="hierarch belt"}
-- Idle sets
-- Normal refresh idle set
sets.idle = {main="Terra's Staff", body="dalmatica", head="wayfarer
circlet", neck="stoicheion medal", ear1="hecate's earring",
ear2="moldavite earring", hands="wayfarer cuffs", ring1="shiva ring",
ring2="shiva ring", back="goetia mantle", waist="cognition belt",
legs="wayfarer slops", feet="wayfarer clogs"}
-- Idle mode that keeps PDT gear on, but doesn't prevent normal gear
swaps for precast/etc.
sets.idle.PDT = {main="Terra's Staff"}
-- Idle mode scopes:
-- Idle mode when weak.
sets.idle.Weak = {}
-- Town gear.
sets.idle.Town = {}
-- Defense sets
sets.defense.PDT = {main="Terra's Staff"}
sets.defense.MDT = {}
sets.Kiting = {feet="Herald's Gaiters"}
sets.latent_refresh = {waist="Fucho-no-obi"}
-- Buff sets: Gear that needs to be worn to actively enhance a current
player buff.
sets.buff['Mana Wall'] = {feet="Goetia Sabots +2"}
sets.magic_burst = {neck="Mizukage-no-Kubikazari", ring1="Sorcerer's
Ring"}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes.
Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the
offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Normal melee group
sets.engaged = {}
end
--------------------------------------------------------------------------
-----------------------------------------
-- Job-specific hooks for standard casting events.
--------------------------------------------------------------------------
-----------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear
equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped
on precast.
function job_precast(spell, action, spellMap, eventArgs)
if spellMap == 'Cure' or spellMap == 'Curaga' then
gear.default.obi_waist = "Goading Belt"
elseif spell.skill == 'Elemental Magic' then
gear.default.obi_waist = "Sekhmet Corset"
if state.CastingMode.value == 'Proc' then
classes.CustomClass = 'Proc'
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)
end
function job_post_midcast(spell, action, spellMap, eventArgs)
if spell.skill == 'Elemental Magic' then
if state.MagicBurst.value then
equip(sets.magic_burst)
end
if player.hpp < 76 then
equip({ring1="Sorcerer's Ring"})
end
end
end
function job_aftercast(spell, action, spellMap, eventArgs)
-- Lock feet after using Mana Wall.
if not spell.interrupted then
if spell.english == 'Mana Wall' then
enable('feet')
equip(sets.buff['Mana Wall'])
disable('feet')
elseif spell.skill == 'Elemental Magic' then
state.MagicBurst:reset()
end
end
end
--------------------------------------------------------------------------
-----------------------------------------
-- Job-specific hooks for non-casting events.
--------------------------------------------------------------------------
-----------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
-- Unlock feet when Mana Wall buff is lost.
if buff == "Mana Wall" and not gain then
enable('feet')
handle_equipping_gear(player.status)
end
end
-- Handle notifications of general user state change.
function job_state_change(stateField, newValue, oldValue)
if stateField == 'Offense Mode' then
if newValue == 'Normal' then
disable('main','sub','range')
else
enable('main','sub','range')
end
end
end
--------------------------------------------------------------------------
-----------------------------------------
-- User code that supplements standard library decisions.
--------------------------------------------------------------------------
-----------------------------------------
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
if spell.skill == 'Elemental Magic' and default_spell_map ~=
'ElementalEnfeeble' then
--[[ No real need to differentiate with current gear.
if lowTierNukes:contains(spell.english) then
return 'LowTierNuke'
else
return 'HighTierNuke'
end
--]]
end
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
return idleSet
end
-- Function to display the current relevant user state when doing an
update.
function display_current_job_state(eventArgs)
display_current_caster_state()
eventArgs.handled = true
end
--------------------------------------------------------------------------
-----------------------------------------
-- Utility functions specific to this job.
--------------------------------------------------------------------------
-----------------------------------------
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
set_macro_page(1, 15)
end
サーバ: Asura
Game: FFXI
Posts: 363
By Asura.Vafruvant 2015-06-27 10:15:09
How do I force gs to swich to magian of trial staves? i.e on thunderbased spells i want it to switch to Apamajas I I don't have them, personally, but I think you would say this on your precast:
main=gear.FastcastStaff
You'll also need this, as you would for obi:
gear.default.fastcast_staff = ""
where your normal staff goes between the quotes
Asura.Rinuko
サーバ: Asura
Game: FFXI
Posts: 144
By Asura.Rinuko 2015-06-27 10:59:10
Would it only equip it on thunder 1-5 and not on blizzard1-5?
サーバ: Bahamut
Game: FFXI
Posts: 879
By Bahamut.Seekerstar 2015-06-27 11:13:40
Is there a guide anywhere that explains commands and such in language a ten year old would understand? I'm confused and want to read up a bit before trying to use this.
Also, one reason I don't use GS is that it feels like it automates playing just a little too much. I may be mistaken, but from watching others who do use it it seems like it's GS running a script instead of the player making actual choices, and I don't think that's something I want to do. I'm just looking for a bit more functionality and perhaps faster equipment swaps for a few of my jobs. I want to be the one playing, not a program.
Note: I mean no disrespect to anyone who utilizes GS to the fullest. I just prefer a more hands-on approach.
If I do decide to use this, links to luas for THF NIN RUN RDM SMN and WHM would also help.
Thanks in advance.
サーバ: Asura
Game: FFXI
Posts: 363
By Asura.Vafruvant 2015-06-27 11:27:35
Would it only equip it on thunder 1-5 and not on blizzard1-5? Yes, unless you had the ice Fast Cast staff too, then it would use that one on Blizzards.
サーバ: Asura
Game: FFXI
Posts: 363
By Asura.Vafruvant 2015-06-27 11:29:58
Bahamut.Seekerstar said: »Is there a guide anywhere that explains commands and such in language a ten year old would understand? I'm confused and want to read up a bit before trying to use this.
Also, one reason I don't use GS is that it feels like it automates playing just a little too much. I may be mistaken, but from watching others who do use it it seems like it's GS running a script instead of the player making actual choices, and I don't think that's something I want to do. I'm just looking for a bit more functionality and perhaps faster equipment swaps for a few of my jobs. I want to be the one playing, not a program.
Note: I mean no disrespect to anyone who utilizes GS to the fullest. I just prefer a more hands-on approach.
If I do decide to use this, links to luas for THF NIN RUN RDM SMN and WHM would also help.
Thanks in advance. Gearswap only automates what you want it to. The primary function is to switch to different gear sets that the game doesn't naturally allow you to switch between that quickly. If you use a barebones .lua, you will only do that. You have to make a choice if you want it to do more.
サーバ: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2015-06-27 11:40:39
Bahamut.Seekerstar said: »Is there a guide anywhere that explains commands and such in language a ten year old would understand? I'm confused and want to read up a bit before trying to use this.
http://www.ffxiah.com/forum/topic/41992/gearswap-for-dummies/
It's fairly old now, and not entirely up to date, but if you're looking to just get a quick GS101 in, then it might be helpful.
As mentioned GS just notices things you do in game (any spell, Job Ability, Action or Buff) and responds to it with a gear set you define. That's about it really. Obviously you can get far more extensive, but at it's core, it's just a list of every gear-set you would use in the game, and it automatically applies that set any time you do the correlating action.
サーバ: Bahamut
Game: FFXI
Posts: 879
By Bahamut.Seekerstar 2015-06-27 15:15:28
ll right, I read all that and yeah, there seems to be a lot of customization.
What I don't understand is how you do it. How does it interact with macros? Like, if I hit a macro to cast Utsusemi: San, does it know what I'm doing and it'll automatically equip the set I specified in the lua file? Or do I have to use an alternative means of casting, such as a special command or even via menu?
From what I can tell I could, in theory, set it up to automatically cast Utsusemi in order of priority if my shadows drop, but I'm not sure I like that, lol.
You don't need AEcho with this, do you.
Sorry for all the questions; I'm just trying to understand all this. Like I don't quite understand what it means by cycle through a keybind.
Bismarck.Inference
サーバ: Bismarck
Game: FFXI
Posts: 417
By Bismarck.Inference 2015-06-27 15:34:17
It is aware of the action, regardless of how you use it. Macro, typing it in, going through the menu, or using Shortcuts addon will all trigger GearSwap.
"Cycling" is one of the ways people manage different content scenarios...think of it as adding some manual control to the automatic system. The most basic GearSwap will equip one TP set and one WS set all the time. However, through some additional setup, you can create a bunch of different TP sets, and then hit a keybind to change a variable value within the program. For instance, you may be doing Delve using your fodder TP set, then when you hit the high evasive Mandragora, you trigger the command to increment your accuracy level, so now it will start equipping your "High Accuracy" TP/WS sets instead of your fodder sets, and will continue to do so until you tell if you want to go back to fodder.
And yes, you could set up an auto-utsusemi if you so desired, though the effectiveness would depend on how well you coded it against different scenarios : what does it do if it fails to cast because you were in the middle of a WS when your last shadow dropped? What about interruptions?
Seraph.Jacaut
サーバ: Seraph
Game: FFXI
Posts: 383
By Seraph.Jacaut 2015-06-27 17:22:04
Ah too much working! okay back theres my whole .lua... i cant figure out how to post it with the numbers on the side. i used the code button at the top of the reply box.
Code -------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
--[[
Custom commands:
gs c step
Uses the currently configured step on the target, with either <t> or <stnpc> depending on setting.
gs c step t
Uses the currently configured step on the target, but forces use of <t>.
Configuration commands:
gs c cycle mainstep
Cycles through the available steps to use as the primary step when using one of the above commands.
gs c cycle altstep
Cycles through the available steps to use for alternating with the configured main step.
gs c toggle usealtstep
Toggles whether or not to use an alternate step.
gs c toggle selectsteptarget
Toggles whether or not to use <stnpc> (as opposed to <t>) when using a step.
--]]
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
state.Buff['Climactic Flourish'] = buffactive['climactic flourish'] or false
state.MainStep = M{['description']='Main Step', 'Box Step', 'Quickstep', 'Feather Step', 'Stutter Step'}
state.AltStep = M{['description']='Alt Step', 'Quickstep', 'Feather Step', 'Stutter Step', 'Box Step'}
state.UseAltStep = M(false, 'Use Alt Step')
state.SelectStepTarget = M(false, 'Select Step Target')
state.IgnoreTargetting = M(false, 'Ignore Targetting')
state.CurrentStep = M{['description']='Current Step', 'Main', 'Alt'}
state.SkillchainPending = M(false, 'Skillchain Pending')
determine_haste_group()
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('Normal', 'Acc', 'Fodder', 'Tank', 'Solo')
state.HybridMode:options('Normal', 'Evasion', 'PDT')
state.WeaponskillMode:options('Normal', 'Acc', 'Fodder')
state.PhysicalDefenseMode:options('Evasion', 'PDT')
gear.default.weaponskill_neck = "Asperity Necklace"
gear.default.weaponskill_waist = "Caudata Belt"
gear.AugQuiahuiz = {name="Quiahuiz Trousers", augments={'Haste+2','"Snapshot"+2','STR+8'}}
-- Additional local binds
send_command('bind ^= gs c cycle mainstep')
send_command('bind != gs c cycle altstep')
send_command('bind ^- gs c toggle selectsteptarget')
send_command('bind !- gs c toggle usealtstep')
send_command('bind ^` input /ja "Chocobo Jig" <me>')
send_command('bind !` input /ja "Chocobo Jig II" <me>')
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function user_unload()
send_command('unbind ^`')
send_command('unbind !`')
send_command('unbind ^=')
send_command('unbind !=')
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['No Foot Rise'] = {body="Horos Casaque"}
sets.precast.JA['Trance'] = {head="Horos Tiara"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {ammo="Sonia's Plectrum",
head="Horos Tiara",ear1="Roundel Earring",
body="Maxixi Casaque",hands="Maxixi Bangles +1",ring1="Asklepian Ring",
back="Toetapper Mantle",waist="Caudata Belt",legs="Horos Tights +1",feet="Maxixi Toe Shoes"}
-- Don't need any special gear for Healing Waltz.
sets.precast.Waltz['Healing Waltz'] = {}
sets.precast.Samba = {head="Maxixi Tiara"}
sets.precast.Jig = {legs="Horos Tights +1", feet="Maxixi Toe Shoes"}
sets.precast.Step = {waist="Chaac Belt"}
sets.precast.Step['Feather Step'] = {feet="Charis Shoes +2"}
sets.precast.Flourish1 = {}
sets.precast.Flourish1['Violent Flourish'] = {ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Horos Casaque",hands="Buremte Gloves",ring2="Sangoma Ring",
waist="Chaac Belt",legs="Horos Tights +1",feet="Iuitl Gaiters"} -- magic accuracy
sets.precast.Flourish1['Desperate Flourish'] = {ammo="Charis Feather",
head="Whirlpool Mask",neck="Ej Necklace",
body="Horos Casaque",hands="Buremte Gloves",ring1="Beeline Ring",
back="Toetapper Mantle",waist="Hurch'lan Sash",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"} -- acc gear
sets.precast.Flourish2 = {}
sets.precast.Flourish2['Reverse Flourish'] = {hands="Maculele Bangles",back="Toetapper Mantle"}
sets.precast.Flourish3 = {}
sets.precast.Flourish3['Striking Flourish'] = {body="Maculele Casaque"}
sets.precast.Flourish3['Climactic Flourish'] = {head="Charis Tiara +2"}
-- Fast cast sets for spells
sets.precast.FC = {ammo="Impatiens",head="Atho's Chapeau",ear2="Loquacious Earring",hands="Thaumas Gloves",ring1="Prolix Ring"}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {ammo="Charis Feather",
head="Ux'ukaj Cap",neck="Breeze Gorget",ear1="Brutal Earring",ear2="Moonshade Earring",
body="Taeon Tabard",hands="Taeon Gloves",ring1="Ramuh Ring",ring2="Epona's Ring",
back="Rancorous Mantle",waist="Fotia Belt",legs="Manibozho Brais",feet="Horos Toe Shoes +1"}
sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Honed Tathlum", back="Toetapper Mantle"})
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {neck="Houyi's Gorget",
hands="Iuitl Wristbands",ring1="Stormsoul Ring",
waist="Caudata Belt",legs="Nahtirah Trousers"})
sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {ammo="Honed Tathlum", back="Toetapper Mantle"})
sets.precast.WS['Exenterator'].Fodder = set_combine(sets.precast.WS['Exenterator'], {waist=gear.ElementalBelt})
sets.precast.WS['Pyrric Kleos']= set_combine(sets.precast.WS, {ammo="Charis Feather",
head={ name="Taeon Chapeau", augments={'"Triple Atk."+2',}},neck="Breeze Gorget",ear1="Brutal Earring",ear2="Moonshade Earring",
body="Taeon Tabard",hands="Taeon Gloves",ring1="Ramuh Ring",ring2="Epona's Ring",
back="Rancorous Mantle",waist="Fotia Belt",legs="Taeon tights",feet="Taeon Boots"})
sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, {ammo="Charis Feather",
head={ name="Taeon Chapeau", augments={'"Triple Atk."+2',}},neck="Breeze Gorget",ear1="Brutal Earring",ear2="Moonshade Earring",
body="Taeon Tabard",hands="Taeon Gloves",ring1="Ramuh Ring",ring2="Epona's Ring",
back="Rancorous Mantle",waist="Fotia Belt",legs="Taeon tights",feet={ name="Taeon Boots", augments={'"Mag.Atk.Bns."+9','"Triple Atk."+2',}})
sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {ammo="Honed Tathlum", back="Toetapper Mantle"})
sets.precast.WS["Rudra's Storm"]= set_combine(sets.precast.WS, {ammo="Charis Feather",
head={ name="Taeon Chapeau", augments={'"Triple Atk."+2',}},neck="Breeze Gorget",ear1="Brutal Earring",ear2="Moonshade Earring",
body="Taeon Tabard",hands="Taeon Gloves",ring1="Ramuh Ring",ring2="Epona's Ring",
back="Rancorous Mantle",waist="Fotia Belt",legs="Taeon tights",feet="Taeon Boots"})
sets.precast.WS["Rudra's Storm"].Acc = set_combine(sets.precast.WS["Rudra's Storm"], {ammo="Honed Tathlum", back="Toetapper Mantle"})
sets.precast.WS['Aeolian Edge'] = {ammo="Charis Feather",
head="Wayfarer Circlet",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Moonshade Earring",
body="Wayfarer Robe",hands="Wayfarer Cuffs",ring1="Acumen Ring",ring2="Demon's Ring",
back="Toro Cape",waist="Chaac Belt",legs="Shneddick Tights +1",feet="Wayfarer Clogs"}
sets.precast.Skillchain = {hands="Charis Bangles +2"}
-- Midcast Sets
sets.midcast.FastRecast = {
head="Felistris Mask",ear2="Loquacious Earring",
body="Iuitl Vest",hands="Iuitl Wristbands",
legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
-- Specific spells
sets.midcast.Utsusemi = {
head="Felistris Mask",neck="Ej Necklace",ear2="Loquacious Earring",
body="Iuitl Vest",hands="Iuitl Wristbands",ring1="Beeline Ring",
back="Toetapper Mantle",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {head="Ocelomeh Headpiece +1",neck="Wiglen Gorget",
ring1="Sheltered Ring",ring2="Paguroidea Ring"}
sets.ExtraRegen = {head="Ocelomeh Headpiece +1"}
-- Idle sets
sets.idle = {ammo="Iron Gobbet",
head="Felistris Mask",neck="Wiglen Gorget",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Shadow Mantle",waist="Flume Belt",legs="Qaaxo Tights",feet="Skadi's Jambeaux +1"}
sets.idle.Town = {main="Izhiikoh", sub="Sabebus",ammo="Charis Feather",
head="Whirlpool Mask",neck="Charis Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Emet Harness +1",hands="Iuitl Wristbands",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Atheling Mantle",waist="Patentia Sash",legs="Kaabnax Trousers",feet="Skadi's Jambeaux +1"}
sets.idle.Weak = {ammo="Iron Gobbet",
head="Felistris Mask",neck="Wiglen Gorget",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Qaaxo Harness",hands="Buremte Gloves",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Shadow Mantle",waist="Flume Belt",legs="Kaabnax Trousers",feet="Skadi's Jambeaux +1"}
-- Defense sets
sets.defense.Evasion = {ammo="Charis Feather",
head="Uk'uxkaj Cap",neck="Twilight Torque",
body="Iuitl Vest",hands="Maxixi Bangles +1",ring1="Dark Ring",ring2="Rajas Ring",
back="Toetapper Mantle",waist="Flume Belt",legs="Kaabnax Trousers",feet="Horos Toe Shoes +1"}
sets.defense.PDT = {ammo="",
head="Iuitl Headgear +1",neck="Twilight Torque",
body="Emet Harness +1",hands="Maxixi Bangles +1",ring1="Vocane Ring",ring2="Defending Ring",
back="Mollusca Mantle",waist="Flume Belt",legs="Qaaxo Tights",feet="Horos Toe Shoes +1"}
sets.defense.MDT = {ammo="Demonry Stone",
head="Uk'uxkaj Cap",neck="Twilight Torque",ear1="Merman's Earring",ear2="Merman's Earring",
body="Emet Harness +1",hands="Buremte Gloves",ring1="Defending Ring",ring2="Vocane Ring",
back="Mollusca Mantle",waist="Flume Belt",legs="Qaaxo Tights",feet="Taeon Boots"}
sets.Kiting = {feet="Skadi's Jambeaux +1"}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Normal melee group
sets.engaged = {ammo="Charis Feather",
head="Taeon chapeau",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Taeon Tabard",hands="Taeon Gloves",ring1="Epona's Ring",ring2="Rajas Ring",
back="Bleating Mantle",waist="Windbuffet Belt",legs="Taeon Tights",feet="Taeon Boots"}
sets.engaged.Tank = {ammo="Honed Tathlum",
head="Iuitl Headgear +1",neck="Twilight Torque",
body="Emet Harness +1",hands="buremte Gloves",ring1="Vocane Ring",ring2="Defending Ring",
back="toetapper Mantle",waist="Flume Belt",legs="Qaaxo Tights",feet="Horos Toe Shoes +1"}
sets.engaged.Fodder = {ammo="Charis Feather",
head="Taeon Chapeau",neck="Charis Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Thaumas Coat",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
back="Bleating Mantle",waist="Windbuffet Belt",legs="Taeon Tights",feet="Taeon Boots"}
sets.engaged.Fodder.Evasion = {ammo="Charis Feather",
head="Taeon Chapeau",neck="Charis Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Maculele Casaque",hands="Maxixi Bangles +1",ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Patentia Sash",legs="Horos tights +1",feet="Taeon Boots"}
sets.engaged.Solo = {ammo="Charis Feather",
head={ name="Taeon Chapeau", augments={'Accuracy+22','"Dual Wield"+5',}},neck="Charis Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Maculele Casaque",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="windbuffet Belt",legs="Taeon Tights",feet="Taeon Boots"}
sets.engaged.Acc = {ammo="Honed Tathlum",
head={ name="Taeon Chapeau", augments={'Accuracy+22','"Dual Wield"+5',}},neck="Charis Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Maculele Casaque",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Anguinus Belt",legs="Taeon Tights",feet="Horos Toe Shoes +1"}
sets.engaged.Evasion = {ammo="Charis Feather",
head="Felistris Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Beeline Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Patentia Sash",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
sets.engaged.PDT = {ammo="Charis Feather",
head="Felistris Mask",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Patricius Ring",ring2="Epona's Ring",
back="Shadow Mantle",waist="Patentia Sash",legs="Qaaxo Tights",feet="Iuitl Gaiters +1"}
sets.engaged.Acc.Evasion = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Beeline Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Hurch'lan Sash",legs="Qaaxo Tights",feet="Qaaxo Leggings"}
sets.engaged.Acc.PDT = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Patricius Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Hurch'lan Sash",legs="Qaaxo Tights",feet="Qaaxo Leggings"}
-- Custom melee group: High Haste (2x March or Haste)
sets.engaged.HighHaste = {ammo="Charis Feather",
head="Felistris Mask",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Qaaxo Harness",hands="Maxixi Bangles",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Patentia Sash",legs="Kaabnax Trousers",feet="Manibozho Boots"}
sets.engaged.Fodder.HighHaste = {ammo="Charis Feather",
head="Felistris Mask",neck="Charis Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Charis Casaque +2",hands="Maxixi Bangles",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Patentia Sash",legs=gear.AugQuiahuiz,feet="Horos Toe Shoes"}
sets.engaged.Fodder.Evasion.HighHaste = {ammo="Charis Feather",
head="Felistris Mask",neck="Charis Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Qaaxo Harness",hands="Maxixi Bangles",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Patentia Sash",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
sets.engaged.Acc.HighHaste = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Iuitl Vest",hands="Iuitl Wristbands",ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Hurch'lan Sash",legs="Qaaxo Tights",feet="Qaaxo Leggings"}
sets.engaged.Evasion.HighHaste = {ammo="Charis Feather",
head="Felistris Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Beeline Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Patentia Sash",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
sets.engaged.Acc.Evasion.HighHaste = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Beeline Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Hurch'lan Sash",legs="Qaaxo Tights",feet="Qaaxo Leggings"}
sets.engaged.PDT.HighHaste = {ammo="Charis Feather",
head="Felistris Mask",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Patricius Ring",ring2="Epona's Ring",
back="Shadow Mantle",waist="Patentia Sash",legs="Qaaxo Tights",feet="Iuitl Gaiters +1"}
sets.engaged.Acc.PDT.HighHaste = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Iuitl Vest",hands="Iuitl Wristbands",ring1="Patricius Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Hurch'lan Sash",legs="Qaaxo Tights",feet="Qaaxo Leggings"}
-- Custom melee group: Max Haste (2x March + Haste)
sets.engaged.MaxHaste = {ammo="Charis Feather",
head="Felistris Mask",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Qaaxo Harness",hands="Maxixi Bangles",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Windbuffet Belt",legs=gear.AugQuiahuiz,feet="Manibozho Boots"}
-- Getting Marches+Haste from Trust NPCs, doesn't cap delay.
sets.engaged.Fodder.MaxHaste = {ammo="Charis Feather",
head="Felistris Mask",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Thaumas Coat",hands="Maxixi Bangles",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Patentia Sash",legs=gear.AugQuiahuiz,feet="Horos Toe Shoes"}
sets.engaged.Fodder.Evasion.MaxHaste = {ammo="Charis Feather",
head="Felistris Mask",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Qaaxo Harness",hands="Maxixi Bangles",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Patentia Sash",legs="Kaabnax Trousers",feet="Manibozho Boots"}
sets.engaged.Acc.MaxHaste = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Iuitl Vest",hands="Iuitl Wristbands",ring1="Rajas Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Hurch'lan Sash",legs="Qaaxo Tights",feet="Qaaxo Leggings"}
sets.engaged.Evasion.MaxHaste = {ammo="Charis Feather",
head="Felistris Mask",neck="Ej Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Beeline Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Windbuffet Belt",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
sets.engaged.Acc.Evasion.MaxHaste = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Ej Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Beeline Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Hurch'lan Sash",legs="Kaabnax Trousers",feet="Qaaxo Leggings"}
sets.engaged.PDT.MaxHaste = {ammo="Charis Feather",
head="Felistris Mask",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Qaaxo Harness",hands="Iuitl Wristbands",ring1="Patricius Ring",ring2="Epona's Ring",
back="Shadow Mantle",waist="Windbuffet Belt",legs="Qaaxo Tights",feet="Iuitl Gaiters +1"}
sets.engaged.Acc.PDT.MaxHaste = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Iuitl Vest",hands="Iuitl Wristbands",ring1="Patricius Ring",ring2="Epona's Ring",
back="Toetapper Mantle",waist="Hurch'lan Sash",legs="Qaaxo Tights",feet="Qaaxo Leggings"}
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Saber Dance'] = {legs="Horos Tights +1"}
sets.buff['Climactic Flourish'] = {head="Charis Tiara +2"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
function job_precast(spell, action, spellMap, eventArgs)
--auto_presto(spell)
end
function job_post_precast(spell, action, spellMap, eventArgs)
if spell.type == "WeaponSkill" then
if state.Buff['Climactic Flourish'] then
equip(sets.buff['Climactic Flourish'])
end
if state.SkillchainPending.value == true then
equip(sets.precast.Skillchain)
end
end
end
-- Return true if we handled the aftercast work. Otherwise it will fall back
-- to the general aftercast() code in Mote-Include.
function job_aftercast(spell, action, spellMap, eventArgs)
if not spell.interrupted then
if spell.english == "Wild Flourish" then
state.SkillchainPending:set()
send_command('wait 5;gs c unset SkillchainPending')
elseif spell.type:lower() == "weaponskill" then
state.SkillchainPending:toggle()
send_command('wait 6;gs c unset SkillchainPending')
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff,gain)
-- If we gain or lose any haste buffs, adjust which gear set we target.
if S{'haste','march','embrava','haste samba'}:contains(buff:lower()) then
determine_haste_group()
handle_equipping_gear(player.status)
elseif buff == 'Saber Dance' or buff == 'Climactic Flourish' then
handle_equipping_gear(player.status)
end
end
function job_status_change(new_status, old_status)
if new_status == 'Engaged' then
determine_haste_group()
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Called by the default 'update' self-command.
function job_update(cmdParams, eventArgs)
determine_haste_group()
end
function customize_idle_set(idleSet)
if player.hpp < 80 and not areas.Cities:contains(world.area) then
idleSet = set_combine(idleSet, sets.ExtraRegen)
end
return idleSet
end
function customize_melee_set(meleeSet)
if state.DefenseMode.value ~= 'None' then
if buffactive['saber dance'] then
meleeSet = set_combine(meleeSet, sets.buff['Saber Dance'])
end
if state.Buff['Climactic Flourish'] then
meleeSet = set_combine(meleeSet, sets.buff['Climactic Flourish'])
end
end
return meleeSet
end
-- Handle auto-targetting based on local setup.
function job_auto_change_target(spell, action, spellMap, eventArgs)
if spell.type == 'Step' then
if state.IgnoreTargetting.value == true then
state.IgnoreTargetting:reset()
eventArgs.handled = true
end
eventArgs.SelectNPCTargets = state.SelectStepTarget.value
end
end
-- Function to display the current relevant user state when doing an update.
-- Set eventArgs.handled to true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
local msg = 'Melee'
if state.CombatForm.has_value then
msg = msg .. ' (' .. state.CombatForm.value .. ')'
end
msg = msg .. ': '
msg = msg .. state.OffenseMode.value
if state.HybridMode.value ~= 'Normal' then
msg = msg .. '/' .. state.HybridMode.value
end
msg = msg .. ', WS: ' .. state.WeaponskillMode.value
if state.DefenseMode.value ~= 'None' then
msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
end
if state.Kiting.value then
msg = msg .. ', Kiting'
end
msg = msg .. ', ['..state.MainStep.current
if state.UseAltStep.value == true then
msg = msg .. '/'..state.AltStep.current
end
msg = msg .. ']'
if state.SelectStepTarget.value == true then
steps = steps..' (Targetted)'
end
add_to_chat(122, msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- User self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called for custom player commands.
function job_self_command(cmdParams, eventArgs)
if cmdParams[1] == 'step' then
if cmdParams[2] == 't' then
state.IgnoreTargetting:set()
end
local doStep = ''
if state.UseAltStep.value == true then
doStep = state[state.CurrentStep.current..'Step'].current
state.CurrentStep:cycle()
else
doStep = state.MainStep.current
end
send_command('@input /ja "'..doStep..'" <t>')
end
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function determine_haste_group()
-- We have three groups of DW in gear: Charis body, Charis neck + DW earrings, and Patentia Sash.
-- For high haste, we want to be able to drop one of the 10% groups (body, preferably).
-- High haste buffs:
-- 2x Marches + Haste
-- 2x Marches + Haste Samba
-- 1x March + Haste + Haste Samba
-- Embrava + any other haste buff
-- For max haste, we probably need to consider dropping all DW gear.
-- Max haste buffs:
-- Embrava + Haste/March + Haste Samba
-- 2x March + Haste + Haste Samba
classes.CustomMeleeGroups:clear()
if buffactive.embrava and (buffactive.haste or buffactive.march) and buffactive['haste samba'] then
classes.CustomMeleeGroups:append('MaxHaste')
elseif buffactive.march == 2 and buffactive.haste and buffactive['haste samba'] then
classes.CustomMeleeGroups:append('MaxHaste')
elseif buffactive.embrava and (buffactive.haste or buffactive.march or buffactive['haste samba']) then
classes.CustomMeleeGroups:append('HighHaste')
elseif buffactive.march == 1 and buffactive.haste and buffactive['haste samba'] then
classes.CustomMeleeGroups:append('HighHaste')
elseif buffactive.march == 2 and (buffactive.haste or buffactive['haste samba']) then
classes.CustomMeleeGroups:append('HighHaste')
end
end
-- Automatically use Presto for steps when it's available and we have less than 3 finishing moves
function auto_presto(spell)
if spell.type == 'Step' then
local allRecasts = windower.ffxi.get_ability_recasts()
local prestoCooldown = allRecasts[236]
local under3FMs = not buffactive['Finishing Move 3'] and not buffactive['Finishing Move 4'] and not buffactive['Finishing Move 5']
if player.main_job_level >= 77 and prestoCooldown < 1 and under3FMs then
cast_delay(1.1)
send_command('@input /ja "Presto" <me>')
end
end
end
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'WAR' then
set_macro_page(1, 16)
elseif player.sub_job == 'NIN' then
set_macro_page(1, 16)
elseif player.sub_job == 'SAM' then
set_macro_page(1, 16)
else
set_macro_page(1, 16)
end
end
Heres the specific set that wont work. It worked fine until i replaced the feet with a augmented pair. Code sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, {ammo="Charis Feather",
head={ name="Taeon Chapeau", augments={'"Triple Atk."+2',}},neck="Breeze Gorget",ear1="Brutal Earring",ear2="Moonshade Earring",
body="Taeon Tabard",hands="Taeon Gloves",ring1="Ramuh Ring",ring2="Epona's Ring",
back="Rancorous Mantle",waist="Fotia Belt",legs="Taeon tights",feet={ name="Taeon Boots", augments={'"Mag.Atk.Bns."+9','"Triple Atk."+2',}})
Bismarck.Inference
サーバ: Bismarck
Game: FFXI
Posts: 417
By Bismarck.Inference 2015-06-27 18:09:34
Put a third } before the closing parenthesis.
More of an observation than a necessity, but you don't need to call set_combine at all, since the second argument has something in every slot, it's equivalent to just defining that as the set to begin with.
Seraph.Jacaut
サーバ: Seraph
Game: FFXI
Posts: 383
By Seraph.Jacaut 2015-06-27 18:13:58
Bismarck.Inference said: »Put a third } before the closing parenthesis.
More of an observation than a necessity, but you don't need to call set_combine at all, since the second argument has something in every slot, it's equivalent just defining that as the set to begin with. thanks fixed!~ yeah i just filled it all in instead of using the precast base for some reason, i just use templates cause this stuff is so easy to mess up when you dont know what youre doing. now to go nuts with augments on all my .luas!
サーバ: Bahamut
Game: FFXI
Posts: 879
By Bahamut.Seekerstar 2015-06-27 18:39:42
Bismarck.Inference said: »It is aware of the action, regardless of how you use it. Macro, typing it in, going through the menu, or using Shortcuts addon will all trigger GearSwap.
"Cycling" is one of the ways people manage different content scenarios...think of it as adding some manual control to the automatic system. The most basic GearSwap will equip one TP set and one WS set all the time. However, through some additional setup, you can create a bunch of different TP sets, and then hit a keybind to change a variable value within the program. For instance, you may be doing Delve using your fodder TP set, then when you hit the high evasive Mandragora, you trigger the command to increment your accuracy level, so now it will start equipping your "High Accuracy" TP/WS sets instead of your fodder sets, and will continue to do so until you tell if you want to go back to fodder.
And yes, you could set up an auto-utsusemi if you so desired, though the effectiveness would depend on how well you coded it against different scenarios : what does it do if it fails to cast because you were in the middle of a WS when your last shadow dropped? What about interruptions?
I have different sets I use with manual macros, we'll use ninja for example: TP set, ACC set, midacc set, MAB set, MACC set, three different WS set, PDT, MDT, dual wield, and evasion. It would definitely be easier to have something that could equip this stuff for me.
I guess I need to head over to the NIN area and snag some help with that, huh?
Thanks. :)
Bismarck.Speedyjim
サーバ: Bismarck
Game: FFXI
Posts: 516
By Bismarck.Speedyjim 2015-06-27 19:17:23
Bismarck.Speedyjim said: »Looking for help with my MNK.lua as it isn't equipping my Bhikku Cyclas +1 when Impetus is up. Any help is appreciated. My gear sets are in a sidecar.
Code -------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
include('organizer-lib')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
state.Buff.Footwork = buffactive.Footwork or false
state.Buff.Impetus = buffactive.Impetus or false
state.FootworkWS = M(false, 'Footwork on WS')
info.impetus_hit_count = 0
windower.raw_register_event('action', on_action_for_impetus)
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('Normal', 'SomeAcc', 'FullAcc', 'Fodder')
state.WeaponskillMode:options('Normal', 'SomeAcc', 'FullAcc', 'Fodder')
state.HybridMode:options('Normal', 'PDT', 'Counter')
state.PhysicalDefenseMode:options('PDT', 'HP')
update_combat_form()
update_melee_groups()
select_default_macro_book()
gear.ws_feet = {name="Qaaxo Leggings", augments={'Attack+15','STR+12','"Mag.Atk.Bns."+15'}}
gear.acc_feet = {name="Qaaxo Leggings", augments={'Accuracy+15','STR+7','Phys. dmg. taken -3'}}
send_command('bind delete input /ws Victory Smite <t>')
send_command('bind Home input /ja Chakra <me>')
send_command('bind End input /ja Boost <me>')
end
function user_unload()
send_command('unbind `')
send_command('unbind ^-')
send_command('unbind ^=')
send_command('unbind delete')
send_command('unbind end')
send_command('unbind home')
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
function pretarget(spell,action)
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)
-- Don't gearswap for weaponskills when Defense is on.
if spell.type == 'WeaponSkill' and state.DefenseMode.current ~= 'None' then
eventArgs.handled = true
end
if spell.english == 'Berserk' then
if buffactive.Berserk then -- Change Berserk To Aggressor If Berserk Is On --
cancel_spell()
send_command('input /ja Aggressor <me>')
end
end
if (spell.type:endswith('Magic') or spell.type == "Ninjutsu") then
if buffactive.Silence then
cancel_spell()
send_command('input /item "Echo Drops" <me>')
end
end
end
-- Run after the general precast() is done.
function job_post_precast(spell, action, spellMap, eventArgs)
if spell.type == 'WeaponSkill' and state.DefenseMode.current ~= 'None' then
if state.Buff.Impetus and (spell.english == "Ascetic's Fury" or spell.english == "Victory Smite") then
-- Need 6 hits at capped dDex, or 9 hits if dDex is uncapped, for Tantra to tie or win.
if (state.OffenseMode.current == 'Fodder' and info.impetus_hit_count > 5) or (info.impetus_hit_count > 8) then
equip(sets.impetus_body)
end
elseif state.Buff.Footwork and (spell.english == "Dragon's Kick" or spell.english == "Tornado Kick") then
equip(sets.footwork_kick_feet)
end
-- Replace Moonshade Earring if we're at cap TP
if player.tp == 3000 then
equip(sets.precast.MaxTP)
end
end
end
function job_aftercast(spell, action, spellMap, eventArgs)
if spell.type == 'WeaponSkill' and not spell.interrupted and state.FootworkWS and state.Buff.Footwork then
send_command('cancel Footwork')
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
-- Set Footwork as combat form any time it's active and Hundred Fists is not.
if buff == 'Footwork' and gain and not buffactive['hundred fists'] then
state.CombatForm:set('Footwork')
elseif buff == "Hundred Fists" and not gain and buffactive.footwork then
state.CombatForm:set('Footwork')
else
state.CombatForm:reset()
end
-- Hundred Fists and Impetus modify the custom melee groups
if buff == "Hundred Fists" or buff == "Impetus" then
classes.CustomMeleeGroups:clear()
if (buff == "Hundred Fists" and gain) or buffactive['hundred fists'] then
classes.CustomMeleeGroups:append('HF')
end
if (buff == "Impetus" and gain) or buffactive.impetus then
classes.CustomMeleeGroups:append('Impetus')
end
end
-- Update gear if any of the above changed
if buff == "Hundred Fists" or buff == "Impetus" or buff == "Footwork" then
handle_equipping_gear(player.status)
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
function customize_idle_set(idleSet)
if player.hpp < 75 then
idleSet = set_combine(idleSet, sets.ExtraRegen)
end
return idleSet
end
-- Called by the 'update' self-command.
function job_update(cmdParams, eventArgs)
update_combat_form()
update_melee_groups()
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function update_combat_form()
if buffactive.footwork and not buffactive['hundred fists'] then
state.CombatForm:set('Footwork')
else
state.CombatForm:reset()
end
end
function update_melee_groups()
classes.CustomMeleeGroups:clear()
if buffactive['hundred fists'] then
classes.CustomMeleeGroups:append('HF')
end
if buffactive.impetus then
classes.CustomMeleeGroups:append('Impetus')
end
end
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'DNC' then
set_macro_page(2, 5)
elseif player.sub_job == 'NIN' then
set_macro_page(1, 5)
elseif player.sub_job == 'THF' then
set_macro_page(1, 5)
elseif player.sub_job == 'RUN' then
set_macro_page(1, 5)
else
set_macro_page(1, 5)
end
end
-------------------------------------------------------------------------------------------------------------------
-- Custom event hooks.
-------------------------------------------------------------------------------------------------------------------
-- Keep track of the current hit count while Impetus is up.
function on_action_for_impetus(action)
if state.Buff.Impetus then
-- count melee hits by player
if action.actor_id == player.id then
if action.category == 1 then
for _,target in pairs(action.targets) do
for _,action in pairs(target.actions) do
-- Reactions (bitset):
-- 1 = evade
-- 2 = parry
-- 4 = block/guard
-- 8 = hit
-- 16 = JA/weaponskill?
-- If action.reaction has bits 1 or 2 set, it missed or was parried. Reset count.
if (action.reaction % 4) > 0 then
info.impetus_hit_count = 0
else
info.impetus_hit_count = info.impetus_hit_count + 1
end
end
end
elseif action.category == 3 then
-- Missed weaponskill hits will reset the counter. Can we tell?
-- Reaction always seems to be 24 (what does this value mean? 8=hit, 16=?)
-- Can't tell if any hits were missed, so have to assume all hit.
-- Increment by the minimum number of weaponskill hits: 2.
for _,target in pairs(action.targets) do
for _,action in pairs(target.actions) do
-- This will only be if the entire weaponskill missed or was parried.
if (action.reaction % 4) > 0 then
info.impetus_hit_count = 0
else
info.impetus_hit_count = info.impetus_hit_count + 2
end
end
end
end
elseif action.actor_id ~= player.id and action.category == 1 then
-- If mob hits the player, check for counters.
for _,target in pairs(action.targets) do
if target.id == player.id then
for _,action in pairs(target.actions) do
-- Spike effect animation:
-- 63 = counter
-- ?? = missed counter
if action.has_spike_effect then
-- spike_effect_message of 592 == missed counter
if action.spike_effect_message == 592 then
info.impetus_hit_count = 0
elseif action.spike_effect_animation == 63 then
info.impetus_hit_count = info.impetus_hit_count + 1
end
end
end
end
end
end
--add_to_chat(123,'Current Impetus hit count = ' .. tostring(info.impetus_hit_count))
else
info.impetus_hit_count = 0
end
end Code -- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Precast sets to enhance JAs on use
sets.precast.JA['Hundred Fists'] = {legs="Hesychast's Hose +1"}
sets.precast.JA['Boost'] = {hands="Anchorite's Gloves +1"}
sets.precast.JA['Dodge'] = {feet="Anchorite's Gaiters +1"}
sets.precast.JA['Focus'] = {head="Anchorite's Crown"}
sets.precast.JA['Counterstance'] = {feet="Melee Gaiters +2"}
sets.precast.JA['Footwork'] = {}
sets.precast.JA['Formless Strikes'] = {body="Hesychast's Cyclas"}
sets.precast.JA['Mantra'] = {feet="Mel. Gaiters +2"}
organizer_items = {
Tinhaspa="Tinhaspa",
Ohrmazd="Ohrmazd"}
sets.precast.JA['Chi Blast'] = {
head="Uk'uxkaj Cap",body="Anchorite's Cyclas +1",hands="Hesychast's Gloves +1",
back="Tuilha Cape",legs="Bhikku Hose +1",feet="Anchorite's Gaiters +1"}
sets.precast.JA['Chakra'] = {ammo="Iron Gobbet",
head="Ejekamal Mask",ear1="Soil Pearl",ear2="Soil Pearl",
body="Anchorite's Cyclas +1",hands="Hesychast's Gloves +1",ring1="Terrasoul Ring",ring2="Terrasoul Ring",
back="Iximulew Cape",waist="Caudata Belt",legs="Kaabnax Trousers",feet="Sokushitsu Sune-Ate"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {ammo="Iron Gobbet",
head="Uk'uxkaj Cap",
body="Anchorite's Cyclas +1",hands="Anchorite's Gloves +1",ring1="Terrasoul Ring",ring2="Asklepian Ring",
back="Iximulew Cape",waist="Caudata Belt",legs="Nahtirah Trousers",feet="Daihanshi Habaki"}
-- Don't need any special gear for Healing Waltz.
sets.precast.Waltz['Healing Waltz'] = {}
sets.precast.Step = {}
sets.precast.Flourish1 = {}
-- Fast cast sets for spells
sets.precast.FC = {ammo="Impatiens",body="Dread Jupon",ear2="Loquacious Earring"}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {ammo="Thew Bomblet",
head="Uk'uxkaj Cap",neck=gear.ElementalGorget,ear1="Moonshade Earring",ear2="Brutal Earring",
body="Bhikku Cyclas +1",hands="Anchorite's Gloves +1",ring1="Pyrosoul Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Windbuffet Belt +1",legs="Quiahuiz Trousers",
feet=gear.ws_feet}
sets.precast.WSSomeAcc = {ammo="Honed Tathlum",head="Whirlpool Mask"}
sets.precast.WSFullAcc = set_combine(sets.precast.WSSomeAcc, {body="Taeon Tabard",hands="Hesychast's Gloves +1",
back="Letalis Mantle",waist="Caudata Belt",legs="Bhikku Hose +1"})
sets.precast.MaxTP = {ear1="Trux Earring",ear2="Brutal Earring"}
sets.precast.WS.Acc = set_combine(sets.precast.WS, sets.precast.WSAcc)
sets.precast.WS.Mod = set_combine(sets.precast.WS, sets.precast.WSMod)
-- Specific weaponskill sets.
sets.precast.WS['Raging Fists'] = set_combine(sets.precast.WS, {
ammo="Potestas Bomblet",neck="Justiciar's Torque",body="Taeon Tabard",hands="Taeon Gloves",
ring1="Rajas Ring",back="Buquwik Cape",waist="Prosilio Belt +1"})
sets.precast.WS["Victory Smite"] = set_combine(sets.precast.WS, {neck="Rancor Collar",body="Taeon Tabard",hands="Taeon Gloves",
back="Buquwik Cape",waist="Prosilio Belt +1",legs="Bhikku Hose +1"})
sets.precast.WS['Shijin Spiral'] = set_combine(sets.precast.WS, {
ear2="Trux Earring",ring1="Rajas Ring",legs="Manibozho Brais",feet="Daihanshi Habaki"})
sets.precast.WS["Raging Fists"].SomeAcc = set_combine(sets.precast.WS["Raging Fists"], {
ammo="Honed Tathlum",hands="Hes. Gloves +1"})
sets.precast.WS["Victory Smite"].SomeAcc = set_combine(sets.precast.WS["Victory Smite"], {ammo="Honed Tathlum"})
sets.precast.WS["Shijin Spiral"].SomeAcc = set_combine(sets.precast.WS["Shijin Spiral"], {ammo="Honed Tathlum",hands="Hesychast's Gloves +1"})
sets.precast.WS["Raging Fists"].FullAcc = set_combine(sets.precast.WS["Victory Smite"].SomeAcc, {
body="Taeon Tabard",waist="Thunder Belt",legs="Manibozho Brais"})
sets.precast.WS["Victory Smite"].FullAcc = set_combine(sets.precast.WS["Victory Smite"].SomeAcc, {
head="Whirlpool Mask",neck="Light Gorget",body="Taeon Tabard",hands="Hes. Gloves +1",back="Letalis Mantle",legs="Bhikku Hose +1"})
sets.precast.WS["Shijin Spiral"].FullAcc = set_combine(sets.precast.WS["Victory Smite"].SomeAcc, {
head="Whirlpool Mask",neck="Light Gorget",body="Taeon Tabard",ring2="Mars's Ring",waist="Anguinus Belt"})
sets.precast.WS['Cataclysm'] = {
head="Uk'uxkaj Cap",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Novio Earring",
body="Anchorite's Cyclas +1",hands="Anchorite's Gloves +1",ring1="Acumen Ring",ring2="Rajas Ring",
back="Toro Cape",waist="Thunder Belt",legs="Nahtirah Trousers",feet=gear.ws_feet}
-- Midcast Sets
sets.midcast.FastRecast = {
head="Ejekamal Mask",hands="Anchorite's Gloves +1",
waist="Black Belt",legs="Quiahuiz Trousers",feet="Otronif Boots +1"}
-- Specific spells
sets.midcast.Utsusemi = {
head="Ejekamal Mask",ear2="Loquacious Earring",
body="Anchorite's Cyclas +1",hands="Anchorite's Gloves +1",
waist="Black Belt",legs="Quiahuiz Trousers",feet="Otronif Boots +1"}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {head="Ocelomeh Headpiece +1",neck="Wiglen Gorget",
body="Hesychast's Cyclas",ring1="Sheltered Ring",ring2="Paguroidea Ring"}
-- Idle sets
sets.idle = {ammo="Iron Gobbet",
head="Felistris Mask",neck="Wiglen Gorget",ear1="Moonshade Earring",ear2="Brutal Earring",
body="Hesychast's Cyclas",hands="Otronif Gloves +1",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Repulse Mantle",waist="Black Belt",legs="Otronif Brais +1",feet="Herald's Gaiters"}
sets.idle.Town = {ammo="Potestas Bomblet",
head="Felistris Mask",neck="Asperity Necklace",ear1="Trux Earring",ear2="Brutal Earring",
body="Bhikku Cyclas +1",hands="Anchorite's Gloves +1",ring1="Rajas Ring",ring2="Epona's Ring",
back="Letalis Mantle",waist="Windbuffet Belt +1",legs="Bhikku Hose +1",feet="Herald's Gaiters"}
sets.idle.Weak = set_combine(sets.idle,{})
-- Defense sets
sets.defense.PDT = {ammo="Iron Gobbet",
head="Otronif Mask",neck="Wiglen Gorget",
body="Otronif Harness +1",hands="Otronif Gloves +1",ring1="Patricius Ring",ring2=gear.DarkRing.physical,
back="Shadow Mantle",waist="Black Belt",legs="Otronif Brais +1",feet=gear.acc_feet}
sets.defense.HP = {}
sets.defense.MDT = {ammo="Demonry Stone",
head="Felistris Mask",neck="Twilight Torque",ear1="Mujin Stud",ear2="Sanare Earring",
body="Anchorite's Cyclas +1",hands="Otronif Gloves +1",ring1="Shadow Ring",ring2=gear.DarkRing.magical,
back="Engulfer Cape +1",waist="Black Belt",legs="Nahtirah Trousers",feet="Daihanshi Habaki"}
sets.Kiting = {feet="Herald's Gaiters"}
sets.ExtraRegen = {head="Ocelomeh Headpiece +1"}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Normal melee sets
sets.engaged = {ammo="Potestas Bomblet",
head="Felistris Mask",neck="Asperity Necklace",ear1="Trux Earring",ear2="Brutal Earring",
body="Bhikku Cyclas +1",hands="Taeon Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Windbuffet Belt +1",legs="Bhikku Hose +1",feet="Sokushitsu Sune-Ate"}
sets.engaged.SomeAcc = set_combine(sets.engaged, {ammo="Honed Tathlum",
ear1="Bladeborn Earring",ear2="Steelflash Earring",back="Letalis Mantle"})
sets.engaged.FullAcc = set_combine(sets.engaged.SomeAcc, {
head="Whirlpool Mask",neck="Iqabi Necklace",body="Bhikku Cyclas +1",back="Anchoret's Mantle",ring1="Patricius Ring",
waist="Anguinus Belt",feet=gear.acc_feet})
-- Mod set for trivial mobs (Thaumas Coat)
sets.engaged.Fodder = set_combine(sets.engaged, {body="Thaumas Coat"})
-- Defensive melee hybrid sets
sets.engaged.PDT = {ammo="Potestas Bomblet",
head="Felistris Mask",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Otronif Harness +1",hands="Otronif Gloves +1",ring1="Patricius Ring",ring2="Epona's Ring",
back="Shadow Mantle",waist="Black Belt",legs="Otronif Brais +1",feet="Otronif Boots +1"}
sets.engaged.SomeAcc.PDT = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Qaaxo Harness",hands="Hesychast's Gloves +1",ring1="Patricius Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Anguinus Belt",legs="Otronif Brais +1",feet="Otronif Boots +1"}
sets.engaged.FullAcc.PDT = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Twilight Torque",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Otronif Harness +1",hands="Otronif Gloves +1",ring1="Patricius Ring",ring2="Epona's Ring",
back="Anchoret's Mantle",waist="Anguinus Belt",legs="Otronif Brais +1",feet=gear.acc_feet}
-- Hundred Fists/Impetus melee set mods
sets.engaged.HF = set_combine(sets.engaged)
sets.engaged.SomeAcc.HF = set_combine(sets.engaged.SomeAcc)
sets.engaged.FullAcc.HF = set_combine(sets.engaged.FullAcc)
-- Footwork combat form
--[[sets.engaged.Footwork = {ammo="Thew Bomblet",
head="Felistris Mask",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Qaaxo Harness",hands="Hesychast's Gloves +1",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Windbuffet Belt +1",legs="Hesychast's Hose +1",feet="Anchorite's Gaiters +1"}
sets.engaged.Footwork.Acc = {ammo="Honed Tathlum",
head="Whirlpool Mask",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Otronif Harness +1",hands="Hesychast's Gloves +1",ring1="Rajas Ring",ring2="Epona's Ring",
back="Letalis Mantle",waist="Anguinus Belt",legs="Hesychast's Hose +1",feet="Anchorite's Gaiters +1"}]]--
-- Quick sets for post-precast adjustments, listed here so that the gear can be Validated.
sets.impetus_body = {body="Bhikku Cyclas +1"}
sets.footwork_kick_feet = {feet="Anchorite's Gaiters +1"}
end Still haven't resolved my issue. Can anybody assist me?
サーバ: Bismarck
Game: FFXI
Posts: 206
By Bismarck.Diablosword 2015-06-27 22:18:05
Getting a "CRITICAL ERROR: FAILED TO LOAD TargetArray" when I start up the game. This seems to break blinkmenot, as I keep blinking when I switch gear while fighting.
Any ideas what is going on
サーバ: Asura
Game: FFXI
Posts: 363
By Asura.Vafruvant 2015-06-27 22:39:41
Bismarck.Speedyjim said: »if (buff == "Impetus" and gain) or buffactive.impetus then
classes.CustomMeleeGroups:append('Impetus')
end I could be mistaken, since I've never used this style function in my luas, but to my understanding, this requires a sets.engaged.Impetus, which your sidecar does not have.
サーバ: Asura
Game: FFXI
Posts: 363
By Asura.Vafruvant 2015-06-27 22:41:25
Bismarck.Diablosword said: »Getting a "CRITICAL ERROR: FAILED TO LOAD TargetArray" when I start up the game. This seems to break blinkmenot, as I keep blinking when I switch gear while fighting.
Any ideas what is going on To my knowledge, this was resolved early this morning, around 8am EST. If you completely shut down Windower and restart, you should get the updated files and be good to go.
Bismarck.Speedyjim
サーバ: Bismarck
Game: FFXI
Posts: 516
By Bismarck.Speedyjim 2015-06-28 00:07:24
Bismarck.Speedyjim said: »if (buff == "Impetus" and gain) or buffactive.impetus then
classes.CustomMeleeGroups:append('Impetus')
end I could be mistaken, since I've never used this style function in my luas, but to my understanding, this requires a sets.engaged.Impetus, which your sidecar does not have. Thanks for your suggestion! Sadly, I tried this and it didn't work. The lua does have a sets.impetus_body on line 196 though.
Any other thoughts?
サーバ: Asura
Game: FFXI
Posts: 363
By Asura.Vafruvant 2015-06-28 00:26:18
Bismarck.Speedyjim said: »Bismarck.Speedyjim said: »if (buff == "Impetus" and gain) or buffactive.impetus then
classes.CustomMeleeGroups:append('Impetus')
end I could be mistaken, since I've never used this style function in my luas, but to my understanding, this requires a sets.engaged.Impetus, which your sidecar does not have. Thanks for your suggestion! Sadly, I tried this and it didn't work. The lua does have a sets.impetus_body on line 196 though.
Any other thoughts? Your sets.impetus_body is just for WSs while Impetus is up depending on the number of consecutive strikes. Quote: if (buff == "Impetus" and gain) or buffactive.impetus then
classes.CustomMeleeGroups:append('Impetus')
end In addition to my previous suggestion, capitalize the i in buffactive.Impetus
If neither of these work, you can add this in after the function customize_idle_set(idleSet): Code function customize_melee_set(meleeSet)
if buffactive.Impetus then
meleeSet = set_combine(meleeSet, {body="Bhikku Cyclas +1"})
end
return meleeSet
end Edit: fixed a coding error in my spoiler.
サーバ: Asura
Game: FFXI
Posts: 46
By Asura.Xavierreivax 2015-06-28 00:40:31
Did something change after this last update with the way augments go into lua? This was working last week but now is not. /cry
{head="Acro Helm", augments={'Pet: "Mag.Atk.Bns."+9'},
legs="Acro Breeches", augments={'Pet: "Mag.Atk.Bns."+19'},
neck="Ferine Necklace",
feet="Acro Leggings", augments={'Pet: "Mag.Atk.Bns."+21'},
hands="Acro Gauntlets", augments={'Pet: Mag. Acc.+24'},
body="Acro Surcoat", augments={'Pet: "Mag.Atk.Bns."+25'},
back="Argocham. Mantle"}
サーバ: Shiva
Game: FFXI
Posts: 518
By Shiva.Malthar 2015-06-28 01:13:19
It should look like this:
Code ammo="Ginsen",
head={ name="Taeon Chapeau", augments={'Pet: Accuracy+7 Pet: Rng. Acc.+7','Pet: "Dbl. Atk."+4','Pet: Haste+3',}},
body={ name="Taeon Tabard", augments={'Pet: Accuracy+24 Pet: Rng. Acc.+24','Pet: "Dbl. Atk."+5','Pet: Haste+3',}},
hands={ name="Taeon Gloves", augments={'Pet: "Dbl. Atk."+5','Pet: Haste+3',}},
legs={ name="Taeon Tights", augments={'Pet: Accuracy+24 Pet: Rng. Acc.+24','Pet: "Dbl. Atk."+4','Pet: Haste+4',}},
feet={ name="Taeon Boots", augments={'Pet: Attack+24 Pet: Rng.Atk.+24','Pet: "Dbl. Atk."+4','Pet: Haste+5',}},
neck="Ferine Necklace",
waist="Hurch'lan Sash",
left_ear="Sabong Earring",
right_ear="Domesticator's Earring",
left_ring="Thurandaut ring",
right_ring="Epona's Ring",
back="Pastoralist's Mantle",
サーバ: Asura
Game: FFXI
Posts: 46
By Asura.Xavierreivax 2015-06-28 01:41:25
Ahh it seems I forgot the name in there. I will try this out, thankyou.
サーバ: Asura
Game: FFXI
Posts: 46
By Asura.Xavierreivax 2015-06-28 03:30:00
Thankyou Malthar this worked perfectly. Last question for the night I promise.... Trying to get my desultor tassets to have a use in precast however I can not figure out where to put a pet precast set. I tried in the player one but then it goes precast>aftercast>pet_midcast>pet_aftercast which is not working as I would like it to. I am far from a gearswap expert so anyone who can direct me in the right direction would be greatly appreciated.
Bismarck.Speedyjim
サーバ: Bismarck
Game: FFXI
Posts: 516
By Bismarck.Speedyjim 2015-06-28 03:36:59
Bismarck.Speedyjim said: »Bismarck.Speedyjim said: »if (buff == "Impetus" and gain) or buffactive.impetus then
classes.CustomMeleeGroups:append('Impetus')
end I could be mistaken, since I've never used this style function in my luas, but to my understanding, this requires a sets.engaged.Impetus, which your sidecar does not have. Thanks for your suggestion! Sadly, I tried this and it didn't work. The lua does have a sets.impetus_body on line 196 though.
Any other thoughts? Your sets.impetus_body is just for WSs while Impetus is up depending on the number of consecutive strikes. Quote: if (buff == "Impetus" and gain) or buffactive.impetus then
classes.CustomMeleeGroups:append('Impetus')
end In addition to my previous suggestion, capitalize the i in buffactive.Impetus
If neither of these work, you can add this in after the function customize_idle_set(idleSet):Code function customize_melee_set(meleeSet)
if buffactive.Impetus then
meleeSet = set_combine(meleeSet, {body="Bhikku Cyclas +1"})
end
return meleeSet
end Edit: fixed a coding error in my spoiler. The latter code worked perf, thank you Vafruvant!
By Kelcie 2015-06-28 13:32:55
I've noticed that my Ready pre-casts (Desultor Tassets and Charmer's Merlin) don't seem to activate with the new /bstpet commands. It's strange because my mid-cast set equips, but I'm completely skipping over my recast reducers. Of note is that if I use the old macro sets i.e. "/pet "WS" <me>" the pre-casts and mid-casts all work as intended.
What can I do to fix this so I can utilize the new macros instead?
サーバ: Asura
Game: FFXI
Posts: 363
By Asura.Vafruvant 2015-06-28 15:54:37
I've noticed that my Ready pre-casts (Desultor Tassets and Charmer's Merlin) don't seem to activate with the new /bstpet commands. It's strange because my mid-cast set equips, but I'm completely skipping over my recast reducers. Of note is that if I use the old macro sets i.e. "/pet "WS" <me>" the pre-casts and mid-casts all work as intended.
What can I do to fix this so I can utilize the new macros instead? It probably has something to do with how GearSwap recognizes precast commands. My guess is that it hasn't been updated to recognize that command the same way as Ready normally would. I'm at work so I can't check it right now, but if no one else replies, I'll check it out when I get home.
Lakshmi.Byrth
VIP
サーバ: Lakshmi
Game: FFXI
Posts: 6184
By Lakshmi.Byrth 2015-06-28 16:15:18
There has never been a precast for Ready, because Ready isn't actually a JA that you use. Sic is, but Ready isn't.
You send a command to use a specific skill, so you're actually always sending that skill (/pet "Skill name" <t>). If you want to macro things in for Ready skills, you have to treat them like BPs or something.
サーバ: Asura
Game: FFXI
Posts: 363
By Asura.Vafruvant 2015-06-28 18:16:24
There has never been a precast for Ready, because Ready isn't actually a JA that you use. Sic is, but Ready isn't.
You send a command to use a specific skill, so you're actually always sending that skill (/pet "Skill name" <t>). If you want to macro things in for Ready skills, you have to treat them like BPs or something. Basically what I meant, hindered by small break windows and phone typing to use correct terminology. What I meant was that it must be something with where the new /bstpet commands fall in the /res/ files. Since it triggers differently than issuing a specific pet WS, I imagine it will be more challenging to associate it properly, if that makes sense.
Cerberus.Tidis
サーバ: Cerberus
Game: FFXI
Posts: 3927
By Cerberus.Tidis 2015-06-30 17:40:42
I wonder if there's something wrong with my sets.engaged.defence set, it won't equip in vagary, haven't seen it fail to equip in other areas.
Code -------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
include('organizer-lib')
sets.weapons = {}
sets.weapons[1] = {main="Burtgang"}
sets.weapons[2] = {main="Xiutleato"}
sets.weapons[3] = {main="Buramenk'ah"}
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
state.Buff.Sentinel = buffactive.sentinel or false
state.Buff.Cover = buffactive.cover or false
state.Buff.Doom = buffactive.Doom or false
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('Normal', 'Acc', 'Defence')
state.HybridMode:options('Normal', 'PDT', 'Reraise')
state.WeaponskillMode:options('Normal', 'Acc')
state.CastingMode:options('Normal', 'Resistant')
state.PhysicalDefenseMode:options('PDT', 'HP', 'Reraise', 'Charm')
state.MagicalDefenseMode:options('MDT', 'HP', 'Reraise', 'Charm')
state.ExtraDefenseMode = M{['description']='Extra Defense Mode', 'None', 'MP', 'Knockback', 'MP_Knockback'}
state.EquipShield = M(false, 'Equip Shield w/Defense')
update_defense_mode()
send_command('bind ^f11 gs c cycle MagicalDefenseMode')
send_command('bind !f11 gs c cycle ExtraDefenseMode')
send_command('bind @f10 gs c toggle EquipShield')
send_command('bind @f11 gs c toggle EquipShield')
select_default_macro_book()
end
function user_unload()
send_command('unbind ^f11')
send_command('unbind !f11')
send_command('unbind @f10')
send_command('unbind @f11')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Precast sets
--------------------------------------
-- Precast sets to enhance JAs
sets.precast.JA['Invincible'] = {legs="Caballarius Breeches +1"}
sets.precast.JA['Holy Circle'] = {feet="Reverence Leggings +1"}
sets.precast.JA['Shield Bash'] = {hands="Caballarius Gauntlets +1"}
sets.precast.JA['Sentinel'] = {feet="Caballarius Leggings +1"}
sets.precast.JA['Rampart'] = {head="Caballarius Coronet +1"}
sets.precast.JA['Fealty'] = {body="Caballarius Surcoat +1"}
sets.precast.JA['Divine Emblem'] = {feet="chevalier's sabatons"}
sets.precast.JA['Cover'] = {head="Reverence Coronet +1"}
-- add mnd for Chivalry
sets.precast.JA['Chivalry'] = {
head="Reverence Coronet +1",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Aquasoul Ring",ring2="Aquasoul Ring",
back="Weard Mantle",legs="Reverence Breeches +1",feet="Whirlpool Greaves"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {
head="Reverence Coronet +1",
hands="Reverence Gauntlets +1",
legs="Reverence Breeches +1",feet="Whirlpool Greaves"}
-- Don't need any special gear for Healing Waltz.
sets.precast.Waltz['Healing Waltz'] = {}
sets.precast.Step = {waist="Chaac Belt"}
sets.precast.Flourish1 = {waist="Chaac Belt"}
-- Fast cast sets for spells
sets.precast.FC = {ammo="Incantor Stone",
head="Chevalier's Armet",ear2="Loquacious Earring",legs="Enif Cosciales"}
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {ammo="Ginsen",
head="Otomi Helm",neck=gear.ElementalGorget,ear1="Brutal Earring",ear2="Moonshade Earring",
body="Xaddi Mail",hands="Cizin Mufflers +1",ring1="Rajas Ring",ring2="Karieyh Ring",
back="Bleating Mantle",waist=gear.ElementalBelt,legs="Cizin Breeches +1",feet="Whirlpool Greaves"}
sets.precast.WS.Acc = {ammo="Ginsen",
head="Yaoyotl Helm",neck=gear.ElementalGorget,ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Xaddi Mail",hands="Buremte Gloves",ring1="Rajas Ring",ring2="Patricius Ring",
back="Bleating Mantle",waist=gear.ElementalBelt,legs="Cizin Breeches +1",feet="Whirlpool Greaves"}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {ring1="Aquasoul Ring",ring2="Aquasoul Ring"})
sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS.Acc, {ring1="Aquasoul Ring"})
sets.precast.WS['Savage Blade'] = {ammo="Cheruski Needle",
head="Otomi Helm",neck="Breeze Gorget",ear1="Moonshade Earring",ear2="Brutal Earring",
body="Phorcys Korazin",hands="Cab. Gauntlets +1",ring1="Ifrit Ring",ring2="Ifrit Ring",
back="Bleating Mantle",waist="Windbuffet Belt +1",legs="Cab. Breeches +1",feet="Whirlpool Greaves"}
sets.precast.WS['Savage Blade'] = {ammo="Cheruski Needle",
head="Otomi Helm",neck="Breeze Gorget",ear1="Moonshade Earring",ear2="Brutal Earring",
body="Phorcys Korazin",hands="Cab. Gauntlets +1",ring1="Ifrit Ring",ring2="Ifrit Ring",
back="Bleating Mantle",waist="Windbuffet Belt +1",legs="Cab. Breeches +1",feet="Whirlpool Greaves"}
sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'], {head="Yaoyotl Helm",body="Xaddi Mail",hands="Buremte Gloves"})
sets.precast.WS['Chant du Cygne'] = set_combine(sets.precast.WS, {ammo="Jukikuk Feather",
neck="Breeze Gorget",legs="Mikinaak Cuisses",ring1="Ramuh Ring",ring2="Ramuh Ring",waist="Chiner's Belt +1"})
sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS['Chant du Cygne'], {head="Yaoyotl Helm",neck="Iqabi Necklace",body="Xaddi Mail",hand="Buremte Gloves",waist="Breeze Belt"})
sets.precast.WS['Sanguine Blade'] = {ammo="Ginsen",
head="Reverence Coronet +1",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Karieyh Ring",ring2="K'ayres Ring",
legs="Reverence Breeches +1",feet="Reverence Leggings +1"}
sets.precast.WS['Atonement'] = {
head="Reverence Coronet +1",neck=gear.ElementalGorget,ear1="Creed Earring",ear2="Steelflash Earring",
body="Phorcys Korazin",hands="Reverence Gauntlets +1",ring1="Karieyh Ring",
waist=gear.ElementalBelt,legs="Ogier's Breeches",feet="Caballarius Leggings +1"}
--------------------------------------
-- Midcast sets
--------------------------------------
sets.midcast.FastRecast = {ammo="Incantor Stone",
head="Chevalier's Armet",
body="Nuevo Coselete",hands="Reverence Gauntlets +1",
waist="Zoran's Belt",legs="Enif Cosciales",feet="Reverence Leggings +1"}
sets.midcast.Enmity = {
head="Reverence Coronet +1",neck="Invidia Torque",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Odium Ring",ring2="Hercules' Ring",
waist="Goading Belt",legs="Reverence Breeches +1",feet="Caballarius Leggings +1"}
sets.midcast.Flash = set_combine(sets.midcast.Enmity, {ammo="Incantor Stone",head="Chevalier's Armet",body="Nuevo Coselete",legs="Enif Cosciales"})
sets.midcast.Stun = sets.midcast.Flash
sets.midcast.Cure = {
head="Adaman Barbuta",neck="Invidia Torque",ear1="Hospitaler Earring",ear2="Bloodgem Earring",
body="Reverence Surcoat +1",hands="Buremte Gloves",
legs="Reverence Breeches +1",feet="Caballarius Leggings +1"}
sets.midcast['Enhancing Magic'] = {legs="Reverence Breeches +1"}
sets.midcast['Divine Magic'] = {body="Reverence Surcoat +1",ear2="Beatific Earring"}
sets.midcast.Phalanx = {legs="Reverence Breeches +1",back="Weard Mantle"}
sets.midcast.Protect = {ring1="Sheltered Ring"}
sets.midcast.Shell = {ring1="Sheltered Ring"}
--------------------------------------
-- Idle/resting/defense/etc sets
--------------------------------------
sets.Reraise = {head="Twilight Helm", body="Twilight Mail"}
sets.resting = {head="Twilight Helm",neck="Creed Collar",
body="Ares' Cuirass +1"}
-- Idle sets
sets.idle = {ammo="Angha Gem",
head="Twilight Helm",neck="Creed Collar",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Ares' Cuirass +1",hands="Reverence Gauntlets +1",ring1="K'ayres Ring",ring2="Meridian Ring",
back="Weard Mantle",waist="Flume Belt",legs="Crimson Cuisses",feet="Reverence Leggings +1"}
sets.idle.Town = {ammo="Angha Gem",
main="Burtgang",sub="Ochain",ammo="Incantor Stone",
head="Twilight Helm",neck="Creed Collar",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Ares' Cuirass +1",hands="Reverence Gauntlets +1",ring1="K'ayres Ring",ring2="Meridian Ring",
back="Weard Mantle",waist="Flume Belt",legs="Crimson Cuisses",feet="Reverence Leggings +1"}
sets.idle.Weak = {ammo="Angha Gem",
head="Reverence Coronet +1",neck="Creed Collar",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="K'ayres Ring",ring2="Meridian Ring",
back="Weard Mantle",waist="Flume Belt",legs="Crimson Cuisses",feet="Reverence Leggings +1"}
sets.idle.Weak.Reraise = set_combine(sets.idle.Weak, sets.Reraise)
sets.Kiting = {legs="Crimson Cuisses"}
sets.latent_refresh = {waist="Fucho-no-obi"}
--------------------------------------
-- Defense sets
--------------------------------------
-- Extra defense sets. Apply these on top of melee or defense sets.
sets.Knockback = {back="Repulse Mantle"}
sets.MP = {neck="Creed Collar",waist="Flume Belt"}
sets.MP_Knockback = {neck="Creed Collar",waist="Flume Belt",back="Repulse Mantle"}
-- If EquipShield toggle is on (Win+F10 or Win+F11), equip the weapon/shield combos here
-- when activating or changing defense mode:
sets.PhysicalShield = {main="Burtgang",sub="Ochain"} -- Ochain
sets.MagicalShield = {main="Burtgang",sub="Aegis"} -- Aegis
-- Basic defense sets.
sets.defense.PDT = {ammo="Angha Gem",
head="Reverence Coronet +1",neck="Twilight Torque",ear1="Creed Earring",ear2="Ethereal Earring",
body="Reverence Surcoat +1",hands="Cizin Mufflers +1",ring1="Patricius Ring",ring2="Gelatinous Ring +1",
back="Repulse Mantle",waist="Flume Belt",legs="Reverence Breeches +1",feet="Cizin Greaves +1"}
sets.defense.HP = {ammo="Brigantia Pebble",
head="Reverence Coronet +1",neck="Twilight Torque",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Reverence Surcoat +1",hands="Caballarius Gauntlets +1",ring1="Patricius Ring",ring2="Meridian Ring",
back="Weard Mantle",waist="Creed Baudrier",legs="Reverence Breeches +1",feet="Reverence Leggings +1"}
sets.defense.Reraise = {ammo="Brigantia Pebble",
head="Twilight Helm",neck="Twilight Torque",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Twilight Mail",hands="Cizin Mufflers +1",ring1="Patricius Ring",ring2="Gelatinous Ring +1",
back="Repulse Mantle",waist="Flume Belt",legs="Reverence Breeches +1",feet="Cizin Greaves +1"}
sets.defense.Charm = {ammo="Brigantia Pebble",
head="Reverence Coronet +1",neck="Twilight Torque",ear1="Creed Earring",ear2="Ethereal Earring",
body="Reverence Surcoat +1",hands="Cizin Mufflers +1",ring1="Patricius Ring",ring2="Gelatinous Ring +1",
back="Repulse Mantle",waist="Flume Belt",legs="Reverence Breeches +1",feet="Cizin Greaves +1"}
-- To cap MDT with Shell IV (52/256), need 76/256 in gear.
-- Shellra V can provide 75/256, which would need another 53/256 in gear.
sets.defense.MDT = {ammo="Demonry Stone",
head="Reverence Coronet +1",neck="Twilight Torque",ear1="Creed Earring",ear2="Bloodgem Earring",
body="Reverence Surcoat +1",hands="Reverence Gauntlets +1",ring1="Patricius Ring",ring2="Shadow Ring",
back="Weard Mantle",waist="Creed Baudrier",legs="Caballarius Breeches +1",feet="Caballarius Leggings +1"}
--------------------------------------
-- Engaged sets
--------------------------------------
sets.engaged = {ammo="Ginsen",
head="Otomi Helm",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Xaddi Mail",hands="Cizin Mufflers +1",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Bleating Mantle",waist="Windbuffet Belt +1",legs="Cizin Breeches +1",feet="Whirlpool Greaves"}
sets.engaged.Acc = {ammo="Ginsen",
head="Yaoyotl Helm",neck="Iqabi Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Xaddi Mail",hands="Buremte Gloves",ring1="Rajas Ring",ring2="Patricius Ring",
back="Weard Mantle",waist="Anguinus Belt",legs="Acro Breeches",feet="Whirlpool Greaves"}
sets.engaged.Defence = {ammo="Angha Gem",
head="Ighwa Cap",neck="Agitator's Collar",ear1="Steelflash Earring",ear2="Bladeborn Earring",
body="Emet Harness +1",hands="Umuthi Gloves",ring1="Patricius Ring",ring2="Gelatinous Ring +1",
back="Weard Mantle",waist="Flume Belt",legs="Cizin Breeches +1",feet="Xaddi Boots"}
sets.engaged.DW = {ammo="Ginsen",
head="Otomi Helm",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Xaddi Mail",hands="Cizin Mufflers +1",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Bleating Mantle",waist="Windbuffet Belt +1",legs="Cizin Breeches +1",feet="Whirlpool Greaves"}
sets.engaged.DW.Acc = set_combine(sets.engaged.Acc, {ear1="Dudgeon Earring",ear2="Heartseeker Earring"})
sets.engaged.PDT = set_combine(sets.engaged, {body="Reverence Surcoat +1",neck="Twilight Torque",ring1="Patricius Ring"})
sets.engaged.Acc.PDT = set_combine(sets.engaged.Acc, {body="Reverence Surcoat +1",neck="Twilight Torque",ring1="Patricius Ring"})
sets.engaged.Reraise = set_combine(sets.engaged, sets.Reraise)
sets.engaged.Acc.Reraise = set_combine(sets.engaged.Acc, sets.Reraise)
sets.engaged.DW.PDT = set_combine(sets.engaged.DW, {body="Reverence Surcoat +1",neck="Twilight Torque",ring1="Patricius Ring"})
sets.engaged.DW.Acc.PDT = set_combine(sets.engaged.DW.Acc, {body="Reverence Surcoat +1",neck="Twilight Torque",ring1="Patricius Ring"})
sets.engaged.DW.Reraise = set_combine(sets.engaged.DW, sets.Reraise)
sets.engaged.DW.Acc.Reraise = set_combine(sets.engaged.DW.Acc, sets.Reraise)
--------------------------------------
-- Custom buff sets
--------------------------------------
sets.buff.Doom = {ring2="Ephedra Ring"}
sets.buff.Cover = {head="Reverence Coronet +1", body="Caballarius Surcoat +1"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
function job_midcast(spell, action, spellMap, eventArgs)
-- If DefenseMode is active, apply that gear over midcast
-- choices. Precast is allowed through for fast cast on
-- spells, but we want to return to def gear before there's
-- time for anything to hit us.
-- Exclude Job Abilities from this restriction, as we probably want
-- the enhanced effect of whatever item of gear applies to them,
-- and only one item should be swapped out.
if state.DefenseMode.value ~= 'None' and spell.type ~= 'JobAbility' then
handle_equipping_gear(player.status)
eventArgs.handled = true
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when the player's status changes.
function job_state_change(field, new_value, old_value)
classes.CustomDefenseGroups:clear()
classes.CustomDefenseGroups:append(state.ExtraDefenseMode.current)
if state.EquipShield.value == true then
classes.CustomDefenseGroups:append(state.DefenseMode.current .. 'Shield')
end
classes.CustomMeleeGroups:clear()
classes.CustomMeleeGroups:append(state.ExtraDefenseMode.current)
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- 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)
update_defense_mode()
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
if state.Buff.Doom then
idleSet = set_combine(idleSet, sets.buff.Doom)
end
return idleSet
end
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
if state.Buff.Doom then
meleeSet = set_combine(meleeSet, sets.buff.Doom)
end
return meleeSet
end
function customize_defense_set(defenseSet)
if state.ExtraDefenseMode.value ~= 'None' then
defenseSet = set_combine(defenseSet, sets[state.ExtraDefenseMode.value])
end
if state.EquipShield.value == true then
defenseSet = set_combine(defenseSet, sets[state.DefenseMode.current .. 'Shield'])
end
if state.Buff.Doom then
defenseSet = set_combine(defenseSet, sets.buff.Doom)
end
return defenseSet
end
function display_current_job_state(eventArgs)
local msg = 'Melee'
if state.CombatForm.has_value then
msg = msg .. ' (' .. state.CombatForm.value .. ')'
end
msg = msg .. ': '
msg = msg .. state.OffenseMode.value
if state.HybridMode.value ~= 'Normal' then
msg = msg .. '/' .. state.HybridMode.value
end
msg = msg .. ', WS: ' .. state.WeaponskillMode.value
if state.DefenseMode.value ~= 'None' then
msg = msg .. ', Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
end
if state.ExtraDefenseMode.value ~= 'None' then
msg = msg .. ', Extra: ' .. state.ExtraDefenseMode.value
end
if state.EquipShield.value == true then
msg = msg .. ', Force Equip Shield'
end
if state.Kiting.value == true then
msg = msg .. ', Kiting'
end
if state.PCTargetMode.value ~= 'default' then
msg = msg .. ', Target PC: '..state.PCTargetMode.value
end
if state.SelectNPCTargets.value == true then
msg = msg .. ', Target NPCs'
end
add_to_chat(122, msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function update_defense_mode()
if player.equipment.main == 'Kheshig Blade' and not classes.CustomDefenseGroups:contains('Kheshig Blade') then
classes.CustomDefenseGroups:append('Kheshig Blade')
end
if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
if player.equipment.sub and not player.equipment.sub:contains('Shield') and
player.equipment.sub ~= 'Aegis' and player.equipment.sub ~= 'Ochain' then
state.CombatForm:set('DW')
else
state.CombatForm:reset()
end
end
end
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'DNC' then
set_macro_page(1, 1)
elseif player.sub_job == 'NIN' then
set_macro_page(1, 1)
elseif player.sub_job == 'RDM' then
set_macro_page(1, 1)
else
set_macro_page(1, 1)
end
end
Asura.Zaffre
サーバ: Asura
Game: FFXI
Posts: 6
By Asura.Zaffre 2015-07-01 21:21:58
I haven't messed with gearswap in a while but for some reason when I was getting cap points tonight, my obi wasnt switching on thundersday spells. It worked on every day but thundersday.I can't seem to see any errors. Would you mind taking a look to see if I'm blind? Code -- *** Credit goes to Flippant for helping me with Gearswap *** --
-- ** I Use Motenten's Macro Book Function ** --
-- Last Updated: 05/05/14 12:00 AM *Fixed Magic Sets* --
include('organizer-lib')
function get_sets()
AccIndex = 1
AccArray = {"LowACC","MidACC","HighACC"} -- 3 Levels Of Accuracy Sets For Magic. Default ACC Set Is LowACC. Add More ACC Sets If Needed Then Create Your New ACC Below --
IdleIndex = 1
IdleArray = {"Movement","Refresh"} -- Default Idle Set Is Movement --
Armor = 'None'
StunIndex = 0
Obi = 'ON' -- Turn Default Obi ON or OFF Here --
target_distance = 5 -- Set Default Distance Here --
select_default_macro_book() -- Change Default Macro Book At The End --
Non_Obi_Spells = S{
'Burn','Choke','Drown','Frost','Rasp','Shock','Impact','Anemohelix','Cryohelix',
'Geohelix','Hydrohelix','Ionohelix','Luminohelix','Noctohelix','Pyrohelix'}
Cure_Spells = {"Cure","Cure II","Cure III","Cure IV"} -- Cure Degradation --
Curaga_Spells = {"Curaga","Curaga II"} -- Curaga Degradation --
sc_map = {SC1 = "Stun", SC2 = "ThunderV", SC3 = "BlizzardV"} -- 3 Additional Binds. Can Change Whatever JA/WS/Spells You Like Here. Remember Not To Use Spaces. --
-- Idle Sets --
sets.Idle = {}
sets.Idle.Refresh = {
main="bolelabunga",
sub="Genbu's Shield",
ammo="Vanir Battery",
head="none",
neck="Twilight torque",
ear1="ethereal Earring",
ear2="moonshade Earring",
body="respite cloak",
hands="Serpentes Cuffs",
ring1="Paguroidea Ring",
ring2="sheltered Ring",
back="shadow Mantle",
waist="slipor sash",
legs="assiduity pants +1",
feet="Serpentes Sabots"}
sets.Idle.Movement = set_combine(sets.Idle.Refresh,{
neck="Twilight Torque",
ring1="Paguroidea ring",
ring2="Sheltered ring",
feet="serpentes sabots"})
sets.Resting = set_combine(sets.Idle.Movement,{})
-- PDT Set --
sets.PDT = {
main="Tamaxchi",
sub="Genbu's Shield",
head="Nahtirah Hat",
neck="Twilight Torque",
body="Hagondes Coat",
hands="Hagondes Cuffs",
ring1="Patricius Ring",
ring2="Dark Ring",
back="Repulse Mantle",
waist="Slipor Sash",
legs="Bokwus Slops",
feet="Hagondes Sabots"}
sets.Sublimation = {
main="bolelabunga",
sub="Genbu's Shield",
ammo="Oreiad's Tathlum",
head="Wivre Hairpin",
neck="Twilight Gorget",
ear1="Lifestorm Earring",
ear2="Loquac. Earring",
body="Hagondes Coat",
hands="Serpentes Cuffs",
ring1="defending Ring",
ring2="Shadow Ring",
back="shadow Mantle",
waist="Fucho-no-obi",
legs="Nares Trews",
feet="Serpentes Sabots"}
sets.Precast = {}
-- Fastcast Set --
sets.Precast.FastCast = {
ammo="Impatiens",
head="haruspex Hat +1",
neck="Orunmila's Torque",
ear1="Enchanter earring +1",
ear2="Loquac. Earring",
body="Vanir Cotehardie",
hands="Helios Gloves",
ring1="Prolix Ring",
ring2="weatherspoon Ring",
back="Swith Cape +1",
waist="Witful Belt";
legs="Artsieq Hose",
feet="Helios boots"}
-- Elemental Staves --
sets.Precast.Thunder = {main='Apamajas I'}
sets.Precast.Water = {main='Haoma I'}
sets.Precast.Fire = {main='Atar I'}
sets.Precast.Ice = {main='Vourukasha I'}
sets.Precast.Wind = {main='Vayuvata I'}
sets.Precast.Earth = {main='Vishrava I'}
sets.Precast.Light = {main='Arka I'}
sets.Precast.Dark = {main='Xsaeta I'}
sets.Precast['Enhancing Magic'] = set_combine(sets.Precast.FastCast,{waist="Siegel Sash"})
-- Precast Cure Set --
sets.Precast.Cure = {
main="tamaxchi",
sub="Genbu's Shield",
ammo="Impatiens",
head="haruspex Hat +1",
neck="Orunmila's Torque",
ear1="Enchanter earring +1",
ear2="Loquac. Earring",
body="Vanir Cotehardie",
hands="Helios Gloves",
ring1="Prolix Ring",
ring2="weatherspoon Ring",
back="Swith Cape +1",
waist="Witful Belt";
legs="Artsieq Hose",
feet="Helios boots"}
-- Midcast Base Set --
sets.Midcast = {}
-- Haste Set --
sets.Midcast.Haste = {
ammo="Impatiens",
head="haruspex Hat +1",
neck="Orunmila's Torque",
ear1="Enchanter earring +1",
ear2="Loquac. Earring",
body="Vanir Cotehardie",
hands="Helios Gloves",
ring1="Prolix Ring",
ring2="weatherspoon Ring",
back="Swith Cape +1",
waist="Witful Belt";
legs="Artsieq Hose",
feet="Helios boots"}
-- Cure Set --
sets.Midcast.Cure = {
main="Tamaxchi",
sub="Genbu's Shield",
ammo="Oreiad's Tathlum",
head="haruspex Hat +1",
neck="Colossus's Torque",
ear1="beatific Earring",
ear2="healing Earring",
body="Heka's Kalasiris",
hands="Ayao's Gages",
ring1="Sirona's Ring",
ring2="Haoma's Ring",
back="Tempered Cape",
waist="Bishop's Sash",
legs="Nares Trews",
feet="Rubeus Boots"}
-- Curaga Set --
sets.Midcast.Curaga = {
main="Tamaxchi",
sub="Genbu's Shield",
ammo="Oreiad's Tathlum",
head="Nahtirah Hat",
neck="Nuna Gorget +1",
ear1="Lifestorm Earring",
ear2="Loquac. Earring",
body="Heka's Kalasiris",
hands="Bokwus Gloves",
ring1="Aquasoul Ring",
ring2="Karka Ring",
back="Pahtli Cape",
waist="Pythia Sash +1",
legs="Hagondes Pants",
feet="Hagondes Sabots"}
-- Enhancing Magic Set --
sets.Midcast['Enhancing Magic'] = {
neck="Colossus's Torque",
body="anhur robe",
hands="Ayao's Gages",
ring1="Prolix Ring",
ring2="Veneficium Ring",
waist="Olympus Sash",
legs="Portent Pants",
feet="Rubeus Boots"}
-- Stoneskin Set --
sets.Midcast.Stoneskin = set_combine(sets.Midcast['Enhancing Magic'],{neck="Stone Gorget", Waist="Siegel sash", legs="haven hose"})
-- Cursna Set --
sets.Midcast.Cursna = set_combine(sets.Midcast.Haste,{
head="Nahtirah Hat",
neck="Colossus's Torque",
ear2="Beatific Earring",
body="Hedera Cotehardie",
hands="Bokwus Gloves",
ring1="Haoma's Ring",
ring2="Haoma's Ring",
back="Altruistic Cape",
waist="Witful Belt",
legs="Bokwus Slops",
feet="Hagondes Sabots"})
-- Stun Sets --
sets.Midcast.Stun = {
main="kaladanda",
sub="Mephitis Grip",
ammo="Kalboron Stone",
head="artsieq hat",
neck="stoicheion medal",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="artsieq jubbah",
hands="artsieq cuffs",
ring1="archon Ring",
ring2="Sangoma Ring",
back="bane cape",
waist="aswang sash",
legs="artsieq hose",
feet="artsieq boots"}
sets.Midcast.Stun.MidACC = set_combine(sets.Midcast.Stun,{})
sets.Midcast.Stun.HighACC = set_combine(sets.Midcast.Stun.MidACC,{})
-- Dark Magic Sets --
sets.Midcast['Dark Magic'] = {
main="keraunos",
sub="benthos Grip",
ammo="oreiad's tathlum",
head="Artsieq hat",
neck="Dark torque",
ear1="gwati Earring",
ear2="harudinea Earring",
body="vanir cotehardie",
hands="hagondes cuffs",
ring1="weatherspoon Ring",
ring2="Sangoma Ring",
back="bane cape",
waist="fucho-no-obi",
legs="artsieq hose",
feet="artsieq boots"}
sets.Midcast['Dark Magic'].MidACC = set_combine(sets.Midcast['Dark Magic'],{})
sets.Midcast['Dark Magic'].HighACC = set_combine(sets.Midcast['Dark Magic'].MidACC,{})
-- Elemental Sets --
sets.Midcast['Elemental Magic'] = {
main="keraunos",
sub="elder's Grip +1",
ammo="dosis tathlum",
head="helios band",
neck="Saevus Pendant +1",
ear1="Friomisi Earring",
ear2="hecate's Earring",
body="count's garb",
hands="helios gloves",
ring1="shiva Ring +1",
ring2="shiva ring +1",
back="Toro cape",
waist="sekhmet corset",
legs="Hagondes Pants +1",
feet="helios boots"}
sets.Midcast['Elemental Magic'].MidACC = set_combine(sets.Midcast['Elemental Magic'],{
body="Artsieq Jubbah",
hands="yaoyotl gloves",
back="bane cape",
})
sets.Midcast['Elemental Magic'].HighACC = set_combine(sets.Midcast['Elemental Magic'].MidACC,{
sub="mephitis grip",
head="buremte hat"})
-- Enfeebling Sets --
sets.Midcast['Enfeebling Magic'] = {
main="keraunos",
sub="benthos Grip",
ammo="Kalboron Stone",
head="artsieq hat",
neck="imbodla necklace",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="artsieq jubbah",
hands="artsieq cuffs",
ring1="leviathan ring +1",
ring2="leviathan ring +1",
back="refraction cape",
waist="cascade belt",
legs="artsieq hose",
feet="artsieq boots"}
sets.Midcast['Enfeebling Magic'].MidACC = set_combine(sets.Midcast['Enfeebling Magic'],{})
sets.Midcast['Enfeebling Magic'].HighACC = set_combine(sets.Midcast['Enfeebling Magic'].MidACC,{})
-- Impact Set --
sets.Midcast.Impact = {
main="keraunos",
sub="elder's Grip +1",
neck="Saevus Pendant +1",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="Twilight Cloak",
hands="Hagondes Cuffs",
ring1="Maquette Ring",
ring2="Sangoma Ring",
back="Refraction Cape",
waist="Demonry Sash",
legs="Mes'yohi Slacks",
feet="Nares Clogs"}
-- Meteor Set --
sets.Midcast.Meteor = {}
-- Elemental Obi/Twilight Cape --
sets.Obi = {waist="Hachirin-no-Obi"}
sets.Obi.Thunder = {back="Twilight Cape",waist="Hachirin-no-Obi"}
sets.Obi.Water = {back="Twilight Cape",waist="Hachirin-no-Obi"}
sets.Obi.Fire = {back="Twilight Cape",waist="Hachirin-no-Obi"}
sets.Obi.Ice = {back="Twilight Cape",waist="Hachirin-no-Obi"}
sets.Obi.Wind = {back="Twilight Cape",waist="Hachirin-no-Obi"}
sets.Obi.Earth = {back="Twilight Cape",waist="Hachirin-no-Obi"}
sets.Obi.Light = {back="Twilight Cape",waist="Hachirin-no-Obi"}
sets.Obi.Dark = {back="Twilight Cape",waist="Hachirin-no-Obi"}
-- JA Sets --
sets.JA = {}
sets.JA.Manafont = {body="Src. Coat +2"}
sets.JA['Enmity Douse'] = {hands="Goetia Gloves +2"}
sets.JA['Mana Wall'] = {feet="Goetia Sabots +2"}
-- Melee Set --
sets.Melee = set_combine(sets.Midcast.Haste,{})
-- WS Base Set --
sets.WS = {}
sets.WS.Shattersoul = {}
sets.WS.Myrkr = {}
sets.WS.Vidohunir = {}
sets.WS["Gate of Tartarus"] = {}
end
function pretarget(spell,action)
if (spell.type:endswith('Magic') or spell.type == "Ninjutsu") and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
cancel_spell()
send_command('input /item "Echo Drops" <me>')
elseif spell.english:ifind("Cure") and player.mp<actualCost(spell.mp_cost) then
degrade_spell(spell,Cure_Spells)
elseif spell.english:ifind("Curaga") and player.mp<actualCost(spell.mp_cost) then
degrade_spell(spell,Curaga_Spells)
elseif spell.english == "Meteor" and not buffactive['Elemental Seal'] then -- Auto Elemental Seal When You Use Meteor --
cancel_spell()
send_command('input /ja "Elemental Seal" <me>;wait 1;input /ma "Meteor" <t>')
elseif buffactive['Light Arts'] or buffactive['Addendum: White'] then
if spell.english == "Light Arts" and not buffactive['Addendum: White'] then
cancel_spell()
send_command('input /ja Addendum: White <me>')
elseif spell.english == "Manifestation" then
cancel_spell()
send_command('input /ja Accession <me>')
elseif spell.english == "Alacrity" then
cancel_spell()
send_command('input /ja Celerity <me>')
elseif spell.english == "Parsimony" then
cancel_spell()
send_command('input /ja Penury <me>')
end
elseif buffactive['Dark Arts'] or buffactive['Addendum: Black'] then
if spell.english == "Dark Arts" and not buffactive['Addendum: Black'] then
cancel_spell()
send_command('input /ja Addendum: Black <me>')
elseif spell.english == "Accession" then
cancel_spell()
send_command('input /ja Manifestation <me>')
elseif spell.english == "Celerity" then
cancel_spell()
send_command('input /ja Alacrity <me>')
elseif spell.english == "Penury" then
cancel_spell()
send_command('input /ja Parsimony <me>')
end
end
end
function precast(spell,action)
if spell.type:endswith('Magic') or spell.type == "Ninjutsu" then
if buffactive.silence or spell.target.distance > 16+target_distance then -- Cancel Magic or Ninjutsu If You Are Silenced or Out of Range --
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Silenced or Out of Casting Range]')
return
else
if string.find(spell.english,'Cur') and spell.english ~= "Cursna" then
equip(sets.Precast.Cure)
elseif spell.english == "Impact" then
equip(set_combine(sets.Precast.FastCast,{body="Twilight Cloak"}))
elseif string.find(spell.english,'Utsusemi') then
if buffactive['Copy Image (3)'] or buffactive['Copy Image (4)'] then
cancel_spell()
add_to_chat(123, spell.english .. ' Canceled: [3+ Images]')
return
else
equip(sets.Precast.FastCast)
end
elseif sets.Precast[spell.skill] then
equip(sets.Precast[spell.skill])
else
equip(sets.Precast.FastCast)
end
end
elseif spell.type == "WeaponSkill" then
if player.status ~= 'Engaged' then -- Cancel WS If You Are Not Engaged. Can Delete It If You Don't Need It --
cancel_spell()
add_to_chat(123,'Unable To Use WeaponSkill: [Disengaged]')
return
else
if sets.WS[spell.english] then
equip(sets.WS[spell.english])
end
end
elseif spell.type == "JobAbility" then
if sets.JA[spell.english] then
equip(sets.JA[spell.english])
end
elseif spell.english == 'Spectral Jig' and buffactive.Sneak then
cast_delay(0.2)
send_command('cancel Sneak')
end
if sets.Precast[spell.element] then
equip(sets.Precast[spell.element])
end
if StunIndex == 1 then
equip(sets.Midcast.Stun)
end
end
function midcast(spell,action)
equipSet = {}
if spell.type:endswith('Magic') or spell.type == 'Ninjutsu' or spell.type == 'BardSong' then
equipSet = sets.Midcast
if string.find(spell.english,'Cure') then
equipSet = equipSet.Cure
elseif string.find(spell.english,'Cura') then
equipSet = equipSet.Curaga
elseif string.find(spell.english,'Banish') then
equipSet = set_combine(equipSet.Haste,{ring1="Fenian Ring"})
elseif spell.english == "Stoneskin" then
if buffactive.Stoneskin then
send_command('@wait 2.8;cancel stoneskin')
end
equipSet = equipSet.Stoneskin
elseif spell.english == "Sneak" then
if spell.target.name == player.name and buffactive['Sneak'] then
send_command('cancel sneak')
end
equipSet = equipSet.Haste
elseif string.find(spell.english,'Utsusemi') then
if spell.english == 'Utsusemi: Ichi' and (buffactive['Copy Image'] or buffactive['Copy Image (2)']) then
send_command('@wait 1.7;cancel Copy Image*')
end
equipSet = equipSet.Haste
elseif spell.english == 'Monomi: Ichi' then
if buffactive['Sneak'] then
send_command('@wait 1.7;cancel sneak')
end
equipSet = equipSet.Haste
else
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if equipSet[spell.skill] then
equipSet = equipSet[spell.skill]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if equipSet[spell.type] then
equipSet = equipSet[spell.type]
end
if (spell.skill == 'Elemental Magic' or string.find(spell.english,'Cur') or string.find(spell.english,'Bio') or string.find(spell.english,'Dia')) and not Non_Obi_Spells:contains(spell.english) and (world.day_element == spell.element or world.weather_element == spell.element) and sets.Obi[spell.element] and Obi == 'ON' then -- Use Obi Toggle To Equip Normal Waist Gear --
equipSet = set_combine(equipSet,sets.Obi[spell.element])
end
end
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
equip(equipSet)
if StunIndex == 1 then
equip(sets.Midcast.Stun)
end
end
function aftercast(spell,action)
if not spell.interrupted then
if spell.english == 'Mana Wall' and player.equipment.feet == "Goetia Sabots +2" then
disable('feet')
elseif spell.english == "Sleep II" or spell.english == "Sleepga II" then -- Sleep II & Sleepga II Countdown --
send_command('wait 60;input /echo Sleep Effect: [WEARING OFF IN 30 SEC.];wait 15;input /echo Sleep Effect: [WEARING OFF IN 15 SEC.];wait 10;input /echo Sleep Effect: [WEARING OFF IN 5 SEC.]')
elseif spell.english == "Sleep" or spell.english == "Sleepga" then -- Sleep & Sleepga Countdown --
send_command('wait 30;input /echo Sleep Effect: [WEARING OFF IN 30 SEC.];wait 15;input /echo Sleep Effect: [WEARING OFF IN 15 SEC.];wait 10;input /echo Sleep Effect: [WEARING OFF IN 5 SEC.]')
elseif spell.english == "Banish II" then -- Banish II Countdown --
send_command('wait 20;input /echo Banish Effect: [WEARING OFF IN 10 SEC.]')
end
end
status_change(player.status)
end
function status_change(new,old)
if Armor == 'PDT' then
equip(sets.PDT)
elseif buffactive["Sublimation: Activated"] then
equip(sets.Sublimation)
elseif new=='Engaged' then
equip(sets.Melee)
elseif new == 'Idle' then
equip(sets.Idle[IdleArray[IdleIndex]])
elseif new == 'Resting' then
equip(sets.Resting)
end
if StunIndex == 1 then
equip(sets.Midcast.Stun)
end
end
function buff_change(buff,gain)
buff = string.lower(buff)
if buff == "mana wall" and not gain then
enable('feet')
elseif buff == "aftermath: lv.3" then -- AM3 Timer/Countdown --
if gain then
send_command('timers create "Aftermath: Lv.3" 180 down;wait 120;input /echo Aftermath: Lv.3 [WEARING OFF IN 60 SEC.];wait 30;input /echo Aftermath: Lv.3 [WEARING OFF IN 30 SEC.];wait 20;input /echo Aftermath: Lv.3 [WEARING OFF IN 10 SEC.]')
else
send_command('timers delete "Aftermath: Lv.3"')
add_to_chat(123,'AM3: [OFF]')
end
elseif buff == 'weakness' then -- Weakness Timer --
if gain then
send_command('timers create "Weakness" 300 up')
else
send_command('timers delete "Weakness"')
end
end
if not midaction() then
status_change(player.status)
end
end
-- In Game: //gs c (command), Macro: /console gs c (command), Bind: gs c (command) --
function self_command(command)
if command == 'C1' then -- Magic Accuracy Toggle --
AccIndex = (AccIndex % #AccArray) + 1
add_to_chat(158,'Magic Accuracy Level: ' .. AccArray[AccIndex])
status_change(player.status)
elseif command == 'C5' then -- Auto Update Gear Toggle --
status_change(player.status)
add_to_chat(158,'Auto Update Gear')
elseif command == 'C2' then -- Stun Toggle --
if StunIndex == 1 then
StunIndex = 0
add_to_chat(123,'Stun Set: [Unlocked]')
else
StunIndex = 1
add_to_chat(158,'Stun Set: [Locked]')
end
status_change(player.status)
elseif command == 'C3' then -- Obi Toggle --
if Obi == 'ON' then
Obi = 'OFF'
add_to_chat(123,'Obi: [OFF]')
else
Obi = 'ON'
add_to_chat(158,'Obi: [ON]')
end
status_change(player.status)
elseif command == 'C7' then -- PDT Toggle --
if Armor == 'PDT' then
Armor = 'None'
add_to_chat(123,'PDT Set: [Unlocked]')
else
Armor = 'PDT'
add_to_chat(158,'PDT Set: [Locked]')
end
status_change(player.status)
elseif command == 'C8' then -- Distance Toggle --
if player.target.distance then
target_distance = math.floor(player.target.distance*10)/10
add_to_chat(158,'Distance: '..target_distance)
else
add_to_chat(123,'No Target Selected')
end
elseif command == 'C6' then -- Idle Toggle --
IdleIndex = (IdleIndex % #IdleArray) + 1
add_to_chat(158,'Idle Set: '..IdleArray[IdleIndex])
status_change(player.status)
elseif command:match('^SC%d$') then
send_command('//' .. sc_map[command])
end
end
function actualCost(originalCost)
if buffactive["Penury"] then
return originalCost*.5
elseif buffactive["Light Arts"] then
return originalCost*.9
else
return originalCost
end
end
function degrade_spell(spell,degrade_array)
spell_index = table.find(degrade_array,spell.name)
if spell_index > 1 then
new_spell = degrade_array[spell_index - 1]
change_spell(new_spell,spell.target.raw)
add_to_chat(8,spell.name..' Canceled: ['..player.mp..'/'..player.max_mp..'MP::'..player.mpp..'%] Casting '..new_spell..' instead.')
end
end
function change_spell(spell_name,target)
cancel_spell()
send_command('//'..spell_name..' '..target)
end
function sub_job_change(newSubjob, oldSubjob)
select_default_macro_book()
end
function set_macro_page(set,book)
if not tonumber(set) then
add_to_chat(123,'Error setting macro page: Set is not a valid number ('..tostring(set)..').')
return
end
if set < 1 or set > 10 then
add_to_chat(123,'Error setting macro page: Macro set ('..tostring(set)..') must be between 1 and 10.')
return
end
if book then
if not tonumber(book) then
add_to_chat(123,'Error setting macro page: book is not a valid number ('..tostring(book)..').')
return
end
if book < 1 or book > 20 then
add_to_chat(123,'Error setting macro page: Macro book ('..tostring(book)..') must be between 1 and 20.')
return
end
send_command('@input /macro book '..tostring(book)..';wait .1;input /macro set '..tostring(set))
else
send_command('@input /macro set '..tostring(set))
end
end
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'WHM' then
set_macro_page(1, 1)
elseif player.sub_job == 'RDM' then
set_macro_page(2, 1)
elseif player.sub_job == 'SCH' then
set_macro_page(3, 1)
elseif player.sub_job == 'DNC' then
set_macro_page(10, 1)
elseif player.sub_job == 'NIN' then
set_macro_page(5, 1)
else
set_macro_page(1, 1)
end
end[/spoiler]
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.
|
|