Code:
-------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('None', 'Normal')
state.CastingMode:options('Normal', 'Resistant', 'Proc')
state.IdleMode:options('Normal', 'PDT')
lowTierNukes = S{'Stone', 'Water', 'Aero', 'Fire', 'Blizzard', 'Thunder',
'Stone II', 'Water II', 'Aero II', 'Fire II', 'Blizzard II', 'Thunder II',
'Stone III', 'Water III', 'Aero III', 'Fire III', 'Blizzard III', 'Thunder III',
'Stonega', 'Waterga', 'Aeroga', 'Firaga', 'Blizzaga', 'Thundaga',
'Stonega II', 'Waterga II', 'Aeroga II', 'Firaga II', 'Blizzaga II', 'Thundaga II'}
gear.macc_hagondes = {name="Hagondes Cuffs", augments={'Phys. dmg. taken -3%','Mag. Acc.+29'}}
-- Additional local binds
send_command('bind ^` input /ma Stun <t>')
send_command('bind @` gs c activate MagicBurst')
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function user_unload()
send_command('unbind ^`')
send_command('unbind @`')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
---- PRECAST ----
---- Precast sets to enhance JAs ----
sets.precast.JA['Mana Wall'] = {feet="Goetia Sabots +1"}
sets.precast.JA.Manafont = {}
---- equip to maximize HP (for Tarus) and minimize MP loss before using convert ----
sets.precast.JA.Convert = {}
---- Fast cast sets for spells ----
sets.precast.FC = {neck="Jeweled Collar",
head="Wayfarer Circlet",ear2="Loquacious Earring",legs="Wayfarer Slops",body="Wicce Coat",waist="Swift Belt",feet="Rostrum Pumps"}
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"})
sets.precast.FC.Cure = set_combine(sets.precast.FC, {body="Heka's Kalasiris", back="Pahtli Cape"})
sets.precast.FC.Curaga = sets.precast.FC.Cure
sets.precast.Stoneskin = {hands="Carpacho Cuffs"}
---- MIDCAST ----
---- HEALING MAGIC ----
sets.midcast.Cure = {main="Eminent Staff",
head="Wayfarer Circlet",neck="Morgana's Choker",ear2="Loquacious Earring", ear1="Geist Earring",
body="Wicce Coat",hands="Wayfarer Cuffs",ring1="Tamas Ring",ring2="Solemn Ring",
back="Kaikias' Cape",waist="Witch Sash",legs="Wayfarer Slops",feet="Wayfarer Clogs"}
sets.midcast.Curaga = sets.midcast.Cure
---- ENHANCING MAGIC ----
sets.midcast['Enhancing Magic'] = {ear1="Geist Earring", back="Kaikias' Cape",
waist="Siegel Sash", neck="Enhancing Torque", feet="Igqira Huaraches",
body="Wicce Coat",hands="Wayfarer Cuffs", ring1="Tamas Ring", ring2="Solemn Ring",
legs="Wayfarer Slops", ear2="Geist Earring", head="Wayfarer Circlet"}
---- STONESKIN ----
sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash", main="Eminent Staff",
neck="Morgana's Choker", feet="Wayfarer Clogs", legs="Haven Hoes", hands="Carapacho Cuffs"})
---- ENFEEBLING MAGIC ----
sets.midcast['Enfeebling Magic'] = {main="Eminent Staff", sub="Buggard Strap +1", ammo="Sturm's Report",
head="Wayfarer Circlet",neck="Morgana's Choker",ear1="Geist Earring",ear2="Geist Earring",
body="Wicce Coat",hands="Wayfarer Cuffs",ring1="Solemn Ring",ring2="Tamas Ring",
back="Kaikias' Cape",legs="Wayfarer Slops",feet="Wayfarer Clogs", waist="Witch Sash"}
sets.midcast['Enfeebling Magic'].Resistant = set_combine(sets.midcast['Enfeebling Magic'], {head="Wayfarer Circlet",neck="Enfeebling Torque",
body="Wicce Coat",ring1="Omega Ring",ring2="Tamas Ring",feet="Wayfarer Clogs"})
sets.midcast.ElementalEnfeeble = sets.midcast['Enfeebling Magic']
---- ENFEEBLING MAGIC BLACK ----
sets.midcast['Dark Magic'] = {main="Eminent Staff",sub="Bugard Strap +1",ammo="Phantom Tathlum",
head="Wayfarer Circlet",neck="Stoicheion Medal",ear1="Hecate's Earring",ear2="Phantom Earring",
body="Wicce Coat",hands="Wayfarer Cuffs",ring1="Tamas Ring",ring2="Icesoul Ring",
back="Kaikias' Cape",waist="Witch Sash",legs="Wizard's Tonban",feet="Goetia Sabots +1"}
---- ELEMENTAL MAGIC ----
sets.midcast['Elemental Magic'] = {main="Eminent Staff",sub="Bugard Strap +1",ammo="Witchstone",
head="Wayfarer Circlet",neck="Stoicheion Medal",ear1="Hecate's Earring",ear2="Friomisi Earring",
body="Wicce Coat",hands="Goetia Gloves +1",ring1="Icesoul Ring",ring2="Acumen Ring",
back="Kaikias' Cape",waist=gear.ElementalObi,legs="Wayfarer Slops",feet="Wayfarer Clogs"}
sets.midcast['Elemental Magic'].Resistant = set_combine(sets.midcast['Elemental Magic'], {ammo="Witchstone",
head="Goetia Petasos +1",hands="Wayfarer Cuffs",ring2="Omega Ring",waist="Witch Sash",})
---- RESTING ----
sets.resting = {main="Chatoyant Staff",sub="Ariesian Grip",
neck="Beak Necklace +1",body="Errant Hpl.",waist="Hierarch Belt",feet="Avocat Pigaches"}
---- IDLE ----
sets.idle = {main="Terra's Staff", sub="Bugard Strap +1",ammo="Hedgehog Bomb",
head="Goetia Petasos +1",neck="Morgana's Choker",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Wicce Coat",hands="Goetia Gloves +1",ring1="Bifrost Ring",ring2="Tamas Ring",
back="Kakias' Cape",waist="Witch Sash",legs="Goetia Chausses +2",feet="Goetia Sabots +1"}
---- Functionality for Bard Sub ----
--sets.midcast.BardSong = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Sturm's Report",
-- head="Nahtirah Hat",neck="Weike Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
-- body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Sangoma Ring",
-- back="Refraction Cape",legs="Bokwus Slops",feet="Bokwus Boots"}
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Mana Wall'] = {feet="Goetia Sabots +2"}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Normal melee group
sets.engaged = {
head="Zelus Tiara",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Hagondes Coat",hands="Bokwus Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Umbra Cape",waist="Goading Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
function job_precast(spell, action, spellMap, eventArgs)
if spell.action_type == 'Magic' then
if spell.skill == 'Elemental Magic' then
gear.default.obi_waist = "Witch Sash"
gear.default.obi_back = "NonBonusNukingBack"
elseif spellMap == 'Cure' or spellMap == 'Curaga' then
gear.default.obi_waist = "Witch Sash"
gear.default.obi_back = "NonBonusCuringBack"
end
end
end
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_midcast(spell, action, spellMap, eventArgs)
end
function job_aftercast(spell, action, spellMap, eventArgs)
-- Lock feet after using Mana Wall.
if not spell.interrupted then
if spell.english == 'Mana Wall' then
enable('feet')
equip(sets.buff['Mana Wall'])
disable('feet')
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
-- Unlock feet when Mana Wall buff is lost.
if buff == "Mana Wall" and not gain then
enable('feet')
handle_equipping_gear(player.status)
end
end
-- Handle notifications of general user state change.
function job_state_change(stateField, newValue, oldValue)
if stateField == 'Offense Mode' then
if newValue == 'Normal' then
disable('main','sub','range')
else
enable('main','sub','range')
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
if spell.skill == 'Elemental Magic' and default_spell_map ~= 'ElementalEnfeeble' then
--[[ No real need to differentiate with current gear.
if lowTierNukes:contains(spell.english) then
return 'LowTierNuke'
else
return 'HighTierNuke'
end
--]]
end
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
return idleSet
end
-- Function to display the current relevant user state when doing an update.
function display_current_job_state(eventArgs)
display_current_caster_state()
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
set_macro_page(1, 2)
end
I took the information on how to add obi support to this file from this thread;