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.
(Don't) Fear The Reaper: A Dark Knight Guide |
||
|
(Don't) Fear the Reaper: A Dark Knight Guide
Offline
Posts: 9078
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. 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.
Activation of the JA only.
Only the relic head has to be actually worn to get the effects of the augment for seal 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
can some one post a updated lua link please
Offline
Posts: 356
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
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.
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. 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 https://github.com/Selindrile/GearSwap Offline
Posts: 270
How's infernal scythe damage wise in Dynamis especially with x2 dark weather
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 https://github.com/Selindrile/GearSwap The base is just vanilla mote, which Selindrile uses as well. Offline
Posts: 356
Whichever of you made it...I appreciate it.
Offline
Posts: 356
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
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
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.
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
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
They're Apoc sets so they don't necessarily need to cap gear haste.
Bahamut.Celebrindal
Offline
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
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. 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.
Siren.Kyte said: » They're Apoc sets so they don't necessarily need to cap gear haste. Lakshmi.Buukki
Offline
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
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. eeternal said: » How's infernal scythe damage wise in Dynamis especially with x2 dark weather 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
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. 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. 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. 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 |
|
All FFXI content and images © 2002-2024 SQUARE ENIX CO., LTD. FINAL
FANTASY is a registered trademark of Square Enix Co., Ltd.
|