Back After 5yrs. Anyone Have Gearswap Templates? |
||
|
Back after 5yrs. Anyone have gearswap templates?
Offline
Posts: 5
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) end Thf: 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) end 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. Offline
Posts: 5
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) end Thf: 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) end Offline
Posts: 5
Lakshmi.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-2024 SQUARE ENIX CO., LTD. FINAL
FANTASY is a registered trademark of Square Enix Co., Ltd.
|