(Don't) Fear The Reaper: A Dark Knight Guide

Eorzea Time
 
 
 
言語: JP EN FR DE
日本語版のFFXIVPRO利用したい場合は、上記の"JP"を設定して、又はjp.ffxivpro.comを直接に利用してもいいです
users online
フォーラム » FFXI » Jobs » Dark Knight » (Don't) Fear the Reaper: A Dark Knight Guide
(Don't) Fear the Reaper: A Dark Knight Guide
First Page 2 3 ... 180 181 182 ... 209 210 211
Offline
Posts: 9078
By SimonSes 2019-12-20 15:19:44  
Felgarr said: »
I'm able to reach 602 Scythe skill with Ratri +1 head/body/feet; Does this have any benefit, given the recent changes to Scythe damage calculations?

Just the regular benefits of combat skill. Its not hand to hand.
 Asura.Botosi
Offline
サーバ: Asura
Game: FFXI
user: Botosi
Posts: 375
By Asura.Botosi 2019-12-20 16:26:47  
Do Heathen Pants need to be worn during JA Activation or during Drain in order to take effect? You'd think I'd know this being a r15 Calad Drk, but..... no.
 Asura.Nuance
Offline
サーバ: Asura
Game: FFXI
user: Crion
Posts: 397
By Asura.Nuance 2019-12-20 16:28:48  
Activation of the JA only.

Only the relic head has to be actually worn to get the effects of the augment for seal
 Asura.Botosi
Offline
サーバ: Asura
Game: FFXI
user: Botosi
Posts: 375
By Asura.Botosi 2019-12-20 16:30:21  
Asura.Nuance said: »
Activation of the JA only.

Only the relic head has to be actually worn to get the effects of the augment for seal

Awesome, thanks!
 Asura.Madpyro
Offline
サーバ: Asura
Game: FFXI
Posts: 12
By Asura.Madpyro 2019-12-20 19:17:01  
can some one post a updated lua link please
Offline
Posts: 356
By Galkapryme 2019-12-26 22:20:16  
Asura.Madpyro said: »
can some one post a updated lua link please

Here's mine. I didn't create it, but I suppose I reconfigured it a bit, and it includes relatively updated gear. I forget who the original author was. NOTE: There are still some things I have yet to acquire, and some aspects of the lua that I haven't touched because I don't use them.
Code
--[[     
=== Features ===
If you want auto Reive detection for Ygnas Resolve+1, and Gavialis Helm for some of your WS, then you will need my User-Globals.lua
Otherwise, you might be able to get away without it.  (not tested)
If you don't use organizer, then remove the include('organizer-lib') in get_sets() and remove sets.Organizer
This lua has a few MODES you can toggle with hotkeys or macros, and there's a few situational RULES that activate without hotkeys
::MODES::
SouleaterMode 
Status: OFF by default. 
Hotkey: Toggle this with @F9 (window key + F9). 
Macro: /console gs c togggle SouleaterMode
Notes: This mode makes it possible to use Souleater in situations where you would normally avoid using it. When SouleaterMode 
is ON, Souleater will be canceled automatically after the first Weaponskill used. CAVEAT -. If Bloodweapon 
is active, or if Drain's HP Boost buff is active, then Souleater will remain active until the next WS used after 
either buff wears off. 
CapacityMode
Status: OFF by default. 
Hotkey: with ALT + = 
Macro: /console cs c toggle CapacityMode
Notes: It will full-time whichever piece of gear you specify in sets.CapacityMantle 
Extra Info: You can change the default (true|false) status of any MODE by changing their values in job_setup()
::RULES::
Gavialis helm
Status: enabled
Setting: set use_gavialis = true below in job_setup. 
Notes: Gavialis Helm will automatically be used for all weaponskills on their respective days of the week. If you would like to 
exclude a weapon skill, you must add it to wsList below. (found in job_setup) You also need my User-Globals.lua for this
to even work. 
Ygna's Resolve +1 
Status: enabled in Reive
Setting: n/a
Notes: Will automatically be used when you're in a reive. If you have my User-Globals.lua this will work
with all your jobs that use mote's includes. Not just this one! 
Moonshade earring
Status: Not used for WS's at 3000 TP. 
Setting: n/a
You can hit F12 to display custom MODE status as well as the default stuff. 
Single handed weapons are handled in the sets.engaged.SW set. (sword + shield, etc.)
::NOTES::
My sets have a specific order, or they will not function correctly. 
sets.engaged.[CombatForm][CombatWeapon][Offense or HybridMode][CustomMeleeGroups or CustomClass]
CombatForm = Haste, DW, SW
CombatWeapon = GreatSword, Scythe, Apocalypse, Ragnarok, Caladbolg, Liberator, Anguta
OffenseMode = Mid, Acc
HybridMode = PDT
CustomMeleeGroups = AM3, AM, Haste
CustomClass = OhShit 
CombatForm Haste is used when Last Resort + Hasso AND either Haste, March, Indi-Haste Geo-Haste is on you.
CombatForm DW will activate with /dnc or /nin AND a weapon listed in drk_sub_weapons equipped offhand. 
SW is active with an empty sub-slot, or a shield listed in the shields = S{} list.  
CombatWeapon GreatSword will activate when you equip a GS listed in gsList in job_setup(). 
CombatWeapon Scythe will activate when you equip a Scythe listed in scytheList in job_setup(). 
Weapons that do not fall into these groups, or have sets by weapon name, will use default sets.engaged
most gear sets derrive themselves from sets.engaged, so try to keep it updated. It's much smarter to derrive sets than to 
completely re-invent each gear set for every weapon. Let your gear inherit. Less code written means less errors. 
CustomMeleeGroups AM3 will activate when Aftermath lvl 3 is up, and CustomMeleeGroups AM will activate when relic Aftermath is up.
There are no empy AM sets for now.
--]]
--
-- Initialization function for this job file.
function get_sets()
    mote_include_version = 2
    -- Load and initialize the include file.
    include('Mote-Include.lua')
    include('organizer-lib')
end


-- Setup vars that are user-independent.
function job_setup()
    state.CapacityMode = M(false, 'Capacity Point Mantle')

    include('Mote-TreasureHunter')
    state.TreasureMode:set('Tag')

    state.Buff.Souleater = buffactive.souleater or false
    state.Buff['Last Resort'] = buffactive['Last Resort'] or false
    -- Set the default to false if you'd rather SE always stay acitve
    state.SouleaterMode = M(false, 'Soul Eater Mode')
    -- state.LastResortMode = M(false, 'Last Resort Mode')
    -- Use Gavialis helm?
    use_gavialis = true

    -- Weaponskills you do NOT want Gavialis helm used with (only considered if use_gavialis = true)
    wsList = S{'Spiral Hell', 'Catastrophe', 'Torcleaver', 'Insurgency', 'Quietus', 'Cross Reaper'}
    -- Greatswords you use. 
    gsList = S{'Malfeasance', 'Macbain', 'Nanadaka', 'Mekosuchus Blade', 'Ragnarok', 'Raetic Algol', 'Raetic Algol +1', 'Caladbolg', 'Montante +1', 'Albion' }
    scytheList = S{'Liberator', 'Apocalypse', 'Anguta', 'Raetic Scythe', 'Deathbane', 'Twilight Scythe' }
    remaWeapons = S{'Apocalypse', 'Anguta', 'Liberator', 'Caladbolg', 'Ragnarok'}

    shields = S{'Rinda Shield'}
    -- Mote has capitalization errors in the default Absorb mappings, so we use our own
    absorbs = S{'Absorb-STR', 'Absorb-DEX', 'Absorb-VIT', 'Absorb-AGI', 'Absorb-INT', 'Absorb-MND', 'Absorb-CHR', 'Absorb-Attri', 'Absorb-ACC', 'Absorb-TP'}
    -- Offhand weapons used to activate DW mode
    swordList = S{"Sangarius", "Sangarius +1", "Usonmunku", "Perun +1", "Tanmogayi", "Naegling"}

    get_combat_form()
    get_combat_weapon()
    update_melee_groups()
end


-- Setup vars that are user-dependent.  Can override this function in a sidecar file.
function user_setup()
    -- Options: Override default values
    state.OffenseMode:options('Normal','STP','DA')
    state.WeaponskillMode:options('Normal', 'Mid', 'Acc')
    state.CastingMode:options('Normal', 'Acc')
    state.IdleMode:options('Town', 'Normal', 'Regen', 'Refresh', 'Weak')
    state.RestingMode:options('Normal')
    state.PhysicalDefenseMode:options('PDT', 'Reraise')
    state.MagicalDefenseMode:options('MDT')
	state.HybridMode:options('Normal', 'PDT')

    war_sj = player.sub_job == 'WAR' or false

    -- Additional local binds
    send_command('bind ^= gs c cycle treasuremode')
    send_command('bind != gs c toggle CapacityMode')
    send_command('bind @f9 gs c toggle SouleaterMode')
    send_command('bind !- gs equip sets.crafting')
	send_command('bind f1 gs c cycle OffenseMode')
	send_command('bind f10 gs c cycle PhysicalDefenseMode')
	send_command('bind f11 gs c cycle MagicalDefenseMode')
	send_command('bind f2 gs c cycle IdleMode')
    --send_command('bind ^` gs c toggle LastResortMode')

    select_default_macro_book()
end

-- Called when this job file is unloaded (eg: job change)
function file_unload()
    send_command('unbind ^`')
    send_command('unbind !=')
    send_command('unbind ^[')
    send_command('unbind ![')
    send_command('unbind @f9')
	send_command('unbind f1')
end


-- Define sets and vars used by this job file.
function init_gear_sets()
    --------------------------------------
    -- Start defining the sets
    --------------------------------------
    -- Augmented gear
    Niht = {name="Niht Mantle", augments={'Attack+10','Dark magic skill +8','"Drain" and "Aspir" potency +25'}}

    Ankou = {}
    Ankou.FC  = { name="Ankou's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+9','"Fast Cast"+10','Spell interruption rate down-4%',}}
    Ankou.STP = { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+5','"Store TP"+10','Damage taken-5%',}}
    Ankou.DA  = { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+2','"Dbl.Atk."+10',}}
    Ankou.WSD = { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%','Damage taken-5%',}}
    Ankou.VIT = { name="Ankou's Mantle", augments={'VIT+1', 'Haste +10%',}}
	Ankou.INT = { name="Ankou's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Spell interruption rate down-10%',}}

	Odyssean = {}
	Odyssean.Head = { name="Odyssean Helm", augments={'"Mag.Atk.Bns."+12','Pet: Crit.hit rate +4','Chance of successful block +4','Mag. Acc.+19 "Mag.Atk.Bns."+19',}}
    Odyssean.Body = { name="Odyss. Chestplate", augments={'"Mag.Atk.Bns."+24','"Fast Cast"+4','STR+1','Accuracy+13',}}
    Odyssean.Hands = { name="Odyssean Gauntlets", augments={'"Dbl.Atk."+2','INT+13','Accuracy+12 Attack+12','Mag. Acc.+17 "Mag.Atk.Bns."+17',}}
    Odyssean.Legs = { name="Odyssean Cuisses", augments={'INT+2','Potency of "Cure" effect received+4%','Accuracy+17 Attack+17','Mag. Acc.+17 "Mag.Atk.Bns."+17',}}
    Odyssean.Feet = { name="Odyssean Greaves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','AGI+7','"Mag.Atk.Bns."+3',}}

    sets.TreasureHunter = {waist="Chaac Belt" }
     
    sets.Organizer = {}

    sets.precast.JA['Diabolic Eye'] = {hands="Fallen's Finger Gauntlets +3"}
    sets.precast.JA['Nether Void']  = {legs="Heathen's Flanchard +1"}
    sets.precast.JA['Dark Seal']    = {head="Fallen's burgeonet +3"}
    sets.precast.JA['Souleater']    = {head="Ignominy burgeonet +3"}
    sets.precast.JA['Weapon Bash']   = {hands="Ignominy Gauntlets +2",left_ring="Slayer's Ring"} --Skillchain Property
    sets.precast.JA['Blood Weapon'] = {body="Fallen's Cuirass +3"}
    sets.precast.JA['Last Resort']  = {feet="Fallen's Sollerets +3"}

    sets.WSDayBonus      = { head="Gavialis Helm" }
    sets.WSBack          = Ankou.WSD
    
    -- Earring considerations, given Lugra's day/night stats 
    sets.BrutalLugra     = { ear1="Brutal Earring", ear2="Lugra Earring" }
    sets.IshvaraLugra     = { ear1="Ishvara Earring", ear2="Lugra Earring" }
    sets.Lugra           = { ear1="Lugra Earring" }
    sets.Brutal          = { ear1="Brutal Earring" }
    sets.Ishvara          = { ear1="Ishvara Earring" }

    -- Waltz set (chr and vit) 
    -- sets.precast.Waltz = {}

    -- Fast cast sets for spells
    sets.precast.FC = {
    ammo="Impatiens",
    head={ name="Carmine Mask", augments={'Accuracy+10','DEX+10','MND+15',}},
    body={ name="Fall. Cuirass +3", augments={'Enhances "Blood Weapon" effect',}},
    hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
    legs="Arjuna Breeches",
    feet={ name="Carmine Greaves +1", augments={'MP+80','INT+12','MND+12',}},
    neck="Erra Pendant",
    waist="Austerity Belt +1",
    back=Ankou.INT,
    }

    sets.precast.FC['Elemental Magic'] = sets.precast.FC
    sets.precast.FC['Enfeebling Magic'] = sets.precast.FC
	sets.precast.FC['Dark Magic'] = set_combine(sets.precast.FC, {head={ name="Fall. Burgeonet +3", augments={'Enhances "Dark Seal" effect',}}})

    
    -- Midcast Sets
    sets.midcast.FastRecast =  sets.precast.FC

    
    -- sets.midcast.Trust =  {
    --     head={ name="Carmine Mask", augments={'Accuracy+10','DEX+10','MND+15',}},
    --     hands="Leyline Gloves",
    --     body="Fallen's Cuirass +3",
    --     legs="Arjuna Breeches",
    --     feet="Carmine Greaves +1"
    -- }
    sets.midcast["Apururu (UC)"] = set_combine(sets.midcast.Trust, {
        body="Apururu Unity shirt",
    })

    -- Specific spells
    sets.midcast.Utsusemi = sets.precast.FC

    sets.midcast['Dark Magic'] = {
    ammo="Strobilus",
    head="Pixi Hairpin +1",
    body={ name="Fall. Cuirass +3", augments={'Enhances "Blood Weapon" effect',}},
    hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}},
    legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}},
    feet="Ratri Sollerets +1",
    neck="Erra Pendant",
    waist="Austerity Belt +1",
    left_ear="Friomisi Earring",
    right_ear="Crematio Earring",
    left_ring="Archon Ring",
    right_ring="Evanescence Ring",
	back=Ankou.INT,
    }
    sets.midcast.Endark = sets.midcast['Dark Magic'] 

    sets.midcast['Dark Magic'].Acc = set_combine(sets.midcast['Dark Magic'], {
        head="Ratri Sallet +1", -- 45 macc
        hands="Ratri gadlings +1" -- 44 macc
        })

    sets.midcast['Enfeebling Magic'] = {
        ammo="Strobilus", 
        head={ name="Fall. Burgeonet +3", augments={'Enhances "Dark Seal" effect',}},
        neck="Erra Pendant", -- Dark Magic Skill 10 + 17 macc
        body="Ignominy Cuirass +3",
        hands="Ratri gadlings +1", -- 44 macc
        ring1="Stikini Ring +1", -- 11 macc
        ring2="Kishar Ring",
        waist="Austerity Belt +1",
        legs="Fallen's Flanchard +3",  -- Dark Magic Skill 18 + 39macc
        back=Ankou.INT,
        feet="Flamma Gambieras +2"
    }

    sets.midcast['Elemental Magic'] = {
        ammo="Strobilus", 
        head={ name="Odyssean Helm", augments={'"Mag.Atk.Bns."+12','Pet: Crit.hit rate +4','Chance of successful block +4','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
        neck="Eddy Necklace", -- macc 5, 11 matk
        ear1="Friomisi Earring", -- 10 matk
        right_ear="Crematio Earring", -- matk 6, mdmg +6
        body={ name="Fall. Cuirass +3", augments={'Enhances "Blood Weapon" effect',}}, -- macc 40, matk 60
        hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}}, -- macc 38, matk 62
        ring1="Fenrir Ring +1", -- macc/matk 3, mdmg 5
        ring2="Fenrir Ring +1", -- macc/matk 3, mdmg 5
        waist="Austerity Belt +1", -- macc/matk 7
        legs={ name="Odyssean Cuisses", augments={'INT+2','Potency of "Cure" effect received+4%','Accuracy+17 Attack+17','Mag. Acc.+17 "Mag.Atk.Bns."+17',}},
        back=Ankou.INT, -- macc 29, mdmg 20
        feet="Heathen's Sollerets +1" -- macc/matk 20, Occult Acumen 30
}
    -- Mix of HP boost, -Spell interruption%, and Dark Skill
    sets.midcast['Dread Spikes'] = set_combine(sets.midcast['Dark Magic'], {
        ammo="Strobilus",
        head="Ignominy Burgonet +3", -- 17
        left_ear="Friomisi Earring",
    right_ear="Crematio Earring",
        body="Heathen's Cuirass +1",
        hands="Fallen's Finger Gauntlets +3",
        back=Ankou.INT,
    })
    sets.midcast['Dread Spikes'].Acc = set_combine(sets.midcast['Dark Magic'], {
        body="Heathen's Cuirass +1",
        hands="Fallen's Finger Gauntlets +3"
    })

    -- Drain spells 
    sets.midcast.Drain = sets.midcast['Dark Magic']
    sets.midcast.Aspir = sets.midcast.Drain

    sets.midcast.Drain.Acc = set_combine(sets.midcast.Drain, {
        hands="Leyline Gloves",
        waist="Eschan Stone", -- macc/matk 7
    })
    sets.midcast.Aspir.Acc = sets.midcast.Drain.Acc

    sets.midcast.Drain.OhShit = set_combine(sets.midcast.Drain, {
        legs="Carmine Cuisses",
        feet="Ratri Sollerets +1"
	})

    -- Absorbs
    sets.midcast.Absorb = set_combine(sets.midcast['Dark Magic'], {
        head="Ignominy Burgonet +3", -- Absorb duration 20
		feet="Ratri Sollerets +1",
		ring2="Kishar Ring",
        back=Ankou.INT,
        })

    sets.midcast['Absorb-TP'] = set_combine(sets.midcast.Absorb, {
        hands="Heathen's Gauntlets +1",
        ring2="Kishar Ring",
    })

    sets.midcast['Absorb-TP'].Acc = set_combine(sets.midcast.Absorb.Acc, {
        hands="Heathen's Gauntlets +1",
        ring2="Kishar Ring",
    })
    sets.midcast.Absorb.Acc = set_combine(sets.midcast['Dark Magic'].Acc, {
        head="Flamma Zucchetto +2", -- 44 macc
        back=Ankou.INT,
        hands="Ratri gadlings +1",
        ring2="Kishar Ring",
	})

    -- Ranged for xbow
    sets.precast.RA = {}
    sets.midcast.RA = {}

    -- WEAPONSKILL SETS
    -- General sets
	-- Balanced (Acc and WSD) WSD +74
    sets.precast.WS = {
    ammo="Knobkierrie", --WSD +6
    head={ name="Fall. Burgeonet +3", augments={'Enhances "Dark Seal" effect',}},
    body="Ignominy Cuirass +3", --WSD +10
    hands="Ratri Gadlings +1", --WSD +8
    legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}}, --WSD +10
    feet="Ratri Sollerets +1", --WSD +8
    neck="Fotia Gorget", --WSA/WSD +10
    waist="Fotia Belt", --WSA/WSD +10
    left_ear="Telos Earring",
    right_ear="Ishvara Earring", --WSD +2
    left_ring="Chirich Ring",
    right_ring="Ifrit Ring +1",
    back=Ankou.WSD, -- WSD +10
	}
	
	-- CATASTROPHE
	-- 40% STR/40% INT
	-- +68% Catastrophe Damage
	sets.precast.WS['Catasrophe'] = {
    main="Apocalypse",
    sub="Utu Grip",
    ammo="Knobkierrie",
    head="Ratri Sallet +1",
    body="Ignominy Cuirass +3",
    hands="Rat. Gadlings +1",
    legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}},
    feet="Rat. Sollerets +1",
    neck="Abyssal Beads +2",
    waist="Fotia Belt",
    left_ear="Ishvara Earring",
    right_ear="Lugra Earring +1",
    left_ring="Niqmaddu Ring",
    right_ring="Ifrit Ring +1",
    back=Ankou.WSD,
}
		
    -- RESOLUTION
    -- 86-100% STR
    sets.precast.WS.Resolution = sets.precast.WS
    sets.precast.WS.Resolution.Acc = sets.precast.WS

    -- TORCLEAVER 
    -- VIT 80%
    sets.precast.WS.Torcleaver = sets.precast.WS
	
    sets.precast.WS.Torcleaver.Mid = set_combine(sets.precast.WS.Mid, {
        neck="Abyssal Bead Necklace +2",
    })
    sets.precast.WS.Torcleaver.Acc = sets.precast.WS.Torcleaver.Mid

    -- INSURGENCY
    -- 20% STR / 20% INT 
    -- Base set only used at 3000TP to put AM3 up
    sets.precast.WS.Insurgency = set_combine(sets.precast.WS, {head="Ratri Sallet +1"})
	   
    -- CROSS REAPER
    -- 60% STR / 60% MND
    sets.precast.WS['Cross Reaper'] = sets.precast.WS
    
    -- ENTROPY
    -- 86-100% INT 
    sets.precast.WS['Entropy'] = {
	ammo="Knobkierrie",
    head={ name="Odyssean Helm", augments={'"Mag.Atk.Bns."+12','Pet: Crit.hit rate +4','Chance of successful block +4','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
    body={ name="Fall. Cuirass +3", augments={'Enhances "Blood Weapon" effect',}},
    hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}},
    legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}},
    feet="Ratri Sollerets +1",
    neck="Fotia Gorget",
    waist="Fotia Belt",
    left_ear="Friomisi Earring",
    right_ear="Ishvara Earring",
    left_ring="Fenrir Ring +1",
    right_ring="Stikini Ring +1",
    back=Ankou.WSD,
    }
    

    -- Quietus
    -- 60% STR / MND 
    sets.precast.WS['Quietus'] = sets.precast.WS['Catastrophe']
    
    -- SPIRAL HELL
    -- 50% STR / 50% INT 
    sets.precast.WS['Spiral Hell'] = sets.precast.WS['Catastrophe']

    -- SHADOW OF DEATH
    -- 40% STR 40% INT - Darkness Elemental
    sets.precast.WS['Shadow of Death'] = set_combine(sets.precast.WS['Entropy'], {
        head="Pixie Hairpin +1",
        neck="Eddy Necklace",
        })

    sets.precast.WS['Shadow of Death'].Mid = set_combine(sets.precast.WS['Shadow of Death'], sets.precast.WS.Mid, {
    })
    sets.precast.WS['Shadow of Death'].Acc = set_combine(sets.precast.WS['Shadow of Death'], sets.precast.WS.Acc, {
    })

    -- DARK HARVEST 
    -- 40% STR 40% INT - Darkness Elemental
    sets.precast.WS['Dark Harvest'] = sets.precast.WS['Shadow of Death']
    sets.precast.WS['Dark Harvest'].Mid = set_combine(sets.precast.WS['Shadow of Death'], {head="Ignominy Burgeonet +3", feet="Heathen's Sollerets +1"})
    sets.precast.WS['Dark Harvest'].Acc = set_combine(sets.precast.WS['Shadow of Death'], {head="Ignominy Burgeonet +3", feet="Heathen's Sollerets +1"})

    -- Sword WS's
    -- SANGUINE BLADE
    -- 50% MND / 50% STR Darkness Elemental
    sets.precast.WS['Sanguine Blade'] = set_combine(sets.precast.WS, {
        head="Pixie Hairpin +1",
        neck="Eddy Necklace",
        ear1="Friomisi Earring",
        body="Fallen's Cuirass +3",
        hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}},
        back=Ankou.WSD,
        feet="Heathen's Sollerets +1"
    })
    sets.precast.WS['Sanguine Blade'].Mid = set_combine(sets.precast.WS['Sanguine Blade'], sets.precast.WS.Mid)
    sets.precast.WS['Sanguine Blade'].Acc = set_combine(sets.precast.WS['Sanguine Blade'], sets.precast.WS.Acc)

    -- REQUISCAT
    -- 73% MND - breath damage
    sets.precast.WS.Requiescat = set_combine(sets.precast.WS, {
        head="Flamma Zucchetto +2",
        neck="Abyssal Bead Necklace +2",
        body="Ignominy Cuirass +3",
        hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}},
        waist="Fotia Belt",
    })
    sets.precast.WS.Requiescat.Mid = set_combine(sets.precast.WS.Requiscat, sets.precast.WS.Mid)
    sets.precast.WS.Requiescat.Acc = set_combine(sets.precast.WS.Requiscat, sets.precast.WS.Acc)

    -- Idle sets
    sets.idle.Town = {
		ranged="Mengado",
		head="Hjarrandi Helm",
        neck="Sanctity Necklace",
        body="Hjarrandi Breast.",
        hands="Sulevia's Gauntlets +2",
		left_ear="Telos Earring",
		right_ear="Cessance Earring",
        ring1="Chirich Ring +1",
        ring2="Stikini Ring +1",
        waist="Ioskeha Belt +1",
        legs="Carmine Cuisses",
        feet={ name="Fall. Sollerets +3", augments={'Enhances "Desperate Blows" effect',}},
		back=Ankou.STP,
    }

    sets.idle.Field = {
	head="Hjarrandi Helm", -- Haste 3%
    body="Hjarrandi Breast.", -- Haste 1%
    hands="Sulev. Gauntlets +2", -- Haste 3%
    legs="Carmine Cuisses",
    feet={ name="Fall. Sollerets +3", augments={'Enhances "Desperate Blows" effect',}},
    neck="Sanctity Necklace",
    waist="Flume Belt +1",
    left_ear="Telos Earring",
    right_ear="Cessance Earring",
    left_ring="Stikini Ring +1",
    right_ring="Chirich Ring +1",
    back=Ankou.VIT
    }
    sets.idle.Regen = set_combine(sets.idle.Field, {
        neck="Sanctity Necklace",
        body="Lugra Cloak +1",
        ring1="Chirich Ring +1",
		ring2="Chirish Ring +1"
    })
    sets.idle.Refresh = set_combine(sets.idle.Regen, {
        neck="Bale Choker",
		left_ring="Stikini Ring +1",
		right_ring="Stikini Ring +1"
    })

    sets.idle.Weak = set_combine(sets.defense.PDT, sets.Reraise)
	

    -- Defense sets
    sets.defense.PDT = {
    ammo="Brigantia Pebble", 
    head="Hjarrandi Helm", -- Haste 3%
    body="Hjarrandi Breast.", -- Haste 1%
    hands="Sulev. Gauntlets +2", -- Haste 3%
    legs="Sulev. Cuisses +2", -- Haste 2%
    feet="Sulev. Leggings +2", -- Haste 1%
    neck="Loricate Torque +1",
    waist="Flume Belt +1",
    left_ear="Thureous Earring",
    right_ear="Impreg. Earring",
    left_ring="Defending Ring",
    right_ring="Paguroidea Ring",
    back=Ankou.WSD,
    }
    sets.defense.Reraise = set_combine(sets.idle.Weak, {head="Twilight Helm",body="Twilight Mail"})

    sets.defense.MDT = set_combine(sets.defense.PDT, {ammo="Vanir Battery",waist="Asklepian Belt"})

    sets.Kiting = {
        legs="Carmine Cuisses",
    }

    sets.Reraise = {head="Twilight Helm",body="Twilight Mail"}
	

    
    -- Base set (global catch-all set)
	
    sets.engaged = {
    ammo="Ginsen",
    head="Hjarrandi Helm",
    body="Hjarrandi Breast.",
    hands="Sulev. Gauntlets +2",
    legs="Sulev. Cuisses +2",
    feet="Sulev. Leggings +2",
    neck="Abyssal Beads +2",
    waist="Ioskeha Belt +1",
    left_ear="Telos Earring",
    right_ear="Cessance Earring",
    left_ring="Chirich Ring +1",
    right_ring={name="Chirich Ring +1", bag="Wardrobe 3", priority=1},
    back=Ankou.STP,
}

	sets.engaged.STP = {
	ammo="Ginsen",
    head="Sulevia's Mask +2",
    body="Hjarrandi Breast.",
    hands="Flam. Manopolas +2",
    legs="Flamma Dirs +2",
    feet="Flam. Gambieras +2",
    neck="Abyssal Beads +2",
    waist="Kentarch Belt +1",
    left_ear="Telos Earring",
    right_ear="Cessance Earring",
    left_ring="Chirich Ring +1",
    right_ring="Chirich Ring +1",
    back=Ankou.STP,
}

    sets.engaged.DA = {
	ammo="Ginsen",
    head="Hjarrandi Helm",
    body="Hjarrandi Breast.",
    hands="Sulev. Gauntlets +2",
    legs="Ig. Flanchard +2",
    feet="Flam. Gambieras +2",
    neck="Abyssal Beads +2",
    waist="Ioskeha Belt +1",
    left_ear="Brutal Earring",
    right_ear="Cessance Earring",
    left_ring="Chirich Ring +1",
    right_ring="Chirich Ring +1",
    back=Ankou.DA,
}


	

	
    -- dual wield
	
    sets.engaged.DW = set_combine(sets.engaged, {
        waist="Patentia Sash",
        legs="Carmine Cuisses",
    })
    sets.engaged.DW.Mid = set_combine(sets.engaged.DW, {
        neck="Abyssal Bead Necklace +2",
    })
    

    -- single wield (sword + shield possibly)
	
    sets.engaged.SW = {}
    sets.engaged.SW.Mid = set_combine(sets.engaged.Mid, {})
    sets.engaged.SW.Acc = set_combine(sets.engaged.Acc, {})

    sets.engaged.Reraise = set_combine(sets.engaged, {
        head="Twilight Helm",
        neck="Loricate Torque +1",
        body="Twilight Mail"
    })

    sets.buff.Souleater = { 
        head="Ignominy Burgonet +3",
        --body="Ratri Breastplate",
    }

    sets.buff['Last Resort'] = { 
    feet="Fallen's Sollerets +3" 
    }
end

function job_pretarget(spell, action, spellMap, eventArgs)
    if spell.type:endswith('Magic') and buffactive.silence then
        eventArgs.cancel = true
        send_command('input /item "Echo Drops" <me>')
    end
end

function job_pretarget(spell, action, spellMap, eventArgs)
    if spell.type:endswith('Magic') and buffactive.cursed then
        eventArgs.cancel = true
        send_command('input /item "Holy Water" <me>')
    end
end

-- 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)
    aw_custom_aftermath_timers_precast(spell)
end

function job_post_precast(spell, action, spellMap, eventArgs)
    local recast = windower.ffxi.get_ability_recasts()
    -- Make sure abilities using head gear don't swap 
    if spell.type:lower() == 'weaponskill' then
        -- handle Gavialis Helm
        -- if use_gavialis then
        --     if is_sc_element_today(spell) then
        --         if wsList:contains(spell.english) then
        --             -- do nothing
        --         else
        --             equip(sets.WSDayBonus)
        --         end
        --     end
        -- end
        -- CP mantle must be worn when a mob dies, so make sure it's equipped for WS.
        if state.CapacityMode.value then
            equip(sets.CapacityMantle)
        end

        -- if spell.english == 'Entropy' and recast[95] == 0 then
        --     eventArgs.cancel = true
        --     send_command('@wait 4.0;input /ja "Consume Mana" <me>')
        --     --windower.chat.input:schedule(1, '/ws "Entropy" <t>')
        --     return
        -- end

        if player.tp > 2999 then
            if wsList:contains(spell.english) then
                equip(sets.IshvaraLugra)
            else
                equip(sets.BrutalLugra)
            end
        else -- use Lugra + moonshade
            if world.time >= (17*60) or world.time <= (7*60) then
                equip(sets.Lugra)
            else
                if wsList:contains(spell.english) then
                    equip(sets.Ishvara)
                else
                    equip(sets.Brutal)
                end
            end
        end
    end
end

-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_midcast(spell, action, spellMap, eventArgs)
end

-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
    if spell.english:startswith('Drain') then
        if player.status == 'Engaged' and state.CastingMode.current == 'Normal' and player.hpp < 70 then
            classes.CustomClass = 'OhShit'
        end
    end

    if (state.HybridMode.current == 'PDT' and state.PhysicalDefenseMode.current == 'Reraise') then
        equip(sets.Reraise)
    end
end

-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
    aw_custom_aftermath_timers_aftercast(spell)
    if state.Buff[spell.english] ~= nil then
        state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
    end
end

function job_post_aftercast(spell, action, spellMap, eventArgs)
    if spell.type == 'WeaponSkill' then
        if state.Buff.Souleater and state.SouleaterMode.value then
            send_command('@wait 1.0;cancel souleater')
            --enable("head")
        end
    end
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-- Called before the Include starts constructing melee/idle/resting sets.
-- Can customize state or custom melee class values at this point.
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_handle_equipping_gear(status, eventArgs)
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
    if player.mpp < 70 then
        idleSet = set_combine(idleSet, sets.idle.Refresh)
    end
    if player.hpp < 70 then
        idleSet = set_combine(idleSet, sets.idle.Regen)
    end
    if state.IdleMode.current == 'Sphere' then
        idleSet = set_combine(idleSet, sets.idle.Sphere)
    end
    if state.HybridMode.current == 'PDT' then
        idleSet = set_combine(idleSet, sets.defense.PDT)
    end
    return idleSet
end

-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
    if state.TreasureMode.value == 'Fulltime' then
        meleeSet = set_combine(meleeSet, sets.TreasureHunter)
    end
    if state.CapacityMode.value then
        meleeSet = set_combine(meleeSet, sets.CapacityMantle)
    end
    if state.Buff['Souleater'] then
        meleeSet = set_combine(meleeSet, sets.buff.Souleater)
    end
    --meleeSet = set_combine(meleeSet, select_earring())
    return meleeSet
end

-------------------------------------------------------------------------------------------------------------------
-- General hooks for other events.
-------------------------------------------------------------------------------------------------------------------

-- Called when the player's status changes.
function job_status_change(newStatus, oldStatus, eventArgs)
    if newStatus == "Engaged" then
        --if state.Buff['Last Resort'] then
        --    send_command('@wait 1.0;cancel hasso')
        --end
        -- handle weapon sets
    if remaWeapons:contains(player.equipment.main) then
        state.CombatWeapon:set(player.equipment.main)
    end
        -- if gsList:contains(player.equipment.main) then
        --     state.CombatWeapon:set("GreatSword")
        -- elseif scytheList:contains(player.equipment.main) then
        --     state.CombatWeapon:set("Scythe")
        -- elseif remaWeapons:contains(player.equipment.main) then
        --     state.CombatWeapon:set(player.equipment.main)
        -- else -- use regular set, which caters to Liberator
        --     state.CombatWeapon:reset()
        -- end
        --elseif newStatus == 'Idle' then
        --    determine_idle_group()
    end
end

-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)

    if state.Buff[buff] ~= nil then
        handle_equipping_gear(player.status)
    end

    if S{'haste', 'march', 'embrava', 'geo-haste', 'indi-haste', 'last resort'}:contains(buff:lower()) then
        if (buffactive['Last Resort']) then
            if (buffactive.embrava or buffactive.haste) and buffactive.march then
                state.CombatForm:set("Haste")
                if not midaction() then
                    handle_equipping_gear(player.status)
                end
            end
        else
            if state.CombatForm.current ~= 'DW' and state.CombatForm.current ~= 'SW' then
                state.CombatForm:reset()
            end
            if not midaction() then
                handle_equipping_gear(player.status)
            end
        end
    end
    -- Drain II/III HP Boost. Set SE to stay on.
    if buff == "Max HP Boost" and state.SouleaterMode.value then
        if gain or buffactive['Max HP Boost'] then
            state.SouleaterMode:set(false)
        else
            state.SouleaterMode:set(true)
        end
    end
    -- Make sure SE stays on for BW
    if buff == 'Blood Weapon' and state.SouleaterMode.value then
        if gain or buffactive['Blood Weapon'] then
            state.SouleaterMode:set(false)
        else
            state.SouleaterMode:set(true)
        end
    end
    -- AM custom groups
    if buff:startswith('Aftermath') then
        if player.equipment.main == 'Liberator' then
            classes.CustomMeleeGroups:clear()

            if (buff == "Aftermath: Lv.3" and gain) or buffactive['Aftermath: Lv.3'] then
                classes.CustomMeleeGroups:append('AM3')
                add_to_chat(8, '-------------Mythic AM3 UP-------------')
            -- elseif (buff == "Aftermath: Lv.3" and not gain) then
            --     add_to_chat(8, '-------------Mythic AM3 DOWN-------------')
            end

            if not midaction() then
                handle_equipping_gear(player.status)
            end
        else
            classes.CustomMeleeGroups:clear()

            if buff == "Aftermath" and gain or buffactive.Aftermath then
                classes.CustomMeleeGroups:append('AM')
            end

            if not midaction() then
                handle_equipping_gear(player.status)
            end
        end
    end
    
    -- if  buff == "Samurai Roll" then
    --     classes.CustomRangedGroups:clear()
    --     if (buff == "Samurai Roll" and gain) or buffactive['Samurai Roll'] then
    --         classes.CustomRangedGroups:append('SamRoll')
    --     end
       
    -- end

    --if buff == "Last Resort" then
    --    if gain then
    --        send_command('@wait 1.0;cancel hasso')
    --    else
    --        if not midaction() then
    --            send_command('@wait 1.0;input /ja "Hasso" <me>')
    --        end
    --    end
    --end
end


-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------

-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)

    war_sj = player.sub_job == 'WAR' or false
    get_combat_form()
    get_combat_weapon()
    update_melee_groups()
    select_default_macro_book()
end

-- State buff checks that will equip buff gear and mark the event as handled.
function check_buff(buff_name, eventArgs)
    if state.Buff[buff_name] then
        equip(sets.buff[buff_name] or {})
        if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
            equip(sets.TreasureHunter)
        end
        eventArgs.handled = true
    end
end
-- Check for various actions that we've specified in user code as being used with TH gear.
-- This will only ever be called if TreasureMode is not 'None'.
-- Category and Param are as specified in the action event packet.
--function th_action_check(category, param)
--    if category == 2 or -- any ranged attack
--        --category == 4 or -- any magic action
--        (category == 3 and param == 30) or -- Aeolian Edge
--        (category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
--        (category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
--        then 
--            return true
--    end
--end
-- function get_custom_wsmode(spell, spellMap, default_wsmode)
--     if state.OffenseMode.current == 'Mid' then
--         if buffactive['Aftermath: Lv.3'] then
--             return 'AM3Mid'
--         end
--     elseif state.OffenseMode.current == 'Acc' then
--         if buffactive['Aftermath: Lv.3'] then
--             return 'AM3Acc'
--         end
--     else
--         if buffactive['Aftermath: Lv.3'] then
--             return 'AM3'
--         end
--     end
-- end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function get_combat_form()

    if S{'NIN', 'DNC'}:contains(player.sub_job) and swordList:contains(player.equipment.main) then
        state.CombatForm:set("DW")
    --elseif player.equipment.sub == '' or shields:contains(player.equipment.sub) then
    elseif swordList:contains(player.equipment.main) then
        state.CombatForm:set("SW")
    elseif buffactive['Last Resort'] then
        if (buffactive.embrava or buffactive.haste) and buffactive.march then
            add_to_chat(8, '-------------Delay Capped-------------')
            state.CombatForm:set("Haste")
        else
            state.CombatForm:reset()
        end
    else
        state.CombatForm:reset()
    end
end

function get_combat_weapon()
    state.CombatWeapon:reset()
    if remaWeapons:contains(player.equipment.main) then
        state.CombatWeapon:set(player.equipment.main)
    end
    -- if remaWeapons:contains(player.equipment.main) then
    --     state.CombatWeapon:set(player.equipment.main)
    -- elseif gsList:contains(player.equipment.main) then
    --     state.CombatWeapon:set("GreatSword")
    -- elseif scytheList:contains(player.equipment.main) then
    --     state.CombatWeapon:set("Scythe")
    -- end
end

function aw_custom_aftermath_timers_precast(spell)
    if spell.type == 'WeaponSkill' then
        info.aftermath = {}

        local mythic_ws = "Insurgency"

        info.aftermath.weaponskill = mythic_ws
        info.aftermath.duration = 0

        info.aftermath.level = math.floor(player.tp / 1000)
        if info.aftermath.level == 0 then
            info.aftermath.level = 1
        end

        if spell.english == mythic_ws and player.equipment.main == 'Liberator' then
            -- nothing can overwrite lvl 3
            if buffactive['Aftermath: Lv.3'] then
                return
            end
            -- only lvl 3 can overwrite lvl 2
            if info.aftermath.level ~= 3 and buffactive['Aftermath: Lv.2'] then
                return
            end

            if info.aftermath.level == 1 then
                info.aftermath.duration = 90
            elseif info.aftermath.level == 2 then
                info.aftermath.duration = 120
            else
                info.aftermath.duration = 180
            end
        end
    end
end

-- Call from job_aftercast() to create the custom aftermath timer.
function aw_custom_aftermath_timers_aftercast(spell)
    if not spell.interrupted and spell.type == 'WeaponSkill' and
        info.aftermath and info.aftermath.weaponskill == spell.english and info.aftermath.duration > 0 then

        local aftermath_name = 'Aftermath: Lv.'..tostring(info.aftermath.level)
        send_command('timers d "Aftermath: Lv.1"')
        send_command('timers d "Aftermath: Lv.2"')
        send_command('timers d "Aftermath: Lv.3"')
        send_command('timers c "'..aftermath_name..'" '..tostring(info.aftermath.duration)..' down abilities/aftermath'..tostring(info.aftermath.level)..'.png')

        info.aftermath = {}
    end
end

function display_current_job_state(eventArgs)
    local msg = ''
    msg = msg .. 'Offense: '..state.OffenseMode.current
    msg = msg .. ', Hybrid: '..state.HybridMode.current

    if state.DefenseMode.value ~= 'None' then
        local defMode = state[state.DefenseMode.value ..'DefenseMode'].current
        msg = msg .. ', Defense: '..state.DefenseMode.value..' '..defMode
    end
    if state.CombatForm.current ~= '' then 
        msg = msg .. ', Form: ' .. state.CombatForm.current 
    end
    if state.CombatWeapon.current ~= '' then 
        msg = msg .. ', Weapon: ' .. state.CombatWeapon.current 
    end
    if state.CapacityMode.value then
        msg = msg .. ', Capacity: ON, '
    end
    if state.SouleaterMode.value then
        msg = msg .. ', SE Cancel, '
    end
    -- if state.LastResortMode.value then
    --     msg = msg .. ', LR Defense, '
    -- end
    if state.PCTargetMode.value ~= 'default' then
        msg = msg .. ', Target PC: '..state.PCTargetMode.value
    end
    if state.SelectNPCTargets.value then
        msg = msg .. ', Target NPCs'
    end

    add_to_chat(123, msg)
    eventArgs.handled = true
end

-- Set eventArgs.handled to true if we don't want the automatic display to be run.
-- Handle notifications of general user state change.
function job_state_change(stateField, newValue, oldValue)
end

-- Creating a custom spellMap, since Mote capitalized absorbs incorrectly
function job_get_spell_map(spell, default_spell_map)
    if spell.skill == 'Dark Magic' and absorbs:contains(spell.english) then
        return 'Absorb'
    end
    -- if spell.type == 'Trust' then
    --     return 'Trust'
    -- end
end

function select_earring()
    if world.time >= (17*60) or world.time <= (7*60) then
        return sets.Lugra
    else
        return sets.Brutal
    end
end

function update_melee_groups()

    classes.CustomMeleeGroups:clear()
    -- mythic AM	
    if player.equipment.main == 'Liberator' then
        if buffactive['Aftermath: Lv.3'] then
            classes.CustomMeleeGroups:append('AM3')
        end
    else
        -- relic AM
        if buffactive['Aftermath'] then
            classes.CustomMeleeGroups:append('AM')
        end
        -- if buffactive['Samurai Roll'] then
        --     classes.CustomRangedGroups:append('SamRoll')
        -- end
    end
end

function select_default_macro_book()
    -- Default macro set/book
        -- set_macro_page(5, 4)
    -- if player.sub_job == 'DNC' then
    --     set_macro_page(8, 4)
    if scytheList:contains(player.equipment.main) then
        set_macro_page(9, 8)
    elseif gsList:contains(player.equipment.main) then
        set_macro_page(1, 8)
    elseif player.sub_job == 'SAM' then
        set_macro_page(2, 8)
    elseif swordList:contains(player.equipment.main) then
        set_macro_page(7, 8)
    end
	end
Offline
Posts: 356
By Galkapryme 2019-12-26 22:27:58  
While that lua is far from perfect, you might note that I opted for certain pieces over others, despite having what, on the surface, looks like a better piece. Ex: I have feet pieces with +23 MAB, but I chose Heathen Feet +1 (20 MAB) because of the +30 Occult Acumen.
 Quetzalcoatl.Orestes
Offline
サーバ: Quetzalcoatl
Game: FFXI
user: Orestes78
Posts: 430
By Quetzalcoatl.Orestes 2019-12-27 00:30:02  
That looks like mine

It supports named based weapon sets, aftermath sets, haste modes, plus all of mote's default rules and some special stuff. It is tailored for me, FWIW.

If anyone has a compelling reason to add something, I would consider it though.
 Asura.Toralin
Offline
サーバ: Asura
Game: FFXI
user: toralin
Posts: 1400
By Asura.Toralin 2019-12-27 07:42:02  
Galkapryme said: »
Asura.Madpyro said: »
can some one post a updated lua link please

Here's mine. I didn't create it, but I suppose I reconfigured it a bit, and it includes relatively updated gear. I forget who the original author was. NOTE: There are still some things I have yet to acquire, and some aspects of the lua that I haven't touched because I don't use them.
Code
--[[     
=== Features ===
If you want auto Reive detection for Ygnas Resolve+1, and Gavialis Helm for some of your WS, then you will need my User-Globals.lua
Otherwise, you might be able to get away without it.  (not tested)
If you don't use organizer, then remove the include('organizer-lib') in get_sets() and remove sets.Organizer
This lua has a few MODES you can toggle with hotkeys or macros, and there's a few situational RULES that activate without hotkeys
::MODES::
SouleaterMode 
Status: OFF by default. 
Hotkey: Toggle this with @F9 (window key + F9). 
Macro: /console gs c togggle SouleaterMode
Notes: This mode makes it possible to use Souleater in situations where you would normally avoid using it. When SouleaterMode 
is ON, Souleater will be canceled automatically after the first Weaponskill used. CAVEAT -. If Bloodweapon 
is active, or if Drain's HP Boost buff is active, then Souleater will remain active until the next WS used after 
either buff wears off. 
CapacityMode
Status: OFF by default. 
Hotkey: with ALT + = 
Macro: /console cs c toggle CapacityMode
Notes: It will full-time whichever piece of gear you specify in sets.CapacityMantle 
Extra Info: You can change the default (true|false) status of any MODE by changing their values in job_setup()
::RULES::
Gavialis helm
Status: enabled
Setting: set use_gavialis = true below in job_setup. 
Notes: Gavialis Helm will automatically be used for all weaponskills on their respective days of the week. If you would like to 
exclude a weapon skill, you must add it to wsList below. (found in job_setup) You also need my User-Globals.lua for this
to even work. 
Ygna's Resolve +1 
Status: enabled in Reive
Setting: n/a
Notes: Will automatically be used when you're in a reive. If you have my User-Globals.lua this will work
with all your jobs that use mote's includes. Not just this one! 
Moonshade earring
Status: Not used for WS's at 3000 TP. 
Setting: n/a
You can hit F12 to display custom MODE status as well as the default stuff. 
Single handed weapons are handled in the sets.engaged.SW set. (sword + shield, etc.)
::NOTES::
My sets have a specific order, or they will not function correctly. 
sets.engaged.[CombatForm][CombatWeapon][Offense or HybridMode][CustomMeleeGroups or CustomClass]
CombatForm = Haste, DW, SW
CombatWeapon = GreatSword, Scythe, Apocalypse, Ragnarok, Caladbolg, Liberator, Anguta
OffenseMode = Mid, Acc
HybridMode = PDT
CustomMeleeGroups = AM3, AM, Haste
CustomClass = OhShit 
CombatForm Haste is used when Last Resort + Hasso AND either Haste, March, Indi-Haste Geo-Haste is on you.
CombatForm DW will activate with /dnc or /nin AND a weapon listed in drk_sub_weapons equipped offhand. 
SW is active with an empty sub-slot, or a shield listed in the shields = S{} list.  
CombatWeapon GreatSword will activate when you equip a GS listed in gsList in job_setup(). 
CombatWeapon Scythe will activate when you equip a Scythe listed in scytheList in job_setup(). 
Weapons that do not fall into these groups, or have sets by weapon name, will use default sets.engaged
most gear sets derrive themselves from sets.engaged, so try to keep it updated. It's much smarter to derrive sets than to 
completely re-invent each gear set for every weapon. Let your gear inherit. Less code written means less errors. 
CustomMeleeGroups AM3 will activate when Aftermath lvl 3 is up, and CustomMeleeGroups AM will activate when relic Aftermath is up.
There are no empy AM sets for now.
--]]
--
-- Initialization function for this job file.
function get_sets()
    mote_include_version = 2
    -- Load and initialize the include file.
    include('Mote-Include.lua')
    include('organizer-lib')
end


-- Setup vars that are user-independent.
function job_setup()
    state.CapacityMode = M(false, 'Capacity Point Mantle')

    include('Mote-TreasureHunter')
    state.TreasureMode:set('Tag')

    state.Buff.Souleater = buffactive.souleater or false
    state.Buff['Last Resort'] = buffactive['Last Resort'] or false
    -- Set the default to false if you'd rather SE always stay acitve
    state.SouleaterMode = M(false, 'Soul Eater Mode')
    -- state.LastResortMode = M(false, 'Last Resort Mode')
    -- Use Gavialis helm?
    use_gavialis = true

    -- Weaponskills you do NOT want Gavialis helm used with (only considered if use_gavialis = true)
    wsList = S{'Spiral Hell', 'Catastrophe', 'Torcleaver', 'Insurgency', 'Quietus', 'Cross Reaper'}
    -- Greatswords you use. 
    gsList = S{'Malfeasance', 'Macbain', 'Nanadaka', 'Mekosuchus Blade', 'Ragnarok', 'Raetic Algol', 'Raetic Algol +1', 'Caladbolg', 'Montante +1', 'Albion' }
    scytheList = S{'Liberator', 'Apocalypse', 'Anguta', 'Raetic Scythe', 'Deathbane', 'Twilight Scythe' }
    remaWeapons = S{'Apocalypse', 'Anguta', 'Liberator', 'Caladbolg', 'Ragnarok'}

    shields = S{'Rinda Shield'}
    -- Mote has capitalization errors in the default Absorb mappings, so we use our own
    absorbs = S{'Absorb-STR', 'Absorb-DEX', 'Absorb-VIT', 'Absorb-AGI', 'Absorb-INT', 'Absorb-MND', 'Absorb-CHR', 'Absorb-Attri', 'Absorb-ACC', 'Absorb-TP'}
    -- Offhand weapons used to activate DW mode
    swordList = S{"Sangarius", "Sangarius +1", "Usonmunku", "Perun +1", "Tanmogayi", "Naegling"}

    get_combat_form()
    get_combat_weapon()
    update_melee_groups()
end


-- Setup vars that are user-dependent.  Can override this function in a sidecar file.
function user_setup()
    -- Options: Override default values
    state.OffenseMode:options('Normal','STP','DA')
    state.WeaponskillMode:options('Normal', 'Mid', 'Acc')
    state.CastingMode:options('Normal', 'Acc')
    state.IdleMode:options('Town', 'Normal', 'Regen', 'Refresh', 'Weak')
    state.RestingMode:options('Normal')
    state.PhysicalDefenseMode:options('PDT', 'Reraise')
    state.MagicalDefenseMode:options('MDT')
	state.HybridMode:options('Normal', 'PDT')

    war_sj = player.sub_job == 'WAR' or false

    -- Additional local binds
    send_command('bind ^= gs c cycle treasuremode')
    send_command('bind != gs c toggle CapacityMode')
    send_command('bind @f9 gs c toggle SouleaterMode')
    send_command('bind !- gs equip sets.crafting')
	send_command('bind f1 gs c cycle OffenseMode')
	send_command('bind f10 gs c cycle PhysicalDefenseMode')
	send_command('bind f11 gs c cycle MagicalDefenseMode')
	send_command('bind f2 gs c cycle IdleMode')
    --send_command('bind ^` gs c toggle LastResortMode')

    select_default_macro_book()
end

-- Called when this job file is unloaded (eg: job change)
function file_unload()
    send_command('unbind ^`')
    send_command('unbind !=')
    send_command('unbind ^[')
    send_command('unbind ![')
    send_command('unbind @f9')
	send_command('unbind f1')
end


-- Define sets and vars used by this job file.
function init_gear_sets()
    --------------------------------------
    -- Start defining the sets
    --------------------------------------
    -- Augmented gear
    Niht = {name="Niht Mantle", augments={'Attack+10','Dark magic skill +8','"Drain" and "Aspir" potency +25'}}

    Ankou = {}
    Ankou.FC  = { name="Ankou's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+9','"Fast Cast"+10','Spell interruption rate down-4%',}}
    Ankou.STP = { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+5','"Store TP"+10','Damage taken-5%',}}
    Ankou.DA  = { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+2','"Dbl.Atk."+10',}}
    Ankou.WSD = { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%','Damage taken-5%',}}
    Ankou.VIT = { name="Ankou's Mantle", augments={'VIT+1', 'Haste +10%',}}
	Ankou.INT = { name="Ankou's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Spell interruption rate down-10%',}}

	Odyssean = {}
	Odyssean.Head = { name="Odyssean Helm", augments={'"Mag.Atk.Bns."+12','Pet: Crit.hit rate +4','Chance of successful block +4','Mag. Acc.+19 "Mag.Atk.Bns."+19',}}
    Odyssean.Body = { name="Odyss. Chestplate", augments={'"Mag.Atk.Bns."+24','"Fast Cast"+4','STR+1','Accuracy+13',}}
    Odyssean.Hands = { name="Odyssean Gauntlets", augments={'"Dbl.Atk."+2','INT+13','Accuracy+12 Attack+12','Mag. Acc.+17 "Mag.Atk.Bns."+17',}}
    Odyssean.Legs = { name="Odyssean Cuisses", augments={'INT+2','Potency of "Cure" effect received+4%','Accuracy+17 Attack+17','Mag. Acc.+17 "Mag.Atk.Bns."+17',}}
    Odyssean.Feet = { name="Odyssean Greaves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','AGI+7','"Mag.Atk.Bns."+3',}}

    sets.TreasureHunter = {waist="Chaac Belt" }
     
    sets.Organizer = {}

    sets.precast.JA['Diabolic Eye'] = {hands="Fallen's Finger Gauntlets +3"}
    sets.precast.JA['Nether Void']  = {legs="Heathen's Flanchard +1"}
    sets.precast.JA['Dark Seal']    = {head="Fallen's burgeonet +3"}
    sets.precast.JA['Souleater']    = {head="Ignominy burgeonet +3"}
    sets.precast.JA['Weapon Bash']   = {hands="Ignominy Gauntlets +2",left_ring="Slayer's Ring"} --Skillchain Property
    sets.precast.JA['Blood Weapon'] = {body="Fallen's Cuirass +3"}
    sets.precast.JA['Last Resort']  = {feet="Fallen's Sollerets +3"}

    sets.WSDayBonus      = { head="Gavialis Helm" }
    sets.WSBack          = Ankou.WSD
    
    -- Earring considerations, given Lugra's day/night stats 
    sets.BrutalLugra     = { ear1="Brutal Earring", ear2="Lugra Earring" }
    sets.IshvaraLugra     = { ear1="Ishvara Earring", ear2="Lugra Earring" }
    sets.Lugra           = { ear1="Lugra Earring" }
    sets.Brutal          = { ear1="Brutal Earring" }
    sets.Ishvara          = { ear1="Ishvara Earring" }

    -- Waltz set (chr and vit) 
    -- sets.precast.Waltz = {}

    -- Fast cast sets for spells
    sets.precast.FC = {
    ammo="Impatiens",
    head={ name="Carmine Mask", augments={'Accuracy+10','DEX+10','MND+15',}},
    body={ name="Fall. Cuirass +3", augments={'Enhances "Blood Weapon" effect',}},
    hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
    legs="Arjuna Breeches",
    feet={ name="Carmine Greaves +1", augments={'MP+80','INT+12','MND+12',}},
    neck="Erra Pendant",
    waist="Austerity Belt +1",
    back=Ankou.INT,
    }

    sets.precast.FC['Elemental Magic'] = sets.precast.FC
    sets.precast.FC['Enfeebling Magic'] = sets.precast.FC
	sets.precast.FC['Dark Magic'] = set_combine(sets.precast.FC, {head={ name="Fall. Burgeonet +3", augments={'Enhances "Dark Seal" effect',}}})

    
    -- Midcast Sets
    sets.midcast.FastRecast =  sets.precast.FC

    
    -- sets.midcast.Trust =  {
    --     head={ name="Carmine Mask", augments={'Accuracy+10','DEX+10','MND+15',}},
    --     hands="Leyline Gloves",
    --     body="Fallen's Cuirass +3",
    --     legs="Arjuna Breeches",
    --     feet="Carmine Greaves +1"
    -- }
    sets.midcast["Apururu (UC)"] = set_combine(sets.midcast.Trust, {
        body="Apururu Unity shirt",
    })

    -- Specific spells
    sets.midcast.Utsusemi = sets.precast.FC

    sets.midcast['Dark Magic'] = {
    ammo="Strobilus",
    head="Pixi Hairpin +1",
    body={ name="Fall. Cuirass +3", augments={'Enhances "Blood Weapon" effect',}},
    hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}},
    legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}},
    feet="Ratri Sollerets +1",
    neck="Erra Pendant",
    waist="Austerity Belt +1",
    left_ear="Friomisi Earring",
    right_ear="Crematio Earring",
    left_ring="Archon Ring",
    right_ring="Evanescence Ring",
	back=Ankou.INT,
    }
    sets.midcast.Endark = sets.midcast['Dark Magic'] 

    sets.midcast['Dark Magic'].Acc = set_combine(sets.midcast['Dark Magic'], {
        head="Ratri Sallet +1", -- 45 macc
        hands="Ratri gadlings +1" -- 44 macc
        })

    sets.midcast['Enfeebling Magic'] = {
        ammo="Strobilus", 
        head={ name="Fall. Burgeonet +3", augments={'Enhances "Dark Seal" effect',}},
        neck="Erra Pendant", -- Dark Magic Skill 10 + 17 macc
        body="Ignominy Cuirass +3",
        hands="Ratri gadlings +1", -- 44 macc
        ring1="Stikini Ring +1", -- 11 macc
        ring2="Kishar Ring",
        waist="Austerity Belt +1",
        legs="Fallen's Flanchard +3",  -- Dark Magic Skill 18 + 39macc
        back=Ankou.INT,
        feet="Flamma Gambieras +2"
    }

    sets.midcast['Elemental Magic'] = {
        ammo="Strobilus", 
        head={ name="Odyssean Helm", augments={'"Mag.Atk.Bns."+12','Pet: Crit.hit rate +4','Chance of successful block +4','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
        neck="Eddy Necklace", -- macc 5, 11 matk
        ear1="Friomisi Earring", -- 10 matk
        right_ear="Crematio Earring", -- matk 6, mdmg +6
        body={ name="Fall. Cuirass +3", augments={'Enhances "Blood Weapon" effect',}}, -- macc 40, matk 60
        hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}}, -- macc 38, matk 62
        ring1="Fenrir Ring +1", -- macc/matk 3, mdmg 5
        ring2="Fenrir Ring +1", -- macc/matk 3, mdmg 5
        waist="Austerity Belt +1", -- macc/matk 7
        legs={ name="Odyssean Cuisses", augments={'INT+2','Potency of "Cure" effect received+4%','Accuracy+17 Attack+17','Mag. Acc.+17 "Mag.Atk.Bns."+17',}},
        back=Ankou.INT, -- macc 29, mdmg 20
        feet="Heathen's Sollerets +1" -- macc/matk 20, Occult Acumen 30
}
    -- Mix of HP boost, -Spell interruption%, and Dark Skill
    sets.midcast['Dread Spikes'] = set_combine(sets.midcast['Dark Magic'], {
        ammo="Strobilus",
        head="Ignominy Burgonet +3", -- 17
        left_ear="Friomisi Earring",
    right_ear="Crematio Earring",
        body="Heathen's Cuirass +1",
        hands="Fallen's Finger Gauntlets +3",
        back=Ankou.INT,
    })
    sets.midcast['Dread Spikes'].Acc = set_combine(sets.midcast['Dark Magic'], {
        body="Heathen's Cuirass +1",
        hands="Fallen's Finger Gauntlets +3"
    })

    -- Drain spells 
    sets.midcast.Drain = sets.midcast['Dark Magic']
    sets.midcast.Aspir = sets.midcast.Drain

    sets.midcast.Drain.Acc = set_combine(sets.midcast.Drain, {
        hands="Leyline Gloves",
        waist="Eschan Stone", -- macc/matk 7
    })
    sets.midcast.Aspir.Acc = sets.midcast.Drain.Acc

    sets.midcast.Drain.OhShit = set_combine(sets.midcast.Drain, {
        legs="Carmine Cuisses",
        feet="Ratri Sollerets +1"
	})

    -- Absorbs
    sets.midcast.Absorb = set_combine(sets.midcast['Dark Magic'], {
        head="Ignominy Burgonet +3", -- Absorb duration 20
		feet="Ratri Sollerets +1",
		ring2="Kishar Ring",
        back=Ankou.INT,
        })

    sets.midcast['Absorb-TP'] = set_combine(sets.midcast.Absorb, {
        hands="Heathen's Gauntlets +1",
        ring2="Kishar Ring",
    })

    sets.midcast['Absorb-TP'].Acc = set_combine(sets.midcast.Absorb.Acc, {
        hands="Heathen's Gauntlets +1",
        ring2="Kishar Ring",
    })
    sets.midcast.Absorb.Acc = set_combine(sets.midcast['Dark Magic'].Acc, {
        head="Flamma Zucchetto +2", -- 44 macc
        back=Ankou.INT,
        hands="Ratri gadlings +1",
        ring2="Kishar Ring",
	})

    -- Ranged for xbow
    sets.precast.RA = {}
    sets.midcast.RA = {}

    -- WEAPONSKILL SETS
    -- General sets
	-- Balanced (Acc and WSD) WSD +74
    sets.precast.WS = {
    ammo="Knobkierrie", --WSD +6
    head={ name="Fall. Burgeonet +3", augments={'Enhances "Dark Seal" effect',}},
    body="Ignominy Cuirass +3", --WSD +10
    hands="Ratri Gadlings +1", --WSD +8
    legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}}, --WSD +10
    feet="Ratri Sollerets +1", --WSD +8
    neck="Fotia Gorget", --WSA/WSD +10
    waist="Fotia Belt", --WSA/WSD +10
    left_ear="Telos Earring",
    right_ear="Ishvara Earring", --WSD +2
    left_ring="Chirich Ring",
    right_ring="Ifrit Ring +1",
    back=Ankou.WSD, -- WSD +10
	}
	
	-- CATASTROPHE
	-- 40% STR/40% INT
	-- +68% Catastrophe Damage
	sets.precast.WS['Catasrophe'] = {
    main="Apocalypse",
    sub="Utu Grip",
    ammo="Knobkierrie",
    head="Ratri Sallet +1",
    body="Ignominy Cuirass +3",
    hands="Rat. Gadlings +1",
    legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}},
    feet="Rat. Sollerets +1",
    neck="Abyssal Beads +2",
    waist="Fotia Belt",
    left_ear="Ishvara Earring",
    right_ear="Lugra Earring +1",
    left_ring="Niqmaddu Ring",
    right_ring="Ifrit Ring +1",
    back=Ankou.WSD,
}
		
    -- RESOLUTION
    -- 86-100% STR
    sets.precast.WS.Resolution = sets.precast.WS
    sets.precast.WS.Resolution.Acc = sets.precast.WS

    -- TORCLEAVER 
    -- VIT 80%
    sets.precast.WS.Torcleaver = sets.precast.WS
	
    sets.precast.WS.Torcleaver.Mid = set_combine(sets.precast.WS.Mid, {
        neck="Abyssal Bead Necklace +2",
    })
    sets.precast.WS.Torcleaver.Acc = sets.precast.WS.Torcleaver.Mid

    -- INSURGENCY
    -- 20% STR / 20% INT 
    -- Base set only used at 3000TP to put AM3 up
    sets.precast.WS.Insurgency = set_combine(sets.precast.WS, {head="Ratri Sallet +1"})
	   
    -- CROSS REAPER
    -- 60% STR / 60% MND
    sets.precast.WS['Cross Reaper'] = sets.precast.WS
    
    -- ENTROPY
    -- 86-100% INT 
    sets.precast.WS['Entropy'] = {
	ammo="Knobkierrie",
    head={ name="Odyssean Helm", augments={'"Mag.Atk.Bns."+12','Pet: Crit.hit rate +4','Chance of successful block +4','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
    body={ name="Fall. Cuirass +3", augments={'Enhances "Blood Weapon" effect',}},
    hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}},
    legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}},
    feet="Ratri Sollerets +1",
    neck="Fotia Gorget",
    waist="Fotia Belt",
    left_ear="Friomisi Earring",
    right_ear="Ishvara Earring",
    left_ring="Fenrir Ring +1",
    right_ring="Stikini Ring +1",
    back=Ankou.WSD,
    }
    

    -- Quietus
    -- 60% STR / MND 
    sets.precast.WS['Quietus'] = sets.precast.WS['Catastrophe']
    
    -- SPIRAL HELL
    -- 50% STR / 50% INT 
    sets.precast.WS['Spiral Hell'] = sets.precast.WS['Catastrophe']

    -- SHADOW OF DEATH
    -- 40% STR 40% INT - Darkness Elemental
    sets.precast.WS['Shadow of Death'] = set_combine(sets.precast.WS['Entropy'], {
        head="Pixie Hairpin +1",
        neck="Eddy Necklace",
        })

    sets.precast.WS['Shadow of Death'].Mid = set_combine(sets.precast.WS['Shadow of Death'], sets.precast.WS.Mid, {
    })
    sets.precast.WS['Shadow of Death'].Acc = set_combine(sets.precast.WS['Shadow of Death'], sets.precast.WS.Acc, {
    })

    -- DARK HARVEST 
    -- 40% STR 40% INT - Darkness Elemental
    sets.precast.WS['Dark Harvest'] = sets.precast.WS['Shadow of Death']
    sets.precast.WS['Dark Harvest'].Mid = set_combine(sets.precast.WS['Shadow of Death'], {head="Ignominy Burgeonet +3", feet="Heathen's Sollerets +1"})
    sets.precast.WS['Dark Harvest'].Acc = set_combine(sets.precast.WS['Shadow of Death'], {head="Ignominy Burgeonet +3", feet="Heathen's Sollerets +1"})

    -- Sword WS's
    -- SANGUINE BLADE
    -- 50% MND / 50% STR Darkness Elemental
    sets.precast.WS['Sanguine Blade'] = set_combine(sets.precast.WS, {
        head="Pixie Hairpin +1",
        neck="Eddy Necklace",
        ear1="Friomisi Earring",
        body="Fallen's Cuirass +3",
        hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}},
        back=Ankou.WSD,
        feet="Heathen's Sollerets +1"
    })
    sets.precast.WS['Sanguine Blade'].Mid = set_combine(sets.precast.WS['Sanguine Blade'], sets.precast.WS.Mid)
    sets.precast.WS['Sanguine Blade'].Acc = set_combine(sets.precast.WS['Sanguine Blade'], sets.precast.WS.Acc)

    -- REQUISCAT
    -- 73% MND - breath damage
    sets.precast.WS.Requiescat = set_combine(sets.precast.WS, {
        head="Flamma Zucchetto +2",
        neck="Abyssal Bead Necklace +2",
        body="Ignominy Cuirass +3",
        hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}},
        waist="Fotia Belt",
    })
    sets.precast.WS.Requiescat.Mid = set_combine(sets.precast.WS.Requiscat, sets.precast.WS.Mid)
    sets.precast.WS.Requiescat.Acc = set_combine(sets.precast.WS.Requiscat, sets.precast.WS.Acc)

    -- Idle sets
    sets.idle.Town = {
		ranged="Mengado",
		head="Hjarrandi Helm",
        neck="Sanctity Necklace",
        body="Hjarrandi Breast.",
        hands="Sulevia's Gauntlets +2",
		left_ear="Telos Earring",
		right_ear="Cessance Earring",
        ring1="Chirich Ring +1",
        ring2="Stikini Ring +1",
        waist="Ioskeha Belt +1",
        legs="Carmine Cuisses",
        feet={ name="Fall. Sollerets +3", augments={'Enhances "Desperate Blows" effect',}},
		back=Ankou.STP,
    }

    sets.idle.Field = {
	head="Hjarrandi Helm", -- Haste 3%
    body="Hjarrandi Breast.", -- Haste 1%
    hands="Sulev. Gauntlets +2", -- Haste 3%
    legs="Carmine Cuisses",
    feet={ name="Fall. Sollerets +3", augments={'Enhances "Desperate Blows" effect',}},
    neck="Sanctity Necklace",
    waist="Flume Belt +1",
    left_ear="Telos Earring",
    right_ear="Cessance Earring",
    left_ring="Stikini Ring +1",
    right_ring="Chirich Ring +1",
    back=Ankou.VIT
    }
    sets.idle.Regen = set_combine(sets.idle.Field, {
        neck="Sanctity Necklace",
        body="Lugra Cloak +1",
        ring1="Chirich Ring +1",
		ring2="Chirish Ring +1"
    })
    sets.idle.Refresh = set_combine(sets.idle.Regen, {
        neck="Bale Choker",
		left_ring="Stikini Ring +1",
		right_ring="Stikini Ring +1"
    })

    sets.idle.Weak = set_combine(sets.defense.PDT, sets.Reraise)
	

    -- Defense sets
    sets.defense.PDT = {
    ammo="Brigantia Pebble", 
    head="Hjarrandi Helm", -- Haste 3%
    body="Hjarrandi Breast.", -- Haste 1%
    hands="Sulev. Gauntlets +2", -- Haste 3%
    legs="Sulev. Cuisses +2", -- Haste 2%
    feet="Sulev. Leggings +2", -- Haste 1%
    neck="Loricate Torque +1",
    waist="Flume Belt +1",
    left_ear="Thureous Earring",
    right_ear="Impreg. Earring",
    left_ring="Defending Ring",
    right_ring="Paguroidea Ring",
    back=Ankou.WSD,
    }
    sets.defense.Reraise = set_combine(sets.idle.Weak, {head="Twilight Helm",body="Twilight Mail"})

    sets.defense.MDT = set_combine(sets.defense.PDT, {ammo="Vanir Battery",waist="Asklepian Belt"})

    sets.Kiting = {
        legs="Carmine Cuisses",
    }

    sets.Reraise = {head="Twilight Helm",body="Twilight Mail"}
	

    
    -- Base set (global catch-all set)
	
    sets.engaged = {
    ammo="Ginsen",
    head="Hjarrandi Helm",
    body="Hjarrandi Breast.",
    hands="Sulev. Gauntlets +2",
    legs="Sulev. Cuisses +2",
    feet="Sulev. Leggings +2",
    neck="Abyssal Beads +2",
    waist="Ioskeha Belt +1",
    left_ear="Telos Earring",
    right_ear="Cessance Earring",
    left_ring="Chirich Ring +1",
    right_ring={name="Chirich Ring +1", bag="Wardrobe 3", priority=1},
    back=Ankou.STP,
}

	sets.engaged.STP = {
	ammo="Ginsen",
    head="Sulevia's Mask +2",
    body="Hjarrandi Breast.",
    hands="Flam. Manopolas +2",
    legs="Flamma Dirs +2",
    feet="Flam. Gambieras +2",
    neck="Abyssal Beads +2",
    waist="Kentarch Belt +1",
    left_ear="Telos Earring",
    right_ear="Cessance Earring",
    left_ring="Chirich Ring +1",
    right_ring="Chirich Ring +1",
    back=Ankou.STP,
}

    sets.engaged.DA = {
	ammo="Ginsen",
    head="Hjarrandi Helm",
    body="Hjarrandi Breast.",
    hands="Sulev. Gauntlets +2",
    legs="Ig. Flanchard +2",
    feet="Flam. Gambieras +2",
    neck="Abyssal Beads +2",
    waist="Ioskeha Belt +1",
    left_ear="Brutal Earring",
    right_ear="Cessance Earring",
    left_ring="Chirich Ring +1",
    right_ring="Chirich Ring +1",
    back=Ankou.DA,
}


	

	
    -- dual wield
	
    sets.engaged.DW = set_combine(sets.engaged, {
        waist="Patentia Sash",
        legs="Carmine Cuisses",
    })
    sets.engaged.DW.Mid = set_combine(sets.engaged.DW, {
        neck="Abyssal Bead Necklace +2",
    })
    

    -- single wield (sword + shield possibly)
	
    sets.engaged.SW = {}
    sets.engaged.SW.Mid = set_combine(sets.engaged.Mid, {})
    sets.engaged.SW.Acc = set_combine(sets.engaged.Acc, {})

    sets.engaged.Reraise = set_combine(sets.engaged, {
        head="Twilight Helm",
        neck="Loricate Torque +1",
        body="Twilight Mail"
    })

    sets.buff.Souleater = { 
        head="Ignominy Burgonet +3",
        --body="Ratri Breastplate",
    }

    sets.buff['Last Resort'] = { 
    feet="Fallen's Sollerets +3" 
    }
end

function job_pretarget(spell, action, spellMap, eventArgs)
    if spell.type:endswith('Magic') and buffactive.silence then
        eventArgs.cancel = true
        send_command('input /item "Echo Drops" <me>')
    end
end

function job_pretarget(spell, action, spellMap, eventArgs)
    if spell.type:endswith('Magic') and buffactive.cursed then
        eventArgs.cancel = true
        send_command('input /item "Holy Water" <me>')
    end
end

-- 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)
    aw_custom_aftermath_timers_precast(spell)
end

function job_post_precast(spell, action, spellMap, eventArgs)
    local recast = windower.ffxi.get_ability_recasts()
    -- Make sure abilities using head gear don't swap 
    if spell.type:lower() == 'weaponskill' then
        -- handle Gavialis Helm
        -- if use_gavialis then
        --     if is_sc_element_today(spell) then
        --         if wsList:contains(spell.english) then
        --             -- do nothing
        --         else
        --             equip(sets.WSDayBonus)
        --         end
        --     end
        -- end
        -- CP mantle must be worn when a mob dies, so make sure it's equipped for WS.
        if state.CapacityMode.value then
            equip(sets.CapacityMantle)
        end

        -- if spell.english == 'Entropy' and recast[95] == 0 then
        --     eventArgs.cancel = true
        --     send_command('@wait 4.0;input /ja "Consume Mana" <me>')
        --     --windower.chat.input:schedule(1, '/ws "Entropy" <t>')
        --     return
        -- end

        if player.tp > 2999 then
            if wsList:contains(spell.english) then
                equip(sets.IshvaraLugra)
            else
                equip(sets.BrutalLugra)
            end
        else -- use Lugra + moonshade
            if world.time >= (17*60) or world.time <= (7*60) then
                equip(sets.Lugra)
            else
                if wsList:contains(spell.english) then
                    equip(sets.Ishvara)
                else
                    equip(sets.Brutal)
                end
            end
        end
    end
end

-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_midcast(spell, action, spellMap, eventArgs)
end

-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
    if spell.english:startswith('Drain') then
        if player.status == 'Engaged' and state.CastingMode.current == 'Normal' and player.hpp < 70 then
            classes.CustomClass = 'OhShit'
        end
    end

    if (state.HybridMode.current == 'PDT' and state.PhysicalDefenseMode.current == 'Reraise') then
        equip(sets.Reraise)
    end
end

-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
    aw_custom_aftermath_timers_aftercast(spell)
    if state.Buff[spell.english] ~= nil then
        state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
    end
end

function job_post_aftercast(spell, action, spellMap, eventArgs)
    if spell.type == 'WeaponSkill' then
        if state.Buff.Souleater and state.SouleaterMode.value then
            send_command('@wait 1.0;cancel souleater')
            --enable("head")
        end
    end
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-- Called before the Include starts constructing melee/idle/resting sets.
-- Can customize state or custom melee class values at this point.
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_handle_equipping_gear(status, eventArgs)
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
    if player.mpp < 70 then
        idleSet = set_combine(idleSet, sets.idle.Refresh)
    end
    if player.hpp < 70 then
        idleSet = set_combine(idleSet, sets.idle.Regen)
    end
    if state.IdleMode.current == 'Sphere' then
        idleSet = set_combine(idleSet, sets.idle.Sphere)
    end
    if state.HybridMode.current == 'PDT' then
        idleSet = set_combine(idleSet, sets.defense.PDT)
    end
    return idleSet
end

-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
    if state.TreasureMode.value == 'Fulltime' then
        meleeSet = set_combine(meleeSet, sets.TreasureHunter)
    end
    if state.CapacityMode.value then
        meleeSet = set_combine(meleeSet, sets.CapacityMantle)
    end
    if state.Buff['Souleater'] then
        meleeSet = set_combine(meleeSet, sets.buff.Souleater)
    end
    --meleeSet = set_combine(meleeSet, select_earring())
    return meleeSet
end

-------------------------------------------------------------------------------------------------------------------
-- General hooks for other events.
-------------------------------------------------------------------------------------------------------------------

-- Called when the player's status changes.
function job_status_change(newStatus, oldStatus, eventArgs)
    if newStatus == "Engaged" then
        --if state.Buff['Last Resort'] then
        --    send_command('@wait 1.0;cancel hasso')
        --end
        -- handle weapon sets
    if remaWeapons:contains(player.equipment.main) then
        state.CombatWeapon:set(player.equipment.main)
    end
        -- if gsList:contains(player.equipment.main) then
        --     state.CombatWeapon:set("GreatSword")
        -- elseif scytheList:contains(player.equipment.main) then
        --     state.CombatWeapon:set("Scythe")
        -- elseif remaWeapons:contains(player.equipment.main) then
        --     state.CombatWeapon:set(player.equipment.main)
        -- else -- use regular set, which caters to Liberator
        --     state.CombatWeapon:reset()
        -- end
        --elseif newStatus == 'Idle' then
        --    determine_idle_group()
    end
end

-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)

    if state.Buff[buff] ~= nil then
        handle_equipping_gear(player.status)
    end

    if S{'haste', 'march', 'embrava', 'geo-haste', 'indi-haste', 'last resort'}:contains(buff:lower()) then
        if (buffactive['Last Resort']) then
            if (buffactive.embrava or buffactive.haste) and buffactive.march then
                state.CombatForm:set("Haste")
                if not midaction() then
                    handle_equipping_gear(player.status)
                end
            end
        else
            if state.CombatForm.current ~= 'DW' and state.CombatForm.current ~= 'SW' then
                state.CombatForm:reset()
            end
            if not midaction() then
                handle_equipping_gear(player.status)
            end
        end
    end
    -- Drain II/III HP Boost. Set SE to stay on.
    if buff == "Max HP Boost" and state.SouleaterMode.value then
        if gain or buffactive['Max HP Boost'] then
            state.SouleaterMode:set(false)
        else
            state.SouleaterMode:set(true)
        end
    end
    -- Make sure SE stays on for BW
    if buff == 'Blood Weapon' and state.SouleaterMode.value then
        if gain or buffactive['Blood Weapon'] then
            state.SouleaterMode:set(false)
        else
            state.SouleaterMode:set(true)
        end
    end
    -- AM custom groups
    if buff:startswith('Aftermath') then
        if player.equipment.main == 'Liberator' then
            classes.CustomMeleeGroups:clear()

            if (buff == "Aftermath: Lv.3" and gain) or buffactive['Aftermath: Lv.3'] then
                classes.CustomMeleeGroups:append('AM3')
                add_to_chat(8, '-------------Mythic AM3 UP-------------')
            -- elseif (buff == "Aftermath: Lv.3" and not gain) then
            --     add_to_chat(8, '-------------Mythic AM3 DOWN-------------')
            end

            if not midaction() then
                handle_equipping_gear(player.status)
            end
        else
            classes.CustomMeleeGroups:clear()

            if buff == "Aftermath" and gain or buffactive.Aftermath then
                classes.CustomMeleeGroups:append('AM')
            end

            if not midaction() then
                handle_equipping_gear(player.status)
            end
        end
    end
    
    -- if  buff == "Samurai Roll" then
    --     classes.CustomRangedGroups:clear()
    --     if (buff == "Samurai Roll" and gain) or buffactive['Samurai Roll'] then
    --         classes.CustomRangedGroups:append('SamRoll')
    --     end
       
    -- end

    --if buff == "Last Resort" then
    --    if gain then
    --        send_command('@wait 1.0;cancel hasso')
    --    else
    --        if not midaction() then
    --            send_command('@wait 1.0;input /ja "Hasso" <me>')
    --        end
    --    end
    --end
end


-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------

-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)

    war_sj = player.sub_job == 'WAR' or false
    get_combat_form()
    get_combat_weapon()
    update_melee_groups()
    select_default_macro_book()
end

-- State buff checks that will equip buff gear and mark the event as handled.
function check_buff(buff_name, eventArgs)
    if state.Buff[buff_name] then
        equip(sets.buff[buff_name] or {})
        if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
            equip(sets.TreasureHunter)
        end
        eventArgs.handled = true
    end
end
-- Check for various actions that we've specified in user code as being used with TH gear.
-- This will only ever be called if TreasureMode is not 'None'.
-- Category and Param are as specified in the action event packet.
--function th_action_check(category, param)
--    if category == 2 or -- any ranged attack
--        --category == 4 or -- any magic action
--        (category == 3 and param == 30) or -- Aeolian Edge
--        (category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
--        (category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
--        then 
--            return true
--    end
--end
-- function get_custom_wsmode(spell, spellMap, default_wsmode)
--     if state.OffenseMode.current == 'Mid' then
--         if buffactive['Aftermath: Lv.3'] then
--             return 'AM3Mid'
--         end
--     elseif state.OffenseMode.current == 'Acc' then
--         if buffactive['Aftermath: Lv.3'] then
--             return 'AM3Acc'
--         end
--     else
--         if buffactive['Aftermath: Lv.3'] then
--             return 'AM3'
--         end
--     end
-- end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function get_combat_form()

    if S{'NIN', 'DNC'}:contains(player.sub_job) and swordList:contains(player.equipment.main) then
        state.CombatForm:set("DW")
    --elseif player.equipment.sub == '' or shields:contains(player.equipment.sub) then
    elseif swordList:contains(player.equipment.main) then
        state.CombatForm:set("SW")
    elseif buffactive['Last Resort'] then
        if (buffactive.embrava or buffactive.haste) and buffactive.march then
            add_to_chat(8, '-------------Delay Capped-------------')
            state.CombatForm:set("Haste")
        else
            state.CombatForm:reset()
        end
    else
        state.CombatForm:reset()
    end
end

function get_combat_weapon()
    state.CombatWeapon:reset()
    if remaWeapons:contains(player.equipment.main) then
        state.CombatWeapon:set(player.equipment.main)
    end
    -- if remaWeapons:contains(player.equipment.main) then
    --     state.CombatWeapon:set(player.equipment.main)
    -- elseif gsList:contains(player.equipment.main) then
    --     state.CombatWeapon:set("GreatSword")
    -- elseif scytheList:contains(player.equipment.main) then
    --     state.CombatWeapon:set("Scythe")
    -- end
end

function aw_custom_aftermath_timers_precast(spell)
    if spell.type == 'WeaponSkill' then
        info.aftermath = {}

        local mythic_ws = "Insurgency"

        info.aftermath.weaponskill = mythic_ws
        info.aftermath.duration = 0

        info.aftermath.level = math.floor(player.tp / 1000)
        if info.aftermath.level == 0 then
            info.aftermath.level = 1
        end

        if spell.english == mythic_ws and player.equipment.main == 'Liberator' then
            -- nothing can overwrite lvl 3
            if buffactive['Aftermath: Lv.3'] then
                return
            end
            -- only lvl 3 can overwrite lvl 2
            if info.aftermath.level ~= 3 and buffactive['Aftermath: Lv.2'] then
                return
            end

            if info.aftermath.level == 1 then
                info.aftermath.duration = 90
            elseif info.aftermath.level == 2 then
                info.aftermath.duration = 120
            else
                info.aftermath.duration = 180
            end
        end
    end
end

-- Call from job_aftercast() to create the custom aftermath timer.
function aw_custom_aftermath_timers_aftercast(spell)
    if not spell.interrupted and spell.type == 'WeaponSkill' and
        info.aftermath and info.aftermath.weaponskill == spell.english and info.aftermath.duration > 0 then

        local aftermath_name = 'Aftermath: Lv.'..tostring(info.aftermath.level)
        send_command('timers d "Aftermath: Lv.1"')
        send_command('timers d "Aftermath: Lv.2"')
        send_command('timers d "Aftermath: Lv.3"')
        send_command('timers c "'..aftermath_name..'" '..tostring(info.aftermath.duration)..' down abilities/aftermath'..tostring(info.aftermath.level)..'.png')

        info.aftermath = {}
    end
end

function display_current_job_state(eventArgs)
    local msg = ''
    msg = msg .. 'Offense: '..state.OffenseMode.current
    msg = msg .. ', Hybrid: '..state.HybridMode.current

    if state.DefenseMode.value ~= 'None' then
        local defMode = state[state.DefenseMode.value ..'DefenseMode'].current
        msg = msg .. ', Defense: '..state.DefenseMode.value..' '..defMode
    end
    if state.CombatForm.current ~= '' then 
        msg = msg .. ', Form: ' .. state.CombatForm.current 
    end
    if state.CombatWeapon.current ~= '' then 
        msg = msg .. ', Weapon: ' .. state.CombatWeapon.current 
    end
    if state.CapacityMode.value then
        msg = msg .. ', Capacity: ON, '
    end
    if state.SouleaterMode.value then
        msg = msg .. ', SE Cancel, '
    end
    -- if state.LastResortMode.value then
    --     msg = msg .. ', LR Defense, '
    -- end
    if state.PCTargetMode.value ~= 'default' then
        msg = msg .. ', Target PC: '..state.PCTargetMode.value
    end
    if state.SelectNPCTargets.value then
        msg = msg .. ', Target NPCs'
    end

    add_to_chat(123, msg)
    eventArgs.handled = true
end

-- Set eventArgs.handled to true if we don't want the automatic display to be run.
-- Handle notifications of general user state change.
function job_state_change(stateField, newValue, oldValue)
end

-- Creating a custom spellMap, since Mote capitalized absorbs incorrectly
function job_get_spell_map(spell, default_spell_map)
    if spell.skill == 'Dark Magic' and absorbs:contains(spell.english) then
        return 'Absorb'
    end
    -- if spell.type == 'Trust' then
    --     return 'Trust'
    -- end
end

function select_earring()
    if world.time >= (17*60) or world.time <= (7*60) then
        return sets.Lugra
    else
        return sets.Brutal
    end
end

function update_melee_groups()

    classes.CustomMeleeGroups:clear()
    -- mythic AM	
    if player.equipment.main == 'Liberator' then
        if buffactive['Aftermath: Lv.3'] then
            classes.CustomMeleeGroups:append('AM3')
        end
    else
        -- relic AM
        if buffactive['Aftermath'] then
            classes.CustomMeleeGroups:append('AM')
        end
        -- if buffactive['Samurai Roll'] then
        --     classes.CustomRangedGroups:append('SamRoll')
        -- end
    end
end

function select_default_macro_book()
    -- Default macro set/book
        -- set_macro_page(5, 4)
    -- if player.sub_job == 'DNC' then
    --     set_macro_page(8, 4)
    if scytheList:contains(player.equipment.main) then
        set_macro_page(9, 8)
    elseif gsList:contains(player.equipment.main) then
        set_macro_page(1, 8)
    elseif player.sub_job == 'SAM' then
        set_macro_page(2, 8)
    elseif swordList:contains(player.equipment.main) then
        set_macro_page(7, 8)
    end
	end
your gearswap is Selindrile's base
https://github.com/Selindrile/GearSwap
Offline
Posts: 270
By eeternal 2019-12-27 08:40:12  
How's infernal scythe damage wise in Dynamis especially with x2 dark weather
 Quetzalcoatl.Orestes
Offline
サーバ: Quetzalcoatl
Game: FFXI
user: Orestes78
Posts: 430
By Quetzalcoatl.Orestes 2019-12-27 08:47:18  
Asura.Toralin said: »
Galkapryme said: »
Asura.Madpyro said: »
can some one post a updated lua link please

Here's mine. I didn't create it, but I suppose I reconfigured it a bit, and it includes relatively updated gear. I forget who the original author was. NOTE: There are still some things I have yet to acquire, and some aspects of the lua that I haven't touched because I don't use them.
Code
--[[     
=== Features ===
If you want auto Reive detection for Ygnas Resolve+1, and Gavialis Helm for some of your WS, then you will need my User-Globals.lua
Otherwise, you might be able to get away without it.  (not tested)
If you don't use organizer, then remove the include('organizer-lib') in get_sets() and remove sets.Organizer
This lua has a few MODES you can toggle with hotkeys or macros, and there's a few situational RULES that activate without hotkeys
::MODES::
SouleaterMode 
Status: OFF by default. 
Hotkey: Toggle this with @F9 (window key + F9). 
Macro: /console gs c togggle SouleaterMode
Notes: This mode makes it possible to use Souleater in situations where you would normally avoid using it. When SouleaterMode 
is ON, Souleater will be canceled automatically after the first Weaponskill used. CAVEAT -. If Bloodweapon 
is active, or if Drain's HP Boost buff is active, then Souleater will remain active until the next WS used after 
either buff wears off. 
CapacityMode
Status: OFF by default. 
Hotkey: with ALT + = 
Macro: /console cs c toggle CapacityMode
Notes: It will full-time whichever piece of gear you specify in sets.CapacityMantle 
Extra Info: You can change the default (true|false) status of any MODE by changing their values in job_setup()
::RULES::
Gavialis helm
Status: enabled
Setting: set use_gavialis = true below in job_setup. 
Notes: Gavialis Helm will automatically be used for all weaponskills on their respective days of the week. If you would like to 
exclude a weapon skill, you must add it to wsList below. (found in job_setup) You also need my User-Globals.lua for this
to even work. 
Ygna's Resolve +1 
Status: enabled in Reive
Setting: n/a
Notes: Will automatically be used when you're in a reive. If you have my User-Globals.lua this will work
with all your jobs that use mote's includes. Not just this one! 
Moonshade earring
Status: Not used for WS's at 3000 TP. 
Setting: n/a
You can hit F12 to display custom MODE status as well as the default stuff. 
Single handed weapons are handled in the sets.engaged.SW set. (sword + shield, etc.)
::NOTES::
My sets have a specific order, or they will not function correctly. 
sets.engaged.[CombatForm][CombatWeapon][Offense or HybridMode][CustomMeleeGroups or CustomClass]
CombatForm = Haste, DW, SW
CombatWeapon = GreatSword, Scythe, Apocalypse, Ragnarok, Caladbolg, Liberator, Anguta
OffenseMode = Mid, Acc
HybridMode = PDT
CustomMeleeGroups = AM3, AM, Haste
CustomClass = OhShit 
CombatForm Haste is used when Last Resort + Hasso AND either Haste, March, Indi-Haste Geo-Haste is on you.
CombatForm DW will activate with /dnc or /nin AND a weapon listed in drk_sub_weapons equipped offhand. 
SW is active with an empty sub-slot, or a shield listed in the shields = S{} list.  
CombatWeapon GreatSword will activate when you equip a GS listed in gsList in job_setup(). 
CombatWeapon Scythe will activate when you equip a Scythe listed in scytheList in job_setup(). 
Weapons that do not fall into these groups, or have sets by weapon name, will use default sets.engaged
most gear sets derrive themselves from sets.engaged, so try to keep it updated. It's much smarter to derrive sets than to 
completely re-invent each gear set for every weapon. Let your gear inherit. Less code written means less errors. 
CustomMeleeGroups AM3 will activate when Aftermath lvl 3 is up, and CustomMeleeGroups AM will activate when relic Aftermath is up.
There are no empy AM sets for now.
--]]
--
-- Initialization function for this job file.
function get_sets()
    mote_include_version = 2
    -- Load and initialize the include file.
    include('Mote-Include.lua')
    include('organizer-lib')
end


-- Setup vars that are user-independent.
function job_setup()
    state.CapacityMode = M(false, 'Capacity Point Mantle')

    include('Mote-TreasureHunter')
    state.TreasureMode:set('Tag')

    state.Buff.Souleater = buffactive.souleater or false
    state.Buff['Last Resort'] = buffactive['Last Resort'] or false
    -- Set the default to false if you'd rather SE always stay acitve
    state.SouleaterMode = M(false, 'Soul Eater Mode')
    -- state.LastResortMode = M(false, 'Last Resort Mode')
    -- Use Gavialis helm?
    use_gavialis = true

    -- Weaponskills you do NOT want Gavialis helm used with (only considered if use_gavialis = true)
    wsList = S{'Spiral Hell', 'Catastrophe', 'Torcleaver', 'Insurgency', 'Quietus', 'Cross Reaper'}
    -- Greatswords you use. 
    gsList = S{'Malfeasance', 'Macbain', 'Nanadaka', 'Mekosuchus Blade', 'Ragnarok', 'Raetic Algol', 'Raetic Algol +1', 'Caladbolg', 'Montante +1', 'Albion' }
    scytheList = S{'Liberator', 'Apocalypse', 'Anguta', 'Raetic Scythe', 'Deathbane', 'Twilight Scythe' }
    remaWeapons = S{'Apocalypse', 'Anguta', 'Liberator', 'Caladbolg', 'Ragnarok'}

    shields = S{'Rinda Shield'}
    -- Mote has capitalization errors in the default Absorb mappings, so we use our own
    absorbs = S{'Absorb-STR', 'Absorb-DEX', 'Absorb-VIT', 'Absorb-AGI', 'Absorb-INT', 'Absorb-MND', 'Absorb-CHR', 'Absorb-Attri', 'Absorb-ACC', 'Absorb-TP'}
    -- Offhand weapons used to activate DW mode
    swordList = S{"Sangarius", "Sangarius +1", "Usonmunku", "Perun +1", "Tanmogayi", "Naegling"}

    get_combat_form()
    get_combat_weapon()
    update_melee_groups()
end


-- Setup vars that are user-dependent.  Can override this function in a sidecar file.
function user_setup()
    -- Options: Override default values
    state.OffenseMode:options('Normal','STP','DA')
    state.WeaponskillMode:options('Normal', 'Mid', 'Acc')
    state.CastingMode:options('Normal', 'Acc')
    state.IdleMode:options('Town', 'Normal', 'Regen', 'Refresh', 'Weak')
    state.RestingMode:options('Normal')
    state.PhysicalDefenseMode:options('PDT', 'Reraise')
    state.MagicalDefenseMode:options('MDT')
	state.HybridMode:options('Normal', 'PDT')

    war_sj = player.sub_job == 'WAR' or false

    -- Additional local binds
    send_command('bind ^= gs c cycle treasuremode')
    send_command('bind != gs c toggle CapacityMode')
    send_command('bind @f9 gs c toggle SouleaterMode')
    send_command('bind !- gs equip sets.crafting')
	send_command('bind f1 gs c cycle OffenseMode')
	send_command('bind f10 gs c cycle PhysicalDefenseMode')
	send_command('bind f11 gs c cycle MagicalDefenseMode')
	send_command('bind f2 gs c cycle IdleMode')
    --send_command('bind ^` gs c toggle LastResortMode')

    select_default_macro_book()
end

-- Called when this job file is unloaded (eg: job change)
function file_unload()
    send_command('unbind ^`')
    send_command('unbind !=')
    send_command('unbind ^[')
    send_command('unbind ![')
    send_command('unbind @f9')
	send_command('unbind f1')
end


-- Define sets and vars used by this job file.
function init_gear_sets()
    --------------------------------------
    -- Start defining the sets
    --------------------------------------
    -- Augmented gear
    Niht = {name="Niht Mantle", augments={'Attack+10','Dark magic skill +8','"Drain" and "Aspir" potency +25'}}

    Ankou = {}
    Ankou.FC  = { name="Ankou's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+9','"Fast Cast"+10','Spell interruption rate down-4%',}}
    Ankou.STP = { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+5','"Store TP"+10','Damage taken-5%',}}
    Ankou.DA  = { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+2','"Dbl.Atk."+10',}}
    Ankou.WSD = { name="Ankou's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%','Damage taken-5%',}}
    Ankou.VIT = { name="Ankou's Mantle", augments={'VIT+1', 'Haste +10%',}}
	Ankou.INT = { name="Ankou's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','Mag. Acc.+10','"Fast Cast"+10','Spell interruption rate down-10%',}}

	Odyssean = {}
	Odyssean.Head = { name="Odyssean Helm", augments={'"Mag.Atk.Bns."+12','Pet: Crit.hit rate +4','Chance of successful block +4','Mag. Acc.+19 "Mag.Atk.Bns."+19',}}
    Odyssean.Body = { name="Odyss. Chestplate", augments={'"Mag.Atk.Bns."+24','"Fast Cast"+4','STR+1','Accuracy+13',}}
    Odyssean.Hands = { name="Odyssean Gauntlets", augments={'"Dbl.Atk."+2','INT+13','Accuracy+12 Attack+12','Mag. Acc.+17 "Mag.Atk.Bns."+17',}}
    Odyssean.Legs = { name="Odyssean Cuisses", augments={'INT+2','Potency of "Cure" effect received+4%','Accuracy+17 Attack+17','Mag. Acc.+17 "Mag.Atk.Bns."+17',}}
    Odyssean.Feet = { name="Odyssean Greaves", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','AGI+7','"Mag.Atk.Bns."+3',}}

    sets.TreasureHunter = {waist="Chaac Belt" }
     
    sets.Organizer = {}

    sets.precast.JA['Diabolic Eye'] = {hands="Fallen's Finger Gauntlets +3"}
    sets.precast.JA['Nether Void']  = {legs="Heathen's Flanchard +1"}
    sets.precast.JA['Dark Seal']    = {head="Fallen's burgeonet +3"}
    sets.precast.JA['Souleater']    = {head="Ignominy burgeonet +3"}
    sets.precast.JA['Weapon Bash']   = {hands="Ignominy Gauntlets +2",left_ring="Slayer's Ring"} --Skillchain Property
    sets.precast.JA['Blood Weapon'] = {body="Fallen's Cuirass +3"}
    sets.precast.JA['Last Resort']  = {feet="Fallen's Sollerets +3"}

    sets.WSDayBonus      = { head="Gavialis Helm" }
    sets.WSBack          = Ankou.WSD
    
    -- Earring considerations, given Lugra's day/night stats 
    sets.BrutalLugra     = { ear1="Brutal Earring", ear2="Lugra Earring" }
    sets.IshvaraLugra     = { ear1="Ishvara Earring", ear2="Lugra Earring" }
    sets.Lugra           = { ear1="Lugra Earring" }
    sets.Brutal          = { ear1="Brutal Earring" }
    sets.Ishvara          = { ear1="Ishvara Earring" }

    -- Waltz set (chr and vit) 
    -- sets.precast.Waltz = {}

    -- Fast cast sets for spells
    sets.precast.FC = {
    ammo="Impatiens",
    head={ name="Carmine Mask", augments={'Accuracy+10','DEX+10','MND+15',}},
    body={ name="Fall. Cuirass +3", augments={'Enhances "Blood Weapon" effect',}},
    hands={ name="Leyline Gloves", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
    legs="Arjuna Breeches",
    feet={ name="Carmine Greaves +1", augments={'MP+80','INT+12','MND+12',}},
    neck="Erra Pendant",
    waist="Austerity Belt +1",
    back=Ankou.INT,
    }

    sets.precast.FC['Elemental Magic'] = sets.precast.FC
    sets.precast.FC['Enfeebling Magic'] = sets.precast.FC
	sets.precast.FC['Dark Magic'] = set_combine(sets.precast.FC, {head={ name="Fall. Burgeonet +3", augments={'Enhances "Dark Seal" effect',}}})

    
    -- Midcast Sets
    sets.midcast.FastRecast =  sets.precast.FC

    
    -- sets.midcast.Trust =  {
    --     head={ name="Carmine Mask", augments={'Accuracy+10','DEX+10','MND+15',}},
    --     hands="Leyline Gloves",
    --     body="Fallen's Cuirass +3",
    --     legs="Arjuna Breeches",
    --     feet="Carmine Greaves +1"
    -- }
    sets.midcast["Apururu (UC)"] = set_combine(sets.midcast.Trust, {
        body="Apururu Unity shirt",
    })

    -- Specific spells
    sets.midcast.Utsusemi = sets.precast.FC

    sets.midcast['Dark Magic'] = {
    ammo="Strobilus",
    head="Pixi Hairpin +1",
    body={ name="Fall. Cuirass +3", augments={'Enhances "Blood Weapon" effect',}},
    hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}},
    legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}},
    feet="Ratri Sollerets +1",
    neck="Erra Pendant",
    waist="Austerity Belt +1",
    left_ear="Friomisi Earring",
    right_ear="Crematio Earring",
    left_ring="Archon Ring",
    right_ring="Evanescence Ring",
	back=Ankou.INT,
    }
    sets.midcast.Endark = sets.midcast['Dark Magic'] 

    sets.midcast['Dark Magic'].Acc = set_combine(sets.midcast['Dark Magic'], {
        head="Ratri Sallet +1", -- 45 macc
        hands="Ratri gadlings +1" -- 44 macc
        })

    sets.midcast['Enfeebling Magic'] = {
        ammo="Strobilus", 
        head={ name="Fall. Burgeonet +3", augments={'Enhances "Dark Seal" effect',}},
        neck="Erra Pendant", -- Dark Magic Skill 10 + 17 macc
        body="Ignominy Cuirass +3",
        hands="Ratri gadlings +1", -- 44 macc
        ring1="Stikini Ring +1", -- 11 macc
        ring2="Kishar Ring",
        waist="Austerity Belt +1",
        legs="Fallen's Flanchard +3",  -- Dark Magic Skill 18 + 39macc
        back=Ankou.INT,
        feet="Flamma Gambieras +2"
    }

    sets.midcast['Elemental Magic'] = {
        ammo="Strobilus", 
        head={ name="Odyssean Helm", augments={'"Mag.Atk.Bns."+12','Pet: Crit.hit rate +4','Chance of successful block +4','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
        neck="Eddy Necklace", -- macc 5, 11 matk
        ear1="Friomisi Earring", -- 10 matk
        right_ear="Crematio Earring", -- matk 6, mdmg +6
        body={ name="Fall. Cuirass +3", augments={'Enhances "Blood Weapon" effect',}}, -- macc 40, matk 60
        hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}}, -- macc 38, matk 62
        ring1="Fenrir Ring +1", -- macc/matk 3, mdmg 5
        ring2="Fenrir Ring +1", -- macc/matk 3, mdmg 5
        waist="Austerity Belt +1", -- macc/matk 7
        legs={ name="Odyssean Cuisses", augments={'INT+2','Potency of "Cure" effect received+4%','Accuracy+17 Attack+17','Mag. Acc.+17 "Mag.Atk.Bns."+17',}},
        back=Ankou.INT, -- macc 29, mdmg 20
        feet="Heathen's Sollerets +1" -- macc/matk 20, Occult Acumen 30
}
    -- Mix of HP boost, -Spell interruption%, and Dark Skill
    sets.midcast['Dread Spikes'] = set_combine(sets.midcast['Dark Magic'], {
        ammo="Strobilus",
        head="Ignominy Burgonet +3", -- 17
        left_ear="Friomisi Earring",
    right_ear="Crematio Earring",
        body="Heathen's Cuirass +1",
        hands="Fallen's Finger Gauntlets +3",
        back=Ankou.INT,
    })
    sets.midcast['Dread Spikes'].Acc = set_combine(sets.midcast['Dark Magic'], {
        body="Heathen's Cuirass +1",
        hands="Fallen's Finger Gauntlets +3"
    })

    -- Drain spells 
    sets.midcast.Drain = sets.midcast['Dark Magic']
    sets.midcast.Aspir = sets.midcast.Drain

    sets.midcast.Drain.Acc = set_combine(sets.midcast.Drain, {
        hands="Leyline Gloves",
        waist="Eschan Stone", -- macc/matk 7
    })
    sets.midcast.Aspir.Acc = sets.midcast.Drain.Acc

    sets.midcast.Drain.OhShit = set_combine(sets.midcast.Drain, {
        legs="Carmine Cuisses",
        feet="Ratri Sollerets +1"
	})

    -- Absorbs
    sets.midcast.Absorb = set_combine(sets.midcast['Dark Magic'], {
        head="Ignominy Burgonet +3", -- Absorb duration 20
		feet="Ratri Sollerets +1",
		ring2="Kishar Ring",
        back=Ankou.INT,
        })

    sets.midcast['Absorb-TP'] = set_combine(sets.midcast.Absorb, {
        hands="Heathen's Gauntlets +1",
        ring2="Kishar Ring",
    })

    sets.midcast['Absorb-TP'].Acc = set_combine(sets.midcast.Absorb.Acc, {
        hands="Heathen's Gauntlets +1",
        ring2="Kishar Ring",
    })
    sets.midcast.Absorb.Acc = set_combine(sets.midcast['Dark Magic'].Acc, {
        head="Flamma Zucchetto +2", -- 44 macc
        back=Ankou.INT,
        hands="Ratri gadlings +1",
        ring2="Kishar Ring",
	})

    -- Ranged for xbow
    sets.precast.RA = {}
    sets.midcast.RA = {}

    -- WEAPONSKILL SETS
    -- General sets
	-- Balanced (Acc and WSD) WSD +74
    sets.precast.WS = {
    ammo="Knobkierrie", --WSD +6
    head={ name="Fall. Burgeonet +3", augments={'Enhances "Dark Seal" effect',}},
    body="Ignominy Cuirass +3", --WSD +10
    hands="Ratri Gadlings +1", --WSD +8
    legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}}, --WSD +10
    feet="Ratri Sollerets +1", --WSD +8
    neck="Fotia Gorget", --WSA/WSD +10
    waist="Fotia Belt", --WSA/WSD +10
    left_ear="Telos Earring",
    right_ear="Ishvara Earring", --WSD +2
    left_ring="Chirich Ring",
    right_ring="Ifrit Ring +1",
    back=Ankou.WSD, -- WSD +10
	}
	
	-- CATASTROPHE
	-- 40% STR/40% INT
	-- +68% Catastrophe Damage
	sets.precast.WS['Catasrophe'] = {
    main="Apocalypse",
    sub="Utu Grip",
    ammo="Knobkierrie",
    head="Ratri Sallet +1",
    body="Ignominy Cuirass +3",
    hands="Rat. Gadlings +1",
    legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}},
    feet="Rat. Sollerets +1",
    neck="Abyssal Beads +2",
    waist="Fotia Belt",
    left_ear="Ishvara Earring",
    right_ear="Lugra Earring +1",
    left_ring="Niqmaddu Ring",
    right_ring="Ifrit Ring +1",
    back=Ankou.WSD,
}
		
    -- RESOLUTION
    -- 86-100% STR
    sets.precast.WS.Resolution = sets.precast.WS
    sets.precast.WS.Resolution.Acc = sets.precast.WS

    -- TORCLEAVER 
    -- VIT 80%
    sets.precast.WS.Torcleaver = sets.precast.WS
	
    sets.precast.WS.Torcleaver.Mid = set_combine(sets.precast.WS.Mid, {
        neck="Abyssal Bead Necklace +2",
    })
    sets.precast.WS.Torcleaver.Acc = sets.precast.WS.Torcleaver.Mid

    -- INSURGENCY
    -- 20% STR / 20% INT 
    -- Base set only used at 3000TP to put AM3 up
    sets.precast.WS.Insurgency = set_combine(sets.precast.WS, {head="Ratri Sallet +1"})
	   
    -- CROSS REAPER
    -- 60% STR / 60% MND
    sets.precast.WS['Cross Reaper'] = sets.precast.WS
    
    -- ENTROPY
    -- 86-100% INT 
    sets.precast.WS['Entropy'] = {
	ammo="Knobkierrie",
    head={ name="Odyssean Helm", augments={'"Mag.Atk.Bns."+12','Pet: Crit.hit rate +4','Chance of successful block +4','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
    body={ name="Fall. Cuirass +3", augments={'Enhances "Blood Weapon" effect',}},
    hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}},
    legs={ name="Fall. Flanchard +3", augments={'Enhances "Muted Soul" effect',}},
    feet="Ratri Sollerets +1",
    neck="Fotia Gorget",
    waist="Fotia Belt",
    left_ear="Friomisi Earring",
    right_ear="Ishvara Earring",
    left_ring="Fenrir Ring +1",
    right_ring="Stikini Ring +1",
    back=Ankou.WSD,
    }
    

    -- Quietus
    -- 60% STR / MND 
    sets.precast.WS['Quietus'] = sets.precast.WS['Catastrophe']
    
    -- SPIRAL HELL
    -- 50% STR / 50% INT 
    sets.precast.WS['Spiral Hell'] = sets.precast.WS['Catastrophe']

    -- SHADOW OF DEATH
    -- 40% STR 40% INT - Darkness Elemental
    sets.precast.WS['Shadow of Death'] = set_combine(sets.precast.WS['Entropy'], {
        head="Pixie Hairpin +1",
        neck="Eddy Necklace",
        })

    sets.precast.WS['Shadow of Death'].Mid = set_combine(sets.precast.WS['Shadow of Death'], sets.precast.WS.Mid, {
    })
    sets.precast.WS['Shadow of Death'].Acc = set_combine(sets.precast.WS['Shadow of Death'], sets.precast.WS.Acc, {
    })

    -- DARK HARVEST 
    -- 40% STR 40% INT - Darkness Elemental
    sets.precast.WS['Dark Harvest'] = sets.precast.WS['Shadow of Death']
    sets.precast.WS['Dark Harvest'].Mid = set_combine(sets.precast.WS['Shadow of Death'], {head="Ignominy Burgeonet +3", feet="Heathen's Sollerets +1"})
    sets.precast.WS['Dark Harvest'].Acc = set_combine(sets.precast.WS['Shadow of Death'], {head="Ignominy Burgeonet +3", feet="Heathen's Sollerets +1"})

    -- Sword WS's
    -- SANGUINE BLADE
    -- 50% MND / 50% STR Darkness Elemental
    sets.precast.WS['Sanguine Blade'] = set_combine(sets.precast.WS, {
        head="Pixie Hairpin +1",
        neck="Eddy Necklace",
        ear1="Friomisi Earring",
        body="Fallen's Cuirass +3",
        hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}},
        back=Ankou.WSD,
        feet="Heathen's Sollerets +1"
    })
    sets.precast.WS['Sanguine Blade'].Mid = set_combine(sets.precast.WS['Sanguine Blade'], sets.precast.WS.Mid)
    sets.precast.WS['Sanguine Blade'].Acc = set_combine(sets.precast.WS['Sanguine Blade'], sets.precast.WS.Acc)

    -- REQUISCAT
    -- 73% MND - breath damage
    sets.precast.WS.Requiescat = set_combine(sets.precast.WS, {
        head="Flamma Zucchetto +2",
        neck="Abyssal Bead Necklace +2",
        body="Ignominy Cuirass +3",
        hands={ name="Fall. Fin. Gaunt. +3", augments={'Enhances "Diabolic Eye" effect',}},
        waist="Fotia Belt",
    })
    sets.precast.WS.Requiescat.Mid = set_combine(sets.precast.WS.Requiscat, sets.precast.WS.Mid)
    sets.precast.WS.Requiescat.Acc = set_combine(sets.precast.WS.Requiscat, sets.precast.WS.Acc)

    -- Idle sets
    sets.idle.Town = {
		ranged="Mengado",
		head="Hjarrandi Helm",
        neck="Sanctity Necklace",
        body="Hjarrandi Breast.",
        hands="Sulevia's Gauntlets +2",
		left_ear="Telos Earring",
		right_ear="Cessance Earring",
        ring1="Chirich Ring +1",
        ring2="Stikini Ring +1",
        waist="Ioskeha Belt +1",
        legs="Carmine Cuisses",
        feet={ name="Fall. Sollerets +3", augments={'Enhances "Desperate Blows" effect',}},
		back=Ankou.STP,
    }

    sets.idle.Field = {
	head="Hjarrandi Helm", -- Haste 3%
    body="Hjarrandi Breast.", -- Haste 1%
    hands="Sulev. Gauntlets +2", -- Haste 3%
    legs="Carmine Cuisses",
    feet={ name="Fall. Sollerets +3", augments={'Enhances "Desperate Blows" effect',}},
    neck="Sanctity Necklace",
    waist="Flume Belt +1",
    left_ear="Telos Earring",
    right_ear="Cessance Earring",
    left_ring="Stikini Ring +1",
    right_ring="Chirich Ring +1",
    back=Ankou.VIT
    }
    sets.idle.Regen = set_combine(sets.idle.Field, {
        neck="Sanctity Necklace",
        body="Lugra Cloak +1",
        ring1="Chirich Ring +1",
		ring2="Chirish Ring +1"
    })
    sets.idle.Refresh = set_combine(sets.idle.Regen, {
        neck="Bale Choker",
		left_ring="Stikini Ring +1",
		right_ring="Stikini Ring +1"
    })

    sets.idle.Weak = set_combine(sets.defense.PDT, sets.Reraise)
	

    -- Defense sets
    sets.defense.PDT = {
    ammo="Brigantia Pebble", 
    head="Hjarrandi Helm", -- Haste 3%
    body="Hjarrandi Breast.", -- Haste 1%
    hands="Sulev. Gauntlets +2", -- Haste 3%
    legs="Sulev. Cuisses +2", -- Haste 2%
    feet="Sulev. Leggings +2", -- Haste 1%
    neck="Loricate Torque +1",
    waist="Flume Belt +1",
    left_ear="Thureous Earring",
    right_ear="Impreg. Earring",
    left_ring="Defending Ring",
    right_ring="Paguroidea Ring",
    back=Ankou.WSD,
    }
    sets.defense.Reraise = set_combine(sets.idle.Weak, {head="Twilight Helm",body="Twilight Mail"})

    sets.defense.MDT = set_combine(sets.defense.PDT, {ammo="Vanir Battery",waist="Asklepian Belt"})

    sets.Kiting = {
        legs="Carmine Cuisses",
    }

    sets.Reraise = {head="Twilight Helm",body="Twilight Mail"}
	

    
    -- Base set (global catch-all set)
	
    sets.engaged = {
    ammo="Ginsen",
    head="Hjarrandi Helm",
    body="Hjarrandi Breast.",
    hands="Sulev. Gauntlets +2",
    legs="Sulev. Cuisses +2",
    feet="Sulev. Leggings +2",
    neck="Abyssal Beads +2",
    waist="Ioskeha Belt +1",
    left_ear="Telos Earring",
    right_ear="Cessance Earring",
    left_ring="Chirich Ring +1",
    right_ring={name="Chirich Ring +1", bag="Wardrobe 3", priority=1},
    back=Ankou.STP,
}

	sets.engaged.STP = {
	ammo="Ginsen",
    head="Sulevia's Mask +2",
    body="Hjarrandi Breast.",
    hands="Flam. Manopolas +2",
    legs="Flamma Dirs +2",
    feet="Flam. Gambieras +2",
    neck="Abyssal Beads +2",
    waist="Kentarch Belt +1",
    left_ear="Telos Earring",
    right_ear="Cessance Earring",
    left_ring="Chirich Ring +1",
    right_ring="Chirich Ring +1",
    back=Ankou.STP,
}

    sets.engaged.DA = {
	ammo="Ginsen",
    head="Hjarrandi Helm",
    body="Hjarrandi Breast.",
    hands="Sulev. Gauntlets +2",
    legs="Ig. Flanchard +2",
    feet="Flam. Gambieras +2",
    neck="Abyssal Beads +2",
    waist="Ioskeha Belt +1",
    left_ear="Brutal Earring",
    right_ear="Cessance Earring",
    left_ring="Chirich Ring +1",
    right_ring="Chirich Ring +1",
    back=Ankou.DA,
}


	

	
    -- dual wield
	
    sets.engaged.DW = set_combine(sets.engaged, {
        waist="Patentia Sash",
        legs="Carmine Cuisses",
    })
    sets.engaged.DW.Mid = set_combine(sets.engaged.DW, {
        neck="Abyssal Bead Necklace +2",
    })
    

    -- single wield (sword + shield possibly)
	
    sets.engaged.SW = {}
    sets.engaged.SW.Mid = set_combine(sets.engaged.Mid, {})
    sets.engaged.SW.Acc = set_combine(sets.engaged.Acc, {})

    sets.engaged.Reraise = set_combine(sets.engaged, {
        head="Twilight Helm",
        neck="Loricate Torque +1",
        body="Twilight Mail"
    })

    sets.buff.Souleater = { 
        head="Ignominy Burgonet +3",
        --body="Ratri Breastplate",
    }

    sets.buff['Last Resort'] = { 
    feet="Fallen's Sollerets +3" 
    }
end

function job_pretarget(spell, action, spellMap, eventArgs)
    if spell.type:endswith('Magic') and buffactive.silence then
        eventArgs.cancel = true
        send_command('input /item "Echo Drops" <me>')
    end
end

function job_pretarget(spell, action, spellMap, eventArgs)
    if spell.type:endswith('Magic') and buffactive.cursed then
        eventArgs.cancel = true
        send_command('input /item "Holy Water" <me>')
    end
end

-- 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)
    aw_custom_aftermath_timers_precast(spell)
end

function job_post_precast(spell, action, spellMap, eventArgs)
    local recast = windower.ffxi.get_ability_recasts()
    -- Make sure abilities using head gear don't swap 
    if spell.type:lower() == 'weaponskill' then
        -- handle Gavialis Helm
        -- if use_gavialis then
        --     if is_sc_element_today(spell) then
        --         if wsList:contains(spell.english) then
        --             -- do nothing
        --         else
        --             equip(sets.WSDayBonus)
        --         end
        --     end
        -- end
        -- CP mantle must be worn when a mob dies, so make sure it's equipped for WS.
        if state.CapacityMode.value then
            equip(sets.CapacityMantle)
        end

        -- if spell.english == 'Entropy' and recast[95] == 0 then
        --     eventArgs.cancel = true
        --     send_command('@wait 4.0;input /ja "Consume Mana" <me>')
        --     --windower.chat.input:schedule(1, '/ws "Entropy" <t>')
        --     return
        -- end

        if player.tp > 2999 then
            if wsList:contains(spell.english) then
                equip(sets.IshvaraLugra)
            else
                equip(sets.BrutalLugra)
            end
        else -- use Lugra + moonshade
            if world.time >= (17*60) or world.time <= (7*60) then
                equip(sets.Lugra)
            else
                if wsList:contains(spell.english) then
                    equip(sets.Ishvara)
                else
                    equip(sets.Brutal)
                end
            end
        end
    end
end

-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_midcast(spell, action, spellMap, eventArgs)
end

-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
    if spell.english:startswith('Drain') then
        if player.status == 'Engaged' and state.CastingMode.current == 'Normal' and player.hpp < 70 then
            classes.CustomClass = 'OhShit'
        end
    end

    if (state.HybridMode.current == 'PDT' and state.PhysicalDefenseMode.current == 'Reraise') then
        equip(sets.Reraise)
    end
end

-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
    aw_custom_aftermath_timers_aftercast(spell)
    if state.Buff[spell.english] ~= nil then
        state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
    end
end

function job_post_aftercast(spell, action, spellMap, eventArgs)
    if spell.type == 'WeaponSkill' then
        if state.Buff.Souleater and state.SouleaterMode.value then
            send_command('@wait 1.0;cancel souleater')
            --enable("head")
        end
    end
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
-- Called before the Include starts constructing melee/idle/resting sets.
-- Can customize state or custom melee class values at this point.
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_handle_equipping_gear(status, eventArgs)
end
-- Modify the default idle set after it was constructed.
function customize_idle_set(idleSet)
    if player.mpp < 70 then
        idleSet = set_combine(idleSet, sets.idle.Refresh)
    end
    if player.hpp < 70 then
        idleSet = set_combine(idleSet, sets.idle.Regen)
    end
    if state.IdleMode.current == 'Sphere' then
        idleSet = set_combine(idleSet, sets.idle.Sphere)
    end
    if state.HybridMode.current == 'PDT' then
        idleSet = set_combine(idleSet, sets.defense.PDT)
    end
    return idleSet
end

-- Modify the default melee set after it was constructed.
function customize_melee_set(meleeSet)
    if state.TreasureMode.value == 'Fulltime' then
        meleeSet = set_combine(meleeSet, sets.TreasureHunter)
    end
    if state.CapacityMode.value then
        meleeSet = set_combine(meleeSet, sets.CapacityMantle)
    end
    if state.Buff['Souleater'] then
        meleeSet = set_combine(meleeSet, sets.buff.Souleater)
    end
    --meleeSet = set_combine(meleeSet, select_earring())
    return meleeSet
end

-------------------------------------------------------------------------------------------------------------------
-- General hooks for other events.
-------------------------------------------------------------------------------------------------------------------

-- Called when the player's status changes.
function job_status_change(newStatus, oldStatus, eventArgs)
    if newStatus == "Engaged" then
        --if state.Buff['Last Resort'] then
        --    send_command('@wait 1.0;cancel hasso')
        --end
        -- handle weapon sets
    if remaWeapons:contains(player.equipment.main) then
        state.CombatWeapon:set(player.equipment.main)
    end
        -- if gsList:contains(player.equipment.main) then
        --     state.CombatWeapon:set("GreatSword")
        -- elseif scytheList:contains(player.equipment.main) then
        --     state.CombatWeapon:set("Scythe")
        -- elseif remaWeapons:contains(player.equipment.main) then
        --     state.CombatWeapon:set(player.equipment.main)
        -- else -- use regular set, which caters to Liberator
        --     state.CombatWeapon:reset()
        -- end
        --elseif newStatus == 'Idle' then
        --    determine_idle_group()
    end
end

-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)

    if state.Buff[buff] ~= nil then
        handle_equipping_gear(player.status)
    end

    if S{'haste', 'march', 'embrava', 'geo-haste', 'indi-haste', 'last resort'}:contains(buff:lower()) then
        if (buffactive['Last Resort']) then
            if (buffactive.embrava or buffactive.haste) and buffactive.march then
                state.CombatForm:set("Haste")
                if not midaction() then
                    handle_equipping_gear(player.status)
                end
            end
        else
            if state.CombatForm.current ~= 'DW' and state.CombatForm.current ~= 'SW' then
                state.CombatForm:reset()
            end
            if not midaction() then
                handle_equipping_gear(player.status)
            end
        end
    end
    -- Drain II/III HP Boost. Set SE to stay on.
    if buff == "Max HP Boost" and state.SouleaterMode.value then
        if gain or buffactive['Max HP Boost'] then
            state.SouleaterMode:set(false)
        else
            state.SouleaterMode:set(true)
        end
    end
    -- Make sure SE stays on for BW
    if buff == 'Blood Weapon' and state.SouleaterMode.value then
        if gain or buffactive['Blood Weapon'] then
            state.SouleaterMode:set(false)
        else
            state.SouleaterMode:set(true)
        end
    end
    -- AM custom groups
    if buff:startswith('Aftermath') then
        if player.equipment.main == 'Liberator' then
            classes.CustomMeleeGroups:clear()

            if (buff == "Aftermath: Lv.3" and gain) or buffactive['Aftermath: Lv.3'] then
                classes.CustomMeleeGroups:append('AM3')
                add_to_chat(8, '-------------Mythic AM3 UP-------------')
            -- elseif (buff == "Aftermath: Lv.3" and not gain) then
            --     add_to_chat(8, '-------------Mythic AM3 DOWN-------------')
            end

            if not midaction() then
                handle_equipping_gear(player.status)
            end
        else
            classes.CustomMeleeGroups:clear()

            if buff == "Aftermath" and gain or buffactive.Aftermath then
                classes.CustomMeleeGroups:append('AM')
            end

            if not midaction() then
                handle_equipping_gear(player.status)
            end
        end
    end
    
    -- if  buff == "Samurai Roll" then
    --     classes.CustomRangedGroups:clear()
    --     if (buff == "Samurai Roll" and gain) or buffactive['Samurai Roll'] then
    --         classes.CustomRangedGroups:append('SamRoll')
    --     end
       
    -- end

    --if buff == "Last Resort" then
    --    if gain then
    --        send_command('@wait 1.0;cancel hasso')
    --    else
    --        if not midaction() then
    --            send_command('@wait 1.0;input /ja "Hasso" <me>')
    --        end
    --    end
    --end
end


-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------

-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)

    war_sj = player.sub_job == 'WAR' or false
    get_combat_form()
    get_combat_weapon()
    update_melee_groups()
    select_default_macro_book()
end

-- State buff checks that will equip buff gear and mark the event as handled.
function check_buff(buff_name, eventArgs)
    if state.Buff[buff_name] then
        equip(sets.buff[buff_name] or {})
        if state.TreasureMode.value == 'SATA' or state.TreasureMode.value == 'Fulltime' then
            equip(sets.TreasureHunter)
        end
        eventArgs.handled = true
    end
end
-- Check for various actions that we've specified in user code as being used with TH gear.
-- This will only ever be called if TreasureMode is not 'None'.
-- Category and Param are as specified in the action event packet.
--function th_action_check(category, param)
--    if category == 2 or -- any ranged attack
--        --category == 4 or -- any magic action
--        (category == 3 and param == 30) or -- Aeolian Edge
--        (category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
--        (category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
--        then 
--            return true
--    end
--end
-- function get_custom_wsmode(spell, spellMap, default_wsmode)
--     if state.OffenseMode.current == 'Mid' then
--         if buffactive['Aftermath: Lv.3'] then
--             return 'AM3Mid'
--         end
--     elseif state.OffenseMode.current == 'Acc' then
--         if buffactive['Aftermath: Lv.3'] then
--             return 'AM3Acc'
--         end
--     else
--         if buffactive['Aftermath: Lv.3'] then
--             return 'AM3'
--         end
--     end
-- end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
function get_combat_form()

    if S{'NIN', 'DNC'}:contains(player.sub_job) and swordList:contains(player.equipment.main) then
        state.CombatForm:set("DW")
    --elseif player.equipment.sub == '' or shields:contains(player.equipment.sub) then
    elseif swordList:contains(player.equipment.main) then
        state.CombatForm:set("SW")
    elseif buffactive['Last Resort'] then
        if (buffactive.embrava or buffactive.haste) and buffactive.march then
            add_to_chat(8, '-------------Delay Capped-------------')
            state.CombatForm:set("Haste")
        else
            state.CombatForm:reset()
        end
    else
        state.CombatForm:reset()
    end
end

function get_combat_weapon()
    state.CombatWeapon:reset()
    if remaWeapons:contains(player.equipment.main) then
        state.CombatWeapon:set(player.equipment.main)
    end
    -- if remaWeapons:contains(player.equipment.main) then
    --     state.CombatWeapon:set(player.equipment.main)
    -- elseif gsList:contains(player.equipment.main) then
    --     state.CombatWeapon:set("GreatSword")
    -- elseif scytheList:contains(player.equipment.main) then
    --     state.CombatWeapon:set("Scythe")
    -- end
end

function aw_custom_aftermath_timers_precast(spell)
    if spell.type == 'WeaponSkill' then
        info.aftermath = {}

        local mythic_ws = "Insurgency"

        info.aftermath.weaponskill = mythic_ws
        info.aftermath.duration = 0

        info.aftermath.level = math.floor(player.tp / 1000)
        if info.aftermath.level == 0 then
            info.aftermath.level = 1
        end

        if spell.english == mythic_ws and player.equipment.main == 'Liberator' then
            -- nothing can overwrite lvl 3
            if buffactive['Aftermath: Lv.3'] then
                return
            end
            -- only lvl 3 can overwrite lvl 2
            if info.aftermath.level ~= 3 and buffactive['Aftermath: Lv.2'] then
                return
            end

            if info.aftermath.level == 1 then
                info.aftermath.duration = 90
            elseif info.aftermath.level == 2 then
                info.aftermath.duration = 120
            else
                info.aftermath.duration = 180
            end
        end
    end
end

-- Call from job_aftercast() to create the custom aftermath timer.
function aw_custom_aftermath_timers_aftercast(spell)
    if not spell.interrupted and spell.type == 'WeaponSkill' and
        info.aftermath and info.aftermath.weaponskill == spell.english and info.aftermath.duration > 0 then

        local aftermath_name = 'Aftermath: Lv.'..tostring(info.aftermath.level)
        send_command('timers d "Aftermath: Lv.1"')
        send_command('timers d "Aftermath: Lv.2"')
        send_command('timers d "Aftermath: Lv.3"')
        send_command('timers c "'..aftermath_name..'" '..tostring(info.aftermath.duration)..' down abilities/aftermath'..tostring(info.aftermath.level)..'.png')

        info.aftermath = {}
    end
end

function display_current_job_state(eventArgs)
    local msg = ''
    msg = msg .. 'Offense: '..state.OffenseMode.current
    msg = msg .. ', Hybrid: '..state.HybridMode.current

    if state.DefenseMode.value ~= 'None' then
        local defMode = state[state.DefenseMode.value ..'DefenseMode'].current
        msg = msg .. ', Defense: '..state.DefenseMode.value..' '..defMode
    end
    if state.CombatForm.current ~= '' then 
        msg = msg .. ', Form: ' .. state.CombatForm.current 
    end
    if state.CombatWeapon.current ~= '' then 
        msg = msg .. ', Weapon: ' .. state.CombatWeapon.current 
    end
    if state.CapacityMode.value then
        msg = msg .. ', Capacity: ON, '
    end
    if state.SouleaterMode.value then
        msg = msg .. ', SE Cancel, '
    end
    -- if state.LastResortMode.value then
    --     msg = msg .. ', LR Defense, '
    -- end
    if state.PCTargetMode.value ~= 'default' then
        msg = msg .. ', Target PC: '..state.PCTargetMode.value
    end
    if state.SelectNPCTargets.value then
        msg = msg .. ', Target NPCs'
    end

    add_to_chat(123, msg)
    eventArgs.handled = true
end

-- Set eventArgs.handled to true if we don't want the automatic display to be run.
-- Handle notifications of general user state change.
function job_state_change(stateField, newValue, oldValue)
end

-- Creating a custom spellMap, since Mote capitalized absorbs incorrectly
function job_get_spell_map(spell, default_spell_map)
    if spell.skill == 'Dark Magic' and absorbs:contains(spell.english) then
        return 'Absorb'
    end
    -- if spell.type == 'Trust' then
    --     return 'Trust'
    -- end
end

function select_earring()
    if world.time >= (17*60) or world.time <= (7*60) then
        return sets.Lugra
    else
        return sets.Brutal
    end
end

function update_melee_groups()

    classes.CustomMeleeGroups:clear()
    -- mythic AM	
    if player.equipment.main == 'Liberator' then
        if buffactive['Aftermath: Lv.3'] then
            classes.CustomMeleeGroups:append('AM3')
        end
    else
        -- relic AM
        if buffactive['Aftermath'] then
            classes.CustomMeleeGroups:append('AM')
        end
        -- if buffactive['Samurai Roll'] then
        --     classes.CustomRangedGroups:append('SamRoll')
        -- end
    end
end

function select_default_macro_book()
    -- Default macro set/book
        -- set_macro_page(5, 4)
    -- if player.sub_job == 'DNC' then
    --     set_macro_page(8, 4)
    if scytheList:contains(player.equipment.main) then
        set_macro_page(9, 8)
    elseif gsList:contains(player.equipment.main) then
        set_macro_page(1, 8)
    elseif player.sub_job == 'SAM' then
        set_macro_page(2, 8)
    elseif swordList:contains(player.equipment.main) then
        set_macro_page(7, 8)
    end
	end
your gearswap is Selindrile's base
https://github.com/Selindrile/GearSwap
Nah, that’s mine. Been around a few years before sels.

The base is just vanilla mote, which Selindrile uses as well.
Offline
Posts: 356
By Galkapryme 2019-12-27 09:54:26  
Whichever of you made it...I appreciate it.
Offline
Posts: 356
By Galkapryme 2019-12-27 09:57:24  
Current "balanced" melee set (not particularly STP, nor DA, nor Acc, nor Attk).

Apoc is R15, Abbysal beads +2 is R25, Cape is STR, Acc/Attk, STP, and DT-5%.

Overall, STP = 50, DA = 25, TA = 4

ItemSet 370422

I'll post my straight STP and DA sets later.
Offline
Posts: 356
By Galkapryme 2019-12-27 10:20:32  
STP set is 81 ~ 85. DA set is 50. The lower DEF and attack power are why I rarely use either of these sets.


ItemSet 370423

ItemSet 370424
Offline
Posts: 356
By Galkapryme 2019-12-27 10:21:34  
I don't have Moonshade Earring yet, but other than that, if anyone can offer any suggestions on strengthening any of these sets, I'd appreciate it.
By volkom 2019-12-27 11:04:47  
i feel like you could find something better for stp on legs/hands/head and that could free up your ring slots for things like a hetairoi ring or a Niqmaddu ring ~ also more haste would be good (not sure if you're taking the AM effect into consideration in your set tho...)

just my 2cents D:
 Bahamut.Celebrindal
Offline
サーバ: Bahamut
Game: FFXI
Posts: 1798
By Bahamut.Celebrindal 2019-12-27 11:11:57  
using both Hjarrandi piece "usually" means needing to use a waist like Tempus Fugit to make up for the zero haste on either piece. One option if you want to keep your Ioskeha+1....go with Emicho+1 hands/body in your DA set. But yeah, you need to hit 25/26% haste for your DA set- your current sets hits....19%

Augmented Ody legs are an option for your STP legs.
 Siren.Kyte
Offline
サーバ: Siren
Game: FFXI
Posts: 3332
By Siren.Kyte 2019-12-27 13:03:31  
They're Apoc sets so they don't necessarily need to cap gear haste.
 Bahamut.Celebrindal
Offline
サーバ: Bahamut
Game: FFXI
Posts: 1798
By Bahamut.Celebrindal 2019-12-27 13:04:55  
Siren.Kyte said: »
They're Apoc sets so they don't necessarily need to cap gear haste.


Ahh. As a DRK w/o Apoc (atm I only use DRK for large scale content where I'll be @magical haste cap and have healers) I never really contemplate that fact. Ty for correction.
Offline
Posts: 9078
By SimonSes 2019-12-27 13:52:19  
Siren.Kyte said: »
They're Apoc sets so they don't necessarily need to cap gear haste.

Just to not make people confused. Apoc or not Apoc is only relevant with Last Resort down and with LR down you can only let yourself not to cap gear haste when you also have hasso and magic haste is capped.
 Asura.Geriond
Offline
サーバ: Asura
Game: FFXI
user: Gerion
Posts: 3185
By Asura.Geriond 2019-12-27 13:57:57  
That's not true; they changed Catastrophe to Gear haste several years back, so Apoc never needs to cap gear haste as long as they keep AM up.
 Sylph.Wasenshi
Offline
サーバ: Sylph
Game: FFXI
user: Senshi
Posts: 142
By Sylph.Wasenshi 2019-12-27 13:58:11  
Siren.Kyte said: »
They're Apoc sets so they don't necessarily need to cap gear haste.
AG Apoc is considered JA haste so you need gear haste still
 Lakshmi.Buukki
Offline
サーバ: Lakshmi
Game: FFXI
By Lakshmi.Buukki 2019-12-27 14:06:18  
Asura.Geriond said: »
That's not true; they changed Catastrophe to Gear haste several years back, so Apoc never needs to cap gear haste as long as they keep AM up.

The 119 III version is JA haste
[+]
Online
Posts: 3551
By Taint 2019-12-27 14:18:13  
Asura.Geriond said: »
That's not true; they changed Catastrophe to Gear haste several years back, so Apoc never needs to cap gear haste as long as they keep AM up.


It was always gear haste until AGIII. It’s one of the reasons 2008ish Apoc was broken.
 Asura.Mims
Offline
サーバ: Asura
Game: FFXI
user: Ginza
Posts: 256
By Asura.Mims 2019-12-27 15:53:48  
eeternal said: »
How's infernal scythe damage wise in Dynamis especially with x2 dark weather
Infernal Scythe is good for its attack down, but Shadow of Death scales better with TP and self-skillchains. Also Infernal Scythe has no dstat term, which hurts it in comparison.

In most situations there isn't much reason to use magic WS on Drk, but Dynamis San d'Oria is an exception. Even if your group is focusing on green eye pulls, blue eyes happen. For this reason, Liberator is king for wave 1 and 2. Insurgency for Green eyes, Shadow of Death for Blue eyes, and you can flexibly switch as needed while maintaining mythic AM3. TP overflow with Liberator is a big deal, and while Infernal might win when spammed at 1k TP on paper, when cracked out on buffs and battling dynamis lag Shadow of Death is always going to be at least as good, if not better. Trying to remember off the top of my head, I think Infernal was doing 13-17k per WS, where SoD was doing 13-38k with big variance for TP. That should be without malaise or magic buffs, and my gear may have improved since then. Also SoD to SoD will make Fragmentation, which is an added bonus. I suppose Anguta would probably be able to function similarly if you don't have Liberator.

This is my current Shadow of Death set:
ItemSet 370426
One question thats been bugging me for quite a while is how much Scythe Skill affects magic accuracy, and if there is a difference between skill+ on weapon and skill+ in other slots. I know it makes a difference, (See Leaden on Anarchy+2 vs any ilvl gun) but how much and in what way isn't clear.
 Bahamut.Celebrindal
Offline
サーバ: Bahamut
Game: FFXI
Posts: 1798
By Bahamut.Celebrindal 2019-12-27 16:50:51  
Asura.Mims said: »
One question thats been bugging me for quite a while is how much Scythe Skill affects magic accuracy, and if there is a difference between skill+ on weapon and skill+ in other slots. I know it makes a difference, (See Leaden on Anarchy+2 vs any ilvl gun) but how much and in what way isn't clear.

Your question got me wondering, and I found it easier to use my polished COR for some testing vs my fledgling DRK.

Leaden Salute, 3k TP, no buffs/trusts, using Chrono Bullets:

#1. Target: Sylvestre lv. 18 outside of Mhaura, using Fomalhaut: 35406.

#2. Target: Sylvestre lv. 18 outside Mhaura, using Ataktos (final form of Anarchy+2): 30106.

5300 dmg increase just due to increased base dmg from weapon (53 vs 174- my Foma is R13 not R15), added magic damage. Macc should not have been an issue here.

Leaden Salute, 3k TP, no buffs/trusts(this set will have vorseals active of course), using Chrono Bullets again:

#3. Target: Agitated Chapuli lv124 Reisenjima portal #3, using Fomalhaut: 39000.

#4. Target: Agitated Chapuli lv124 Reisenjima porta #3, using Ataktos: 35186

3814 damage difference.

So for unresisted damage, the gap exists but isn't nearly as much as one would expect. In a (VERY) quick test of general macc with the weapon, I did 10 1.2k~1.5k TP leadens w/ the Ataktos. Various mobs @ the #3 portal in Reisenjima, varying from lv123-125.

33,136
29,281
29,610
32,733
29,758
29,465
31,718
16,121
33,463
32,287


For this "test" I did a mild alteration of my standard Leaden Salute builds: No MAB weapons, no MAB bullet. So that means here was my following set:

RostamA-------RostamC------------(varied gun)----Chrono Bullet
Pixie+1-------JSE+1 neck----------Friomisi-------Ishvara
lanun+3 body--Carmine+1 hands-----Dingir---------Achon
JSE cape------sveltesse gouriz+1--herc trousers--lanun+3 feet

Notes:

-JSE+1 neck is 20/20.
-Ishvara is an auto swap when above 2749TP for Moonshade(TP bonus)
-Carmine +1 hands are Path D
-JSE cape is 30AGI,20racc,20ratk,10% WSD. No sep magical WS cape for COR, storage blahblah....
-herculean trousers: acc/atk+6, mab/macc+20, WSD+5%

So the set isn't incredibly loaded with macc, esp without using Living Bullets. the x2 Rostams do provide a total of +100 macc though, since the racc/acc/macc on them works in both hands, not just mainhand.

I'm now intrigued. I may toy with sets that drop me to just the threshold of being able to above 90% land an unresisted Leaden w/ Fomalhaut, then drop to Ataktos in the same set.

LONG STORY SHORT: My gut was that raw acc, be it from just acc or from +combat skill, doesn't affect magical Weaponskills accuracy in terms of damage. Since they cannot "miss" like a physical weaponskill, it relies on the macc for that aspect. It seems that is the case.
 Ramuh.Austar
Offline
サーバ: Ramuh
Game: FFXI
user: Austar
Posts: 10481
By Ramuh.Austar 2019-12-27 17:05:06  
Asura.Mims said: »
Infernal Scythe is good for its attack down, but Shadow of Death scales better with TP and self-skillchains. Also Infernal Scythe has no dstat term, which hurts it in comparison.
infernal is 3.5 at all values, shadow is 1 to 3. the dstat is also pretty unimportant. it's 32 damage after everything besides mab and affinities. mods alone from infernal will surpass that
 Ramuh.Austar
Offline
サーバ: Ramuh
Game: FFXI
user: Austar
Posts: 10481
By Ramuh.Austar 2019-12-27 17:25:23  
Asura.Mims said: »
One question thats been bugging me for quite a while is how much Scythe Skill affects magic accuracy, and if there is a difference between skill+ on weapon and skill+ in other slots. I know it makes a difference, (See Leaden on Anarchy+2 vs any ilvl gun) but how much and in what way isn't clear.
magic accuracy is affected by the skill of the weapon using the ws, but the skill on i level weapons don't add the combat skill, just the magic accuracy skill. pieces that actually show an increase in your skill screen should apply both, but we don't know how much m.acc you get from skill.
 Asura.Mims
Offline
サーバ: Asura
Game: FFXI
user: Ginza
Posts: 256
By Asura.Mims 2019-12-27 17:53:45  
Ramuh.Austar said: »
infernal is 3.5 at all values, shadow is 1 to 3. the dstat is also pretty unimportant. it's 32 damage after everything besides mab and affinities. mods alone from infernal will surpass that
I'm aware thats what BG says for SoD, but I'm pretty sure that info is outdated. I don't think Shadow of Death has been retested after the june 2014 update. I should probably do some more testing in a bit, but in Dyna SoD has performed far better than Infernal for me, with almost identical gear.
 Ramuh.Austar
Offline
サーバ: Ramuh
Game: FFXI
user: Austar
Posts: 10481
By Ramuh.Austar 2019-12-27 17:59:46  
would only take three ws, one at 1k, 2k, and 3k each. preferably with a 119 weapon that doesn't have magic damage on it
First Page 2 3 ... 180 181 182 ... 209 210 211