|
Scholar Gearswap .lua
Bahamut.Neb
Server: Bahamut
Game: FFXI
Posts: 189
By Bahamut.Neb 2016-06-05 19:45:42
Code -------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
include('Obi_Check')
include('organizer-lib')
organizer_items = {
echos="Echo Drops",
shihei="Shihei",
orb="Macrocosmic Orb"
}
--[[
Custom commands:
Shorthand versions for each strategem type that uses the version appropriate for
the current Arts.
Light Arts Dark Arts
gs c scholar light Light Arts/Addendum
gs c scholar dark Dark Arts/Addendum
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()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
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
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('None', 'Normal')
state.CastingMode:options('Normal', 'Resistant')
state.IdleMode:options('Normal', 'PDT')
state.MagicBurst = M(false, 'Magic Burst')
info.low_nukes = S{"Stone", "Water", "Aero", "Fire", "Blizzard", "Thunder"}
info.mid_nukes = S{"Stone II", "Water II", "Aero II", "Fire II", "Blizzard II", "Thunder II",
"Stone III", "Water III", "Aero III", "Fire III", "Blizzard III", "Thunder III",
"Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",}
info.high_nukes = S{"Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
send_command('bind ^` input /ma Stun <t>')
select_default_macro_book()
end
function user_unload()
send_command('unbind ^`')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Precast sets to enhance JAs
sets.precast.JA['Tabula Rasa'] = {}
sets.precast.JA['Dark Arts'] = {body="Acad. Gown +1"}
sets.precast.JA['Light Arts'] = {legs="Acad. Pants +1"}
-- Fast cast sets for spells
sets.precast.FC ={
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Incantor Stone",
head={ name="Amalric Coif", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
body={ name="Merlinic Jubbah", augments={'"Fast Cast"+6','CHR+6','Mag. Acc.+8',}},
hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -4%','Magic dmg. taken -2%','"Cure" spellcasting time -3%',}},
legs={ name="Psycloth Lappas", augments={'MP+80','Mag. Acc.+15','"Fast Cast"+7',}},
feet={ name="Merlinic Crackows", augments={'"Mag.Atk.Bns."+19','"Fast Cast"+6','MND+5','Mag. Acc.+5',}},
neck="Orunmila's torque",
waist="Witful Belt",
left_ear="Loquac. Earring",
right_ear="Etiolation Earring",
left_ring="Prolix Ring",
right_ring="Rehab Ring",
back="Perimede Cape",}
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {})
sets.precast.FC.Cure = set_combine(sets.precast.FC, {main={ name="Serenity", augments={'MP+50','Enha.mag. skill +10','"Cure" potency +5%','"Cure" spellcasting time -10%',}},
ear2="Mendicant's Earring",ear1="Loquacious Earring",back="Pahtli Cape",feet="Vanya Clogs"})
sets.precast.FC.Curaga = sets.precast.FC.Cure
sets.precast.FC.Impact = set_combine(sets.precast.FC['Elemental Magic'], {head=empty,body=""})
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Myrkr'] = {
ammo="Pemphredo Tathlum",
head={ name="Amalric Coif", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
body={ name="Amalric Doublet", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
hands={ name="Amalric Gages", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
legs={ name="Amalric Slops", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
feet={ name="Amalric Nails", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
neck="Sanctity Necklace",
waist="Luminary Sash",
left_ear="Loquac. Earring",
right_ear="Etiolation Earring",
left_ring="Fortified Ring",
right_ring="Mephitas's Ring",
back="Pahtli Cape",}
-- Midcast Sets
sets.midcast.FastRecast = {}
sets.midcast.Cure = {
main={ name="Serenity", augments={'MP+50','Enha.mag. skill +10','"Cure" potency +5%','"Cure" spellcasting time -10%',}},
sub="Niobid Strap",
ammo="Kalboron Stone",
head={ name="Vanya Hood", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
body={ name="Vanya Robe", augments={'MND+10','Spell interruption rate down +15%','"Conserve MP"+6',}},
hands={ name="Kaykaus Cuffs", augments={'MP+60','MND+10','Mag. Acc.+15',}},
legs={ name="Vanya Slops", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
feet={ name="Vanya Clogs", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
neck="Incanter's Torque",
waist="Luminary Sash",
left_ear="Magnetic Earring",
right_ear="Mendi. Earring",
left_ring="Levia. Ring +1",
right_ring="Perception Ring",
back="Pahtli Cape",}
sets.midcast.CureWithLightWeather = {
main={ name="Serenity", augments={'MP+50','Enha.mag. skill +10','"Cure" potency +5%','"Cure" spellcasting time -10%',}},
sub="Niobid Strap",
ammo="Kalboron Stone",
head={ name="Vanya Hood", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
body={ name="Vanya Robe", augments={'MND+10','Spell interruption rate down +15%','"Conserve MP"+6',}},
hands={ name="Kaykaus Cuffs", augments={'MP+60','MND+10','Mag. Acc.+15',}},
legs={ name="Vanya Slops", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
feet={ name="Vanya Clogs", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
neck="Incanter's Torque",
waist="Hachirin-no-Obi",
left_ear="Magnetic Earring",
right_ear="Mendi. Earring",
left_ring="Levia. Ring +1",
right_ring="Perception Ring",
back="Pahtli Cape",}
sets.midcast.Curaga = sets.midcast.Cure
sets.midcast.Regen = {
head="Arbatel Bonnet +1",
body={ name="Telchine Chas.", augments={'Enh. Mag. eff. dur. +5',}},
hands={ name="Telchine Gloves", augments={'"Fast Cast"+5','Enh. Mag. eff. dur. +6',}},
legs={ name="Telchine Braconi", augments={'Enh. Mag. eff. dur. +10',}},
feet={ name="Telchine Pigaches", augments={'Enh. Mag. eff. dur. +9',}},}
sets.midcast.Cursna = {
main={ name="Serenity", augments={'MP+50','Enha.mag. skill +10','"Cure" potency +5%','"Cure" spellcasting time -10%',}},
sub="Niobid Strap",
ammo="Kalboron Stone",
head={ name="Vanya Hood", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
body={ name="Vanya Robe", augments={'MND+10','Spell interruption rate down +15%','"Conserve MP"+6',}},
hands={ name="Kaykaus Cuffs", augments={'MP+60','MND+10','Mag. Acc.+15',}},
legs={ name="Vanya Slops", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
feet={ name="Vanya Clogs", augments={'Healing magic skill +20','"Cure" spellcasting time -7%','Magic dmg. taken -3',}},
neck="Incanter's Torque",
waist="Luminary Sash",
left_ear="Magnetic Earring",
right_ear="Mendi. Earring",
left_ring="Levia. Ring +1",
right_ring="Perception Ring",
back="Pahtli Cape",}
sets.midcast['Enhancing Magic'] = {
main="Oranyan",
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head={ name="Telchine Cap", augments={'Enh. Mag. eff. dur. +6',}},
body={ name="Telchine Chas.", augments={'Enh. Mag. eff. dur. +5',}},
hands={ name="Telchine Gloves", augments={'"Fast Cast"+5','Enh. Mag. eff. dur. +6',}},
legs={ name="Telchine Braconi", augments={'Enh. Mag. eff. dur. +10',}},
feet={ name="Telchine Pigaches", augments={'Enh. Mag. eff. dur. +9',}},
neck="Incanter's Torque",
waist="Siegel Sash",
left_ear="Loquac. Earring",
right_ear="Etiolation Earring",
left_ring="Sheltered Ring",
right_ring="Prolix Ring",
back="Perimede Cape",}
sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {neck="Nodens Gorget",waist="Siegel Sash",})
sets.midcast.Storm = set_combine(sets.midcast['Enhancing Magic'], {feet={ name="Peda. Loafers +1", augments={'Enhances "Stormsurge" effect',}},})
sets.midcast.Klimaform = set_combine(sets.midcast['Enhancing Magic'], {feet="Arbatel Loafers +1"})
sets.midcast.Protect = set_combine(sets.midcast['Enhancing Magic'],{left_ring="Sheltered ring"})
sets.midcast.Protectra = sets.midcast.Protect
sets.midcast.Shell = set_combine(sets.midcast['Enhancing Magic'], {left_ring="Sheltered ring"})
sets.midcast.Shellra = sets.midcast.Shell
sets.midcast.Refresh = set_combine(sets.midcast['Enhancing Magic'],{
head={ name="Amalric Coif", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
feet="Inspirited Boots"})
sets.midcast.Haste = set_combine(sets.midcast['Enhancing Magic'], {})
sets.midcast.Storm = {
main="Oranyan",
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head={ name="Telchine Cap", augments={'Enh. Mag. eff. dur. +6',}},
body={ name="Telchine Chas.", augments={'Enh. Mag. eff. dur. +5',}},
hands={ name="Telchine Gloves", augments={'"Fast Cast"+5','Enh. Mag. eff. dur. +6',}},
legs={ name="Telchine Braconi", augments={'Enh. Mag. eff. dur. +10',}},
feet={ name="Peda. Loafers +1", augments={'Enhances "Stormsurge" effect',}},
neck="Incanter's Torque",
waist="Siegel Sash",
left_ear="Loquac. Earring",
right_ear="Etiolation Earring",
left_ring="Sheltered Ring",
right_ring="Prolix Ring",
back="Perimede Cape",}
-- Custom spell classes
sets.midcast.MndEnfeebles = {
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head="Befouled Crown",
body={ name="Vanya Robe", augments={'MND+10','Spell interruption rate down +15%','"Conserve MP"+6',}},
hands="Lurid Mitts",
legs={ name="Psycloth Lappas", augments={'MP+80','Mag. Acc.+15','"Fast Cast"+7',}},
feet={ name="Medium's Sabots", augments={'MP+30','MND+8','"Cure" potency +2%',}},
neck="Incanter's Torque",
waist="Luminary Sash",
right_ear="Barkaro. Earring",
right_ear="Gwati Earring",
left_ring="Levia. Ring +1",
right_ring="Perception Ring",
back="Izdubar Mantle",}
sets.midcast.IntEnfeebles = {
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head="Befouled Crown",
body={ name="Vanya Robe", augments={'MND+10','Spell interruption rate down +15%','"Conserve MP"+6',}},
hands="Lurid Mitts",
legs={ name="Psycloth Lappas", augments={'MP+80','Mag. Acc.+15','"Fast Cast"+7',}},
feet={ name="Medium's Sabots", augments={'MP+30','MND+8','"Cure" potency +2%',}},
neck="Incanter's Torque",
waist="Luminary Sash",
right_ear="Barkaro. Earring",
right_ear="Gwati Earring",
left_ring="Levia. Ring +1",
right_ring="Perception Ring",
back="Izdubar Mantle",}
sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
sets.midcast.Kaustra = {
ammo="Pemphredo Tathlum",
head="Pixie Hairpin +1",
body={ name="Merlinic Jubbah", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','DEX+7','Mag. Acc.+7','"Mag.Atk.Bns."+13',}},
hands={ name="Amalric Gages", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
legs={ name="Merlinic Shalwar", augments={'"Mag.Atk.Bns."+29','Magic burst mdg.+9%','INT+6','Mag. Acc.+12',}},
feet="Arbatel Loafers +1",
neck="Mizu. Kubikazari",
waist="Hachirin-no-Obi",
left_ear="Barkaro. Earring",
right_ear="Static Earring",
left_ring="Mujin Band",
right_ring="Archon Ring",
back="Seshaw Cape",}
sets.midcast['Dark Magic'] = {
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head={ name="Chironic Hat", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','"Drain" and "Aspir" potency +9','CHR+1','Mag. Acc.+12',}},
body={ name="Psycloth Vest", augments={'Mag. Acc.+10','Spell interruption rate down +15%','MND+7',}},
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','INT+6','Mag. Acc.+10','"Mag.Atk.Bns."+14',}},
legs={ name="Amalric Slops", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
feet={ name="Amalric Nails", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
neck="Incanter's Torque",
waist="Luminary Sash",
right_ear="Barkaro. Earring",
right_ear="Digni. Earring",
left_ring="Levia. Ring +1",
right_ring="Perception Ring",
back={ name="Bookworm's Cape", augments={'INT+3','MND+1','Helix eff. dur. +20',}},}
sets.midcast.Drain = {
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head={ name="Chironic Hat", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','"Drain" and "Aspir" potency +9','CHR+1','Mag. Acc.+12',}},
body={ name="Psycloth Vest", augments={'Mag. Acc.+10','Spell interruption rate down +15%','MND+7',}},
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','INT+6','Mag. Acc.+10','"Mag.Atk.Bns."+14',}},
legs={ name="Amalric Slops", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
feet={ name="Amalric Nails", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
neck="Incanter's Torque",
waist="Fucho-no-Obi",
right_ear="Barkaro. Earring",
right_ear="Digni. Earring",
right_ring="Archon Ring",
right_ring="Perception Ring",
back={ name="Bookworm's Cape", augments={'INT+3','MND+1','Helix eff. dur. +20',}},}
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Stun = {
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head={ name="Chironic Hat", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','"Drain" and "Aspir" potency +9','CHR+1','Mag. Acc.+12',}},
body={ name="Psycloth Vest", augments={'Mag. Acc.+10','Spell interruption rate down +15%','MND+7',}},
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','INT+6','Mag. Acc.+10','"Mag.Atk.Bns."+14',}},
legs={ name="Amalric Slops", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
feet={ name="Amalric Nails", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
neck="Incanter's Torque",
waist="Luminary Sash",
right_ear="Barkaro. Earring",
right_ear="Digni. Earring",
left_ring="Levia. Ring +1",
right_ring="Perception Ring",
back={ name="Bookworm's Cape", augments={'INT+3','MND+1','Helix eff. dur. +20',}},}
sets.midcast.Stun.Resistant = set_combine(sets.midcast.Stun, {})
-- Elemental Magic sets are default for handling low-tier nukes.
sets.midcast['Elemental Magic'] ={
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head={ name="Merlinic Hood", augments={'Mag. Acc.+23 "Mag.Atk.Bns."+23','Magic burst mdg.+10%','INT+5','Mag. Acc.+13','"Mag.Atk.Bns."+14',}},
body={ name="Merlinic Jubbah", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','DEX+7','Mag. Acc.+7','"Mag.Atk.Bns."+13',}},
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','INT+6','Mag. Acc.+10','"Mag.Atk.Bns."+14',}},
legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','"Conserve MP"+4','DEX+9','Mag. Acc.+13','"Mag.Atk.Bns."+10',}},
feet="Arbatel Loafers +1",
neck="Sanctity Necklace",
waist="Hachirin-no-Obi",
left_ear="Friomisi Earring",
right_ear="Barkarole Earring",
left_ring="Acumen Ring",
right_ring="Shiva Ring +1",
back="Toro Cape",}
sets.midcast['Elemental Magic'].Resistant = {
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head={ name="Merlinic Hood", augments={'Mag. Acc.+23 "Mag.Atk.Bns."+23','Magic burst mdg.+10%','INT+5','Mag. Acc.+13','"Mag.Atk.Bns."+14',}},
body={ name="Merlinic Jubbah", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','DEX+7','Mag. Acc.+7','"Mag.Atk.Bns."+13',}},
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','INT+6','Mag. Acc.+10','"Mag.Atk.Bns."+14',}},
legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','"Conserve MP"+4','DEX+9','Mag. Acc.+13','"Mag.Atk.Bns."+10',}},
feet="Arbatel Loafers +1",
neck="Sanctity Necklace",
waist="Hachirin-no-Obi",
left_ear="Friomisi Earring",
right_ear="Barkarole Earring",
left_ring="Acumen Ring",
right_ring="Shiva Ring +1",
back="Toro Cape",}
-- Custom refinements for certain nuke tiers
sets.midcast['Elemental Magic'].HighTierNuke = set_combine(sets.midcast['Elemental Magic'], {sub="Niobid Strap"})
sets.midcast['Elemental Magic'].HighTierNuke.Resistant = set_combine(sets.midcast['Elemental Magic'].Resistant, {sub="Niobid Strap"})
sets.midcast.Impact = {}
sets.midcast.Helix ={
ammo="Pemphredo Tathlum",
head={ name="Merlinic Hood", augments={'Mag. Acc.+23 "Mag.Atk.Bns."+23','Magic burst mdg.+10%','INT+5','Mag. Acc.+13','"Mag.Atk.Bns."+14',}},
body={ name="Merlinic Jubbah", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','DEX+7','Mag. Acc.+7','"Mag.Atk.Bns."+13',}},
hands={ name="Amalric Gages", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','"Conserve MP"+4','DEX+9','Mag. Acc.+13','"Mag.Atk.Bns."+10',}},
feet="Arbatel Loafers +1",
neck="Mizu. Kubikazari",
waist="Hachirin-no-Obi",
left_ear="Barkaro. Earring",
right_ear="Friomisi Earring",
left_ring="Mujin Band",
right_ring="Locus Ring",
back="Seshaw Cape",}
sets.midcast.Noctohelix = {
ammo="Pemphredo Tathlum",
head="Pixie Hairpin +1",
body={ name="Merlinic Jubbah", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','DEX+7','Mag. Acc.+7','"Mag.Atk.Bns."+13',}},
hands={ name="Amalric Gages", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
legs={ name="Merlinic Shalwar", augments={'"Mag.Atk.Bns."+29','Magic burst mdg.+9%','INT+6','Mag. Acc.+12',}},
feet="Arbatel Loafers +1",
neck="Mizu. Kubikazari",
waist="Hachirin-no-Obi",
left_ear="Barkaro. Earring",
right_ear="Static Earring",
left_ring="Mujin Band",
right_ring="Archon Ring",
back="Seshaw Cape",}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head="Befouled Crown",
body={ name="Witching Robe", augments={'MP+40','Mag. Acc.+12','"Mag.Atk.Bns."+8',}},
hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -4%','Magic dmg. taken -2%','"Cure" spellcasting time -3%',}},
legs="Assid. Pants +1",
feet={ name="Amalric Nails", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
neck="Sanctity Necklace",
waist="Fucho-no-Obi",
left_ear="Magnetic Earring",
right_ear="Infused Earring",
left_ring="Sheltered Ring",
right_ring="Shneddick Ring",
back="Solemnity Cape",}
-- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
sets.idle.Town ={
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head="Befouled Crown",
body={ name="Witching Robe", augments={'MP+40','Mag. Acc.+12','"Mag.Atk.Bns."+8',}},
hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -4%','Magic dmg. taken -2%','"Cure" spellcasting time -3%',}},
legs="Assid. Pants +1",
feet={ name="Amalric Nails", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
neck="Sanctity Necklace",
waist="Fucho-no-Obi",
left_ear="Etiolation Earring",
right_ear="Infused Earring",
left_ring="Sheltered Ring",
right_ring="Shneddick Ring",
back="Solemnity Cape",}
sets.idle.Field = {
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head="Befouled Crown",
body={ name="Witching Robe", augments={'MP+40','Mag. Acc.+12','"Mag.Atk.Bns."+8',}},
hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -4%','Magic dmg. taken -2%','"Cure" spellcasting time -3%',}},
legs="Assid. Pants +1",
feet={ name="Amalric Nails", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
neck="Sanctity Necklace",
waist="Fucho-no-Obi",
left_ear="Etiolation Earring",
right_ear="Infused Earring",
left_ring="Sheltered Ring",
right_ring="Shneddick Ring",
back="Solemnity Cape",}
sets.idle.Field.PDT = {
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head="Befouled Crown",
body={ name="Witching Robe", augments={'MP+40','Mag. Acc.+12','"Mag.Atk.Bns."+8',}},
hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -4%','Magic dmg. taken -2%','"Cure" spellcasting time -3%',}},
legs="Assid. Pants +1",
feet={ name="Amalric Nails", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
neck="Loricate torque +1",
waist="Fucho-no-Obi",
left_ear="Etiolation Earring",
right_ear="Infused Earring",
left_ring="Defending Ring",
right_ring="Shneddick Ring",
back="Solemnity Cape",}
sets.idle.Field.Stun = {
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head="Befouled Crown",
body={ name="Witching Robe", augments={'MP+40','Mag. Acc.+12','"Mag.Atk.Bns."+8',}},
hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -4%','Magic dmg. taken -2%','"Cure" spellcasting time -3%',}},
legs="Assid. Pants +1",
feet={ name="Amalric Nails", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
neck="Sanctity Necklace",
waist="Fucho-no-Obi",
left_ear="Etiolation Earring",
right_ear="Infused Earring",
left_ring="Sheltered Ring",
right_ring="Shneddick Ring",
back="Solemnity Cape",}
sets.idle.Weak = {
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head="Befouled Crown",
body={ name="Witching Robe", augments={'MP+40','Mag. Acc.+12','"Mag.Atk.Bns."+8',}},
hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -4%','Magic dmg. taken -2%','"Cure" spellcasting time -3%',}},
legs="Assid. Pants +1",
feet={ name="Amalric Nails", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
neck="Sanctity Necklace",
waist="Fucho-no-Obi",
left_ear="Etiolation Earring",
right_ear="Infused Earring",
left_ring="Sheltered Ring",
right_ring="Shneddick Ring",
back="Solemnity Cape",}
-- Defense sets
sets.defense.PDT = {main=gear.Staff.PDT,
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head="Befouled Crown",
body={ name="Witching Robe", augments={'MP+40','Mag. Acc.+12','"Mag.Atk.Bns."+8',}},
hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -4%','Magic dmg. taken -2%','"Cure" spellcasting time -3%',}},
legs="Assid. Pants +1",
feet={ name="Amalric Nails", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
neck="Loricate torque +1",
waist="Fucho-no-Obi",
left_ear="Etiolation Earring",
right_ear="Infused Earring",
left_ring="Defending Ring",
right_ring="Shneddick Ring",
back="Solemnity Cape",}
sets.defense.MDT = {main=gear.Staff.PDT,
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head="Befouled Crown",
body={ name="Witching Robe", augments={'MP+40','Mag. Acc.+12','"Mag.Atk.Bns."+8',}},
hands={ name="Gende. Gages +1", augments={'Phys. dmg. taken -4%','Magic dmg. taken -2%','"Cure" spellcasting time -3%',}},
legs="Assid. Pants +1",
feet={ name="Amalric Nails", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
neck="Loricate torque +1",
waist="Fucho-no-Obi",
left_ear="Etiolation Earring",
right_ear="Infused Earring",
left_ring="Sheltered Ring",
right_ring="Shneddick Ring",
back="Solemnity Cape",}
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 = { main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head={ name="Chironic Hat", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','"Drain" and "Aspir" potency +9','CHR+1','Mag. Acc.+12',}},
body={ name="Witching Robe", augments={'MP+40','Mag. Acc.+12','"Mag.Atk.Bns."+8',}},
hands={ name="Chironic Gloves", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','INT+6','Mag. Acc.+10','"Mag.Atk.Bns."+14',}},
legs="Assid. Pants +1",
feet={ name="Amalric Nails", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
neck="Sanctity Necklace",
waist="Luminary Sash",
left_ear="Magnetic Earring",
right_ear="Infused Earring",
left_ring="Sheltered ring",
right_ring="Shneddick Ring",
back="Solemnity Cape",}
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Ebullience'] = {head="Arbatel Bonnet +1"}
sets.buff['Rapture'] = {head="Arbatel Bonnet +1"}
sets.buff['Perpetuance'] = {hands="Arbatel Bracers +1"}
sets.buff['Immanence'] = {hands="Arbatel Bracers +1"}
sets.buff['Penury'] = {legs="Arbatel Pants +1"}
sets.buff['Parsimony'] = {legs="Arbatel Pants +1"}
sets.buff['Celerity'] = {feet={ name="Peda. Loafers +1", augments={'Enhances "Stormsurge" effect',}},}
sets.buff['Alacrity'] = {head="Nahtirah Hat",feet="Pedagogy Loafers +1"}
sets.buff['Stormsurge'] = {feet={ name="Peda. Loafers +1", augments={'Enhances "Stormsurge" effect',}},}
sets.buff['Klimaform'] = {feet="Arbatel Loafers +1"}
sets.buff.FullSublimation = {head="Academic's Mortarboard +1",ear1="Savant's Earring",body="Pedagogy Gown +1"}
sets.buff.PDTSublimation = {head="Academic's Mortarboard +1",ear1="Savant's Earring"}
sets.magic_burst ={
main={ name="Grioavolr", augments={'Magic burst mdg.+9%','INT+13','Mag. Acc.+30','"Mag.Atk.Bns."+26','Magic Damage +4',}},
sub="Niobid Strap",
ammo="Pemphredo Tathlum",
head={ name="Merlinic Hood", augments={'Mag. Acc.+23 "Mag.Atk.Bns."+23','Magic burst mdg.+10%','INT+5','Mag. Acc.+13','"Mag.Atk.Bns."+14',}},
body={ name="Merlinic Jubbah", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','DEX+7','Mag. Acc.+7','"Mag.Atk.Bns."+13',}},
hands={ name="Amalric Gages", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}},
legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','"Conserve MP"+4','DEX+9','Mag. Acc.+13','"Mag.Atk.Bns."+10',}},
feet="Arbatel Loafers +1",
neck="Mizu. Kubikazari",
waist="Hachirin-no-Obi",
left_ear="Barkaro. Earring",
right_ear="Static Earring",
left_ring="Mujin Band",
right_ring="Locus Ring",
back="Seshaw Cape",}
--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.day_element or spell.element == world.weather_element then
if info.low_nukes:contains(spell.english) then
equip(sets.midcast['Elemental Magic'], {ring1="Zodiac Ring",back="Twilight Cape"})
elseif info.high_nukes:contains(spell.english) then
equip(sets.midcast['Elemental Magic'].HighTierNuke, {ring1="Zodiac Ring",back="Twilight Cape"})
end
end
if spell.skill == 'Elemental Magic' then
if state.MagicBurst.value then
equip(sets.magic_burst)
end
end
if spell.skill == 'Enhancing Magic' then
equip(sets.midcast.EnhancingDuration)
end
if spellMap == 'Cure' and spell.target.type == 'SELF' then
equip(sets.midcast.CureSelf)
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
if 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 == 'Offense Mode' then
if newValue == 'Normal' then
disable('main','sub','range')
else
enable('main','sub','range')
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
if spell.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'
elseif info.high_nukes:contains(spell.english) then
return 'HighTierNuke'
end
end
end
end
function customize_idle_set(idleSet)
if state.Buff['Sublimation: Activated'] then
if state.IdleMode.value == 'Normal' then
idleSet = set_combine(idleSet, sets.buff.FullSublimation)
elseif state.IdleMode.value == '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
-- 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.value == '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)
display_current_caster_state()
eventArgs.handled = true
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
-------------------------------------------------------------------------------------------------------------------
-- 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
function display_current_caster_state()
local msg = ''
if state.OffenseMode.value ~= 'None' then
msg = msg .. 'Melee'
if state.CombatForm.has_value then
msg = msg .. ' (' .. state.CombatForm.value .. ')'
end
msg = msg .. ', '
end
msg = msg .. 'Idle ['..state.IdleMode.value..'], Casting ['..state.CastingMode.value..']'
add_to_chat(122, msg)
local currentStrats = get_current_strategem_count()
local arts
if buffactive['Light Arts'] or buffactive['Addendum: White'] then
arts = 'Light Arts'
elseif buffactive['Dark Arts'] or buffactive['Addendum: Black'] then
arts = 'Dark Arts'
else
arts = 'No Arts Activated'
end
add_to_chat(122, 'Current Available Strategems: ['..currentStrats..'], '..arts..'')
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 currentStrats = get_current_strategem_count()
local newStratCount = currentStrats - 1
local strategem = cmdParams[2]:lower()
if currentStrats > 0 and strategem ~= 'light' and strategem ~= 'dark' then
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
elseif currentStrats == 0 then
add_to_chat(122, '***Out of strategems! Canceling...***')
return
end
if strategem == 'light' then
if buffactive['light arts'] then
send_command('input /ja "Addendum: White" <me>')
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
elseif buffactive['addendum: white'] then
add_to_chat(122,'Error: Addendum: White is already active.')
elseif buffactive['dark arts'] or buffactive['addendum: black'] then
send_command('input /ja "Light Arts" <me>')
add_to_chat(122, '***Changing Arts! Current Charges Available: ['..currentStrats..']***')
else
send_command('input /ja "Light Arts" <me>')
end
elseif strategem == 'dark' then
if buffactive['dark arts'] then
send_command('input /ja "Addendum: Black" <me>')
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
elseif buffactive['addendum: black'] then
add_to_chat(122,'Error: Addendum: Black is already active.')
elseif buffactive['light arts'] or buffactive['addendum: white'] then
send_command('input /ja "Dark Arts" <me>')
add_to_chat(122, '***Changing Arts! Current Charges Available: ['..currentStrats..']***')
else
send_command('input /ja "Dark Arts" <me>')
end
elseif 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
function get_current_strategem_count()
local allRecasts = windower.ffxi.get_ability_recasts()
local stratsRecast = allRecasts[231]
local maxStrategems = math.floor(player.main_job_level + 10) / 20
local fullRechargeTime = 5*33
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, 8)
end
Bismarck.Speedyjim
Server: Bismarck
Game: FFXI
Posts: 516
By Bismarck.Speedyjim 2016-06-05 19:55:44
I had the same issue and this is what fixed it.
Change the and to an or on line 813, or completely remove the and spellMap ~= 'ElementalEnfeeble'
Code if spell.skill == 'Elemental Magic' or 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
Bismarck.Speedyjim
Server: Bismarck
Game: FFXI
Posts: 516
By Bismarck.Speedyjim 2016-06-05 19:57:58
You should also look into creating aliases for all your augmented gear and use set_combine to not repeat gear so often, as when it comes down to replace a piece, you'll have to edit tons of lines.
Bahamut.Neb
Server: Bahamut
Game: FFXI
Posts: 189
By Bahamut.Neb 2016-06-05 20:38:25
It still isn't working seem as though Storm as a set wont activate do i need to add something somewhere else to make Storm as a set work?
Bismarck.Speedyjim
Server: Bismarck
Game: FFXI
Posts: 516
By Bismarck.Speedyjim 2016-06-05 21:09:39
Are you talking about Stormsurge, or Storm-spells i.e. Thunderstorm II?
Bahamut.Neb
Server: Bahamut
Game: FFXI
Posts: 189
By Bahamut.Neb 2016-06-05 21:33:32
Storm-spells yes
Bismarck.Speedyjim
Server: Bismarck
Game: FFXI
Posts: 516
By Bismarck.Speedyjim 2016-06-05 21:38:40
Could be that you have 2 sets.midcast.Storm sets. Also, your second storm set is identical to your Enhancing Magic set, thus it's redundant. Remove them both and try again.
Bahamut.Neb
Server: Bahamut
Game: FFXI
Posts: 189
By Bahamut.Neb 2016-06-05 22:21:24
ya tried none tried one at at a time and nada no loafers I'm lost
Bismarck.Speedyjim
Server: Bismarck
Game: FFXI
Posts: 516
By Bismarck.Speedyjim 2016-06-05 22:45:45
Hopefully somebody else, like Flippant, can find your issue. In the meantime, you can try my LUA and paste your gear sets over mine and test.
Code -------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-- Original LUA by Fenrir.Motenten; edited by Bismarck.Speedyjim
-------------------------------------------------------------------------------------------------------------------
--[[
Custom commands:64
Shorthand versions for each strategem type that uses the version appropriate for
the current Arts.
In-game macro: /console gs c scholar xxx
Light Arts Dark Arts
gs c scholar light Light Arts/Addendum
gs c scholar dark Dark Arts/Addendum
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()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
include('organizer-lib')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
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
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('None', 'Normal')
state.CastingMode:options('Normal', 'Resistant')
state.IdleMode:options('Normal', 'PDT')
state.MagicBurst = M(false, 'Magic Burst')
info.low_nukes = 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",
"Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",
"Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
info.mid_nukes = S{}
info.high_nukes = S{}
send_command('bind ` input /ma Stun <t>; wait 0.5; input /p Casting STUN → «¶«<t>«¶«.')
send_command('bind ^` gs c toggle MagicBurst')
send_command('bind !` input /ja "Sublimation" <me>')
send_command('bind ^- gs c scholar light')
send_command('bind ^= gs c scholar dark')
send_command('bind @- gs c scholar cost')
send_command('bind @= gs c scholar power')
send_command('bind delete gs c scholar speed')
send_command('bind Home gs c scholar duration')
send_command('bind End gs c scholar aoe')
select_default_macro_book()
end
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 @=')
send_command('unbind delete')
send_command('unbind end')
send_command('unbind home')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Precast sets to enhance JAs
sets.precast.JA['Tabula Rasa'] = {legs="Pedagogy Pants"}
sets.precast.JA['Dark Arts'] = {"Academic's Gown +1"}
sets.precast.JA['Light Arts'] = {"Academic's Pants +1"}
organizer_items = {agown="Academic's Gown +1"}
-- Fast cast sets for spells
-- FC +71%, Quick Magic +10% (cap)
sets.precast.FC = {main=grio_MB,sub="Arbuda Grip",ammo="Incantor Stone",
head=merl_head_FC,neck="Orunmila's Torque",ear1="Enchanter Earring +1",ear2="Loquacious Earring",
body="Anhur Robe",hands="Gendewitha Gages +1",ring1="Weatherspoon Ring",ring2="Prolix Ring",
back="Perimede Cape",waist="Witful Belt",legs="Psycloth Lappas",feet=merl_feet_FC}
sets.precast.FC.Cure = set_combine(sets.precast.FC, {main="Serenity",head="Paean Mitra",ear1="Mendicant's Earring",body="Vanya Robe",hands="Gendewitha Gages +1",back="Pahtli Cape",feet="Vanya Clogs"})
sets.precast.FC.Curaga = sets.precast.FC.Cure
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {neck="Stoicheion Medal",ear1="Barkarole Earring"})
sets.precast.FC.Impact = set_combine(sets.precast.FC['Elemental Magic'], {head=empty,body="Twilight Cloak"})
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
-- Total MP: 2221 (Outside Escha), ???? (Inside Escha)
sets.precast.WS['Myrkr'] = {main="Akademos",sub="Niobid Strap",ammo="Ghastly Tathlum +1",
head="Kaabnax Hat",neck="Sanctity Necklace",ear1="Moonshade Earring",ear2="Etiolation Earring",
body="Amalric Doublet",hands="Otomi Gloves",ring1="Mephitas's Ring +1",ring2="Mephitas's Ring",
back="Pahtli Cape",waist="Luminary Sash",legs="Amalric Slops",feet="Medium's Sabots"}
-- Midcast Sets
sets.midcast.FastRecast = {back="Swith Cape +1"}
-- Cure Sets
-- Potency: +51%, Healing Skill: 610 total inc. Light Arts bonus, Enmity: -20, MND: +168, VIT: +87
sets.midcast.Cure = {main="Serenity",sub="Curatio Grip",ammo="Hydrocera",
head="Kaykaus Mitra",neck="Incanter's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Kaykaus Bliaut",hands="Pedagogy Bracers +1",ring1="Haoma's Ring",ring2="Sirona's Ring",
back="Tempered Cape +1",waist="Bishop's Sash",legs="Academic's Pants +1",feet="Vanya Clogs"}
-- Potency: +50%, Healing Skill: 562 total inc. Light Arts Bonus, MND: +160, VIT+ 89
sets.midcast.CureWithLightWeather = set_combine(sets.midcast.Cure, {
main="Chatoyant Staff",ear2="Mendicant's Earring",body="Kaykaus Bliaut",hands="Telchine Gloves",back="Twilight Cape",waist="Hachirin-no-Obi"})
sets.midcast.Curaga = sets.midcast.Cure
sets.midcast.Regen = {main="Bolelabunga",sub="Genmei Shield",ammo="Savant's Treatise",
head="Arbatel Bonnet +1",neck="Incanter's Torque",ear1="Andoaa Earring",
body="Telchine Chasuble",hands="Telchine Gloves",
back="Bookworm's Cape",waist="Cascade Belt",legs="Telchine Braconi",feet="Telchine Pigaches"}
-- Enhancing Magic Sets
sets.midcast['Enhancing Magic'] = {main=grio_ENH,sub="Arbuda Grip",ammo="Savant's Treatise",
head="Telchine Cap",body="Telchine Chasuble",hands="Telchine Gloves",legs="Telchine Braconi",feet="Telchine Pigaches",
ear1="Andoaa Earring",neck="Incanter's Torque",waist="Cascade Belt"}
sets.midcast.Protect = set_combine(sets.midcast['Enhancing Magic'], {ring1="Sheltered Ring"})
sets.midcast.Shell = set_combine(sets.midcast['Enhancing Magic'], {ring1="Sheltered Ring"})
sets.midcast.Haste = set_combine(sets.midcast.FastRecast, {main=grio_ENH,sub="Arbuda Grip",
head="Telchine Cap",body="Telchine Chasuble",hands="Telchine Gloves",legs="Telchine Braconi",feet="Telchine Pigaches"})
sets.midcast.Cursna = {main="Gada",sub="Genmei Shield",
neck="Malison Medallion",body="Vanya Robe",hands="Pedagogy Bracers +1",ring1="Haoma's Ring",ring2="Ephedra Ring",
back="Tempered Cape +1",waist="Bishop's Sash",legs="Academic's Pants +1",feet="Gendewitha Galoshes +1"}
sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
sets.midcast.Refresh = set_combine(sets.midcast['Enhancing Magic'], {waist="Gishdubar Sash",feet="Inspirited Boots"})
sets.midcast.Erase = sets.midcast.FastRecast
sets.midcast.Klimaform = sets.midcast.FastRecast
-- Custom spell classes
sets.midcast.MndEnfeebles = {main=grio_MB,sub="Mephitis Grip",ammo="Hydrocera",
head=merl_head_MAB,neck="Imbodla Necklace",ear1="Barkarole Earring",ear2="Dignitary's Earring",
body="Vanya Robe",hands="Lurid Mitts",ring1="Vertigo Ring",ring2="Globidonta Ring",
back="Refraction Cape",waist="Luminary Sash",legs=chiro_legs_ENF,feet="Medium's Sabots"}
sets.midcast.IntEnfeebles = sets.midcast.MndEnfeebles
sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
sets.midcast.Kaustra = set_combine(sets.midcast['Elemental Magic'], {head="Pixie Hairpin +1"})
sets.midcast['Dark Magic'] = {main="Rubicundity",sub="Genmei Shield",ammo="Hydrocera",
head=merl_head_MAB,neck="Incanter's Torque",ear1="Barkarole Earring",ear2="Dignitary's Earring",
body="Psycloth Vest",hands="Lurid Mitts",ring1="Weatherspoon Ring",ring2="Evanescence Ring",
back="Bookworm's Cape",waist="Witful Belt",legs="Pedagogy Pants",feet="Medium's Sabots"}
sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {ammo="Incantor Stone",
head="Pixie Hairpin +1",ear1="Hirudinea Earring",ear2="Loquacious Earring",body="Chironic Doublet",hands=merl_hands_AS,waist="Fucho-no-obi",legs=merl_legs_AS,feet=merl_feet_MAB})
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Stun = {main=grio_MB,sub="Arbuda Grip",ammo="Incantor Stone",
head="Pedagogy Mortarboard +1",neck="Orunmila's Torque",ear1="Enchanter Earring +1",ear2="Loquac. Earring",
body="Shango Robe",hands="Gendewitha Gages +1",ring1="Weatherspoon Ring",ring2="Prolix Ring",
back="Swith Cape +1",waist="Ninurta's Sash",legs="Psycloth Lappas",feet="Academic's Loafers +1"}
sets.midcast.Stun.Resistant = set_combine(sets.midcast.Stun, {})
-- Elemental Magic sets are default for handling all-tier nukes.
sets.midcast['Elemental Magic'] = {main="Akademos",sub="Niobid Strap",ammo="Pemphredo Tathlum",
head=merl_head_MAB,neck="Saevus Pendant +1",ear1="Barkarole Earring",ear2="Friomisi Earring",
body="Merlinic Jubbah",hands=chiro_hands_MAB,ring1="Shiva Ring +1",ring2="Shiva Ring +1",
back="Toro Cape",waist="Refoccilation Stone",legs=merl_legs_MAB,feet=merl_feet_MAB}
-- sub="Zuuxowu Grip",head="Buremte Hat",body="Witching Robe",hands="Otomi Gloves",back="Bookworm's Cape",waist="Tengu-no-Obi",feet="Amalric Nails"
sets.midcast['Elemental Magic'].Resistant = set_combine(sets.midcast['Elemental Magic'], {neck="Sanctity Necklace",back="Bookworm's Cape"})
-- Custom refinements for certain nuke tiers (No longer used as of Jan/2016).
sets.midcast['Elemental Magic'].HighTierNuke = sets.midcast['Elemental Magic']
sets.midcast['Elemental Magic'].HighTierNuke.Resistant = sets.midcast['Elemental Magic'].Resistant
sets.midcast.Helix = set_combine(sets.midcast['Elemental Magic'], {neck="Sanctity Necklace",back="Bookworm's Cape"})
sets.midcast.Noctohelix = set_combine(sets.midcast.Helix, {head="Pixie Hairpin +1"})
sets.midcast.Luminohelix = set_combine(sets.midcast.Helix, {ring1="Weatherspoon Ring"})
sets.midcast.Impact = {main="Akademos",sub="Mephitis Grip",ammo="Hydrocera",
head=empty,neck="Sanctity Necklace",ear1="Barkarole Earring",ear2="Gwati Earring",
body="Twilight Cloak",hands=chiro_hands_MAB,ring1="Weatherspoon Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Luminary Sash",legs=chiro_legs_ENF,feet="Medium's Sabots"}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {main="Chatoyant Staff",sub="Mephitis Grip",
neck="Wiglen Gorget",body="Amalric Doublet",hands="Serpentes Cuffs",
ring1="Sheltered Ring",ring2="Paguroidea Ring",legs="Assiduity Pants +1",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="Akademos",sub="Niobid Strap",ammo="Hydrocera",
head=merl_head_MAB,neck="Orunmila's Torque",ear1="Enchanter Earring +1",ear2="Loquacious Earring",
body="Merlinic Jubbah",hands=chiro_hands_REF,ring1="Shiva Ring +1",ring2="Matrimony Ring",
back="Bookworm's Cape",waist="Fucho-no-obi",legs=merl_legs_MAB,feet="Herald's Gaiters"}
sets.idle.Field = {main="Bolelabunga",sub="Genmei Shield",ammo="Homiliary",
head="Befouled Crown",neck="Loricate Torque +1",ear1="Etiolation Earring",ear2="Loquacious Earring",
body="Amalric Doublet",hands=chiro_hands_REF,ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Umbra Cape",waist="Witful Belt",legs="Assiduity Pants +1",feet="Gendewitha Galoshes +1"}
sets.idle.PDT = {main="Bolelabunga",sub="Genmei Shield",ammo="Incantor Stone",
neck="Loricate Torque +1",ear1="Ethereal Earring",ring1="Defending Ring",ring2=gear.DarkRing.physical,
body="Vanya Robe",hands="Gendewitha Gages +1",back="Umbra Cape",feet="Pedagogy Loafers +1"}
sets.idle.Weak = sets.idle.Field
-- Defense sets
sets.defense.PDT = {main="Bolelabunga",sub="Genmei Shield",ammo="Incantor Stone",
head="Befouled Crown",neck="Loricate Torque +1",ear1="Ethereal Earring",
body="Gendewitha Bliaut +1",hands="Gendewitha Gages +1",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Umbra Cape",legs=chiro_legs_ENF,feet="Gendewitha Galoshes +1"}
sets.defense.MDT = {
head=merl_head_MAB,neck="Loricate Torque +1",
body="Pedagogy Gown +1",hands=chiro_hands_MAB,ring1="Defending Ring",ring2="Shadow Ring",
back="Umbra Cape",legs=chiro_legs_ENF,feet="Arbatel Loafers +1"}
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 = {}
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Ebullience'] = {}
sets.buff['Rapture'] = {head="Arbatel Bonnet +1"}
sets.buff['Perpetuance'] = {hands="Arbatel Bracers +1"}
sets.buff['Immanence'] = {hands="Arbatel Bracers +1"}
sets.buff['Penury'] = {legs="Arbatel Pants +1"}
sets.buff['Parsimony'] = {legs="Arbatel Pants +1"}
sets.buff['Celerity'] = {feet="Pedagogy Loafers +1"}
sets.buff['Alacrity'] = {head=merl_head_MAB,feet="Pedagogy Loafers +1"}
sets.buff['Stormsurge'] = {feet="Pedagogy Loafers +1"}
sets.buff['Klimaform'] = {waist="Hachirin-no-Obi",feet="Arbatel Loafers +1"}
sets.buff.FullSublimation = {head="Academic's Mortarboard +1",ear1="Savant's Earring",body="Pedagogy Gown +1",neck="Wiglen Gorget",ring1="Sheltered Ring",ring2="Paguroidea Ring"}
sets.buff.PDTSublimation = {head="Academic's Mortarboard +1",ear1="Savant's Earring",body="Pedagogy Gown +1"}
sets.magic_burst = {main="Akademos",sub="Niobid Strap",
neck="Mizukage-no-Kubikazari",body=merl_body_MB,hands="Amalric Gages",ring1="Mujin Band",legs=merl_legs_MB}
-- Cap: 40%, Cap-breaking: 23% (Gifts: 13%, Mujin: 5%, Amalric Gages: 5%)
-- Akademos: 10%, Mizukage: 10%, Merlinic Body: 10%, Merlinic Legs: 8% = 38%
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
function refine_various_spells(spell, action, spellMap, eventArgs)
aspirs = S{'Aspir','Aspir II'}
sleeps = S{'Sleep','Sleep II'}
sleepgas = S{'Sleepga'}
if not sleepgas:contains(spell.english) and not sleeps:contains(spell.english) and not aspirs:contains(spell.english) then
return
end
local newSpell = spell.english
local spell_recasts = windower.ffxi.get_spell_recasts()
local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
if spell_recasts[spell.recast_id] > 0 then
if aspirs:contains(spell.english) then
if spell.english == 'Aspir' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Aspir II' then
newSpell = 'Aspir'
end
elseif sleeps:contains(spell.english) then
if spell.english == 'Sleep' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Sleep II' then
newSpell = 'Sleep'
end
elseif sleepgas:contains(spell.english) then
if spell.english == 'Sleepga' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
end
end
end
if newSpell ~= spell.english then
send_command('@input /ma "'..newSpell..'" '..tostring(spell.target.raw))
eventArgs.cancel = true
return
end
end
function job_precast(spell, action, spellMap, eventArgs)
refine_various_spells(spell, action, spellMap, eventArgs)
if (spell.type:endswith('Magic') or spell.type == "Ninjutsu") then
if buffactive.Silence then
cancel_spell()
send_command('input /item "Echo Drops" <me>')
end
end
end
-- Run after the general 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.skill == 'Elemental Magic' then
if state.MagicBurst.value then
equip(sets.magic_burst)
end
end
if spell.skill == 'Elemental Magic' and spell.element == world.day_element or spell.element == world.weather_element then
equip ({waist="Hachirin-no-Obi"})
end
end
function job_aftercast(spell)
if spell.english == 'Sleep' or spell.english == 'Sleepga' then
send_command('@wait 50;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
elseif spell.english == 'Sleep II' or spell.english == 'Sleepga II' then
send_command('@wait 80;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
elseif spell.english == 'Break' or spell.english == 'Breakga' then
send_command('@wait 20;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
if 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 == 'Offense Mode' then
if newValue == 'Normal' then
disable('main','sub','range')
else
enable('main','sub','range')
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
if spell.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'
elseif info.high_nukes:contains(spell.english) then
return 'HighTierNuke'
end
end
end
end
function customize_idle_set(idleSet)
if state.Buff['Sublimation: Activated'] then
if state.IdleMode.value == 'Normal' then
idleSet = set_combine(idleSet, sets.buff.FullSublimation)
elseif state.IdleMode.value == '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
-- 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.value == '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)
display_current_caster_state()
eventArgs.handled = true
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
-------------------------------------------------------------------------------------------------------------------
-- 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' then --or spellMap ~= 'ElementalEnfeeble'
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.skill == "Elemental Magic" 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
function display_current_caster_state()
local msg = ''
if state.OffenseMode.value ~= 'None' then
msg = msg .. 'Melee'
if state.CombatForm.has_value then
msg = msg .. ' (' .. state.CombatForm.value .. ')'
end
msg = msg .. ', '
end
msg = msg .. 'Idle ['..state.IdleMode.value..'], Casting ['..state.CastingMode.value..']'
add_to_chat(122, msg)
local currentStrats = get_current_strategem_count()
local arts
if buffactive['Light Arts'] or buffactive['Addendum: White'] then
arts = 'Light Arts'
elseif buffactive['Dark Arts'] or buffactive['Addendum: Black'] then
arts = 'Dark Arts'
else
arts = 'No Arts Activated'
end
add_to_chat(122, 'Current Available Strategems: ['..currentStrats..'], '..arts..'')
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 currentStrats = get_current_strategem_count()
local newStratCount = currentStrats - 1
local strategem = cmdParams[2]:lower()
if currentStrats > 0 and strategem ~= 'light' and strategem ~= 'dark' then
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
elseif currentStrats == 0 then
add_to_chat(122, '***Out of strategems! Canceling...***')
return
end
if strategem == 'light' then
if buffactive['light arts'] then
send_command('input /ja "Addendum: White" <me>')
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
elseif buffactive['addendum: white'] then
add_to_chat(122,'Error: Addendum: White is already active.')
elseif buffactive['dark arts'] or buffactive['addendum: black'] then
send_command('input /ja "Light Arts" <me>')
add_to_chat(122, '***Changing Arts! Current Charges Available: ['..currentStrats..']***')
else
send_command('input /ja "Light Arts" <me>')
end
elseif strategem == 'dark' then
if buffactive['dark arts'] then
send_command('input /ja "Addendum: Black" <me>')
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
elseif buffactive['addendum: black'] then
add_to_chat(122,'Error: Addendum: Black is already active.')
elseif buffactive['light arts'] or buffactive['addendum: white'] then
send_command('input /ja "Dark Arts" <me>')
add_to_chat(122, '***Changing Arts! Current Charges Available: ['..currentStrats..']***')
else
send_command('input /ja "Dark Arts" <me>')
end
elseif 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
function get_current_strategem_count()
local allRecasts = windower.ffxi.get_ability_recasts()
local stratsRecast = allRecasts[231]
local maxStrategems = math.floor(player.main_job_level + 10) / 20
local fullRechargeTime = 5*33
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()
if player.sub_job == 'RDM' then
set_macro_page(1, 8)
elseif player.sub_job == 'BLM' then
set_macro_page(1, 8)
elseif player.sub_job == 'WHM' then
set_macro_page(2, 8)
end
end
Bahamut.Neb
Server: Bahamut
Game: FFXI
Posts: 189
By Bahamut.Neb 2016-06-05 22:51:00
Do you equip your Ped Loafers when you cast storm spells or am I just off on some tangent and its not suppose to happen.
Bismarck.Radec
Server: Bismarck
Game: FFXI
Posts: 148
By Bismarck.Radec 2016-06-05 22:59:12
Re: Problems with stormspells not equipping feet correctly - this is because the equip for them is in the mote-* libs, but the libs don't map the storm2's as type 'storm' - see line 194 in gearswap/libs/Mote-Mappings for the maps for storm1's.
You can duplicate that line, ie
['Firestorm II']='Storm', ...
or explicitly define a set for firestorm that uses your storm gear:
sets.midcast['Firestorm II'] = sets.midcast.Storm
Ragnarok.Flippant
Server: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-06-05 23:01:16
What is equipping when you use a storm spell? You can use '//gs showswaps' to be certain.
Also, I'm not sure if it affects it because I use the augments attribute as little as possible, but you can take that part out for the feet because you only own one pair of them anyway.
Bismarck.Speedyjim
Server: Bismarck
Game: FFXI
Posts: 516
By Bismarck.Speedyjim 2016-06-05 23:06:37
Re: Problems with stormspells not equipping feet correctly - this is because the equip for them is in the mote-* libs, but the libs don't map the storm2's as type 'storm' - see line 194 in gearswap/libs/Mote-Mappings for the maps for storm1's.
You can duplicate that line, ie
['Firestorm II']='Storm', ...
or explicitly define a set for firestorm that uses your storm gear:
sets.midcast['Firestorm II'] = sets.midcast.Storm Very true, forgot about this.
Bahamut.Neb
Server: Bahamut
Game: FFXI
Posts: 189
By Bahamut.Neb 2016-06-05 23:23:45
Its just Equipping my normal Enhancing set i did showswaps of course
Bahamut.Neb
Server: Bahamut
Game: FFXI
Posts: 189
By Bahamut.Neb 2016-06-05 23:27:59
Re: Problems with stormspells not equipping feet correctly - this is because the equip for them is in the mote-* libs, but the libs don't map the storm2's as type 'storm' - see line 194 in gearswap/libs/Mote-Mappings for the maps for storm1's.
You can duplicate that line, ie
['Firestorm II']='Storm', ...
or explicitly define a set for firestorm that uses your storm gear:
sets.midcast['Firestorm II'] = sets.midcast.Storm
Adding it to the Mote file worked thanks so much it was driving me crazy
Bahamut.Neb
Server: Bahamut
Game: FFXI
Posts: 189
By Bahamut.Neb 2016-06-06 00:15:10
If anyone else reads this I was just told by an LS mate who saw this you need to do the same thing with the Helix II spells in the Mote-Mappings.lua File and if you are a BLM add Aspir III as well.
Thanks for you help Everyone.
Odin.Lygre
Server: Odin
Game: FFXI
Posts: 89
By Odin.Lygre 2016-06-08 23:23:31
Code -------------------------------------------------------------------------------------------------------------------
-- Mappings, lists and sets to describe game relationships that aren't easily determinable otherwise.
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
-- Elemental mappings for element relationships and certain types of spells and gear.
-------------------------------------------------------------------------------------------------------------------
elements = {}
elements.list = S{'Light','Dark','Fire','Ice','Wind','Earth','Lightning','Water'}
elements.weak_to = {['Light']='Dark', ['Dark']='Light', ['Fire']='Ice', ['Ice']='Wind', ['Wind']='Earth', ['Earth']='Lightning',
['Lightning']='Water', ['Water']='Fire'}
elements.strong_to = {['Light']='Dark', ['Dark']='Light', ['Fire']='Water', ['Ice']='Fire', ['Wind']='Ice', ['Earth']='Wind',
['Lightning']='Earth', ['Water']='Lightning'}
storms = S{"Aurorastorm", "Aurorastorm II", "Voidstorm", "Voidstorm II", "Firestorm", "Firestorm II", "Sandstorm", "Sandstorm II", "Rainstorm", "Rainstorm II",
"Windstorm", "Windstorm II", "Hailstorm", "Hailstorm II", "Thunderstorm", "Thunderstorm II"}
elements.storm_of = {['Light']="Aurorastorm","Aurorastorm II", ['Dark']="Voidstorm","Voidstorm II", ['Fire']="Firestorm","Firestorm II", ['Earth']="Sandstorm","Sandstorm II",
['Water']="Rainstorm","Rainstorm II", ['Wind']="Windstorm","Windstorm II", ['Ice']="Hailstorm","Hailstorm II", ['Lightning']="Thunderstorm","Thunderstorm II"}
spirits = S{"LightSpirit", "DarkSpirit", "FireSpirit", "EarthSpirit", "WaterSpirit", "AirSpirit", "IceSpirit", "ThunderSpirit"}
elements.spirit_of = {['Light']="Light Spirit", ['Dark']="Dark Spirit", ['Fire']="Fire Spirit", ['Earth']="Earth Spirit",
['Water']="Water Spirit", ['Wind']="Air Spirit", ['Ice']="Ice Spirit", ['Lightning']="Thunder Spirit"}
runes = S{'Lux', 'Tenebrae', 'Ignis', 'Gelus', 'Flabra', 'Tellus', 'Sulpor', 'Unda'}
elements.rune_of = {['Light']='Lux', ['Dark']='Tenebrae', ['Fire']='Ignis', ['Ice']='Gelus', ['Wind']='Flabra',
['Earth']='Tellus', ['Lightning']='Sulpor', ['Water']='Unda'}
elements.obi_of = {['Light']='Korin Obi', ['Dark']='Anrin Obi', ['Fire']='Karin Obi', ['Ice']='Hyorin Obi', ['Wind']='Furin Obi',
['Earth']='Dorin Obi', ['Lightning']='Rairin Obi', ['Water']='Suirin Obi'}
elements.gorget_of = {['Light']='Light Gorget', ['Dark']='Shadow Gorget', ['Fire']='Flame Gorget', ['Ice']='Snow Gorget',
['Wind']='Breeze Gorget', ['Earth']='Soil Gorget', ['Lightning']='Thunder Gorget', ['Water']='Aqua Gorget'}
elements.belt_of = {['Light']='Light Belt', ['Dark']='Shadow Belt', ['Fire']='Flame Belt', ['Ice']='Snow Belt',
['Wind']='Breeze Belt', ['Earth']='Soil Belt', ['Lightning']='Thunder Belt', ['Water']='Aqua Belt'}
elements.fastcast_staff_of = {['Light']='Arka I', ['Dark']='Xsaeta I', ['Fire']='Atar I', ['Ice']='Vourukasha I',
['Wind']='Vayuvata I', ['Earth']='Vishrava I', ['Lightning']='Apamajas I', ['Water']='Haoma I', ['Thunder']='Apamajas I'}
elements.recast_staff_of = {['Light']='Arka II', ['Dark']='Xsaeta II', ['Fire']='Atar II', ['Ice']='Vourukasha II',
['Wind']='Vayuvata II', ['Earth']='Vishrava II', ['Lightning']='Apamajas II', ['Water']='Haoma II', ['Thunder']='Apamajas II'}
elements.perpetuance_staff_of = {['Light']='Arka III', ['Dark']='Xsaeta III', ['Fire']='Atar III', ['Ice']='Vourukasha III',
['Wind']='Vayuvata III', ['Earth']='Vishrava III', ['Lightning']='Apamajas III', ['Water']='Haoma III', ['Thunder']='Apamajas III'}
-- Elements for skillchain names
skillchain_elements = {}
skillchain_elements.Light = S{'Light','Fire','Wind','Lightning'}
skillchain_elements.Darkness = S{'Dark','Ice','Earth','Water'}
skillchain_elements.Fusion = S{'Light','Fire'}
skillchain_elements.Fragmentation = S{'Wind','Lightning'}
skillchain_elements.Distortion = S{'Ice','Water'}
skillchain_elements.Gravitation = S{'Dark','Earth'}
skillchain_elements.Transfixion = S{'Light'}
skillchain_elements.Compression = S{'Dark'}
skillchain_elements.Liquification = S{'Fire'}
skillchain_elements.Induration = S{'Ice'}
skillchain_elements.Detonation = S{'Wind'}
skillchain_elements.Scission = S{'Earth'}
skillchain_elements.Impaction = S{'Lightning'}
skillchain_elements.Reverberation = S{'Water'}
-------------------------------------------------------------------------------------------------------------------
-- Mappings for weaponskills
-------------------------------------------------------------------------------------------------------------------
-- REM weapons and their corresponding weaponskills
data = {}
data.weaponskills = {}
data.weaponskills.relic = {
["Spharai"] = "Final Heaven",
["Mandau"] = "Mercy Stroke",
["Excalibur"] = "Knights of Round",
["Ragnarok"] = "Scourge",
["Guttler"] = "Onslaught",
["Bravura"] = "Metatron Torment",
["Apocalypse"] = "Catastrophe",
["Gungnir"] = "Gierskogul",
["Kikoku"] = "Blade: Metsu",
["Amanomurakumo"] = "Tachi: Kaiten",
["Mjollnir"] = "Randgrith",
["Claustrum"] = "Gates of Tartarus",
["Annihilator"] = "Coronach",
["Yoichinoyumi"] = "Namas Arrow"}
data.weaponskills.mythic = {
["Conqueror"] = "King's Justice",
["Glanzfaust"] = "Ascetic's Fury",
["Yagrush"] = "Mystic Boon",
["Laevateinn"] = "Vidohunir",
["Murgleis"] = "Death Blossom",
["Vajra"] = "Mandalic Stab",
["Burtgang"] = "Atonement",
["Liberator"] = "Insurgency",
["Aymur"] = "Primal Rend",
["Carnwenhan"] = "Mordant Rime",
["Gastraphetes"] = "Trueflight",
["Kogarasumaru"] = "Tachi: Rana",
["Nagi"] = "Blade: Kamu",
["Ryunohige"] = "Drakesbane",
["Nirvana"] = "Garland of Bliss",
["Tizona"] = "Expiacion",
["Death Penalty"] = "Leaden Salute",
["Kenkonken"] = "Stringing Pummel",
["Terpsichore"] = "Pyrrhic Kleos",
["Tupsimati"] = "Omniscience",
["Idris"] = "Exudation",
["Epeolatry"] = "Dimidiation"}
data.weaponskills.empyrean = {
["Verethragna"] = "Victory Smite",
["Twashtar"] = "Rudra's Storm",
["Almace"] = "Chant du Cygne",
["Caladbolg"] = "Torcleaver",
["Farsha"] = "Cloudsplitter",
["Ukonvasara"] = "Ukko's Fury",
["Redemption"] = "Quietus",
["Rhongomiant"] = "Camlann's Torment",
["Kannagi"] = "Blade: Hi",
["Masamune"] = "Tachi: Fudo",
["Gambanteinn"] = "Dagann",
["Hvergelmir"] = "Myrkr",
["Gandiva"] = "Jishnu's Radiance",
["Armageddon"] = "Wildfire"}
-- Weaponskills that can be used at range.
data.weaponskills.ranged = S{"Flaming Arrow", "Piercing Arrow", "Dulling Arrow", "Sidewinder", "Arching Arrow",
"Empyreal Arrow", "Refulgent Arrow", "Apex Arrow", "Namas Arrow", "Jishnu's Radiance",
"Hot Shot", "Split Shot", "Sniper Shot", "Slug Shot", "Heavy Shot", "Detonator", "Last Stand",
"Coronach", "Trueflight", "Leaden Salute", "Wildfire",
"Myrkr"}
ranged_weaponskills = data.weaponskills.ranged
-------------------------------------------------------------------------------------------------------------------
-- Spell mappings allow defining a general category or description that each of sets of related
-- spells all fall under.
-------------------------------------------------------------------------------------------------------------------
spell_maps = {
['Cure']='Cure',['Cure II']='Cure',['Cure III']='Cure',['Cure IV']='Cure',['Cure V']='Cure',['Cure VI']='Cure',
['Cura']='Curaga',['Cura II']='Curaga',['Cura III']='Curaga',
['Curaga']='Curaga',['Curaga II']='Curaga',['Curaga III']='Curaga',['Curaga IV']='Curaga',['Curaga V']='Curaga',
-- Status Removal doesn't include Esuna or Sacrifice, since they work differently than the rest
['Poisona']='StatusRemoval',['Paralyna']='StatusRemoval',['Silena']='StatusRemoval',['Blindna']='StatusRemoval',['Cursna']='StatusRemoval',
['Stona']='StatusRemoval',['Viruna']='StatusRemoval',['Erase']='StatusRemoval',
['Barfire']='BarElement',['Barstone']='BarElement',['Barwater']='BarElement',['Baraero']='BarElement',['Barblizzard']='BarElement',['Barthunder']='BarElement',
['Barfira']='BarElement',['Barstonra']='BarElement',['Barwatera']='BarElement',['Baraera']='BarElement',['Barblizzara']='BarElement',['Barthundra']='BarElement',
['Baramnesia']='BarStatus',['Barvirus']='BarStatus',['Barparalyze']='BarStatus',['Barsilence']='BarStatus',['Barpetrify']='BarStatus',['Barpoison']='BarStatus',['Barblind']='BarStatus',['Barsleep']='BarStatus',
['Baramnesra']='BarStatus',['Barvira']='BarStatus',['Barparalyzra']='BarStatus',['Barsilencra']='BarStatus',['Barpetra']='BarStatus',['Barpoisonra']='BarStatus',['Barblindra']='BarStatus',['Barsleepra']='BarStatus',
['Raise']='Raise',['Raise II']='Raise',['Raise III']='Raise',['Arise']='Raise',
['Reraise']='Reraise',['Reraise II']='Reraise',['Reraise III']='Reraise',
['Protect']='Protect',['Protect II']='Protect',['Protect III']='Protect',['Protect IV']='Protect',['Protect V']='Protect',
['Shell']='Shell',['Shell II']='Shell',['Shell III']='Shell',['Shell IV']='Shell',['Shell V']='Shell',
['Protectra']='Protectra',['Protectra II']='Protectra',['Protectra III']='Protectra',['Protectra IV']='Protectra',['Protectra V']='Protectra',
['Shellra']='Shellra',['Shellra II']='Shellra',['Shellra III']='Shellra',['Shellra IV']='Shellra',['Shellra V']='Shellra',
['Regen']='Regen',['Regen II']='Regen',['Regen III']='Regen',['Regen IV']='Regen',['Regen V']='Regen',
['Refresh']='Refresh',['Refresh II']='Refresh',['Refresh III']='Refresh',
['Teleport-Holla']='Teleport',['Teleport-Dem']='Teleport',['Teleport-Mea']='Teleport',['Teleport-Altep']='Teleport',['Teleport-Yhoat']='Teleport',
['Teleport-Vahzl']='Teleport',['Recall-Pashh']='Teleport',['Recall-Meriph']='Teleport',['Recall-Jugner']='Teleport',
['Valor Minuet']='Minuet',['Valor Minuet II']='Minuet',['Valor Minuet III']='Minuet',['Valor Minuet IV']='Minuet',['Valor Minuet V']='Minuet',
["Knight's Minne"]='Minne',["Knight's Minne II"]='Minne',["Knight's Minne III"]='Minne',["Knight's Minne IV"]='Minne',["Knight's Minne V"]='Minne',
['Advancing March']='March',['Victory March']='March',['Honor March']='March', --Whether you want this mapped or not is highly dependent on your BRD lua
['Sword Madrigal']='Madrigal',['Blade Madrigal']='Madrigal',
["Hunter's Prelude"]='Prelude',["Archer's Prelude"]='Prelude',
['Sheepfoe Mambo']='Mambo',['Dragonfoe Mambo']='Mambo',
['Raptor Mazurka']='Mazurka',['Chocobo Mazurka']='Mazurka',
['Sinewy Etude']='Etude',['Dextrous Etude']='Etude',['Vivacious Etude']='Etude',['Quick Etude']='Etude',['Learned Etude']='Etude',['Spirited Etude']='Etude',['Enchanting Etude']='Etude',
['Herculean Etude']='Etude',['Uncanny Etude']='Etude',['Vital Etude']='Etude',['Swift Etude']='Etude',['Sage Etude']='Etude',['Logical Etude']='Etude',['Bewitching Etude']='Etude',
["Mage's Ballad"]='Ballad',["Mage's Ballad II"]='Ballad',["Mage's Ballad III"]='Ballad',
["Army's Paeon"]='Paeon',["Army's Paeon II"]='Paeon',["Army's Paeon III"]='Paeon',["Army's Paeon IV"]='Paeon',["Army's Paeon V"]='Paeon',["Army's Paeon VI"]='Paeon',
['Fire Carol']='Carol',['Ice Carol']='Carol',['Wind Carol']='Carol',['Earth Carol']='Carol',['Lightning Carol']='Carol',['Water Carol']='Carol',['Light Carol']='Carol',['Dark Carol']='Carol',
['Fire Carol II']='Carol',['Ice Carol II']='Carol',['Wind Carol II']='Carol',['Earth Carol II']='Carol',['Lightning Carol II']='Carol',['Water Carol II']='Carol',['Light Carol II']='Carol',['Dark Carol II']='Carol',
['Foe Lullaby']='Lullaby',['Foe Lullaby II']='Lullaby',['Horde Lullaby']='Lullaby',['Horde Lullaby II']='Lullaby',
['Fire Threnody']='Threnody',['Ice Threnody']='Threnody',['Wind Threnody']='Threnody',['Earth Threnody']='Threnody',['Lightning Threnody']='Threnody',['Water Threnody']='Threnody',['Light Threnody']='Threnody',['Dark Threnody']='Threnody',
['Fire Threnody II']='Threnody',['Ice Threnody II']='Threnody',['Wind Threnody II']='Threnody',['Earth Threnody II']='Threnody',['Lightning Threnody II']='Threnody',['Water Threnody II']='Threnody',['Light Threnody II']='Threnody',['Dark Threnody II']='Threnody',
['Battlefield Elegy']='Elegy',['Carnage Elegy']='Elegy',
['Foe Requiem']='Requiem',['Foe Requiem II']='Requiem',['Foe Requiem III']='Requiem',['Foe Requiem IV']='Requiem',['Foe Requiem V']='Requiem',['Foe Requiem VI']='Requiem',['Foe Requiem VII']='Requiem',
['Utsusemi: Ichi']='Utsusemi',['Utsusemi: Ni']='Utsusemi',['Utsusemi: San']='Utsusemi',
['Katon: Ichi'] = 'ElementalNinjutsu',['Suiton: Ichi'] = 'ElementalNinjutsu',['Raiton: Ichi'] = 'ElementalNinjutsu',
['Doton: Ichi'] = 'ElementalNinjutsu',['Huton: Ichi'] = 'ElementalNinjutsu',['Hyoton: Ichi'] = 'ElementalNinjutsu',
['Katon: Ni'] = 'ElementalNinjutsu',['Suiton: Ni'] = 'ElementalNinjutsu',['Raiton: Ni'] = 'ElementalNinjutsu',
['Doton: Ni'] = 'ElementalNinjutsu',['Huton: Ni'] = 'ElementalNinjutsu',['Hyoton: Ni'] = 'ElementalNinjutsu',
['Katon: San'] = 'ElementalNinjutsu',['Suiton: San'] = 'ElementalNinjutsu',['Raiton: San'] = 'ElementalNinjutsu',
['Doton: San'] = 'ElementalNinjutsu',['Huton: San'] = 'ElementalNinjutsu',['Hyoton: San'] = 'ElementalNinjutsu',
['Banish']='Banish',['Banish II']='Banish',['Banish III']='Banish',['Banishga']='Banish',['Banishga II']='Banish',
['Holy']='Holy',['Holy II']='Holy',['Drain']='Drains',['Drain II']='Drains',['Aspir']='Aspirs',['Aspir II']='Aspirs',['Aspir III']='Aspirs',
['Absorb-STR']='Absorb',['Absorb-DEX']='Absorb',['Absorb-VIT']='Absorb',['Absorb-AGI']='Absorb',['Absorb-INT']='Absorb',['Absorb-MND']='Absorb',['Absorb-CHR']='Absorb',
['Absorb-ACC']='Absorb',['Absorb-TP']='Absorb',['Absorb-Attri']='Absorb',
['Burn']='ElementalEnfeeble',['Frost']='ElementalEnfeeble',['Choke']='ElementalEnfeeble',['Rasp']='ElementalEnfeeble',['Shock']='ElementalEnfeeble',['Drown']='ElementalEnfeeble',
['Pyrohelix']='Helix',['Cryohelix']='Helix',['Anemohelix']='Helix',['Geohelix']='Helix',['Ionohelix']='Helix',['Hydrohelix']='Helix',['Luminohelix']='Helix',['Noctohelix']='Helix',
['Pyrohelix II']='Helix',['Cryohelix II']='Helix',['Anemohelix II']='Helix',['Geohelix II']='Helix',['Ionohelix II']='Helix',['Hydrohelix II']='Helix',['Luminohelix II']='Helix',['Noctohelix II']='Helix',
['Firestorm']='Storm',['Hailstorm']='Storm',['Windstorm']='Storm',['Sandstorm']='Storm',['Thunderstorm']='Storm',['Rainstorm']='Storm',['Aurorastorm']='Storm',['Voidstorm']='Storm',
['Firestorm II']='Storm',['Hailstorm II']='Storm',['Windstorm II']='Storm',['Sandstorm II']='Storm',['Thunderstorm II']='Storm',['Rainstorm II']='Storm',['Aurorastorm II']='Storm',['Voidstorm II']='Storm',
['Fire Maneuver']='Maneuver',['Ice Maneuver']='Maneuver',['Wind Maneuver']='Maneuver',['Earth Maneuver']='Maneuver',['Thunder Maneuver']='Maneuver',
['Water Maneuver']='Maneuver',['Light Maneuver']='Maneuver',['Dark Maneuver']='Maneuver',
}
no_skill_spells_list = S{'Haste', 'Flurry', 'Refresh', 'Regen', 'Protect', 'Protectra', 'Shell', 'Shellra',
'Raise', 'Reraise', 'Sneak', 'Invisible', 'Deodorize'}
-------------------------------------------------------------------------------------------------------------------
-- Tables to specify general area groupings. Creates the 'areas' table to be referenced in job files.
-- Zone names provided by world.area/world.zone are currently in all-caps, so defining the same way here.
-------------------------------------------------------------------------------------------------------------------
areas = {}
-- City areas for town gear and behavior.
areas.Cities = S{
"Ru'Lude Gardens",
"Upper Jeuno",
"Lower Jeuno",
"Port Jeuno",
"Port Windurst",
"Windurst Waters",
"Windurst Woods",
"Windurst Walls",
"Heavens Tower",
"Port San d'Oria",
"Northern San d'Oria",
"Southern San d'Oria",
"Port Bastok",
"Bastok Markets",
"Bastok Mines",
"Metalworks",
"Aht Urhgan Whitegate",
"Tavanazian Safehold",
"Nashmau",
"Selbina",
"Mhaura",
"Norg",
"Eastern Adoulin",
"Western Adoulin",
"Kazham"
}
-- Adoulin areas, where Ionis will grant special stat bonuses.
areas.Adoulin = S{
"Yahse Hunting Grounds",
"Ceizak Battlegrounds",
"Foret de Hennetiel",
"Morimar Basalt Fields",
"Yorcia Weald",
"Yorcia Weald [U]",
"Cirdas Caverns",
"Cirdas Caverns [U]",
"Marjami Ravine",
"Kamihr Drifts",
"Sih Gates",
"Moh Gates",
"Dho Gates",
"Woh Gates",
"Rala Waterways",
"Rala Waterways [U]",
"Outer Ra'Kaznar",
"Outer Ra'Kaznar [U]"
}
-------------------------------------------------------------------------------------------------------------------
-- Lists of certain NPCs.
-------------------------------------------------------------------------------------------------------------------
npcs = {}
npcs.Trust = S{'Ajido-Marujido','Aldo','Ayame','Cherukiki','Curilla','D.Shantotto','Elivira','Excenmille',
'Fablinix','FerreousCoffin','Gadalar','Gessho','Ingrid','IronEater','Joachim','Klara','Kupipi',
'LehkoHabhoka','LhuMhakaracca','Lion','Luzaf','Maat','MihliAliapoh','Mnejing','Moogle','Mumor',
'NajaSalaheem','Najelith','Naji','NanaaMihgo','Nashmeira','Noillurie','Ovjang','Prishe','Rainemard',
'RomaaMihgo','Sakura','Shantotto','StarSibyl','Tenzen','Trion','UkaTotlihn','Ulmia','Valaineral',
'Volker','Zazarg','Zeid'}
This is my Mote-Mappings.lua. It has quite a few things updated/fixed. May be missing some things irrelevant to the jobs I play, feel free to point them out.
[+]
Carbuncle.Silverio
Server: Carbuncle
Game: FFXI
Posts: 8
By Carbuncle.Silverio 2016-06-10 20:36:20
Server: Odin
Game: FFXI
Posts: 177
By Odin.Speedyjim 2016-06-10 21:49:47
Nice LUA, Silverio.
It may be easier to remove Haste/Refresh/Regen from the no skill list, as you'd want to put your Enhancing Duration gear in your midcast['EnhancingMagic'] sets. If you don't remove them, you'll need spell-specific sets with the duration gear.
Mine looks like this: Code no_skill_spells_list = S{
'Raise', 'Reraise', 'Arise', 'Teleport', 'Warp', 'Blink', 'Dia', 'Animus', 'Tractor'}
Asura.Alkk
Server: Asura
Game: FFXI
Posts: 38
By Asura.Alkk 2016-06-16 13:01:41
Carbuncle.Silverio said: »
I tried including your helix timer just to see how I like it but it doesnt appear to be doing anything. Do I need to activate it with some command perhaps?
Carbuncle.Silverio
Server: Carbuncle
Game: FFXI
Posts: 8
By Carbuncle.Silverio 2016-07-09 15:22:57
function job_aftercast(spell, action, spellMap, eventArgs)
-- helix timers
if (not spell.interrupted) then
if info.Helix:contains(spell.english) then
createTimerHelix(spell.english)
end
if (spell.english=='Modus Veritas' or spell.english=='Stone') then
createTimerModusVeritas()
end
end -- end of helix timers
end
By Upstartgoblin 2016-08-06 13:33:32
So I am having an issue where I will nuke and it equips my 2 hand staff and grip. But when going back to idle it only quips Sors shield. Any help appreciated. Also is there any way someone can help me add strat counter to this? Code ----- Credit: Krystela of Asura | Last Update: 27 July 2016 ---->
---- .:: This was entirely created by me, it's not based off anyone's file ::. ---->
---- Always visit http://pastebin.com/u/KrystelaRose to look for possible updates ---->
---- .:: Please leave credit where it's due ::. ---->
---- .:: If you have any problem contact me via ffxiah: http://www.ffxiah.com/player/Asura/Krystela ::. ---->
function user_unload()
send_command('unbind ^f1')
send_command('unbind ^f10')
send_command('unbind ^f11')
end
function get_sets()
-- Binds for modes
send_command('bind ^f1 gs c C1')
send_command('bind ^f10 gs c C10')
send_command('bind ^f11 gs c C11')
-- Modes --
MagicIndex = 1
MagicArray = {"Normal","Magic Burst"} -- Press ctrl +F1 to circle through Magic modes --
WeaponLock = 'OFF' -- Press ctrl + F10 to Lock Weapon/sub/range/ammo --
Capacity = 'OFF' -- Press Ctrl +F11 to have Capacity cape on while Idle --
-- Gears --
gear = {}
gear.Debuff_Staff = { name="Grioavolr", augments={'"Conserve MP"+1','INT+2','Mag. Acc.+30',}}
gear.FC_Body = { name="Merlinic Jubbah", augments={'"Fast Cast"+6',}}
gear.FC_Feet = { name="Amalric Nails",}
gear.Macc_Body = { name="Jhakri Robe",}
gear.MB_Head = { name="Jhakri Coronal +1",}
gear.MB_Body = { name="Count's Garb",}
gear.MB_Feet = { name="Jhakri Pigaches +1",}
gear.Death_Hands = { name="Amalric Gages", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}}
gear.MB_Hands = { name="Jhakri Cuffs +1",}
-- Set macro book/set --
send_command('input /macro book 1;wait .1;input /macro set 1') -- set macro book/set here --
---- .::Spellmaps::. ---->
enfMND = S{'Paralyze','Slow'}
enfINT = S{'Blind'}
-- Area mapping --
Town = S{"Ru'Lude Gardens","Upper Jeuno","Lower Jeuno","Port Jeuno","Port Windurst","Windurst Waters","Windurst Woods","Windurst Walls","Heavens Tower",
"Port San d'Oria","Northern San d'Oria","Southern San d'Oria","Port Bastok","Bastok Markets","Bastok Mines","Metalworks","Aht Urhgan Whitegate",
"Tavnazian Safehold","Nashmau","Selbina","Mhaura","Norg","Eastern Adoulin","Western Adoulin","Kazham","Heavens Tower"}
Assault = S{"Leujaoam Sanctum","Mamool Ja Training Grounds","Lebros Cavern","Periqia","Ilrusi Atoll",
"Nyzul Isle","Bhaflau Remnants","Arrapago Remnants","Silver Sea Remnants","Zhayolm Remnants"}
---- Precast ----
sets.precast = {}
sets.precast.FC = {
main="Grioavolr",
sub="Clerisy Strap +1",
ammo="Impatiens",
head="Amalric Coif",
neck="Voltsurge Torque",
ear1="Loquac. Earring",
ear2="Etiolation Earring",
body=gear.FC_Body,
hands="Gende. Gages +1",
ring1="Prolix Ring",
ring2="Renaye Ring",
back="Swith Cape +1",
waist="Witful Belt",
legs="Psycloth Lappas",
feet=gear.FC_Feet}
sets.precast.Cure = set_combine(sets.precast.FC, {
main="Gada",
sub="Sors Shield"})
sets.precast.Enhancing = set_combine(sets.precast.FC, {})
sets.precast['Stoneskin'] = set_combine(sets.precast.FC, {})
sets.precast.Elemental = set_combine(sets.precast.FC, {})
sets.precast['Impact'] = {
main="Mindmelter",
sub="Elder's Grip",
ammo="Impatiens",
head=empty,
neck="Voltsurge Torque",
ear1="Loquac. Earring",
ear2="Enchntr. Earring +1",
body="Twilight Cloak",
hands="Gende. Gages +1",
ring1="Prolix Ring",
ring2="Lebeche Ring",
back="Perimede Cape",
waist="Witful Belt",
legs="Psycloth Lappas",
feet=gear.FC_Feet}
-- Job Abilities --
sets.JA = {}
sets.JA['Tabula Rasa'] = {legs="Pedagogy Pants"}
-- WS sets --
sets.WS = {}
sets.WS['Myrkr'] = {
ammo="Psilomene",
head="Pixie Hairpin +1",
neck="Dualism Collar +1",
ear1="Gifted Earring",
ear2="Etiolation Earring",
body="Weather. Robe +1",
hands="Otomi Gloves",
ring1="Mephitas's Ring +1",
ring2="Mephitas's Ring",
back="Pahtli Cape",
waist="Shinjutsu-no-Obi",
legs="Amalric Slops",
feet="Psycloth Boots"}
sets.midcast = {}
-- Base Set --
sets.midcast.Recast = {
main="Grioavolr",
sub="Clerisy Strap +1",
ammo="Sapience Orb",
head="Amalric Coif",
neck="Voltsurge Torque",
ear1="Loquac. Earring",
ear2="Enchntr. Earring +1",
body=gear.FC_Body,
hands="Merlinic Dastanas",
ring1="Prolix Ring",
back="Lugh's Cape",
waist="Witful Belt",
legs="Psycloth Lappas",
feet=gear.FC_Feet}
sets.midcast.ConserveMP = {
main="Grioavolr",
sub="Clerisy Strap +1",
ammo="Pemphredo Tathlum",
head="Ipoca Beret",
neck="Incanter's Torque",
ear1="Gwati Earring",
ear2="Gifted Earring",
body="Witching Robe",
back="Seshaw Cape +1",
waist="Luminary Sash",
legs="Vanya Slops",
feet="Kaykaus Boots +1"}
-- Healing Magic --
sets.midcast.Cure = {
main="Tamaxchi",
sub="Sors Shield",
ammo="Pemphedro Tathlum",
head="Kaykaus Mitra +1",
neck="Incanter's Torque",
ear1="Healing Earring",
ear2="Beatific Earring",
body="Kaykaus Bliaut +1",
hands="Telchine Gloves",
ring1="Haoma's Ring",
ring2="Janniston Ring",
back="Tempered Cape +1",
waist="Luminary Sash",
legs="Vanya Slops",
feet="Kaykaus Boots +1"}
sets.midcast.Cure.WeaponLock = {
ammo="Pemphedro Tathlum",
head="Kaykaus Mitra +1",
neck="Incanter's Torque",
ear1="Healing Earring",
ear2="Beatific Earring",
body="Chironic Doublet",
hands="Telchine Gloves",
ring1="Janniston Ring",
ring2="Lebeche Ring",
back="Tempered Cape +1",
waist="Luminary Sash",
legs="Chironic Hose",
feet="Kaykaus Boots +1"}
sets.midcast.Cure.Weather = {
main="Chatoyant Staff",
sub="Achaq Grip",
ammo="Pemphedro Tathlum",
head="Kaykaus Mitra +1",
neck="Incanter's Torque",
ear1="Healing Earring",
ear2="Beatific Earring",
body="Kaykaus Bliaut +1",
hands="Telchine Gloves",
ring1="Haoma's Ring",
ring2="Janniston Ring",
back="Twilight Cape",
waist="Hachirin-no-Obi",
legs="Chironic Hose",
feet="Kaykaus Boots +1"}
sets.midcast.Enhancing = set_combine(sets.midcast.ConserveMP, {
main="Oranyan",
sub="Clerisy Strap",
head="Telchine Cap",
neck="Incanter's Torque",
ear1="Andoaa Earring",
body="Telchine Chasuble",
hands="Telchine Gloves",
ring1="Stikini Ring",
ring2="Stikini Ring",
back="Perimede Cape",
legs="Telchine Braconi",
feet="Telchine Pigaches"})
sets.midcast.Regen = set_combine(sets.midcast.ConserveMP, {
main="Bolelabunga",
sub="Genmei Shield",
head="Telchine Cap",
body="Telchine Chasuble",
hands="Telchine Gloves",
back="Lugh's Cape",
legs="Telchine Braconi",
feet="Telchine Pigaches"})
sets.midcast['Stoneskin'] = set_combine(sets.midcast.ConserveMP, {
main="Oranyan",
head="Telchine Cap",
body="Telchine Chasuble",
hands="Telchine Gloves",
legs="Telchine Braconi",
feet="Telchine Pigaches"})
sets.midcast['Aquaveil'] = set_combine(sets.midcast.ConserveMP, {
main="Oranyan",
head="Amalric Coif",
body="Telchine Chasuble",
hands="Telchine Gloves",
legs="Telchine Braconi",
feet="Telchine Pigaches"})
sets.midcast['Refresh'] = set_combine(sets.midcast.ConserveMP, {
main="Oranyan",
head="Amalric Coif",
body="Telchine Chasuble",
hands="Telchine Gloves",
legs="Telchine Braconi",
feet="Telchine Pigaches"})
-- Enfeebling Magic --
sets.midcast.Enfeebling = {
main=gear.Debuff_Staff,
sub="Clerisy Strap +1",
ammo="Pemphredo Tathlum",
head="Amalric Coif",
neck="Incanter's Torque",
ear1="Dignitary's Earring",
ear2="Gwati Earring",
body=gear.Macc_Body,
hands="Kaykaus Cuffs +1",
ring1="Stikini Ring",
ring2="Stikini Ring",
back="Lugh's Cape",
waist="Porous Rope",
legs="Psycloth Lappas",
feet="Skaoi Boots"}
sets.midcast.Enfeebling.MND = set_combine(sets.midcast.Enfeebling, {Head="Befouled Crown", waist="Luminary Sash"})
sets.midcast.Enfeebling.INT = set_combine(sets.midcast.Enfeebling, {})
-- Dark Magic --
sets.midcast.Dark = {}
sets.midcast.Drain = set_combine(sets.midcast.Recast, {legs="Merlinic Shalwar"})
sets.midcast['Stun'] = set_combine(sets.midcast.Recast, {
main=gear.Debuff_Staff,
sub="Clerisy Strap +1",
ammo="Pemphredo Tathlum",
ring2="Stikini Ring",
back="Lugh's Cape"})
-- Elemental Magic --
sets.midcast.Elemental = {
main="Mindmelter",
sub="Elder's Grip",
ammo="Impatiens",
head=gear.MB_Head,
neck="Saevus Pendant +1",
ear1="Etiolation Earring",
ear2="Friomisi Earring",
body=gear.MB_Body,
hands=gear.MB_Hands,
ring1="Tamas Ring",
ring2="Mujin Band",
back="Lugh's Cape",
waist="Aswang Sash",
legs="Amalric Slops",
feet=gear.MB_Feet}
sets.midcast.Elemental.Weather = set_combine(sets.midcast.Elemental, {
back="Twilight Cape",
waist="Hachirin-no-Obi"})
sets.midcast.Elemental.Weather.Klimaform = set_combine(sets.midcast.Elemental.Weather, {
ear1="Static Earring",
feet="Arbatel Loafers +1"})
sets.midcast.Elemental.Helix = set_combine(sets.midcast.Elemental, {back="Bookworm's Cape"})
sets.midcast.Elemental.Helix.Weather = set_combine(sets.midcast.Elemental.Helix, {waist="Hachirin-no-Obi"})
sets.midcast.Elemental.Helix.Weather.Klimaform = set_combine(sets.midcast.Elemental.Helix.Weather, {
ear1="Static Earring",
feet="Arbatel Loafers +1"})
sets.midcast.Elemental.MB = set_combine(sets.midcast.Elemental, {})
sets.midcast.Elemental.MB.Weather = set_combine(sets.midcast.Elemental.MB, {
back="Twilight Cape",
waist="Hachirin-no-Obi"})
sets.midcast.Elemental.MB.Weather.Klimaform = set_combine(sets.midcast.Elemental.MB.Weather, {
ear1="Static Earring",
feet="Arbatel Loafers +1"})
sets.midcast['Impact'] = {
main="Akademos",
sub="Niobid Strap",
range=empty,
ammo="Pemphredo Tathlum",
head=empty,
neck="Mizukage-noKubikazari",
ear1="Barkarole Earring",
ear2="Friomisi Earring",
body="Twilight Cloak",
hands=gear.MB_Hands,
ring1="Locus Ring",
ring2="Mujin Band",
back="Seshaw Cape +1",
waist="Refoccilation Stone",
legs="Merlinic Shalwar",
feet=gear.MB_Feet}
---- Aftercast ----
sets.aftercast = {}
sets.aftercast.Idle = {
main="Tamaxchi",
sub="Sors Shield",
ammo="Impatiens",
head="Befouled Crown",
neck="Saevus Pendant +1",
ear1="Etiolation Earring",
ear2="Loquac. Earring",
body="Jhakri Robe",
hands="Jhakri Cuffs +1",
ring1="Tamas Ring",
ring2="Renaye Ring",
back="Umbra Cape",
waist="Aswang Sash",
legs="Amalric Slops",
feet="Jhakri Pigaches +1",}
sets.aftercast['Sublimation'] = set_combine(sets.aftercast.Idle, {})
sets.aftercast.Defense = set_combine(sets.aftercast.Idle, {
main="Terra's Staff",
ammo="Staunch Tathlum",
ear1="Etiolation Earring",
feet="Herald's Gaiters"})
sets.aftercast.Town = {
head="Kaykaus Mitra +1",
body="kaykaus Bliaut +1",
hands="Kaykaus Cuffs +1",
feet="Herald's Gaiters"}
sets.resting = {}
end
function pretarget(spell,action)
-- Auto-Echo drop :D --
if spell.action_type == 'Magic' and buffactive['Silence'] then
cancel_spell()
send_command('input /item "Echo Drops" <me>')
end
end
---- .::Precast Functions::. ---->
-- Spells --
function precast(spell)
if spell.action_type == 'Magic' then
-- Healing Magic --
if string.find(spell.english,'Cure') then
equip(sets.precast.Cure)
elseif string.find(spell.english,'Cura') then
equip(sets.precast.Cure)
-- Enhancing Magic --
elseif spell.skill == 'Enhancing Magic' then
equip(sets.precast.Enhancing)
if spell.english == 'Stoneskin' then
equip(sets.precast[spell.english])
end
-- Elemental Magic --
elseif spell.skill == 'Elemental Magic' then
equip(sets.precast.Elemental)
if spell.english == 'Impact' then
equip(sets.precast.Impact)
end
else
equip(sets.precast.FC)
end
-- Job Abilities --
elseif spell.type == 'JobAbility' then
equip(sets.JA[spell.english])
-- Weapon skills --
elseif spell.type == 'WeaponSkill' then
equip(sets.WS[spell.english])
end
end
---- .::Midcast Functions::. ---->
function midcast(spell)
if spell.action_type == 'Magic' then
-- Healing Magic --
if string.find(spell.english,'Cure') then
if WeaponLock == 'ON' then
equip(sets.midcast.Cure.WeaponLock)
if spell.element == world.weather_element or spell.element == world.day_element then
equip(sets.midcast.Cure.WeaponLock, {waist="Hachirin-no-Obi"})
end
elseif spell.element == world.weather_element or spell.element == world.day_element then
equip(sets.midcast.Cure.Weather)
else
equip(sets.midcast.Cure)
end
-- Enhancing Magic --
elseif spell.skill == 'Enhancing Magic' then
if buffactive['Perpetuance'] then
equip(sets.midcast.Enhancing, {hands="Arbatel Bracers +1"})
if string.find(spell.english, 'Regen') then
equip(sets.midcast.Regen, {hands="Arbatel Bracers +1"})
elseif spell.english == 'Aquaveil' then
equip(sets.midcast[spell.english], {hands="Arbatel Bracers +1"})
elseif spell.english == 'Refresh' then
equip(sets.midcast[spell.english], {hands="Arbatel Bracers +1"})
end
elseif string.find(spell.english, 'Regen') then
equip(sets.midcast.Regen)
elseif string.find(spell.english, 'Aquaveil') then
equip(sets.midcast[spell.english])
elseif spell.english == 'Refresh' then
equip(sets.midcast[spell.english])
elseif spell.english == 'Stoneskin'then
equip(sets.midcast[spell.english])
else
equip(sets.midcast.Enhancing)
end
-- Enfeebling Magic --
elseif spell.skill == 'Enfeebling Magic' then
equip(sets.midcast.Enfeebling)
if enfMND:contains(spell.name) then
equip(sets.midcast.Enfeebling.MND)
elseif enfINT:contains(spell.name) then
equip(sets.midcast.Enfeebling.INT)
end
-- Dark Magic --
elseif string.find(spell.english, 'Aspir') then
equip(sets.midcast.Drain)
elseif string.find(spell.english, 'Drain') then
equip(sets.midcast.Drain)
elseif spell.english == 'Stun' then
if buffactive['Alacrity'] then
equip(sets.midcast.Dark.Stun, {feet="Pedagogy Loafers +1"})
else
equip(sets.midcast['Stun'])
end
-- Elemental Magic --
elseif spell.skill == 'Elemental Magic' then
if spell.english == 'Impact' then
equip(sets.midcast['Impact'])
elseif MagicArray[MagicIndex] == 'Normal' then
equip(sets.midcast.Elemental)
if spell.element == world.weather_element or spell.element == world.day_element then
equip(sets.midcast.Elemental.Weather)
if buffactive['Klimaform'] then
equip(sets.midcast.Elemental.Weather.Klimaform)
elseif string.find(spell.english,'helix') then
equip(sets.midcast.Elemental.Helix.Weather)
if buffactive['Klimaform'] then
equip(sets.midcast.Helix.Weather.Klimaform)
end
end
elseif string.find(spell.english,'helix') then
equip(sets.midcast.Elemental.Helix)
end
elseif MagicArray[MagicIndex] == 'Magic Burst' then
equip(sets.midcast.Elemental.MB)
if spell.element == world.weather_element or spell.element == world.day_element then
equip(sets.midcast.Elemental.MB.Weather)
if buffactive['Klimaform'] then
equip(sets.midcast.Elemental.MB.Weather.Klimaform)
elseif string.find(spell.english,'helix') then
equip(sets.midcast.Elemental.Helix.Weather)
if buffactive['Klimaform'] then
equip(sets.midcast.Elemental.Helix.Weather.Klimaform)
end
end
elseif buffactive['Klimaform'] then
equip(sets.midcast.Elemental.MB.Klimaform)
elseif string.find(spell.english,'helix') then
equip(sets.midcast.Elemental.Helix)
end
end
end
end
end
---- .::Aftercast Sets::. ---->
function aftercast(spell,action)
equip(sets.aftercast.Defense)
-- Capacity Idle Rule --
if Capacity == 'ON' then
equip(sets.aftercast.Defense, {back="Mecisto. Mantle"})
if buffactive['Sublimation: Activated'] then
equip(sets.aftercast.Sublimation, {back="Mecisto. Mantle"})
elseif player.mpp <80 then
equip(sets.aftercast.Idle, {back="Mecisto. Mantle"})
if player.mpp <50 then
equip(sets.aftercast.Idle, {back="Mecisto. Mantle",waist="Fucho-no-obi"})
end
end
status_change(player.status)
elseif buffactive['Sublimation: Activated'] then
equip(sets.aftercast.Sublimation)
status_change(player.status)
elseif player.mpp <80 then
equip(sets.aftercast.Idle)
if player.mpp <50 then
equip(sets.aftercast.Idle, {waist="Fucho-no-obi"})
end
status_change(player.status)
elseif Town:contains(world.zone) then
equip(sets.aftercast.Idle.Town)
end
status_change(player.status)
end
---- .::Status Changes::. ---->
function status_change(new,tab,old)
if new == 'Idle' then
if Capacity == 'ON' then
equip(sets.aftercast.Defense, {back="Mecisto. Mantle"})
if buffactive['Sublimation: Activated'] then
equip(sets.aftercast.Sublimation, {back="Mecisto. Mantle"})
elseif player.mpp <80 then
equip(sets.aftercast.Idle, {back="Mecisto. Mantle"})
if player.mpp <50 then
equip(sets.aftercast.Idle, {back="Mecisto. Mantle",waist="Fucho-no-obi"})
end
end
elseif buffactive['Sublimation: Activated'] then
equip(sets.aftercast.Sublimation)
elseif player.mpp <80 then
equip(sets.aftercast.Idle)
if player.mpp <50 then
equip(sets.aftercast.Idle, {waist="Fucho-no-obi"})
end
elseif Town:contains(world.zone) then
equip(sets.aftercast.Town)
end
end
if new == 'Resting' then
equip(sets.resting)
end
end
--- ..:: Modes functions ::.. --->
function self_command(command)
if command == 'C1' then -- Magic Acc Cycle --
MagicIndex = (MagicIndex % #MagicArray) + 1
add_to_chat(158,'Magic Set: ' .. MagicArray[MagicIndex])
status_change(player.status)
elseif command == 'C10' then -- Weapon Lock toggle --
if WeaponLock == 'ON' then
WeaponLock = 'OFF'
enable('main', 'sub' ,'range')
add_to_chat(123,'Weapon Lock: [OFF]')
else
WeaponLock = 'ON'
disable('main', 'sub' ,'range')
add_to_chat(158,'Weapon Lock: [ON]')
end
status_change(player.status)
elseif command == 'C11' then -- Capacity toggle --
if Capacity == 'ON' then
Capacity = 'OFF'
add_to_chat(123,'Capacity Set: [OFF]')
else
Capacity = 'ON'
add_to_chat(158,'Capacity Set: [ON]')
end
status_change(player.status)
end
end
-- Automatically changes Idle gears if you zone in or out of town --
windower.register_event('zone change', function()
if Town:contains(world.zone) then
equip(sets.aftercast.Town)
else
equip(sets.aftercast.Defense)
end
end)
By Upstartgoblin 2016-08-06 13:38:48
So I am having an issue where I will nuke and it equips my 2 hand staff and grip. But when going back to idle it only quips Sors shield. Any help appreciated. Also is there any way someone can help me add strat counter to this? Code ----- Credit: Krystela of Asura | Last Update: 27 July 2016 ---->
---- .:: This was entirely created by me, it's not based off anyone's file ::. ---->
---- Always visit http://pastebin.com/u/KrystelaRose to look for possible updates ---->
---- .:: Please leave credit where it's due ::. ---->
---- .:: If you have any problem contact me via ffxiah: http://www.ffxiah.com/player/Asura/Krystela ::. ---->
function user_unload()
send_command('unbind ^f1')
send_command('unbind ^f10')
send_command('unbind ^f11')
end
function get_sets()
-- Binds for modes
send_command('bind ^f1 gs c C1')
send_command('bind ^f10 gs c C10')
send_command('bind ^f11 gs c C11')
-- Modes --
MagicIndex = 1
MagicArray = {"Normal","Magic Burst"} -- Press ctrl +F1 to circle through Magic modes --
WeaponLock = 'OFF' -- Press ctrl + F10 to Lock Weapon/sub/range/ammo --
Capacity = 'OFF' -- Press Ctrl +F11 to have Capacity cape on while Idle --
-- Gears --
gear = {}
gear.Debuff_Staff = { name="Grioavolr", augments={'"Conserve MP"+1','INT+2','Mag. Acc.+30',}}
gear.FC_Body = { name="Merlinic Jubbah", augments={'"Fast Cast"+6',}}
gear.FC_Feet = { name="Amalric Nails",}
gear.Macc_Body = { name="Jhakri Robe",}
gear.MB_Head = { name="Jhakri Coronal +1",}
gear.MB_Body = { name="Count's Garb",}
gear.MB_Feet = { name="Jhakri Pigaches +1",}
gear.Death_Hands = { name="Amalric Gages", augments={'MP+60','Mag. Acc.+15','"Mag.Atk.Bns."+15',}}
gear.MB_Hands = { name="Jhakri Cuffs +1",}
-- Set macro book/set --
send_command('input /macro book 1;wait .1;input /macro set 1') -- set macro book/set here --
---- .::Spellmaps::. ---->
enfMND = S{'Paralyze','Slow'}
enfINT = S{'Blind'}
-- Area mapping --
Town = S{"Ru'Lude Gardens","Upper Jeuno","Lower Jeuno","Port Jeuno","Port Windurst","Windurst Waters","Windurst Woods","Windurst Walls","Heavens Tower",
"Port San d'Oria","Northern San d'Oria","Southern San d'Oria","Port Bastok","Bastok Markets","Bastok Mines","Metalworks","Aht Urhgan Whitegate",
"Tavnazian Safehold","Nashmau","Selbina","Mhaura","Norg","Eastern Adoulin","Western Adoulin","Kazham","Heavens Tower"}
Assault = S{"Leujaoam Sanctum","Mamool Ja Training Grounds","Lebros Cavern","Periqia","Ilrusi Atoll",
"Nyzul Isle","Bhaflau Remnants","Arrapago Remnants","Silver Sea Remnants","Zhayolm Remnants"}
---- Precast ----
sets.precast = {}
sets.precast.FC = {
main="Grioavolr",
sub="Clerisy Strap +1",
ammo="Impatiens",
head="Amalric Coif",
neck="Voltsurge Torque",
ear1="Loquac. Earring",
ear2="Etiolation Earring",
body=gear.FC_Body,
hands="Gende. Gages +1",
ring1="Prolix Ring",
ring2="Renaye Ring",
back="Swith Cape +1",
waist="Witful Belt",
legs="Psycloth Lappas",
feet=gear.FC_Feet}
sets.precast.Cure = set_combine(sets.precast.FC, {
main="Gada",
sub="Sors Shield"})
sets.precast.Enhancing = set_combine(sets.precast.FC, {})
sets.precast['Stoneskin'] = set_combine(sets.precast.FC, {})
sets.precast.Elemental = set_combine(sets.precast.FC, {})
sets.precast['Impact'] = {
main="Mindmelter",
sub="Elder's Grip",
ammo="Impatiens",
head=empty,
neck="Voltsurge Torque",
ear1="Loquac. Earring",
ear2="Enchntr. Earring +1",
body="Twilight Cloak",
hands="Gende. Gages +1",
ring1="Prolix Ring",
ring2="Lebeche Ring",
back="Perimede Cape",
waist="Witful Belt",
legs="Psycloth Lappas",
feet=gear.FC_Feet}
-- Job Abilities --
sets.JA = {}
sets.JA['Tabula Rasa'] = {legs="Pedagogy Pants"}
-- WS sets --
sets.WS = {}
sets.WS['Myrkr'] = {
ammo="Psilomene",
head="Pixie Hairpin +1",
neck="Dualism Collar +1",
ear1="Gifted Earring",
ear2="Etiolation Earring",
body="Weather. Robe +1",
hands="Otomi Gloves",
ring1="Mephitas's Ring +1",
ring2="Mephitas's Ring",
back="Pahtli Cape",
waist="Shinjutsu-no-Obi",
legs="Amalric Slops",
feet="Psycloth Boots"}
sets.midcast = {}
-- Base Set --
sets.midcast.Recast = {
main="Grioavolr",
sub="Clerisy Strap +1",
ammo="Sapience Orb",
head="Amalric Coif",
neck="Voltsurge Torque",
ear1="Loquac. Earring",
ear2="Enchntr. Earring +1",
body=gear.FC_Body,
hands="Merlinic Dastanas",
ring1="Prolix Ring",
back="Lugh's Cape",
waist="Witful Belt",
legs="Psycloth Lappas",
feet=gear.FC_Feet}
sets.midcast.ConserveMP = {
main="Grioavolr",
sub="Clerisy Strap +1",
ammo="Pemphredo Tathlum",
head="Ipoca Beret",
neck="Incanter's Torque",
ear1="Gwati Earring",
ear2="Gifted Earring",
body="Witching Robe",
back="Seshaw Cape +1",
waist="Luminary Sash",
legs="Vanya Slops",
feet="Kaykaus Boots +1"}
-- Healing Magic --
sets.midcast.Cure = {
main="Tamaxchi",
sub="Sors Shield",
ammo="Pemphedro Tathlum",
head="Kaykaus Mitra +1",
neck="Incanter's Torque",
ear1="Healing Earring",
ear2="Beatific Earring",
body="Kaykaus Bliaut +1",
hands="Telchine Gloves",
ring1="Haoma's Ring",
ring2="Janniston Ring",
back="Tempered Cape +1",
waist="Luminary Sash",
legs="Vanya Slops",
feet="Kaykaus Boots +1"}
sets.midcast.Cure.WeaponLock = {
ammo="Pemphedro Tathlum",
head="Kaykaus Mitra +1",
neck="Incanter's Torque",
ear1="Healing Earring",
ear2="Beatific Earring",
body="Chironic Doublet",
hands="Telchine Gloves",
ring1="Janniston Ring",
ring2="Lebeche Ring",
back="Tempered Cape +1",
waist="Luminary Sash",
legs="Chironic Hose",
feet="Kaykaus Boots +1"}
sets.midcast.Cure.Weather = {
main="Chatoyant Staff",
sub="Achaq Grip",
ammo="Pemphedro Tathlum",
head="Kaykaus Mitra +1",
neck="Incanter's Torque",
ear1="Healing Earring",
ear2="Beatific Earring",
body="Kaykaus Bliaut +1",
hands="Telchine Gloves",
ring1="Haoma's Ring",
ring2="Janniston Ring",
back="Twilight Cape",
waist="Hachirin-no-Obi",
legs="Chironic Hose",
feet="Kaykaus Boots +1"}
sets.midcast.Enhancing = set_combine(sets.midcast.ConserveMP, {
main="Oranyan",
sub="Clerisy Strap",
head="Telchine Cap",
neck="Incanter's Torque",
ear1="Andoaa Earring",
body="Telchine Chasuble",
hands="Telchine Gloves",
ring1="Stikini Ring",
ring2="Stikini Ring",
back="Perimede Cape",
legs="Telchine Braconi",
feet="Telchine Pigaches"})
sets.midcast.Regen = set_combine(sets.midcast.ConserveMP, {
main="Bolelabunga",
sub="Genmei Shield",
head="Telchine Cap",
body="Telchine Chasuble",
hands="Telchine Gloves",
back="Lugh's Cape",
legs="Telchine Braconi",
feet="Telchine Pigaches"})
sets.midcast['Stoneskin'] = set_combine(sets.midcast.ConserveMP, {
main="Oranyan",
head="Telchine Cap",
body="Telchine Chasuble",
hands="Telchine Gloves",
legs="Telchine Braconi",
feet="Telchine Pigaches"})
sets.midcast['Aquaveil'] = set_combine(sets.midcast.ConserveMP, {
main="Oranyan",
head="Amalric Coif",
body="Telchine Chasuble",
hands="Telchine Gloves",
legs="Telchine Braconi",
feet="Telchine Pigaches"})
sets.midcast['Refresh'] = set_combine(sets.midcast.ConserveMP, {
main="Oranyan",
head="Amalric Coif",
body="Telchine Chasuble",
hands="Telchine Gloves",
legs="Telchine Braconi",
feet="Telchine Pigaches"})
-- Enfeebling Magic --
sets.midcast.Enfeebling = {
main=gear.Debuff_Staff,
sub="Clerisy Strap +1",
ammo="Pemphredo Tathlum",
head="Amalric Coif",
neck="Incanter's Torque",
ear1="Dignitary's Earring",
ear2="Gwati Earring",
body=gear.Macc_Body,
hands="Kaykaus Cuffs +1",
ring1="Stikini Ring",
ring2="Stikini Ring",
back="Lugh's Cape",
waist="Porous Rope",
legs="Psycloth Lappas",
feet="Skaoi Boots"}
sets.midcast.Enfeebling.MND = set_combine(sets.midcast.Enfeebling, {Head="Befouled Crown", waist="Luminary Sash"})
sets.midcast.Enfeebling.INT = set_combine(sets.midcast.Enfeebling, {})
-- Dark Magic --
sets.midcast.Dark = {}
sets.midcast.Drain = set_combine(sets.midcast.Recast, {legs="Merlinic Shalwar"})
sets.midcast['Stun'] = set_combine(sets.midcast.Recast, {
main=gear.Debuff_Staff,
sub="Clerisy Strap +1",
ammo="Pemphredo Tathlum",
ring2="Stikini Ring",
back="Lugh's Cape"})
-- Elemental Magic --
sets.midcast.Elemental = {
main="Mindmelter",
sub="Elder's Grip",
ammo="Impatiens",
head=gear.MB_Head,
neck="Saevus Pendant +1",
ear1="Etiolation Earring",
ear2="Friomisi Earring",
body=gear.MB_Body,
hands=gear.MB_Hands,
ring1="Tamas Ring",
ring2="Mujin Band",
back="Lugh's Cape",
waist="Aswang Sash",
legs="Amalric Slops",
feet=gear.MB_Feet}
sets.midcast.Elemental.Weather = set_combine(sets.midcast.Elemental, {
back="Twilight Cape",
waist="Hachirin-no-Obi"})
sets.midcast.Elemental.Weather.Klimaform = set_combine(sets.midcast.Elemental.Weather, {
ear1="Static Earring",
feet="Arbatel Loafers +1"})
sets.midcast.Elemental.Helix = set_combine(sets.midcast.Elemental, {back="Bookworm's Cape"})
sets.midcast.Elemental.Helix.Weather = set_combine(sets.midcast.Elemental.Helix, {waist="Hachirin-no-Obi"})
sets.midcast.Elemental.Helix.Weather.Klimaform = set_combine(sets.midcast.Elemental.Helix.Weather, {
ear1="Static Earring",
feet="Arbatel Loafers +1"})
sets.midcast.Elemental.MB = set_combine(sets.midcast.Elemental, {})
sets.midcast.Elemental.MB.Weather = set_combine(sets.midcast.Elemental.MB, {
back="Twilight Cape",
waist="Hachirin-no-Obi"})
sets.midcast.Elemental.MB.Weather.Klimaform = set_combine(sets.midcast.Elemental.MB.Weather, {
ear1="Static Earring",
feet="Arbatel Loafers +1"})
sets.midcast['Impact'] = {
main="Akademos",
sub="Niobid Strap",
range=empty,
ammo="Pemphredo Tathlum",
head=empty,
neck="Mizukage-noKubikazari",
ear1="Barkarole Earring",
ear2="Friomisi Earring",
body="Twilight Cloak",
hands=gear.MB_Hands,
ring1="Locus Ring",
ring2="Mujin Band",
back="Seshaw Cape +1",
waist="Refoccilation Stone",
legs="Merlinic Shalwar",
feet=gear.MB_Feet}
---- Aftercast ----
sets.aftercast = {}
sets.aftercast.Idle = {
main="Tamaxchi",
sub="Sors Shield",
ammo="Impatiens",
head="Befouled Crown",
neck="Saevus Pendant +1",
ear1="Etiolation Earring",
ear2="Loquac. Earring",
body="Jhakri Robe",
hands="Jhakri Cuffs +1",
ring1="Tamas Ring",
ring2="Renaye Ring",
back="Umbra Cape",
waist="Aswang Sash",
legs="Amalric Slops",
feet="Jhakri Pigaches +1",}
sets.aftercast['Sublimation'] = set_combine(sets.aftercast.Idle, {})
sets.aftercast.Defense = set_combine(sets.aftercast.Idle, {
main="Terra's Staff",
ammo="Staunch Tathlum",
ear1="Etiolation Earring",
feet="Herald's Gaiters"})
sets.aftercast.Town = {
head="Kaykaus Mitra +1",
body="kaykaus Bliaut +1",
hands="Kaykaus Cuffs +1",
feet="Herald's Gaiters"}
sets.resting = {}
end
function pretarget(spell,action)
-- Auto-Echo drop :D --
if spell.action_type == 'Magic' and buffactive['Silence'] then
cancel_spell()
send_command('input /item "Echo Drops" <me>')
end
end
---- .::Precast Functions::. ---->
-- Spells --
function precast(spell)
if spell.action_type == 'Magic' then
-- Healing Magic --
if string.find(spell.english,'Cure') then
equip(sets.precast.Cure)
elseif string.find(spell.english,'Cura') then
equip(sets.precast.Cure)
-- Enhancing Magic --
elseif spell.skill == 'Enhancing Magic' then
equip(sets.precast.Enhancing)
if spell.english == 'Stoneskin' then
equip(sets.precast[spell.english])
end
-- Elemental Magic --
elseif spell.skill == 'Elemental Magic' then
equip(sets.precast.Elemental)
if spell.english == 'Impact' then
equip(sets.precast.Impact)
end
else
equip(sets.precast.FC)
end
-- Job Abilities --
elseif spell.type == 'JobAbility' then
equip(sets.JA[spell.english])
-- Weapon skills --
elseif spell.type == 'WeaponSkill' then
equip(sets.WS[spell.english])
end
end
---- .::Midcast Functions::. ---->
function midcast(spell)
if spell.action_type == 'Magic' then
-- Healing Magic --
if string.find(spell.english,'Cure') then
if WeaponLock == 'ON' then
equip(sets.midcast.Cure.WeaponLock)
if spell.element == world.weather_element or spell.element == world.day_element then
equip(sets.midcast.Cure.WeaponLock, {waist="Hachirin-no-Obi"})
end
elseif spell.element == world.weather_element or spell.element == world.day_element then
equip(sets.midcast.Cure.Weather)
else
equip(sets.midcast.Cure)
end
-- Enhancing Magic --
elseif spell.skill == 'Enhancing Magic' then
if buffactive['Perpetuance'] then
equip(sets.midcast.Enhancing, {hands="Arbatel Bracers +1"})
if string.find(spell.english, 'Regen') then
equip(sets.midcast.Regen, {hands="Arbatel Bracers +1"})
elseif spell.english == 'Aquaveil' then
equip(sets.midcast[spell.english], {hands="Arbatel Bracers +1"})
elseif spell.english == 'Refresh' then
equip(sets.midcast[spell.english], {hands="Arbatel Bracers +1"})
end
elseif string.find(spell.english, 'Regen') then
equip(sets.midcast.Regen)
elseif string.find(spell.english, 'Aquaveil') then
equip(sets.midcast[spell.english])
elseif spell.english == 'Refresh' then
equip(sets.midcast[spell.english])
elseif spell.english == 'Stoneskin'then
equip(sets.midcast[spell.english])
else
equip(sets.midcast.Enhancing)
end
-- Enfeebling Magic --
elseif spell.skill == 'Enfeebling Magic' then
equip(sets.midcast.Enfeebling)
if enfMND:contains(spell.name) then
equip(sets.midcast.Enfeebling.MND)
elseif enfINT:contains(spell.name) then
equip(sets.midcast.Enfeebling.INT)
end
-- Dark Magic --
elseif string.find(spell.english, 'Aspir') then
equip(sets.midcast.Drain)
elseif string.find(spell.english, 'Drain') then
equip(sets.midcast.Drain)
elseif spell.english == 'Stun' then
if buffactive['Alacrity'] then
equip(sets.midcast.Dark.Stun, {feet="Pedagogy Loafers +1"})
else
equip(sets.midcast['Stun'])
end
-- Elemental Magic --
elseif spell.skill == 'Elemental Magic' then
if spell.english == 'Impact' then
equip(sets.midcast['Impact'])
elseif MagicArray[MagicIndex] == 'Normal' then
equip(sets.midcast.Elemental)
if spell.element == world.weather_element or spell.element == world.day_element then
equip(sets.midcast.Elemental.Weather)
if buffactive['Klimaform'] then
equip(sets.midcast.Elemental.Weather.Klimaform)
elseif string.find(spell.english,'helix') then
equip(sets.midcast.Elemental.Helix.Weather)
if buffactive['Klimaform'] then
equip(sets.midcast.Helix.Weather.Klimaform)
end
end
elseif string.find(spell.english,'helix') then
equip(sets.midcast.Elemental.Helix)
end
elseif MagicArray[MagicIndex] == 'Magic Burst' then
equip(sets.midcast.Elemental.MB)
if spell.element == world.weather_element or spell.element == world.day_element then
equip(sets.midcast.Elemental.MB.Weather)
if buffactive['Klimaform'] then
equip(sets.midcast.Elemental.MB.Weather.Klimaform)
elseif string.find(spell.english,'helix') then
equip(sets.midcast.Elemental.Helix.Weather)
if buffactive['Klimaform'] then
equip(sets.midcast.Elemental.Helix.Weather.Klimaform)
end
end
elseif buffactive['Klimaform'] then
equip(sets.midcast.Elemental.MB.Klimaform)
elseif string.find(spell.english,'helix') then
equip(sets.midcast.Elemental.Helix)
end
end
end
end
end
---- .::Aftercast Sets::. ---->
function aftercast(spell,action)
equip(sets.aftercast.Defense)
-- Capacity Idle Rule --
if Capacity == 'ON' then
equip(sets.aftercast.Defense, {back="Mecisto. Mantle"})
if buffactive['Sublimation: Activated'] then
equip(sets.aftercast.Sublimation, {back="Mecisto. Mantle"})
elseif player.mpp <80 then
equip(sets.aftercast.Idle, {back="Mecisto. Mantle"})
if player.mpp <50 then
equip(sets.aftercast.Idle, {back="Mecisto. Mantle",waist="Fucho-no-obi"})
end
end
status_change(player.status)
elseif buffactive['Sublimation: Activated'] then
equip(sets.aftercast.Sublimation)
status_change(player.status)
elseif player.mpp <80 then
equip(sets.aftercast.Idle)
if player.mpp <50 then
equip(sets.aftercast.Idle, {waist="Fucho-no-obi"})
end
status_change(player.status)
elseif Town:contains(world.zone) then
equip(sets.aftercast.Idle.Town)
end
status_change(player.status)
end
---- .::Status Changes::. ---->
function status_change(new,tab,old)
if new == 'Idle' then
if Capacity == 'ON' then
equip(sets.aftercast.Defense, {back="Mecisto. Mantle"})
if buffactive['Sublimation: Activated'] then
equip(sets.aftercast.Sublimation, {back="Mecisto. Mantle"})
elseif player.mpp <80 then
equip(sets.aftercast.Idle, {back="Mecisto. Mantle"})
if player.mpp <50 then
equip(sets.aftercast.Idle, {back="Mecisto. Mantle",waist="Fucho-no-obi"})
end
end
elseif buffactive['Sublimation: Activated'] then
equip(sets.aftercast.Sublimation)
elseif player.mpp <80 then
equip(sets.aftercast.Idle)
if player.mpp <50 then
equip(sets.aftercast.Idle, {waist="Fucho-no-obi"})
end
elseif Town:contains(world.zone) then
equip(sets.aftercast.Town)
end
end
if new == 'Resting' then
equip(sets.resting)
end
end
--- ..:: Modes functions ::.. --->
function self_command(command)
if command == 'C1' then -- Magic Acc Cycle --
MagicIndex = (MagicIndex % #MagicArray) + 1
add_to_chat(158,'Magic Set: ' .. MagicArray[MagicIndex])
status_change(player.status)
elseif command == 'C10' then -- Weapon Lock toggle --
if WeaponLock == 'ON' then
WeaponLock = 'OFF'
enable('main', 'sub' ,'range')
add_to_chat(123,'Weapon Lock: [OFF]')
else
WeaponLock = 'ON'
disable('main', 'sub' ,'range')
add_to_chat(158,'Weapon Lock: [ON]')
end
status_change(player.status)
elseif command == 'C11' then -- Capacity toggle --
if Capacity == 'ON' then
Capacity = 'OFF'
add_to_chat(123,'Capacity Set: [OFF]')
else
Capacity = 'ON'
add_to_chat(158,'Capacity Set: [ON]')
end
status_change(player.status)
end
end
-- Automatically changes Idle gears if you zone in or out of town --
windower.register_event('zone change', function()
if Town:contains(world.zone) then
equip(sets.aftercast.Town)
else
equip(sets.aftercast.Defense)
end
end)
Also doesnt seem to like the idle set at all doesnt equip random items ie feet or hands
Ragnarok.Flippant
Server: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-08-06 14:37:41
Your aftercast is equipping sets.aftercast.Defense, which has both Terra's Staff and Sors Shield. Sub is equipped after main, so this would remove your Terra's Staff. You don't hit any of your other rules unless your MP is less than 80%, you have Sublimation: Activated on, you're in CP mode, or you're in town. Should be fine if you just add a grip or sub=empty
By the way, your status_change function equips nothing unless you meet any of the aforementioned conditions. I also recommend cleaning up your aftercast/status_change: Code function aftercast(spell,action)
status_change(player.status)
end
function status_change(new,tab,old)
if new == 'Idle' then
if player.mpp>80 then
equip(sets.aftercast.Defense)
if Town:contains(world.zone) then
equip(sets.aftercast.Town)
end
else
equip(sets.aftercast.Idle)
if player.mpp<50 then
equip({waist="Fucho-no-obi"})
end
end
if Capacity == 'ON' then
equip({back="Mecisto. Mantle"})
end
if buffactive['Sublimation: Activated'] then
equip(sets.aftercast.Sublimation)
end
elseif new == 'Resting' then
equip(sets.resting)
end
end
Ragnarok.Zuhra
Server: Ragnarok
Game: FFXI
Posts: 16
By Ragnarok.Zuhra 2016-08-11 16:07:38
Bismarck.Speedyjim said: »Hopefully somebody else, like Flippant, can find your issue. In the meantime, you can try my LUA and paste your gear sets over mine and test.
Code -------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-- Original LUA by Fenrir.Motenten; edited by Bismarck.Speedyjim
-------------------------------------------------------------------------------------------------------------------
--[[
Custom commands:64
Shorthand versions for each strategem type that uses the version appropriate for
the current Arts.
In-game macro: /console gs c scholar xxx
Light Arts Dark Arts
gs c scholar light Light Arts/Addendum
gs c scholar dark Dark Arts/Addendum
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()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
include('organizer-lib')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
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
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('None', 'Normal')
state.CastingMode:options('Normal', 'Resistant')
state.IdleMode:options('Normal', 'PDT')
state.MagicBurst = M(false, 'Magic Burst')
info.low_nukes = 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",
"Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",
"Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
info.mid_nukes = S{}
info.high_nukes = S{}
send_command('bind ` input /ma Stun <t>; wait 0.5; input /p Casting STUN → «¶«<t>«¶«.')
send_command('bind ^` gs c toggle MagicBurst')
send_command('bind !` input /ja "Sublimation" <me>')
send_command('bind ^- gs c scholar light')
send_command('bind ^= gs c scholar dark')
send_command('bind @- gs c scholar cost')
send_command('bind @= gs c scholar power')
send_command('bind delete gs c scholar speed')
send_command('bind Home gs c scholar duration')
send_command('bind End gs c scholar aoe')
select_default_macro_book()
end
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 @=')
send_command('unbind delete')
send_command('unbind end')
send_command('unbind home')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Precast sets to enhance JAs
sets.precast.JA['Tabula Rasa'] = {legs="Pedagogy Pants"}
sets.precast.JA['Dark Arts'] = {"Academic's Gown +1"}
sets.precast.JA['Light Arts'] = {"Academic's Pants +1"}
organizer_items = {agown="Academic's Gown +1"}
-- Fast cast sets for spells
-- FC +71%, Quick Magic +10% (cap)
sets.precast.FC = {main=grio_MB,sub="Arbuda Grip",ammo="Incantor Stone",
head=merl_head_FC,neck="Orunmila's Torque",ear1="Enchanter Earring +1",ear2="Loquacious Earring",
body="Anhur Robe",hands="Gendewitha Gages +1",ring1="Weatherspoon Ring",ring2="Prolix Ring",
back="Perimede Cape",waist="Witful Belt",legs="Psycloth Lappas",feet=merl_feet_FC}
sets.precast.FC.Cure = set_combine(sets.precast.FC, {main="Serenity",head="Paean Mitra",ear1="Mendicant's Earring",body="Vanya Robe",hands="Gendewitha Gages +1",back="Pahtli Cape",feet="Vanya Clogs"})
sets.precast.FC.Curaga = sets.precast.FC.Cure
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {neck="Stoicheion Medal",ear1="Barkarole Earring"})
sets.precast.FC.Impact = set_combine(sets.precast.FC['Elemental Magic'], {head=empty,body="Twilight Cloak"})
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
-- Total MP: 2221 (Outside Escha), ???? (Inside Escha)
sets.precast.WS['Myrkr'] = {main="Akademos",sub="Niobid Strap",ammo="Ghastly Tathlum +1",
head="Kaabnax Hat",neck="Sanctity Necklace",ear1="Moonshade Earring",ear2="Etiolation Earring",
body="Amalric Doublet",hands="Otomi Gloves",ring1="Mephitas's Ring +1",ring2="Mephitas's Ring",
back="Pahtli Cape",waist="Luminary Sash",legs="Amalric Slops",feet="Medium's Sabots"}
-- Midcast Sets
sets.midcast.FastRecast = {back="Swith Cape +1"}
-- Cure Sets
-- Potency: +51%, Healing Skill: 610 total inc. Light Arts bonus, Enmity: -20, MND: +168, VIT: +87
sets.midcast.Cure = {main="Serenity",sub="Curatio Grip",ammo="Hydrocera",
head="Kaykaus Mitra",neck="Incanter's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Kaykaus Bliaut",hands="Pedagogy Bracers +1",ring1="Haoma's Ring",ring2="Sirona's Ring",
back="Tempered Cape +1",waist="Bishop's Sash",legs="Academic's Pants +1",feet="Vanya Clogs"}
-- Potency: +50%, Healing Skill: 562 total inc. Light Arts Bonus, MND: +160, VIT+ 89
sets.midcast.CureWithLightWeather = set_combine(sets.midcast.Cure, {
main="Chatoyant Staff",ear2="Mendicant's Earring",body="Kaykaus Bliaut",hands="Telchine Gloves",back="Twilight Cape",waist="Hachirin-no-Obi"})
sets.midcast.Curaga = sets.midcast.Cure
sets.midcast.Regen = {main="Bolelabunga",sub="Genmei Shield",ammo="Savant's Treatise",
head="Arbatel Bonnet +1",neck="Incanter's Torque",ear1="Andoaa Earring",
body="Telchine Chasuble",hands="Telchine Gloves",
back="Bookworm's Cape",waist="Cascade Belt",legs="Telchine Braconi",feet="Telchine Pigaches"}
-- Enhancing Magic Sets
sets.midcast['Enhancing Magic'] = {main=grio_ENH,sub="Arbuda Grip",ammo="Savant's Treatise",
head="Telchine Cap",body="Telchine Chasuble",hands="Telchine Gloves",legs="Telchine Braconi",feet="Telchine Pigaches",
ear1="Andoaa Earring",neck="Incanter's Torque",waist="Cascade Belt"}
sets.midcast.Protect = set_combine(sets.midcast['Enhancing Magic'], {ring1="Sheltered Ring"})
sets.midcast.Shell = set_combine(sets.midcast['Enhancing Magic'], {ring1="Sheltered Ring"})
sets.midcast.Haste = set_combine(sets.midcast.FastRecast, {main=grio_ENH,sub="Arbuda Grip",
head="Telchine Cap",body="Telchine Chasuble",hands="Telchine Gloves",legs="Telchine Braconi",feet="Telchine Pigaches"})
sets.midcast.Cursna = {main="Gada",sub="Genmei Shield",
neck="Malison Medallion",body="Vanya Robe",hands="Pedagogy Bracers +1",ring1="Haoma's Ring",ring2="Ephedra Ring",
back="Tempered Cape +1",waist="Bishop's Sash",legs="Academic's Pants +1",feet="Gendewitha Galoshes +1"}
sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
sets.midcast.Refresh = set_combine(sets.midcast['Enhancing Magic'], {waist="Gishdubar Sash",feet="Inspirited Boots"})
sets.midcast.Erase = sets.midcast.FastRecast
sets.midcast.Klimaform = sets.midcast.FastRecast
-- Custom spell classes
sets.midcast.MndEnfeebles = {main=grio_MB,sub="Mephitis Grip",ammo="Hydrocera",
head=merl_head_MAB,neck="Imbodla Necklace",ear1="Barkarole Earring",ear2="Dignitary's Earring",
body="Vanya Robe",hands="Lurid Mitts",ring1="Vertigo Ring",ring2="Globidonta Ring",
back="Refraction Cape",waist="Luminary Sash",legs=chiro_legs_ENF,feet="Medium's Sabots"}
sets.midcast.IntEnfeebles = sets.midcast.MndEnfeebles
sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
sets.midcast.Kaustra = set_combine(sets.midcast['Elemental Magic'], {head="Pixie Hairpin +1"})
sets.midcast['Dark Magic'] = {main="Rubicundity",sub="Genmei Shield",ammo="Hydrocera",
head=merl_head_MAB,neck="Incanter's Torque",ear1="Barkarole Earring",ear2="Dignitary's Earring",
body="Psycloth Vest",hands="Lurid Mitts",ring1="Weatherspoon Ring",ring2="Evanescence Ring",
back="Bookworm's Cape",waist="Witful Belt",legs="Pedagogy Pants",feet="Medium's Sabots"}
sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {ammo="Incantor Stone",
head="Pixie Hairpin +1",ear1="Hirudinea Earring",ear2="Loquacious Earring",body="Chironic Doublet",hands=merl_hands_AS,waist="Fucho-no-obi",legs=merl_legs_AS,feet=merl_feet_MAB})
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Stun = {main=grio_MB,sub="Arbuda Grip",ammo="Incantor Stone",
head="Pedagogy Mortarboard +1",neck="Orunmila's Torque",ear1="Enchanter Earring +1",ear2="Loquac. Earring",
body="Shango Robe",hands="Gendewitha Gages +1",ring1="Weatherspoon Ring",ring2="Prolix Ring",
back="Swith Cape +1",waist="Ninurta's Sash",legs="Psycloth Lappas",feet="Academic's Loafers +1"}
sets.midcast.Stun.Resistant = set_combine(sets.midcast.Stun, {})
-- Elemental Magic sets are default for handling all-tier nukes.
sets.midcast['Elemental Magic'] = {main="Akademos",sub="Niobid Strap",ammo="Pemphredo Tathlum",
head=merl_head_MAB,neck="Saevus Pendant +1",ear1="Barkarole Earring",ear2="Friomisi Earring",
body="Merlinic Jubbah",hands=chiro_hands_MAB,ring1="Shiva Ring +1",ring2="Shiva Ring +1",
back="Toro Cape",waist="Refoccilation Stone",legs=merl_legs_MAB,feet=merl_feet_MAB}
-- sub="Zuuxowu Grip",head="Buremte Hat",body="Witching Robe",hands="Otomi Gloves",back="Bookworm's Cape",waist="Tengu-no-Obi",feet="Amalric Nails"
sets.midcast['Elemental Magic'].Resistant = set_combine(sets.midcast['Elemental Magic'], {neck="Sanctity Necklace",back="Bookworm's Cape"})
-- Custom refinements for certain nuke tiers (No longer used as of Jan/2016).
sets.midcast['Elemental Magic'].HighTierNuke = sets.midcast['Elemental Magic']
sets.midcast['Elemental Magic'].HighTierNuke.Resistant = sets.midcast['Elemental Magic'].Resistant
sets.midcast.Helix = set_combine(sets.midcast['Elemental Magic'], {neck="Sanctity Necklace",back="Bookworm's Cape"})
sets.midcast.Noctohelix = set_combine(sets.midcast.Helix, {head="Pixie Hairpin +1"})
sets.midcast.Luminohelix = set_combine(sets.midcast.Helix, {ring1="Weatherspoon Ring"})
sets.midcast.Impact = {main="Akademos",sub="Mephitis Grip",ammo="Hydrocera",
head=empty,neck="Sanctity Necklace",ear1="Barkarole Earring",ear2="Gwati Earring",
body="Twilight Cloak",hands=chiro_hands_MAB,ring1="Weatherspoon Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Luminary Sash",legs=chiro_legs_ENF,feet="Medium's Sabots"}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {main="Chatoyant Staff",sub="Mephitis Grip",
neck="Wiglen Gorget",body="Amalric Doublet",hands="Serpentes Cuffs",
ring1="Sheltered Ring",ring2="Paguroidea Ring",legs="Assiduity Pants +1",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="Akademos",sub="Niobid Strap",ammo="Hydrocera",
head=merl_head_MAB,neck="Orunmila's Torque",ear1="Enchanter Earring +1",ear2="Loquacious Earring",
body="Merlinic Jubbah",hands=chiro_hands_REF,ring1="Shiva Ring +1",ring2="Matrimony Ring",
back="Bookworm's Cape",waist="Fucho-no-obi",legs=merl_legs_MAB,feet="Herald's Gaiters"}
sets.idle.Field = {main="Bolelabunga",sub="Genmei Shield",ammo="Homiliary",
head="Befouled Crown",neck="Loricate Torque +1",ear1="Etiolation Earring",ear2="Loquacious Earring",
body="Amalric Doublet",hands=chiro_hands_REF,ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Umbra Cape",waist="Witful Belt",legs="Assiduity Pants +1",feet="Gendewitha Galoshes +1"}
sets.idle.PDT = {main="Bolelabunga",sub="Genmei Shield",ammo="Incantor Stone",
neck="Loricate Torque +1",ear1="Ethereal Earring",ring1="Defending Ring",ring2=gear.DarkRing.physical,
body="Vanya Robe",hands="Gendewitha Gages +1",back="Umbra Cape",feet="Pedagogy Loafers +1"}
sets.idle.Weak = sets.idle.Field
-- Defense sets
sets.defense.PDT = {main="Bolelabunga",sub="Genmei Shield",ammo="Incantor Stone",
head="Befouled Crown",neck="Loricate Torque +1",ear1="Ethereal Earring",
body="Gendewitha Bliaut +1",hands="Gendewitha Gages +1",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Umbra Cape",legs=chiro_legs_ENF,feet="Gendewitha Galoshes +1"}
sets.defense.MDT = {
head=merl_head_MAB,neck="Loricate Torque +1",
body="Pedagogy Gown +1",hands=chiro_hands_MAB,ring1="Defending Ring",ring2="Shadow Ring",
back="Umbra Cape",legs=chiro_legs_ENF,feet="Arbatel Loafers +1"}
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 = {}
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Ebullience'] = {}
sets.buff['Rapture'] = {head="Arbatel Bonnet +1"}
sets.buff['Perpetuance'] = {hands="Arbatel Bracers +1"}
sets.buff['Immanence'] = {hands="Arbatel Bracers +1"}
sets.buff['Penury'] = {legs="Arbatel Pants +1"}
sets.buff['Parsimony'] = {legs="Arbatel Pants +1"}
sets.buff['Celerity'] = {feet="Pedagogy Loafers +1"}
sets.buff['Alacrity'] = {head=merl_head_MAB,feet="Pedagogy Loafers +1"}
sets.buff['Stormsurge'] = {feet="Pedagogy Loafers +1"}
sets.buff['Klimaform'] = {waist="Hachirin-no-Obi",feet="Arbatel Loafers +1"}
sets.buff.FullSublimation = {head="Academic's Mortarboard +1",ear1="Savant's Earring",body="Pedagogy Gown +1",neck="Wiglen Gorget",ring1="Sheltered Ring",ring2="Paguroidea Ring"}
sets.buff.PDTSublimation = {head="Academic's Mortarboard +1",ear1="Savant's Earring",body="Pedagogy Gown +1"}
sets.magic_burst = {main="Akademos",sub="Niobid Strap",
neck="Mizukage-no-Kubikazari",body=merl_body_MB,hands="Amalric Gages",ring1="Mujin Band",legs=merl_legs_MB}
-- Cap: 40%, Cap-breaking: 23% (Gifts: 13%, Mujin: 5%, Amalric Gages: 5%)
-- Akademos: 10%, Mizukage: 10%, Merlinic Body: 10%, Merlinic Legs: 8% = 38%
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
function refine_various_spells(spell, action, spellMap, eventArgs)
aspirs = S{'Aspir','Aspir II'}
sleeps = S{'Sleep','Sleep II'}
sleepgas = S{'Sleepga'}
if not sleepgas:contains(spell.english) and not sleeps:contains(spell.english) and not aspirs:contains(spell.english) then
return
end
local newSpell = spell.english
local spell_recasts = windower.ffxi.get_spell_recasts()
local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
if spell_recasts[spell.recast_id] > 0 then
if aspirs:contains(spell.english) then
if spell.english == 'Aspir' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Aspir II' then
newSpell = 'Aspir'
end
elseif sleeps:contains(spell.english) then
if spell.english == 'Sleep' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
elseif spell.english == 'Sleep II' then
newSpell = 'Sleep'
end
elseif sleepgas:contains(spell.english) then
if spell.english == 'Sleepga' then
add_to_chat(122,cancelling)
eventArgs.cancel = true
return
end
end
end
if newSpell ~= spell.english then
send_command('@input /ma "'..newSpell..'" '..tostring(spell.target.raw))
eventArgs.cancel = true
return
end
end
function job_precast(spell, action, spellMap, eventArgs)
refine_various_spells(spell, action, spellMap, eventArgs)
if (spell.type:endswith('Magic') or spell.type == "Ninjutsu") then
if buffactive.Silence then
cancel_spell()
send_command('input /item "Echo Drops" <me>')
end
end
end
-- Run after the general 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.skill == 'Elemental Magic' then
if state.MagicBurst.value then
equip(sets.magic_burst)
end
end
if spell.skill == 'Elemental Magic' and spell.element == world.day_element or spell.element == world.weather_element then
equip ({waist="Hachirin-no-Obi"})
end
end
function job_aftercast(spell)
if spell.english == 'Sleep' or spell.english == 'Sleepga' then
send_command('@wait 50;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
elseif spell.english == 'Sleep II' or spell.english == 'Sleepga II' then
send_command('@wait 80;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
elseif spell.english == 'Break' or spell.english == 'Breakga' then
send_command('@wait 20;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
if 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 == 'Offense Mode' then
if newValue == 'Normal' then
disable('main','sub','range')
else
enable('main','sub','range')
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
if spell.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'
elseif info.high_nukes:contains(spell.english) then
return 'HighTierNuke'
end
end
end
end
function customize_idle_set(idleSet)
if state.Buff['Sublimation: Activated'] then
if state.IdleMode.value == 'Normal' then
idleSet = set_combine(idleSet, sets.buff.FullSublimation)
elseif state.IdleMode.value == '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
-- 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.value == '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)
display_current_caster_state()
eventArgs.handled = true
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
-------------------------------------------------------------------------------------------------------------------
-- 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' then --or spellMap ~= 'ElementalEnfeeble'
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.skill == "Elemental Magic" 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
function display_current_caster_state()
local msg = ''
if state.OffenseMode.value ~= 'None' then
msg = msg .. 'Melee'
if state.CombatForm.has_value then
msg = msg .. ' (' .. state.CombatForm.value .. ')'
end
msg = msg .. ', '
end
msg = msg .. 'Idle ['..state.IdleMode.value..'], Casting ['..state.CastingMode.value..']'
add_to_chat(122, msg)
local currentStrats = get_current_strategem_count()
local arts
if buffactive['Light Arts'] or buffactive['Addendum: White'] then
arts = 'Light Arts'
elseif buffactive['Dark Arts'] or buffactive['Addendum: Black'] then
arts = 'Dark Arts'
else
arts = 'No Arts Activated'
end
add_to_chat(122, 'Current Available Strategems: ['..currentStrats..'], '..arts..'')
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 currentStrats = get_current_strategem_count()
local newStratCount = currentStrats - 1
local strategem = cmdParams[2]:lower()
if currentStrats > 0 and strategem ~= 'light' and strategem ~= 'dark' then
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
elseif currentStrats == 0 then
add_to_chat(122, '***Out of strategems! Canceling...***')
return
end
if strategem == 'light' then
if buffactive['light arts'] then
send_command('input /ja "Addendum: White" <me>')
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
elseif buffactive['addendum: white'] then
add_to_chat(122,'Error: Addendum: White is already active.')
elseif buffactive['dark arts'] or buffactive['addendum: black'] then
send_command('input /ja "Light Arts" <me>')
add_to_chat(122, '***Changing Arts! Current Charges Available: ['..currentStrats..']***')
else
send_command('input /ja "Light Arts" <me>')
end
elseif strategem == 'dark' then
if buffactive['dark arts'] then
send_command('input /ja "Addendum: Black" <me>')
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
elseif buffactive['addendum: black'] then
add_to_chat(122,'Error: Addendum: Black is already active.')
elseif buffactive['light arts'] or buffactive['addendum: white'] then
send_command('input /ja "Dark Arts" <me>')
add_to_chat(122, '***Changing Arts! Current Charges Available: ['..currentStrats..']***')
else
send_command('input /ja "Dark Arts" <me>')
end
elseif 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
function get_current_strategem_count()
local allRecasts = windower.ffxi.get_ability_recasts()
local stratsRecast = allRecasts[231]
local maxStrategems = math.floor(player.main_job_level + 10) / 20
local fullRechargeTime = 5*33
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()
if player.sub_job == 'RDM' then
set_macro_page(1, 8)
elseif player.sub_job == 'BLM' then
set_macro_page(1, 8)
elseif player.sub_job == 'WHM' then
set_macro_page(2, 8)
end
end
Hey I've been trying out your lua here and it seems to load ok but no matter how I change the macro books they always seem to load book 1,20. Any ideas?
Ragnarok.Zuhra
Server: Ragnarok
Game: FFXI
Posts: 16
By Ragnarok.Zuhra 2016-08-11 16:17:08
nevermind, after zoning it seemed to work fine.
Server: Asura
Game: FFXI
Posts: 20
By Asura.Yamoman 2016-08-20 02:19:49
Got some issues, i added all the files in Silvxiii/gearswap-scholarFFxi to my GS folder and just kept my SCH_gear should work no problems i assume,i load it says loaded succesfully but when i cast any spell ie sneak, i get
Gearswap lua runtime rror: gearswap/flow.lua:336
Gearswap has detected an error in the user function aftercast:
,,,, files x86)windower4/addons........../sch.lua:928: attemp to index global 'soloSC' (a nil value) error message
also did /console gs solosc1 fusion to see if working got same error cept last line was get_current_'strategem_count' (a nil value)
where did i mess up? thx
Ragnarok.Flippant
Server: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-08-20 11:24:54
There appears to be a table (soloSC) and function (get_current_strategem_count) missing in the files. Based on dates, it looks like he may have only updated one file without updating the other.
Posted below is a _SCH.lua file that I wrote using Byrths original file as an example, and tweaked and edited to work out any errors. I will not call it complete, due to me potentially missing specific rules for certain JAs or spells. However, I would say that it covers the majority of what is needed.
If you have any questions about it, please feel free to post them here for Byrths or myself to answer. Also, if you noticed I missed anything crucial, let me know and we can add it in.
This same file is included in the Gearswap download in the examples section, and I will try to keep it as up-to-date as possible.
Code function get_sets()
sets = {}
sets.aftercast_Idle_noSub = {main="Owleyes",sub="Genbu's Shield",ammo="Incantor Stone",
head="Savant's bonnet +2",neck="Twilight Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Serpentes Cuffs",ring1="Sangoma Ring",ring2="Maquette Ring",
back="Shadow Mantle",waist="Korin Obi",legs="Nares Trews",feet="Serpentes Sabots"}
sets.aftercast_Idle_Sub = {main="Owleyes",sub="Genbu's Shield",ammo="Incantor Stone",
head="Savant's bonnet +2",neck="Twilight Torque",ear1="Savant's Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Serpentes Cuffs",ring1="Sangoma Ring",ring2="Maquette Ring",
back="Shadow Mantle",waist="Korin Obi",legs="Nares Trews",feet="Serpentes Sabots"}
sets.aftercast_Idle = sets.aftercast_Idle_noSub
sets.precast_FastCast = {ammo="Incantor Stone",head="Nahtirah Hat",ear2="Loquacious Earring",
body="Anhur Robe",hands="Gendewitha Gages",back="Swith Cape",legs="Orvail Pants",feet="Chelona Boots"}
sets.Resting = {main="Chatoyant Staff",sub="Mephitis Grip",
head="Nahtirah Hat",neck="Twilight Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Nares Cuffs",ring1="Sangoma Ring",ring2="Maquette Ring",
back="Shadow Mantle",waist="Korin Obi",legs="Nares Trews",feet="Chelona Boots"}
sets.midcast_ElementalMagic = {main="Atinian Staff",sub="Wizzan Grip",ammo="Witchstone",
head="Nares Cap",neck="Eddy Necklace",ear1="Hecate's Earring",ear2="Novio Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Icesoul Ring",
back="Searing Cape",waist="Maniacus Sash",legs="Hagondes Pants",feet="Bokwus Boots"}
sets.midcast_DarkMagic = {main="Chatoyant Staff",sub="Arbuda Grip",ammo="Hasty Pinion",
head="Appetence Crown",neck="Aesir Torque",ear1="Hirudinea Earring",ear2="Loquacious Earring",
body="Hedera Cotehardie",hands="Ayao's Gages",ring1="Balrahn's Ring",ring2="Excelsis Ring",
back="Merciful Cape",waist="Goading Belt",legs="Auspex Slops",feet="Bokwus Boots"}
sets.midcast_EnfeeblingMagic = {main="Atinian Staff",sub="Mephitis Grip",ammo="Savant's Treatise",
head="Nahtirah Hat",neck="Eddy Necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Hedera Cotehardie",hands="Hagondes Cuffs",ring1="Sangoma Ring",ring2="Maquette Ring",
back="Merciful Cape",waist="Cascade Belt",legs="Orvail Pants",feet="Rubeus Boots"}
sets.midcast_Impact = {main="Atinian Staff",sub="Wizzan Grip",ammo="Witchstone",
neck="Eddy Necklace",ear1="Hecate's Earring",ear2="Novio Earring",
hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Icesoul Ring",
back="Searing Cape",waist="Maniacus Sash",legs="Hagondes Pants",feet="Bokwus Boots"}
sets.midcast_Embrava = {main="Kirin's Pole",sub="Fulcio Grip",ammo="Savant's Treatise",
head="Svnt. Bonnet +2",neck="Colossus's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Anhur Robe",hands="Savant's Bracers +2",
back="Merciful Cape",waist="Cascade Belt",legs="Shedir Seraweels",feet="Rubeus Boots"}
sets.midcast_EnhancingMagic = {main="Kirin's Pole",sub="Fulcio Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Colossus's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Anhur Robe",hands="Gendewitha Gages",
back="Swith Cape",waist="Ninurta's Sash",legs="Orvail Pants",feet="Chelona Boots"}
sets.precast_Stun = {main="Apamajas II",sub="Mephitis Grip",ranged="Aureole",
head="Nahtirah Hat",neck="Eddy Necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
body="Hedera Cotehardie",hands="Gendewitha Gages",ring1="Sangoma Ring",ring2="Maquette Ring",
back="Swith Cape",waist="Ninurta's Sash",legs="Bokwus Slops",feet="Argute Loafers +2"}
sets.midcast_Cure = {main="Chatoyant Staff",head="Paean Mitra",neck="Phalaina Locket",
body="Anhur Robe",hands="Bokwus Gloves",back="Oretanis's Cape",legs="Nares Trews"}
sets.midcast_Helix = {main="Chatoyant Staff",sub="Wizzan Grip",ammo="Snow Sachet",
head="Nahtirah Hat",neck="Stoicheion Medal",ear1="Hecate's Earring",ear2="Novio Earring",
body="Nares Saio",hands="Nares Cuffs",ring1="Icesoul Ring",ring2="Icesoul Ring",
back="Twilight Cape",waist="Wanion Belt",legs="Akasha Chaps",feet="Nares Clogs"}
sets.midcast_Stoneskin = {main="Kirin's Pole",neck="Stone Gorget",waist="Siegel Sash",legs="Shedir Seraweels"}
sets.Obi = {}
sets.Obi.Fire = {waist='Karin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.Obi.Earth = {waist='Dorin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.Obi.Water = {waist='Suirin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.Obi.Wind = {waist='Furin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.Obi.Ice = {waist='Hyorin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.Obi.Thunder = {waist='Rairin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.Obi.Light = {waist='Korin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.Obi.Dark = {waist='Anrin Obi',back='Twilight Cape',lring='Zodiac Ring'}
sets.staves = {}
sets.staves.damage = {}
sets.staves.damage.Thunder = {main="Apamajas I"}
sets.staves.damage.Fire = {main="Atar I"}
sets.staves.accuracy = {}
sets.staves.damage.Thunder = {main="Apamajas II"}
sets.staves.damage.Ice = {main="Vourukasha II"}
stuntarg = 'Shantotto'
end
function precast(spell,action)
if spell.english == 'Impact' then
cast_delay(2)
equip(sets['precast_FastCast'],{body="Twilight Cloak"})
if not buffactive['elemental seal'] then
add_to_chat(8,'--------- Elemental Seal is down ---------')
end
elseif spell.skill=='ElementalMagic' and spell.casttime < 3 then
cast_delay(0.1)
equip(sets.midcast_ElementalMagic)
if spell.element == 'Earth' then
equip({neck="Quanpur Necklace"})
end
if spell.element == world.weather_element or spell_element == world.day_element and sets.Obi[spell.element] then
equip(sets.Obi[spell.element])
end
elseif spell.english == 'Stun' then
cast_delay(0.1)
equip(sets['precast_Stun'])
if not buffactive.thunderstorm then
add_to_chat(8,'--------- Thunderstorm is down ---------')
elseif not buffactive.klimaform then
add_to_chat(8,'----------- Klimaform is down -----------')
end
if stuntarg ~= 'Shantotto' then
send_command('@input /t '..stuntarg..' ---- Byrth Stunned!!! ---- ')
end
else
equip(sets['precast_FastCast'])
cast_delay(0.5)
end
if (buffactive.alacrity or buffactive.celerity) and world.weather_element == spell.element then
equip({feet='Argute Loafers +2'})
end
end
function midcast(spell,action)
if string.find(spell.english,'Cur') then
equip(sets.midcast_Cure)
if spell.element == world.weather_element or spell_element == world.day_element then
equip({main="Chatoyant Staff"},sets.Obi[spell.element])
end
if buffactive.rapture then
equip({head="Savant's Bonnet +2"})
end
elseif spell.english == 'Impact' then
local tempset = sets['midcast_Impact']
tempset['body'] = 'Twilight Cloak'
tempset['head'] = empty
equip(tempset)
if spell.element == world.weather_element or spell_element == world.day_element then
equip(sets.Obi[spell.element])
end
if sets.staves.damage[spell.element] then
equip(sets.staves.damage[spell.element])
end
elseif spell.skill=="ElementalMagic" then
if string.find(spell.english,'helix') then
equip(sets['midcast_Helix'])
else
equip(sets.midcast_ElementalMagic)
if spell.element=='Earth' then
equip({neck="Quanpur Necklace"})
end
if spell.element == world.weather_element or spell_element == world.day_element then
equip(sets.Obi[spell.element])
end
end
if buffactive.ebullience then
equip({head="Savant's Bonnet +2"})
end
if buffactive.klimform then
equip ({feet="Savant's Loafers +2"})
end
elseif spell.english == 'Stoneskin' then
equip(sets['midcast_Stoneskin'])
elseif spell.skill == 'EnhancingMagic' then
if spell.english == 'Embrava' then
equip(sets['midcast_Embrava'])
if not buffactive.perpetuance then
add_to_chat(8,'--------- Perpetuance is down ---------')
end
if not buffactive.accession then
add_to_chat(8,'--------- Accession is down ---------')
end
if not buffactive.penury then
add_to_chat(8,'--------- Penury is down ---------')
end
end
if buffactive.perpetuance then
equip(sets['midcast_EnhancingMagic'],{hands="Savant's Bracers +2"})
else
equip(sets['midcast_EnhancingMagic'])
end
else
weathercheck(spell.element,sets['midcast_'..spell.skill])
end
if spell.english == 'Sneak' then
send_command('@wait 1.8;cancel 71;')
end
end
function aftercast(spell,action)
equip(sets['aftercast_Idle'])
if spell.english == 'Sleep' or spell.english == 'Sleepga' then
send_command('@wait 50;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
elseif spell.english == 'Sleep II' or spell.english == 'Sleepga II' then
send_command('@wait 80;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
elseif spell.english == 'Break' or spell.english == 'Breakga' then
send_command('@wait 20;input /echo ------- '..spell.english..' is wearing off in 10 seconds -------')
end
end
function status_change(new,tab)
if new == 'Resting' then
equip(sets['Resting'])
else
equip(sets['aftercast_Idle'])
end
end
function buff_change(status,gain_or_loss)
if status == 'Sublimation: Complete' and gain_or_loss == 'gain' and not 'stunmode' then -- True whether gained or lost
sets.aftercast_Idle = sets.aftercast_Idle_noSub
elseif status == 'Sublimation: Activated' and gain_or_loss == 'gain' and not 'stunmode' then
sets.aftercast_Idle = sets.aftercast_Idle_Sub
end
equip(sets.aftercast_Idle)
end
function pet_midcast(spell,action)
end
function pet_aftercast(spell,action)
end
function self_command(command)
if command == 'stuntarg' then
stuntarg = target.name
elseif command == 'stunmode' then
windower.add_to_chat(100,'Stun Mode')
if sets.aftercast_Idle ~= sets.precast_Stun then
stunmode = true
sets.aftercast_Idle = sets.precast_Stun
elseif buffactive['Sublimation: Activated'] then
stunmode = false
sets.aftercast_Idle = sets.aftercast_Idle_Sub
else
stunmode = false
sets.aftercast_Idle = sets.aftercast_Idle_noSub
end
equip(sets.aftercast_Idle)
end
end
-- This function is user defined, but never called by GearSwap itself. It's just a user function that's only called from user functions. I wanted to check the weather and equip a weather-based set for some spells, so it made sense to make a function for it instead of replicating the conditional in multiple places.
function weathercheck(spell_element,set)
if spell_element == world.weather_element or spell_element == world.day_element then
equip(set,sets['Obi_'..spell_element])
else
equip(set)
end
end
|
|