Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Initialization function for this job file.
- function get_sets()
- mote_include_version = 2
- -- Load and initialize the include file.
- include('Mote-Include.lua')
- res = require 'resources'
- end
- -- Setup vars that are user-independent.
- function job_setup()
- -- /BLU Spell Maps
- blue_magic_maps = {}
- blue_magic_maps.Enmity = S{'Blank Gaze', 'Jettatura', 'Soporific',
- 'Poison Breath', 'Blitzstrahl', 'Sheep Song', 'Chaotic Eye'}
- no_swap_gear = S{"Warp Ring", "Dim. Ring (Dem)", "Dim. Ring (Holla)", "Dim. Ring (Mea)",
- "Trizek Ring", "Echad Ring", "Facility Ring", "Capacity Ring", "Emporox's Ring",
- "Smithy's Torque", "Midras's Helm +1",}
- elemental_ws = S{"Aeolian Edge"}
- lockstyleset = 7
- end
- --MERITS 5/5 Sentinel 5/5 Rampart 4/5 Fealty 1/5 Chivalry 5/5 Guardian
- -------------------------------------------------------------------------------------------------------------------
- -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
- -------------------------------------------------------------------------------------------------------------------
- function user_setup()
- state.OffenseMode:options('Tank', 'Atk')
- state.WeaponskillMode:options('Normal', 'Acc')
- state.HybridMode:options('Normal', 'DT')
- state.CastingMode:options('Normal', 'Resistant')
- state.IdleMode:options('Normal', 'DT', 'Phlx')
- state.PhysicalDefenseMode:options('PDT')
- state.MagicalDefenseMode:options('MDT')
- state.Knockback = M(false, 'Knockback')
- state.WeaponSet = M{['description']='Weapon Set', 'Phys', 'Magic',}
- state.CP = M(false, "Capacity Points Mode")
- state.WeaponLock = M(false, 'Weapon Lock')
- -- Additional local binds
- --send_command('bind 1 input /ws "Savage Blade" <t>')
- send_command('bind 1 input /ws "Aeolian Edge" <t>')
- send_command('bind ` input /ma "Cure" <me>')
- send_command('bind ^` input /ma "Cure" <stal>')
- send_command('bind @` input /ja "Majesty" <me>')
- send_command('bind !` input /ma "Cocoon" <me>')
- send_command('bind ^f11 gs c cycle MagicalDefenseMode')
- send_command('bind @c gs c toggle CP')
- send_command('bind !r gs c cycle WeaponSet')
- send_command('bind @r gs c cycle WeaponSet')
- send_command('bind @w gs c toggle WeaponLock')
- send_command('bind @k gs c toggle Knockback')
- send_command('bind delete input /jump')
- send_command('bind !^` input /ja "Invincible" <me>')
- select_default_macro_book()
- set_lockstyle()
- state.Auto_Kite = M(false, 'Auto_Kite')
- moving = false
- end
- function user_unload()
- send_command('unbind 1')
- send_command('unbind `')
- send_command('unbind ^`')
- send_command('unbind !`')
- send_command('unbind ^f11')
- send_command('unbind ^insert')
- send_command('unbind ^delete')
- send_command('unbind @a')
- -- send_command('unbind @c')
- send_command('unbind @`')
- send_command('unbind @d')
- send_command('unbind !q')
- send_command('unbind @w')
- send_command('unbind @e')
- send_command('unbind !r')
- send_command('unbind @r')
- send_command('unbind !o')
- send_command('unbind !p')
- send_command('unbind ^,')
- send_command('unbind @w')
- send_command('unbind ^numpad/')
- send_command('unbind ^numpad*')
- send_command('unbind ^numpad-')
- send_command('unbind ^numpad7')
- send_command('unbind ^numpad9')
- send_command('unbind ^numpad5')
- send_command('unbind ^numpad1')
- send_command('unbind @numpad*')
- send_command('unbind delete')
- send_command('unbind #`')
- send_command('unbind #1')
- send_command('unbind #2')
- send_command('unbind #3')
- send_command('unbind #4')
- send_command('unbind #5')
- send_command('unbind #6')
- send_command('unbind #7')
- send_command('unbind #8')
- send_command('unbind #9')
- send_command('unbind #0')
- end
- -- Define sets and vars used by this job file.
- function init_gear_sets()
- ------------------------------------------------------------------------------------------------
- ---------------------------------------- Precast Sets ------------------------------------------
- ------------------------------------------------------------------------------------------------
- -- Enmity sets
- sets.Enmity = {
- ammo="Sapience orb", --2
- head="Loess barbuta +1", --24
- body="Souv. Cuirass +1", --20
- hands="Souv. Handsch. +1", --9
- legs="Souv. Diechlings +1", --9
- feet="Eschite Greaves", --15
- neck="Unmoving collar +1", --10
- left_ear="Cryptic Earring", --4
- right_ear="Odnowa Earring +1", --0
- left_ring="Eihwaz ring", --5
- right_ring="Apeile Ring +1", --9
- back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Chance of successful block +5',}}, --10
- waist="Creed Baudrier", --5
- } --105
- -- JA SECTION --
- sets.precast.JA['Fealty'] = set_combine(sets.Enmity,{body="Cab. Surcoat"})
- sets.precast.JA['Sentinel'] = set_combine(sets.Enmity,{feet="Cab. Leggings +3"})
- sets.precast.JA['Shield Bash'] = set_combine(sets.Enmity,{hands="Cab. Gauntlets +2"})
- sets.precast.JA['Chivalry'] = set_combine(sets.Enmity,{hands="Cab. Gauntlets +2"})
- sets.precast.JA['Invincible'] = set_combine(sets.Enmity,{legs="Cab. Breeches"})
- sets.precast.JA['Rampart'] = set_combine(sets.Enmity,{head="Cab. Coronet"})
- sets.precast.JA['Holy Circle'] = set_combine(sets.Enmity,{feet="Gallant Leggings"})
- sets.precast.JA['Majesty'] = sets.Enmity
- sets.precast.JA['Provoke'] = sets.Enmity
- sets.precast.JA['Last Resort'] = sets.Enmity
- sets.precast.JA['Defender'] = sets.Enmity
- sets.precast.JA['Warcry'] = sets.Enmity
- sets.precast.JA['Vallation'] = sets.Enmity
- sets.precast.JA['Pflug'] = sets.Enmity
- sets.precast.JA['Swordplay'] = sets.Enmity
- sets.precast.JA['Valiance'] = sets.Enmity
- sets.precast.JA['Jump'] = {
- ammo="Coiste Bodhar",
- head="Hjarrandi Helm",
- body="Hjarrandi breast.",
- hands="Sakpata's gauntlets",
- legs="Sakpata's cuisses",
- feet="Flam. gambieras +2",
- neck="Combatant's torque",
- waist="Sailfi belt +1",
- left_ear="Telos Earring",
- right_ear="Crep. Earring",
- left_ring={name="Chirich Ring +1", bag="wardrobe1"},
- right_ring={name="Chirich Ring +1", bag="wardrobe4"},
- back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Chance of successful block +5',}},
- }
- -- Fast cast sets for spells --
- sets.precast.FC = {
- ammo="Sapience Orb", --2
- head={ name="Carmine Mask +1", augments={'Accuracy+20','Mag. Acc.+12','"Fast Cast"+4',}}, --14
- body="Rev. Surcoat +3", --10
- hands="Leyline Gloves", --7
- legs={ name="Odyssean Cuisses", augments={'Mag. Acc.+4','"Fast Cast"+5','AGI+8',}}, --5
- feet="Carmine Greaves +1", --8
- back={ name="Rudianos's Mantle", augments={'"Fast Cast"+10',}}, --10
- neck="Orunmila's Torque", --5
- left_ear="Nourish. Earring +1", --4
- right_ear="Etiolation earring", --1
- left_ring="Kishar Ring", --4
- right_ring="Weather. Ring +1", --6
- } --76total
- sets.precast.FC.DT = set_combine(sets.precast.FC, {
- })
- sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {
- waist="Siegel sash",
- })
- sets.precast.FC.Phalanx = set_combine(sets.precast.FC , {waist="Siegel Sash",})
- sets.precast.FC.Enlight = sets.precast.FC.Phalanx
- sets.precast.FC['Enlight II'] = sets.precast.FC.Phalanx
- sets.precast.FC.Protect = sets.precast.FC.Phalanx
- sets.precast.FC.Shell = sets.precast.FC.Phalanx
- sets.precast.FC.Crusade = sets.precast.FC.Phalanx
- ------------------------------------------------------------------------------------------------
- ------------------------------------- Weapon Skill Sets ----------------------------------------
- ------------------------------------------------------------------------------------------------
- sets.precast.WS = {
- ammo="Coiste Bodhar",
- head="Nyame helm",
- body="Nyame mail",
- hands="Nyame gauntlets",
- legs="Nyame flanchard",
- feet="Nyame sollerets",
- neck="Rep. Plat. Medal",
- left_ear="Thrud Earring",
- right_ear="Moonshade Earring",
- left_ring="Epaminondas's Ring",
- right_ring="Regal ring",
- back={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%',}},
- waist="Sailfi belt +1",
- }
- sets.precast.WS.Acc = set_combine(sets.precast.WS, {
- })
- sets.precast.WS['Savage Blade'] = set_combine(sets.precast.WS, {
- neck="Rep. Plat. Medal",
- waist="Sailfi belt +1",
- })
- sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'], {
- })
- sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {
- })
- sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS['Requiescat'], {
- })
- sets.precast.WS['Chant du Cygne'] = {
- ammo="Coiste Bodhar",
- head="Sakpata's helm", --blistering 10%
- body="Hjarrandi Breast.", --13
- hands="Flam. Manopolas +2", --8
- legs="Lustr. Subligar +1", --3
- feet={ name="Valorous Greaves", augments={'Accuracy+25 Attack+25','Crit.hit rate+5','STR+6',}}, --5
- neck="Fotia Gorget",
- left_ear="Thrud Earring",
- right_ear="Moonshade Earring", --3
- left_ring="Epaminondas's ring",
- right_ring="Begrudging ring", --5
- waist="Fotia Belt",
- back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10','Damage taken-5%',}}, --10
- } --+225dex 5merit 5fencer 5base 15WS base
- sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS['Chant du Cygne'], {
- })
- sets.precast.WS['Atonement'] = set_combine(sets.enmity, {
- ammo="Sapience orb", --2
- head="Loess barbuta +1", --24
- body="Souv. Cuirass +1", --20
- hands="Souv. Handsch. +1", --9
- legs="Souv. Diechlings +1", --9
- feet="Eschite Greaves", --15
- neck="Unmoving collar +1", --10
- left_ear="Cryptic Earring", --4
- right_ear="Moonshade earring", --0
- left_ring="Eihwaz ring", --5
- right_ring="Apeile Ring +1", --9
- back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Chance of successful block +5',}}, --10
- waist="Fotia Belt",
- }) --117enmity
- sets.precast.WS['Aeolian Edge'] = {
- ammo="Pemphredo tathlum",
- head=empty,
- body="Cohort Cloak +1",
- hands="Nyame gauntlets",
- legs="Nyame flanchard",
- feet="Nyame sollerets",
- neck="Sanctity necklace",
- left_ear="Moonshade earring",
- right_ear="Friomisi Earring",
- left_ring="Metamor. Ring +1",
- right_ring="Epaminondas's Ring",
- back={ name="Rudianos's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%','Damage taken-5%',}},
- waist="Eschan Stone",
- }
- ------------------------------------------------------------------------------------------------
- ---------------------------------------- Midcast Sets ------------------------------------------
- ------------------------------------------------------------------------------------------------
- sets.midcast.FastRecast = sets.precast.FC
- sets.midcast.SpellInterrupt = {
- ammo="Staunch Tathlum +1", --11
- head="Souv. Schaller +1", --20
- body="Nyame mail",
- legs="Founder's Hose", --30
- hands="Regal Gauntlets", --10
- feet="Odyssean Greaves", --20
- neck="Unmoving collar +1",
- left_ear={name="Tuisto Earring", priority=2},
- right_ear={name="Odnowa Earring +1", priority=3},
- left_ring={name="Moonbeam Ring", bag="wardrobe3", priority=1},
- right_ring={name="Moonbeam Ring", bag="wardrobe4", priority=4},
- waist="Audumbla sash", --10
- back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Chance of successful block +5',}},
- } --101 +10% from merit points 112sird
- sets.midcast['Enhancing Magic'] = {
- left_ear="Mimir earring",--10
- right_ear="Andoaa earring",--5
- waist="Olympus sash",--5
- neck="Incanter's torque",--10
- hands="Regal Gauntlets",
- } --30
- sets.midcast.EnhancingDuration = {
- hands="Regal Gauntlets",
- }
- -- Cure1=120; Cure2=266; Cure3=600; Cure4=1123; cure potency caps at 50/50% received caps at 32/30%. sans signet
- sets.midcast.Cure = set_combine(sets.Enmity, {
- hands="Macabre Gaunt. +1",
- left_ear="Nourish. Earring +1", --1
- right_ear="Odnowa Earring +1",
- left_ring="Eihwaz ring",
- back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','HP+20','"Cure" potency +10%','Phys. dmg. taken-10%',}},
- })
- -- 630 HP (curecheat)
- --sets.self_healing = set_combine(sets.Enmity,{})
- sets.midcast['Cure IV'] = {
- ammo="Staunch Tathlum +1", --11sird
- head="Souv. Schaller +1",--20sird/15CR/9enm
- body="Souv. Cuirass +1",--11CP/15CR/20enm
- hands="Macabre Gaunt. +1",--11CP/7enm
- legs="Founder's Hose", --30sird
- feet="Odyssean Greaves", --20sird/13CP
- neck="Unmoving collar +1", --10enm
- left_ear="Nourish. Earring +1", --2/7CP
- right_ear={name="Odnowa earring +1", priority=3},
- left_ring={name="Gelatinous Ring +1", bag="wardrobe4", priority=4},
- right_ring="Apeile ring +1",--9enm
- waist="Audumbla sash",--10sird
- back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','HP+20','"Cure" potency +10%','Phys. dmg. taken-10%',}},
- } --103SIRD/51CP/30CR/56enm +10% SIRD merit
- sets.midcast['Phalanx'] = set_combine(sets.midcast.SpellInterrupt, {
- ammo="Staunch tathlum +1",
- main="Sakpata's Sword",--5
- sub="Priwen", --2
- head={ name="Valorous Mask", augments={'Accuracy+1','Enmity-2','Phalanx +3','Accuracy+20 Attack+20',}}, --3
- hands={ name="Souv. Handsch. +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}}, --5
- body={ name="Odyss. Chestplate", augments={'Pet: VIT+8','Accuracy+23','Phalanx +3','Accuracy+5 Attack+5',}}, --3
- legs="Sakpata's cuisses", --5
- feet={ name="Souveran Schuhs +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}}, --5
- neck="Unmoving collar +1",
- left_ear="Mimir earring",
- right_ear={name="Odnowa earring +1", priority=3},
- back="Weard Mantle", --5
- left_ring={name="Gelatinous Ring +1", bag="wardrobe3", priority=2},
- right_ring={name="Moonbeam ring", bag="wardrobe4", priority=4},
- waist="Audumbla sash",
- }) --33
- sets.midcast['Banishga'] = set_combine(sets.midcast.SpellInterrupt,{
- })
- sets.midcast['Raise'] = set_combine(sets.midcast.SpellInterrupt,{
- })
- sets.midcast['Sheep Song'] = set_combine(sets.Enmity, {
- ammo="Per. Lucky Egg",
- legs={ name="Odyssean Cuisses", augments={'Blood Pact Dmg.+7','Pet: Crit.hit rate +2','"Treasure Hunter"+2','Accuracy+7 Attack+7',}},
- waist="Chaac Belt",
- })
- sets.midcast['Cursna'] = set_combine(sets.midcast.SpellInterrupt, {
- neck="Nicander's Necklace", --20
- left_ring={name="Saida Ring", bag="wardrobe3"}, --20
- right_ring={name="Purity Ring", bag="wardrobe4"}, --20
- waist="Gishdubar Sash", --10
- })
- sets.midcast['Holy II'] = set_combine(sets.midcast.SpellInterrupt,{
- ammo="Pemphredo Tathlum",
- head=empty,
- body="Cohort Cloak +1",
- hands="Carmine Fin. Ga. +1",
- waist="Eschan Stone",
- left_ear="Friomisi earring",
- right_ear="Hecate's Earring",
- left_ring="Mujin band",
- })
- sets.midcast['Geist Wall'] = set_combine(sets.midcast.SpellInterrupt,{})
- sets.midcast['Cocoon'] = set_combine(sets.midcast.SpellInterrupt,{})
- sets.midcast.Protect = set_combine(sets.Enmity, {sub="Srivatsa", hands="Regal Gauntlets"})
- sets.midcast.Shell = sets.midcast.Protect
- sets.midcast['Divine Magic'] = set_combine(sets.midcast.SpellInterrupt,{
- head="Jumalik helm",
- body="Rev. Surcoat +3",
- neck="Incanter's torque",
- waist="Asklepian belt",
- hands="Eschite gauntlets",
- })
- sets.midcast['Reprisal'] = set_combine(sets.Enmity, {
- body="Rev. Surcoat +3",
- legs={ name="Odyssean Cuisses", augments={'Mag. Acc.+4','"Fast Cast"+5','AGI+8',}},
- hands="Regal Gauntlets",
- waist="Sailfi belt +1"
- })
- sets.midcast['Crusade'] = set_combine(sets.midcast.SpellInterrupt, {hands="Regal Gauntlets"})
- sets.midcast.Flash = sets.Enmity
- sets.midcast.Stun = sets.Enmity
- sets.midcast.Poisonga = sets.Enmity
- sets.midcast.Utsusemi = sets.midcast.SpellInterrupt
- sets.midcast['Blue Magic'] = {}
- sets.midcast['Blue Magic'].Enmity = sets.Enmity
- ------------------------------------------------------------------------------------------------
- ----------------------------------------- Idle Sets --------------------------------------------
- ------------------------------------------------------------------------------------------------
- sets.idle = {
- ammo="Homiliary",
- head={ name="Valorous Mask", augments={'"Cure" potency +3%','"Refresh"+2','Mag. Acc.+9 "Mag.Atk.Bns."+9',}},
- body={ name="Valorous Mail", augments={'DEX+5','Phys. dmg. taken -1%','"Refresh"+2','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
- hands="Regal Gauntlets",
- legs="Carmine Cuisses +1",
- feet="Sakpata's leggings",
- neck="Unmoving collar +1",
- left_ear="Tuisto Earring",
- right_ear="Odnowa Earring +1",
- left_ring={name="Moonbeam ring", bag="wardrobe3"},
- right_ring={name="Moonbeam ring", bag="wardrobe4"},
- back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Chance of successful block +5',}},
- waist="Carrier's sash"
- }
- sets.idle.DT = {
- main="Burtgang",
- ammo="Eluder's Sachet",
- head="Sakpata's helm",
- body="Sakpata's Plate",
- hands="Sakpata's gauntlets",
- legs="Sakpata's cuisses",
- feet="Sakpata's leggings",
- waist="Carrier's sash",
- neck="Unmoving collar +1",
- left_ear={name="Tuisto Earring", priority=2},
- right_ear={name="Odnowa Earring +1", priority=3},
- left_ring={name="Gelatinous Ring +1", bag="wardrobe3", priority=1},
- right_ring={name="Moonbeam Ring", bag="wardrobe4", priority=4},
- back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Chance of successful block +5',}},
- }
- sets.idle.Phlx = {
- main="Sakpata's Sword",--5
- head={ name="Valorous Mask", augments={'Accuracy+1','Enmity-2','Phalanx +3','Accuracy+20 Attack+20',}}, --3
- hands={ name="Souv. Handsch. +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}}, --5
- body={ name="Odyss. Chestplate", augments={'Pet: VIT+8','Accuracy+23','Phalanx +3','Accuracy+5 Attack+5',}}, --3
- legs="Sakpata's cuisses", --5
- feet={ name="Souveran Schuhs +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}}, --5
- left_ear="Mimir earring",
- right_ear={name="Odnowa earring +1", priority=3},
- back="Weard Mantle", --5
- left_ring={name="Gelatinous Ring +1", bag="wardrobe3", priority=2},
- right_ring={name="Moonbeam ring", bag="wardrobe4", priority=4},
- }
- sets.idle.Town = set_combine(sets.idle, {
- head="Midras's helm +1",
- body="Blacksmith's apron",
- hands="Smithy's mitts",
- neck="Smithy's torque",
- legs="Carmine Cuisses +1",
- })
- sets.latent_refresh = {
- ammo="Homiliary",
- head={ name="Valorous Mask", augments={'"Cure" potency +3%','"Refresh"+2','Mag. Acc.+9 "Mag.Atk.Bns."+9',}},
- body={ name="Valorous Mail", augments={'DEX+5','Phys. dmg. taken -1%','"Refresh"+2','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
- hands={ name="Odyssean Gauntlets", augments={'"Fast Cast"+3','Attack+2','"Refresh"+2',}},
- }
- sets.Kiting = {legs="Carmine Cuisses +1"}
- ------------------------------------------------------------------------------------------------
- ---------------------------------------- Defense Sets ------------------------------------------
- ------------------------------------------------------------------------------------------------
- sets.defense.PDT = {
- main="Burtgang",
- --main="Maleveolence",
- ammo="Eluder's Sachet",
- head="Sakpata's helm",
- body="Sakpata's Plate",
- hands="Sakpata's gauntlets",
- legs="Sakpata's cuisses",
- feet="Sakpata's leggings",
- neck="Unmoving collar +1",
- waist="Carrier's Sash",
- left_ear={name="Tuisto Earring", priority=2},
- right_ear={name="Odnowa Earring +1", priority=3},
- left_ring={name="Gelatinous Ring +1", bag="wardrobe3", priority=1},
- right_ring={name="Moonbeam Ring", bag="wardrobe4", priority=4},
- back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Chance of successful block +5',}},
- }
- sets.defense.MDT = {
- main="Burtgang",
- ammo="Staunch Tathlum +1",
- head="Nyame helm",
- body="Nyame mail",
- hands="Nyame Gauntlets",
- legs="Nyame Flanchard",
- feet="Nyame Sollerets",
- neck="Unmoving collar +1",
- waist="Carrier's Sash",
- left_ear={name="Tuisto Earring", priority=2},
- right_ear={name="Odnowa Earring +1", priority=3},
- left_ring={name="Moonbeam Ring", bag="wardrobe3", priority=1},
- right_ring={name="Moonbeam Ring", bag="wardrobe4", priority=4},
- back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Chance of successful block +5',}},
- }
- ------------------------------------------------------------------------------------------------
- ---------------------------------------- Engaged Sets ------------------------------------------
- ------------------------------------------------------------------------------------------------
- sets.engaged = {
- ammo = "Coiste Bodhar",
- neck = "Combatant's torque",
- head="Sakpata's Helm",
- body="Hjarrandi Breast.",
- hands="Sakpata's gauntlets",
- legs="Sakpata's cuisses",
- feet="Flam. Gambieras +2",
- waist="Sailfi belt +1",
- left_ear="Telos Earring",
- right_ear="Crep. Earring",
- left_ring={name="Chirich Ring +1", bag="wardrobe1"},
- right_ring={name="Chirich Ring +1", bag="wardrobe4"},
- back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Chance of successful block +5',}},
- } --45dt 41stp 2650hp
- sets.engaged.Acc = set_combine(sets.engaged, {
- ammo="Per. Lucky Egg",
- legs={ name="Odyssean Cuisses", augments={'Blood Pact Dmg.+7','Pet: Crit.hit rate +2','"Treasure Hunter"+2','Accuracy+7 Attack+7',}},
- waist="Chaac Belt",
- })
- sets.engaged.Aftermath = {
- ammo = "Coiste Bodhar",
- neck = "Combatant's torque",
- head="Sakpata's Helm",
- body="Hjarrandi Breast.",
- hands="Sakpata's gauntlets",
- legs="Sakpata's cuisses",
- feet="Flam. Gambieras +2",
- waist="Sailfi belt +1",
- left_ear="Telos Earring",
- right_ear="Crep. Earring",
- left_ring={name="Chirich Ring +1", bag="wardrobe1"},
- right_ring={name="Chirich Ring +1", bag="wardrobe4"},
- back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Chance of successful block +5',}},
- }
- ------------------------------------------------------------------------------------------------
- ---------------------------------------- Hybrid Sets -------------------------------------------
- ------------------------------------------------------------------------------------------------
- sets.Hybrid = {
- ammo="Per. Lucky Egg",
- neck = "Combatant's torque",
- head="Sakpata's Helm",
- body="Sakpata's Plate",
- hands="Sakpata's gauntlets",
- legs={ name="Odyssean Cuisses", augments={'Blood Pact Dmg.+7','Pet: Crit.hit rate +2','"Treasure Hunter"+2','Accuracy+7 Attack+7',}},
- feet="Sakpata's leggings",
- waist="Chaac Belt",
- left_ear="Telos Earring",
- right_ear="Odnowa Earring +1",
- left_ring={name="Moonbeam Ring", bag="wardrobe3", priority=3},
- right_ring={name="Moonbeam Ring", bag="wardrobe4", priority=4},
- back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Chance of successful block +5',}},
- } --45dt 38stp 2780HP
- sets.engaged.DT = set_combine(sets.engaged, sets.Hybrid)
- sets.engaged.Acc.DT = set_combine(sets.engaged, {
- ammo="Per. Lucky Egg",
- legs={ name="Odyssean Cuisses", augments={'Blood Pact Dmg.+7','Pet: Crit.hit rate +2','"Treasure Hunter"+2','Accuracy+7 Attack+7',}},
- waist="Chaac Belt",
- })
- sets.engaged.Aftermath.DT = {
- ammo = "Coiste Bodhar",
- neck = "Combatant's torque",
- head="Flam. zucchetto +2",
- body="Sakpata's Plate",
- hands="Flam. Manopolas +2",
- legs="Sakpata's cuisses",
- feet="Flam. Gambieras +2",
- waist="Sailfi belt +1",
- left_ear="Telos Earring",
- right_ear="Crep. Earring",
- left_ring={name="Moonbeam Ring", bag="wardrobe3", priority=3},
- right_ring={name="Moonbeam Ring", bag="wardrobe4", priority=4},
- back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Chance of successful block +5',}},
- }
- ------------------------------------------------------------------------------------------------
- ---------------------------------------- Special Sets ------------------------------------------
- ------------------------------------------------------------------------------------------------
- sets.buff.Doom = {
- neck="Nicander's Necklace", --20
- left_ring={name="Saida Ring", bag="wardrobe3"}, --20
- right_ring={name="Purity Ring", bag="wardrobe1"}, --20
- waist="Gishdubar Sash", --10
- }
- sets.buff.Sleep = {}
- sets.Obi = {waist="Hachirin-no-Obi"}
- sets.CP = {}
- --sets.Reive = {neck="Ygnas's Resolve +1"}
- sets.Phys = {main="Burtgang", sub="Ochain"}
- sets.Phys.Acc = {main="Naegling", sub="Srivatsa"}
- sets.Magic = {main="Burtgang", sub="Aegis"}
- sets.Magic.Acc = {main="Naegling", sub="Aegis"}
- end
- -------------------------------------------------------------------------------------------------------------------
- -- Job-specific hooks for standard casting events.
- -------------------------------------------------------------------------------------------------------------------
- function job_precast(spell, action, spellMap, eventArgs)
- if buffactive['terror'] or buffactive['petrification'] or buffactive['stun'] or buffactive['sleep'] then
- add_to_chat(167, 'Stopped due to status.')
- eventArgs.cancel = true
- return
- end
- refine_cure(spell, spellMap, eventArgs)
- end
- function job_post_precast(spell, action, spellMap, eventArgs)
- if buffactive['Aftermath: Lv.3'] then
- equip({main=""})
- end
- if elemental_ws:contains(spell.name) then
- -- Matching double weather (w/o day conflict).
- if spell.element == world.weather_element and (get_weather_intensity() == 2 and spell.element ~= elements.weak_to[world.day_element]) then
- equip({waist="Hachirin-no-Obi"})
- -- Target distance under 1.7 yalms.
- elseif spell.target.distance < (1.7 + spell.target.model_size) then
- equip({waist="Orpheus's Sash"})
- -- Matching day and weather.
- elseif spell.element == world.day_element and spell.element == world.weather_element then
- equip({waist="Hachirin-no-Obi"})
- -- Target distance under 8 yalms.
- elseif spell.target.distance < (8 + spell.target.model_size) then
- equip({waist="Orpheus's Sash"})
- -- Match day or weather.
- elseif spell.element == world.day_element or spell.element == world.weather_element then
- equip({waist="Hachirin-no-Obi"})
- end
- end
- end
- function job_post_midcast(spell, action, spellMap, eventArgs)
- if buffactive['Aftermath: Lv.3'] then
- equip({main=""})
- end
- end
- function job_aftercast(spell, action, spellMap, eventArgs)
- if state.WeaponLock.value == false then
- check_weaponset()
- end
- end
- -------------------------------------------------------------------------------------------------------------------
- -- Job-specific hooks for non-casting events.
- -------------------------------------------------------------------------------------------------------------------
- -- Called when the player's status changes.
- function job_state_change(field, new_value, old_value)
- classes.CustomDefenseGroups:clear()
- classes.CustomDefenseGroups:append(state.Charm.current)
- classes.CustomDefenseGroups:append(state.Knockback.current)
- classes.CustomDefenseGroups:append(state.Death.current)
- classes.CustomMeleeGroups:clear()
- classes.CustomMeleeGroups:append(state.Charm.current)
- classes.CustomMeleeGroups:append(state.Knockback.current)
- classes.CustomMeleeGroups:append(state.Death.current)
- end
- function job_buff_change(buff,gain)
- -- If we gain or lose any haste buffs, adjust which gear set we target.
- -- if buffactive['Reive Mark'] then
- -- if gain then
- -- equip(sets.Reive)
- -- disable('neck')
- -- else
- -- enable('neck')
- -- end
- -- end
- if buff == "terror" then
- if gain then
- equip(sets.defense.PDT)
- end
- end
- if buff == "doom" then
- if gain then
- equip(sets.buff.Doom)
- send_command('@input /p Doomed, please Cursna.')
- disable('neck','legs','left_ring','right_ring','waist')
- else
- enable('neck','legs','left_ring','right_ring','waist')
- send_command('input /p Doom removed, Thank you.')
- handle_equipping_gear(player.status)
- end
- end
- if buff == "Sleep" then
- if gain then
- send_command('@input /p Slept, please wake.')
- else
- send_command('input /p '..player.name..' is no longer asleep.')
- end
- end
- if buff == "petrification" then
- if gain then
- send_command('@input /p Petrification, please Stona.')
- else
- send_command('input /p '..player.name..' is no longer Petrify Thank you !')
- end
- end
- if buff == "Charm" then
- if gain then
- send_command('@input /p Charmed, please Sleep me.')
- else
- send_command('input /p '..player.name..' is no longer Charmed, please wake me up!')
- end
- end
- if buff == "paralysis" then
- if gain then
- send_command('@input /p '..player.name..' Paralysed, please Paralyna.')
- else
- send_command('input /p '..player.name..' is no longer Paralysed Thank you !')
- end
- end
- if buff == "silence" then
- if gain then
- send_command('@input /p '..player.name..' Silence, please Silena.')
- send_command('@input /item "Echo Drops" <me>')
- else
- send_command('input /p '..player.name..' is no longer Silenced Thank you !')
- end
- end
- if buff:startswith('Aftermath Lv.3') then
- state.Buff.Aftermath = gain
- --customize_melee_set()
- handle_equipping_gear(player.status)
- end
- end
- -- Handle notifications of general user state change.
- function job_state_change(stateField, newValue, oldValue)
- if state.WeaponLock.value == true then
- disable('main','sub')
- else
- enable('main','sub')
- end
- check_weaponset()
- end
- -------------------------------------------------------------------------------------------------------------------
- -- User code that supplements standard library decisions.
- -------------------------------------------------------------------------------------------------------------------
- function job_handle_equipping_gear(playerStatus, eventArgs)
- check_gear()
- check_moving()
- end
- function job_update(cmdParams, eventArgs)
- handle_equipping_gear(player.status)
- end
- function check_moving()
- if state.DefenseMode.value == 'None' and state.Kiting.value == false then
- if state.Auto_Kite.value == false and moving then
- state.Auto_Kite:set(true)
- elseif state.Auto_Kite.value == true and moving == false then
- state.Auto_Kite:set(false)
- end
- end
- end
- -- Modify the default melee set after it was constructed.
- function customize_melee_set(meleeSet)
- if buffactive['Aftermath: Lv.3'] and player.equipment.main == "Burtgang"
- and state.DefenseMode.value == 'None' then
- if state.HybridMode.value == "DT" then
- meleeSet = set_combine(meleeSet, sets.engaged.Aftermath.DT)
- else
- meleeSet = set_combine(meleeSet, sets.engaged.Aftermath)
- end
- end
- return meleeSet
- end
- -- Function to display the current relevant user state when doing an update.
- -- Set eventArgs.handled to true if display was handled, and you don't want the default info shown.
- function display_current_job_state(eventArgs)
- local cf_msg = ''
- if state.CombatForm.has_value then
- cf_msg = ' (' ..state.CombatForm.value.. ')'
- end
- local m_msg = state.OffenseMode.value
- if state.HybridMode.value ~= 'Normal' then
- m_msg = m_msg .. '/' ..state.HybridMode.value
- end
- local ws_msg = state.WeaponskillMode.value
- local d_msg = 'None'
- if state.DefenseMode.value ~= 'None' then
- d_msg = state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value
- end
- local i_msg = state.IdleMode.value
- local msg = ''
- if state.Kiting.value then
- msg = msg .. ' Kiting: On |'
- end
- add_to_chat(002, '| ' ..string.char(31,210).. 'Melee' ..cf_msg.. ': ' ..string.char(31,001)..m_msg.. string.char(31,002).. ' |'
- ..string.char(31,207).. ' WS: ' ..string.char(31,001)..ws_msg.. string.char(31,002).. ' |'
- ..string.char(31,004).. ' Defense: ' ..string.char(31,001)..d_msg.. string.char(31,002).. ' |'
- ..string.char(31,008).. ' Idle: ' ..string.char(31,001)..i_msg.. string.char(31,002).. ' |'
- ..string.char(31,002)..msg)
- eventArgs.handled = true
- end
- -------------------------------------------------------------------------------------------------------------------
- -- General hooks for other events.
- -------------------------------------------------------------------------------------------------------------------
- function job_get_spell_map(spell, default_spell_map)
- if spell.skill == 'Blue Magic' then
- for category,spell_list in pairs(blue_magic_maps) do
- if spell_list:contains(spell.english) then
- return category
- end
- end
- end
- end
- -------------------------------------------------------------------------------------------------------------------
- -- Utility functions specific to this job.
- -------------------------------------------------------------------------------------------------------------------
- function check_gear()
- if no_swap_gear:contains(player.equipment.left_ring) then
- disable("left_ring")
- else
- enable("left_ring")
- end
- if no_swap_gear:contains(player.equipment.right_ring) then
- disable("right_ring")
- else
- enable("right_ring")
- end
- end
- function check_weaponset()
- if state.OffenseMode.value == 'Atk' then
- equip(sets[state.WeaponSet.current].Acc)
- else
- equip(sets[state.WeaponSet.current])
- end
- end
- windower.register_event('zone change',
- function()
- if no_swap_gear:contains(player.equipment.left_ring) then
- enable("left_ring")
- equip(sets.idle)
- end
- if no_swap_gear:contains(player.equipment.right_ring) then
- enable("right_ring")
- equip(sets.idle)
- end
- end
- )
- -- Select default macro book on initial load or subjob change.
- function select_default_macro_book()
- -- Default macro set/book: (set, book)
- if player.sub_job == 'BLU' then
- set_macro_page(2, 6)
- elseif player.sub_job == 'DRK' then
- set_macro_page(1, 6)
- elseif player.sub_job == 'SAM' then
- set_macro_page(4, 6)
- elseif player.sub_job == 'WAR' then
- set_macro_page(3, 6)
- elseif player.sub_job == 'DRG' then
- set_macro_page(3, 6)
- elseif player.sub_job == 'RUN' then
- set_macro_page(5, 6)
- else
- set_macro_page(1, 6)
- end
- end
- function set_lockstyle()
- send_command('@input ;wait 5;input /lockstyleset ' .. lockstyleset)
- end
- --Cure rules--
- local cure_targets = {
- I = 150,
- II = 300,
- III = 500,
- IV = 700
- }
- local cure_costs = {
- I = 8,
- II = 24,
- III = 46,
- IV = 88
- }
- function refine_cure(spell, spellMap, eventArgs)
- if spell.name:startswith('Cure') then
- local newCure = spell.english
- local missingHP
- local currentHeal = 0
- -- If curing ourself, get our exact missing HP
- if spell.target.type == "SELF" then
- missingHP = player.max_hp - player.hp
- -- If curing someone in our alliance, we can estimate their missing HP
- elseif spell.target.isallymember then
- local target = find_player_in_alliance(spell.target.name)
- local est_max_hp = target.hp / (target.hpp/100)
- missingHP = math.floor(est_max_hp - target.hp)
- end
- for level, health in pairs(cure_targets) do
- if missingHP > health and currentHeal < health and player.mp >= cure_costs[level] then
- currentHeal = health
- if level == 'I' then
- newCure = 'Cure'
- else
- newCure = 'Cure '..level
- end
- end
- end
- if newCure ~= spell.english then
- send_command('@input /ma "'..newCure..'" '..tostring(spell.target.raw))
- eventArgs.cancel = true
- else
- if missingHP and missingHP > 0 then
- add_to_chat(122,'Trying to cure '..tostring(missingHP)..' HP using '..newCure..'.')
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement