-------------------------------------------------------------------------------------------------------------------
-- Initialization function that defines sets and variables to be used.
-------------------------------------------------------------------------------------------------------------------
-- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
-- An F12 keypress, while out of town, will activate Light Arts and Afflatus Solace --
--[[
Custom commands for WHM/SCH:
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 addendum Addendum: White Addendum: Black
--]]
send_command('wait 6;input /lockstyleset 03')
-- Keybinds
--Numpad Keybinds
-- CTRL Key Binds --
send_command('bind ^%numpad+ input /ja "Light Arts" <me>')
send_command('bind ^%numpadenter input /ja "Dark Arts" <me>')
send_command('bind ^%numpad. input /ma "Aurorastorm" <me>')
send_command('bind ^%numpad0 input /ma "Haste" <me>')
send_command('bind ^%numpad1 gs c scholar cost')
send_command('bind ^%numpad2 gs c scholar speed')
send_command('bind ^%numpad3 gs c scholar aoe')
send_command('bind ^%numpad4 input /ma "Aquaveil" <me>')
send_command('bind ^%numpad5 input /ma "Stoneskin" <me>')
send_command('bind ^%numpad6 input /ma "Blink" <me>')
send_command('bind ^%numpad7 input /ma "Raise" <t>')
send_command('bind ^%numpad8 input /ma "Raise II" <t>')
send_command('bind ^%numpad9 input /ma "Raise III" <t>')
send_command('bind ^%numpad/ input /ma "Arise" <t>')
send_command('bind ^%numpad* input /ma "Reraise IV" <me>')
send_command('bind ^%numpad- input /ja "Sublimation" <me>')
-- ALT Key Binds --
send_command('bind !%numpad+ input /ja "Addendum: White" <me>')
send_command('bind !%numpadenter input /ja "Addendum: Black" <me>')
send_command('bind !%numpad1 input /ma "Silena" <t>')
send_command('bind !%numpad2 gs c scholar speed')
send_command('bind !%numpad3 gs c scholar aoe')
send_command('bind !%numpad4 input /ma "Cursna" <t>')
send_command('bind !%numpad5 input /ma "Sacrifice" <t>')
send_command('bind !%numpad6 input /ma "Poisona" <t>')
send_command('bind !%numpad7 input /ma "Erase" <t>')
send_command('bind !%numpad8 input /ma "Stona" <t>')
send_command('bind !%numpad9 input /ma "Paralyna" <t>')
send_command('bind !%numpad/ input /ma "Blindna" <t>')
send_command('bind !%numpad* input /ma "Viruna" <t>')
send_command('bind !%numpad0 input /ja "Divine Caress" <me>')
send_command('bind !%numpad. input /ma "Haste" <t>')
send_command('bind !%numpad- input /ma "Regen IV" <t>')
-- WINDOWS Key Binds --
send_command('bind @%numpad1 input /ma "Cure" <t>')
send_command('bind @%numpad2 input /ma "Cure II" <t>')
send_command('bind @%numpad3 input /ma "Cure III" <t>')
send_command('bind @%numpad4 input /ma "Cure IV" <t>')
send_command('bind @%numpad5 input /ma "Cure V" <t>')
send_command('bind @%numpad7 input /ma "Curaga II" <t>')
send_command('bind @%numpad8 input /ma "Curaga III" <t>')
send_command('bind @%numpad9 input /ma "Curaga IV" <t>')
send_command('bind f3 input /ma "Erase" <t>')
--Main Keypad Keybinds
send_command('bind ^` input /ma "Aurorastorm" <me>')
send_command('bind ^c input /ja "Divine Caress" <me>')
send_command('bind ^d input /ja "Dark Arts" <me>;wait 1.4;input /ja "Addendum: Black" <me>;wait 1.2;input /ma "Dispel" <t>')
send_command('bind ^e input /ma "Esuna" <me>')
send_command('bind ^s input /ja "Sacrosanctity" <me>')
send_command('bind ^. input /ma "Protectra V" <me>')
send_command('bind ^/ input /ma "Shellra V" <me>')
send_command('bind ^; input /ma "Protect V" <t>')
send_command('bind ^\' input /ma "Shell V" <t>')
function user_unload()
if binds_on_unload then
binds_on_unload()
end
send_command('unbind @t')
send_command('unbind ^`')
send_command('unbind ^1')
send_command('unbind ^2')
send_command('unbind ^3')
send_command('unbind ^%numpad0')
send_command('unbind ^%numpad1')
send_command('unbind ^%numpad2')
send_command('unbind ^%numpad3')
send_command('unbind ^c')
send_command('unbind ^d')
send_command('unbind ^e')
send_command('unbind ^s')
send_command('unbind ^.')
send_command('unbind ^/')
end
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include file.
mote_include_version = 2
include('Mote-Include.lua')
-- Load helper binds file --
include('estbinds.lua')
end
-- Setup vars that are user-independent.
function job_setup()
state.Buff['Afflatus Solace'] = buffactive['Afflatus Solace'] or false
state.Buff['Afflatus Misery'] = buffactive['Afflatus Misery'] or false
end
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
-- Options: Override default values
options.OffenseModes = {'None', 'Normal'}
options.DefenseModes = {'Normal'}
options.WeaponskillModes = {'Normal'}
options.CastingModes = {'Normal', 'Resistant', 'Dire'}
options.IdleModes = {'Normal', 'PDT'}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'PDT'}
options.MagicalDefenseModes = {'MDT'}
state.OffenseMode = 'None'
-- Default macro set/book
set_macro_page(4, 16)
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Fast cast sets for spells
sets.precast.FC = {main="Queller rod",ammo="Sapience orb",
head="Nahtirah Hat",neck="Voltsurge torque",ear1="Enchntr. earring +1",ear2="Loquacious Earring",
body="Anhur Robe",hands="Gende. gages +1",ring1="Weather. ring",ring2="Prolix Ring",
back="Swith Cape +1",waist="Witful Belt",legs="Artsieq hose",feet="Regal pumps +1"}
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {})
sets.precast.FC.Stoneskin = set_combine(sets.precast.FC['Enhancing Magic'], {})
sets.precast.FC.Arise = set_combine(sets.precast.FC, {legs="Ebers pant. +1"})
sets.precast.FC.Raise = set_combine(sets.precast.FC, {legs="Ebers pant. +1"})
sets.precast.FC['Healing Magic'] = set_combine(sets.precast.FC, {legs="Ebers Pant. +1"})
sets.precast.FC.StatusRemoval = set_combine(sets.precast.FC, {legs="Ebers pant. +1"})
sets.precast.FC.Cure = set_combine(sets.precast.FC['Healing Magic'], {main="Queller rod",ear2="Nourish. earring +1",legs="Ebers pant. +1"})
sets.precast.FC.Curaga = sets.precast.FC.Cure
-- Precast sets to enhance JAs
sets.precast.JA.Benediction = {body="Piety Briault +1"}
sets.precast.JA.Devotion = {}
-- Waltz set (chr and vit)
sets.precast.Waltz = {}
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
gear.default.weaponskill_neck = "Asperity Necklace"
gear.default.weaponskill_waist = ""
sets.precast.WS = {}
sets.precast.WS['Flash Nova'] = {}
-- Midcast Sets
sets.midcast.FastRecast = {head="Nahtirah Hat",neck="Voltsurge torque",ear1="Enchntr. earring +1",ear2="Loquacious Earring",
body="Anhur Robe",hands="Gende. gages +1",ring1="Weatherspoon ring",ring2="Prolix Ring",
back="Swith Cape +1",waist="Witful Belt",legs="Artsieq hose",feet="Regal pumps +1"}
-- Cure sets
gear.default.obi_waist = "Pythia sash"
gear.default.obi_weapon = "Queller rod"
gear.default.grip = "Genbu's shield" -- not functioning --
gear.default.obi_back = "Mending Cape"
sets.midcast.CureSolace = {
main=gear.ElementalWeapon,
sub=gear.ElementalGrip,
ammo="Esper stone +1",
head="Gende. caubeen +1",
neck="Incanter's torque",
ear1="Glorious earring",
ear2="Nourish. earring +1",
body="Ebers bliaud +1",
hands="Kaykaus cuffs",
ring1="Kuchekula ring",
ring2="Sirona's ring",
back=gear.ElementalCape,
waist=gear.ElementalObi,
legs="Ebers pant. +1",
feet="Kaykaus boots"}
sets.midcast.Cure = {
main=gear.ElementalWeapon,
sub=gear.ElementalGrip,
ammo="Esper stone +1",
head="Gende. caubeen +1",
neck="Incanter's torque",
ear1="Glorious earring",
ear2="Nourish. earring +1",
body="Ebers bliaud +1",
hands="Kaykaus cuffs",
ring1="Kuchekula ring",
ring2="Sirona's ring",
back=gear.ElementalCape,
waist=gear.ElementalObi,
legs="Ebers pant. +1",
feet="Kaykaus boots"}
sets.midcast.Curaga = {
main=gear.ElementalWeapon,
sub=gear.ElementalGrip,
ammo="Esper stone +1",
head="Gende. caubeen +1",
neck="Incanter's torque",
ear1="Glorious earring",
ear2="Nourish. earring +1",
body="Ebers bliaud +1",
hands="Kaykaus cuffs",
ring1="Kuchekula ring",
ring2="Sirona's ring",
back=gear.ElementalCape,
waist=gear.ElementalObi,
legs="Ebers pant. +1",
feet="Kaykaus boots"}
sets.midcast.CureMelee = {main="Queller rod",
head="Gende. caubeen +1",neck="Nodens gorget",ear1="Glorious earring",ear2="Nourishing earring +1",
body="Ebers bliaud +1",hands="Kaykaus cuffs",ring1="Kuchekula ring",ring2="Sirona's ring",
back="Mending Cape",waist=gear.ElementalObi,legs="Ebers pant. +1",feet="Kaykaus boots"}
sets.midcast.Cursna = {main="Beneficus",ammo="Homiliary",
head="Ebers cap +1",neck="Debilis Medallion",
body="Ebers bliaud +1",hands="fanatic gloves",ring1="Haoma's Ring",ring2="Haoma's Ring",
back="Mending Cape",legs="Theo. pant. +1",feet="Gende. galosh. +1"}
sets.midcast.StatusRemoval = {
head="Ebers cap +1",legs="Ebers Pant. +1"}
-- 110 total Enhancing Magic Skill; caps even without Light Arts
sets.midcast['Enhancing Magic'] = { main="Beneficus",ammo="Homiliary",
head="Telchine cap",neck="Incanter's torque",
body="Telchine chas.",
legs="Telchine braconi",feet="Telchine pigaches",back="Mending Cape"}
sets.midcast.Stoneskin = {head="Befouled crown",neck="Nodens gorget",body="Telchine chas.",legs="piety pantaln. +1",feet="Ebers duckbills"}
sets.midcast.Aquaveil = {main="Beneficus",head="Befouled crown",body="Anhur robe",back="Mending Cape",legs="piety pantaln. +1",feet="Ebers duckbills"}
sets.midcast.Auspice = {main="Beneficus",head="Befouled crown",body="Anhur robe",back="Mending Cape",legs="piety pantaln. +1",feet="Ebers duckbills"}
sets.midcast.Aurorastorm = {main="Beneficus",head="Befouled crown",body="Anhur robe",back="Mending Cape",legs="piety pantaln. +1",feet="Ebers duckbills"}
sets.midcast.BarElement = {
main="Beneficus",
sub="Genbu's Shield",
ammo="Homiliary",
head="Ebers cap +1",
neck="Incanter's torque",
body="ebers bliaud +1",
hands="ebers mitts +1",
back="Mending Cape",
legs="Piety pantaln. +1",
feet="Kaykaus boots"}
sets.midcast.Regen = set_combine(sets.midcast['Enhancing Magic'], {main="Bolelabunga",
body="Piety briault +1",hands="Ebers mitts +1",legs="Theo. pant. +1"})
sets.midcast.Protectra = set_combine(sets.midcast['Enhancing Magic'], {})
sets.midcast.Shellra = set_combine(sets.midcast['Enhancing Magic'], {"Piety pantaln. +1"})
sets.midcast['Divine Magic'] = {}
sets.midcast['Repose'] = {}
sets.midcast['Elemental Magic'] = {main="Serenity",sub="Niobid strap",ammo="Ghastly tathlum",
head="Helios band",neck="Mizu. Kubikazari",ear1="Friomisi earring",ear2="Static earring",
body="Witching robe",hands="Fanatic gloves",ring1="Locus ring",ring2="Mujin band",
back="Seshaw cape",waist="Hachirin-no-obi",legs="Gyve trousers",feet="Helios boots"}
sets.midcast['Dark Magic'] = {}
-- Custom spell classes
sets.midcast.MndEnfeebles = {}
sets.midcast.IntEnfeebles = {}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {
main="Queller rod",
sub="Genbu's shield",
ammo="Homiliary",
head="Befouled crown",
neck="Loricate torque +1",
ear1="Moonshade Earring",
ear2="Nourishing earring +1",
body="Ebers bliaud +1", --temp--
hands="Serpentes Cuffs",
ring1="Gelatinous ring +1",
ring2="Defending Ring",
back="Umbra cape",
waist="Fucho-no-Obi",
legs="Assid. 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 = {
main="Queller rod",
sub="Genbu's shield",
ammo="Homiliary",
head="Befouled crown",
neck="Loricate torque +1",
ear1="Glorious Earring",
ear2="Moonshade Earring",
body="Witching robe",
hands="Gende. gages +1",
ring2="Defending ring",
ring1="Gelatinous ring +1",
back="Umbra cape",
waist="Fucho-no-Obi",
legs="Assid. Pants +1",
feet="Gende. galosh. +1"}
sets.idle.PDT = { --50 PDT, 8 Refresh--
main="Queller rod",
sub="Genbu's shield",
ammo="Homiliary",
head="Gende. caubeen +1",neck="Loricate torque +1",ear1="Glorious Earring",ear2="Moonshade Earring",
body="Witching robe",hands="Gende. gages +1",ring2="Defending ring",ring1="Gelatinous ring +1",
back="Umbra cape",waist="Fucho-no-Obi",legs="Assid. Pants +1",feet="Gende. galosh. +1"}
sets.idle.Town = {
main="Queller rod",
sub="Genbu's shield",
ammo="Homiliary",
head="Befouled crown",
neck="Loricate torque +1",
ear1="Glorious Earring",
ear2="Moonshade Earring",
body="Councilor's garb",
hands="Serpentes Cuffs",
ring2="Defending ring",
ring1="Gelatinous ring +1",
back="Umbra cape",
waist="Fucho-no-Obi",
legs="Assid. Pants +1",
feet="Herald's Gaiters"}
sets.idle.Weak = {
main="Queller rod",
sub="Genbu's shield",
ammo="Homiliary",
head="Befouled crown",
neck="Loricate torque +1",
ear1="Glorious Earring",
ear2="Moonshade Earring",
body="Ebers bliaud +1", --temp--
hands="Serpentes Cuffs",
ring2="Defending ring",
ring1="Gelatinous ring +1",
back="Umbra cape",
waist="Fucho-no-Obi",
legs="Assid. Pants +1",
feet="Serpentes Sabots"}
-- Defense sets
sets.defense.PDT = {
main="Queller rod",
sub="Genbu's shield",
ammo="Homiliary",
head="Befouled crown",
neck="Loricate torque +1",
ear1="Moonshade Earring",
ear2="Nourishing earring +1",
body="Witching robe",
hands="Serpentes Cuffs",
ring2="Defending ring",
ring1="Haoma's Ring",
back="Umbra cape",
waist="Fucho-no-Obi",
legs="Assid. Pants +1",
feet="Serpentes Sabots"}
sets.defense.MDT = {
main="Queller rod",
sub="Genbu's shield",
ammo="Homiliary",
head="Befouled crown",
neck="Loricate torque +1",
ear1="Moonshade Earring",
ear2="Nourishing earring +1",
body="Ebers bliaud +1", --temp--
hands="Serpentes Cuffs",
ring2="Defending ring",
ring1="Haoma's Ring",
back="Umbra cape",
waist="Fucho-no-Obi",
legs="Assid. Pants +1",
feet="Serpentes Sabots"}
sets.Kiting = {feet="Herald's Gaiters"}
sets.latent_refresh = {waist="Fucho-no-obi"}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Basic set for if no TP weapon is defined.
sets.engaged = {
main="Queller rod",
sub="Genbu's shield",
ammo="Homiliary",
head="Befouled crown",
neck="Loricate torque +1",
ear1="Glorious Earring",
ear2="Moonshade Earring",
body="Ebers bliaud +1", --temp--
hands="Gende. gages +1",
ring2="Defending ring",
ring1="Gelatinous ring +1",
back="Umbra cape",
waist="Fucho-no-Obi",
legs="Assid. Pants +1",
feet="Gende. galosh. +1"}
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Divine Caress'] = {hands="Ebers mitts +1",back="Mending Cape"}
-- Miscellaneous --
sets.warpring = {ring2="Warp ring"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks that are called to process player actions at specific points in time.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
function job_precast(spell, action, spellMap, eventArgs)
local map = spell_maps[spell.en]
if map == 'Cure' and player.sub_job == "SCH" and not buffactive.Aurorastorm then
add_to_chat(123,'Aurorastorm not active.')
windower.play_sound('C:\\Users\\Shirley\\Documents \\Windower4\\addons\\GearSwap\\data\\wav\\Chime.wa v')
end
if map == 'Curaga' and player.sub_job == "SCH" and not buffactive.Aurorastorm then
add_to_chat(123,'Aurorastorm not active.')
windower.play_sound('C:\\Users\\Shirley\\Documents \\Windower4\\addons\\GearSwap\\data\\wav\\Chime.wa v')
end
if spell.skill == 'Healing Magic' then
gear.default.obi_back = "Mending Cape"
gear.default.obi_waist = "Pythia sash"
else
gear.default.obi_waist = "Eschan stone"
gear.default.obi_back = "Toro Cape"
end
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = true
end
end
function job_post_midcast(spell, action, spellMap, eventArgs)
-- Apply Divine Caress boosting items as highest priority over other gear, if applicable.
if spellMap == 'StatusRemoval' and buffactive['Divine Caress'] then
equip(sets.buff['Divine Caress'])
end
end
-- Return true if we handled the aftercast work. Otherwise it will fall back
-- to the general aftercast() code in Mote-Include.
function job_aftercast(spell, action, spellMap, eventArgs)
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
end
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
if spell.action_type == 'Magic' then
if (default_spell_map == 'Cure' or default_spell_map == 'Curaga') and player.status == 'Engaged' then
return "CureMelee"
elseif default_spell_map == 'Cure' and state.Buff['Afflatus Solace'] then
return "CureSolace"
elseif spell.skill == "Enfeebling Magic" then
if spell.type == "WhiteMagic" then
return "MndEnfeebles"
else
return "IntEnfeebles"
end
end
end
end
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
return idleSet
end
-------------------------------------------------------------------------------------------------------------------
-- General hooks for other events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
if state.Buff[buff] ~= nil then
state.Buff[buff] = gain
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command.
function job_update(cmdParams, eventArgs)
if cmdParams[1] == 'user' then
local needsArts =
player.sub_job:lower() == 'sch' and
not buffactive['Light Arts'] and
not buffactive['Addendum: White'] and
not buffactive['Dark Arts'] and
not buffactive['Addendum: Black']
if not buffactive['Afflatus Solace'] and not buffactive['Afflatus Misery'] then
if needsArts then
send_command('@input /ja "Afflatus Solace" <me>;wait 1.2;input /ja "Light Arts" <me>')
else
send_command('@input /ja "Afflatus Solace" <me>')
end
end
end
end
-- 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
-- Handle notifications of general user state change.
function job_state_change(stateField, newValue, oldValue)
if stateField == 'OffenseMode' then
if newValue == 'Normal' then
disable('main','sub')
else
enable('main','sub')
end
elseif stateField == 'Reset' then
if state.OffenseMode == 'None' then
enable('main','sub')
end
end
end
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 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
-- Gets the current number of available strategems based on the recast remaining
-- and the level of the sch.
function get_current_strategem_count()
-- returns recast in seconds.
local allRecasts = windower.ffxi.get_ability_recasts()
local stratsRecast = allRecasts[231]
local maxStrategems = 2
local fullRechargeTime = 2*110
local currentCharges = math.floor(maxStrategems - maxStrategems * stratsRecast / fullRechargeTime)
return currentCharges
end
-- Function to display the current relevant user state when doing an update.
-- Return true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
local defenseString = ''
if state.Defense.Active then
local defMode = state.Defense.PhysicalMode
if state.Defense.Type == 'Magical' then
defMode = state.Defense.MagicalMode
end
defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
end
local meleeString = ''
if state.OffenseMode == 'Normal' then
meleeString = 'Melee: Weapons locked, '
end
add_to_chat(122,'Casting ['..state.CastingMode..'], '..meleeString..'Idle ['..state.IdleMode..'], '..defenseString..
'Kiting: '..on_off_names[state.Kiting])
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------