|
SIRD Set, Question, and Gearswap
Quetzalcoatl.Chanceikin
Server: Quetzalcoatl
Game: FFXI
Posts: 138
By Quetzalcoatl.Chanceikin 2018-07-31 14:28:45
First and foremost allow me to apologize as I know if I were to sort through the deepest recesses of the forums I could probably gather this information. That being said, this post may serve to help many as I doubt I will be alone in my curiosity regarding this topic.
At first I wasn't really interested in a SIRD (Spell Interruption Rate Down) set, because I already have a crap-ton of PLD gear. I have already tanked and beaten everything a PLD can tank (Tumult Curator being the only thing in the game I haven't killed). Hell, I haven't even looked into my PLD lua in a while because it just hasn't been necessary to playing the job. Basically lazy. Now that I'm back from a small hiatus and I'm playing on PLD again, I noticed that I have a use for a SIRD set and want to implement it. For example, we did a run where the PLD was zombie'ing, but RR was down for the rest of the party and the tank (not me) didn't have a SIRD set.. so they couldn't raise the whm.
So here are the questions:
1. Can someone please present the best SIRD set available (Remember I apologized beforehand)?
2. I notice from my initial information gathering that people seem to be making the SIRD set on top of Midcast.. shouldn't it be on the precast? Or does it have to be part of both to completely mitigate interrupts?
3. Using a basic motes style lua, how do I implement a toggle that will switch to SIRD sets? I am fairly decent with lua, but would like to make sure I'm doing this right. It's not binding the toggle, it's properly naming precast and midcast sets with the binded toggle to work properly. Please include all pertinent info and I can plug it in where it belongs. If necessary, I can link my current working lua to this topic - just let me know.
Thanks in advance!
Ragnarok.Martel
Server: Ragnarok
Game: FFXI
Posts: 3002
By Ragnarok.Martel 2018-07-31 14:34:15
2: The SIRD check occurs when the mob hits you. And precast gear is only equipped for the veeery start of the cast. With the way gearswap handles precast and midcast it's effectively impossible to get hit in precast gear.
So, SIRD gear needs to be equipped in midcast. Which means that you have to make some sacrifices to fit said gear it. Depending on what you're casting this could cost you potency, or recast reduction or enmity, etc. You have to decide what matters more. getting the cast off successfully, or having full potency.
[+]
Server: Asura
Game: FFXI
Posts: 1446
By Asura.Toralin 2018-07-31 14:43:38
ItemSet 360350
96% gear + 10% in merits = 106%
Fill in Enmity/HP/Enhancing in the other slots based on what you want to cast
[+]
By Boshi 2018-07-31 15:04:32
Eschite (escha-Z pld gear) path C is also
Magic Evasion+15
Spell Interruption Rate-15%
Enmity+7
Ragnarok.Martel
Server: Ragnarok
Game: FFXI
Posts: 3002
By Ragnarok.Martel 2018-07-31 15:49:12
Or you could use Odyssean feet(20%) and free up back and hands.
Server: Asura
Game: FFXI
Posts: 1446
By Asura.Toralin 2018-07-31 16:01:35
Or you could use Odyssean feet(20%) and free up back and hands. Yeah but then your going to smoke your HP down to 2700, I use those pieces regal/back because it keeps my HP above 3000. Odyssean gear is great if properly augmented but I use it sparingly based on how terrible the HP is
[+]
Quetzalcoatl.Chanceikin
Server: Quetzalcoatl
Game: FFXI
Posts: 138
By Quetzalcoatl.Chanceikin 2018-07-31 16:10:31
Still nice to have options, I totally appreciate all of your guy's advice here. The Toralin set is optimal, but the suggestions are good for stuff I can pull together really fast.
If only some genius would tell me how to properly set it so I can toggle SIRD off and on in GS.
Assuming that I set modes SIRD on and off.. make a toggle bind.. but how do I make the sets work?
Like sets.midcast.Raise
and
sets.midcast.sird.Raise
or would you do sets.midcast.sird = sets.midcast(combine .. and just plugin the SIRD pieces to ALL midcast?
Above being an example. I'm not at home to test it out, have a half-written lua waiting for me as it is.
Server: Leviathan
Game: FFXI
Posts: 3753
By Leviathan.Celebrindal 2018-07-31 16:30:23
Could do what mages do with differing levels of magic accuracy. Set up a keybind to toggle the tiers, one tier being
sets.midcast.spellname
And another being
sets.midcast.interrupt.spellname
The "interrupt" I'd just a suggestion. You could call it sets.midcast.silly.spellname if you really wanted to. When I get home I'll pull the commands you'll need to add and where to create this tier system, unless a more versed person posts first ;)
[+]
Ragnarok.Martel
Server: Ragnarok
Game: FFXI
Posts: 3002
By Ragnarok.Martel 2018-07-31 16:30:53
Or you could use Odyssean feet(20%) and free up back and hands. Yeah but then your going to smoke your HP down to 2700, I use those pieces regal/back because it keeps my HP above 3000. Odyssean gear is great if properly augmented but I use it sparingly based on how terrible the HP is A valid concern. And something I might consider, if I had regal gauntlets. -.-;
For me, maintaining high HP is something I toggle, as I don't see 3k+ HP as needed for all content. Much Like SIRD.
Come to think of it, I don't think I've addressed how those two toggles interact. I imagine it would knock my HP down fairly significantly. My typical goal for SIRD is to hit cap using as few slots as possible to reduce how badly SIRD gimps spell potency. Adjusting for high HP is going to be... annoying.
Quetzalcoatl.Chanceikin
Server: Quetzalcoatl
Game: FFXI
Posts: 138
By Quetzalcoatl.Chanceikin 2018-07-31 16:38:19
Or you could use Odyssean feet(20%) and free up back and hands. Yeah but then your going to smoke your HP down to 2700, I use those pieces regal/back because it keeps my HP above 3000. Odyssean gear is great if properly augmented but I use it sparingly based on how terrible the HP is A valid concern. And something I might consider, if I had regal gauntlets. -.-;
For me, maintaining high HP is something I toggle, as I don't see 3k+ HP as needed for all content. Much Like SIRD.
Come to think of it, I don't think I've addressed how those two toggles interact. I imagine it would knock my HP down fairly significantly. My typical goal for SIRD is to hit cap using as few slots as possible to reduce how badly SIRD gimps spell potency. Adjusting for high HP is going to be... annoying.
My current turtle set has like 2800 HPs and I have never had a problem. I'm going to up that number if I can organically, but being in that ballpark is actually kind of beneficial because the most I lose switching to any set is like 5-10 hps. I do have some low hp sets, like CDC midcast, but I just don't use CDC when I tank (Savage Blade is better anyway at a loss of 10 hps)
Necro Bump Detected!
[309 days between previous and next post]
Phoenix.Mikumaru
Server: Phoenix
Game: FFXI
Posts: 382
By Phoenix.Mikumaru 2019-06-05 12:16:14
Sup sup. I was wondering how to write a mote lua that would have SIRD for the full cast. I appreciate the theory that its impossible to get hit in precast, but when you're in Dynamis D or Omen and holding 5+ monsters, if SIRD isnt on the whole time, you get interrupted most of the time. I've tried to code it that precast and mid cast are the same set but this seems to break the lua entirely forcing the SIRD set to be always equipped.any help with would be appreciated. Also swap out the Ambuscade cape for the halzqsomething earring and use Moonbeam Cape, less HP fluctuations.
Bahamut.Nebohh
Server: Bahamut
Game: FFXI
Posts: 156
By Bahamut.Nebohh 2019-06-05 15:35:38
My guess is that your precast isn't equipping properly OR you don't have a high enough fast cast set (cap 80%).
You can check this by turning on showswaps (//gs showswaps).
If it is swapping in your precast gear, check to make sure you have a high enough fast cast set.
Otherwise, if you're still having problems and want both precast and midcast the same, just set your SIRD set to be both the precast and midcast for the spell you're using.
Code
sets.SIRD = {your gear here}
sets.precast.Phalanx = sets.SIRD
sets.midcast.Phalanx = sets.SIRD
By soralin 2019-06-05 16:23:39
Yeah I will hold 40+ mobs when cleaving on Paladin and my spells never get interrupted. It sounds like your lua/gearswap is just malfunctioning.
You do know you need 103% SIRD total to cap right (technically 103% but due to rounding its often 103%, kinda like how you generally need 26% gear haste)
Server: Sylph
Game: FFXI
Posts: 184
By Sylph.Subadai 2019-06-05 23:19:04
Try using set_combine() to make your midcast the same as precast:
sets.midcast.SIRD = set_combine(sets.precast.SIRD, {})
Necro Bump Detected!
[127 days between previous and next post]
Phoenix.Mikumaru
Server: Phoenix
Game: FFXI
Posts: 382
By Phoenix.Mikumaru 2019-10-11 06:08:08
Back again!
Need a hand with some coding
if target == 'Self' and spell.type == 'Cure' then
equip(sets.midcast.Cure.Self) -- Cure Self Gear Set
elseif target =='Self' and spell.type == 'Cure' then
equip(sets.midcast.Cure) -- Cure Others Gear Set
end
This doesnt work, any cure cast default to sets.midcast.Cure, what need to be done to fix it?
Bismarck.Snprphnx
Server: Bismarck
Game: FFXI
Posts: 2715
By Bismarck.Snprphnx 2019-10-11 06:18:54
Back again!
Need a hand with some coding
if target == 'Self' and spell.type == 'Cure' then
equip(sets.midcast.Cure.Self) -- Cure Self Gear Set
elseif target =='Self' and spell.type == 'Cure' then
equip(sets.midcast.Cure) -- Cure Others Gear Set
end
This doesnt work, any cure cast default to sets.midcast.Cure, what need to be done to fix it?
Line 1 to 2, saying if target is self and you’re casting cure, then equip miscast.Cure.self
Line 3 to 4, still has Self as Target, and now has miscast.Curr set.
By Artsncrafts 2019-10-11 07:03:20
if target == 'Self' and spell.type == 'Cure' then
equip(sets.midcast.Cure.Self) -- Cure Self Gear Set
elseif spell.type == 'Cure' then
equip(sets.midcast.Cure) -- Cure Others Gear Set
end
Ragnarok.Martel
Server: Ragnarok
Game: FFXI
Posts: 3002
By Ragnarok.Martel 2019-10-11 07:32:45
'Cure' is not a valid spell.type. spell.type refers to magic or ja categories, like WhiteMagic, or JobAbility. Since Cure is not a valid type, that rule will never pass.
Furthermore, 'target' is not a valid variable. so unless you're defining 'target' elsewhere in the lua, that should also never parse as true. If you want to check for Self targeted spells, you should use spell.target.type. then SELF would be valid.
I have to wonder what's changing your gear for cures at all, because neither of those should ever work.
Please refer to Windower4\addons\GearSwap\beta_examples_and_information\Variables.xlsx for a list of valid variables you can check against.
Phoenix.Mikumaru
Server: Phoenix
Game: FFXI
Posts: 382
By Phoenix.Mikumaru 2019-10-11 08:15:34
if target == 'Self' and spell.type == 'Cure' then
equip(sets.midcast.Cure.Self) -- Cure Self Gear Set
elseif spell.type == 'Cure' then
equip(sets.midcast.Cure) -- Cure Others Gear Set
end I'll give this a try, thnx too much.
I dont get any errors about XXX being a nil command, which I have gotten previously with syntax like white magic. I've never read through any of the beta stuff but considering that literally every single mage lua I have ever seen has a Sets.xxx.Cure and Sets.xxx.Curaga, Cure spells are not only defined but separated from single target and AoE. The only thing that seems likely to give trouble is the targeting, as mentioned, but baby steps for the noob coder, por favor.
Thnx forbrhe input guys, I'll let you know how this pans out.
Ragnarok.Martel
Server: Ragnarok
Game: FFXI
Posts: 3002
By Ragnarok.Martel 2019-10-11 09:14:31
gearswap is highly customizable. So it's possible that your lua is one that redefines spell.type and adds cure as a type. Anf it may have defined target as somethign as well. It's just not a gearswap default, so you can't expect it to work in any gearswap lua.
Motenten(Kinematics) lua would be a good example of lua with a ton of non default variables and mappings.
Phoenix.Mikumaru
Server: Phoenix
Game: FFXI
Posts: 382
By Phoenix.Mikumaru 2019-10-11 23:05:28
Update:
this is what worked for anyone interested in this type of function
Quote: function job_post_midcast(spell, action, spellMap, eventArgs)
if spell.target.type=="SELF" and spell.skill == 'Healing Magic' then
equip(sets.midcast.Cure.Self) -- Cure Self Gear Set
elseif spell.target.type=="Not Self" and spell.skill == 'Healing Magic' then
equip(sets.midcast.Cure) -- Cure Others Gear Set
end
end
Necro Bump Detected!
[585 days between previous and next post]
By Yzen 2021-05-19 02:49:41
Would anyone mind sharing their PLD LUA that includes SIRD rules and gear built in for /BLU and general spell casting -- Unfortunately, a lot of the older public posts dont seem to have SIRD built into their LUA - thank you!
Server: Asura
Game: FFXI
Posts: 415
By Asura.Cambion 2021-05-19 03:15:34
Would anyone mind sharing their PLD LUA that includes SIRD rules and gear built in for /BLU and general spell casting -- Unfortunately, a lot of the older public posts dont seem to have SIRD built into their LUA - thank you!
If you aren't familiar with the toggles and cycling, this one may be more than you bargain for, but in the grand scheme it's not a very complex or fancy lua.
Casting Modes are set for both SIRD and HPBAL (Where I don't let my HP fluctuate more than ~500 between all abilities and spells.) These are toggled with F11.
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')
state.IdleMode:options('Normal', 'DT', 'Eva')
-- 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={ name="Rudianos's Mantle", augments={'"Fast Cast"+10',}}, --10FC
Ring2="Eihwaz Ring", --70HP
} --68FC 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="Sakpata's Helm", --7
Body="Sakpata's Breastplate", --10
Hands="Sakpata's Gauntlets", --8
Legs="Sakpata's Cuisses", --9
feet="Sulevia's Leggings +2",
neck="Fotia Gorget",
waist="Fotia Belt",
ear1="Moonshade Earring",
ear2="Thrud Earring",
Ring1="Epaminondas's Ring",
Ring2="Hetairoi Ring",
back={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%',}},
}
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="Sakpata's Helm", --7
Body="Sakpata's Breastplate", --10
Hands="Sakpata's Gauntlets", --8
Legs="Sakpata's Cuisses", --9
feet="Sulevia's Leggings +2",
neck="Lacono Necklace +1",
waist="Fotia Belt",
ear1="Moonshade Earring",
ear2="Thrud Earring",
Ring1="Epaminondas's Ring",
Ring2="Hetairoi Ring",
back={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%',}},
}
sets.precast.WS['Aeolian Edge'] = {
ammo="Pemphredo Tathlum",
head="Nyame Helm", --30
body="Nyame Mail", --30
hands="Nyame Gauntlets", --30
legs="Nyame Flanchard", --30
feet="Nyame Sollerets", --30
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={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%',}},
}
--------------------------------------- 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
Legs="Sakpata's Cuisses", --5
} --20 Need to DarkMatter Ody Head and Body!
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.DT = {Legs="Souveran Diechlings +1"}
sets.idle.Eva = {
head="Nyame Helm", --30
body="Nyame Mail", --30
hands="Nyame Gauntlets", --30
legs="Nyame Flanchard", --30
feet="Nyame Sollerets", --30
}
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="Sakpata's Helm", --7
Body="Sakpata's Breastplate", --10
Hands="Sakpata's Gauntlets", --8
Legs="Sakpata's Cuisses", --9
Feet="Sakpata's Leggings", --6
neck="Vim Torque +1",
waist="Sailfi Belt +1",
ear1="Cessance Earring",
ear2="Brutal Earring",
Ring1="Petrov Ring",
Ring2="Hetairoi Ring",
back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"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 = {Ammo="Amar Cluster",Neck="Decimus Torque",Waist="Eschan Stone"} --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="Sakpata's Helm", --7
Body="Sakpata's Breastplate", --10
Hands="Sakpata's Gauntlets", --8
Legs="Sakpata's Cuisses", --9
Feet="Sakpata's Leggings", --6
neck="Vim Torque +1",
waist="Sailfi Belt +1",
ear1="Telos Earring",
ear2="Brutal Earring",
Ring1="Petrov Ring",
Ring2="Hetairoi Ring",
back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10',}},
} --40
sets.engaged.DT2 = {
Ammo="Aurgelmir Orb +1",
Neck="Asperity Necklace",
ear1="Telos Earring",
ear2="Brutal Earring",
Ring1="Defending Ring", --10
Ring2="Hetairoi Ring",
back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Dbl.Atk."+10',}},
Waist="Sailfi Belt +1",
Head="Sakpata's Helm", --7
Body="Sakpata's Breastplate", --10
Hands="Sakpata's Gauntlets", --8
Legs="Sakpata's Cuisses", --9
Feet="Sakpata's Leggings", --6
} --50DT
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={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"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
By Yzen 2021-05-19 09:27:58
Much appreciated Cambion -- I'll just have to play with the toggles etc and do my best to work it out. This is helpful and a great place to start -- thanks!
First and foremost allow me to apologize as I know if I were to sort through the deepest recesses of the forums I could probably gather this information. That being said, this post may serve to help many as I doubt I will be alone in my curiosity regarding this topic.
At first I wasn't really interested in a SIRD (Spell Interruption Rate Down) set, because I already have a crap-ton of PLD gear. I have already tanked and beaten everything a PLD can tank (Tumult Curator being the only thing in the game I haven't killed). Hell, I haven't even looked into my PLD lua in a while because it just hasn't been necessary to playing the job. Basically lazy. Now that I'm back from a small hiatus and I'm playing on PLD again, I noticed that I have a use for a SIRD set and want to implement it. For example, we did a run where the PLD was zombie'ing, but RR was down for the rest of the party and the tank (not me) didn't have a SIRD set.. so they couldn't raise the whm.
So here are the questions:
1. Can someone please present the best SIRD set available (Remember I apologized beforehand)?
2. I notice from my initial information gathering that people seem to be making the SIRD set on top of Midcast.. shouldn't it be on the precast? Or does it have to be part of both to completely mitigate interrupts?
3. Using a basic motes style lua, how do I implement a toggle that will switch to SIRD sets? I am fairly decent with lua, but would like to make sure I'm doing this right. It's not binding the toggle, it's properly naming precast and midcast sets with the binded toggle to work properly. Please include all pertinent info and I can plug it in where it belongs. If necessary, I can link my current working lua to this topic - just let me know.
Thanks in advance!
|
|