|
Gearswap Support Thread
Shiva.Hiep
Server: Shiva
Game: FFXI
Posts: 669
By Shiva.Hiep 2016-08-23 16:00:31
Ragnarok.Flippant said: »Is there a reason why my flurry toggle (ctrl q) isn't working? Also, how come I'm not receiving a message that flurry is on/off? http://pastebin.com/6JsA1UPj Thank you.
The first thing I notice is that you're never calling the function that is supposed to check if Flurry is on or not. You would likely want to call it when you load the file, and somewhere that will get called as regularly as you need. Or, just add state.buff.Flurry and Mote will automatically track the variable for you using the buff_change function.
I'm sorry, but I'm not really that good with gearswap. How would I implement this?
Ragnarok.Flippant
Server: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-08-23 21:51:10
Well, you created a function called check_flurry_level(), but you never actually use it. A function is just a set of instructions, but somewhere you need to say "now do these instructions." Usually, you use some sort of event, the structure of which GS creates for you (buff_change() is called when you gain or lose a buff).
You call a function simply using its name, like check_flurry_level(). Then you decide when it should be called by putting it in the event-bound functions that GS has for you.
If you're talking about state.buff.Flurry, you can add that after line 18; it would be phrased just like the other variables there. Mote keeps these variables updated every time you gain or lose a buff. You can then check that variable. "if state.buff.Flurry then" would be true if Flurry is on, and "if not state.buff.Flurry then" would be true if Flurry is off.
Bismarck.Mitchel
Server: Bismarck
Game: FFXI
Posts: 153
By Bismarck.Mitchel 2016-08-29 18:05:43
Could anyone tell me why my Valorous mask wont switch into my Engaged.Apocalypse sets in the lua i've edited?
Using the following:
Val_STP_head = { name="Valorous Mask", augments={'Accuracy+24 Attack+32','"Store TP"+5','AGI+4',}}
and head=Val_STP_head in the sets.
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
include('Mote-Include.lua')
end
-- //gs debugmode
-- //gs showswaps
function binds_on_load()
-- F9-F12
send_command('bind f9 gs c cycle OffenseMode')
send_command('bind f10 gs c cycle HybridMode')
send_command('bind f11 gs c cycle CastingMode')
send_command('bind f12 gs c cycle IdleMode')
-- ALT F9-12
send_command('bind !f9 gs c update user')
send_command('bind !f10 gs c cycle RangedMode')
send_command('bind !f11 gs c cycle WeaponskillMode')
send_command('bind !f12 gs c cycle Kiting')
end
-- Setup vars that are user-independent.
function job_setup()
state.Buff.Aftermath = buffactive.Aftermath or false
state.Buff.Souleater = buffactive.Souleater or false
state.Buff.Doom = buffactive.Doom or false
state.Buff['Dark Seal'] = buffactive['Dark Seal'] or false
state.Buff['Last Resort'] = buffactive['Last Resort'] or false
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
state.OffenseMode:options('Normal', 'LowAcc', 'MidAcc', 'HighAcc')
state.WeaponskillMode:options('Normal', 'Acc')
state.HybridMode:options('Normal', 'PDT')
state.CastingMode:options('Normal', 'Resistant')
state.IdleMode:options('Normal','PDT')
state.PhysicalDefenseMode:options('PDT', 'MDT')
Apoc_weapons = S{'Apocalypse'}
LowTierNuke = 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'}
update_combat_form()
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function file_unload()
if binds_on_unload then
binds_on_unload()
end
end
-- Define sets and vars used by this job file.
function init_gear_sets()
-- Augmented Gear
-- Back
Ank_STP = { name="Ankou's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}}
Ank_WSdmg = { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}}
Ank_DA = { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}}
-- Multi Hit
-- Valorous
Val_DA_head = { name="Valorous Mask", augments={'Accuracy+27','"Dbl.Atk."+5','AGI+3',}}
Val_DA_body = { name="Valorous Mail", augments={'Accuracy+23 Attack+23','"Dbl.Atk."+1','VIT+4','Accuracy+12','Attack+11',}}
Val_QA_body = { name="Valorous Mail", augments={'Pet: VIT+1','Pet: DEX+4','Quadruple Attack +2','Mag. Acc.+8 "Mag.Atk.Bns."+8',}}
-- Odyssean
Ody_QA_legs ={ name="Odyssean Cuisses", augments={'MND+8','Pet: Accuracy+24 Pet: Rng. Acc.+24','Quadruple Attack +1','Accuracy+20 Attack+20','Mag. Acc.+1 "Mag.Atk.Bns."+1',}}
-- STP
-- Valorous
Val_STP_head = { name="Valorous Mask", augments={'Accuracy+24 Attack+32','"Store TP"+5','AGI+4',}}
-- Odyssean
Ody_STP_legs = { name="Odyssean Cuisses", augments={'Accuracy+14','"Store TP"+4','STR+5',}}
--WSdmg
-- Valorous
Val_WSdmg_head = { name="Valorous Mask", augments={'Attack+28','Weapon skill damage +5%','STR+9','Accuracy+9',}}
Val_WSdmg_legs = { name="Valor. Hose", augments={'Accuracy+10','Weapon skill damage +3%','DEX+2','Mag. Acc.+22',}}
-- Odyssean
Ody_WSdmg_body = { name="Odyss. Chestplate", augments={'Accuracy+24 Attack+24','Weapon skill damage +3%','VIT+3','Accuracy+6',}}
Ody_WSdmg_hands = { name="Odyssean Gauntlets", augments={'Accuracy+27 Attack+11','Weapon skill damage +3%','DEX+4',}}
-- STR ACC ATK MISC
-- Valorous
Val_STRpdt_head = { name="Valorous Mask", augments={'Accuracy+11 Attack+11','Magic dmg. taken -3%','STR+6','Accuracy+11','Attack+9',}}
Val_STR_head = { name="Valorous Mask", augments={'Accuracy+24 Attack+24','STR+6','Accuracy+4','Attack+2',}}
Val_STRpdt_hands = { name="Valorous Mitts", augments={'Accuracy+23 Attack+23','Phys. dmg. taken -1%','STR+7','Attack+7',}}
-- DEX ACC ATK MISC
-- Valorous
Val_DEX_legs = { name="Valor. Hose", augments={'Accuracy+24 Attack+24','DEX+15',}}
-- WSacc
--Valorous
Val_WSacc_legs = { name="Valor. Hose", augments={'Accuracy+22 Attack+22','Weapon Skill Acc.+3','DEX+9','Accuracy+7','Attack+5',}}
-- Odyssean
Ody_WSacc_legs = { name="Odyssean Cuisses", augments={'Accuracy+22 Attack+22','Weapon Skill Acc.+15','STR+10','Attack+15',}}
Ody_WSacc_hands = { name="Odyssean Gauntlets", augments={'Accuracy+26 Attack+4','Weapon Skill Acc.+15','CHR+12',}}
-- Crit Hit Valorous
Val_Crit_head = { name="Valorous Mask", augments={'Accuracy+20','Crit. hit damage +3%','DEX+3','Attack+9',}}
Val_Crit_hands = { name="Valorous Mitts", augments={'Attack+15','Crit. hit damage +3%','VIT+11','Accuracy+10',}}
Val_Crit_legs = { name="Valor. Hose", augments={'Accuracy+14','Crit. hit damage +3%','MND+3','Attack+14',}}
-- Fast Cast Odyssean
Ody_FC_body = { name="Odyss. Chestplate", augments={'"Fast Cast"+6','MND+1','Mag. Acc.+6','"Mag.Atk.Bns."+6',}}
Ody_FC_feet = { name="Odyssean Greaves", augments={'Mag. Acc.+11','"Fast Cast"+5','MND+1','"Mag.Atk.Bns."+10',}}
Ody_FC_hands = { name="Odyssean Gauntlets", augments={'Accuracy+4 Attack+8','"Fast Cast"+4','VIT+9',}}
-- MAB Odyssean
Ody_MAB_feet = { name="Odyssean Greaves", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','CHR+4','Mag. Acc.+13','"Mag.Atk.Bns."+14',}}
-- DT Odyssean
Ody_DT_head = { name="Odyssean Helm", augments={'Damage taken-3%','VIT+6','Attack+12',}}
Ody_DT_Body = { name="Odyss. Chestplate", augments={'Mag. Acc.+25','Damage taken-3%',}}
Ody_DT_feet = { name="Odyssean Greaves", augments={'Attack+13','Damage taken-4%','VIT+8',}}
-- Precast sets
sets.precast.JA['Diabolic Eye'] = {hands="Fallen's Finger Gauntlets +1"}
sets.precast.JA['Arcane Circle'] = {feet="Ignominy Sollerets"}
sets.precast.JA['Nether Void'] = {legs="Bale Flanchard +2"}
sets.precast.JA['Souleater'] = {head="Chaos Burgeonet"}
sets.precast.JA['Last Resort'] = {feet="Fallen's Sollerets +1", back=Ank_STP}
sets.precast.JA['Weapon Bash'] = {hands="Ignominy Gauntlets +1"}
sets.precast.JA['Blood Weapon'] = {body="Fallen's Cuirass +1"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {}
-- Fast cast sets for spells
sets.precast.FC = {
ammo="Impatiens",
head="Carmine Mask", body=Ody_FC_body,
back=Ank_STP, neck="Orunmila's Torque",
hands=Ody_FC_hands, waist="Pya'ekue Belt",
legs="Eschite Cuisses", feet="Carmine greaves",
ring1="Lebeche Ring", ring2="Prolix Ring",
ear1="Enchanter Earring +1", ear2="Loquacious Earring"}
sets.precast.FC['Dark Magic'] = sets.precast.FC
sets.precast.FC.Impact = set_combine(sets.precast.FC, {
head=empty,body="Twilight Cloak"})
-- Midcast Sets
sets.midcast.FastRecast = {
ammo="Impatiens",
head="Carmine Mask", body=Ody_FC_body,
back=Ank_STP, neck="Orunmila's Torque",
hands="Leyline Gloves", waist="Tempus Fugit",
legs="Eschite Cuisses", feet=Ody_FC_feet,
ring1="Lebeche Ring", ring2="Prolix Ring",
ear1="Enchanter Earring +1", ear2="Loquacious Earring"}
-- Specific spells
sets.midcast['Dark Magic'] = {
ammo="Pemphredo Tathlum",
head="Pixie Hairpin +1", body="Demon's Harness",
back="Niht Mantle", neck="Deceiver's Torque",
hands="Fallen's Finger Gauntlets +1", waist="Casso Sash",
legs="Eschite Cuisses", feet="Heathen's Sollerets",
ring1="Evanescence Ring", Ring2="Archon Ring",
ear1="Dark Earring", ear2="Gwati Earring"}
sets.midcast['Enfeebling Magic'] = {
ammo="Quartz Tathlum +1",
head="Befouled Crown", body="Carmine Scale Mail",
back="Chuparrosa Mantle", neck="Incanter's Torque",
hands="Leyline Gloves", waist="Eschan Stone",
legs="Eschite Cuisses", feet=Ody_FC_feet,
ring1="Globidonta Ring", Ring2="Sangoma Ring",
ear1="Enchanter Earring +1", ear2="Gwati Earring"}
sets.midcast['Dread Spikes'] = {
ammo="Impatiens",
head="Loess barbuta", body="Bale Cuirass +2",
back="Strendu Mantle", neck="Deceiver's Torque",
hands="Fallen's Finger Gauntlets +1", waist="Casso Sash",
legs="Eschite Cuisses", feet="Heathen's Sollerets +1",
ring1="Meridian Ring", Ring2="Etana Ring",
ear1="Thureous Earring", ear2="Eabani Earring"}
sets.midcast.Absorb = {
ammo="Pemphredo Tathlum",
head="Pixie Hairpin +1", body="Demon's Harness",
back="Chuparrosa Mantle", neck="Deceiver's Torque",
hands="Pavor gauntlets", waist="Casso Sash",
legs="Eschite Cuisses", feet="Heathen's Sollerets",
ring1="Evanescence Ring", Ring2="Archon Ring",
ear1="Dark Earring", ear2="Gwati Earring"}
sets.midcast.Absorb.Resistant = {
ammo="Pemphredo Tathlum",
head="Carmine Mask", body="Carmine Scale Mail",
back="Chuparrosa Mantle", neck="Incanter's Torque",
hands="Pavor Gauntlets", waist="Eschan Stone",
legs="Eschite Cuisses", feet=Ody_MAB_feet,
Ring1="Evanescence Ring", Ring2="Sangoma Ring",
ear1="Enchanter Earring +1", ear2="Gwati Earring"}
sets.midcast['Absorb-TP'] = set_combine(sets.midcast.Absorb, {hands="Bale Gauntlets +2"})
sets.midcast['Absorb-TP'].Resistant = set_combine(sets.midcast.Absorb.Resistant, {hands="Bale Gauntlets +2"})
sets.midcast['Absorb-STR'] = sets.midcast.Absorb
sets.midcast['Absorb-STR'].Resistant = sets.midcast.Absorb.Resistant
sets.midcast['Absorb-DEX'] = sets.midcast.Absorb
sets.midcast['Absorb-DEX'].Resistant = sets.midcast.Absorb.Resistant
sets.midcast['Absorb-AGI'] = sets.midcast.Absorb
sets.midcast['Absorb-AGI'].Resistant = sets.midcast.Absorb.Resistant
sets.midcast['Absorb-MND'] = sets.midcast.Absorb
sets.midcast['Absorb-MND'].Resistant = sets.midcast.Absorb.Resistant
sets.midcast['Absorb-VIT'] = sets.midcast.Absorb
sets.midcast['Absorb-VIT'].Resistant = sets.midcast.Absorb.Resistant
sets.midcast['Absorb-Acc'] = sets.midcast.Absorb
sets.midcast['Absorb-Acc'].Resistant = sets.midcast.Absorb.Resistant
sets.midcast['Absorb-Attri'] = sets.midcast.Absorb
sets.midcast['Absorb-Attri'].Resistant = sets.midcast.Absorb.Resistant
sets.midcast.Stun = {
ammo="Impatiens",
head="Carmine Mask", body=Ody_FC_body,
back="Niht Mantle", neck="Orunmila's Torque",
hands="Leyline Gloves", waist="Tempus Fugit",
legs="Eschite Cuisses", feet=Ody_FC_feet,
Ring1="Evanescence Ring", Ring2="Sangoma Ring",
ear1="Enchanter Earring +1", ear2="Gwati Earring"}
sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {
head="Pixie Hairpin +1", ring2="Archon Ring",
hands="Fallen's Finger Gauntlets +1",
back="Niht Mantle", waist="Casso Sash"})
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Impact = set_combine(sets.midcast['Dark Magic'], {head=empty, body="Twilight Cloak"})
-- Elemental Magic sets are default for handling low-tier nukes.
sets.midcast.LowTierNuke = {
ammo="Pemphredo Tathlum",
head="Carmine Mask", body="Carmine Scale Mail",
back="Izdubar Mantle", neck="Sanctity Necklace",
hands="Fallen's Finger Gauntlets +1", waist="Salire Belt",
legs="Eschite Cuisses",feet="Heathen's sollerets",
ring1="Shiva Ring", ring2="Etana Ring",
ear1="Halasz Earring", ear2="Friomisi Earring"}
sets.midcast.LowTierNuke.Resistant = {
ammo="Pemphredo Tathlum",
head="Carmine Mask", body="Carmine Scale Mail",
back="Izdubar Mantle", neck="Sanctity Necklace",
hands="Fallen's Finger Gauntlets +1", waist="Salire Belt",
legs="Eschite Cuisses",feet="Heathen's sollerets",
ring1="Shiva Ring", ring2="Etana Ring",
ear1="Lifestorm Earring", ear2="Psystorm Earring"}
-- Custom classes for high-tier nukes.
sets.midcast.HighTierNuke = sets.midcast.LowTierNuke
sets.midcast.HighTierNuke.Resistant = sets.midcast.LowTierNuke.Resistant
-- Resting sets
sets.resting = {
ammo="Ginsen",
head="", body="Lugra Cloak +1",
back="Strendu Mantle", neck="Sanctity Necklace",
hands="Sulevia's Gauntlets +1", waist="Flume Belt",
legs="Eschite Cuisses",feet="Sulevia's leggings +1",
ring1="Sheltered Ring", ring2="Paguroidea Ring",
ear1="Infused Earring", ear2="Darkness Earring"}
-- Idle sets
sets.idle = {
ammo="Seething Bomblet +1",
head="", body="Lugra Cloak +1",
back="Solemnity cape", neck="Sanctity Necklace",
hands="Sulevia's Gauntlets +1", waist="Flume Belt",
legs="Sulevia's cuisses", feet="Sulevia's leggings +1",
ring1="Sheltered Ring", ring2="Paguroidea Ring",
ear1="Infused earring", ear2="Cessance Earring"}
sets.idle.PDT = {
ammo="Seething Bomblet +1",
head="Loess barbuta", body="Sulevia's Platemail",
back="Solemnity cape", neck="Twilight Torque",
hands="Sulevia's Gauntlets +1", waist="Flume Belt",
legs="Sulevia's Cuisses", feet="Sulevia's leggings +1",
ring1="Gelatinous Ring", ring2="Dark Ring",
ear1="Darkness earring", ear2="Darkness earring"}
sets.idle.Town = {
ammo="Seething Bomblet +1",
head="Valorous Mask", body="Sulevia's Platemail",
back=Ank_WSdmg, neck="Sanctity necklace",
hands="Sulevia's Gauntlets +1", waist="Fotia Belt",
legs="Crimson cuisses", feet="Sulevia's leggings +1",
ring1="Sheltered Ring", ring2="Paguroidea Ring",
ear1="Infused earring", ear2="Cessance Earring"}
sets.idle.Weak = {
ammo="Seething Bomblet +1",
head="Twilight Helm", body="Twilight Mail",
back="Solemnity cape", neck="Twilight Torque",
hands="Sulevia's Gauntlets +1", waist="Flume Belt",
legs="Sulevia's Cuisses", feet="Sulevia's leggings +1",
ring1="Gelatinous Ring", ring2="Dark Ring",
ear1="Darkness earring", ear2="Darkness earring"}
sets.Kiting = {legs="Crimson cuisses"}
sets.latent_refresh = {waist="Fucho-no-Obi"}
-- Custom buff sets
sets.Aftermath = {}
sets.Souleater = {head="Chaos Burgeonet"}
sets.Doom = {head="Twilight Helm", body="Twilight Mail"}
sets['Dark Seal'] = {}
sets['Last Resort'] = {}
-- Scythe Darkness:
-- Cross Reaper > Insurgency > Entropy > Cross Reaper > Quietus
-- Catastrophe > Catastrophe
-- Quietus > Quietus
-- Entropy > Entropy
-- Entropy > Cross Reaper - Strong.
-- Scythe Light:
-- CDC > Insurgency
-- Other:
-- CDC > Entropy > Entropy
-- CDC > Catastrophe
-- Apoc 513 Delay - /sam gives 15stp.
--5 hit
-- tp 205 per hit. 30 stp +15 = 5 hit = 1025tp
-- tp 220 per hit. 40 stp +15 = 5 hit = 1100tp
-- tp 234 per hit. 50 stp +15 = 5 hit = 1170tp
-- tp 248 per hit. 60 stp +15 = 5 hit = 1240tp
--4 hit
-- tp 251 per hit. 62 stp +15 = 4 hit = 1004tp
-- Anguta 528 Delay 10 stp
-- 5 hit
-- tp 211 per hit. 30 stp +15 = 5 hit = 1055tp
-- tp 226 per hit. 40 stp +15 = 5 hit = 1130tp
-- tp 240 per hit. 50 stp +15 = 5 hit = 1200tp
-- 4 hit
-- tp 258 per hit. 62 stp +15 = 4 hit = 1032tp
-- Need 77 STP on gear to hit 1032TP /war.
--Engaged Anguta
-- 1035ACC 64STP
sets.engaged = {
ammo="Ginsen",
head=Val_DA_head, body=Val_QA_body,
back=Ank_STP, neck="Ganesha's Mala",
hands="Argosy Mufflers", waist="Windbuffet Belt +1",
legs=Ody_QA_legs, feet=Val_STP_feet,
ring1="Petrov Ring", ring2="Hetairoi Ring",
ear1="Telos Earring", ear2="Brutal Earring"}
-- 1086ACC 65STP
sets.engaged.LowAcc = {
ammo="Ginsen",
head="Argosy Celata", body=Val_DA_body,
back=Ank_STP, neck="Ganesha's Mala",
hands="Argosy Mufflers", waist="Windbuffet Belt +1",
legs=Ody_QA_legs, feet=Val_STP_feet,
ring1="Ramuh Ring +1", ring2="Hetairoi Ring",
ear1="Telos Earring", ear2="Brutal Earring"}
-- 1149ACC 62STP
sets.engaged.MidAcc = {
ammo="Seething Bomblet +1",
head="Argosy Celata", body=Val_DA_body,
back=Ank_STP, neck="Sanctity Necklace",
hands=Val_STRpdt_hands, waist="Olseni Belt",
legs=Ody_QA_legs, feet=Val_STP_feet,
ring1="Ramuh Ring +1", ring2="Hetairoi Ring",
ear1="Telos Earring", ear2="Dignitary's Earring"}
-- 1173ACC 64STP
sets.engaged.HighAcc = {
ammo="Seething Bomblet +1",
head="Argosy Celata", body=Val_DA_body,
back=Ank_STP, neck="Sanctity Necklace",
hands=Val_STP_hands, waist="Olseni Belt",
legs="Carmine Cuisses +1", feet=Val_STP_feet,
ring1="Ramuh Ring +1", ring2="Ramuh Ring +1",
ear1="Telos Earring", ear2="Dignitary's Earring"}
-- Engaged Apocalypse
sets.engaged.Apocalypse = {
ammo="Ginsen",
head=Val_STP_head, body="Acro surcoat",
back=Ank_DA, neck="Asperity necklace",
hands="Emicho gauntlets", waist="Windbuffet Belt",
legs=Ody_STP_legs, feet="Emicho Gambieras",
ring1="Petrov Ring", ring2="Rajas Ring",
ear1="Cessance Earring", ear2="Brutal Earring"}
sets.engaged.Apocalypse.LowAcc = {
ammo="Ginsen",
head=Val_STP_head, body="Acro surcoat",
back=Ank_DA, neck="Asperity necklace",
hands="Emicho gauntlets", waist="Windbuffet Belt",
legs=Ody_STP_legs, feet="Emicho Gambieras",
ring1="Petrov Ring", ring2="Rajas Ring",
ear1="Cessance Earring", ear2="Brutal Earring"}
sets.engaged.Apocalypse.MidAcc = {
ammo="Ginsen",
head=Val_STP_head, body="Acro surcoat",
back=Ank_DA, neck="Lissome necklace",
hands="Emicho gauntlets", waist="Kentarch Belt +1",
legs=Ody_STP_legs, feet="Emicho Gambieras",
ring1="Petrov Ring", ring2="Rajas Ring",
ear1="Cessance Earring", ear2="Brutal Earring"}
sets.engaged.Apocalypse.HighAcc = {
ammo="Ginsen",
head=Val_STP_head, body="Acro surcoat",
back=Ank_DA, neck="Subtlety spec.",
hands="Emicho gauntlets", waist="Kentarch Belt +1",
legs=Ody_STP_legs, feet="Emicho Gambieras",
ring1="Cacoethic Ring +1", ring2="Rajas Ring",
ear1="Cessance Earring", ear2="Brutal Earring"}
--Engaged PDT
sets.engaged.PDT = {
ammo="Ginsen",
head="Sulevia's Mask +1", body="Sulevia's Platemail",
back="Solemnity cape", neck="Twilight Torque",
hands="Sulevia's Gauntlets +1", waist="Pya'ekue Belt",
legs=Ody_STP_legs,feet="Sulevia's leggings +1",
ring1="Petrov Ring", ring2="Rajas Ring",
ear1="Cessance Earring", ear2="Brutal Earring"}
sets.engaged.LowAcc.PDT = set_combine(sets.engaged.PDT, {
neck="Sanctity Necklace", back=Ank_STP})
sets.engaged.MidAcc.PDT = set_combine(sets.engaged.PDT, {
neck="Sanctity Necklace", back=Ank_STP})
sets.engaged.HighAcc.PDT = set_combine(sets.engaged.PDT, {
neck="Sanctity Necklace", back=Ank_STP})
-- Weaponskill sets
sets.precast.WS = {
ammo="Seething Bomblet +1",
head="Sulevia's mask +1", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring", ring2="Ifrit Ring",
ear1="Ishvara Earring", ear2="Moonshade Earring"}
sets.precast.WS.Acc = set_combine(sets.precast.WS, {
head="Argosy Celata", body="Sulevia's platemail",
hands=Ody_WSacc_hands,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring"})
-- Catastrophe - FTP 2.75 - STR 40%, INT 40% - WSdmg%- 1-2 Hit WS ok.
-- Darkness/Gravitation
sets.precast.WS['Catastrophe'] = set_combine(sets.precast.WS, {
ammo="Seething Bomblet +1",
head="Argosy celata", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring", ring2="Ifrit Ring",
ear1="Ishvara Earring", ear2="Moonshade Earring"})
sets.precast.WS['Catastrophe'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body="Sulevia's platemail",
hands=Ody_WSacc_hands,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring", ear2="Moonshade Earring"})
-- Cross Reaper - FTP 2.75 - STR 40%, INT 40% - WSdmg%- 1-2 Hit WS ok.
-- Darkness/Gravitation
sets.precast.WS['Cross Reaper'] = set_combine(sets.precast.WS, {
ammo="Ginsen",
head="Argosy celata", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring", ring2="Ifrit Ring",
ear1="Ishvara Earring", ear2="Moonshade Earring"})
sets.precast.WS['Cross Reaper'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body=Val_DA_body,
legs=Ody_WSacc_legs,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring"})
-- Entropy - FTP 0.75, 1.25, 2.0, - INT 85%
-- Gravitation/Reverberation
sets.precast.WS['Entropy'] = set_combine(sets.precast.WS, {
ammo="Pemphredo Tathlum",
head="Sulveia's Mask +1", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Shiva Ring", ring2="Shiva Ring",
ear1="Cessance Earring", ear2="Moonshade Earring"})
sets.precast.WS['Entropy'].Acc = set_combine(sets.precast.WS.Acc, {
head="Sulveia's Mask +1", body="Sulevia's platemail",
legs=Ody_WSacc_legs,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring"})
-- Insurgency - FTP 0.5, 3.25, 6.0 - STR 20%, INT 20%
-- Fusion/Compression
sets.precast.WS['Insurgency'] = set_combine(sets.precast.WS, {
ammo="Ginsen",
head=Val_WSdmg_head, body=Ody_WSdmg_body,
back=Ank_DA, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring +1", ring2="Ifrit Ring +1",
ear1="Telos Earring", ear2="Moonshade Earring"})
sets.precast.WS['Insurgency'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body=Val_DA_body,
legs=Ody_WSacc_legs,
ring1="Ramuh Ring +1", ring2="Ramuh Ring +1",
ear1="Telos Earring"})
-- Quietus - FTP 3.0, - STR 60% MND 60% - Triple Dmg, Ignores Defense
-- Darkness/Distortion
sets.precast.WS['Quietus'] = set_combine(sets.precast.WS, {
ammo="Ginsen",
head=Val_WSdmg_head, body=Ody_WSdmg_body,
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring +1", ring2="Ifrit Ring +1",
ear1="Ishvara Earring", ear2="Moonshade Earring"})
sets.precast.WS['Quietus'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body=Val_DA_body,
legs=Ody_WSacc_legs,
ring1="Ramuh Ring +1", ring2="Ramuh Ring +1",
ear1="Telos Earring"})
-- Vorpal Scythe - FTP 1.0 - STR 100% - Singe Hit Crit
-- Transfixion/Scission
sets.precast.WS['Vorpal Scythe'] = set_combine(sets.precast.WS, {
ammo="Ginsen",
head="Argosy Celata", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring", ring2="Ifrit Ring",
ear1="Ishvara Earring", ear2="Moonshade Earring"})
sets.precast.WS['Vorpal Scythe'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body="Sulevia's platemail",
legs=Ody_WSacc_legs,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring"})
-- Guillotine - FTP 0.875 - STR 30% MND 50%
-- Induration
sets.precast.WS['Guillotine'] = set_combine(sets.precast.WS, {
ammo="Ginsen",
head="Argosy Celata", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring", ring2="Ifrit Ring",
ear1="Cessance Earring", ear2="Moonshade Earring"})
sets.precast.WS['Guillotine'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body="Sulevia's platemail",
legs=Ody_WSacc_legs,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring"})
-- Spiral Hell - FTP 1.375, 2.75, 4.75, - STR 50% INT 50%
-- Distortion/Scission
sets.precast.WS['Spiral Hell'] = set_combine(sets.precast.WS, {
ammo="Ginsen",
head="Argosy celata", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring", ring2="Ifrit Ring",
ear1="Ishvara Earring", ear2="Moonshade Earring"})
sets.precast.WS['Spiral Hell'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body="Sulevia's platemail",
legs=Ody_WSacc_legs,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring"})
-- Resolution - FTP .71, 1.5, 2.25, - STR 85%
-- Fragmentation/Scission
sets.precast.WS['Resolution'] = {
ammo="Ginsen",
head=Val_WSdmg_head, body=Ody_WSdmg_body,
back=Ank_DA, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring +1", ring2="Ifrit Ring +1",
ear1="Telos Earring", ear2="Moonshade Earring"}
sets.precast.WS['Resolution'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body=Val_DA_body,
legs=Ody_WSacc_legs,
ring1="Ramuh Ring +1", ring2="Ramuh Ring +1",
ear1="Telos Earring"})
-- Torcleaver - FTP 4.75, 7.5, 10, - VIT 80%
-- Light/Distortion
sets.precast.WS['Torcleaver'] = {
ammo="Seething Bomblet +1",
head="Argosy celata", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs="Argosy breeches", feet="Sulevia's Leggings +1",
ring1="Titan Ring", ring2="Terrasoul Ring",
ear1="Ishvara Earring", ear2="Moonshade Earring"}
sets.precast.WS['Torcleaver'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body="Sulevia's platemail",
legs=Ody_WSacc_legs,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring"})
end
-- Job-specific hooks for standard casting events.
function job_midcast(spell, action, spellMap, eventArgs)
end
-- Called when the player's status changes.
function job_state_change(field, new_value, old_value)
end
function update_combat_form()
-- Check Weapontype
if Apoc_weapons:contains(player.equipment.main) then
state.CombatForm:set('Apocalypse')
else
state.CombatForm:reset()
end
end
-- 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_combat_form()
end
function job_buff_change(buff, gain)
if buff == "Aftermath" then
handle_equipping_gear(player.status)
end
if buff == "Souleater" then
handle_equipping_gear(player.status)
end
if buff == "Doom" then
handle_equipping_gear(player.status)
end
if buff == "Dark Seal" then
handle_equipping_gear(player.status)
end
if buff == "Last Resort" then
handle_equipping_gear(player.status)
end
end
function customize_idle_set(idleSet)
if player.mpp < 51 then
return set_combine(idleSet, sets.latent_refresh)
end
if state.Buff.Doom then
return set_combine(idleSet, sets.Doom)
else
return idleSet
end
end
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
if state.Buff.Aftermath then
return set_combine(meleeSet, sets.Aftermath)
end
if state.Buff.Souleater then
return set_combine(meleeSet, sets.Souleater)
end
if state.Buff.Doom then
return set_combine(meleeSet, sets.Doom)
end
if state.Buff['Dark Seal'] then
return set_combine(meleeSet, sets['Dark Seal'])
end
if state.Buff['Last Resort'] then
return set_combine(meleeSet, sets['Last Resort'])
else
return meleeSet
end
end
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
if spell.skill == 'Elemental Magic' and default_spell_map ~= 'ElementalEnfeeble' then
if LowTierNuke:contains(spell.english) then
return 'LowTierNuke'
else
return 'HighTierNuke'
end
end
end
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
if spellMap == 'Cure' and spell.target.type == 'SELF' then
equip(sets.midcast.CureSelf)
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, 9)
elseif player.sub_job == 'NIN' then
set_macro_page(1, 9)
elseif player.sub_job == 'RDM' then
set_macro_page(1, 9)
elseif player.sub_job == 'THF' then
set_macro_page(1, 9)
else
set_macro_page(1, 9)
end
end
Asura.Chiaia
VIP
Server: Asura
Game: FFXI
Posts: 1656
By Asura.Chiaia 2016-08-29 18:07:58
Could anyone tell me why my Valorous mask wont switch into my Engaged.Apocalypse sets in the lua i've edited?
Using the following:
Val_STP_head = { name="Valorous Mask", augments={'Accuracy+24 Attack+32','"Store TP"+5','AGI+4',}}
and head=Val_STP_head in the sets.
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
include('Mote-Include.lua')
end
-- //gs debugmode
-- //gs showswaps
function binds_on_load()
-- F9-F12
send_command('bind f9 gs c cycle OffenseMode')
send_command('bind f10 gs c cycle HybridMode')
send_command('bind f11 gs c cycle CastingMode')
send_command('bind f12 gs c cycle IdleMode')
-- ALT F9-12
send_command('bind !f9 gs c update user')
send_command('bind !f10 gs c cycle RangedMode')
send_command('bind !f11 gs c cycle WeaponskillMode')
send_command('bind !f12 gs c cycle Kiting')
end
-- Setup vars that are user-independent.
function job_setup()
state.Buff.Aftermath = buffactive.Aftermath or false
state.Buff.Souleater = buffactive.Souleater or false
state.Buff.Doom = buffactive.Doom or false
state.Buff['Dark Seal'] = buffactive['Dark Seal'] or false
state.Buff['Last Resort'] = buffactive['Last Resort'] or false
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
state.OffenseMode:options('Normal', 'LowAcc', 'MidAcc', 'HighAcc')
state.WeaponskillMode:options('Normal', 'Acc')
state.HybridMode:options('Normal', 'PDT')
state.CastingMode:options('Normal', 'Resistant')
state.IdleMode:options('Normal','PDT')
state.PhysicalDefenseMode:options('PDT', 'MDT')
Apoc_weapons = S{'Apocalypse'}
LowTierNuke = 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'}
update_combat_form()
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function file_unload()
if binds_on_unload then
binds_on_unload()
end
end
-- Define sets and vars used by this job file.
function init_gear_sets()
-- Augmented Gear
-- Back
Ank_STP = { name="Ankou's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Store TP"+10',}}
Ank_WSdmg = { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','Weapon skill damage +10%',}}
Ank_DA = { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}}
-- Multi Hit
-- Valorous
Val_DA_head = { name="Valorous Mask", augments={'Accuracy+27','"Dbl.Atk."+5','AGI+3',}}
Val_DA_body = { name="Valorous Mail", augments={'Accuracy+23 Attack+23','"Dbl.Atk."+1','VIT+4','Accuracy+12','Attack+11',}}
Val_QA_body = { name="Valorous Mail", augments={'Pet: VIT+1','Pet: DEX+4','Quadruple Attack +2','Mag. Acc.+8 "Mag.Atk.Bns."+8',}}
-- Odyssean
Ody_QA_legs ={ name="Odyssean Cuisses", augments={'MND+8','Pet: Accuracy+24 Pet: Rng. Acc.+24','Quadruple Attack +1','Accuracy+20 Attack+20','Mag. Acc.+1 "Mag.Atk.Bns."+1',}}
-- STP
-- Valorous
Val_STP_head = { name="Valorous Mask", augments={'Accuracy+24 Attack+32','"Store TP"+5','AGI+4',}}
-- Odyssean
Ody_STP_legs = { name="Odyssean Cuisses", augments={'Accuracy+14','"Store TP"+4','STR+5',}}
--WSdmg
-- Valorous
Val_WSdmg_head = { name="Valorous Mask", augments={'Attack+28','Weapon skill damage +5%','STR+9','Accuracy+9',}}
Val_WSdmg_legs = { name="Valor. Hose", augments={'Accuracy+10','Weapon skill damage +3%','DEX+2','Mag. Acc.+22',}}
-- Odyssean
Ody_WSdmg_body = { name="Odyss. Chestplate", augments={'Accuracy+24 Attack+24','Weapon skill damage +3%','VIT+3','Accuracy+6',}}
Ody_WSdmg_hands = { name="Odyssean Gauntlets", augments={'Accuracy+27 Attack+11','Weapon skill damage +3%','DEX+4',}}
-- STR ACC ATK MISC
-- Valorous
Val_STRpdt_head = { name="Valorous Mask", augments={'Accuracy+11 Attack+11','Magic dmg. taken -3%','STR+6','Accuracy+11','Attack+9',}}
Val_STR_head = { name="Valorous Mask", augments={'Accuracy+24 Attack+24','STR+6','Accuracy+4','Attack+2',}}
Val_STRpdt_hands = { name="Valorous Mitts", augments={'Accuracy+23 Attack+23','Phys. dmg. taken -1%','STR+7','Attack+7',}}
-- DEX ACC ATK MISC
-- Valorous
Val_DEX_legs = { name="Valor. Hose", augments={'Accuracy+24 Attack+24','DEX+15',}}
-- WSacc
--Valorous
Val_WSacc_legs = { name="Valor. Hose", augments={'Accuracy+22 Attack+22','Weapon Skill Acc.+3','DEX+9','Accuracy+7','Attack+5',}}
-- Odyssean
Ody_WSacc_legs = { name="Odyssean Cuisses", augments={'Accuracy+22 Attack+22','Weapon Skill Acc.+15','STR+10','Attack+15',}}
Ody_WSacc_hands = { name="Odyssean Gauntlets", augments={'Accuracy+26 Attack+4','Weapon Skill Acc.+15','CHR+12',}}
-- Crit Hit Valorous
Val_Crit_head = { name="Valorous Mask", augments={'Accuracy+20','Crit. hit damage +3%','DEX+3','Attack+9',}}
Val_Crit_hands = { name="Valorous Mitts", augments={'Attack+15','Crit. hit damage +3%','VIT+11','Accuracy+10',}}
Val_Crit_legs = { name="Valor. Hose", augments={'Accuracy+14','Crit. hit damage +3%','MND+3','Attack+14',}}
-- Fast Cast Odyssean
Ody_FC_body = { name="Odyss. Chestplate", augments={'"Fast Cast"+6','MND+1','Mag. Acc.+6','"Mag.Atk.Bns."+6',}}
Ody_FC_feet = { name="Odyssean Greaves", augments={'Mag. Acc.+11','"Fast Cast"+5','MND+1','"Mag.Atk.Bns."+10',}}
Ody_FC_hands = { name="Odyssean Gauntlets", augments={'Accuracy+4 Attack+8','"Fast Cast"+4','VIT+9',}}
-- MAB Odyssean
Ody_MAB_feet = { name="Odyssean Greaves", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','CHR+4','Mag. Acc.+13','"Mag.Atk.Bns."+14',}}
-- DT Odyssean
Ody_DT_head = { name="Odyssean Helm", augments={'Damage taken-3%','VIT+6','Attack+12',}}
Ody_DT_Body = { name="Odyss. Chestplate", augments={'Mag. Acc.+25','Damage taken-3%',}}
Ody_DT_feet = { name="Odyssean Greaves", augments={'Attack+13','Damage taken-4%','VIT+8',}}
-- Precast sets
sets.precast.JA['Diabolic Eye'] = {hands="Fallen's Finger Gauntlets +1"}
sets.precast.JA['Arcane Circle'] = {feet="Ignominy Sollerets"}
sets.precast.JA['Nether Void'] = {legs="Bale Flanchard +2"}
sets.precast.JA['Souleater'] = {head="Chaos Burgeonet"}
sets.precast.JA['Last Resort'] = {feet="Fallen's Sollerets +1", back=Ank_STP}
sets.precast.JA['Weapon Bash'] = {hands="Ignominy Gauntlets +1"}
sets.precast.JA['Blood Weapon'] = {body="Fallen's Cuirass +1"}
-- Waltz set (chr and vit)
sets.precast.Waltz = {}
-- Fast cast sets for spells
sets.precast.FC = {
ammo="Impatiens",
head="Carmine Mask", body=Ody_FC_body,
back=Ank_STP, neck="Orunmila's Torque",
hands=Ody_FC_hands, waist="Pya'ekue Belt",
legs="Eschite Cuisses", feet="Carmine greaves",
ring1="Lebeche Ring", ring2="Prolix Ring",
ear1="Enchanter Earring +1", ear2="Loquacious Earring"}
sets.precast.FC['Dark Magic'] = sets.precast.FC
sets.precast.FC.Impact = set_combine(sets.precast.FC, {
head=empty,body="Twilight Cloak"})
-- Midcast Sets
sets.midcast.FastRecast = {
ammo="Impatiens",
head="Carmine Mask", body=Ody_FC_body,
back=Ank_STP, neck="Orunmila's Torque",
hands="Leyline Gloves", waist="Tempus Fugit",
legs="Eschite Cuisses", feet=Ody_FC_feet,
ring1="Lebeche Ring", ring2="Prolix Ring",
ear1="Enchanter Earring +1", ear2="Loquacious Earring"}
-- Specific spells
sets.midcast['Dark Magic'] = {
ammo="Pemphredo Tathlum",
head="Pixie Hairpin +1", body="Demon's Harness",
back="Niht Mantle", neck="Deceiver's Torque",
hands="Fallen's Finger Gauntlets +1", waist="Casso Sash",
legs="Eschite Cuisses", feet="Heathen's Sollerets",
ring1="Evanescence Ring", Ring2="Archon Ring",
ear1="Dark Earring", ear2="Gwati Earring"}
sets.midcast['Enfeebling Magic'] = {
ammo="Quartz Tathlum +1",
head="Befouled Crown", body="Carmine Scale Mail",
back="Chuparrosa Mantle", neck="Incanter's Torque",
hands="Leyline Gloves", waist="Eschan Stone",
legs="Eschite Cuisses", feet=Ody_FC_feet,
ring1="Globidonta Ring", Ring2="Sangoma Ring",
ear1="Enchanter Earring +1", ear2="Gwati Earring"}
sets.midcast['Dread Spikes'] = {
ammo="Impatiens",
head="Loess barbuta", body="Bale Cuirass +2",
back="Strendu Mantle", neck="Deceiver's Torque",
hands="Fallen's Finger Gauntlets +1", waist="Casso Sash",
legs="Eschite Cuisses", feet="Heathen's Sollerets +1",
ring1="Meridian Ring", Ring2="Etana Ring",
ear1="Thureous Earring", ear2="Eabani Earring"}
sets.midcast.Absorb = {
ammo="Pemphredo Tathlum",
head="Pixie Hairpin +1", body="Demon's Harness",
back="Chuparrosa Mantle", neck="Deceiver's Torque",
hands="Pavor gauntlets", waist="Casso Sash",
legs="Eschite Cuisses", feet="Heathen's Sollerets",
ring1="Evanescence Ring", Ring2="Archon Ring",
ear1="Dark Earring", ear2="Gwati Earring"}
sets.midcast.Absorb.Resistant = {
ammo="Pemphredo Tathlum",
head="Carmine Mask", body="Carmine Scale Mail",
back="Chuparrosa Mantle", neck="Incanter's Torque",
hands="Pavor Gauntlets", waist="Eschan Stone",
legs="Eschite Cuisses", feet=Ody_MAB_feet,
Ring1="Evanescence Ring", Ring2="Sangoma Ring",
ear1="Enchanter Earring +1", ear2="Gwati Earring"}
sets.midcast['Absorb-TP'] = set_combine(sets.midcast.Absorb, {hands="Bale Gauntlets +2"})
sets.midcast['Absorb-TP'].Resistant = set_combine(sets.midcast.Absorb.Resistant, {hands="Bale Gauntlets +2"})
sets.midcast['Absorb-STR'] = sets.midcast.Absorb
sets.midcast['Absorb-STR'].Resistant = sets.midcast.Absorb.Resistant
sets.midcast['Absorb-DEX'] = sets.midcast.Absorb
sets.midcast['Absorb-DEX'].Resistant = sets.midcast.Absorb.Resistant
sets.midcast['Absorb-AGI'] = sets.midcast.Absorb
sets.midcast['Absorb-AGI'].Resistant = sets.midcast.Absorb.Resistant
sets.midcast['Absorb-MND'] = sets.midcast.Absorb
sets.midcast['Absorb-MND'].Resistant = sets.midcast.Absorb.Resistant
sets.midcast['Absorb-VIT'] = sets.midcast.Absorb
sets.midcast['Absorb-VIT'].Resistant = sets.midcast.Absorb.Resistant
sets.midcast['Absorb-Acc'] = sets.midcast.Absorb
sets.midcast['Absorb-Acc'].Resistant = sets.midcast.Absorb.Resistant
sets.midcast['Absorb-Attri'] = sets.midcast.Absorb
sets.midcast['Absorb-Attri'].Resistant = sets.midcast.Absorb.Resistant
sets.midcast.Stun = {
ammo="Impatiens",
head="Carmine Mask", body=Ody_FC_body,
back="Niht Mantle", neck="Orunmila's Torque",
hands="Leyline Gloves", waist="Tempus Fugit",
legs="Eschite Cuisses", feet=Ody_FC_feet,
Ring1="Evanescence Ring", Ring2="Sangoma Ring",
ear1="Enchanter Earring +1", ear2="Gwati Earring"}
sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {
head="Pixie Hairpin +1", ring2="Archon Ring",
hands="Fallen's Finger Gauntlets +1",
back="Niht Mantle", waist="Casso Sash"})
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Impact = set_combine(sets.midcast['Dark Magic'], {head=empty, body="Twilight Cloak"})
-- Elemental Magic sets are default for handling low-tier nukes.
sets.midcast.LowTierNuke = {
ammo="Pemphredo Tathlum",
head="Carmine Mask", body="Carmine Scale Mail",
back="Izdubar Mantle", neck="Sanctity Necklace",
hands="Fallen's Finger Gauntlets +1", waist="Salire Belt",
legs="Eschite Cuisses",feet="Heathen's sollerets",
ring1="Shiva Ring", ring2="Etana Ring",
ear1="Halasz Earring", ear2="Friomisi Earring"}
sets.midcast.LowTierNuke.Resistant = {
ammo="Pemphredo Tathlum",
head="Carmine Mask", body="Carmine Scale Mail",
back="Izdubar Mantle", neck="Sanctity Necklace",
hands="Fallen's Finger Gauntlets +1", waist="Salire Belt",
legs="Eschite Cuisses",feet="Heathen's sollerets",
ring1="Shiva Ring", ring2="Etana Ring",
ear1="Lifestorm Earring", ear2="Psystorm Earring"}
-- Custom classes for high-tier nukes.
sets.midcast.HighTierNuke = sets.midcast.LowTierNuke
sets.midcast.HighTierNuke.Resistant = sets.midcast.LowTierNuke.Resistant
-- Resting sets
sets.resting = {
ammo="Ginsen",
head="", body="Lugra Cloak +1",
back="Strendu Mantle", neck="Sanctity Necklace",
hands="Sulevia's Gauntlets +1", waist="Flume Belt",
legs="Eschite Cuisses",feet="Sulevia's leggings +1",
ring1="Sheltered Ring", ring2="Paguroidea Ring",
ear1="Infused Earring", ear2="Darkness Earring"}
-- Idle sets
sets.idle = {
ammo="Seething Bomblet +1",
head="", body="Lugra Cloak +1",
back="Solemnity cape", neck="Sanctity Necklace",
hands="Sulevia's Gauntlets +1", waist="Flume Belt",
legs="Sulevia's cuisses", feet="Sulevia's leggings +1",
ring1="Sheltered Ring", ring2="Paguroidea Ring",
ear1="Infused earring", ear2="Cessance Earring"}
sets.idle.PDT = {
ammo="Seething Bomblet +1",
head="Loess barbuta", body="Sulevia's Platemail",
back="Solemnity cape", neck="Twilight Torque",
hands="Sulevia's Gauntlets +1", waist="Flume Belt",
legs="Sulevia's Cuisses", feet="Sulevia's leggings +1",
ring1="Gelatinous Ring", ring2="Dark Ring",
ear1="Darkness earring", ear2="Darkness earring"}
sets.idle.Town = {
ammo="Seething Bomblet +1",
head="Valorous Mask", body="Sulevia's Platemail",
back=Ank_WSdmg, neck="Sanctity necklace",
hands="Sulevia's Gauntlets +1", waist="Fotia Belt",
legs="Crimson cuisses", feet="Sulevia's leggings +1",
ring1="Sheltered Ring", ring2="Paguroidea Ring",
ear1="Infused earring", ear2="Cessance Earring"}
sets.idle.Weak = {
ammo="Seething Bomblet +1",
head="Twilight Helm", body="Twilight Mail",
back="Solemnity cape", neck="Twilight Torque",
hands="Sulevia's Gauntlets +1", waist="Flume Belt",
legs="Sulevia's Cuisses", feet="Sulevia's leggings +1",
ring1="Gelatinous Ring", ring2="Dark Ring",
ear1="Darkness earring", ear2="Darkness earring"}
sets.Kiting = {legs="Crimson cuisses"}
sets.latent_refresh = {waist="Fucho-no-Obi"}
-- Custom buff sets
sets.Aftermath = {}
sets.Souleater = {head="Chaos Burgeonet"}
sets.Doom = {head="Twilight Helm", body="Twilight Mail"}
sets['Dark Seal'] = {}
sets['Last Resort'] = {}
-- Scythe Darkness:
-- Cross Reaper > Insurgency > Entropy > Cross Reaper > Quietus
-- Catastrophe > Catastrophe
-- Quietus > Quietus
-- Entropy > Entropy
-- Entropy > Cross Reaper - Strong.
-- Scythe Light:
-- CDC > Insurgency
-- Other:
-- CDC > Entropy > Entropy
-- CDC > Catastrophe
-- Apoc 513 Delay - /sam gives 15stp.
--5 hit
-- tp 205 per hit. 30 stp +15 = 5 hit = 1025tp
-- tp 220 per hit. 40 stp +15 = 5 hit = 1100tp
-- tp 234 per hit. 50 stp +15 = 5 hit = 1170tp
-- tp 248 per hit. 60 stp +15 = 5 hit = 1240tp
--4 hit
-- tp 251 per hit. 62 stp +15 = 4 hit = 1004tp
-- Anguta 528 Delay 10 stp
-- 5 hit
-- tp 211 per hit. 30 stp +15 = 5 hit = 1055tp
-- tp 226 per hit. 40 stp +15 = 5 hit = 1130tp
-- tp 240 per hit. 50 stp +15 = 5 hit = 1200tp
-- 4 hit
-- tp 258 per hit. 62 stp +15 = 4 hit = 1032tp
-- Need 77 STP on gear to hit 1032TP /war.
--Engaged Anguta
-- 1035ACC 64STP
sets.engaged = {
ammo="Ginsen",
head=Val_DA_head, body=Val_QA_body,
back=Ank_STP, neck="Ganesha's Mala",
hands="Argosy Mufflers", waist="Windbuffet Belt +1",
legs=Ody_QA_legs, feet=Val_STP_feet,
ring1="Petrov Ring", ring2="Hetairoi Ring",
ear1="Telos Earring", ear2="Brutal Earring"}
-- 1086ACC 65STP
sets.engaged.LowAcc = {
ammo="Ginsen",
head="Argosy Celata", body=Val_DA_body,
back=Ank_STP, neck="Ganesha's Mala",
hands="Argosy Mufflers", waist="Windbuffet Belt +1",
legs=Ody_QA_legs, feet=Val_STP_feet,
ring1="Ramuh Ring +1", ring2="Hetairoi Ring",
ear1="Telos Earring", ear2="Brutal Earring"}
-- 1149ACC 62STP
sets.engaged.MidAcc = {
ammo="Seething Bomblet +1",
head="Argosy Celata", body=Val_DA_body,
back=Ank_STP, neck="Sanctity Necklace",
hands=Val_STRpdt_hands, waist="Olseni Belt",
legs=Ody_QA_legs, feet=Val_STP_feet,
ring1="Ramuh Ring +1", ring2="Hetairoi Ring",
ear1="Telos Earring", ear2="Dignitary's Earring"}
-- 1173ACC 64STP
sets.engaged.HighAcc = {
ammo="Seething Bomblet +1",
head="Argosy Celata", body=Val_DA_body,
back=Ank_STP, neck="Sanctity Necklace",
hands=Val_STP_hands, waist="Olseni Belt",
legs="Carmine Cuisses +1", feet=Val_STP_feet,
ring1="Ramuh Ring +1", ring2="Ramuh Ring +1",
ear1="Telos Earring", ear2="Dignitary's Earring"}
-- Engaged Apocalypse
sets.engaged.Apocalypse = {
ammo="Ginsen",
head=Val_STP_head, body="Acro surcoat",
back=Ank_DA, neck="Asperity necklace",
hands="Emicho gauntlets", waist="Windbuffet Belt",
legs=Ody_STP_legs, feet="Emicho Gambieras",
ring1="Petrov Ring", ring2="Rajas Ring",
ear1="Cessance Earring", ear2="Brutal Earring"}
sets.engaged.Apocalypse.LowAcc = {
ammo="Ginsen",
head=Val_STP_head, body="Acro surcoat",
back=Ank_DA, neck="Asperity necklace",
hands="Emicho gauntlets", waist="Windbuffet Belt",
legs=Ody_STP_legs, feet="Emicho Gambieras",
ring1="Petrov Ring", ring2="Rajas Ring",
ear1="Cessance Earring", ear2="Brutal Earring"}
sets.engaged.Apocalypse.MidAcc = {
ammo="Ginsen",
head=Val_STP_head, body="Acro surcoat",
back=Ank_DA, neck="Lissome necklace",
hands="Emicho gauntlets", waist="Kentarch Belt +1",
legs=Ody_STP_legs, feet="Emicho Gambieras",
ring1="Petrov Ring", ring2="Rajas Ring",
ear1="Cessance Earring", ear2="Brutal Earring"}
sets.engaged.Apocalypse.HighAcc = {
ammo="Ginsen",
head=Val_STP_head, body="Acro surcoat",
back=Ank_DA, neck="Subtlety spec.",
hands="Emicho gauntlets", waist="Kentarch Belt +1",
legs=Ody_STP_legs, feet="Emicho Gambieras",
ring1="Cacoethic Ring +1", ring2="Rajas Ring",
ear1="Cessance Earring", ear2="Brutal Earring"}
--Engaged PDT
sets.engaged.PDT = {
ammo="Ginsen",
head="Sulevia's Mask +1", body="Sulevia's Platemail",
back="Solemnity cape", neck="Twilight Torque",
hands="Sulevia's Gauntlets +1", waist="Pya'ekue Belt",
legs=Ody_STP_legs,feet="Sulevia's leggings +1",
ring1="Petrov Ring", ring2="Rajas Ring",
ear1="Cessance Earring", ear2="Brutal Earring"}
sets.engaged.LowAcc.PDT = set_combine(sets.engaged.PDT, {
neck="Sanctity Necklace", back=Ank_STP})
sets.engaged.MidAcc.PDT = set_combine(sets.engaged.PDT, {
neck="Sanctity Necklace", back=Ank_STP})
sets.engaged.HighAcc.PDT = set_combine(sets.engaged.PDT, {
neck="Sanctity Necklace", back=Ank_STP})
-- Weaponskill sets
sets.precast.WS = {
ammo="Seething Bomblet +1",
head="Sulevia's mask +1", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring", ring2="Ifrit Ring",
ear1="Ishvara Earring", ear2="Moonshade Earring"}
sets.precast.WS.Acc = set_combine(sets.precast.WS, {
head="Argosy Celata", body="Sulevia's platemail",
hands=Ody_WSacc_hands,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring"})
-- Catastrophe - FTP 2.75 - STR 40%, INT 40% - WSdmg%- 1-2 Hit WS ok.
-- Darkness/Gravitation
sets.precast.WS['Catastrophe'] = set_combine(sets.precast.WS, {
ammo="Seething Bomblet +1",
head="Argosy celata", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring", ring2="Ifrit Ring",
ear1="Ishvara Earring", ear2="Moonshade Earring"})
sets.precast.WS['Catastrophe'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body="Sulevia's platemail",
hands=Ody_WSacc_hands,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring", ear2="Moonshade Earring"})
-- Cross Reaper - FTP 2.75 - STR 40%, INT 40% - WSdmg%- 1-2 Hit WS ok.
-- Darkness/Gravitation
sets.precast.WS['Cross Reaper'] = set_combine(sets.precast.WS, {
ammo="Ginsen",
head="Argosy celata", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring", ring2="Ifrit Ring",
ear1="Ishvara Earring", ear2="Moonshade Earring"})
sets.precast.WS['Cross Reaper'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body=Val_DA_body,
legs=Ody_WSacc_legs,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring"})
-- Entropy - FTP 0.75, 1.25, 2.0, - INT 85%
-- Gravitation/Reverberation
sets.precast.WS['Entropy'] = set_combine(sets.precast.WS, {
ammo="Pemphredo Tathlum",
head="Sulveia's Mask +1", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Shiva Ring", ring2="Shiva Ring",
ear1="Cessance Earring", ear2="Moonshade Earring"})
sets.precast.WS['Entropy'].Acc = set_combine(sets.precast.WS.Acc, {
head="Sulveia's Mask +1", body="Sulevia's platemail",
legs=Ody_WSacc_legs,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring"})
-- Insurgency - FTP 0.5, 3.25, 6.0 - STR 20%, INT 20%
-- Fusion/Compression
sets.precast.WS['Insurgency'] = set_combine(sets.precast.WS, {
ammo="Ginsen",
head=Val_WSdmg_head, body=Ody_WSdmg_body,
back=Ank_DA, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring +1", ring2="Ifrit Ring +1",
ear1="Telos Earring", ear2="Moonshade Earring"})
sets.precast.WS['Insurgency'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body=Val_DA_body,
legs=Ody_WSacc_legs,
ring1="Ramuh Ring +1", ring2="Ramuh Ring +1",
ear1="Telos Earring"})
-- Quietus - FTP 3.0, - STR 60% MND 60% - Triple Dmg, Ignores Defense
-- Darkness/Distortion
sets.precast.WS['Quietus'] = set_combine(sets.precast.WS, {
ammo="Ginsen",
head=Val_WSdmg_head, body=Ody_WSdmg_body,
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring +1", ring2="Ifrit Ring +1",
ear1="Ishvara Earring", ear2="Moonshade Earring"})
sets.precast.WS['Quietus'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body=Val_DA_body,
legs=Ody_WSacc_legs,
ring1="Ramuh Ring +1", ring2="Ramuh Ring +1",
ear1="Telos Earring"})
-- Vorpal Scythe - FTP 1.0 - STR 100% - Singe Hit Crit
-- Transfixion/Scission
sets.precast.WS['Vorpal Scythe'] = set_combine(sets.precast.WS, {
ammo="Ginsen",
head="Argosy Celata", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring", ring2="Ifrit Ring",
ear1="Ishvara Earring", ear2="Moonshade Earring"})
sets.precast.WS['Vorpal Scythe'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body="Sulevia's platemail",
legs=Ody_WSacc_legs,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring"})
-- Guillotine - FTP 0.875 - STR 30% MND 50%
-- Induration
sets.precast.WS['Guillotine'] = set_combine(sets.precast.WS, {
ammo="Ginsen",
head="Argosy Celata", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring", ring2="Ifrit Ring",
ear1="Cessance Earring", ear2="Moonshade Earring"})
sets.precast.WS['Guillotine'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body="Sulevia's platemail",
legs=Ody_WSacc_legs,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring"})
-- Spiral Hell - FTP 1.375, 2.75, 4.75, - STR 50% INT 50%
-- Distortion/Scission
sets.precast.WS['Spiral Hell'] = set_combine(sets.precast.WS, {
ammo="Ginsen",
head="Argosy celata", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring", ring2="Ifrit Ring",
ear1="Ishvara Earring", ear2="Moonshade Earring"})
sets.precast.WS['Spiral Hell'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body="Sulevia's platemail",
legs=Ody_WSacc_legs,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring"})
-- Resolution - FTP .71, 1.5, 2.25, - STR 85%
-- Fragmentation/Scission
sets.precast.WS['Resolution'] = {
ammo="Ginsen",
head=Val_WSdmg_head, body=Ody_WSdmg_body,
back=Ank_DA, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs=Val_WSdmg_legs, feet="Sulevia's Leggings +1",
ring1="Ifrit Ring +1", ring2="Ifrit Ring +1",
ear1="Telos Earring", ear2="Moonshade Earring"}
sets.precast.WS['Resolution'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body=Val_DA_body,
legs=Ody_WSacc_legs,
ring1="Ramuh Ring +1", ring2="Ramuh Ring +1",
ear1="Telos Earring"})
-- Torcleaver - FTP 4.75, 7.5, 10, - VIT 80%
-- Light/Distortion
sets.precast.WS['Torcleaver'] = {
ammo="Seething Bomblet +1",
head="Argosy celata", body="Sulevia's platemail",
back=Ank_WSdmg, neck="Fotia Gorget",
hands=Ody_WSdmg_hands, waist="Fotia Belt",
legs="Argosy breeches", feet="Sulevia's Leggings +1",
ring1="Titan Ring", ring2="Terrasoul Ring",
ear1="Ishvara Earring", ear2="Moonshade Earring"}
sets.precast.WS['Torcleaver'].Acc = set_combine(sets.precast.WS.Acc, {
head="Argosy Celata", body="Sulevia's platemail",
legs=Ody_WSacc_legs,
ring1="Ramuh Ring", ring2="Rufescent Ring",
ear1="Cessance Earring"})
end
-- Job-specific hooks for standard casting events.
function job_midcast(spell, action, spellMap, eventArgs)
end
-- Called when the player's status changes.
function job_state_change(field, new_value, old_value)
end
function update_combat_form()
-- Check Weapontype
if Apoc_weapons:contains(player.equipment.main) then
state.CombatForm:set('Apocalypse')
else
state.CombatForm:reset()
end
end
-- 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_combat_form()
end
function job_buff_change(buff, gain)
if buff == "Aftermath" then
handle_equipping_gear(player.status)
end
if buff == "Souleater" then
handle_equipping_gear(player.status)
end
if buff == "Doom" then
handle_equipping_gear(player.status)
end
if buff == "Dark Seal" then
handle_equipping_gear(player.status)
end
if buff == "Last Resort" then
handle_equipping_gear(player.status)
end
end
function customize_idle_set(idleSet)
if player.mpp < 51 then
return set_combine(idleSet, sets.latent_refresh)
end
if state.Buff.Doom then
return set_combine(idleSet, sets.Doom)
else
return idleSet
end
end
-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
if state.Buff.Aftermath then
return set_combine(meleeSet, sets.Aftermath)
end
if state.Buff.Souleater then
return set_combine(meleeSet, sets.Souleater)
end
if state.Buff.Doom then
return set_combine(meleeSet, sets.Doom)
end
if state.Buff['Dark Seal'] then
return set_combine(meleeSet, sets['Dark Seal'])
end
if state.Buff['Last Resort'] then
return set_combine(meleeSet, sets['Last Resort'])
else
return meleeSet
end
end
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
if spell.skill == 'Elemental Magic' and default_spell_map ~= 'ElementalEnfeeble' then
if LowTierNuke:contains(spell.english) then
return 'LowTierNuke'
else
return 'HighTierNuke'
end
end
end
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
if spellMap == 'Cure' and spell.target.type == 'SELF' then
equip(sets.midcast.CureSelf)
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, 9)
elseif player.sub_job == 'NIN' then
set_macro_page(1, 9)
elseif player.sub_job == 'RDM' then
set_macro_page(1, 9)
elseif player.sub_job == 'THF' then
set_macro_page(1, 9)
else
set_macro_page(1, 9)
end
end Because thats not the true values of you aug... equip the head and do //gs export then find the file in the export folder and see what your true augs are.
By BlaTheTaru 2016-08-31 12:36:16
Hi! I am wondering why my Obi isn't swapping in for nukes when I have weather on myself. I'm pretty Gearswap illiterate as far as functions go. Would anyone be able to help me sort this out? I went through all the trouble of farming those things Id like to use them. Thank you.
http://pastebin.com/9rNP4yGu
Server: Bismarck
Game: FFXI
Posts: 1346
By Bismarck.Kuroganashi 2016-08-31 13:33:52
Hi! I am wondering why my Obi isn't swapping in for nukes when I have weather on myself. I'm pretty Gearswap illiterate as far as functions go. Would anyone be able to help me sort this out? I went through all the trouble of farming those things Id like to use them. Thank you.
http://pastebin.com/9rNP4yGu
Input this on your file
Code
-- Run after the general midcast() is done.
function job_post_midcast(spell, action, spellMap, eventArgs)
if spellMap == 'Cure' and spell.target.type == 'SELF' then
equip(sets.self_healing)
end
--if spell.action_type == 'Magic' then
-- apply_grimoire_bonuses(spell, action, spellMap, eventArgs)
--end
if spell.skill == 'Elemental Magic' then
if spell.element == world.day_element or spell.element == world.weather_element then
equip({waist="Hachirin-No-Obi"})
--add_to_chat(8,'----- Hachirin-no-Obi Equipped. -----')
end
end
if spell.skill == 'Elemental Magic' then
if state.MagicBurst.value then
equip(sets.magic_burst)
end
end
if spell.type == "WeaponSkill" then
if spell.element == world.weather_element or spell.element == world.day_element then
--equip({waist="Hachirin-no-Obi"})
--add_to_chat(8,'----- Hachirin-no-Obi Equipped. -----')
end
end
end
[+]
By BlaTheTaru 2016-08-31 19:06:19
Where is a good place to input that in my file?
Ragnarok.Flippant
Server: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-08-31 19:34:29
Your lines 388-403 should already be covering that, albeit in a verbose manner. However, there's two problems:
1. Since those rules are before your magic burst rules, you'd be overwriting it with your MB set (same with what Kuroganashi pasted). You don't have one in there anyway, but you should move it in case you add one later.
2. You have two job_post_midcast functions. The one on 439-443 is overwriting the first one. Delete it entirely (the contents of that one are already in the other one). While we're at it, you also have two job_aftercast functions. You should combine their contents, although I'm fairly certain Mote already takes care of the logic being handled in the one on line 446.
[+]
By BlaTheTaru 2016-08-31 19:53:26
So I deleted lines 439-443 and now my GS does not swap to nuking gear.
Also other than that I have no idea what you're telling me to do, or even if you're telling me anything other than my GS isn't written well.
Please use simple instructions.
Odin.Lygre
Server: Odin
Game: FFXI
Posts: 89
By Odin.Lygre 2016-08-31 20:25:40
Code -------------------------------------------------------------------------------------------------------------------
-- Initialization function that defines sets and variables to be used.
-------------------------------------------------------------------------------------------------------------------
-- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
--[[
Custom commands:
Shorthand versions for each strategem type that uses the version appropriate for
the current Arts.
Light Arts Dark Arts
gs c scholar cost Penury Parsimony
gs c scholar speed Celerity Alacrity
gs c scholar aoe Accession Manifestation
gs c scholar power Rapture Ebullience
gs c scholar duration Perpetuance
gs c scholar accuracy Altruism Focalization
gs c scholar enmity Tranquility Equanimity
gs c scholar skillchain Immanence
gs c scholar addendum Addendum: White Addendum: Black
--]]
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent.
function job_setup()
info.addendumNukes = S{"Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",
"Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
update_active_strategems()
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
send_command('Bind ^i input /ja Immanence <me>')
send_command('Bind ^g input /recast Stratagems <me>')
send_command('Bind ^d input /ja Ebullience <me>')
send_command('Bind ^1 input /ma haste <me>')
send_command('Bind ^2 input /ma Aquaveil <me>')
send_command('Bind ^3 input /ma "Regen V" <me>')
send_command('Bind ^c input /ma "Cure IV" <me>')
send_command('Bind ^m input /ma Manifestation <me>')
send_command('Bind ^s input /ma "Sleep II" <t>')
send_command('Bind ^4 input /ma "Protect V" <me>')
send_command('Bind ^5 input /ma "Shell V" <me>')
send_command('bind ^q gs c cycle CastingMode')
send_command('Bind ^/ input /ma "Paralyze" <t>')
send_command('Bind ^. input /ma "Silence" <t>')
send_command('Bind ^, input /ma "Slow" <t>')
send_command('Bind ^6 input /ma "Phalanx" <me>')
send_command('Bind ^7 input /ma "Klimaform" <me>')
send_command('Bind ^8 input /ma "Thunderstorm II" <me>')
send_command('Bind ^l input /ma "Frazzle" <t>')
-- Options: Override default values
options.CastingModes = {'Normal', 'MagicBurst'}
options.OffenseModes = {'None', 'Normal'}
options.DefenseModes = {'Normal'}
options.WeaponskillModes = {'Normal'}
options.IdleModes = {'Normal', 'PDT', 'Stun'}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'PDT'}
options.MagicalDefenseModes = {'MDT'}
state.OffenseMode = 'None'
state.Defense.PhysicalMode = 'PDT'
info.low_nukes = S{"Stone", "Water", "Aero", "Fire", "Blizzard", "Thunder","Stone II",
"Water II", "Aero II", "Fire II", "Blizzard II", "Thunder II","Sleep II"}
info.mid_nukes = S{"Stone III", "Water III", "Aero III", "Fire III", "Blizzard III", "Thunder III",
"Stone IV", "Water IV", "Aero IV", "Fire IV","Blizzard IV", "Thunder IV",
"Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V",}
gear.macc_hagondes = {name="Hagondes Cuffs", augments={'Phys. dmg. taken -3%','Mag. Acc.+29'}}
gear.RegenBack = {name="Bookworm's Cape", augments={'Int +2', 'Mnd +1', 'Helix eff. Duration +12', '"Regen" potency +10'}}
send_command('bind ^` input /ma Stun <t>')
select_default_macro_book()
end
function job_file_unload()
send_command('unbind ^`')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
gear.RegenBack = {name="Bookworm's Cape", augments={'Int +2', 'Mnd +1', 'Helix eff. Duration +12', '"Regen" potency +10'}}
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Obi --
sets['Lightning'] = {waist="Hachirin-no-Obi"}
sets['Ice'] = {waist="Hachirin-no-Obi"}
sets['Water'] = {waist="Hachirin-no-Obi"}
sets['Fire'] = {waist="Hachirin-no-Obi"}
sets['Earth'] = {waist="Hachirin-no-Obi"}
sets['Wind'] = {waist="Hachirin-no-Obi"}
sets['Light'] = {waist="Hachirin-no-Obi",back="Twilight Cape"}
sets['Dark'] = {waist="Hachirin-no-Obi"}
gear.default.obi_waist = "Hachirin-no-Obi"
gear.default.obi_back = "Bookworm's Cape"
-- Precast Sets
-- Precast sets to enhance JAs
sets.precast.JA['Tabula Rasa'] = {legs="Pedagogy Pants"}
-- Weaponskills --
sets.precast.WS['Cataclysm'] = {main="Akademos",sub="Willpower Grip",ammo="Ghastly Tathlum +1 +1",
head="Pixie hairpin +1",neck="Saevus Pendant +1",left_ear="Barkaro. Earring",right_ear="Friomisi Earring",
body="Amalric Doublet +1",hands=gear.NukingHands,left_ring="Archon Ring",right_ring="Shiva Ring +1",
back="Twilight Cape",waist="Hachirin-no-Obi",legs="Hagondes Pants +1",feet="Amalric Nails +1",}
sets.precast.WS['Omniscience'] = {main="Akademos",sub="Willpower Grip",ammo="Hydrocera",
head="Pixie hairpin +1",neck="Saevus Pendant +1",left_ear="Barkaro. Earring",right_ear="Friomisi Earring",
body="Amalric Doublet +1",hands=gear.NukingHands,left_ring="Archon Ring",right_ring="Shiva Ring +1",
back=gear.RegenCape,waist="Refoccilation Stone",legs="Hagondes Pants +1",feet="Amalric Nails +1",}
sets.precast.WS['Myrkr'] = {main="Akademos",sub="Willpower Grip",ammo="Psilomene",
head="Kaabnax Hat",neck="Dualism Collar +1",left_ear="Etiolation Earring",right_ear="Influx Earring",
body="Weather. Robe +1",hands="Otomi Gloves",left_ring="Mephitas's Ring +1",right_ring="Mephitas's Ring",
back="Pahtli Cape",waist="Shinjutsu-no-obi +1",legs="Amalric Slops",feet="Llwyd's Clogs"}
sets.precast.WS['Shattersoul'] ={main="Akademos",sub="Willpower Grip",ammo="Hasty Pinion +1",
head="Gende. Caubeen +1",neck="Fotia Gorget",left_ear="Genmei Earring",right_ear="Impregnable Earring",
body="Onca Suit",hands=empty,left_ring="Rajas Ring",right_ring="Patricius Ring",
back="Umbra Cape",waist="Fotia Belt",legs=empty,feet=empty}
sets.precast.WS['Shell Crusher'] ={main="Akademos",sub="Willpower Grip",ammo="Hasty Pinion +1",
head="Gende. Caubeen +1",neck="Fotia Gorget",left_ear="Genmei Earring",right_ear="Impregnable Earring",
body="Onca Suit",hands=empty,left_ring="Rajas Ring",right_ring="Patricius Ring",
back="Umbra Cape",waist="Fotia Belt",legs=empty,feet=empty}
sets.precast.WS['Retribution'] ={main="Akademos",sub="Willpower Grip",ammo="Hasty Pinion +1",
head="Gende. Caubeen +1",neck="Fotia Gorget",left_ear="Genmei Earring",right_ear="Impregnable Earring",
body="Onca Suit",hands=empty,left_ring="Rajas Ring",right_ring="Patricius Ring",
back="Umbra Cape",waist="Fotia Belt",legs=empty,feet=empty}
sets.precast.WS['Heavy Swing'] ={main="Akademos",sub="Willpower Grip",ammo="Hasty Pinion +1",
head="Gende. Caubeen +1",neck="Fotia Gorget",left_ear="Genmei Earring",right_ear="Impregnable Earring",
body="Onca Suit",hands=empty,left_ring="Rajas Ring",right_ring="Patricius Ring",
back="Umbra Cape",waist="Fotia Belt",legs=empty,feet=empty}
sets.precast.WS['Spirit Taker'] = {main="Akademos",sub="Willpower Grip",ammo="Ghastly Tathlum +1 +1",
head="Welkin Crown",neck="Fotia Gorget",left_ear="Barkaro. Earring",right_ear="Friomisi Earring",
body="Amalric Doublet +1",hands=gear.NukingHands,left_ring="Shiva Ring +1",right_ring="Shiva Ring +1",
back=gear.HelixCape,waist="Fotia Belt",legs="Hagondes Pants +1",feet="Amalric Nails +1",}
-- Fast cast sets for spells
sets.precast.FC = {ammo="Incantor Stone",
head="Nahtirah Hat",neck="Orunmila's Torque", ear1="Enchanter Earring +1",ear2="Loquacious Earring",
body="Anhur Robe",hands="Gendewitha Gages",ring1="Prolix Ring",ring2="Weatherspoon Ring",
back="Swith Cape",waist="Witful Belt",legs="Psycloth Lappas",feet="Pedagogy loafers +1"}
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
sets.precast.FC.Cure = set_combine(sets.precast.FC, {body="Heka's Kalasiris",back="Pahtli Cape"})
sets.precast.FC.Curaga = sets.precast.FC.Cure
sets.precast.FC.Impact = set_combine(sets.precast.FC['Elemental Magic'], {head=empty,body="Twilight Cloak"})
-- Midcast Sets
sets.midcast.FastRecast = {ammo="Incantor Stone",
head="Nahtirah Hat",ear2="Loquacious Earring",
body="Anhur Robe",hands="Gendewitha Gages +1",ring1="Prolix Ring",ring2="Weatherspoon ring",
back="Swith Cape",waist="Goading Belt",legs="psycloth Lappas",feet="Academic's Loafers +1"}
sets.midcast.Cure = {ammo="Incantor Stone",
head="Gendewitha Caubeen +1",neck="Colossus's Torque",ear1="Mendi. Earring",ear2="Loquacious Earring",
body="Gendewitha bliaut +1",hands="Telchine Gloves",ring1="Kunaji Ring",ring2="Sirona's Ring",
back="Tempered Cape",waist="Gishdubar Sash",legs="Telchine Braconi",feet="Telchine Pigaches"}
sets.midcast.CureWithLightWeather = {main="Chatoyant Staff",sub="Achaq Grip",ammo="Incantor Stone",
head="Gendewitha Caubeen",neck="Colossus's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Sirona's Ring",
back="Twilight Cape",waist="Korin Obi",legs="Assiduity Pants",feet="Academic's Loafers +1"}
sets.midcast.Curaga = sets.midcast.Cure
sets.midcast.Regen = {main="",sub="Genmei Shield",ammo="Ombre Tathlum +1",
head="Arbatel Bonnet +1",neck="Orunmila's Torque",left_ear="Gifted Earring",right_ear="Calamitous Earring",
body="Telchine Chasuble",hands="Arbatel Bracers +1",left_ring="Weather. Ring",right_ring="Prolix Ring",
back="Bookworm's Cape", augments={'Int +2', 'Mnd +1', 'Helix eff. Dur. +12', '"Regen" potency +10'},waist="Witful Belt",legs=gear.RegenLegs,feet=gear.RegenFeet}
sets.midcast.Refresh = {Waist="Gishdubar Sash"}
sets.midcast.Cursna = {
neck="Malison Medallion",
hands="Hieros Mittens",ring1="Ephedra Ring",
feet="Gendewitha Galoshes"}
sets.midcast['Enhancing Magic'] = {ammo="Savant's Treatise",
head="Befouled Crown",neck="Enhancing Torque",ear1="Andoaa Earring",
body="Telchine Chas.",hands="Ayao's Gages",
waist="Cascade Belt",legs="Telchine Braconi",feet="Telchine Pigaches",back="Perimede Cape"}
sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
sets.midcast.Storm = set_combine(sets.midcast['Enhancing Magic'], {feet="Pedagogy Loafers +1"})
sets.midcast.Embrava = set_combine(sets.midcast['Enhancing Magic'])
sets.midcast.Protect = {ring1="Sheltered Ring"}
sets.midcast.Protectra = sets.midcast.Protect
sets.midcast.Shell = {ring1="Sheltered Ring"}
sets.midcast.Shellra = sets.midcast.Shell
-- Custom spell classes
sets.midcast.MndEnfeebles = {main="Lehbrailg +2",sub="",ammo="Savant Treatise",
head="Befouled Crown",neck="Imbodla Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanya Robe",hands="Yaoyotl Gloves",ring1="Aquasoul Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Rumination Sash",legs="Psycloth Lappas",feet="Medium's Sabots"}
sets.midcast.IntEnfeebles = {main="Lehbrailg +2",sub="",ammo="Savant's Treatise",
head="Befouled Crown",neck="Imbodla Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanya Robe",hands="Yaoyotl Gloves",ring1="Shiva Ring +1",ring2="Sangoma Ring",
back="Refraction Cape",waist="Rumination Sash",legs="Psycloth Lappas",feet="Medium's Sabots"}
sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
sets.midcast['Dark Magic'] = {main="Lehbrailg +2",sub="",ammo="Incantor Stone",
head="Pixie hairpin +1",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Fucho-no-obi",legs="Bokwus Slops",feet="Medium's Sabots"}
sets.midcast.Kaustra = {main="Lehbrailg +2",sub="Willpower Grip",ammo="Witchstone",
head="Pixie Hairpin +1",neck="Saevus pendant +1",ear1="Barkaro. Earring",ear2="Friomisi Earring",
body="Merlinic Jubbah",hands="Chironic Gloves",ring1="archon ring",ring2="Strendu Ring",
back="Bookworm's Cape",waist="Cognition Belt",legs="Amalric slops",feet="Amalric Nails"}
sets.midcast.Drain = {ammo="Incantor Stone",
head="Pixie Hairpin +1",neck="Incantor's Torque",ear1="Friomisi Earring",ear2="Barkaro. Earring",
body="Merlinic Jubbah",hands="Chironic Gloves",ring1="Evanescence Ring",ring2="Sangoma Ring",
back="Seshaw Cape",waist="Fucho-no-obi",legs="Merlinic Shalwar", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Magic burst mdg.+9%','Mag. Acc.+13','"Mag.Atk.Bns."+15',},feet="Merlinic Crackows", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','"Drain" and "Aspir" potency +10','INT+13','Mag. Acc.+7','"Mag.Atk.Bns."+4',}}
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Stun = {main="Lehbrailg +2",sub="",ammo="Incantor Stone",
head="Kaabnax Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",ring2="archon ring",
back="Refraction Cape",waist="Witful Belt",legs="Pedagogy Pants",feet="Academic's Loafers +1"}
-- Elemental Magic sets are default for handling low-tier nukes.
sets.midcast['Elemental Magic'] = {ammo="Ghastly Tathlum +1",
head="Merlinic hood",neck="Sanctity Necklace",ear1="Friomisi earring",ear2="Barkaro. Earring",
body="Seidr Cotehardie",hands="Chironic Gloves",ring1="Shiva Ring +1",ring2="Shiva Ring +1",
back="Bookworm's Cape", augments={'Int +2', 'Mnd +4','Helix eff. Duration +19'}, waist="Refoccilation Stone",legs="Merlinic Shalwar",feet="Amalric Nails"}
sets.midcast['Elemental Magic'].MagicBurst = {ammo="Ghastly Tathlum +1",
head="Merlinic hood",neck="Mizu. Kubikazari",ear1="Friomisi earring",ear2="Barkaro. Earring",
body="Merlinic Jubbah",hands="Amalric Gages",ring1="Mujin Band",ring2="Locus Ring",
back="Lugh's Cape",waist="refoccilation stone",legs="Merlinic Shalwar", augments={'Mag. Acc.+21 "Mag.Atk.Bns."+21','Magic burst mdg.+9%','Mag. Acc.+13','"Mag.Atk.Bns."+15',},feet="Merlinic Crackows", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','Magic burst mdg.+10%',}}
sets.midcast['Elemental Magic'].mid_nukes = {main="Lehbrailg +2",sub="Willpower Grip",ammo="Ghastly Tathlum +1",
head="Merlinic hood",neck="Sanctity Necklace",ear1="Friomisi earring",ear2="Barkaro. Earring",
body="Seidr Cotehardie",hands="Chironic Gloves",ring1="Shiva Ring +1",ring2="shiva Ring +1",
back="Bookworm's Cape", augments={'Int +2', 'Mnd +4','Helix eff. Dur. +19'},waist="refoccilation stone",legs="Merlinic Shalwar",feet="Amalric Nails"}
-- Custom refinements for certain nuke tiers
sets.midcast.Impact = {main="Lehbrailg +2",sub="",ammo="Dosis Tathlum",
head=empty,neck="Sanctity Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Twilight Cloak",hands=gear.macc_hagondes,ring1="Shiva Ring +1",ring2="Sangoma Ring",
back="Toro Cape",waist="Demonry Sash",legs="Hagondes Pants",feet="Bokwus Boots"}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {main="boonwell Staff",sub="Mephitis Grip",
head="Nefer Khat +1",neck="Wiglen Gorget",
body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
waist="Austerity Belt",legs="Assiduity Pants",feet="Serpentes Sabots"}
-- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
sets.idle.Town = {main="Bolelabunga",sub="Genbu's Shield",ammo="Homiliary",
head="Savant's Bonnet +2",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Savant's Gown +2",hands="Savant's Bracers +2",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Savant's Pants +2",feet="Herald's Gaiters"}
sets.idle.Field = {main="Bolelabunga",sub="Genbu's Shield",ammo="Homiliary",
head="Gendewitha Caubeen +1",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Gendewitha Bliaut +1",hands="Gendewitha Gages +1",ring1="Defending ring",ring2="Gelatinous Ring +1",
back="Mecisto. Mantle",waist="Hierarch Belt",legs="Assiduity pants +1",feet="Gendewitha galoshes +1"}
sets.idle.Field.PDT = {ammo="Incantor Stone",
head="Gendewitha Caubeen +1",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Gendewitha Bliaut +1",hands="Gendewitha Gages +1",ring1="Defending Ring",ring2="Gelatinous Ring +1",
back="Cheviot Cape",waist="Hierarch Belt",legs="Artsieq Hose",feet="Gendewitha Galoshes +1"}
sets.idle.Field.Stun = {main="Apamajas II",sub="",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",ring2="Sangoma Ring",
back="Swith Cape +1",waist="Goading Belt",legs="Bokwus Slops",feet="Academic's Loafers"}
sets.idle.Weak = {main="Bolelabunga",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat +1",hands="Yaoyotl Gloves",ring1="Sheltered Ring",ring2="Meridian Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Assiduity Pants",feet="Herald's Gaiters"}
-- Defense sets
sets.defense.PDT = {main=gear.Staff.PDT,sub="",ammo="Incantor Stone",
head="Gendewitha caubeen +1",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Gendewitha bliaut +1",hands="Gendewitha Gages +1",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Cheviot Cape",waist="Hierarch Belt",legs="Artsieq Hose",feet="Gendewitha Galoshes +1"}
sets.defense.MDT = {main=gear.Staff.PDT,sub="Achaq Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Shadow Ring",
back="Tuilha Cape",waist="Hierarch Belt",legs="Bokwus Slops",feet="Hagondes Sabots"}
sets.Kiting = {feet="Herald's Gaiters"}
sets.latent_refresh = {waist="Fucho-no-obi"}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Normal melee group
sets.engaged = {
head="Gendewitha caubeen +1",
body="Gendewitha Bliaut +1",hands="Gendewitha Gages +1",ring1="Rajas Ring",
waist="Cetl Belt",legs="Hagondes Pants",feet="Gendewitha Galoshes +1",back=""}
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Ebullience'] = {head="Savant's Bonnet +2"}
sets.buff['Rapture'] = {head="Arbatel Bonnet +1"}
sets.buff['Perpetuance'] = {hands="Arbatel Bracers +1"}
sets.buff['Immanence'] = {hands="Savant's Bracers +2"}
sets.buff['Penury'] = {legs="Savant's Pants +2"}
sets.buff['Parsimony'] = {legs="Savant's Pants +2"}
sets.buff['Celerity'] = {feet="Pedagogy Loafers",head="Nahtirah hat"}
sets.buff['Alacrity'] = {feet="Pedagogy Loafers",head="Nahtirah hat"}
sets.buff['Klimaform'] = {feet="Arbatel Loafers +1"}
sets.buff.FullSublimation = {head="Academic's Mortarboard",ear1="Savant's Earring",body="Pedagogy Gown"}
sets.buff.PDTSublimation = {head="Academic's Mortarboard",ear1="Savant's Earring"}
--sets.buff['Sandstorm'] = {feet="Desert Boots"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Run after the general midcast() is done.
function job_post_midcast(spell, action, spellMap, eventArgs)
if spell.action_type == 'Magic' then
apply_grimoire_bonuses(spell, action, spellMap, eventArgs)
end
if spell.element == world.weather_element or spell.element == world.day_element or
(spell.element == 'Lightning' and buffactive['Thunderstorm']) or
(spell.element == 'Ice' and buffactive['Hailstorm']) or
(spell.element == 'Water' and buffactive['Rainstorm']) or
(spell.element == 'Fire' and buffactive['Firestorm']) or
(spell.element == 'Earth' and buffactive['Sandstorm']) or
(spell.element == 'Wind' and buffactive['Windstorm']) or
(spell.element == 'Light' and buffactive['Aurorastorm']) or
(spell.element == 'Dark' and buffactive['Voidstorm']) then
if spell.skill == 'Elemental Magic' and spellMap ~= 'Helix' then
equip(sets[spell.element])
elseif string.find(spell.english,'Cure') then
equip(sets[spell.element])
end
end
-- if spell.skill == 'Elemental Magic' and state.MagicBurst.value then
-- equip(sets.magic_burst)
-- if player.equipment.main == "Akademos" and state.Buff['Klimaform'] then
-- equip(sets.buff['Klimaform'])
-- end
-- end
end
function job_aftercast(spell, action, spellMap, eventArgs)
if not spell.interrupted then
if spell.english == 'Break' or spell.english == 'Breakga' then
send_command('@timers c "'..spell.english..' ['..spell.target.name..']" 30 down spells/00220.png')
elseif spell.english == 'Sleep' or spell.english == 'Sleepga' then
send_command('@timers c "'..spell.english..' ['..spell.target.name..']" 60 down spells/00220.png')
elseif spell.english == 'Sleep II' or spell.english == 'Sleepga II' then
send_command('@timers c "'..spell.english..' ['..spell.target.name..']" 90 down spells/00220.png')
end
classes.CustomIdleGroups:clear()
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks that are called to process player actions at specific points in time.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
function job_precast(spell, action, spellMap, eventArgs)
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = true
end
end
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
end
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
if spell.action_type == 'Magic' then
if default_spell_map == 'Cure' or default_spell_map == 'Curaga' then
if world.weather_element == 'Light' then
return 'CureWithLightWeather'
end
elseif spell.skill == 'Enfeebling Magic' then
if spell.type == 'WhiteMagic' then
return 'MndEnfeebles'
else
return 'IntEnfeebles'
end
elseif spell.skill == 'Elemental Magic' then
if info.low_nukes:contains(spell.english) then
return 'LowTierNuke'
elseif info.mid_nukes:contains(spell.english) then
return 'MidTierNuke'
end
end
end
end
function customize_idle_set(idleSet)
if state.Buff['Sublimation: Activated'] then
if state.IdleMode == 'Normal' then
idleSet = set_combine(idleSet, sets.buff.FullSublimation)
elseif state.IdleMode == 'PDT' then
idleSet = set_combine(idleSet, sets.buff.PDTSublimation)
end
end
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
return idleSet
end
-------------------------------------------------------------------------------------------------------------------
-- General hooks for change 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 state.Buff[buff] ~= nil then
state.Buff[buff] = gain
end
if buff == "Sublimation: Activated" then
handle_equipping_gear(player.status)
end
end
-- Handle notifications of general user state change.
function job_state_change(stateField, newValue, oldValue)
if stateField == 'OffenseMode' then
if newValue == 'Normal' then
disable('main','sub')
else
enable('main','sub')
end
elseif stateField == 'Reset' then
if state.OffenseMode == 'None' then
enable('main','sub')
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called for direct player commands.
function job_self_command(cmdParams, eventArgs)
if cmdParams[1]:lower() == 'scholar' then
handle_strategems(cmdParams)
eventArgs.handled = true
end
end
-- Called by the 'update' self-command.
function job_update(cmdParams, eventArgs)
if cmdParams[1] == 'user' and not (buffactive['light arts'] or buffactive['dark arts'] or
buffactive['addendum: white'] or buffactive['addendum: black']) then
if state.IdleMode == 'Stun' then
send_command('@input /ja "Dark Arts" <me>')
else
send_command('@input /ja "Light Arts" <me>')
end
end
update_active_strategems()
update_sublimation()
end
-- Function to display the current relevant user state when doing an update.
-- Return true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
local defenseString = ''
if state.Defense.Active then
local defMode = state.Defense.PhysicalMode
if state.Defense.Type == 'Magical' then
defMode = state.Defense.MagicalMode
end
defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
end
local meleeString = ''
if state.OffenseMode == 'Normal' then
meleeString = 'Melee: Weapons locked, '
end
add_to_chat(122,'Casting ['..state.CastingMode..'], '..meleeString..'Idle ['..state.IdleMode..'], '..defenseString..
'Kiting: '..on_off_names[state.Kiting])
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- Reset the state vars tracking strategems.
function update_active_strategems()
state.Buff['Ebullience'] = buffactive['Ebullience'] or false
state.Buff['Rapture'] = buffactive['Rapture'] or false
state.Buff['Perpetuance'] = buffactive['Perpetuance'] or false
state.Buff['Immanence'] = buffactive['Immanence'] or false
state.Buff['Penury'] = buffactive['Penury'] or false
state.Buff['Parsimony'] = buffactive['Parsimony'] or false
state.Buff['Celerity'] = buffactive['Celerity'] or false
state.Buff['Alacrity'] = buffactive['Alacrity'] or false
state.Buff['Klimaform'] = buffactive['Klimaform'] or false
end
function update_sublimation()
state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
end
-- Equip sets appropriate to the active buffs, relative to the spell being cast.
function apply_grimoire_bonuses(spell, action, spellMap)
if state.Buff.Perpetuance and spell.type =='WhiteMagic' and spell.skill == 'Enhancing Magic' then
equip(sets.buff['Perpetuance'])
end
if state.Buff.Rapture and (spellMap == 'Cure' or spellMap == 'Curaga') then
equip(sets.buff['Rapture'])
end
if spell.skill == 'Elemental Magic' and spellMap ~= 'ElementalEnfeeble' then
if state.Buff.Ebullience and spell.english ~= 'Impact' then
equip(sets.buff['Ebullience'])
end
if state.Buff.Immanence then
equip(sets.buff['Immanence'])
end
if state.Buff.Klimaform and spell.element == world.weather_element then
equip(sets.buff['Klimaform'])
end
end
if state.Buff.Penury then equip(sets.buff['Penury']) end
if state.Buff.Parsimony then equip(sets.buff['Parsimony']) end
if state.Buff.Celerity then equip(sets.buff['Celerity']) end
if state.Buff.Alacrity then equip(sets.buff['Alacrity']) end
end
-- General handling of strategems in an Arts-agnostic way.
-- Format: gs c scholar <strategem>
function handle_strategems(cmdParams)
-- cmdParams[1] == 'scholar'
-- cmdParams[2] == strategem to use
if not cmdParams[2] then
add_to_chat(123,'Error: No strategem command given.')
return
end
local strategem = cmdParams[2]:lower()
if buffactive['light arts'] or buffactive['addendum: white'] then
if strategem == 'cost' then
send_command('@input /ja Penury <me>')
elseif strategem == 'speed' then
send_command('@input /ja Celerity <me>')
elseif strategem == 'aoe' then
send_command('@input /ja Accession <me>')
elseif strategem == 'power' then
send_command('@input /ja Rapture <me>')
elseif strategem == 'duration' then
send_command('@input /ja Perpetuance <me>')
elseif strategem == 'accuracy' then
send_command('@input /ja Altruism <me>')
elseif strategem == 'enmity' then
send_command('@input /ja Tranquility <me>')
elseif strategem == 'skillchain' then
add_to_chat(122,'Error: Light Arts does not have a skillchain strategem.')
elseif strategem == 'addendum' then
send_command('@input /ja "Addendum: White" <me>')
else
add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
end
elseif buffactive['dark arts'] or buffactive['addendum: black'] then
if strategem == 'cost' then
send_command('@input /ja Parsimony <me>')
elseif strategem == 'speed' then
send_command('@input /ja Alacrity <me>')
elseif strategem == 'aoe' then
send_command('@input /ja Manifestation <me>')
elseif strategem == 'power' then
send_command('@input /ja Ebullience <me>')
elseif strategem == 'duration' then
add_to_chat(122,'Error: Dark Arts does not have a duration strategem.')
elseif strategem == 'accuracy' then
send_command('@input /ja Focalization <me>')
elseif strategem == 'enmity' then
send_command('@input /ja Equanimity <me>')
elseif strategem == 'skillchain' then
send_command('@input /ja Immanence <me>')
elseif strategem == 'addendum' then
send_command('@input /ja "Addendum: Black" <me>')
else
add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
end
else
add_to_chat(123,'No arts has been activated yet.')
end
end
-- Gets the current number of available strategems based on the recast remaining
-- and the level of the sch.
function get_current_strategem_count()
-- returns recast in seconds.
local allRecasts = windower.ffxi.get_ability_recasts()
local stratsRecast = allRecasts[231]
local maxStrategems
if player.main_job_level >= 90 then
maxStrategems = 5
elseif player.main_job_level >= 70 then
maxStrategems = 4
elseif player.main_job_level >= 50 then
maxStrategems = 3
elseif player.main_job_level >= 30 then
maxStrategems = 2
elseif player.main_job_level >= 10 then
maxStrategems = 1
else
maxStrategems = 0
end
local fullRechargeTime = 4*60
local currentCharges = math.floor(maxStrategems - maxStrategems * stratsRecast / fullRechargeTime)
return currentCharges
end
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
set_macro_page(1, 17)
end
Replace entire contents of file with that
EDIT: Noticed your rule trying to equip sets.magic_burst.
[+]
By BlaTheTaru 2016-08-31 20:33:04
I did and it said line 404 magic burst was a .nil value?
Server: Bismarck
Game: FFXI
Posts: 1346
By Bismarck.Kuroganashi 2016-09-01 10:48:29
I did and it said line 404 magic burst was a .nil value?
To comment out the Set that you possibly do not have
do this:
Code
if spell.skill == 'Elemental Magic' then
if state.MagicBurst.value then
--equip(sets.magic_burst)
end
end
Carbuncle.Calout
Server: Carbuncle
Game: FFXI
Posts: 14
By Carbuncle.Calout 2016-09-04 10:39:41
Could anyone take a look at my Blu lua and see why my midcast sets are not equipping for my spells. It works for a few spells but not for all of my spells. Code -- *** Credit goes to Flippant for helping me with Gearswap *** --
-- ** I Use Some of Motenten's Functions ** --
function get_sets()
AccIndex = 1
AccArray = {"LowACC","MidACC","HighACC"} -- 3 Levels Of Accuracy Sets For TP/WS/Hybrid. Default ACC Set Is LowACC. The First TP Set Of Your Main Weapon Is LowACC. Add More ACC Sets If Needed Then Create Your New ACC Below --
IdleIndex = 1
IdleArray = {"Refresh","Movement","Regen","PDT"} -- Default Idle Set Is Movement --
Lurnblu = 0
CapRingLock = 0 -- Capacity Ring Lock On/Off --
CapBackLock = 0
Armor = 'None'
target_distance = 5 -- Set Default Distance Here --
Cure_Spells = {"Cure","Cure II","Cure III","Cure IV"} -- Cure Degradation --
Curaga_Spells = {"Curaga","Curaga II"} -- Curaga Degradation --
select_default_macro_book() -- Change Default Macro Book At The End --
include('organizer-lib.lua')
send_command('bind f12 input //gs c C11')
-- Physical Type BlueMagic --
Physical_BlueMagic = S{
'Asuran Claws','Bludgeon','Body Slam','Feather Storm','Mandibular Bite',
'Queasyshroom','Power Attack','Ram Charge','Screwdriver','Sickle Slash',
'Smite of Rage','Spinal Cleave','Spiral Spin','Sweeping Gouge','Terror Touch'}
-- Physical Type BlueMagic: STR Modifier --
Physical_BlueMagic_STR = S{
'Battle Dance','Bloodrake','Death Scissors','Dimensional Death','Empty Thrash',
'Heavy Strike','Quadrastrike','Uppercut','Tourbillion','Vertical Cleave',
'Whirl of Rage','Diffusion Ray'}
-- Physical Type BlueMagic: STR + DEX Modifiers --
Physical_BlueMagic_DEX = S{
'Amorphic Spikes','Barbed Crescent','Claw Cyclone','Disseverment','Foot Kick',
'Frenetic Rip','Goblin Rush','Hysteric Barrage','Paralyzing Triad','Seedspray',
'Vanity Dive','Sinker Drill','Thrashing Assault'}
-- Physical Type BlueMagic: STR + AGI Modifiers --
Physical_BlueMagic_VIT = S{
'Cannonball','Delta Thrust','Grand Slam','Quad. Continuum',
'Sprout Smack','Glutinous Dart','Saurian Slide'}
Physical_BlueMagic_AGI = S{
'Benthic Typhoon','Helldive','Hydro Shot','Jet Stream','Pinecone Bomb',
'Wild Oats','Tempest Upheaval'}
-- Magical Type BlueMagic --
Magical_BlueMagic = S{
'Acrid Stream','Dark Orb','Droning Whirlwind','Embalming Earth','Evryone. Grudge',
'Firespit','Foul Waters','Gates of Hades','Leafstorm','Magic Hammer',
'Regurgitation','Rending Deluge','Tem. Upheaval','Thermal Pulse','Water Bomb','Subduction',
'Retinal Glare','Rail Cannon','Searing Tempest','Spectral Floe','Scouring Spate',
'Anvil Lightning','Entomb','Tenebral Crush','Palling Salvo'}
-- Low Accuracy Type BlueMagic --
BlueMagic_Accuracy = S{
'1000 Needles','Absolute Terror','Actinic Burst','Auroral Drape','Awful Eye',
'Blank Gaze','Blistering Roar','Blood Drain','Blood Saber','Chaotic Eye',
'Cimicine Discharge','Cold Wave','Digest','Corrosive Ooze','Demoralizing Roar',
'Dream Flower','Enervation','Feather Tickle','Filamented Hold','Frightful Roar',
'Geist Wall','Hecatomb Wave','Infrasonics','Jettatura','Light of Penance','Lowing',
'Mind Blast','Mortal Ray','MP Drainkiss','Osmosis','Reaving Wind','Sandspin',
'Sandspray','Sheep Song','Soporific','Sound Blast','Stinking Gas','Sub-zero Smash',
'Triumphant Roar','Venom Shell','Voracious Trunk','Yawn','Blinding Fulgor','Silent Storm'}
-- Breath Type BlueMagic --
BlueMagic_Breath = S{
'Bad Breath','Diffusion Ray','Flying Hip Press','Final Sting','Frost Breath',
'Heat Breath','Magnetite Cloud','Poison Breath','Radiant Breath','Thunder Breath',
'Vapor Spray','Wind Breath'}
-- Buff Type BlueMagic --
BlueMagic_Buff = S{
'Barrier Tusk','Carcharian Verve','Diamondhide','Metallic Body','Magic Barrier',
"Occultation",'Orcish Counterstance','Nature\'s Meditation','Plasma Charge',
'Pyric Bulwark','Reactor Cool'}
-- Diffusion Compatible Type BlueMagic --
BlueMagic_Diffusion = S{
'Amplification','Cocoon','Erratic Flutter','Exuviation','Feather Barrier',
'Harden Shell','Memento Mori','Metallic Body','Plasma Charge','Reactor Cool',
'Refueling','Saline Coat','Warm-Up','Zephyr Mantle'}
-- Healing Type BlueMagic --
BlueMagic_Healing = S{
'Healing Breeze','Magic Fruit','Plenilune Embrace','Pollen','Restoral','White Wind',
'Wild Carrot'}
-- Stun Type BlueMagic --
BlueMagic_Stun = S{
'Blitzstrahl','Frypan','Head Butt','Sudden Lunge','Tail slap','Temporal Shift',
'Thunderbolt','Whirl of Rage'}
-- Unbridled Learning Type BlueMagic --
BlueMagic_Unbridled = S{
'Absolute Terror','Bilgestorm','Blistering Roar','Bloodrake','Carcharian Verve',
'Crashing Thunder','Droning Whirlwind','Gates of Hades','Harden Shell','Polar Roar',
'Pyric Bulwark','Thunderbolt','Tourbillion','Uproot','Mighty Guard'}
sets.Idle = {}
-- Idle/Town Sets --
sets.Idle.Regen = {
ammo="Ginsen",
head="Amalric Coif",
neck="Sanctity Necklace",
ear1="Genmei Earring",
ear2="Black Earring",
body="Amalric Doublet",
hands="Serpentes Cuffs",
ring1="Sheltered Ring",
ring2="Paguroidea Ring",
back="Solemnity Cape",
waist="Flume Belt",
legs="Hagondes Pants +1",
feet="Serpentes Sabots"}
sets.Idle.Movement = set_combine(sets.Idle.Regen,{
head="Amalric Coif",
neck="Twilight Torque",
ear1="Genmei Earring",
ear2="Black Earring",
body="Hagondes Coat +1",
hands="Hagondes Cuffs +1",
ring1="Patricius Ring",
ring2="Defending Ring",
waist="Flume Belt",
back="Solemnity Cape",
legs="Blood Cuisses",
feet="Hag. Sabots +1"})
sets.Idle.Refresh = set_combine(sets.Idle.Regen,{
neck="Twilight Torque",
head="Amalric Coif",
body="Luhlaza Jubbah +1",
ring1="Patricius Ring",
ring2="Defending Ring",
hands="Serpentes Cuffs",
waist="Flume Belt",
legs="Blood Cuisses",
feet="Serpentes Sabots"})
sets.Idle.PDT = set_combine(sets.Idle.Regen,{
head="Lithelimb Cap",
neck="Twilight Torque",
body="Emet Harness +1",
hands="Adhemar Wristbands",
ring1="Patricius Ring",
ring2="Defending Ring",
back="Solemnity Cape",
legs="Qaaxo Tights",
feet="Qaaxo Boots"})
sets.Resting = set_combine(sets.Idle.Regen,{
legs="Lengo Pants"})
sets.Lurnblu ={
head="Herculean Helm",
neck="Lissome Necklace",
body="Luhlaza Jubbah +1",
hands="Assim. Bazu. +1",
back="Cornflower Cape",
feet="Battlecast Gaiters"}
sets.CapRingLock ={
ring1="Capacity Ring",
ring2="Trizek Ring"}
sets.CapBackLock ={
back="Mecisto. Mantle"}
-- Normal TP Sets --
sets.TP = {
ammo="Ginsen",
head="Herculean Helm",
neck="Asperity Necklace",
ear1="Heartseeker Earring",
ear2="Dudgeon Earring",
body="Samnuha Coat",
hands="Adhemar Wristbands",
ring1="Epona's Ring",
ring2="Rajas Ring",
back={ name="Rosmerta's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Windbuffet Belt +1",
legs={ name="Taeon Tights", augments={'Accuracy+17 Attack+17','"Triple Atk."+2','DEX+8',}},
feet="Taeon Boots"}
sets.TP.MidACC = set_combine(sets.TP,{
ammo="Honed Tathlum",
neck="Lissome Necklace",
back={ name="Rosmerta's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Kentarch Belt +1"})
sets.TP.HighACC = set_combine(sets.TP.MidACC,{
head="Taeon Chapeau",
neck="Sanctity Necklace",
ear1="Cessance Earring",
ear2="Steelflash earring",
ring1="Patricius Ring",
ring2="Epona's Ring",
back={ name="Rosmerta's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Olseni Belt",
feet="Taeon Boots"})
-- March x2 + Haste --
-- Embrava + (March or Haste) --
-- Geo Haste + (March or Haste or Embrava) --
sets.TP.HighHaste = set_combine(sets.TP,{
ear1="Cessance Earring",
ear2="Brutal Earring",
waist="Windbuffet Belt +1",
feet="Taeon Boots"})
sets.TP.MidACC.HighHaste = set_combine(sets.TP.HighHaste,{
ammo="Honed Tathlum",
back={ name="Rosmerta's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Kentarch Belt +1"})
sets.TP.HighACC.HighHaste = set_combine(sets.TP.MidACC.HighHaste,{
neck="Sanctity Necklace",
ear2="Cessance Earring",
ring1="Patricius Ring",
ring2="Epona's Ring",
back={ name="Rosmerta's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
waist="Olseni Belt"})
-- PDT/MDT Sets --
sets.PDT = {
head="Lithelimb Cap",
neck="Twilight Torque",
body="Emet Harness +1",
hands="Adhemar Wristbands",
ring1="Patricius Ring",
ring2="Defending Ring",
back="Solemnity Cape",
legs="Qaaxo Tights",
feet="Qaaxo Boots"}
sets.MDT = set_combine(sets.PDT,{
ear2="Sanare Earring",
ring1="Shadow Ring",
back="Solemnity Cape"})
-- Hybrid Sets --
sets.TP.Hybrid = set_combine(sets.PDT,{})
sets.TP.Hybrid.MidACC = set_combine(sets.TP.Hybrid.LowACC,{})
sets.TP.Hybrid.HighACC = set_combine(sets.TP.Hybrid.MidACC,{})
-- WS Base Set --
sets.WS = {}
-- WS Sets --
sets.WS["Chant du Cygne"] = {
head="Uk'uxkaj Cap",
neck="Nefarious Collar +1",
ear1="Cessance Earring",
ear2="Brutal Earring",
body="Samnuha Coat",
hands="Adhemar Wristbands",
ring1="Epona's Ring",
ring2="Rajas Ring",
back={ name="Rosmerta's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Crit.hit rate+10',}},
waist="Fotia Belt",
legs={ name="Taeon Tights", augments={'Accuracy+17 Attack+17','"Triple Atk."+2','DEX+8',}},
feet="Thereoid Greaves"}
sets.WS["Chant du Cygne"].MidACC = set_combine(sets.WS["Chant du Cygne"],{})
sets.WS["Chant du Cygne"].HighACC = set_combine(sets.WS["Chant du Cygne"].MidACC,{
ammo="Honed Tathlum",
neck="Light Gorget",
back={ name="Rosmerta's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Crit.hit rate+10',}},
waist="Fotia Belt",
feet="Taeon Boots"})
sets.WS.Requiescat = {
ammo="Honed Tathlum",
head="Uk'uxkaj Cap",
neck="Fotia Gorget",
ear1="Brutal Earring",
ear2="Cessance Earring",
body="Luhlaza Jubbah +1",
hands="Adhemar Wristbands",
ring1="Epona's Ring",
ring2="Rajas Ring",
back="Letalis Mantle",
waist="Fotia Belt",
legs={ name="Taeon Tights", augments={'Accuracy+17 Attack+17','"Triple Atk."+2','DEX+8',}},
feet="Taeon Boots"}
sets.WS.Requiescat.MidACC = set_combine(sets.WS.Requiescat,{
ammo="Honed Tathlum",
head="Whirlpool Mask"})
sets.WS.Requiescat.HighACC = set_combine(sets.WS.Requiescat.MidACC,{
back="Letalis Mantle"})
sets.WS["Savage Blade"] = {
head="Uk'uxkaj Cap",
neck="Fotia Gorget",
ear1="Brutal Earring",
ear2="Cessance Earring",
body="Samnuha Coat",
hands="Adhemar Wristbands",
ring1="Rajas Ring",
ring2="Ifrit Ring",
back="Buquwik Cape",
waist="Caudata Belt",
legs={ name="Taeon Tights", augments={'Accuracy+17 Attack+17','"Triple Atk."+2','DEX+8',}},
feet="Taeon Boots"}
sets.WS["Savage Blade"].MidACC = set_combine(sets.WS["Savage Blade"],{})
sets.WS["Savage Blade"].HighACC = set_combine(sets.WS["Savage Blade"].MidACC,{})
sets.WS.Expiacion = {
head="Uk'uxkaj Cap",
neck="Fotia Gorget",
ear1="Brutal Earring",
ear2="Cessance Earring",
body="Samnuha Coat",
hands="Adhemar Wristbands",
ring1="Rajas Ring",
ring2="Ifrit Ring",
back="Buquwik Cape",
waist="Caudata Belt",
legs={ name="Taeon Tights", augments={'Accuracy+17 Attack+17','"Triple Atk."+2','DEX+8',}},
feet="Taeon Boots"}
sets.WS.Expiacion.MidACC = set_combine(sets.WS.Expiacion,{})
sets.WS.Expiacion.HighACC = set_combine(sets.WS.Expiacion.MidACC,{})
sets.JA = {}
-- JA Sets --
sets.JA['Azure Lore'] = {hands="Luh. Bazubands +1"}
sets.JA['Chain Affinity'] = {body="Hashishin Kavuk"}
sets.JA['Efflux'] = {legs="Hashishin Tayt +1"}
sets.JA['Burst Affinity'] = {feet="Hashi. Basmak +1"}
sets.JA['Convergence'] = {head="Luh. Keffiyeh +1"}
sets.JA['Diffusion'] = {feet="Luhlaza Charuqs"}
-- Waltz Set --
sets.Waltz = {}
sets.Precast = {}
-- Fastcast Set --
sets.Precast.FastCast = {
head="Amalric Coif",
body="Luhlaza Jubbah +1",
neck="Voltsurge Torque",
ear1="Loquac. Earring",
ear2="Enchntr. Earring +1",
hands="Leyline Gloves",
ring1="Prolix Ring",
ring2="Rajas Ring",
back="Swith Cape",
waist="Witful Belt",
legs="Blood Cuisses",
feet="Amalric Nails"}
sets.Precast.BlueCast = set_combine(sets.Precast.FastCast,{
body="Hashishin Mintan"})
-- Precast Enhancing Magic --
sets.Precast['Enhancing Magic'] = set_combine(sets.Precast.FastCast,{waist="Siegel Sash"})
-- Midcast Base Set --
sets.Midcast = {}
-- Magic Haste Set --
sets.Midcast.Haste = set_combine(sets.Precast.FastCast,{})
-- Enhancing Magic Base Set --
sets.Midcast['Enhancing Magic'] = {}
-- Stoneskin Set --
sets.Midcast.Stoneskin = set_combine(sets.Midcast['Enhancing Magic'],{})
-- Cure/Curaga Spells & Healing Type BlueMagic --
sets.Midcast.Cure = {
neck="Phalaina Locket",
hands="Telchine Gloves",
back="Solemnity Cape",
feet="Medium's Sabots"}
-- Physical Type BlueMagic --
sets.Midcast.Physical_BlueMagic = {
ammo="Mantoptera Eye",
head="Uk'uxkaj Cap",
neck="Tjukurrpa Medal",
ear1="Vulcan's Pearl",
ear2="Vulcan's Pearl",
body="Luhlaza Jubbah +1",
hands="Jhakri Cuffs +1",
ring1="Ifrit Ring",
ring2="Rajas Ring",
back={ name="Rosmerta's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Crit.hit rate+10',}},
waist="Caudata Belt",
legs="Samnuha Tights",
feet="Jhakri Pigaches +1"}
-- Physical Type BlueMagic: STR Modifier --
sets.Midcast.Physical_BlueMagic_STR = set_combine(sets.Midcast.Physical_BlueMagic,{})
-- Physical Type BlueMagic: STR/DEX Modifiers --
sets.Midcast.Physical_BlueMagic_DEX = set_combine(sets.Midcast.Physical_BlueMagic,{})
-- Physical Type BlueMagic: STR/VIT Modifiers --
sets.Midcast.Physical_BlueMagic_VIT = set_combine(sets.Midcast.Physical_BlueMagic,{})
-- Physical Type BlueMagic: STR/AGI Modifiers --
sets.Midcast.Physical_BlueMagic_AGI = set_combine(sets.Midcast.Physical_BlueMagic,{})
sets.Midcast['Elemental Magic'] ={
ammo="Pemphredo Tathlum",
head="Amalric Coif",
neck="Eddy Necklace",
ear1="Crematio Earring",
ear2="Friomisi Earring",
body="Amalric Doublet",
hands="Jhakri Cuffs +1",
ring1="Acumen Ring",
ring2="Shiva Ring +1",
back="Izdubar Mantle",
waist="Yamabuki-no-Obi",
legs="Amalric Slops",
feet="Jhakri Pigaches +1"}
-- Magical Type BlueMagic --
sets.Midcast.Magical_BlueMagic = {
ammo="Pemphredo Tathlum",
head="Amalric Coif",
neck="Eddy Necklace",
ear1="Crematio Earring",
ear2="Friomisi Earring",
body="Amalric Doublet",
hands="Jhakri Cuffs +1",
ring1="Acumen Ring",
ring2="Shiva Ring +1",
back="Cornflower Cape",
waist="Yamabuki-no-Obi",
legs="Amalric Slops",
feet="Jhakri Pigaches +1"}
-- Low Accuracy Type BlueMagic --
sets.Midcast.BlueMagic_Accuracy = {
ammo="Pemphredo Tathlum",
head="Amalric Coif",
neck="Sancity Necklace",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="Samnuha Coat",
hands="Jhakri Cuffs +1",
ring2="Strendu Ring",
ring2="Angha Ring",
back="Cornflower Cape",
waist="Porous Rope",
legs="Lengo Pants",
feet="Jhakri Pigaches +1"}
-- Stun Type BlueMagic --
sets.Midcast.BlueMagic_Stun = set_combine(sets.Midcast.BlueMagic_Accuracy,{})
-- Buff Type BlueMagic --
sets.Midcast.BlueMagic_Buff = {}
-- Breath Type BlueMagic --
sets.Midcast.BlueMagic_Breath = {}
-- BlueMagic Base Set For Any Non Listed BlueMagic --
sets.Midcast['Blue Magic'] = {}
-- Charged Whisker --
sets.Midcast['Charged Whisker'] = set_combine(sets.Midcast.Magical_BlueMagic,{})
sets.Misc ={
main="Tanmogayi +1",
sub="Vampirism",
head="Hashishin Kavuk +1",
neck="Gabaxorea",
hands="Remedy",
ring1="Gabaxorea",
waist="Chaac Belt",
ring2="Nibiru Blade"}
end
function pretarget(spell,action)
if spell.action_type == 'Magic' and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
cancel_spell()
send_command('input /item "Echo Drops" <me>')
elseif spell.english == "Berserk" and buffactive.Berserk then -- Change Berserk To Aggressor If Berserk Is On --
cancel_spell()
send_command('Aggressor')
elseif BlueMagic_Unbridled:contains(spell.english) and not buffactive['Unbridled Learning'] then
if windower.ffxi.get_ability_recasts()[81] < 1 and not buffactive.amnesia and not buffactive.charm then -- Auto Use Unbridled Learning When You Cast One of The Unbridled Spells.
cancel_spell()
send_command('input /ja "Unbridled Learning" <me>;wait 1.5;input /ma "'..spell.english..'" '..spell.target.name)
end
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.type == "WeaponSkill" and spell.target.distance > target_distance and player.status == 'Engaged' then -- Cancel WS If You Are Out Of Range --
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Out of Range]')
return
end
end
function precast(spell,action)
if 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
equipSet = sets.WS
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if buffactive['Reive Mark'] then -- Equip Ygnas's Resolve +1 During Reive --
equipSet = set_combine(equipSet,{neck="Ygnas's Resolve +1"})
end
if spell.english == "Chant du Cygne" and player.tp > 2990 then
equipSet = set_combine(equipSet,{ear1="Jupiter's Pearl"})
end
equip(equipSet)
end
elseif spell.type == "JobAbility" then
if sets.JA[spell.english] then
equip(sets.JA[spell.english])
end
elseif spell.action_type == 'Magic' 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 spell.english:startswith('Utsusemi') then
if spell.english == 'Utsusemi: Ni' then
if buffactive['Copy Image (3)'] then
cancel_spell()
add_to_chat(123, spell.name .. ' Canceled: [3 Images]')
return
else
equip(sets.Precast.Utsusemi)
end
else
equip(sets.Precast.Utsusemi)
end
elseif sets.Precast[spell.skill] then
equip(sets.Precast[spell.skill])
elseif spell.skill=="Blue Magic" then
equip(sets.Precast.BlueCast)
else
equip(sets.Precast.FastCast)
end
end
elseif spell.type == "Waltz" then
refine_waltz(spell,action)
equip(sets.Waltz)
elseif spell.english == 'Spectral Jig' and buffactive.Sneak then
cast_delay(0.2)
send_command('cancel Sneak')
end
end
function midcast(spell,action)
equipSet = {}
if spell.action_type == 'Magic' then
equipSet = sets.Midcast
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
elseif (spell.english:startswith('Cur') or BlueMagic_Healing:contains(spell.english)) and spell.english ~= "Cursna" then
if spell.english:startswith('Cure') or BlueMagic_Healing:contains(spell.english) then
equipSet = equipSet.Cure
elseif spell.english:startswith('Cura') then
equipSet = equipSet.Curaga
end
if world.day_element == spell.element or world.weather_element == spell.element then
equipSet = set_combine(equipSet,{back="Twilight Cape",waist='Hachirin-no-Obi'})
end
elseif Physical_BlueMagic:contains(spell.english) or Physical_BlueMagic_STR:contains(spell.english) or Physical_BlueMagic_DEX:contains(spell.english) or Physical_BlueMagic_VIT:contains(spell.english) or Physical_BlueMagic_AGI:contains(spell.english) then
if Physical_BlueMagic_STR:contains(spell.english) then
equipSet = equipSet.PhysicalBlueMagic_STR
elseif Physical_BlueMagic_DEX:contains(spell.english) then
equipSet = equipSet.PhysicalBlueMagic_DEX
elseif Physical_BlueMagic_VIT:contains(spell.english) then
equipSet = equipSet.PhysicalBlueMagic_VIT
elseif Physical_BlueMagic_AGI:contains(spell.english) then
equipSet = equipSet.PhysicalBlueMagic_AGI
elseif Physical_BlueMagic:contains(spell.english) then
equipSet = equipSet.Physical_BlueMagic
end
if buffactive['Chain Affinity'] then
equipSet = set_combine(equipSet,sets['Chain Affinity'])
end
if buffactive.Efflux then
equipSet = set_combine(equipSet,sets.Efflux)
end
elseif Magical_BlueMagic:contains(spell.english) or spell.english == "Charged Whisker" then
if Magical_BlueMagic:contains(spell.english) then
equipSet = equipSet.Magical_BlueMagic
elseif spell.english == "Charged Whisker" then
equipSet = equipSet[spell.name]
end
if buffactive['Burst Affinity'] then
equipSet = set_combine(equipSet,sets['Burst Affinity'])
end
if buffactive.Convergence then
equipSet = set_combine(equipSet,sets.Convergence)
end
elseif BlueMagic_Accuracy:contains(spell.english) then
equipSet = equipSet.BlueMagic_Accuracy
elseif BlueMagic_Stun:contains(spell.english) then
equipSet = equipSet.BlueMagic_Stun
elseif BlueMagic_Buff:contains(spell.english) then
equipSet = equipSet.BlueMagic_Buff
elseif BlueMagic_Diffusion:contains(spell.english) and buffactive.Diffusion then
equipSet = set_combine(equipSet,sets.Diffusion)
elseif BlueMagic_Breath:contains(spell.english) then
equipSet = equipSet.BlueMagic_Breath
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 spell.english:startswith('Utsusemi') then
if spell.english == 'Utsusemi: Ichi' and (buffactive['Copy Image'] or buffactive['Copy Image (2)'] or buffactive['Copy Image (3)']) 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
elseif equipSet[spell.skill] then
equipSet = equipSet[spell.skill]
end
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
equip(equipSet)
end
function aftercast(spell,action)
if spell.type == "WeaponSkill" and not spell.interrupted then
send_command('wait 0.2;gs c TP')
end
status_change(player.status)
end
function status_change(new,old)
if CapRingLock == 1 then
equip(sets.CapRingLock)
end
if CapRingLock == 1 then -- Capacity Ring Lock On/Off--
disable('ring1','ring2')
else
enable('ring1','ring2')
end
if Lurnblu == 1 then
equip(sets.Lurnblu)
end
if Lurnblu == 1 then ---Lurning Blu Magic Lock---
disable('body','hands','feet','back')
else
enable('body','hands','feet','back')
end
if CapBackLock == 1 then
equip(sets.CapBackLock)
end
if CapBackLock == 1 then -- CapBackLock Lock On/Off--
disable('back')
else
enable('back')
end
if Armor == 'PDT' then
equip(sets.PDT)
elseif Armor == 'MDT' then
equip(sets.MDT)
elseif new == 'Engaged' then
equipSet = sets.TP
if Armor == 'Hybrid' and equipSet["Hybrid"] then
equipSet = equipSet["Hybrid"]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if buffactive.March == 2 or buffactive.March == 1 or buffactive[580] or buffactive['Mighty Guard'] and (buffactive.Embrava or buffactive.Haste) and equipSet["HighHaste"] then
equipSet = equipSet["HighHaste"]
end
equip(equipSet)
elseif new == 'Idle' then
equipSet = sets.Idle
if equipSet[IdleArray[IdleIndex]] then
equipSet = equipSet[IdleArray[IdleIndex]]
end
if buffactive['Reive Mark'] then -- Equip Ygnas's Resolve +1 During Reive --
equipSet = set_combine(equipSet,{neck="Ygnas's Resolve +1"})
end
equip(equipSet)
elseif new == 'Resting' then
equip(sets.Resting)
end
end
function buff_change(buff,gain)
buff = string.lower(buff)
if buff == "aftermath: lv.3" then -- AM3 Timer/Countdown --
if gain then
send_command('timers create "Aftermath: Lv.3" 180 down;wait 150;input /echo Aftermath: Lv.3 [WEARING OFF IN 30 SEC.];wait 15;input /echo Aftermath: Lv.3 [WEARING OFF IN 15 SEC.];wait 5;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 -- Accuracy Level Toggle --
AccIndex = (AccIndex % #AccArray) + 1
add_to_chat(158,'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 -- Hybrid Toggle --
if Armor == 'Hybrid' then
Armor = 'None'
add_to_chat(123,'Hybrid Set: [Unlocked]')
else
Armor = 'Hybrid'
add_to_chat(158,'Hybrid Set: '..AccArray[AccIndex])
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 == 'CP' then -- Lock Capacity Cape On/Off --
if CapBackLock == 1 then
CapBackLock = 0
add_to_chat(123,'Capacity Back Unlocked: [Unlocked]')
else
CapBackLock = 1
add_to_chat(158,'Capacity Back Locked: [locked]')
end
status_change(player.status)
elseif command == 'C15' then -- MDT Toggle --
if Armor == 'MDT' then
Armor = 'None'
add_to_chat(123,'MDT Set: [Unlocked]')
else
Armor = 'MDT'
add_to_chat(158,'MDT Set: [Locked]')
end
status_change(player.status)
elseif command == 'C17' then -- Lock Capacity Ring On/Off --
if CapRingLock == 1 then
CapRingLock = 0
add_to_chat(123,'Capacity Ring Unlocked: [Unlocked]')
else
CapRingLock = 1
add_to_chat(158,'Capacity Ring Locked: [locked]')
end
status_change(player.status)
elseif command == 'C11' then -- Lock Blu Gear On For Lurning Spells --
if Lurnblu == 1 then
Lurnblu = 0
add_to_chat(123,'Lurning Blu Gear: [Unlocked]')
else
Lurnblu = 1
add_to_chat(158,'Lurning Blu Gear: [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 == 'TP' then
add_to_chat(158,'TP Return: ['..tostring(player.tp)..']')
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 refine_waltz(spell,action)
if spell.type ~= 'Waltz' then
return
end
if spell.name == "Healing Waltz" or spell.name == "Divine Waltz" or spell.name == "Divine Waltz II" then
return
end
local newWaltz = spell.english
local waltzID
local missingHP
if spell.target.type == "SELF" then
missingHP = player.max_hp - player.hp
elseif spell.target.isallymember then
local target = find_player_in_alliance(spell.target.name)
local est_max_hp = target.hp / (target.hpp/100)
missingHP = math.floor(est_max_hp - target.hp)
end
if missingHP ~= nil then
if player.sub_job == 'DNC' then
if missingHP < 40 and spell.target.name == player.name then
add_to_chat(123,'Full HP!')
cancel_spell()
return
elseif missingHP < 150 then
newWaltz = 'Curing Waltz'
waltzID = 190
elseif missingHP < 300 then
newWaltz = 'Curing Waltz II'
waltzID = 191
else
newWaltz = 'Curing Waltz III'
waltzID = 192
end
else
return
end
end
local waltzTPCost = {['Curing Waltz'] = 20, ['Curing Waltz II'] = 35, ['Curing Waltz III'] = 50}
local tpCost = waltzTPCost[newWaltz]
local downgrade
if player.tp < tpCost and not buffactive.trance then
if player.tp < 20 then
add_to_chat(123, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.')
cancel_spell()
return
elseif player.tp < 35 then
newWaltz = 'Curing Waltz'
elseif player.tp < 50 then
newWaltz = 'Curing Waltz II'
end
downgrade = 'Insufficient TP ['..tostring(player.tp)..']. Downgrading to '..newWaltz..'.'
end
if newWaltz ~= spell.english then
send_command('@input /ja "'..newWaltz..'" '..tostring(spell.target.raw))
if downgrade then
add_to_chat(158, downgrade)
end
cancel_spell()
return
end
if missingHP > 0 then
add_to_chat(158,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.')
end
end
function find_player_in_alliance(name)
for i,v in ipairs(alliance) do
for k,p in ipairs(v) do
if p.name == name then
return p
end
end
end
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 == 'WAR' then
set_macro_page(1, 13)
elseif player.sub_job == 'RDM' then
set_macro_page(1, 13)
elseif player.sub_job == 'WHM' then
set_macro_page(1, 13)
elseif player.sub_job == 'NIN' then
set_macro_page(1, 13)
elseif player.sub_job == 'DNC' then
set_macro_page(1, 13)
elseif player.sub_job == 'BLM' then
set_macro_page(10, 13)
else
set_macro_page(1, 13)
end
end
Ragnarok.Flippant
Server: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-09-04 11:55:15
Would help if you could give an example of a spell that is not working as you expect it to.
The only problem that immediately sticks out is that your Charged Whisker set will never reach the conditions checking for Burst Affinity or Convergence because it's being caught by line 565. Given you aren't actually doing anything special with the set, you could take it out altogether; or, I'd suggest, naming it something else (like just get rid of the space) and changing line 598 to equipset = sets.midcast.ChargedWhisker.
Carbuncle.Calout
Server: Carbuncle
Game: FFXI
Posts: 14
By Carbuncle.Calout 2016-09-04 12:03:55
Ragnarok.Flippant said: »Would help if you could give an example of a spell that is not working as you expect it to.
The only problem that immediately sticks out is that your Charged Whisker set will never reach the conditions checking for Burst Affinity or Convergence because it's being caught by line 565. Given you aren't actually doing anything special with the set, you could take it out altogether; or, I'd suggest, naming it something else (like just get rid of the space) and changing line 598 to equipset = sets.midcast.ChargedWhisker.
It's pretty much all of the Blu spells like when i cast sinker drill it shows my precast going off then just switches to aftercast gear it's not showing the midcast. Im doing the show swaps in gs and its not showing the midcast. I have tested with a lot of spells including magic/pysical blu spells. Only spell i could get to show midcast was Sudden Lunge.
Ragnarok.Flippant
Server: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-09-04 13:35:08
The equip set names on line 578, 580, 582, and 584 are missing the _ after "Physical". I don't see anything wrong with the magic sets, but you do have a few that are empty (buff, breath).
Carbuncle.Calout
Server: Carbuncle
Game: FFXI
Posts: 14
By Carbuncle.Calout 2016-09-04 14:36:16
Ragnarok.Flippant said: »The equip set names on line 578, 580, 582, and 584 are missing the _ after "Physical". I don't see anything wrong with the magic sets, but you do have a few that are empty (buff, breath). Thanks a ton Flippant that was the issue all is working ok now.
Fenrir.Bricent
Server: Fenrir
Game: FFXI
Posts: 64
By Fenrir.Bricent 2016-09-05 05:45:44
I am having an issue with my augmented gear equipping in this set. Any help would be great.
sets.midcast.Pet.Weaponskill = {
head={ name="Taeon Chapeau", augments={'Pet: "Haste"+2%','Attack+20 Rng. Atk.+20','"Dbl. Atk."+4',}},
ear1="Charivari Earring",
ear2="Cirque Earring",
body="Pitre Tobe",
hands={ name="Taeon Gloves", augments={'Pet: Damage taken -2%','Attack+24 Rng. Atk.+24','"Dbl. Atk."+3',}},
back="Dispersal Mantle",
waist="Hurch'lan Sash",
legs={ name="Taeon Tights", augments={'Pet: "Haste"+2%','Accuracy+23 Rng. Acc.+23','"Dbl. Atk."+1',}},
feet={ name="Taeon Boots", augments={'Pet: Crit. hit rate +1%','"Haste"+3%','Accuracy+23 Rng. Acc.+23',}}}
Server: Phoenix
Game: FFXI
Posts: 661
By Phoenix.Demonjustin 2016-09-05 08:12:25
How would one go about making a toggle for their nuking body to swap between Merlinic & Seidr when a certain key is pressed?
Odin.Lygre
Server: Odin
Game: FFXI
Posts: 89
By Odin.Lygre 2016-09-05 12:58:32
Code function job_setup()
state.ConsMP = M(false, 'AF Body')
send_command('bind !` gs c toggle ConsMP')
end
function init_gear_sets()
sets.ConsMP = {body="Spaekona's coat +1"}
end
function job_post_midcast(spell, action, spellMap, eventArgs)
if spell.skill == 'Elemental Magic' and state.ConsMP.value then
equip(sets.ConsMP)
end
end
For the record, I'm just posting the code under their relevant functions.
[+]
Server: Odin
Game: FFXI
Posts: 177
By Odin.Speedyjim 2016-09-05 13:30:03
I am having an issue with my augmented gear equipping in this set. Any help would be great.
sets.midcast.Pet.Weaponskill = {
head={ name="Taeon Chapeau", augments={'Pet: "Haste"+2%','Attack+20 Rng. Atk.+20','"Dbl. Atk."+4',}},
ear1="Charivari Earring",
ear2="Cirque Earring",
body="Pitre Tobe",
hands={ name="Taeon Gloves", augments={'Pet: Damage taken -2%','Attack+24 Rng. Atk.+24','"Dbl. Atk."+3',}},
back="Dispersal Mantle",
waist="Hurch'lan Sash",
legs={ name="Taeon Tights", augments={'Pet: "Haste"+2%','Accuracy+23 Rng. Acc.+23','"Dbl. Atk."+1',}},
feet={ name="Taeon Boots", augments={'Pet: Crit. hit rate +1%','"Haste"+3%','Accuracy+23 Rng. Acc.+23',}}}
Have the armour in your inventory and type the above code. The augments have likely changed order and are thusly not being recognized.
Server: Phoenix
Game: FFXI
Posts: 661
By Phoenix.Demonjustin 2016-09-06 12:14:45
How would I go about making it so that whilst Mana Wall is active, my idle back/feet are swapped to Mana Wall gear without affecting my nuking gear?
Odin.Lygre
Server: Odin
Game: FFXI
Posts: 89
By Odin.Lygre 2016-09-06 13:09:49
Code function init_gear_sets()
sets.buff['Mana Wall'] = {back="Taranus's cape",feet="Wicce Sabots +1"}
end
function customize_idle_set(idleSet)
if buffactive['Mana Wall'] then
idleSet = set_combine(idleSet, sets.buff['Mana Wall'])
end
return idleSet
end
I do a bit more with it in my lua, but this should do what you're asking for.
[+]
Bismarck.Mitchel
Server: Bismarck
Game: FFXI
Posts: 153
By Bismarck.Mitchel 2016-09-10 06:39:12
Is it possible to setup a macro for cycling through binds? For example, send a command to Toggle through F9 sets.
Also, I'm having trouble equipping aug'd gear in this GS, any suggestions?:
-------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
--[[
Custom commands:
gs c shot
Uses the currently configured shot on the target, with either <t> or <stnpc> depending on setting.
gs c shot t
Uses the currently configured shot on the target, but forces use of <t>.
Configuration commands:
gs c cycle mainshot
Cycles through the available steps to use as the primary shot when using one of the above commands.
gs c cycle altshot
Cycles through the available steps to use for alternating with the configured main shot.
gs c toggle usealtshot
Toggles whether or not to use an alternate shot.
gs c toggle selectshottarget
Toggles whether or not to use <stnpc> (as opposed to <t>) when using a shot.
gs c toggle LuzafRing -- Toggles use of Luzaf Ring on and off
Offense mode is melee or ranged. Used ranged offense mode if you are engaged
for ranged weaponskills, but not actually meleeing.
Weaponskill mode, if set to 'Normal', is handled separately for melee and ranged weaponskills.
--]]
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
include('Mote-Globals.lua')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
-- QuickDraw Selector
state.MainShot = M{['description']='Primary Shot', 'Dark Shot', 'Earth Shot', 'Water Shot', 'Wind Shot', 'Fire Shot', 'Ice Shot', 'Thunder Shot'}
state.AltShot = M{['description']='Secondary Shot', 'Earth Shot', 'Water Shot', 'Wind Shot', 'Fire Shot', 'Ice Shot', 'Thunder Shot', 'Dark Shot'}
state.UseAltShot = M(false, 'Use Secondary Shot')
state.SelectShotTarget = M(false, 'Select Quick Draw Target')
state.IgnoreTargetting = M(false, 'Ignore Targetting')
state.CurrentShot = M{['description']='Current Quick Draw', 'Main', 'Alt'}
-- Whether to use Luzaf's Ring
state.LuzafRing = M(false, "Luzaf's Ring")
-- Whether a warning has been given for low ammo
state.warned = M(false)
define_roll_values()
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', 'LowAcc', 'MidAcc', 'HighAcc', 'Fodder')
state.RangedMode:options('Normal', 'Acc', 'Fodder')
state.WeaponskillMode:options('Normal', 'Acc')
state.CastingMode:options('Normal', 'Resistant')
state.IdleMode:options('Normal', 'DT')
gear.RAbullet = "Adlivun Bullet"
gear.WSbullet = "Adlivun Bullet"
gear.MAbullet = "Orichalc. Bullet"
gear.QDbullet = "Animikii Bullet"
options.ammo_warning_limit = 5
-- Additional local binds
send_command('bind ^` input /ja "Double-up" <me>')
send_command('bind !` input /ja "Bolter\'s Roll" <me>')
send_command ('bind @` gs c toggle LuzafRing')
send_command('bind ^- gs c cycleback mainshot')
send_command('bind ^= gs c cycle mainshot')
send_command('bind !- gs c cycle altshot')
send_command('bind != gs c cycleback altshot')
send_command('bind ^[ gs c toggle selectshottarget')
send_command('bind ^] gs c toggle usealtshot')
send_command('bind ^, input /ja "Spectral Jig" <me>')
send_command('unbind ^.')
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 !-')
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
--------------------------------------
-- Augmented Gear
-- Herculean
gear.Herc_MAB_Head = {name="Herculean Helm", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','INT+7','"Mag.Atk.Bns."+11',}}
gear.Herc_TP_Gloves = {name="Herculean Gloves", augments={'Accuracy+30','"Dual Wield"+3','DEX+10','Attack+6',}}
gear.Herc_TP_Legs = {name="Herculean Trousers", augments={'Attack+23','"Triple Atk."+4','STR+3','Accuracy+8',}}
gear.Herc_MAB_Feet = {name="Herculean Boots", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','STR+10','Mag. Acc.+11','"Mag.Atk.Bns."+12',}}
gear.Herc_TP_Feet = {name="Herculean Boots", augments={'Accuracy+25 Attack+25','STR+2','Accuracy+5','Attack+15',}},
-- Taeon
gear.Taeon_WS_Head = {name="Taeon Chapeau", augments={'Mag. Acc.+15 "Mag.Atk.Bns."+15','Weapon skill damage +2%',}}
gear.Taeon_TP_Head = {name="Taeon Chapeau", augments={'Accuracy+23','"Triple Atk."+1',}}
gear.Taeon_TP_Legs = {name="Taeon Tights", augments={'Accuracy+23','"Triple Atk."+2',}}
-- Ambuscade Capes
gear.COR_WS_Cape = {name="Camulus's Mantle", augments={'AGI+20','Mag. Acc+20 /Mag. Dmg.+20','Weapon skill damage +10%',}}
-- Precast Sets
sets.precast.JA['Triple Shot'] = {body="Chasseur's Frac"}
sets.precast.JA['Snake Eye'] = {legs="Commodore Culottes +2"}
sets.precast.JA['Wild Card'] = {feet="Lanun Bottes +1"}
sets.precast.JA['Random Deal'] = {body="Lanun Frac +1"}
sets.precast.CorsairRoll = {
head="Lanun Tricorne",
body="Meg. Cuirie +1",
hands="Chasseur's Gants",
legs="Desultor Tassets",
feet="Lanun Bottes +1",
neck="Twilight Torque",
ear1="Darkness earring",
ear2="Darkness earring",
ring1="Luzaf's Ring",
ring2="Barataria Ring",
back="Camulus's Mantle",
waist="Flume Belt",
}
-- sets.precast.CorsairRoll["Caster's Roll"] = set_combine(sets.precast.CorsairRoll, {legs="Chas. Culottes"})
sets.precast.CorsairRoll["Courser's Roll"] = set_combine(sets.precast.CorsairRoll, {feet="Chass. Bottes"})
sets.precast.CorsairRoll["Blitzer's Roll"] = set_combine(sets.precast.CorsairRoll, {head="Chass. Tricorne"})
sets.precast.CorsairRoll["Tactician's Roll"] = set_combine(sets.precast.CorsairRoll, {body="Chasseur's Frac"})
sets.precast.CorsairRoll["Allies' Roll"] = set_combine(sets.precast.CorsairRoll, {hands="Chasseur's Gants"})
sets.precast.LuzafRing = {ring2="Luzaf's Ring"}
sets.precast.FoldDoubleBust = {hands="Lanun Gants"}
sets.precast.CorsairShot = {}
sets.precast.Waltz = {
hands="Slither Gloves +1",
legs="Desultor Tassets",
ring1="Asklepian Ring",
ring2="Valseur's Ring",
} -- CHR and VIT
sets.precast.Waltz['Healing Waltz'] = {}
sets.precast.FC = {
head="Carmine Mask", --12
body="Taeon Tabard", --7
hands="Rawhide Gloves", --7
legs="Rawhide Trousers", --5
feet="Carmine Greaves", --7
neck="Orunmila's Torque", --5
ear1="Loquacious Earring", --2
ear2="Halasz Earring", --1
ring1="Prolix Ring", --2
ring2="Evanescene Ring", --5(3)
waist="Flume belt",
}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {
neck="Magoraga Beads",
ring1="Lebeche Ring",
})
sets.precast.RA = {
ammo=gear.RAbullet,
head="Aurore Beret +1", --5
body="Pursuer's Doublet", --6
hands="Lanun Gants", --7
legs="Chasseur's culottes", --6
feet="Meg. Jam. +1", --8
back="Navarch's Mantle", --6.5
waist="Impulse Belt", --3
}
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {
ammo=gear.WSbullet,
head="Meghanada Visor +1",
body="Meg. Cuirie +1",
hands="Meghanada gloves +1",
legs="Meg. Chausses +1",
feet="Meg. Jam. +1",
neck="Fotia Gorget",
ear1="Moonshade Earring",
ear2="Ishvara Earring",
ring1="Arvina Ringlet +1",
ring2="Garuda Ring",
back=gear.COR_WS_Cape,
waist="Fotia belt",
}
sets.precast.WS.Acc = set_combine(sets.precast.WS, {
hands="Meg. Gloves +1",
})
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS["Last Stand"] = set_combine(sets.precast.WS['Last Stand'], {
hands="Meg. Gloves +1",
ring1="Garuda Ring",
})
sets.precast.WS['Last Stand'].Acc = set_combine(sets.precast.WS['Last Stand'], {
ammo=gear.WSbullet,
hands="Meg. Gloves +1",
ear2="Volley Earring",
ring1="Cacoethic Ring +1",
back="Gunslinger's cape",
})
sets.precast.WS['Wildfire'] = {
ammo=gear.MAbullet,
head=gear.Herc_MAB_Head,
body="Rawhide Vest",
hands="Pursuer's cuffs",
legs="Laksamana's trews +1",
feet=gear.Herc_MAB_Feet,
neck="Sanctity Necklace",
ear1="Hecate's Earring",
ear2="Friomisi Earring",
ring1="Arvina Ringlet +1",
ring2="Acumen Ring",
back=gear.COR_WS_Cape,
waist="Salire belt",
}
sets.precast.WS['Leaden Salute'] = {
ammo=gear.MAbullet,
head="Pixie Hairpin +1",
body="Rawhide Vest",
hands="Pursuer's cuffs",
legs="Laksamana's trews +1",
feet=gear.Herc_MAB_Feet,
neck="Sanctity Necklace",
ear1="Moonshade Earring",
ear2="Friomisi Earring",
ring1="Archon Ring",
ring2="Arvina Ringlet +1",
back=gear.COR_WS_Cape,
waist="Salire belt",
}
sets.precast.WS['Evisceration'] = {
head="",
body="Meg. Cuirie +1",
hands="Meg. Gloves +1",
legs="",
feet="",
neck="Fotia gorget",
ear1="Moonshade Earring",
ear2="Brutal Earring",
ring1="",
ring2="Epona's Ring",
back="",
waist="Fotia belt",
}
sets.precast.WS['Savage Blade'] = {
head="Meghanada Visor +1",
body="Meg. Cuirie +1",
hands="Meghanada gloves +1",
legs="Meg. Chausses +1",
feet="Rawhide boots",
neck="Caro necklace",
ear1="Moonshade Earring",
ear2="Ishvara Earring",
ring1="Ifrit Ring",
ring2="Ifrit Ring",
back="Laic Mantle",
waist="Prosilio belt +1",
}
sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'], {
ring1="Rufescent Ring",
waist="Grunfeld Rope",
})
sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS['Savage Blade'], {
neck="Fotia gorget",
ring1="Rufescent Ring",
ring2="Epona's Ring",
back="Bleating Mantle",
waist="Fotia Belt",
}) --MND
sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS['Requiescat'], {
head="Carmine Mask"
})
-- Midcast Sets
sets.midcast.FastRecast = {
ear1="Loquacious Earring",
ear2="",
}
sets.midcast.Cure = {
neck="Incanter's Torque",
ear1="Roundel Earring",
ear2="Mendi. Earring",
ring1="",
ring2="",
waist="",
}
sets.midcast.Utsusemi = {
waist="Pya'ekue belt",
}
sets.midcast.CorsairShot = {
ammo=gear.QDbullet,
head=gear.Herc_MAB_Head,
body="Mirke wardecors",
hands="Pursuer's cuffs",
legs="Laksamana's trews +1",
feet=gear.Herc_MAB_Feet,
neck="Sanctity Necklace",
ear1="Hecate's Earring",
ear2="Friomisi Earring",
ring1="Arvina Ringlet +1",
ring2="Acumen Ring",
back=gear.COR_WS_Cape,
waist="Salire belt",
}
sets.midcast.CorsairShot['Light Shot'] = set_combine(sets.midcast.CorsairShot, {
hands="Rawhide Gloves",
head="Carmine Mask",
legs="Rawhide Trousers",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
ring1="Cacoethic Ring +1",
ring2="Etana Ring",
})
sets.midcast.CorsairShot['Dark Shot'] = set_combine(sets.midcast.CorsairShot, {
hands="Rawhide Gloves",
head="Pixie Hairpin +1",
legs="Rawhide Trousers",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
ring1="Cacoethic Ring +1",
ring2="Archon Ring",
})
-- Ranged gear
sets.midcast.RA = {
ammo=gear.RAbullet,
head="Meghanada Visor +1",
body="Pursuer's Doublet",
hands="Meg. Gloves +1",
legs="Meg. Chausses +1",
feet="Meg. Jam. +1",
neck="Marked Gorget",
ear1="Navarch's Earring",
ear2="Volley Earring",
ring1="Arvina Ringlet +1",
ring2="Garuda Ring",
back="Gunslinger's Cape",
waist="Elanid Belt",
}
sets.midcast.RA.Acc = set_combine(sets.midcast.RA, {
ammo=gear.RAbullet,
body="Meg. Cuirie +1",
ring1="Cacoethic Ring +1",
ring1="Hadjuk Ring",
})
sets.midcast.RA.Fodder = set_combine(sets.midcast.RA, {
ammo=gear.RAbullet,
neck="Ocachi Gorget",
})
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {}
-- Idle sets
sets.idle = {
ammo=gear.RAbullet,
head="Meghanada visor +1",
body="Lanun Frac +1",
hands="Meg. Gloves +1",
legs="Crimson Cuisses",
feet="Lanun bottes +1",
neck="Sanctity Necklace",
ear1="Eabani Earring",
ear2="Infused Earring",
ring1="Paguroidea Ring",
ring2="Sheltered Ring",
back="Solemnity Cape",
waist="Flume Belt",
}
sets.idle.DT = set_combine (sets.idle, {
head="Meghanada visor +1", --4/0
body="Meg. Cuirie +1", --7/0
hands="Meg. Gloves +1", --3/0
legs="Meg. Chausses +1", --5/0
feet="Lanun Bottes +1", --4/0
neck="Twilight Torque", --5/5
ear1="Darkness Earring", --2/0
ear2="Darkness Earring", --2/0
ring1="Gelatinous Ring", --6/(-2)
ring2="Dark Ring", --0/4
back="Solemnity Cape", --4/4
waist="Flume Belt", --4/0
})
sets.idle.Town = set_combine(sets.idle, {
back=gear.COR_WS_Cape,
})
-- Defense sets
sets.defense.PDT = {
head="Meghanada visor +1", --4/0
body="Meg. Cuirie +1", --7/0
hands="Meg. Gloves +1", --3/0
legs="Meg. Chausses +1", --5/0
feet="Lanun Bottes +1", --4/0
neck="Twilight Torque", --5/5
ear1="Darkness Earring", --2/0
ear2="Darkness Earring", --2/0
ring1="Gelatinous Ring", --6/(-2)
ring2="Jelly Ring", --10/10
back="Solemnity Cape", --4/4
waist="Flume Belt", --4/0
}
sets.defense.MDT = set_combine(sets.defense.PDT, {
ear1="Merman's Earring", --0/2
ear2="Merman's Earring", --0/2
ring1="Dark Ring", --0/4
ring2="Minerva's Ring", --(-8)/8
})
sets.Kiting = {legs="Crimson cuisses"}
-- 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=gear.RAbullet,
head=gear.Taeon_TP_Head,
body="Rawhide Vest",
hands=gear.Herc_TP_Gloves,
legs=gear.Herc_TP_Legs,
feet="Taeon boots",
neck="Lissome Necklace",
ear1="Eabani Earring",
ear2="Suppanomimi",
ring1="Petrov Ring",
ring2="Epona's Ring",
back="Bleating Mantle",
waist="Windbuffet Belt +1",
}
sets.engaged.LowAcc = set_combine(sets.engaged, {
legs=gear.Taeon_TP_Legs,
waist="Kentarch Belt +1",
ring2="Rajas Ring",
back="Letalis Mantle",
})
sets.engaged.MidAcc = set_combine(sets.engaged.LowAcc, {
ear1="Heartseeker Earring",
ear2="Dudgeon Earring",
ring2="Cacoethic Ring +1",
})
sets.engaged.HighAcc = set_combine(sets.engaged.MidAcc, {
head="Carmine Mask",
legs="Meg. Chausses +1",
neck="Subtlety spectacles",
ring1="Enlivened Ring",
back="Grounded Mantle",
})
sets.engaged.Fodder = set_combine(sets.engaged, {
body="Thaumas Coat",
neck="Asperity Necklace",
})
sets.engaged.HighHaste = {
ammo=gear.RAbullet,
head=gear.Taeon_TP_Head,
body="Rawhide Vest",
hands=gear.Herc_TP_Gloves, --3
legs=gear.Taeon_TP_Legs,
feet=gear.Herc_TP_Feet,
neck="Lissome Necklace",
ear1="Eabani Earring", --4
ear2="Suppanomimi", --5
ring1="Petrov Ring",
ring2="Epona's Ring",
back="Letalis Mantle",
waist="Windbuffet Belt",
}
sets.engaged.HighHaste.LowAcc = set_combine(sets.engaged.HighHaste, {
waist="Kentarch Belt +1",
ring2="Rajas Ring",
})
sets.engaged.HighHaste.MidAcc = set_combine(sets.engaged.HighHaste.LowAcc, {
ear1="Heartseeker Earring", -- 7
ear2="Dudgeon Earring",
ring2="Cacoethic Ring +1",
})
sets.engaged.HighHaste.HighAcc = set_combine(sets.engaged.HighHaste.MidAcc, {
head="Carmine Mask",
legs="Meg. Chausses +1",
neck="Subtlety spectacles",
ring1="Enlivened Ring",
back="Grounded Mantle",
})
sets.engaged.HighHaste.Fodder = set_combine(sets.engaged.HighHaste, {
body="Thaumas Coat",
neck="Asperity Necklace",
})
sets.engaged.MaxHaste = {
ammo=gear.RAbullet,
head="Dampening Tam",
body="Rawhide Vest",
hands=gear.Herc_TP_Gloves, --3
legs=gear.Taeon_TP_Legs,
feet=gear.Herc_TP_feet,
neck="Lissome Necklace",
ear1="Cessance Earring",
ear2="Suppanomimi",
ring1="Petrov Ring",
ring2="Epona's Ring",
back="Letalis Mantle",
waist="Windbuffet Belt",
}
sets.engaged.MaxHaste.LowAcc = set_combine(sets.engaged.HighHaste, {
waist="Kentarch Belt +1",
ring2="Rajas Ring",
})
sets.engaged.MaxHaste.MidAcc = set_combine(sets.engaged.MaxHaste.LowAcc, {
ring2="Cacoethic Ring +1",
})
sets.engaged.MaxHaste.HighAcc = set_combine(sets.engaged.MaxHaste.MidAcc, {
head="Carmine Mask",
legs="Meg. Chausses +1",
neck="Subtlety spectacles",
ring1="Enlivened Ring",
back="Grounded Mantle",
})
sets.engaged.MaxHaste.Fodder = set_combine(sets.engaged.MaxHaste, {
body="Thaumas Coat",
neck="Asperity Necklace",
})
sets.Obi = {waist="Hachirin-no-Obi"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
function job_precast(spell, action, spellMap, eventArgs)
-- Check that proper ammo is available if we're using ranged attacks or similar.
if spell.action_type == 'Ranged Attack' or spell.type == 'WeaponSkill' or spell.type == 'CorsairShot' then
do_bullet_checks(spell, spellMap, eventArgs)
end
-- gear sets
if (spell.type == 'CorsairRoll' or spell.english == "Double-Up") and state.LuzafRing.value then
equip(sets.precast.LuzafRing)
elseif spell.type == 'CorsairShot' and state.CastingMode.value == 'Resistant' then
classes.CustomClass = 'Acc'
elseif spell.english == 'Fold' and buffactive['Bust'] == 2 then
if sets.precast.FoldDoubleBust then
equip(sets.precast.FoldDoubleBust)
eventArgs.handled = true
end
end
end
function job_post_precast(spell, action, spellMap, eventArgs)
-- Equip obi if weather/day matches for WS/Quick Draw.
if spell.type == 'WeaponSkill' or spell.type == 'CorsairShot' then
if spell.english == 'Leaden Salute' and (world.weather_element == 'Dark' or world.day_element == 'Dark') then
equip(sets.Obi)
elseif spell.english == 'Wildfire' and (world.weather_element == 'Fire' or world.day_element == 'Fire') then
equip(sets.Obi)
elseif spell.type == 'CorsairShot' and (spell.element == world.weather_element or spell.element == world.day_element) then
equip(sets.Obi)
end
end
end
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
if spell.type == 'CorsairRoll' and not spell.interrupted then
display_roll_info(spell)
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.
-------------------------------------------------------------------------------------------------------------------
-- Return a customized weaponskill mode to use for weaponskill sets.
-- Don't return anything if you're not overriding the default value.
function job_update(cmdParams, eventArgs)
determine_haste_group()
end
-- Set eventArgs.handled to true if we don't want the automatic display to be run.
function job_update(cmdParams, eventArgs)
determine_haste_group()
end
function get_custom_wsmode(spell, spellMap, default_wsmode)
if buffactive['Transcendancy'] then
return 'Brew'
end
end
-- 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)
if newStatus == 'Engaged' and player.equipment.main == 'Chatoyant Staff' then
state.OffenseMode:set('Ranged')
end
end
-- Handle auto-targetting based on local setup.
function job_auto_change_target(spell, action, spellMap, eventArgs)
if spell.type == 'CorsairShot' then
if state.IgnoreTargetting.value == true then
state.IgnoreTargetting:reset()
eventArgs.handled = true
end
eventArgs.SelectNPCTargets = state.SelectShotTarget.value
end
end
-- Set eventArgs.handled to true if we don't want the automatic display to be run.
function display_current_job_state(eventArgs)
local msg = ''
msg = msg .. '[ Offense/Ranged: '..state.OffenseMode.current..'/'..state.RangedMode.current
msg = msg .. ' ][ WS: '..state.WeaponskillMode.current
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 Mode: ON'
end
msg = msg .. ' ][ '..state.MainShot.current
if state.UseAltShot.value == true then
msg = msg .. '/'..state.AltShot.current
end
msg = msg .. ' ]'
add_to_chat(061, msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- User self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called for custom player commands.
function job_self_command(cmdParams, eventArgs)
if cmdParams[1] == 'Shot' then
if cmdParams[2] == 't' then
state.IgnoreTargetting:set()
end
local doShot = ''
if state.UseAltShot.value == true then
doShot = state[state.CurrentShot.current..'Shot'].current
state.CurrentShot:cycle()
else
doShot = state.MainShot.current
end
send_command('@input /ja "'..doShot..'" <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) then
classes.CustomMeleeGroups:append('MaxHaste')
elseif buffactive.march == 2 and buffactive.haste then
classes.CustomMeleeGroups:append('MaxHaste')
elseif buffactive.embrava and (buffactive.haste or buffactive.march) then
classes.CustomMeleeGroups:append('HighHaste')
elseif buffactive.march == 1 and buffactive.haste then
classes.CustomMeleeGroups:append('HighHaste')
elseif buffactive.march == 2 and buffactive.haste then
classes.CustomMeleeGroups:append('HighHaste')
end
end
function define_roll_values()
rolls = {
["Corsair's Roll"] = {lucky=5, unlucky=9, bonus="Experience Points"},
["Ninja Roll"] = {lucky=4, unlucky=8, bonus="Evasion"},
["Hunter's Roll"] = {lucky=4, unlucky=8, bonus="Accuracy"},
["Chaos Roll"] = {lucky=4, unlucky=8, bonus="Attack"},
["Magus's Roll"] = {lucky=2, unlucky=6, bonus="Magic Defense"},
["Healer's Roll"] = {lucky=3, unlucky=7, bonus="Cure Potency Received"},
["Drachen Roll"] = {lucky=4, unlucky=8, bonus="Pet Magic Accuracy/Attack"},
["Choral Roll"] = {lucky=2, unlucky=6, bonus="Spell Interruption Rate"},
["Monk's Roll"] = {lucky=3, unlucky=7, bonus="Subtle Blow"},
["Beast Roll"] = {lucky=4, unlucky=8, bonus="Pet Attack"},
["Samurai Roll"] = {lucky=2, unlucky=6, bonus="Store TP"},
["Evoker's Roll"] = {lucky=5, unlucky=9, bonus="Refresh"},
["Rogue's Roll"] = {lucky=5, unlucky=9, bonus="Critical Hit Rate"},
["Warlock's Roll"] = {lucky=4, unlucky=8, bonus="Magic Accuracy"},
["Fighter's Roll"] = {lucky=5, unlucky=9, bonus="Double Attack Rate"},
["Puppet Roll"] = {lucky=3, unlucky=7, bonus="Pet Magic Attack/Accuracy"},
["Gallant's Roll"] = {lucky=3, unlucky=7, bonus="Defense"},
["Wizard's Roll"] = {lucky=5, unlucky=9, bonus="Magic Attack"},
["Dancer's Roll"] = {lucky=3, unlucky=7, bonus="Regen"},
["Scholar's Roll"] = {lucky=2, unlucky=6, bonus="Conserve MP"},
["Naturalist's Roll"] = {lucky=3, unlucky=7, bonus="Enh. Magic Duration"},
["Runeist's Roll"] = {lucky=4, unlucky=8, bonus="Magic Evasion"},
["Bolter's Roll"] = {lucky=3, unlucky=9, bonus="Movement Speed"},
["Caster's Roll"] = {lucky=2, unlucky=7, bonus="Fast Cast"},
["Courser's Roll"] = {lucky=3, unlucky=9, bonus="Snapshot"},
["Blitzer's Roll"] = {lucky=4, unlucky=9, bonus="Attack Delay"},
["Tactician's Roll"] = {lucky=5, unlucky=8, bonus="Regain"},
["Allies's Roll"] = {lucky=3, unlucky=10, bonus="Skillchain Damage"},
["Miser's Roll"] = {lucky=5, unlucky=7, bonus="Save TP"},
["Companion's Roll"] = {lucky=2, unlucky=10, bonus="Pet Regain and Regen"},
["Avenger's Roll"] = {lucky=4, unlucky=8, bonus="Counter Rate"},
}
end
function display_roll_info(spell)
rollinfo = rolls[spell.english]
local rollsize = (state.LuzafRing.value and 'Large') or 'Small'
if rollinfo then
add_to_chat(104, '[ Lucky: '..tostring(rollinfo.lucky)..' / Unlucky: '..tostring(rollinfo.unlucky)..' ] '..spell.english..': '..rollinfo.bonus..' ('..rollsize..') ')
end
end
-- Determine whether we have sufficient ammo for the action being attempted.
function do_bullet_checks(spell, spellMap, eventArgs)
local bullet_name
local bullet_min_count = 1
if spell.type == 'WeaponSkill' then
if spell.skill == "Marksmanship" then
if spell.element == 'None' then
-- physical weaponskills
bullet_name = gear.WSbullet
else
-- magical weaponskills
bullet_name = gear.MAbullet
end
else
-- Ignore non-ranged weaponskills
return
end
elseif spell.type == 'CorsairShot' then
bullet_name = gear.QDbullet
elseif spell.action_type == 'Ranged Attack' then
bullet_name = gear.RAbullet
if buffactive['Triple Shot'] then
bullet_min_count = 3
end
end
local available_bullets = player.inventory[bullet_name] or player.wardrobe[bullet_name]
-- If no ammo is available, give appropriate warning and end.
if not available_bullets then
if spell.type == 'CorsairShot' and player.equipment.ammo ~= 'empty' then
add_to_chat(104, 'No Quick Draw ammo left. Using what\'s currently equipped ('..player.equipment.ammo..').')
return
elseif spell.type == 'WeaponSkill' and player.equipment.ammo == gear.RAbullet then
-- add_to_chat(104, 'No weaponskill ammo left. Using what\'s currently equipped (standard ranged bullets: '..player.equipment.ammo..').')
return
else
add_to_chat(104, 'No ammo ('..tostring(bullet_name)..') available for that action.')
eventArgs.cancel = true
return
end
end
-- Don't allow shooting or weaponskilling with ammo reserved for quick draw.
if spell.type ~= 'CorsairShot' and bullet_name == gear.QDbullet and available_bullets.count <= bullet_min_count then
add_to_chat(104, 'No ammo will be left for Quick Draw. Cancelling.')
eventArgs.cancel = true
return
end
-- Low ammo warning.
if spell.type ~= 'CorsairShot' and state.warned.value == false
and available_bullets.count > 1 and available_bullets.count <= options.ammo_warning_limit then
local msg = '***** LOW AMMO WARNING: '..bullet_name..' *****'
--local border = string.repeat("*", #msg)
local border = ""
for i = 1, #msg do
border = border .. "*"
end
add_to_chat(104, border)
add_to_chat(104, msg)
add_to_chat(104, border)
state.warned:set()
elseif available_bullets.count > options.ammo_warning_limit and state.warned then
state.warned:reset()
end
end
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
if player.sub_job == 'DNC' then
set_macro_page(1, 10)
else
set_macro_page(1, 10)
end
end
Its pulling the error - unexpected symbol near "=" for Augmented Taeon Chapeau.
Ragnarok.Flippant
Server: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-09-10 11:27:57
Delete the comma after the gear.Herc_TP_Feet line. (In the future, it's better to give the line number that it reports; and perhaps use [code] tags.)
As for bindings, they are linked to commands, likely in your Mote-Globals.lua file (unless you define them in your own global), so you can refer to that. For example, f9 is bound to 'gs c cycle OffenseMode', so your in-game macro would be '/console gs c cycle OffenseMode'.
Bismarck.Mitchel
Server: Bismarck
Game: FFXI
Posts: 153
By Bismarck.Mitchel 2016-09-10 11:59:25
Ragnarok.Flippant said: »Delete the comma after the gear.Herc_TP_Feet line. (In the future, it's better to give the line number that it reports; and perhaps use [code] tags.)
As for bindings, they are linked to commands, likely in your Mote-Globals.lua file (unless you define them in your own global), so you can refer to that. For example, f9 is bound to 'gs c cycle OffenseMode', so your in-game macro would be '/console gs c cycle OffenseMode'.
Can't believe i missed that, staring at it for too long that's the trouble.
Perfect though, thanks! Received alot of good help from this thread
Ragnarok.Aramakii
Server: Ragnarok
Game: FFXI
Posts: 4
By Ragnarok.Aramakii 2016-09-10 18:28:09
I'm usually pretty handy with this kind of thing, but for the past hour or so I have been running my head into the wall over this
Code function midcast(spell,action)
equipSet = {}
if spell.action_type == 'Magic' then
equipSet = sets.Midcast
if spell.english:startswith('Cur') and spell.english ~= "Cursna" then
if spell.english:startswith('Cure') then
if world.day_element == spell.element or world.weather_element == spell.element then
equipSet = equipSet.Cure.Weather
elseif spell.english:startswith('Cura') then
equipSet = equipSet.Curaga
end
end
if buffactive.Rapture then
equipSet = set_combine(equipSet,sets.Rapture)
end
if world.day_element == spell.element or world.weather_element == spell.element then
equipSet = set_combine(equipSet,{back="Twilight Cape",waist="Hachirin-no-Obi"})
end
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 spell.english == "Impact" then
equipSet = set_combine(equipSet,sets.Midcast.Impact)
elseif spell.english:startswith('Regen') and RegenIndex==1 then
equipSet = set_combine(equipSet,sets.Potency)
elseif spell.english:startswith('Regen') and RegenIndex==0 then
equipSet = set_combine(equipSet,sets.Midcast.Regen)
elseif spell.english == "Stun" and buffactive.Alacrity and world.weather_element == 'Thunder' then
equipSet = set_combine(equipSet,sets.Alacrity)
elseif Low_Tier_Spells:contains(spell.english) and LowNuke == 'ON' then
equipSet = set_combine(equipSet,sets.LowNuke)
elseif spell.skill == 'Elemental Magic' and MB == 'ON' then
if world.day_element == spell.element or world.weather_element == spell.element then
equipSet = set_combine(equipSet,sets.MB,{waist="Hachirin-no-Obi"})
end
elseif spell.english:startswith('Utsusemi') then
if spell.english == 'Utsusemi: Ichi' and (buffactive['Copy Image'] or buffactive['Copy Image (2)'] or buffactive['Copy Image (3)']) then
send_command('@wait 1.7;cancel Copy Image*')
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 spell.english:startswith('Cur') or spell.english:startswith('Bio') or spell.english:startswith('Dia') or spell.english == 'Aspir' or spell.english == 'Drain') 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' and spell.english ~= "Cursna" then
equipSet = set_combine(equipSet,sets.Obi[spell.element])
end
end
end
if buffactive.Perpetuance and spell.skill == "Enhancing Magic" then
equipSet = set_combine(equipSet,sets.Perpetuance)
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
equip(equipSet)
if StunIndex == 1 then
equip(sets.Midcast.Stun)
end
end
What I'm trying to do is incorporate Arbatel loafers into midcast when klimaform is up and I'm casting elemental skill magic, but also keep the obi and magic burst sets equipped when applicable. As of right now everything works as intended,(I got rid of everything having to do with klimaform).
But usually when I tried adding a rule for the loafers, it would equip them when klimaform was up, but it would supersede the obi rule when weather or day was active.
Any help with this would be greatly appreciated, thanks in advance.
Ragnarok.Flippant
Server: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-09-10 21:27:12
If you show me what you were doing before, I might be able to tell you what was going wrong so you could learn from it o:
Code function midcast(spell,action)
equipSet = {}
if spell.action_type == 'Magic' then
equipSet = sets.Midcast
if spell.english:startswith('Cur') and spell.english ~= "Cursna" then
if spell.english:startswith('Cure') then
if world.day_element == spell.element or world.weather_element == spell.element then
equipSet = equipSet.Cure.Weather
elseif spell.english:startswith('Cura') then
equipSet = equipSet.Curaga
end
end
if buffactive.Rapture then
equipSet = set_combine(equipSet,sets.Rapture)
end
if world.day_element == spell.element or world.weather_element == spell.element then
equipSet = set_combine(equipSet,{back="Twilight Cape",waist="Hachirin-no-Obi"})
end
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 spell.english == "Impact" then
equipSet = set_combine(equipSet,sets.Midcast.Impact)
elseif spell.english:startswith('Regen') and RegenIndex==1 then
equipSet = set_combine(equipSet,sets.Potency)
elseif spell.english:startswith('Regen') and RegenIndex==0 then
equipSet = set_combine(equipSet,sets.Midcast.Regen)
elseif spell.english == "Stun" and buffactive.Alacrity and world.weather_element == 'Thunder' then
equipSet = set_combine(equipSet,sets.Alacrity)
elseif Low_Tier_Spells:contains(spell.english) and LowNuke == 'ON' then
equipSet = set_combine(equipSet,sets.LowNuke)
elseif spell.skill == 'Elemental Magic' and MB == 'ON' then
equipSet = set_combine(equipSet,sets.MB)
elseif spell.english:startswith('Utsusemi') then
if spell.english == 'Utsusemi: Ichi' and (buffactive['Copy Image'] or buffactive['Copy Image (2)'] or buffactive['Copy Image (3)']) then
send_command('@wait 1.7;cancel Copy Image*')
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
end
if (spell.skill == 'Elemental Magic' or spell.english:startswith('Cur') or spell.english:startswith('Bio') or spell.english:startswith('Dia') or spell.english == 'Aspir' or spell.english == 'Drain') 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' and spell.english ~= "Cursna" then
equipSet = set_combine(equipSet,sets.Obi[spell.element])
end
if spell.skill=='Elemental Magic' and buffactive.Klimaform then
equipSet = set_combine(equipSet,{feet='Arbatel Loafers'})
end
if buffactive.Perpetuance and spell.skill == "Enhancing Magic" then
equipSet = set_combine(equipSet,sets.Perpetuance)
end
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
equip(equipSet)
if StunIndex == 1 then
equip(sets.Midcast.Stun)
end
end
I added the rules after the third set of obi rules you had. I also took those rules, the obi rules, and the Perpetuance rules and put them in the more logically sound place (as it was, if any previous conditions had been met, you would never would hit them).
I also took the auto-obi and its condition out of your MB rules (otherwise, you'd only nuke in your MB set if you also had the correct weather/day). I left the obi rule in your cure rules just in case, but if Twilight Cape is already in your sets.Obi.Light, then you don't need those.
I don't know what "Low Nuke" is, but if it and MB are both on, you will not use MB gear. I wasn't sure if that was the intention.
Ragnarok.Aramakii
Server: Ragnarok
Game: FFXI
Posts: 4
By Ragnarok.Aramakii 2016-09-10 22:04:29
I believe this was the most recent addition I added below the Mb rule, between line 43 and 44 of the code I posted. It would equip the loafers, but then supersede the obi rule for day/weather bonus. MB and Low Nuke are never on at the same time, can toggle either or on/off.
Code eleseif spell.skill == 'Elemental Magic' then
if buffactive['Klimaform'] then
equipSet = set_combine(equipSet,{feet='Arbatel Loafers'})
end
edit: When I first started messing with this lua, I noticed it wouldn't equip the obi/cape/chatoyant for light cures, and also would not equip the obi for magic bursts when MB was set to on. All those extra obi rules were just a workaround for that. Sorry if that was an inconvenience. Then I was hit by the klimaform fiasco. I think about there is where I lost it.
Ragnarok.Flippant
Server: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-09-10 23:00:11
Yeah, it wouldn't surprise me that Boku put it in the wrong section ;P
Within an if tree, only one condition can be met. Once a condition is found, the program will leave the tree (wherever the appropriate 'end' is found).
So if you say elseif spell.skill=='Elemental Magic', it implies that you do not want any Elemental Magic to go past that condition; it will just execute whatever is inside, and leave. So you were probably somehow making the two rules exclusive (either A or B, never both). Instead, you can use two separate if trees.
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.
|
|