Back After 5yrs. Anyone Have Gearswap Templates? |
||
|
Rewards
Community
Other Sites
|
Back after 5yrs. Anyone have gearswap templates?
Hello fellow vanadiel adventurers!! currently was pulled back into the world of Vanadiel by my son after a 5yr retirement. He grew up watching me play the wonderful game that is FFXI. Now, he wanted ol' pops to play with him for the first time. I created a new account to run through the game with him however, I literally forgot about gearswap. So, I ask my fellow community if you could bestow upon me a good gearswap template for THF and for PLD. Thank you!!!!
I'm not sure how fancy you're looking for, or how advanced you are with Gearswap. These are up to date, have a decent amount of functionality, and (in my opinion) are more basic or beginner friendly type luas of mine.
Pld: Code -- 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 variables that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
state.CP = M(false, "Capacity Points Mode")
state.Warp = M(false, "Warp Mode")
state.MP = M(false, "Mana Mode")
state.Weapon = M(false, "Weapon Lock")
state.Neck = M(false, "Neck Mode")
lockstyleset = 14
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job.
-------------------------------------------------------------------------------------------------------------------
-- Gear Modes
function user_setup()
state.OffenseMode:options('Normal', 'LowAcc', 'MidAcc', 'HighAcc')
state.HybridMode:options('Normal', 'HIGH', 'MID', 'LOW')
state.WeaponskillMode:options('Normal', 'Acc')
state.CastingMode:options('Normal', 'SIRD', 'HPBAL')
-- Allows the use of Ctrl + ~ and Alt + ~ for 2 more macros of your choice.
send_command('bind ^` input /ja "Cover" <stal>') --Ctrl'~'
send_command('bind !` input /ja "Divine Emblem" <me>') --Alt'~'
send_command('bind f9 gs c cycle OffenseMode') --F9
send_command('bind ^f9 gs c cycle WeaponSkillMode') --Ctrl'F9'
send_command('bind f10 gs c cycle HybridMode') --F10
send_command('bind f11 gs c cycle CastingMode') --F11
send_command('bind @c gs c toggle CP') --WindowKey'C'
send_command('bind @r gs c toggle Warp') --Windowkey'R'
send_command('bind @m gs c toggle MP') --Windowkey'M'
send_command('bind @w gs c toggle Weapon') --Windowkey'W'
send_command('bind @t gs c toggle Twilight') --Windowkey'T'
send_command('bind @n gs c toggle Neck') --Windowkey'N'
send_command('bind @i input /ja "Invincible" <me>') --Windowkey'I'
send_command('lua l gearinfo')
select_default_macro_book()
set_lockstyle()
Haste = 0
DW_needed = 0
DW = false
moving = false
update_combat_form()
determine_haste_group()
end
-- Erases the Key Binds above when you switch to another job.
function user_unload()
send_command('unbind ^`')
send_command('unbind !`')
send_command('unbind !-')
send_command('unbind ^=')
send_command('unbind f11')
send_command('unbind @c')
send_command('unbind @r')
send_command('unbind @m')
send_command('unbind @w')
send_command('unbind @t')
send_command('unbind @n')
send_command('gs enable all')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
------------------------------------------------------------------------------------------------
---------------------------------------- Precast Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.Enmity = {
Main="Firangi", --8
Ammo="Sapience Orb", --2
Head="Loess Barbuta +1", --9~14
Neck="Moonlight Necklace", --15
Ear2="Friomisi Earring", --2
Ear1="Cryptic Earring", --4
Body="Souveran Cuirass +1", --20
Hands="Yorium Gauntlets", --12
Ring1="Apeile Ring", --5~9
Ring2="Apeile Ring +1", --5~9
back={ name="Rudianos's Mantle", augments={'Enmity+10','Spell interruption rate down-10%',}}, --10
Waist="Creed Baudrier", --5
Legs="Souveran Diechlings +1", --9
Feet="Eschite Greaves", --15
} --121~134
sets.precast.JA['Invincible'] = set_combine(sets.Enmity, {})
sets.precast.JA['Shield Bash'] = set_combine(sets.Enmity, {})
sets.precast.JA['Holy Circle'] = set_combine(sets.Enmity, {})
sets.precast.JA['Sentinel'] = set_combine(sets.Enmity, {})
sets.precast.JA['Cover'] = set_combine(sets.Enmity, {})
sets.precast.JA['Rampart'] = set_combine(sets.Enmity, {})
sets.precast.JA['Fealty'] = set_combine(sets.Enmity, {})
sets.precast.JA['Chivalry'] = set_combine(sets.Enmity, {})
sets.precast.JA['Divine Emblem'] = set_combine(sets.Enmity, {})
sets.precast.JA['Sepulcher'] = set_combine(sets.Enmity, {})
sets.precast.JA['Palisade'] = set_combine(sets.Enmity, {})
sets.precast.JA['Intervene'] = set_combine(sets.Enmity, {})
sets.precast.FC = {
Main="Malignance Sword", --8
Ammo="Impatiens", --2QM
Head="Carmine Mask +1", --14
Neck="Orunmila's Torque", --5
Ear1="Loquacious Earring", --2
Ear2="Etiolation Earring", --1
Body="Reverence Surcoat +2", --5 -- +3=10
Hands="Leyline Gloves", --8
Ring1="Veneficium Ring", --1QM
Legs="Arjuna Breeches", --4
Feet="Odyssean Greaves", --5 + AUG
Waist="Creed Baudrier", --40HP
Back="", --10FC Rudios??
Ring2="Eihwaz Ring", --70HP
} --58FC 3QM
sets.precast.Cure = set_combine(sets.precast.FC, {
Body="Jumalik Mail", --10
Neck="Diemer Gorget", --4
Ear2="Mendicant's Earring", --5
})
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {})
------------------------------------------------------------------------------------------------
-------------------------------------- Sub Job Specific ----------------------------------------
------------------------------------------------------------------------------------------------
--- Warrior
sets.precast.JA['Provoke'] = sets.Enmity
--- Dancer
sets.precast.Waltz = {}
sets.precast.WaltzSelf = set_combine(sets.precast.Waltz, {ring1="Asklepian Ring"})
--- Rune Fencer
------------------------------------------------------------------------------------------------
------------------------------------- Weapon Skill Sets ----------------------------------------
------------------------------------------------------------------------------------------------
sets.precast.WS = {
ammo="Aurgelmir Orb +1",
head="Hjarrandi Helm",
body="Hjarrandi Breastplate",
hands="Sulev. Gauntlets +2",
legs="Sulev. Cuisses +2",
feet="Sulevia's Leggings +2",
neck="Fotia Gorget",
waist="Fotia Belt",
ear1="Moonshade Earring",
ear2="Thrud Earring",
Ring1="Epaminondas's Ring",
Ring2="Flamma Ring",
back={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +5%',}},
}
sets.precast.WS['Atonement'] = {}
sets.precast.WS['Requiescat'] = {}
sets.precast.WS['Chant du Cygne'] = {}
sets.precast.WS['Sanguine Blade'] = {}
sets.precast.WS['Savage Blade'] = {
ammo="Aurgelmir Orb +1",
head="Hjarrandi Helm",
body="Hjarrandi Breastplate",
hands="Sulev. Gauntlets +2",
legs="Sulev. Cuisses +2",
feet="Sulevia's Leggings +2",
neck="Fotia Gorget",
waist="Fotia Belt",
ear1="Moonshade Earring",
ear2="Thrud Earring",
Ring1="Epaminondas's Ring",
Ring2="Flamma Ring",
back={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +5%',}},
}
sets.precast.WS['Aeolian Edge'] = {
ammo="Pemphredo Tathlum",
head="",
body={ name="Samnuha Coat", augments={'Mag. Acc.+13','"Mag.Atk.Bns."+14','"Fast Cast"+3','"Dual Wield"+4',}},
hands="Leyline Gloves",
legs="",
feet="",
neck="Sanctity Necklace",
waist="Eschan Stone",
ear1="Friomisi Earring",
ear2="Hecate's Earring",
left_ring="Acumen Ring",
right_ring="Ilabrat Ring",
back={ name="Rudianos's Mantle", augments={'Accuracy+20 Attack+20','Weapon skill damage +5%',}},
}
--------------------------------------- Accuracy Mode ------------------------------------------
sets.precast.WS.Acc = set_combine(sets.precast.WS, {})
sets.precast.WS['Atonement'].Acc = set_combine(sets.precast.WS['Atonement'], {})
sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS['Requiescat'], {})
sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'], {})
sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS['Chant du Cygne'], {})
sets.precast.WS['Sanguine Blade'].Acc = set_combine(sets.precast.WS['Sanguine Blade'], {})
------------------------------------------------------------------------------------------------
---------------------------------------- Midcast Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.midcast.FastRecast = sets.precast.FC
sets.midcast.Utsusemi = sets.Enmity
sets.midcast.Flash = sets.Enmity
sets.midcast['Enhancing Magic'] = sets.Enmity
sets.midcast.Reprisal = sets.Enmity
sets.midcast.Crusade = sets.Enmity
sets.midcast.Enlight = sets.Enmity
sets.midcast['Blue Magic'] = sets.Enmity
sets.midcast.Cure = {
Ammo="Impatiens", --10SIRD
Neck="Phalaina Locket", --4
Legs="Souveran Diechlings +1", --0/23
Head="Souveran Schaller +1", --0/15 20SIRD
Hands="Macabre Gauntlets +1",
Ear1="Nourishing Earring", --6
Ear2="Mendicant's Earring", --5
Body="Jumalik Mail", --15
Feet="Odyssean Greaves", --7 --20SIRD
} --60SIRD, 10Merits, 37/30CurePot
sets.midcast.Phalanx = {
Hands="Souveran Handschuhs +1", --5
Feet="Souveran Schuhs +1", --5
Back="Weard Mantle", --5
} --15
sets.midcast.Protect = {ring1="Sheltered Ring"}
sets.midcast.Shell = {ring1="Sheltered Ring"}
------------------------------------------------------------------------------------------------
----------------------------------------- SIRD Sets --------------------------------------------
------------------------------------------------------------------------------------------------
sets.midcast.SIRD = {--Merits 10SIRD
Ammo="Impatiens", --10SIRD
Head="Souveran Schaller +1", --20SIRD
Neck="Moonlight Necklace", --15SIRD
Waist="Rumination Sash", --10SIRD
Legs="Carmine Cuisses +1", --20SIRD
Feet="Odyssean Greaves", --20SIRD
back={ name="Rudianos's Mantle", augments={'Enmity+10','Spell interruption rate down-10%',}}, --10SIRD
} --115SIRD
sets.precast.FC.SIRD = {--Merits 10SIRD
Ammo="Impatiens", --10SIRD
Head="Souveran Schaller +1", --20SIRD
Neck="Moonlight Necklace", --15SIRD
Waist="Rumination Sash", --10SIRD
Legs="Carmine Cuisses +1", --20SIRD
Feet="Odyssean Greaves", --20SIRD
back={ name="Rudianos's Mantle", augments={'Enmity+10','Spell interruption rate down-10%',}}, --10SIRD
} --115SIRD
sets.midcast.Flash.SIRD = {--Merits 10SIRD
Main="Firangi", --8
Ammo="Impatiens", --10SIRD Neg2Enm
Head="Souveran Schaller +1", --20SIRD Neg9~14Enm
Neck="Moonlight Necklace", --15SIRD
Ear1="Odnowa Earring",
Ear2="Odnowa Earring +1",
Body="Souveran Cuirass +1", --20
Hands="Yorium Gauntlets", --12
Ring1="Apeile Ring", --5~9
Ring2="Apeile Ring +1", --5~9
back={ name="Rudianos's Mantle", augments={'Enmity+10','Spell interruption rate down-10%',}}, --10SIRD
Waist="Creed Baudrier", --5
Legs="Carmine Cuisses +1", --20SIRD Neg9Enm
Feet="Odyssean Greaves", --20SIRD Neg15Enm
Sub="Ajax +1",
} --80~88, 105SIRD
sets.midcast.Cure.SIRD = set_combine(sets.midcast.Cure, sets.midcast.SIRD)
sets.midcast.Phalanx.SIRD = set_combine(sets.midcast.Phalanx, sets.midcast.SIRD)
sets.midcast.Reprisal.SIRD = set_combine(sets.midcast.Reprisal, sets.midcast.SIRD)
sets.midcast.Crusade.SIRD = set_combine(sets.midcast.Crusade, sets.midcast.SIRD)
sets.midcast.Utsusemi.SIRD = set_combine(sets.midcast.Utsusemi, sets.midcast.SIRD)
sets.midcast['Blue Magic'].SIRD = set_combine(sets.midcast['Blue Magic'], sets.midcast.SIRD)
------------------------------------------------------------------------------------------------
---------------------------------------- HPBAL Sets --------------------------------------------
------------------------------------------------------------------------------------------------
sets.precast.FC.HPBAL = { --10SIRD Merits, 10DT Set Bonus
Main="Malignance Sword", --8FC
Ammo="Sapience Orb", --2FC, 0SIRD, 0DT
Head="Carmine Mask +1", --14FC
Neck="Orunmila's Torque", --5FC, 0SIRD, 0DT
Ear1="Odnowa Earring",
Ear2="Odnowa Earring +1",
Body="Reverence Surcoat +2", --5FC, 0SIRD, 10DT
Hands="Leyline Gloves", --8FC
Ring1="Moonlight Ring", --100HP
Ring2="Eihwaz Ring", --70HP
Back="Moonbeam Cape", --0FC, 0SIRD, 5DT --Rudios??
Waist="Creed Baudrier", --40HP
Legs="Souveran Diechlings +1", --0FC, 0SIRD, 4DT
Feet="Souveran Schuhs +1", --0FC, 0SIRD, 5DT
} --42FC, 10SIRD, 38DT
sets.midcast.HPBAL = { --10SIRD Merits --8DT Set Bonus
Ammo="Impatiens", --0FC, 10SIRD, 0DT
Head="Souveran Schaller +1", --0FC, 20SIRD, 0DT
Neck="Moonlight Necklace", --0FC, 15SIRD, 0DT
Ear1="Odnowa Earring",
Ear2="Knightly Earring", --9SIRD, -100HP
Body="Reverence Surcoat +2", --0FC, 0SIRD, 10DT, 8Enm
Hands="Souveran Handschuhs +1", --0FC, 0SIRD, 4DT
Ring1="",
Ring2="",
Back="Moonbeam Cape", --0FC, 0SIRD, 5DT
Waist="Rumination Sash", --0FC, 10SIRD, 0DT, -40HP
Legs="Founder's Hose", --0FC, 30SIRD, 0DT, -108HP
Feet="Souveran Schuhs +1", --0FC, 0SIRD, 5DT
} --0FC, 104SIRD, 32DT, 62~70Enm
sets.midcast.Flash.HPBAL = {
Main="Firangi", --8
Ammo="Sapience Orb", --2
Head="Loess Barbuta +1", --9~14
Neck="Moonlight Necklace", --15
Ear1="Odnowa Earring",
Ear2="Odnowa Earring +1",
Body="Souveran Cuirass +1", --20
Hands="Yorium Gauntlets", --12
Ring1="Apeile Ring", --5~9
Ring2="Apeile Ring +1", --5~9
back={ name="Rudianos's Mantle", augments={'Enmity+10','Spell interruption rate down-10%',}}, --10
Waist="Creed Baudrier", --5
Legs="Souveran Diechlings +1", --9
Feet="Eschite Greaves", --15
Sub="Ajax +1", --11
} --115~128
sets.midcast.Shell.HPBAL = set_combine(sets.midcast, sets.midcast.HPBAL)
sets.midcast.Protect.HPBAL = set_combine(sets.midcast, sets.midcast.HPBAL)
sets.midcast.Cure.HPBAL = set_combine(sets.midcast.Cure, sets.midcast.HPBAL)
sets.midcast.Phalanx.HPBAL = set_combine(sets.midcast.Phalanx, sets.midcast.HPBAL)
sets.midcast.Reprisal.HPBAL = set_combine(sets.midcast.Reprisal, sets.midcast.HPBAL)
sets.midcast.Crusade.HPBAL = set_combine(sets.midcast.Crusade, sets.midcast.HPBAL)
sets.midcast.Utsusemi.HPBAL = set_combine(sets.midcast.Utsusemi, sets.midcast.HPBAL)
sets.midcast['Blue Magic'].HPBAL = set_combine(sets.midcast['Blue Magic'], sets.midcast.HPBAL)
sets.precast.WS.HPBAL = {}
------------------------------------------------------------------------------------------------
----------------------------------------- Idle Sets --------------------------------------------
------------------------------------------------------------------------------------------------
sets.idle = {
Ammo="Homiliary",
Head="Souveran Schaller +1",
Neck="Loricate Torque +1",
ear1="Odnowa Earring",
ear2="Odnowa Earring +1",
Body="Souveran Cuirass +1",
Hands="Souveran Handschuhs +1",
Ring1="Defending Ring",
Ring2="Vocane Ring",
Back="Moonbeam Cape",
Waist="Flume Belt +1",
Legs="Carmine Cuisses +1",
Feet="Souveran Schuhs +1",
}
sets.idle.Town = {
Ammo="Homiliary",
Head="Souveran Schaller +1",
Neck="Loricate Torque +1",
ear1="Odnowa Earring",
ear2="Odnowa Earring +1",
Body="Souveran Cuirass +1",
Hands="Souveran Handschuhs +1",
Ring1="Defending Ring",
Ring2="Vocane Ring",
Back="Moonbeam Cape",
Waist="Flume Belt +1",
Legs="Carmine Cuisses +1",
Feet="Souveran Schuhs +1",
}
------------------------------------------------------------------------------------------------
---------------------------------------- Engaged Sets ------------------------------------------
------------------------------------------------------------------------------------------------
-- This is a Set that would only be used when you are NOT Dual Wielding.
-- There are no haste parameters set for this build, because you wouldn't be juggling DW gear, you would always use the same gear, other than Damage Taken and Accuracy sets which ARE included below.
sets.engaged = {
ammo="Aurgelmir Orb +1",
head="Flamma Zucchetto +2",
body="Hjarrandi Breastplate",
hands="Sulev. Gauntlets +2",
legs={ name="Valor. Hose", augments={'Accuracy+7','"Store TP"+7','AGI+9','Attack+7',}},
feet="Flam. Gambieras +1",
neck="Asperity Necklace",
waist="Sailfi Belt +1",
ear1="Cessance Earring",
ear2="Brutal Earring",
Ring1="Petrov Ring",
Ring2="Hetairoi Ring",
back={ name="Rudianos's Mantle", augments={'Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
}
------------------------------------------------------------------------------------------------
-------------------------------------- Dual Wield Sets -----------------------------------------
------------------------------------------------------------------------------------------------
-- * NIN Sub Native DW Trait: 25% DW
-- * DNC Sub Native DW Trait: 15% DW
-- No Magic Haste (??% DW to cap)
sets.engaged.DW = {
} -- ??% ??Acc
-- 15% Magic Haste (??% DW to cap)
sets.engaged.DW.LowHaste = {
} -- ??% ??Acc
-- 30% Magic Haste (??% DW to cap)
sets.engaged.DW.MidHaste = {
} -- ??% ??Acc
-- 40% Magic Haste (??% DW to cap)
sets.engaged.DW.HighHaste = {
} -- ??% ??Acc
-- 45% Magic Haste (??% DW to cap)
sets.engaged.DW.MaxHaste = {
} -- ??% ??Acc
------------------------------------------------------------------------------------------------
--------------------------------------- Accuracy Sets ------------------------------------------
------------------------------------------------------------------------------------------------
-- Define three tiers of Accuracy. These sets are cycled with the F9 Button to increase accuracy in stages as desired.
sets.engaged.Acc1 = {} --1118
sets.engaged.Acc2 = {} --1151
sets.engaged.Acc3 = {} --1203
-- Base Shield
sets.engaged.LowAcc = set_combine(sets.engaged, sets.engaged.Acc1)
sets.engaged.MidAcc = set_combine(sets.engaged, sets.engaged.Acc2)
sets.engaged.HighAcc = set_combine(sets.engaged, sets.engaged.Acc3)
-- Base DW
sets.engaged.DW.LowAcc = set_combine(sets.engaged.DW, sets.engaged.Acc1)
sets.engaged.DW.MidAcc = set_combine(sets.engaged.DW, sets.engaged.Acc2)
sets.engaged.DW.HighAcc = set_combine(sets.engaged.DW, sets.engaged.Acc3)
-- LowHaste DW
sets.engaged.DW.LowAcc.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.Acc1)
sets.engaged.DW.MidAcc.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.Acc2)
sets.engaged.DW.HighAcc.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.Acc3)
-- MidHaste DW
sets.engaged.DW.LowAcc.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.Acc1)
sets.engaged.DW.MidAcc.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.Acc2)
sets.engaged.DW.HighAcc.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.Acc3)
-- HighHaste DW
sets.engaged.DW.LowAcc.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.Acc1)
sets.engaged.DW.MidAcc.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.Acc2)
sets.engaged.DW.HighAcc.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.Acc3)
-- HighHaste DW
sets.engaged.DW.LowAcc.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.LowAcc)
sets.engaged.DW.MidAcc.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.MidAcc)
sets.engaged.DW.HighAcc.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.HighAcc)
------------------------------------------------------------------------------------------------
---------------------------------------- Hybrid Sets -------------------------------------------
------------------------------------------------------------------------------------------------
-- Define three tiers of Defense Taken. These sets are cycled with the F10 Button.
sets.engaged.DT1 = { -- 48%
ammo="Aurgelmir Orb +1",
head="Sulevia's Mask +1", --5
body="Sulevia's Plate. +1", --8
hands="Sulev. Gauntlets +2", --5
legs="Sulev. Cuisses +2", --7
feet="Flam. Gambieras +1",
neck="Loricate Torque +1", --DD
waist="Tempus Fugit",
ear1="Telos Earring",
ear2="Brutal Earring",
Ring1="Defending Ring", --10
Ring2="Vocane Ring", --DD
back={ name="Rudianos's Mantle", augments={'Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
} --50 with DD ring, neck,
sets.engaged.DT2 = { --4 Set Bonus??
Ammo="Aurgelmir Orb +1",
Head="Hjarrandi Helm", --10
Neck="Asperity Necklace",
ear1="Telos Earring",
ear2="Brutal Earring",
Body="Hjarrandi Breastplate", --12
Hands="Souveran Handschuhs +1", --4
Ring1="Defending Ring", --10
Ring2="Vocane Ring", --7
back={ name="Rudianos's Mantle", augments={'Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
Waist="Windbuffet Belt +1",
Legs="Sulev. Cuisses +2", --7
Feet="Souveran Schuhs +1", --5
} --
sets.engaged.DT3 = { --10 Set Bonus
Ammo="Amar Cluster",
Head="Souveran Schaller +1",
Neck="Decimus Torque",
Ear1="Odnowa Earring",
Ear2="Odnowa Earring +1",
Body="Souveran Cuirass +1", --10DT
Hands="Souveran Handschuhs +1", --4DT
Ring1="Defending Ring", --10DT
Ring2="Vocane Ring", --7DT Moonlight?
back={ name="Rudianos's Mantle", augments={'Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
Waist="Sarissaphoroi Belt",
Legs="Souveran Diechlings +1", --4DT
Feet="Souveran Schuhs +1", --5DT
} --50DT
-- Shield Base
sets.engaged.LOW = set_combine(sets.engaged, sets.engaged.DT1)
sets.engaged.LowAcc.LOW = set_combine(sets.engaged.LowAcc, sets.engaged.DT1)
sets.engaged.MidAcc.LOW = set_combine(sets.engaged.MidAcc, sets.engaged.DT1)
sets.engaged.HighAcc.LOW = set_combine(sets.engaged.HighAcc, sets.engaged.DT1)
sets.engaged.MID = set_combine(sets.engaged, sets.engaged.DT2)
sets.engaged.LowAcc.MID = set_combine(sets.engaged.LowAcc, sets.engaged.DT2)
sets.engaged.MidAcc.MID = set_combine(sets.engaged.MidAcc, sets.engaged.DT2)
sets.engaged.HighAcc.MID = set_combine(sets.engaged.HighAcc, sets.engaged.DT2)
sets.engaged.HIGH = set_combine(sets.engaged, sets.engaged.DT3)
sets.engaged.LowAcc.HIGH = set_combine(sets.engaged.LowAcc, sets.engaged.DT3)
sets.engaged.MidAcc.HIGH = set_combine(sets.engaged.MidAcc, sets.engaged.DT3)
sets.engaged.HighAcc.HIGH = set_combine(sets.engaged.HighAcc, sets.engaged.DT3)
-- No Haste DW
sets.engaged.DW.LOW = set_combine(sets.engaged.DW, sets.engaged.DT1)
sets.engaged.DW.LowAcc.LOW = set_combine(sets.engaged.DW.LowAcc, sets.engaged.DT1)
sets.engaged.DW.MidAcc.LOW = set_combine(sets.engaged.DW.MidAcc, sets.engaged.DT1)
sets.engaged.DW.HighAcc.LOW = set_combine(sets.engaged.DW.HighAcc, sets.engaged.DT1)
sets.engaged.DW.MID = set_combine(sets.engaged.DW, sets.engaged.DT2)
sets.engaged.DW.LowAcc.MID = set_combine(sets.engaged.DW.LowAcc, sets.engaged.DT2)
sets.engaged.DW.MidAcc.MID = set_combine(sets.engaged.DW.MidAcc, sets.engaged.DT2)
sets.engaged.DW.HighAcc.MID = set_combine(sets.engaged.DW.HighAcc, sets.engaged.DT2)
sets.engaged.DW.HIGH = set_combine(sets.engaged.DW, sets.engaged.DT3)
sets.engaged.DW.LowAcc.HIGH = set_combine(sets.engaged.DW.LowAcc, sets.engaged.DT3)
sets.engaged.DW.MidAcc.HIGH = set_combine(sets.engaged.DW.MidAcc, sets.engaged.DT3)
sets.engaged.DW.HighAcc.HIGH = set_combine(sets.engaged.DW.HighAcc, sets.engaged.DT3)
-- Low Haste DW
sets.engaged.DW.LOW.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT1)
sets.engaged.DW.LowAcc.LOW.LowHaste = set_combine(sets.engaged.DW.LowAcc.LowHaste, sets.engaged.DT1)
sets.engaged.DW.MidAcc.LOW.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.DT1)
sets.engaged.DW.HighAcc.LOW.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.DT1)
sets.engaged.DW.MID.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT2)
sets.engaged.DW.LowAcc.MID.LowHaste = set_combine(sets.engaged.DW.LowAcc.LowHaste, sets.engaged.DT2)
sets.engaged.DW.MidAcc.MID.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.DT2)
sets.engaged.DW.HighAcc.MID.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT3)
sets.engaged.DW.LowAcc.HIGH.LowHaste = set_combine(sets.engaged.DW.LowAcc.LowHaste, sets.engaged.DT3)
sets.engaged.DW.MidAcc.HIGH.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.DT3)
sets.engaged.DW.HighAcc.HIGH.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.DT3)
-- Mid Haste
sets.engaged.DW.LOW.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT1)
sets.engaged.DW.LowAcc.LOW.MidHaste = set_combine(sets.engaged.DW.LowAcc.MidHaste, sets.engaged.DT1)
sets.engaged.DW.MidAcc.LOW.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.DT1)
sets.engaged.DW.HighAcc.LOW.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.DT1)
sets.engaged.DW.MID.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT2)
sets.engaged.DW.LowAcc.MID.MidHaste = set_combine(sets.engaged.DW.LowAcc.MidHaste, sets.engaged.DT2)
sets.engaged.DW.MidAcc.MID.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.DT2)
sets.engaged.DW.HighAcc.MID.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT3)
sets.engaged.DW.LowAcc.HIGH.MidHaste = set_combine(sets.engaged.DW.LowAcc.MidHaste, sets.engaged.DT3)
sets.engaged.DW.MidAcc.HIGH.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.DT3)
sets.engaged.DW.HighAcc.HIGH.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.DT3)
-- High Haste
sets.engaged.DW.LOW.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT1)
sets.engaged.DW.LowAcc.LOW.HighHaste = set_combine(sets.engaged.DW.LowAcc.HighHaste, sets.engaged.DT1)
sets.engaged.DW.MidAcc.LOW.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.DT1)
sets.engaged.DW.HighAcc.LOW.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.DT1)
sets.engaged.DW.MID.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT2)
sets.engaged.DW.LowAcc.MID.HighHaste = set_combine(sets.engaged.DW.LowAcc.HighHaste, sets.engaged.DT2)
sets.engaged.DW.MidAcc.MID.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.DT2)
sets.engaged.DW.HighAcc.MID.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT3)
sets.engaged.DW.LowAcc.HIGH.HighHaste = set_combine(sets.engaged.DW.LowAcc.HighHaste, sets.engaged.DT3)
sets.engaged.DW.MidAcc.HIGH.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.DT3)
sets.engaged.DW.HighAcc.HIGH.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.DT3)
-- Max Haste
sets.engaged.DW.LOW.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT1)
sets.engaged.DW.LowAcc.LOW.MaxHaste = set_combine(sets.engaged.DW.LowAcc.MaxHaste, sets.engaged.DT1)
sets.engaged.DW.MidAcc.LOW.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.DT1)
sets.engaged.DW.HighAcc.LOW.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.DT1)
sets.engaged.DW.MID.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT2)
sets.engaged.DW.LowAcc.MID.MaxHaste = set_combine(sets.engaged.DW.LowAcc.MaxHaste, sets.engaged.DT2)
sets.engaged.DW.MidAcc.MID.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.DT2)
sets.engaged.DW.HighAcc.MID.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT3)
sets.engaged.DW.LowAcc.HIGH.MaxHaste = set_combine(sets.engaged.DW.LowAcc.MaxHaste, sets.engaged.DT3)
sets.engaged.DW.MidAcc.HIGH.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.DT3)
sets.engaged.DW.HighAcc.HIGH.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.DT3)
------------------------------------------------------------------------------------------------
---------------------------------------- Special Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.buff.Doom = {}
sets.Warp = {ring1="Dim. Ring (Holla)",ring2="Warp Ring"}
sets.CP = {back="Mecisto. Mantle"}
sets.MP = {back="Rudianos's Mantle",Ear1="Ethereal Earring",Waist="Flume Belt +1",Ammo="Homiliary",}
sets.Weapon = {}
sets.Neck = {Neck=""} --Locks Dynamis Neck for Rank Point Farming
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
function job_precast(spell, action, spellMap, eventArgs)
if spellMap == 'Utsusemi' then
if buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)'] then
cancel_spell()
add_to_chat(123, '**!! '..spell.english..' Canceled: [3+ IMAGES] !!**')
eventArgs.handled = true
return
elseif buffactive['Copy Image'] or buffactive['Copy Image (2)'] then
send_command('cancel 66; cancel 444; cancel Copy Image; cancel Copy Image (2)')
end
end
-- Used to overwrite Moonshade Earring if TP is more than 2750.
if spell.type == 'WeaponSkill' then
if player.tp > 2750 then
equip({ear2 = "Telos Earring"})
end
end
end
function job_post_precast(spell, action, spellMap, eventArgs)
if spell.type=='Waltz' and spell.target.type == 'SELF' then
equip(sets.precast.WaltzSelf)
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
function job_buff_change(buff,gain)
if buff == "doom" then
if gain then
equip(sets.buff.Doom)
send_command('@input /echo Doomed.')
disable()
else
enable()
handle_equipping_gear(player.status)
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
function job_handle_equipping_gear(playerStatus, eventArgs)
update_combat_form()
determine_haste_group()
end
function job_update(cmdParams, eventArgs)
handle_equipping_gear(player.status)
end
function update_combat_form()
if DW == true then
state.CombatForm:set('DW')
elseif DW == false then
state.CombatForm:reset()
end
end
function customize_idle_set(idleSet)
if state.CP.current == 'on' then
equip(sets.CP)
disable('back')
else
enable('back')
end
if state.Warp.current == 'on' then
equip(sets.Warp)
disable('ring1')
disable('ring2')
else
enable('ring1')
enable('ring2')
end
if state.MP.current == 'on' then
equip(sets.MP)
disable('Waist')
disable('Ear1')
disable('back')
else
enable('Waist')
enable('Ear1')
enable('back')
end
if state.Weapon.current == 'on' then
disable('Main')
disable('Sub')
else
enable('Main')
enable('Sub')
end
if state.Neck.current == 'on' then
equip(sets.Neck)
disable('Neck')
else
enable('Neck')
end
return idleSet
end
function customize_melee_set(meleeSet)
if state.CP.current == 'on' then
equip(sets.CP)
disable('back')
else
enable('back')
end
if state.Warp.current == 'on' then
equip(sets.Warp)
disable('ring1')
disable('ring2')
else
enable('ring1')
enable('ring2')
end
if state.MP.current == 'on' then
equip(sets.MP)
disable('Waist')
disable('Ear1')
disable('back')
else
enable('Waist')
enable('Ear1')
enable('back')
end
if state.Weapon.current == 'on' then
disable('Main')
else
enable('Main')
end
if state.Neck.current == 'on' then
equip(sets.Neck)
disable('Neck')
else
enable('Neck')
end
return meleeSet
end
-- Function to display the current relevant user state when doing an update.
-- Set eventArgs.handled to true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
local msg = '[ Melee'
if state.CombatForm.has_value then
msg = msg .. ' (' .. state.CombatForm.value .. ')'
end
msg = msg .. ': '
msg = msg .. state.OffenseMode.value
if state.HybridMode.value ~= 'Normal' then
msg = msg .. '/' .. state.HybridMode.value
end
msg = msg .. ' ][ WS: ' .. state.WeaponskillMode.value .. ' ]'
if state.DefenseMode.value ~= 'None' then
msg = msg .. '[ Defense: ' .. state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ' ]'
end
if state.Kiting.value then
msg = msg .. '[ Kiting Mode: ON ]'
end
msg = msg .. ' ]'
add_to_chat(060, msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- User self-commands.
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function determine_haste_group()
classes.CustomMeleeGroups:clear()
if DW == true then
if DW_needed <= 1 then
classes.CustomMeleeGroups:append('MaxHaste')
elseif DW_needed > 1 and DW_needed <= 12 then
classes.CustomMeleeGroups:append('HighHaste')
elseif DW_needed > 12 and DW_needed <= 21 then
classes.CustomMeleeGroups:append('MidHaste')
elseif DW_needed > 21 and DW_needed <= 39 then
classes.CustomMeleeGroups:append('LowHaste')
elseif DW_needed > 39 then
classes.CustomMeleeGroups:append('')
end
end
end
function job_self_command(cmdParams, eventArgs)
gearinfo(cmdParams, eventArgs)
end
function gearinfo(cmdParams, eventArgs)
if cmdParams[1] == 'gearinfo' then
if type(tonumber(cmdParams[2])) == 'number' then
if tonumber(cmdParams[2]) ~= DW_needed then
DW_needed = tonumber(cmdParams[2])
DW = true
end
elseif type(cmdParams[2]) == 'string' then
if cmdParams[2] == 'false' then
DW_needed = 0
DW = false
end
end
if type(tonumber(cmdParams[3])) == 'number' then
if tonumber(cmdParams[3]) ~= Haste then
Haste = tonumber(cmdParams[3])
end
end
if type(cmdParams[4]) == 'string' then
if cmdParams[4] == 'true' then
moving = true
elseif cmdParams[4] == 'false' then
moving = false
end
end
if not midaction() then
job_update()
end
end
end
-- Automatically loads a Macro Set by: (Pallet,Book)
function select_default_macro_book()
if player.sub_job == 'BLU' then
set_macro_page(1, 2)
elseif player.sub_job == 'RUN' then
set_macro_page(2, 2)
elseif player.sub_job == 'WAR' then
set_macro_page(3, 2)
elseif player.sub_job == 'DNC' then
set_macro_page(9, 2)
elseif player.sub_job == 'NIN' then
set_macro_page(10, 2)
else
set_macro_page(1, 2)
end
end
function set_lockstyle()
send_command('wait 2; input /lockstyleset ' .. lockstyleset)
endThf: Code -- Initialization function for this job file.
function get_sets()
mote_include_version = 2
include('Mote-Include.lua')
end
-- Setup variables that are user-independent.
function job_setup()
state.CP = M(false, "Capacity Points Mode")
state.Warp = M(false, "Warp Mode")
state.TH = M(false, "Treasure Hunter")
lockstyleset = 1
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job.
-------------------------------------------------------------------------------------------------------------------
-- Gear Modes
function user_setup()
state.OffenseMode:options('Normal', 'Treasure')
state.HybridMode:options('Normal', 'MAX', 'Malignance', 'HIGH', 'MID', 'LOW')
-- Additional Key Binds.
send_command('bind ^` input /ja "Flee" <me>') --Ctrl'~'
send_command('bind f9 gs c cycle OffenseMode') --F9
send_command('bind f10 gs c cycle HybridMode') --F10
send_command('bind @c gs c toggle CP') --WindowKey'C'
send_command('bind @r gs c toggle Warp') --WindowKey'R'
send_command('bind @t gs c toggle TH') --WindowKey'T'
send_command('lua l gearinfo') --If you don't have GearInfo, Haste tiers won't work properly.
select_default_macro_book()
set_lockstyle()
Haste = 0
DW_needed = 0
DW = false
moving = false
update_combat_form()
determine_haste_group()
end
-- Erases the Key Binds above when you switch to another job.
function user_unload()
send_command('unbind ^`')
send_command('unbind @c')
send_command('unbind @r')
send_command('unbind @t')
send_command('gs enable all')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
------------------------------------------------------------------------------------------------
---------------------------------------- Precast Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.precast.FC = {
ammo="Sapience Orb", --2
head={ name="Herculean Helm", augments={'Mag. Acc.+11 "Mag.Atk.Bns."+11','"Fast Cast"+6','STR+5','"Mag.Atk.Bns."+12',}}, --13
neck="Orunmila's Torque", --5
Ear1="Etiolation Earring", --1
Ear2="Loquacious Earring", --2
Body="Taeon Tabard", --9
Hands="Leyline Gloves", --8
Ring1="", --Rahab Ring --2
Ring2="Prolix Ring", --2
back="", --JSE --10
Waist="",
legs={ name="Herculean Trousers", augments={'"Mag.Atk.Bns."+3','"Fast Cast"+6','Mag. Acc.+10',}}, --6
feet={ name="Herculean Boots", augments={'"Fast Cast"+5',}}, --5
} --65
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {body="Passion Jacket",neck="Magoraga Beads"})
------------------------------------------------------------------------------------------------
------------------------------------- Weapon Skill Sets ----------------------------------------
------------------------------------------------------------------------------------------------
sets.precast.WS = {
ammo="Aurgelmir Orb +1",
head="Adhemar Bonnet +1 +1",
neck="Asperity Necklace",
ear1="Brutal Earring",
ear2="Sherida Earring",
body="Rawhide Vest",
hands="",
ring1="Epona's Ring",
ring2="Ilabrat Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
waist="Fotia Belt",
legs="Samnuha Tights",
feet={ name="Herculean Boots", augments={'Accuracy+23 Attack+23','"Store TP"+2','STR+15','Accuracy+15','Attack+4',}}
}
sets.precast.WS['Evisceration'] = {
ammo="Yamarang",
head="Adhemar Bonnet +1",
neck="Fotia Gorget",
left_ear="Moonshade Earring",
right_ear="Odr Earring",
body="Meg. Cuirie +2",
hands="Mummu Wrists +2",
left_ring="Epona's Ring",
right_ring="Mummu Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
waist="Fotia Belt",
legs="Lustratio Subligar",
feet={ name="Herculean Boots", augments={'Attack+29','Crit.hit rate+5','STR+2',}}
}
sets.precast.WS['Rudra\'s Storm'] = {
ammo="Yamarang",
head={ name="Herculean Helm", augments={'Attack+6','Weapon skill damage +4%','DEX+7','Accuracy+10',}},
body={ name="Herculean Vest", augments={'Weapon skill damage +5%','STR+4','Accuracy+11','Attack+14',}},
hands="Meg. Gloves +2",
legs="Lustratio Subligar",
feet={ name="Herculean Boots", augments={'Attack+29','Weapon skill damage +5%','DEX+8','Accuracy+7',}},
neck="Caro Necklace",
waist="Grunfeld Rope",
left_ear="Sherida Earring",
right_ear="Moonshade Earring",
left_ring="Epona's Ring",
right_ring="Ilabrat Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
}
sets.precast.WS['Aeolian Edge'] = {
ammo="Pemphredo Tathlum",
head={ name="Herculean Helm", augments={'"Mag.Atk.Bns."+25','Crit. hit damage +1%','INT+3',}},
body={ name="Samnuha Coat", augments={'Mag. Acc.+13','"Mag.Atk.Bns."+14','"Fast Cast"+3','"Dual Wield"+4',}},
hands="Leyline Gloves",
legs={ name="Herculean Trousers", augments={'"Mag.Atk.Bns."+23','"Fast Cast"+4',}},
feet={ name="Herculean Boots", augments={'"Mag.Atk.Bns."+25','Weapon skill damage +4%',}},
neck="Sanctity Necklace",
waist="Eschan Stone",
left_ear="Friomisi Earring",
right_ear="Hecate's Earring",
left_ring="Acumen Ring",
right_ring="Ilabrat Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
}
------------------------------------------------------------------------------------------------
----------------------------------------- Idle Sets --------------------------------------------
------------------------------------------------------------------------------------------------
sets.idle = {
ammo="Yamarang",
head="Malignance Chapeau", --6DT
neck="Loricate Torque +1", --6DT
ear1="Odnowa Earring",
ear2="Odnowa Earring +1",
body="Emet Harness +1", --6PDT
hands="Malignance Gloves", --5DT
ring2="Vocane Ring", --7DT
ring1="Defending Ring", --10DT
back="Moonbeam Cape", --5DT
waist="Flume Belt +1", --4PDT
legs="Mummu Kecks +2", --5DT
feet="Jute Boots +1",
} --44DT --10PDT
sets.idle.Town = {
ammo="Aurgelmir Orb +1",
head="Malignance Chapeau",
neck="Anu Torque",
ear1="Sherida Earring",
ear2="Telos Earring",
body="Adhemar Jacket +1",
hands="Malignance Gloves",
ring2="Ilabrat Ring",
ring1="Gere Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
waist="Windbuffet Belt +1",
legs="Mummu Kecks +2",
feet="Jute Boots +1",
}
------------------------------------------------------------------------------------------------
---------------------------------------- Engaged Sets ------------------------------------------
------------------------------------------------------------------------------------------------
-- This is a Set that would only be used when you are NOT Dual Wielding. Most likely Airy Buckler Builds with Fencer as War Sub.
-- There are no haste parameters set for this build, because you wouldn't be juggling DW gear, you would always use the same gear, other than Damage Taken sets which ARE included below.
sets.engaged = {
}
------------------------------------------------------------------------------------------------
-------------------------------------- Dual Wield Sets -----------------------------------------
------------------------------------------------------------------------------------------------
-- * THF Native DW Trait: 25% DW
-- * THF Job Points DW Gift: 5% DW
-- No Magic Haste (49% DW to cap)
sets.engaged.DW = {
ammo="Aurgelmir Orb +1",
head="Adhemar Bonnet +1",
neck="Ej Necklace",
ear1="Eabani Earring", --4
ear2="Suppanomimi", --5
body="Adhemar Jacket +1", --6
hands="Adhemar Wrist. +1",
ring1="Gere Ring",
ring2="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}}, --10
waist="Reiki Yotai", --7
legs="Samnuha Tights",
feet="Plunderer's Poulaines +1",
} -- 32% 1063Acc
-- 15% Magic Haste (42% DW to cap)
sets.engaged.DW.LowHaste = {
ammo="Aurgelmir Orb +1",
head="Adhemar Bonnet +1",
neck="Ej Necklace",
ear1="Eabani Earring", --4
ear2="Suppanomimi", --5
body="Adhemar Jacket +1", --6
hands="Adhemar Wrist. +1",
ring1="Gere Ring",
ring2="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}},
waist="Reiki Yotai", --7
legs="Samnuha Tights",
feet="Plunderer's Poulaines +1",
} -- 32%
-- 30% Magic Haste (30% DW to cap)
sets.engaged.DW.MidHaste = {
ammo="Aurgelmir Orb +1",
head="Adhemar Bonnet +1",
neck="Ej Necklace",
ear1="Eabani Earring", --4
ear2="Suppanomimi", --5
body="Mummu Jacket +2",
hands="Adhemar Wrist. +1",
ring1="Gere Ring",
ring2="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}}, --10
waist="Reiki Yotai", --7
legs="Samnuha Tights",
feet="Plunderer's Poulaines +1",
} -- 26%
-- 40% Magic Haste (11% DW to cap)
sets.engaged.DW.HighHaste = {
ammo="Aurgelmir Orb +1",
head="Adhemar Bonnet +1",
neck="Ej Necklace",
ear1="Eabani Earring", --4
ear2="Sherida Earring",
body="Mummu Jacket +2",
hands="Adhemar Wrist. +1",
ring1="Gere Ring",
ring2="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
waist="Reiki Yotai", --7
legs="Samnuha Tights",
feet="Plunderer's Poulaines +1",
} -- 11%
-- 45% Magic Haste (1% DW to cap)
sets.engaged.DW.MaxHaste = {
ammo="Aurgelmir Orb +1",
head="Adhemar Bonnet +1",
neck="Anu Torque",
ear1="Brutal Earring",
ear2="Sherida Earring",
body="Mummu Jacket +2",
hands="Adhemar Wrist. +1",
ring1="Gere Ring",
ring2="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
waist="Windbuffet Belt +1",
legs="Samnuha Tights",
feet="Plunderer's Poulaines +1",
} -- 0%
------------------------------------------------------------------------------------------------
---------------------------------------- Hybrid Sets -------------------------------------------
------------------------------------------------------------------------------------------------
-- Define tiers of Defense Taken. These sets are cycled with the F10 Button.
sets.engaged.DT1 = {neck="Loricate Torque +1",ring1="Defending Ring"} --16%
sets.engaged.DT2 = {neck="Loricate Torque +1",ring1="Defending Ring",ring2="Vocane Ring",body="Emet Harness +1"} --29%
sets.engaged.DT3 = {neck="Loricate Torque +1",ring1="Defending Ring",ring2="Vocane Ring",body="Emet Harness +1",back="Moonbeam Cape",waist="Flume Belt +1",legs="Mummu Kecks +2"} --43%
sets.engaged.DT4 = {neck="Loricate Torque +1",ring1="Defending Ring",ring2="Vocane Ring",body="Emet Harness +1",back="Moonbeam Cape",waist="Flume Belt +1",legs="Mummu Kecks +2",head="Malignance Chapeau",hands="Malignance Gloves",feet="Malignance Boots",}
sets.engaged.DT5 = {head="Malignance Chapeau",body="Malignance Tabard",hands="Malignance Gloves",legs="Malignance Tights",feet="Malignance Boots",} --6,?,5,?,4 --15%
-- No Haste DW
sets.engaged.LOW = set_combine(sets.engaged, sets.engaged.DT1)
sets.engaged.MID = set_combine(sets.engaged, sets.engaged.DT2)
sets.engaged.HIGH = set_combine(sets.engaged, sets.engaged.DT3)
sets.engaged.MAX = set_combine(sets.engaged, sets.engaged.DT4)
sets.engaged.Malignance = set_combine(sets.engaged, sets.engaged.DT5)
-- No Haste DW
sets.engaged.DW.LOW = set_combine(sets.engaged.DW, sets.engaged.DT1)
sets.engaged.DW.MID = set_combine(sets.engaged.DW, sets.engaged.DT2)
sets.engaged.DW.HIGH = set_combine(sets.engaged.DW, sets.engaged.DT3)
sets.engaged.DW.MAX = set_combine(sets.engaged.DW, sets.engaged.DT4)
sets.engaged.DW.Malignance = set_combine(sets.engaged.DW, sets.engaged.DT5)
-- Low Haste DW
sets.engaged.DW.LOW.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT1)
sets.engaged.DW.MID.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT3)
sets.engaged.DW.MAX.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT4)
sets.engaged.DW.Malignance.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT5)
-- Mid Haste
sets.engaged.DW.LOW.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT1)
sets.engaged.DW.MID.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT3)
sets.engaged.DW.MAX.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT4)
sets.engaged.DW.Malignance.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT5)
-- High Haste
sets.engaged.DW.LOW.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT1)
sets.engaged.DW.MID.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT3)
sets.engaged.DW.MAX.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT4)
sets.engaged.DW.Malignance.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT5)
-- Max Haste
sets.engaged.DW.LOW.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT1)
sets.engaged.DW.MID.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT3)
sets.engaged.DW.MAX.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT4)
sets.engaged.DW.Malignance.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT5)
------------------------------------------------------------------------------------------------
---------------------------------------- Special Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.Warp = {ring1="Dim. Ring (Holla)",ring2="Warp Ring",ear1="Reraise Earring",}
sets.CP = {back="Mecisto. Mantle"}
sets.TH = {hands="Plunderer's Armlets +1",feet="Skulker's Poulaines +1",} --6
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
function job_precast(spell, action, spellMap, eventArgs)
if spellMap == 'Utsusemi' then
if buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)'] then
cancel_spell()
add_to_chat(123, '**!! '..spell.english..' Canceled: [3+ IMAGES] !!**')
eventArgs.handled = true
return
elseif buffactive['Copy Image'] or buffactive['Copy Image (2)'] then
send_command('cancel 66; cancel 444; cancel Copy Image; cancel Copy Image (2)')
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
function job_handle_equipping_gear(playerStatus, eventArgs)
update_combat_form()
determine_haste_group()
end
function job_update(cmdParams, eventArgs)
handle_equipping_gear(player.status)
end
function update_combat_form()
if DW == true then
state.CombatForm:set('DW')
elseif DW == false then
state.CombatForm:reset()
end
end
function customize_idle_set(idleSet)
if state.CP.current == 'on' then
equip(sets.CP)
disable('back')
else
enable('back')
end
if state.Warp.current == 'on' then
equip(sets.Warp)
disable('ring1')
disable('ring2')
disable('ear1')
else
enable('ring1')
enable('ring2')
enable('ear1')
end
if state.TH.current == 'on' then
equip(sets.TH)
disable('Feet')
disable('Hands')
else
enable('Feet')
enable('Hands')
end
return idleSet
end
function customize_melee_set(meleeSet)
if state.CP.current == 'on' then
equip(sets.CP)
disable('back')
else
enable('back')
end
if state.Warp.current == 'on' then
equip(sets.Warp)
disable('ring1')
disable('ring2')
else
enable('ring1')
enable('ring2')
end
if state.TH.current == 'on' then
equip(sets.TH)
disable('Feet')
disable('Hands')
else
enable('Feet')
enable('Hands')
end
return meleeSet
end
-- Function to display the current relevant user state when doing an update.
-- Set eventArgs.handled to true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
local msg = '[ Melee'
if state.CombatForm.has_value then
msg = msg .. ' (' .. state.CombatForm.value .. ')'
end
msg = msg .. ': '
msg = msg .. state.OffenseMode.value
if state.HybridMode.value ~= 'Normal' then
msg = msg .. '/' .. state.HybridMode.value
end
msg = msg .. ' ][ WS: ' .. state.WeaponskillMode.value .. ' ]'
if state.DefenseMode.value ~= 'None' then
msg = msg .. '[ Defense: ' .. state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ' ]'
end
if state.Kiting.value then
msg = msg .. '[ Kiting Mode: ON ]'
end
msg = msg .. ' ]'
add_to_chat(060, msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function determine_haste_group()
classes.CustomMeleeGroups:clear()
if DW == true then
if DW_needed <= 1 then
classes.CustomMeleeGroups:append('MaxHaste')
elseif DW_needed > 1 and DW_needed <= 12 then
classes.CustomMeleeGroups:append('HighHaste')
elseif DW_needed > 12 and DW_needed <= 21 then
classes.CustomMeleeGroups:append('MidHaste')
elseif DW_needed > 21 and DW_needed <= 39 then
classes.CustomMeleeGroups:append('LowHaste')
elseif DW_needed > 39 then
classes.CustomMeleeGroups:append('')
end
end
end
function job_self_command(cmdParams, eventArgs)
gearinfo(cmdParams, eventArgs)
end
function gearinfo(cmdParams, eventArgs)
if cmdParams[1] == 'gearinfo' then
if type(tonumber(cmdParams[2])) == 'number' then
if tonumber(cmdParams[2]) ~= DW_needed then
DW_needed = tonumber(cmdParams[2])
DW = true
end
elseif type(cmdParams[2]) == 'string' then
if cmdParams[2] == 'false' then
DW_needed = 0
DW = false
end
end
if type(tonumber(cmdParams[3])) == 'number' then
if tonumber(cmdParams[3]) ~= Haste then
Haste = tonumber(cmdParams[3])
end
end
if type(cmdParams[4]) == 'string' then
if cmdParams[4] == 'true' then
moving = true
elseif cmdParams[4] == 'false' then
moving = false
end
end
if not midaction() then
job_update()
end
end
end
-- Automatically loads a Macro Set by: (Pallet,Book)
function select_default_macro_book()
if player.sub_job == 'SAM' then
set_macro_page(1, 8)
elseif player.sub_job == 'WAR' then
set_macro_page(2, 8)
elseif player.sub_job == 'RUN' then
set_macro_page(3, 8)
elseif player.sub_job == 'BLU' then
set_macro_page(4, 8)
elseif player.sub_job == 'DNC' then
set_macro_page(9, 8)
elseif player.sub_job == 'NIN' then
set_macro_page(10, 8)
else
set_macro_page(1, 8)
end
end
function set_lockstyle()
send_command('wait 2; input /lockstyleset ' .. lockstyleset)
endHere's what I used when I played.
It should be as simple as following the directions and plugging in your gear, but if you use it, let me know if you have any trouble. Asura.Cambion said: » I'm not sure how fancy you're looking for, or how advanced you are with Gearswap. These are up to date, have a decent amount of functionality, and (in my opinion) are more basic or beginner friendly type luas of mine. Pld: Code -- 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 variables that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
state.CP = M(false, "Capacity Points Mode")
state.Warp = M(false, "Warp Mode")
state.MP = M(false, "Mana Mode")
state.Weapon = M(false, "Weapon Lock")
state.Neck = M(false, "Neck Mode")
lockstyleset = 14
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job.
-------------------------------------------------------------------------------------------------------------------
-- Gear Modes
function user_setup()
state.OffenseMode:options('Normal', 'LowAcc', 'MidAcc', 'HighAcc')
state.HybridMode:options('Normal', 'HIGH', 'MID', 'LOW')
state.WeaponskillMode:options('Normal', 'Acc')
state.CastingMode:options('Normal', 'SIRD', 'HPBAL')
-- Allows the use of Ctrl + ~ and Alt + ~ for 2 more macros of your choice.
send_command('bind ^` input /ja "Cover" <stal>') --Ctrl'~'
send_command('bind !` input /ja "Divine Emblem" <me>') --Alt'~'
send_command('bind f9 gs c cycle OffenseMode') --F9
send_command('bind ^f9 gs c cycle WeaponSkillMode') --Ctrl'F9'
send_command('bind f10 gs c cycle HybridMode') --F10
send_command('bind f11 gs c cycle CastingMode') --F11
send_command('bind @c gs c toggle CP') --WindowKey'C'
send_command('bind @r gs c toggle Warp') --Windowkey'R'
send_command('bind @m gs c toggle MP') --Windowkey'M'
send_command('bind @w gs c toggle Weapon') --Windowkey'W'
send_command('bind @t gs c toggle Twilight') --Windowkey'T'
send_command('bind @n gs c toggle Neck') --Windowkey'N'
send_command('bind @i input /ja "Invincible" <me>') --Windowkey'I'
send_command('lua l gearinfo')
select_default_macro_book()
set_lockstyle()
Haste = 0
DW_needed = 0
DW = false
moving = false
update_combat_form()
determine_haste_group()
end
-- Erases the Key Binds above when you switch to another job.
function user_unload()
send_command('unbind ^`')
send_command('unbind !`')
send_command('unbind !-')
send_command('unbind ^=')
send_command('unbind f11')
send_command('unbind @c')
send_command('unbind @r')
send_command('unbind @m')
send_command('unbind @w')
send_command('unbind @t')
send_command('unbind @n')
send_command('gs enable all')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
------------------------------------------------------------------------------------------------
---------------------------------------- Precast Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.Enmity = {
Main="Firangi", --8
Ammo="Sapience Orb", --2
Head="Loess Barbuta +1", --9~14
Neck="Moonlight Necklace", --15
Ear2="Friomisi Earring", --2
Ear1="Cryptic Earring", --4
Body="Souveran Cuirass +1", --20
Hands="Yorium Gauntlets", --12
Ring1="Apeile Ring", --5~9
Ring2="Apeile Ring +1", --5~9
back={ name="Rudianos's Mantle", augments={'Enmity+10','Spell interruption rate down-10%',}}, --10
Waist="Creed Baudrier", --5
Legs="Souveran Diechlings +1", --9
Feet="Eschite Greaves", --15
} --121~134
sets.precast.JA['Invincible'] = set_combine(sets.Enmity, {})
sets.precast.JA['Shield Bash'] = set_combine(sets.Enmity, {})
sets.precast.JA['Holy Circle'] = set_combine(sets.Enmity, {})
sets.precast.JA['Sentinel'] = set_combine(sets.Enmity, {})
sets.precast.JA['Cover'] = set_combine(sets.Enmity, {})
sets.precast.JA['Rampart'] = set_combine(sets.Enmity, {})
sets.precast.JA['Fealty'] = set_combine(sets.Enmity, {})
sets.precast.JA['Chivalry'] = set_combine(sets.Enmity, {})
sets.precast.JA['Divine Emblem'] = set_combine(sets.Enmity, {})
sets.precast.JA['Sepulcher'] = set_combine(sets.Enmity, {})
sets.precast.JA['Palisade'] = set_combine(sets.Enmity, {})
sets.precast.JA['Intervene'] = set_combine(sets.Enmity, {})
sets.precast.FC = {
Main="Malignance Sword", --8
Ammo="Impatiens", --2QM
Head="Carmine Mask +1", --14
Neck="Orunmila's Torque", --5
Ear1="Loquacious Earring", --2
Ear2="Etiolation Earring", --1
Body="Reverence Surcoat +2", --5 -- +3=10
Hands="Leyline Gloves", --8
Ring1="Veneficium Ring", --1QM
Legs="Arjuna Breeches", --4
Feet="Odyssean Greaves", --5 + AUG
Waist="Creed Baudrier", --40HP
Back="", --10FC Rudios??
Ring2="Eihwaz Ring", --70HP
} --58FC 3QM
sets.precast.Cure = set_combine(sets.precast.FC, {
Body="Jumalik Mail", --10
Neck="Diemer Gorget", --4
Ear2="Mendicant's Earring", --5
})
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {})
------------------------------------------------------------------------------------------------
-------------------------------------- Sub Job Specific ----------------------------------------
------------------------------------------------------------------------------------------------
--- Warrior
sets.precast.JA['Provoke'] = sets.Enmity
--- Dancer
sets.precast.Waltz = {}
sets.precast.WaltzSelf = set_combine(sets.precast.Waltz, {ring1="Asklepian Ring"})
--- Rune Fencer
------------------------------------------------------------------------------------------------
------------------------------------- Weapon Skill Sets ----------------------------------------
------------------------------------------------------------------------------------------------
sets.precast.WS = {
ammo="Aurgelmir Orb +1",
head="Hjarrandi Helm",
body="Hjarrandi Breastplate",
hands="Sulev. Gauntlets +2",
legs="Sulev. Cuisses +2",
feet="Sulevia's Leggings +2",
neck="Fotia Gorget",
waist="Fotia Belt",
ear1="Moonshade Earring",
ear2="Thrud Earring",
Ring1="Epaminondas's Ring",
Ring2="Flamma Ring",
back={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +5%',}},
}
sets.precast.WS['Atonement'] = {}
sets.precast.WS['Requiescat'] = {}
sets.precast.WS['Chant du Cygne'] = {}
sets.precast.WS['Sanguine Blade'] = {}
sets.precast.WS['Savage Blade'] = {
ammo="Aurgelmir Orb +1",
head="Hjarrandi Helm",
body="Hjarrandi Breastplate",
hands="Sulev. Gauntlets +2",
legs="Sulev. Cuisses +2",
feet="Sulevia's Leggings +2",
neck="Fotia Gorget",
waist="Fotia Belt",
ear1="Moonshade Earring",
ear2="Thrud Earring",
Ring1="Epaminondas's Ring",
Ring2="Flamma Ring",
back={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +5%',}},
}
sets.precast.WS['Aeolian Edge'] = {
ammo="Pemphredo Tathlum",
head="",
body={ name="Samnuha Coat", augments={'Mag. Acc.+13','"Mag.Atk.Bns."+14','"Fast Cast"+3','"Dual Wield"+4',}},
hands="Leyline Gloves",
legs="",
feet="",
neck="Sanctity Necklace",
waist="Eschan Stone",
ear1="Friomisi Earring",
ear2="Hecate's Earring",
left_ring="Acumen Ring",
right_ring="Ilabrat Ring",
back={ name="Rudianos's Mantle", augments={'Accuracy+20 Attack+20','Weapon skill damage +5%',}},
}
--------------------------------------- Accuracy Mode ------------------------------------------
sets.precast.WS.Acc = set_combine(sets.precast.WS, {})
sets.precast.WS['Atonement'].Acc = set_combine(sets.precast.WS['Atonement'], {})
sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS['Requiescat'], {})
sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'], {})
sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS['Chant du Cygne'], {})
sets.precast.WS['Sanguine Blade'].Acc = set_combine(sets.precast.WS['Sanguine Blade'], {})
------------------------------------------------------------------------------------------------
---------------------------------------- Midcast Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.midcast.FastRecast = sets.precast.FC
sets.midcast.Utsusemi = sets.Enmity
sets.midcast.Flash = sets.Enmity
sets.midcast['Enhancing Magic'] = sets.Enmity
sets.midcast.Reprisal = sets.Enmity
sets.midcast.Crusade = sets.Enmity
sets.midcast.Enlight = sets.Enmity
sets.midcast['Blue Magic'] = sets.Enmity
sets.midcast.Cure = {
Ammo="Impatiens", --10SIRD
Neck="Phalaina Locket", --4
Legs="Souveran Diechlings +1", --0/23
Head="Souveran Schaller +1", --0/15 20SIRD
Hands="Macabre Gauntlets +1",
Ear1="Nourishing Earring", --6
Ear2="Mendicant's Earring", --5
Body="Jumalik Mail", --15
Feet="Odyssean Greaves", --7 --20SIRD
} --60SIRD, 10Merits, 37/30CurePot
sets.midcast.Phalanx = {
Hands="Souveran Handschuhs +1", --5
Feet="Souveran Schuhs +1", --5
Back="Weard Mantle", --5
} --15
sets.midcast.Protect = {ring1="Sheltered Ring"}
sets.midcast.Shell = {ring1="Sheltered Ring"}
------------------------------------------------------------------------------------------------
----------------------------------------- SIRD Sets --------------------------------------------
------------------------------------------------------------------------------------------------
sets.midcast.SIRD = {--Merits 10SIRD
Ammo="Impatiens", --10SIRD
Head="Souveran Schaller +1", --20SIRD
Neck="Moonlight Necklace", --15SIRD
Waist="Rumination Sash", --10SIRD
Legs="Carmine Cuisses +1", --20SIRD
Feet="Odyssean Greaves", --20SIRD
back={ name="Rudianos's Mantle", augments={'Enmity+10','Spell interruption rate down-10%',}}, --10SIRD
} --115SIRD
sets.precast.FC.SIRD = {--Merits 10SIRD
Ammo="Impatiens", --10SIRD
Head="Souveran Schaller +1", --20SIRD
Neck="Moonlight Necklace", --15SIRD
Waist="Rumination Sash", --10SIRD
Legs="Carmine Cuisses +1", --20SIRD
Feet="Odyssean Greaves", --20SIRD
back={ name="Rudianos's Mantle", augments={'Enmity+10','Spell interruption rate down-10%',}}, --10SIRD
} --115SIRD
sets.midcast.Flash.SIRD = {--Merits 10SIRD
Main="Firangi", --8
Ammo="Impatiens", --10SIRD Neg2Enm
Head="Souveran Schaller +1", --20SIRD Neg9~14Enm
Neck="Moonlight Necklace", --15SIRD
Ear1="Odnowa Earring",
Ear2="Odnowa Earring +1",
Body="Souveran Cuirass +1", --20
Hands="Yorium Gauntlets", --12
Ring1="Apeile Ring", --5~9
Ring2="Apeile Ring +1", --5~9
back={ name="Rudianos's Mantle", augments={'Enmity+10','Spell interruption rate down-10%',}}, --10SIRD
Waist="Creed Baudrier", --5
Legs="Carmine Cuisses +1", --20SIRD Neg9Enm
Feet="Odyssean Greaves", --20SIRD Neg15Enm
Sub="Ajax +1",
} --80~88, 105SIRD
sets.midcast.Cure.SIRD = set_combine(sets.midcast.Cure, sets.midcast.SIRD)
sets.midcast.Phalanx.SIRD = set_combine(sets.midcast.Phalanx, sets.midcast.SIRD)
sets.midcast.Reprisal.SIRD = set_combine(sets.midcast.Reprisal, sets.midcast.SIRD)
sets.midcast.Crusade.SIRD = set_combine(sets.midcast.Crusade, sets.midcast.SIRD)
sets.midcast.Utsusemi.SIRD = set_combine(sets.midcast.Utsusemi, sets.midcast.SIRD)
sets.midcast['Blue Magic'].SIRD = set_combine(sets.midcast['Blue Magic'], sets.midcast.SIRD)
------------------------------------------------------------------------------------------------
---------------------------------------- HPBAL Sets --------------------------------------------
------------------------------------------------------------------------------------------------
sets.precast.FC.HPBAL = { --10SIRD Merits, 10DT Set Bonus
Main="Malignance Sword", --8FC
Ammo="Sapience Orb", --2FC, 0SIRD, 0DT
Head="Carmine Mask +1", --14FC
Neck="Orunmila's Torque", --5FC, 0SIRD, 0DT
Ear1="Odnowa Earring",
Ear2="Odnowa Earring +1",
Body="Reverence Surcoat +2", --5FC, 0SIRD, 10DT
Hands="Leyline Gloves", --8FC
Ring1="Moonlight Ring", --100HP
Ring2="Eihwaz Ring", --70HP
Back="Moonbeam Cape", --0FC, 0SIRD, 5DT --Rudios??
Waist="Creed Baudrier", --40HP
Legs="Souveran Diechlings +1", --0FC, 0SIRD, 4DT
Feet="Souveran Schuhs +1", --0FC, 0SIRD, 5DT
} --42FC, 10SIRD, 38DT
sets.midcast.HPBAL = { --10SIRD Merits --8DT Set Bonus
Ammo="Impatiens", --0FC, 10SIRD, 0DT
Head="Souveran Schaller +1", --0FC, 20SIRD, 0DT
Neck="Moonlight Necklace", --0FC, 15SIRD, 0DT
Ear1="Odnowa Earring",
Ear2="Knightly Earring", --9SIRD, -100HP
Body="Reverence Surcoat +2", --0FC, 0SIRD, 10DT, 8Enm
Hands="Souveran Handschuhs +1", --0FC, 0SIRD, 4DT
Ring1="",
Ring2="",
Back="Moonbeam Cape", --0FC, 0SIRD, 5DT
Waist="Rumination Sash", --0FC, 10SIRD, 0DT, -40HP
Legs="Founder's Hose", --0FC, 30SIRD, 0DT, -108HP
Feet="Souveran Schuhs +1", --0FC, 0SIRD, 5DT
} --0FC, 104SIRD, 32DT, 62~70Enm
sets.midcast.Flash.HPBAL = {
Main="Firangi", --8
Ammo="Sapience Orb", --2
Head="Loess Barbuta +1", --9~14
Neck="Moonlight Necklace", --15
Ear1="Odnowa Earring",
Ear2="Odnowa Earring +1",
Body="Souveran Cuirass +1", --20
Hands="Yorium Gauntlets", --12
Ring1="Apeile Ring", --5~9
Ring2="Apeile Ring +1", --5~9
back={ name="Rudianos's Mantle", augments={'Enmity+10','Spell interruption rate down-10%',}}, --10
Waist="Creed Baudrier", --5
Legs="Souveran Diechlings +1", --9
Feet="Eschite Greaves", --15
Sub="Ajax +1", --11
} --115~128
sets.midcast.Shell.HPBAL = set_combine(sets.midcast, sets.midcast.HPBAL)
sets.midcast.Protect.HPBAL = set_combine(sets.midcast, sets.midcast.HPBAL)
sets.midcast.Cure.HPBAL = set_combine(sets.midcast.Cure, sets.midcast.HPBAL)
sets.midcast.Phalanx.HPBAL = set_combine(sets.midcast.Phalanx, sets.midcast.HPBAL)
sets.midcast.Reprisal.HPBAL = set_combine(sets.midcast.Reprisal, sets.midcast.HPBAL)
sets.midcast.Crusade.HPBAL = set_combine(sets.midcast.Crusade, sets.midcast.HPBAL)
sets.midcast.Utsusemi.HPBAL = set_combine(sets.midcast.Utsusemi, sets.midcast.HPBAL)
sets.midcast['Blue Magic'].HPBAL = set_combine(sets.midcast['Blue Magic'], sets.midcast.HPBAL)
sets.precast.WS.HPBAL = {}
------------------------------------------------------------------------------------------------
----------------------------------------- Idle Sets --------------------------------------------
------------------------------------------------------------------------------------------------
sets.idle = {
Ammo="Homiliary",
Head="Souveran Schaller +1",
Neck="Loricate Torque +1",
ear1="Odnowa Earring",
ear2="Odnowa Earring +1",
Body="Souveran Cuirass +1",
Hands="Souveran Handschuhs +1",
Ring1="Defending Ring",
Ring2="Vocane Ring",
Back="Moonbeam Cape",
Waist="Flume Belt +1",
Legs="Carmine Cuisses +1",
Feet="Souveran Schuhs +1",
}
sets.idle.Town = {
Ammo="Homiliary",
Head="Souveran Schaller +1",
Neck="Loricate Torque +1",
ear1="Odnowa Earring",
ear2="Odnowa Earring +1",
Body="Souveran Cuirass +1",
Hands="Souveran Handschuhs +1",
Ring1="Defending Ring",
Ring2="Vocane Ring",
Back="Moonbeam Cape",
Waist="Flume Belt +1",
Legs="Carmine Cuisses +1",
Feet="Souveran Schuhs +1",
}
------------------------------------------------------------------------------------------------
---------------------------------------- Engaged Sets ------------------------------------------
------------------------------------------------------------------------------------------------
-- This is a Set that would only be used when you are NOT Dual Wielding.
-- There are no haste parameters set for this build, because you wouldn't be juggling DW gear, you would always use the same gear, other than Damage Taken and Accuracy sets which ARE included below.
sets.engaged = {
ammo="Aurgelmir Orb +1",
head="Flamma Zucchetto +2",
body="Hjarrandi Breastplate",
hands="Sulev. Gauntlets +2",
legs={ name="Valor. Hose", augments={'Accuracy+7','"Store TP"+7','AGI+9','Attack+7',}},
feet="Flam. Gambieras +1",
neck="Asperity Necklace",
waist="Sailfi Belt +1",
ear1="Cessance Earring",
ear2="Brutal Earring",
Ring1="Petrov Ring",
Ring2="Hetairoi Ring",
back={ name="Rudianos's Mantle", augments={'Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
}
------------------------------------------------------------------------------------------------
-------------------------------------- Dual Wield Sets -----------------------------------------
------------------------------------------------------------------------------------------------
-- * NIN Sub Native DW Trait: 25% DW
-- * DNC Sub Native DW Trait: 15% DW
-- No Magic Haste (??% DW to cap)
sets.engaged.DW = {
} -- ??% ??Acc
-- 15% Magic Haste (??% DW to cap)
sets.engaged.DW.LowHaste = {
} -- ??% ??Acc
-- 30% Magic Haste (??% DW to cap)
sets.engaged.DW.MidHaste = {
} -- ??% ??Acc
-- 40% Magic Haste (??% DW to cap)
sets.engaged.DW.HighHaste = {
} -- ??% ??Acc
-- 45% Magic Haste (??% DW to cap)
sets.engaged.DW.MaxHaste = {
} -- ??% ??Acc
------------------------------------------------------------------------------------------------
--------------------------------------- Accuracy Sets ------------------------------------------
------------------------------------------------------------------------------------------------
-- Define three tiers of Accuracy. These sets are cycled with the F9 Button to increase accuracy in stages as desired.
sets.engaged.Acc1 = {} --1118
sets.engaged.Acc2 = {} --1151
sets.engaged.Acc3 = {} --1203
-- Base Shield
sets.engaged.LowAcc = set_combine(sets.engaged, sets.engaged.Acc1)
sets.engaged.MidAcc = set_combine(sets.engaged, sets.engaged.Acc2)
sets.engaged.HighAcc = set_combine(sets.engaged, sets.engaged.Acc3)
-- Base DW
sets.engaged.DW.LowAcc = set_combine(sets.engaged.DW, sets.engaged.Acc1)
sets.engaged.DW.MidAcc = set_combine(sets.engaged.DW, sets.engaged.Acc2)
sets.engaged.DW.HighAcc = set_combine(sets.engaged.DW, sets.engaged.Acc3)
-- LowHaste DW
sets.engaged.DW.LowAcc.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.Acc1)
sets.engaged.DW.MidAcc.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.Acc2)
sets.engaged.DW.HighAcc.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.Acc3)
-- MidHaste DW
sets.engaged.DW.LowAcc.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.Acc1)
sets.engaged.DW.MidAcc.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.Acc2)
sets.engaged.DW.HighAcc.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.Acc3)
-- HighHaste DW
sets.engaged.DW.LowAcc.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.Acc1)
sets.engaged.DW.MidAcc.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.Acc2)
sets.engaged.DW.HighAcc.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.Acc3)
-- HighHaste DW
sets.engaged.DW.LowAcc.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.LowAcc)
sets.engaged.DW.MidAcc.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.MidAcc)
sets.engaged.DW.HighAcc.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.HighAcc)
------------------------------------------------------------------------------------------------
---------------------------------------- Hybrid Sets -------------------------------------------
------------------------------------------------------------------------------------------------
-- Define three tiers of Defense Taken. These sets are cycled with the F10 Button.
sets.engaged.DT1 = { -- 48%
ammo="Aurgelmir Orb +1",
head="Sulevia's Mask +1", --5
body="Sulevia's Plate. +1", --8
hands="Sulev. Gauntlets +2", --5
legs="Sulev. Cuisses +2", --7
feet="Flam. Gambieras +1",
neck="Loricate Torque +1", --DD
waist="Tempus Fugit",
ear1="Telos Earring",
ear2="Brutal Earring",
Ring1="Defending Ring", --10
Ring2="Vocane Ring", --DD
back={ name="Rudianos's Mantle", augments={'Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
} --50 with DD ring, neck,
sets.engaged.DT2 = { --4 Set Bonus??
Ammo="Aurgelmir Orb +1",
Head="Hjarrandi Helm", --10
Neck="Asperity Necklace",
ear1="Telos Earring",
ear2="Brutal Earring",
Body="Hjarrandi Breastplate", --12
Hands="Souveran Handschuhs +1", --4
Ring1="Defending Ring", --10
Ring2="Vocane Ring", --7
back={ name="Rudianos's Mantle", augments={'Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
Waist="Windbuffet Belt +1",
Legs="Sulev. Cuisses +2", --7
Feet="Souveran Schuhs +1", --5
} --
sets.engaged.DT3 = { --10 Set Bonus
Ammo="Amar Cluster",
Head="Souveran Schaller +1",
Neck="Decimus Torque",
Ear1="Odnowa Earring",
Ear2="Odnowa Earring +1",
Body="Souveran Cuirass +1", --10DT
Hands="Souveran Handschuhs +1", --4DT
Ring1="Defending Ring", --10DT
Ring2="Vocane Ring", --7DT Moonlight?
back={ name="Rudianos's Mantle", augments={'Accuracy+20 Attack+20','"Dbl.Atk."+10',}},
Waist="Sarissaphoroi Belt",
Legs="Souveran Diechlings +1", --4DT
Feet="Souveran Schuhs +1", --5DT
} --50DT
-- Shield Base
sets.engaged.LOW = set_combine(sets.engaged, sets.engaged.DT1)
sets.engaged.LowAcc.LOW = set_combine(sets.engaged.LowAcc, sets.engaged.DT1)
sets.engaged.MidAcc.LOW = set_combine(sets.engaged.MidAcc, sets.engaged.DT1)
sets.engaged.HighAcc.LOW = set_combine(sets.engaged.HighAcc, sets.engaged.DT1)
sets.engaged.MID = set_combine(sets.engaged, sets.engaged.DT2)
sets.engaged.LowAcc.MID = set_combine(sets.engaged.LowAcc, sets.engaged.DT2)
sets.engaged.MidAcc.MID = set_combine(sets.engaged.MidAcc, sets.engaged.DT2)
sets.engaged.HighAcc.MID = set_combine(sets.engaged.HighAcc, sets.engaged.DT2)
sets.engaged.HIGH = set_combine(sets.engaged, sets.engaged.DT3)
sets.engaged.LowAcc.HIGH = set_combine(sets.engaged.LowAcc, sets.engaged.DT3)
sets.engaged.MidAcc.HIGH = set_combine(sets.engaged.MidAcc, sets.engaged.DT3)
sets.engaged.HighAcc.HIGH = set_combine(sets.engaged.HighAcc, sets.engaged.DT3)
-- No Haste DW
sets.engaged.DW.LOW = set_combine(sets.engaged.DW, sets.engaged.DT1)
sets.engaged.DW.LowAcc.LOW = set_combine(sets.engaged.DW.LowAcc, sets.engaged.DT1)
sets.engaged.DW.MidAcc.LOW = set_combine(sets.engaged.DW.MidAcc, sets.engaged.DT1)
sets.engaged.DW.HighAcc.LOW = set_combine(sets.engaged.DW.HighAcc, sets.engaged.DT1)
sets.engaged.DW.MID = set_combine(sets.engaged.DW, sets.engaged.DT2)
sets.engaged.DW.LowAcc.MID = set_combine(sets.engaged.DW.LowAcc, sets.engaged.DT2)
sets.engaged.DW.MidAcc.MID = set_combine(sets.engaged.DW.MidAcc, sets.engaged.DT2)
sets.engaged.DW.HighAcc.MID = set_combine(sets.engaged.DW.HighAcc, sets.engaged.DT2)
sets.engaged.DW.HIGH = set_combine(sets.engaged.DW, sets.engaged.DT3)
sets.engaged.DW.LowAcc.HIGH = set_combine(sets.engaged.DW.LowAcc, sets.engaged.DT3)
sets.engaged.DW.MidAcc.HIGH = set_combine(sets.engaged.DW.MidAcc, sets.engaged.DT3)
sets.engaged.DW.HighAcc.HIGH = set_combine(sets.engaged.DW.HighAcc, sets.engaged.DT3)
-- Low Haste DW
sets.engaged.DW.LOW.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT1)
sets.engaged.DW.LowAcc.LOW.LowHaste = set_combine(sets.engaged.DW.LowAcc.LowHaste, sets.engaged.DT1)
sets.engaged.DW.MidAcc.LOW.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.DT1)
sets.engaged.DW.HighAcc.LOW.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.DT1)
sets.engaged.DW.MID.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT2)
sets.engaged.DW.LowAcc.MID.LowHaste = set_combine(sets.engaged.DW.LowAcc.LowHaste, sets.engaged.DT2)
sets.engaged.DW.MidAcc.MID.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.DT2)
sets.engaged.DW.HighAcc.MID.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT3)
sets.engaged.DW.LowAcc.HIGH.LowHaste = set_combine(sets.engaged.DW.LowAcc.LowHaste, sets.engaged.DT3)
sets.engaged.DW.MidAcc.HIGH.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.DT3)
sets.engaged.DW.HighAcc.HIGH.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.DT3)
-- Mid Haste
sets.engaged.DW.LOW.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT1)
sets.engaged.DW.LowAcc.LOW.MidHaste = set_combine(sets.engaged.DW.LowAcc.MidHaste, sets.engaged.DT1)
sets.engaged.DW.MidAcc.LOW.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.DT1)
sets.engaged.DW.HighAcc.LOW.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.DT1)
sets.engaged.DW.MID.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT2)
sets.engaged.DW.LowAcc.MID.MidHaste = set_combine(sets.engaged.DW.LowAcc.MidHaste, sets.engaged.DT2)
sets.engaged.DW.MidAcc.MID.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.DT2)
sets.engaged.DW.HighAcc.MID.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT3)
sets.engaged.DW.LowAcc.HIGH.MidHaste = set_combine(sets.engaged.DW.LowAcc.MidHaste, sets.engaged.DT3)
sets.engaged.DW.MidAcc.HIGH.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.DT3)
sets.engaged.DW.HighAcc.HIGH.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.DT3)
-- High Haste
sets.engaged.DW.LOW.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT1)
sets.engaged.DW.LowAcc.LOW.HighHaste = set_combine(sets.engaged.DW.LowAcc.HighHaste, sets.engaged.DT1)
sets.engaged.DW.MidAcc.LOW.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.DT1)
sets.engaged.DW.HighAcc.LOW.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.DT1)
sets.engaged.DW.MID.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT2)
sets.engaged.DW.LowAcc.MID.HighHaste = set_combine(sets.engaged.DW.LowAcc.HighHaste, sets.engaged.DT2)
sets.engaged.DW.MidAcc.MID.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.DT2)
sets.engaged.DW.HighAcc.MID.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT3)
sets.engaged.DW.LowAcc.HIGH.HighHaste = set_combine(sets.engaged.DW.LowAcc.HighHaste, sets.engaged.DT3)
sets.engaged.DW.MidAcc.HIGH.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.DT3)
sets.engaged.DW.HighAcc.HIGH.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.DT3)
-- Max Haste
sets.engaged.DW.LOW.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT1)
sets.engaged.DW.LowAcc.LOW.MaxHaste = set_combine(sets.engaged.DW.LowAcc.MaxHaste, sets.engaged.DT1)
sets.engaged.DW.MidAcc.LOW.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.DT1)
sets.engaged.DW.HighAcc.LOW.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.DT1)
sets.engaged.DW.MID.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT2)
sets.engaged.DW.LowAcc.MID.MaxHaste = set_combine(sets.engaged.DW.LowAcc.MaxHaste, sets.engaged.DT2)
sets.engaged.DW.MidAcc.MID.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.DT2)
sets.engaged.DW.HighAcc.MID.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT3)
sets.engaged.DW.LowAcc.HIGH.MaxHaste = set_combine(sets.engaged.DW.LowAcc.MaxHaste, sets.engaged.DT3)
sets.engaged.DW.MidAcc.HIGH.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.DT3)
sets.engaged.DW.HighAcc.HIGH.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.DT3)
------------------------------------------------------------------------------------------------
---------------------------------------- Special Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.buff.Doom = {}
sets.Warp = {ring1="Dim. Ring (Holla)",ring2="Warp Ring"}
sets.CP = {back="Mecisto. Mantle"}
sets.MP = {back="Rudianos's Mantle",Ear1="Ethereal Earring",Waist="Flume Belt +1",Ammo="Homiliary",}
sets.Weapon = {}
sets.Neck = {Neck=""} --Locks Dynamis Neck for Rank Point Farming
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
-- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
function job_precast(spell, action, spellMap, eventArgs)
if spellMap == 'Utsusemi' then
if buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)'] then
cancel_spell()
add_to_chat(123, '**!! '..spell.english..' Canceled: [3+ IMAGES] !!**')
eventArgs.handled = true
return
elseif buffactive['Copy Image'] or buffactive['Copy Image (2)'] then
send_command('cancel 66; cancel 444; cancel Copy Image; cancel Copy Image (2)')
end
end
-- Used to overwrite Moonshade Earring if TP is more than 2750.
if spell.type == 'WeaponSkill' then
if player.tp > 2750 then
equip({ear2 = "Telos Earring"})
end
end
end
function job_post_precast(spell, action, spellMap, eventArgs)
if spell.type=='Waltz' and spell.target.type == 'SELF' then
equip(sets.precast.WaltzSelf)
end
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
function job_buff_change(buff,gain)
if buff == "doom" then
if gain then
equip(sets.buff.Doom)
send_command('@input /echo Doomed.')
disable()
else
enable()
handle_equipping_gear(player.status)
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
function job_handle_equipping_gear(playerStatus, eventArgs)
update_combat_form()
determine_haste_group()
end
function job_update(cmdParams, eventArgs)
handle_equipping_gear(player.status)
end
function update_combat_form()
if DW == true then
state.CombatForm:set('DW')
elseif DW == false then
state.CombatForm:reset()
end
end
function customize_idle_set(idleSet)
if state.CP.current == 'on' then
equip(sets.CP)
disable('back')
else
enable('back')
end
if state.Warp.current == 'on' then
equip(sets.Warp)
disable('ring1')
disable('ring2')
else
enable('ring1')
enable('ring2')
end
if state.MP.current == 'on' then
equip(sets.MP)
disable('Waist')
disable('Ear1')
disable('back')
else
enable('Waist')
enable('Ear1')
enable('back')
end
if state.Weapon.current == 'on' then
disable('Main')
disable('Sub')
else
enable('Main')
enable('Sub')
end
if state.Neck.current == 'on' then
equip(sets.Neck)
disable('Neck')
else
enable('Neck')
end
return idleSet
end
function customize_melee_set(meleeSet)
if state.CP.current == 'on' then
equip(sets.CP)
disable('back')
else
enable('back')
end
if state.Warp.current == 'on' then
equip(sets.Warp)
disable('ring1')
disable('ring2')
else
enable('ring1')
enable('ring2')
end
if state.MP.current == 'on' then
equip(sets.MP)
disable('Waist')
disable('Ear1')
disable('back')
else
enable('Waist')
enable('Ear1')
enable('back')
end
if state.Weapon.current == 'on' then
disable('Main')
else
enable('Main')
end
if state.Neck.current == 'on' then
equip(sets.Neck)
disable('Neck')
else
enable('Neck')
end
return meleeSet
end
-- Function to display the current relevant user state when doing an update.
-- Set eventArgs.handled to true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
local msg = '[ Melee'
if state.CombatForm.has_value then
msg = msg .. ' (' .. state.CombatForm.value .. ')'
end
msg = msg .. ': '
msg = msg .. state.OffenseMode.value
if state.HybridMode.value ~= 'Normal' then
msg = msg .. '/' .. state.HybridMode.value
end
msg = msg .. ' ][ WS: ' .. state.WeaponskillMode.value .. ' ]'
if state.DefenseMode.value ~= 'None' then
msg = msg .. '[ Defense: ' .. state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ' ]'
end
if state.Kiting.value then
msg = msg .. '[ Kiting Mode: ON ]'
end
msg = msg .. ' ]'
add_to_chat(060, msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- User self-commands.
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function determine_haste_group()
classes.CustomMeleeGroups:clear()
if DW == true then
if DW_needed <= 1 then
classes.CustomMeleeGroups:append('MaxHaste')
elseif DW_needed > 1 and DW_needed <= 12 then
classes.CustomMeleeGroups:append('HighHaste')
elseif DW_needed > 12 and DW_needed <= 21 then
classes.CustomMeleeGroups:append('MidHaste')
elseif DW_needed > 21 and DW_needed <= 39 then
classes.CustomMeleeGroups:append('LowHaste')
elseif DW_needed > 39 then
classes.CustomMeleeGroups:append('')
end
end
end
function job_self_command(cmdParams, eventArgs)
gearinfo(cmdParams, eventArgs)
end
function gearinfo(cmdParams, eventArgs)
if cmdParams[1] == 'gearinfo' then
if type(tonumber(cmdParams[2])) == 'number' then
if tonumber(cmdParams[2]) ~= DW_needed then
DW_needed = tonumber(cmdParams[2])
DW = true
end
elseif type(cmdParams[2]) == 'string' then
if cmdParams[2] == 'false' then
DW_needed = 0
DW = false
end
end
if type(tonumber(cmdParams[3])) == 'number' then
if tonumber(cmdParams[3]) ~= Haste then
Haste = tonumber(cmdParams[3])
end
end
if type(cmdParams[4]) == 'string' then
if cmdParams[4] == 'true' then
moving = true
elseif cmdParams[4] == 'false' then
moving = false
end
end
if not midaction() then
job_update()
end
end
end
-- Automatically loads a Macro Set by: (Pallet,Book)
function select_default_macro_book()
if player.sub_job == 'BLU' then
set_macro_page(1, 2)
elseif player.sub_job == 'RUN' then
set_macro_page(2, 2)
elseif player.sub_job == 'WAR' then
set_macro_page(3, 2)
elseif player.sub_job == 'DNC' then
set_macro_page(9, 2)
elseif player.sub_job == 'NIN' then
set_macro_page(10, 2)
else
set_macro_page(1, 2)
end
end
function set_lockstyle()
send_command('wait 2; input /lockstyleset ' .. lockstyleset)
endThf: Code -- Initialization function for this job file.
function get_sets()
mote_include_version = 2
include('Mote-Include.lua')
end
-- Setup variables that are user-independent.
function job_setup()
state.CP = M(false, "Capacity Points Mode")
state.Warp = M(false, "Warp Mode")
state.TH = M(false, "Treasure Hunter")
lockstyleset = 1
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job.
-------------------------------------------------------------------------------------------------------------------
-- Gear Modes
function user_setup()
state.OffenseMode:options('Normal', 'Treasure')
state.HybridMode:options('Normal', 'MAX', 'Malignance', 'HIGH', 'MID', 'LOW')
-- Additional Key Binds.
send_command('bind ^` input /ja "Flee" <me>') --Ctrl'~'
send_command('bind f9 gs c cycle OffenseMode') --F9
send_command('bind f10 gs c cycle HybridMode') --F10
send_command('bind @c gs c toggle CP') --WindowKey'C'
send_command('bind @r gs c toggle Warp') --WindowKey'R'
send_command('bind @t gs c toggle TH') --WindowKey'T'
send_command('lua l gearinfo') --If you don't have GearInfo, Haste tiers won't work properly.
select_default_macro_book()
set_lockstyle()
Haste = 0
DW_needed = 0
DW = false
moving = false
update_combat_form()
determine_haste_group()
end
-- Erases the Key Binds above when you switch to another job.
function user_unload()
send_command('unbind ^`')
send_command('unbind @c')
send_command('unbind @r')
send_command('unbind @t')
send_command('gs enable all')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
------------------------------------------------------------------------------------------------
---------------------------------------- Precast Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.precast.FC = {
ammo="Sapience Orb", --2
head={ name="Herculean Helm", augments={'Mag. Acc.+11 "Mag.Atk.Bns."+11','"Fast Cast"+6','STR+5','"Mag.Atk.Bns."+12',}}, --13
neck="Orunmila's Torque", --5
Ear1="Etiolation Earring", --1
Ear2="Loquacious Earring", --2
Body="Taeon Tabard", --9
Hands="Leyline Gloves", --8
Ring1="", --Rahab Ring --2
Ring2="Prolix Ring", --2
back="", --JSE --10
Waist="",
legs={ name="Herculean Trousers", augments={'"Mag.Atk.Bns."+3','"Fast Cast"+6','Mag. Acc.+10',}}, --6
feet={ name="Herculean Boots", augments={'"Fast Cast"+5',}}, --5
} --65
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {body="Passion Jacket",neck="Magoraga Beads"})
------------------------------------------------------------------------------------------------
------------------------------------- Weapon Skill Sets ----------------------------------------
------------------------------------------------------------------------------------------------
sets.precast.WS = {
ammo="Aurgelmir Orb +1",
head="Adhemar Bonnet +1 +1",
neck="Asperity Necklace",
ear1="Brutal Earring",
ear2="Sherida Earring",
body="Rawhide Vest",
hands="",
ring1="Epona's Ring",
ring2="Ilabrat Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
waist="Fotia Belt",
legs="Samnuha Tights",
feet={ name="Herculean Boots", augments={'Accuracy+23 Attack+23','"Store TP"+2','STR+15','Accuracy+15','Attack+4',}}
}
sets.precast.WS['Evisceration'] = {
ammo="Yamarang",
head="Adhemar Bonnet +1",
neck="Fotia Gorget",
left_ear="Moonshade Earring",
right_ear="Odr Earring",
body="Meg. Cuirie +2",
hands="Mummu Wrists +2",
left_ring="Epona's Ring",
right_ring="Mummu Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
waist="Fotia Belt",
legs="Lustratio Subligar",
feet={ name="Herculean Boots", augments={'Attack+29','Crit.hit rate+5','STR+2',}}
}
sets.precast.WS['Rudra\'s Storm'] = {
ammo="Yamarang",
head={ name="Herculean Helm", augments={'Attack+6','Weapon skill damage +4%','DEX+7','Accuracy+10',}},
body={ name="Herculean Vest", augments={'Weapon skill damage +5%','STR+4','Accuracy+11','Attack+14',}},
hands="Meg. Gloves +2",
legs="Lustratio Subligar",
feet={ name="Herculean Boots", augments={'Attack+29','Weapon skill damage +5%','DEX+8','Accuracy+7',}},
neck="Caro Necklace",
waist="Grunfeld Rope",
left_ear="Sherida Earring",
right_ear="Moonshade Earring",
left_ring="Epona's Ring",
right_ring="Ilabrat Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
}
sets.precast.WS['Aeolian Edge'] = {
ammo="Pemphredo Tathlum",
head={ name="Herculean Helm", augments={'"Mag.Atk.Bns."+25','Crit. hit damage +1%','INT+3',}},
body={ name="Samnuha Coat", augments={'Mag. Acc.+13','"Mag.Atk.Bns."+14','"Fast Cast"+3','"Dual Wield"+4',}},
hands="Leyline Gloves",
legs={ name="Herculean Trousers", augments={'"Mag.Atk.Bns."+23','"Fast Cast"+4',}},
feet={ name="Herculean Boots", augments={'"Mag.Atk.Bns."+25','Weapon skill damage +4%',}},
neck="Sanctity Necklace",
waist="Eschan Stone",
left_ear="Friomisi Earring",
right_ear="Hecate's Earring",
left_ring="Acumen Ring",
right_ring="Ilabrat Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
}
------------------------------------------------------------------------------------------------
----------------------------------------- Idle Sets --------------------------------------------
------------------------------------------------------------------------------------------------
sets.idle = {
ammo="Yamarang",
head="Malignance Chapeau", --6DT
neck="Loricate Torque +1", --6DT
ear1="Odnowa Earring",
ear2="Odnowa Earring +1",
body="Emet Harness +1", --6PDT
hands="Malignance Gloves", --5DT
ring2="Vocane Ring", --7DT
ring1="Defending Ring", --10DT
back="Moonbeam Cape", --5DT
waist="Flume Belt +1", --4PDT
legs="Mummu Kecks +2", --5DT
feet="Jute Boots +1",
} --44DT --10PDT
sets.idle.Town = {
ammo="Aurgelmir Orb +1",
head="Malignance Chapeau",
neck="Anu Torque",
ear1="Sherida Earring",
ear2="Telos Earring",
body="Adhemar Jacket +1",
hands="Malignance Gloves",
ring2="Ilabrat Ring",
ring1="Gere Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
waist="Windbuffet Belt +1",
legs="Mummu Kecks +2",
feet="Jute Boots +1",
}
------------------------------------------------------------------------------------------------
---------------------------------------- Engaged Sets ------------------------------------------
------------------------------------------------------------------------------------------------
-- This is a Set that would only be used when you are NOT Dual Wielding. Most likely Airy Buckler Builds with Fencer as War Sub.
-- There are no haste parameters set for this build, because you wouldn't be juggling DW gear, you would always use the same gear, other than Damage Taken sets which ARE included below.
sets.engaged = {
}
------------------------------------------------------------------------------------------------
-------------------------------------- Dual Wield Sets -----------------------------------------
------------------------------------------------------------------------------------------------
-- * THF Native DW Trait: 25% DW
-- * THF Job Points DW Gift: 5% DW
-- No Magic Haste (49% DW to cap)
sets.engaged.DW = {
ammo="Aurgelmir Orb +1",
head="Adhemar Bonnet +1",
neck="Ej Necklace",
ear1="Eabani Earring", --4
ear2="Suppanomimi", --5
body="Adhemar Jacket +1", --6
hands="Adhemar Wrist. +1",
ring1="Gere Ring",
ring2="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}}, --10
waist="Reiki Yotai", --7
legs="Samnuha Tights",
feet="Plunderer's Poulaines +1",
} -- 32% 1063Acc
-- 15% Magic Haste (42% DW to cap)
sets.engaged.DW.LowHaste = {
ammo="Aurgelmir Orb +1",
head="Adhemar Bonnet +1",
neck="Ej Necklace",
ear1="Eabani Earring", --4
ear2="Suppanomimi", --5
body="Adhemar Jacket +1", --6
hands="Adhemar Wrist. +1",
ring1="Gere Ring",
ring2="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}},
waist="Reiki Yotai", --7
legs="Samnuha Tights",
feet="Plunderer's Poulaines +1",
} -- 32%
-- 30% Magic Haste (30% DW to cap)
sets.engaged.DW.MidHaste = {
ammo="Aurgelmir Orb +1",
head="Adhemar Bonnet +1",
neck="Ej Necklace",
ear1="Eabani Earring", --4
ear2="Suppanomimi", --5
body="Mummu Jacket +2",
hands="Adhemar Wrist. +1",
ring1="Gere Ring",
ring2="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','"Dual Wield"+10',}}, --10
waist="Reiki Yotai", --7
legs="Samnuha Tights",
feet="Plunderer's Poulaines +1",
} -- 26%
-- 40% Magic Haste (11% DW to cap)
sets.engaged.DW.HighHaste = {
ammo="Aurgelmir Orb +1",
head="Adhemar Bonnet +1",
neck="Ej Necklace",
ear1="Eabani Earring", --4
ear2="Sherida Earring",
body="Mummu Jacket +2",
hands="Adhemar Wrist. +1",
ring1="Gere Ring",
ring2="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
waist="Reiki Yotai", --7
legs="Samnuha Tights",
feet="Plunderer's Poulaines +1",
} -- 11%
-- 45% Magic Haste (1% DW to cap)
sets.engaged.DW.MaxHaste = {
ammo="Aurgelmir Orb +1",
head="Adhemar Bonnet +1",
neck="Anu Torque",
ear1="Brutal Earring",
ear2="Sherida Earring",
body="Mummu Jacket +2",
hands="Adhemar Wrist. +1",
ring1="Gere Ring",
ring2="Epona's Ring",
back={ name="Toutatis's Cape", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10',}},
waist="Windbuffet Belt +1",
legs="Samnuha Tights",
feet="Plunderer's Poulaines +1",
} -- 0%
------------------------------------------------------------------------------------------------
---------------------------------------- Hybrid Sets -------------------------------------------
------------------------------------------------------------------------------------------------
-- Define tiers of Defense Taken. These sets are cycled with the F10 Button.
sets.engaged.DT1 = {neck="Loricate Torque +1",ring1="Defending Ring"} --16%
sets.engaged.DT2 = {neck="Loricate Torque +1",ring1="Defending Ring",ring2="Vocane Ring",body="Emet Harness +1"} --29%
sets.engaged.DT3 = {neck="Loricate Torque +1",ring1="Defending Ring",ring2="Vocane Ring",body="Emet Harness +1",back="Moonbeam Cape",waist="Flume Belt +1",legs="Mummu Kecks +2"} --43%
sets.engaged.DT4 = {neck="Loricate Torque +1",ring1="Defending Ring",ring2="Vocane Ring",body="Emet Harness +1",back="Moonbeam Cape",waist="Flume Belt +1",legs="Mummu Kecks +2",head="Malignance Chapeau",hands="Malignance Gloves",feet="Malignance Boots",}
sets.engaged.DT5 = {head="Malignance Chapeau",body="Malignance Tabard",hands="Malignance Gloves",legs="Malignance Tights",feet="Malignance Boots",} --6,?,5,?,4 --15%
-- No Haste DW
sets.engaged.LOW = set_combine(sets.engaged, sets.engaged.DT1)
sets.engaged.MID = set_combine(sets.engaged, sets.engaged.DT2)
sets.engaged.HIGH = set_combine(sets.engaged, sets.engaged.DT3)
sets.engaged.MAX = set_combine(sets.engaged, sets.engaged.DT4)
sets.engaged.Malignance = set_combine(sets.engaged, sets.engaged.DT5)
-- No Haste DW
sets.engaged.DW.LOW = set_combine(sets.engaged.DW, sets.engaged.DT1)
sets.engaged.DW.MID = set_combine(sets.engaged.DW, sets.engaged.DT2)
sets.engaged.DW.HIGH = set_combine(sets.engaged.DW, sets.engaged.DT3)
sets.engaged.DW.MAX = set_combine(sets.engaged.DW, sets.engaged.DT4)
sets.engaged.DW.Malignance = set_combine(sets.engaged.DW, sets.engaged.DT5)
-- Low Haste DW
sets.engaged.DW.LOW.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT1)
sets.engaged.DW.MID.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT3)
sets.engaged.DW.MAX.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT4)
sets.engaged.DW.Malignance.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.DT5)
-- Mid Haste
sets.engaged.DW.LOW.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT1)
sets.engaged.DW.MID.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT3)
sets.engaged.DW.MAX.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT4)
sets.engaged.DW.Malignance.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.DT5)
-- High Haste
sets.engaged.DW.LOW.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT1)
sets.engaged.DW.MID.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT3)
sets.engaged.DW.MAX.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT4)
sets.engaged.DW.Malignance.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.DT5)
-- Max Haste
sets.engaged.DW.LOW.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT1)
sets.engaged.DW.MID.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT2)
sets.engaged.DW.HIGH.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT3)
sets.engaged.DW.MAX.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT4)
sets.engaged.DW.Malignance.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.DT5)
------------------------------------------------------------------------------------------------
---------------------------------------- Special Sets ------------------------------------------
------------------------------------------------------------------------------------------------
sets.Warp = {ring1="Dim. Ring (Holla)",ring2="Warp Ring",ear1="Reraise Earring",}
sets.CP = {back="Mecisto. Mantle"}
sets.TH = {hands="Plunderer's Armlets +1",feet="Skulker's Poulaines +1",} --6
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
function job_precast(spell, action, spellMap, eventArgs)
if spellMap == 'Utsusemi' then
if buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)'] then
cancel_spell()
add_to_chat(123, '**!! '..spell.english..' Canceled: [3+ IMAGES] !!**')
eventArgs.handled = true
return
elseif buffactive['Copy Image'] or buffactive['Copy Image (2)'] then
send_command('cancel 66; cancel 444; cancel Copy Image; cancel Copy Image (2)')
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
function job_handle_equipping_gear(playerStatus, eventArgs)
update_combat_form()
determine_haste_group()
end
function job_update(cmdParams, eventArgs)
handle_equipping_gear(player.status)
end
function update_combat_form()
if DW == true then
state.CombatForm:set('DW')
elseif DW == false then
state.CombatForm:reset()
end
end
function customize_idle_set(idleSet)
if state.CP.current == 'on' then
equip(sets.CP)
disable('back')
else
enable('back')
end
if state.Warp.current == 'on' then
equip(sets.Warp)
disable('ring1')
disable('ring2')
disable('ear1')
else
enable('ring1')
enable('ring2')
enable('ear1')
end
if state.TH.current == 'on' then
equip(sets.TH)
disable('Feet')
disable('Hands')
else
enable('Feet')
enable('Hands')
end
return idleSet
end
function customize_melee_set(meleeSet)
if state.CP.current == 'on' then
equip(sets.CP)
disable('back')
else
enable('back')
end
if state.Warp.current == 'on' then
equip(sets.Warp)
disable('ring1')
disable('ring2')
else
enable('ring1')
enable('ring2')
end
if state.TH.current == 'on' then
equip(sets.TH)
disable('Feet')
disable('Hands')
else
enable('Feet')
enable('Hands')
end
return meleeSet
end
-- Function to display the current relevant user state when doing an update.
-- Set eventArgs.handled to true if display was handled, and you don't want the default info shown.
function display_current_job_state(eventArgs)
local msg = '[ Melee'
if state.CombatForm.has_value then
msg = msg .. ' (' .. state.CombatForm.value .. ')'
end
msg = msg .. ': '
msg = msg .. state.OffenseMode.value
if state.HybridMode.value ~= 'Normal' then
msg = msg .. '/' .. state.HybridMode.value
end
msg = msg .. ' ][ WS: ' .. state.WeaponskillMode.value .. ' ]'
if state.DefenseMode.value ~= 'None' then
msg = msg .. '[ Defense: ' .. state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ' ]'
end
if state.Kiting.value then
msg = msg .. '[ Kiting Mode: ON ]'
end
msg = msg .. ' ]'
add_to_chat(060, msg)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function determine_haste_group()
classes.CustomMeleeGroups:clear()
if DW == true then
if DW_needed <= 1 then
classes.CustomMeleeGroups:append('MaxHaste')
elseif DW_needed > 1 and DW_needed <= 12 then
classes.CustomMeleeGroups:append('HighHaste')
elseif DW_needed > 12 and DW_needed <= 21 then
classes.CustomMeleeGroups:append('MidHaste')
elseif DW_needed > 21 and DW_needed <= 39 then
classes.CustomMeleeGroups:append('LowHaste')
elseif DW_needed > 39 then
classes.CustomMeleeGroups:append('')
end
end
end
function job_self_command(cmdParams, eventArgs)
gearinfo(cmdParams, eventArgs)
end
function gearinfo(cmdParams, eventArgs)
if cmdParams[1] == 'gearinfo' then
if type(tonumber(cmdParams[2])) == 'number' then
if tonumber(cmdParams[2]) ~= DW_needed then
DW_needed = tonumber(cmdParams[2])
DW = true
end
elseif type(cmdParams[2]) == 'string' then
if cmdParams[2] == 'false' then
DW_needed = 0
DW = false
end
end
if type(tonumber(cmdParams[3])) == 'number' then
if tonumber(cmdParams[3]) ~= Haste then
Haste = tonumber(cmdParams[3])
end
end
if type(cmdParams[4]) == 'string' then
if cmdParams[4] == 'true' then
moving = true
elseif cmdParams[4] == 'false' then
moving = false
end
end
if not midaction() then
job_update()
end
end
end
-- Automatically loads a Macro Set by: (Pallet,Book)
function select_default_macro_book()
if player.sub_job == 'SAM' then
set_macro_page(1, 8)
elseif player.sub_job == 'WAR' then
set_macro_page(2, 8)
elseif player.sub_job == 'RUN' then
set_macro_page(3, 8)
elseif player.sub_job == 'BLU' then
set_macro_page(4, 8)
elseif player.sub_job == 'DNC' then
set_macro_page(9, 8)
elseif player.sub_job == 'NIN' then
set_macro_page(10, 8)
else
set_macro_page(1, 8)
end
end
function set_lockstyle()
send_command('wait 2; input /lockstyleset ' .. lockstyleset)
endLakshmi.Rooks said: » Here's what I used when I played. It should be as simple as following the directions and plugging in your gear, but if you use it, let me know if you have any trouble. Geddylee81 said: » Thank you for posting this! Is the console.exe command in my macros still needed to execute this? I'm assuming so? No. That's the benefit of Gearswap. Your macros would be exactly what they normally would be in game. /ma "Cure" <t> and it handles everything on the backend for pre, mid, post, idle, etc. Hello fellow vanadiel adventurers!! currently was pulled back into the world of Vanadiel by my son after a 5yr retirement. He grew up watching me play the wonderful game that is FFXI. Now, he wanted ol' pops to play with him for the first time. I created a new account to run through the game with him however, I literally forgot about gearswap. So, I ask my fellow community if you could bestow upon me a good gearswap template for THF and for PLD. Thank you!!!!
|
|
|
All FFXI content and images © 2002-2025 SQUARE ENIX CO., LTD. FINAL
FANTASY is a registered trademark of Square Enix Co., Ltd.
|
||
