Advertisement
Buffylvr

razma_pld

Mar 24th, 2022
1,389
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 37.77 KB | None | 0 0
  1. -- Initialization function for this job file.
  2. function get_sets()
  3.     mote_include_version = 2
  4.  
  5.     -- Load and initialize the include file.
  6.     include('Mote-Include.lua')
  7.     res = require 'resources'
  8. end
  9.  
  10. -- Setup vars that are user-independent.
  11. function job_setup()
  12.  
  13.     -- /BLU Spell Maps
  14.     blue_magic_maps = {}
  15.  
  16.     blue_magic_maps.Enmity = S{'Blank Gaze', 'Jettatura', 'Soporific',
  17.         'Poison Breath', 'Blitzstrahl', 'Sheep Song', 'Chaotic Eye'}
  18.  
  19.     no_swap_gear = S{"Warp Ring", "Dim. Ring (Dem)", "Dim. Ring (Holla)", "Dim. Ring (Mea)",
  20.               "Trizek Ring", "Echad Ring", "Facility Ring", "Capacity Ring", "Emporox's Ring",
  21.               "Smithy's Torque", "Midras's Helm +1",}
  22.     elemental_ws = S{"Aeolian Edge"}
  23.    
  24.     lockstyleset = 7
  25.  
  26. end
  27.  
  28. --MERITS 5/5 Sentinel 5/5 Rampart 4/5 Fealty 1/5 Chivalry 5/5 Guardian
  29.  
  30. -------------------------------------------------------------------------------------------------------------------
  31. -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
  32. -------------------------------------------------------------------------------------------------------------------
  33.  
  34. function user_setup()
  35.     state.OffenseMode:options('Tank', 'Atk')
  36.     state.WeaponskillMode:options('Normal', 'Acc')
  37.     state.HybridMode:options('Normal', 'DT')
  38.     state.CastingMode:options('Normal', 'Resistant')
  39.     state.IdleMode:options('Normal', 'DT', 'Phlx')
  40.     state.PhysicalDefenseMode:options('PDT')
  41.     state.MagicalDefenseMode:options('MDT')
  42.  
  43.     state.Knockback = M(false, 'Knockback')
  44.     state.WeaponSet = M{['description']='Weapon Set', 'Phys', 'Magic',}
  45.     state.CP = M(false, "Capacity Points Mode")
  46.     state.WeaponLock = M(false, 'Weapon Lock')
  47.    
  48.         -- Additional local binds
  49.     --send_command('bind 1 input /ws "Savage Blade" <t>')
  50.     send_command('bind 1 input /ws "Aeolian Edge" <t>')
  51.     send_command('bind ` input /ma "Cure" <me>')
  52.     send_command('bind ^` input /ma "Cure" <stal>')
  53.     send_command('bind @` input /ja "Majesty" <me>')
  54.     send_command('bind !` input /ma "Cocoon" <me>')
  55.     send_command('bind ^f11 gs c cycle MagicalDefenseMode')
  56.     send_command('bind @c gs c toggle CP')
  57.     send_command('bind !r gs c cycle WeaponSet')
  58.     send_command('bind @r gs c cycle WeaponSet')
  59.     send_command('bind @w gs c toggle WeaponLock')
  60.     send_command('bind @k gs c toggle Knockback')
  61.     send_command('bind delete input /jump')
  62.     send_command('bind !^` input /ja "Invincible" <me>')
  63.     select_default_macro_book()
  64.     set_lockstyle()
  65.  
  66.     state.Auto_Kite = M(false, 'Auto_Kite')
  67.     moving = false
  68. end
  69.  
  70. function user_unload()
  71.     send_command('unbind 1')
  72.     send_command('unbind `')
  73.     send_command('unbind ^`')
  74.     send_command('unbind !`')
  75.     send_command('unbind ^f11')
  76.     send_command('unbind ^insert')
  77.     send_command('unbind ^delete')
  78.     send_command('unbind @a')
  79.     -- send_command('unbind @c')
  80.     send_command('unbind @`')
  81.     send_command('unbind @d')
  82.     send_command('unbind !q')
  83.     send_command('unbind @w')
  84.     send_command('unbind @e')
  85.     send_command('unbind !r')
  86.     send_command('unbind @r')
  87.     send_command('unbind !o')
  88.     send_command('unbind !p')
  89.     send_command('unbind ^,')
  90.     send_command('unbind @w')
  91.     send_command('unbind ^numpad/')
  92.     send_command('unbind ^numpad*')
  93.     send_command('unbind ^numpad-')
  94.     send_command('unbind ^numpad7')
  95.     send_command('unbind ^numpad9')
  96.     send_command('unbind ^numpad5')
  97.     send_command('unbind ^numpad1')
  98.     send_command('unbind @numpad*')
  99.     send_command('unbind delete')
  100.  
  101.     send_command('unbind #`')
  102.     send_command('unbind #1')
  103.     send_command('unbind #2')
  104.     send_command('unbind #3')
  105.     send_command('unbind #4')
  106.     send_command('unbind #5')
  107.     send_command('unbind #6')
  108.     send_command('unbind #7')
  109.     send_command('unbind #8')
  110.     send_command('unbind #9')
  111.     send_command('unbind #0')
  112. end
  113.  
  114. -- Define sets and vars used by this job file.
  115. function init_gear_sets()
  116.  
  117.     ------------------------------------------------------------------------------------------------
  118.     ---------------------------------------- Precast Sets ------------------------------------------
  119.     ------------------------------------------------------------------------------------------------
  120.  
  121.     -- Enmity sets
  122.     sets.Enmity = {
  123.         ammo="Sapience orb", --2
  124.         head="Loess barbuta +1", --24
  125.         body="Souv. Cuirass +1", --20
  126.         hands="Souv. Handsch. +1", --9
  127.         legs="Souv. Diechlings +1", --9
  128.         feet="Eschite Greaves", --15
  129.         neck="Unmoving collar +1", --10
  130.         left_ear="Cryptic Earring", --4
  131.         right_ear="Odnowa Earring +1", --0
  132.         left_ring="Eihwaz ring", --5
  133.         right_ring="Apeile Ring +1", --9
  134.         back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Chance of successful block +5',}}, --10
  135.         waist="Creed Baudrier", --5
  136.     } --105
  137.    
  138.     -- JA SECTION --
  139.     sets.precast.JA['Fealty'] = set_combine(sets.Enmity,{body="Cab. Surcoat"})
  140.     sets.precast.JA['Sentinel'] = set_combine(sets.Enmity,{feet="Cab. Leggings +3"})
  141.     sets.precast.JA['Shield Bash'] = set_combine(sets.Enmity,{hands="Cab. Gauntlets +2"})
  142.     sets.precast.JA['Chivalry'] = set_combine(sets.Enmity,{hands="Cab. Gauntlets +2"})
  143.     sets.precast.JA['Invincible'] = set_combine(sets.Enmity,{legs="Cab. Breeches"})
  144.     sets.precast.JA['Rampart'] = set_combine(sets.Enmity,{head="Cab. Coronet"})
  145.     sets.precast.JA['Holy Circle'] = set_combine(sets.Enmity,{feet="Gallant Leggings"})
  146.     sets.precast.JA['Majesty'] = sets.Enmity
  147.     sets.precast.JA['Provoke'] = sets.Enmity
  148.     sets.precast.JA['Last Resort'] = sets.Enmity
  149.     sets.precast.JA['Defender'] = sets.Enmity
  150.     sets.precast.JA['Warcry'] = sets.Enmity
  151.     sets.precast.JA['Vallation'] = sets.Enmity
  152.     sets.precast.JA['Pflug'] = sets.Enmity
  153.     sets.precast.JA['Swordplay'] = sets.Enmity
  154.     sets.precast.JA['Valiance'] = sets.Enmity
  155.     sets.precast.JA['Jump'] = {
  156.         ammo="Coiste Bodhar",
  157.         head="Hjarrandi Helm",
  158.         body="Hjarrandi breast.",
  159.         hands="Sakpata's gauntlets",
  160.         legs="Sakpata's cuisses",
  161.         feet="Flam. gambieras +2",
  162.         neck="Combatant's torque",
  163.         waist="Sailfi belt +1",
  164.         left_ear="Telos Earring",
  165.         right_ear="Crep. Earring",
  166.         left_ring={name="Chirich Ring +1", bag="wardrobe1"},
  167.         right_ring={name="Chirich Ring +1", bag="wardrobe4"},
  168.         back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Chance of successful block +5',}},
  169.     }
  170.    
  171.     -- Fast cast sets for spells --
  172.     sets.precast.FC = {
  173.         ammo="Sapience Orb", --2
  174.         head={ name="Carmine Mask +1", augments={'Accuracy+20','Mag. Acc.+12','"Fast Cast"+4',}}, --14
  175.         body="Rev. Surcoat +3", --10
  176.         hands="Leyline Gloves", --7
  177.         legs={ name="Odyssean Cuisses", augments={'Mag. Acc.+4','"Fast Cast"+5','AGI+8',}}, --5
  178.         feet="Carmine Greaves +1", --8
  179.         back={ name="Rudianos's Mantle", augments={'"Fast Cast"+10',}}, --10
  180.         neck="Orunmila's Torque", --5
  181.         left_ear="Nourish. Earring +1", --4
  182.         right_ear="Etiolation earring", --1
  183.         left_ring="Kishar Ring", --4
  184.         right_ring="Weather. Ring +1", --6
  185.     } --76total
  186.        
  187.     sets.precast.FC.DT = set_combine(sets.precast.FC, {
  188.  
  189.     })
  190.        
  191.     sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {
  192.         waist="Siegel sash",
  193.     })
  194.        
  195.     sets.precast.FC.Phalanx = set_combine(sets.precast.FC , {waist="Siegel Sash",})
  196.     sets.precast.FC.Enlight = sets.precast.FC.Phalanx
  197.     sets.precast.FC['Enlight II'] = sets.precast.FC.Phalanx
  198.     sets.precast.FC.Protect = sets.precast.FC.Phalanx
  199.     sets.precast.FC.Shell = sets.precast.FC.Phalanx
  200.     sets.precast.FC.Crusade = sets.precast.FC.Phalanx
  201.    
  202.     ------------------------------------------------------------------------------------------------
  203.     ------------------------------------- Weapon Skill Sets ----------------------------------------
  204.     ------------------------------------------------------------------------------------------------
  205.  
  206.     sets.precast.WS = {
  207.         ammo="Coiste Bodhar",
  208.         head="Nyame helm",
  209.         body="Nyame mail",
  210.         hands="Nyame gauntlets",
  211.         legs="Nyame flanchard",
  212.         feet="Nyame sollerets",
  213.         neck="Rep. Plat. Medal",
  214.         left_ear="Thrud Earring",
  215.         right_ear="Moonshade Earring",
  216.         left_ring="Epaminondas's Ring",
  217.         right_ring="Regal ring",
  218.         back={ name="Rudianos's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%',}},
  219.         waist="Sailfi belt +1",
  220.     }
  221.  
  222.     sets.precast.WS.Acc = set_combine(sets.precast.WS, {
  223.  
  224.     })
  225.    
  226.     sets.precast.WS['Savage Blade'] = set_combine(sets.precast.WS, {
  227.     neck="Rep. Plat. Medal",
  228.     waist="Sailfi belt +1",
  229.     })
  230.  
  231.     sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'], {
  232.  
  233.     })
  234.  
  235.     sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {
  236.  
  237.     })
  238.  
  239.     sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS['Requiescat'], {
  240.    
  241.     })
  242.  
  243.     sets.precast.WS['Chant du Cygne'] = {  
  244.         ammo="Coiste Bodhar",
  245.         head="Sakpata's helm", --blistering 10%
  246.         body="Hjarrandi Breast.", --13
  247.         hands="Flam. Manopolas +2", --8
  248.         legs="Lustr. Subligar +1", --3
  249.         feet={ name="Valorous Greaves", augments={'Accuracy+25 Attack+25','Crit.hit rate+5','STR+6',}}, --5
  250.         neck="Fotia Gorget",
  251.         left_ear="Thrud Earring",
  252.         right_ear="Moonshade Earring", --3
  253.         left_ring="Epaminondas's ring",
  254.         right_ring="Begrudging ring", --5
  255.         waist="Fotia Belt",
  256.         back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Crit.hit rate+10','Damage taken-5%',}}, --10
  257.     } --+225dex 5merit 5fencer 5base 15WS base
  258.  
  259.     sets.precast.WS['Chant du Cygne'].Acc =  set_combine(sets.precast.WS['Chant du Cygne'], {
  260.    
  261.     })
  262.  
  263.     sets.precast.WS['Atonement'] = set_combine(sets.enmity, {
  264.         ammo="Sapience orb", --2
  265.         head="Loess barbuta +1", --24
  266.         body="Souv. Cuirass +1", --20
  267.         hands="Souv. Handsch. +1", --9
  268.         legs="Souv. Diechlings +1", --9
  269.         feet="Eschite Greaves", --15
  270.         neck="Unmoving collar +1", --10
  271.         left_ear="Cryptic Earring", --4
  272.         right_ear="Moonshade earring", --0
  273.         left_ring="Eihwaz ring", --5
  274.         right_ring="Apeile Ring +1", --9
  275.         back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Chance of successful block +5',}}, --10
  276.         waist="Fotia Belt",
  277.     }) --117enmity
  278.  
  279.    
  280.     sets.precast.WS['Aeolian Edge'] = {
  281.         ammo="Pemphredo tathlum",
  282.         head=empty,
  283.         body="Cohort Cloak +1",
  284.         hands="Nyame gauntlets",
  285.         legs="Nyame flanchard",
  286.         feet="Nyame sollerets",
  287.         neck="Sanctity necklace",
  288.         left_ear="Moonshade earring",
  289.         right_ear="Friomisi Earring",
  290.         left_ring="Metamor. Ring +1",
  291.         right_ring="Epaminondas's Ring",
  292.         back={ name="Rudianos's Mantle", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%','Damage taken-5%',}},
  293.         waist="Eschan Stone",
  294.     }
  295.     ------------------------------------------------------------------------------------------------
  296.     ---------------------------------------- Midcast Sets ------------------------------------------
  297.     ------------------------------------------------------------------------------------------------
  298.    
  299.     sets.midcast.FastRecast = sets.precast.FC
  300.  
  301.     sets.midcast.SpellInterrupt = {
  302.         ammo="Staunch Tathlum +1", --11
  303.         head="Souv. Schaller +1", --20
  304.         body="Nyame mail",
  305.         legs="Founder's Hose", --30
  306.         hands="Regal Gauntlets", --10
  307.         feet="Odyssean Greaves", --20
  308.         neck="Unmoving collar +1",
  309.         left_ear={name="Tuisto Earring", priority=2},
  310.         right_ear={name="Odnowa Earring +1", priority=3},
  311.         left_ring={name="Moonbeam Ring", bag="wardrobe3", priority=1},
  312.         right_ring={name="Moonbeam Ring", bag="wardrobe4", priority=4},
  313.         waist="Audumbla sash", --10
  314.         back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Chance of successful block +5',}},
  315.     } --101 +10% from merit points 112sird
  316.  
  317.     sets.midcast['Enhancing Magic'] = {
  318.         left_ear="Mimir earring",--10
  319.         right_ear="Andoaa earring",--5
  320.         waist="Olympus sash",--5
  321.         neck="Incanter's torque",--10
  322.         hands="Regal Gauntlets",
  323.     } --30
  324.  
  325.     sets.midcast.EnhancingDuration = {
  326.         hands="Regal Gauntlets",
  327.     }
  328.  
  329. -- Cure1=120; Cure2=266; Cure3=600; Cure4=1123; cure potency caps at 50/50% received caps at 32/30%. sans signet
  330.     sets.midcast.Cure = set_combine(sets.Enmity, {
  331.         hands="Macabre Gaunt. +1",
  332.         left_ear="Nourish. Earring +1", --1
  333.         right_ear="Odnowa Earring +1",
  334.         left_ring="Eihwaz ring",
  335.         back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','HP+20','"Cure" potency +10%','Phys. dmg. taken-10%',}},
  336.     }) 
  337.  
  338. -- 630 HP (curecheat)
  339.     --sets.self_healing = set_combine(sets.Enmity,{})
  340.  
  341.     sets.midcast['Cure IV'] = {
  342.         ammo="Staunch Tathlum +1", --11sird
  343.         head="Souv. Schaller +1",--20sird/15CR/9enm
  344.         body="Souv. Cuirass +1",--11CP/15CR/20enm
  345.         hands="Macabre Gaunt. +1",--11CP/7enm
  346.         legs="Founder's Hose", --30sird
  347.         feet="Odyssean Greaves", --20sird/13CP
  348.         neck="Unmoving collar +1", --10enm
  349.         left_ear="Nourish. Earring +1", --2/7CP
  350.         right_ear={name="Odnowa earring +1", priority=3},
  351.         left_ring={name="Gelatinous Ring +1", bag="wardrobe4", priority=4},
  352.         right_ring="Apeile ring +1",--9enm
  353.         waist="Audumbla sash",--10sird
  354.         back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','HP+20','"Cure" potency  +10%','Phys. dmg. taken-10%',}},
  355.         } --103SIRD/51CP/30CR/56enm +10% SIRD merit
  356.  
  357.     sets.midcast['Phalanx'] = set_combine(sets.midcast.SpellInterrupt, {
  358.         ammo="Staunch tathlum +1",
  359.         main="Sakpata's Sword",--5
  360.         sub="Priwen", --2
  361.         head={ name="Valorous Mask", augments={'Accuracy+1','Enmity-2','Phalanx +3','Accuracy+20 Attack+20',}}, --3
  362.         hands={ name="Souv. Handsch. +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}}, --5
  363.         body={ name="Odyss. Chestplate", augments={'Pet: VIT+8','Accuracy+23','Phalanx +3','Accuracy+5 Attack+5',}}, --3
  364.         legs="Sakpata's cuisses", --5
  365.         feet={ name="Souveran Schuhs +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}}, --5
  366.         neck="Unmoving collar +1",
  367.         left_ear="Mimir earring",
  368.         right_ear={name="Odnowa earring +1", priority=3},
  369.         back="Weard Mantle", --5
  370.         left_ring={name="Gelatinous Ring +1", bag="wardrobe3", priority=2},
  371.         right_ring={name="Moonbeam ring", bag="wardrobe4", priority=4},
  372.         waist="Audumbla sash",
  373.     }) --33
  374.    
  375.     sets.midcast['Banishga'] = set_combine(sets.midcast.SpellInterrupt,{
  376.     })
  377.    
  378.     sets.midcast['Raise'] = set_combine(sets.midcast.SpellInterrupt,{
  379.  
  380.     })
  381.     sets.midcast['Sheep Song'] = set_combine(sets.Enmity, {
  382.         ammo="Per. Lucky Egg",
  383.         legs={ name="Odyssean Cuisses", augments={'Blood Pact Dmg.+7','Pet: Crit.hit rate +2','"Treasure Hunter"+2','Accuracy+7 Attack+7',}},
  384.         waist="Chaac Belt",
  385.     })
  386.        
  387.     sets.midcast['Cursna'] = set_combine(sets.midcast.SpellInterrupt, {
  388.         neck="Nicander's Necklace", --20
  389.         left_ring={name="Saida Ring", bag="wardrobe3"}, --20
  390.         right_ring={name="Purity Ring", bag="wardrobe4"}, --20
  391.         waist="Gishdubar Sash", --10
  392.     })
  393.        
  394.     sets.midcast['Holy II'] = set_combine(sets.midcast.SpellInterrupt,{
  395.         ammo="Pemphredo Tathlum",
  396.         head=empty,
  397.         body="Cohort Cloak +1",
  398.         hands="Carmine Fin. Ga. +1",
  399.         waist="Eschan Stone",
  400.         left_ear="Friomisi earring",
  401.         right_ear="Hecate's Earring",
  402.         left_ring="Mujin band",
  403.     })
  404.     sets.midcast['Geist Wall'] = set_combine(sets.midcast.SpellInterrupt,{})
  405.     sets.midcast['Cocoon'] = set_combine(sets.midcast.SpellInterrupt,{})
  406.     sets.midcast.Protect = set_combine(sets.Enmity, {sub="Srivatsa", hands="Regal Gauntlets"})
  407.     sets.midcast.Shell = sets.midcast.Protect
  408.  
  409.     sets.midcast['Divine Magic'] = set_combine(sets.midcast.SpellInterrupt,{
  410.         head="Jumalik helm",
  411.         body="Rev. Surcoat +3",
  412.         neck="Incanter's torque",
  413.         waist="Asklepian belt",
  414.         hands="Eschite gauntlets",
  415.     })
  416.  
  417.     sets.midcast['Reprisal'] = set_combine(sets.Enmity, {
  418.     body="Rev. Surcoat +3",
  419.     legs={ name="Odyssean Cuisses", augments={'Mag. Acc.+4','"Fast Cast"+5','AGI+8',}},
  420.     hands="Regal Gauntlets",
  421.     waist="Sailfi belt +1"
  422.     })
  423.    
  424.     sets.midcast['Crusade'] = set_combine(sets.midcast.SpellInterrupt, {hands="Regal Gauntlets"})
  425.     sets.midcast.Flash = sets.Enmity
  426.     sets.midcast.Stun = sets.Enmity
  427.     sets.midcast.Poisonga = sets.Enmity
  428.     sets.midcast.Utsusemi = sets.midcast.SpellInterrupt
  429.  
  430.     sets.midcast['Blue Magic'] = {}
  431.     sets.midcast['Blue Magic'].Enmity = sets.Enmity
  432.    
  433.     ------------------------------------------------------------------------------------------------
  434.     ----------------------------------------- Idle Sets --------------------------------------------
  435.     ------------------------------------------------------------------------------------------------
  436.  
  437.     sets.idle = {
  438.         ammo="Homiliary",
  439.         head={ name="Valorous Mask", augments={'"Cure" potency +3%','"Refresh"+2','Mag. Acc.+9 "Mag.Atk.Bns."+9',}},
  440.         body={ name="Valorous Mail", augments={'DEX+5','Phys. dmg. taken -1%','"Refresh"+2','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
  441.         hands="Regal Gauntlets",
  442.         legs="Carmine Cuisses +1",
  443.         feet="Sakpata's leggings",
  444.         neck="Unmoving collar +1",
  445.         left_ear="Tuisto Earring",
  446.         right_ear="Odnowa Earring +1",
  447.         left_ring={name="Moonbeam ring", bag="wardrobe3"},
  448.         right_ring={name="Moonbeam ring", bag="wardrobe4"},
  449.         back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Chance of successful block +5',}},
  450.         waist="Carrier's sash"
  451.     }
  452.  
  453.     sets.idle.DT = {
  454.         main="Burtgang",
  455.         ammo="Eluder's Sachet",
  456.         head="Sakpata's helm",
  457.         body="Sakpata's Plate",
  458.         hands="Sakpata's gauntlets",
  459.         legs="Sakpata's cuisses",
  460.         feet="Sakpata's leggings",
  461.         waist="Carrier's sash",
  462.         neck="Unmoving collar +1",
  463.         left_ear={name="Tuisto Earring", priority=2},
  464.         right_ear={name="Odnowa Earring +1", priority=3},
  465.         left_ring={name="Gelatinous Ring +1", bag="wardrobe3", priority=1},
  466.         right_ring={name="Moonbeam Ring", bag="wardrobe4", priority=4},
  467.         back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Chance of successful block +5',}},
  468.     }
  469.    
  470.     sets.idle.Phlx = {
  471.         main="Sakpata's Sword",--5
  472.         head={ name="Valorous Mask", augments={'Accuracy+1','Enmity-2','Phalanx +3','Accuracy+20 Attack+20',}}, --3
  473.         hands={ name="Souv. Handsch. +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}}, --5
  474.         body={ name="Odyss. Chestplate", augments={'Pet: VIT+8','Accuracy+23','Phalanx +3','Accuracy+5 Attack+5',}}, --3
  475.         legs="Sakpata's cuisses", --5
  476.         feet={ name="Souveran Schuhs +1", augments={'HP+105','Enmity+9','Potency of "Cure" effect received +15%',}}, --5
  477.         left_ear="Mimir earring",
  478.         right_ear={name="Odnowa earring +1", priority=3},
  479.         back="Weard Mantle", --5
  480.         left_ring={name="Gelatinous Ring +1", bag="wardrobe3", priority=2},
  481.         right_ring={name="Moonbeam ring", bag="wardrobe4", priority=4},
  482.     }
  483.  
  484.     sets.idle.Town = set_combine(sets.idle, {
  485.             head="Midras's helm +1",
  486.             body="Blacksmith's apron",
  487.             hands="Smithy's mitts",
  488.             neck="Smithy's torque",
  489.             legs="Carmine Cuisses +1",
  490.     })
  491.  
  492.     sets.latent_refresh = {
  493.         ammo="Homiliary",
  494.         head={ name="Valorous Mask", augments={'"Cure" potency +3%','"Refresh"+2','Mag. Acc.+9 "Mag.Atk.Bns."+9',}},
  495.         body={ name="Valorous Mail", augments={'DEX+5','Phys. dmg. taken -1%','"Refresh"+2','Mag. Acc.+19 "Mag.Atk.Bns."+19',}},
  496.         hands={ name="Odyssean Gauntlets", augments={'"Fast Cast"+3','Attack+2','"Refresh"+2',}},
  497.     }
  498.    
  499.     sets.Kiting = {legs="Carmine Cuisses +1"}
  500.    
  501.     ------------------------------------------------------------------------------------------------
  502.     ---------------------------------------- Defense Sets ------------------------------------------
  503.     ------------------------------------------------------------------------------------------------
  504.  
  505.     sets.defense.PDT = {
  506.         main="Burtgang",
  507.         --main="Maleveolence",
  508.         ammo="Eluder's Sachet",
  509.         head="Sakpata's helm",
  510.         body="Sakpata's Plate",
  511.         hands="Sakpata's gauntlets",
  512.         legs="Sakpata's cuisses",
  513.         feet="Sakpata's leggings",
  514.         neck="Unmoving collar +1",
  515.         waist="Carrier's Sash",
  516.         left_ear={name="Tuisto Earring", priority=2},
  517.         right_ear={name="Odnowa Earring +1", priority=3},
  518.         left_ring={name="Gelatinous Ring +1", bag="wardrobe3", priority=1},
  519.         right_ring={name="Moonbeam Ring", bag="wardrobe4", priority=4},
  520.         back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Chance of successful block +5',}},
  521.     }
  522.  
  523.     sets.defense.MDT = {
  524.         main="Burtgang",
  525.         ammo="Staunch Tathlum +1",
  526.         head="Nyame helm",
  527.         body="Nyame mail",
  528.         hands="Nyame Gauntlets",
  529.         legs="Nyame Flanchard",
  530.         feet="Nyame Sollerets",
  531.         neck="Unmoving collar +1",
  532.         waist="Carrier's Sash",
  533.         left_ear={name="Tuisto Earring", priority=2},
  534.         right_ear={name="Odnowa Earring +1", priority=3},
  535.         left_ring={name="Moonbeam Ring", bag="wardrobe3", priority=1},
  536.         right_ring={name="Moonbeam Ring", bag="wardrobe4", priority=4},
  537.         back={ name="Rudianos's Mantle", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Mag. Evasion+10','Enmity+10','Chance of successful block +5',}},
  538.     }
  539.    
  540.  
  541.     ------------------------------------------------------------------------------------------------
  542.     ---------------------------------------- Engaged Sets ------------------------------------------
  543.     ------------------------------------------------------------------------------------------------
  544.  
  545. sets.engaged = {
  546.         ammo = "Coiste Bodhar",
  547.         neck = "Combatant's torque",
  548.         head="Sakpata's Helm",
  549.         body="Hjarrandi Breast.",
  550.         hands="Sakpata's gauntlets",
  551.         legs="Sakpata's cuisses",
  552.         feet="Flam. Gambieras +2",
  553.         waist="Sailfi belt +1",
  554.         left_ear="Telos Earring",
  555.         right_ear="Crep. Earring",
  556.         left_ring={name="Chirich Ring +1", bag="wardrobe1"},
  557.         right_ring={name="Chirich Ring +1", bag="wardrobe4"},
  558.         back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Chance of successful block +5',}},
  559.     } --45dt 41stp 2650hp
  560.  
  561.     sets.engaged.Acc = set_combine(sets.engaged, {
  562.         ammo="Per. Lucky Egg",
  563.         legs={ name="Odyssean Cuisses", augments={'Blood Pact Dmg.+7','Pet: Crit.hit rate +2','"Treasure Hunter"+2','Accuracy+7 Attack+7',}},
  564.         waist="Chaac Belt",
  565.     })
  566.    
  567.     sets.engaged.Aftermath = {
  568.         ammo = "Coiste Bodhar",
  569.         neck = "Combatant's torque",
  570.         head="Sakpata's Helm",
  571.         body="Hjarrandi Breast.",
  572.         hands="Sakpata's gauntlets",
  573.         legs="Sakpata's cuisses",
  574.         feet="Flam. Gambieras +2",
  575.         waist="Sailfi belt +1",
  576.         left_ear="Telos Earring",
  577.         right_ear="Crep. Earring",
  578.         left_ring={name="Chirich Ring +1", bag="wardrobe1"},
  579.         right_ring={name="Chirich Ring +1", bag="wardrobe4"},
  580.         back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Chance of successful block +5',}},
  581.     }
  582.  
  583.  
  584.     ------------------------------------------------------------------------------------------------
  585.     ---------------------------------------- Hybrid Sets -------------------------------------------
  586.     ------------------------------------------------------------------------------------------------
  587.  
  588.     sets.Hybrid = {
  589.         ammo="Per. Lucky Egg",
  590.         neck = "Combatant's torque",
  591.         head="Sakpata's Helm",
  592.         body="Sakpata's Plate",
  593.         hands="Sakpata's gauntlets",
  594.         legs={ name="Odyssean Cuisses", augments={'Blood Pact Dmg.+7','Pet: Crit.hit rate +2','"Treasure Hunter"+2','Accuracy+7 Attack+7',}},
  595.         feet="Sakpata's leggings",
  596.         waist="Chaac Belt",
  597.         left_ear="Telos Earring",
  598.         right_ear="Odnowa Earring +1",
  599.         left_ring={name="Moonbeam Ring", bag="wardrobe3", priority=3},
  600.         right_ring={name="Moonbeam Ring", bag="wardrobe4", priority=4},
  601.         back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Chance of successful block +5',}},
  602.     } --45dt 38stp 2780HP
  603.  
  604.     sets.engaged.DT = set_combine(sets.engaged, sets.Hybrid)
  605.     sets.engaged.Acc.DT = set_combine(sets.engaged, {
  606.         ammo="Per. Lucky Egg",
  607.         legs={ name="Odyssean Cuisses", augments={'Blood Pact Dmg.+7','Pet: Crit.hit rate +2','"Treasure Hunter"+2','Accuracy+7 Attack+7',}},
  608.         waist="Chaac Belt",
  609.     })
  610.  
  611.     sets.engaged.Aftermath.DT = {
  612.         ammo = "Coiste Bodhar",
  613.         neck = "Combatant's torque",
  614.         head="Flam. zucchetto +2",
  615.         body="Sakpata's Plate",
  616.         hands="Flam. Manopolas +2",
  617.         legs="Sakpata's cuisses",
  618.         feet="Flam. Gambieras +2",
  619.         waist="Sailfi belt +1",
  620.         left_ear="Telos Earring",
  621.         right_ear="Crep. Earring",
  622.         left_ring={name="Moonbeam Ring", bag="wardrobe3", priority=3},
  623.         right_ring={name="Moonbeam Ring", bag="wardrobe4", priority=4},
  624.         back={ name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','Accuracy+10','"Store TP"+10','Chance of successful block +5',}},
  625.     }
  626.  
  627.     ------------------------------------------------------------------------------------------------
  628.     ---------------------------------------- Special Sets ------------------------------------------
  629.     ------------------------------------------------------------------------------------------------
  630.  
  631.     sets.buff.Doom = {
  632.         neck="Nicander's Necklace", --20
  633.         left_ring={name="Saida Ring", bag="wardrobe3"}, --20
  634.         right_ring={name="Purity Ring", bag="wardrobe1"}, --20
  635.         waist="Gishdubar Sash", --10
  636.     }
  637.    
  638.     sets.buff.Sleep = {}
  639.    
  640.     sets.Obi = {waist="Hachirin-no-Obi"}
  641.     sets.CP = {}
  642.     --sets.Reive = {neck="Ygnas's Resolve +1"}
  643.  
  644.     sets.Phys = {main="Burtgang", sub="Ochain"}
  645.     sets.Phys.Acc = {main="Naegling", sub="Srivatsa"}
  646.     sets.Magic = {main="Burtgang", sub="Aegis"}
  647.     sets.Magic.Acc = {main="Naegling", sub="Aegis"}
  648.  
  649.     end
  650.  
  651.     -------------------------------------------------------------------------------------------------------------------
  652. -- Job-specific hooks for standard casting events.
  653. -------------------------------------------------------------------------------------------------------------------
  654.  
  655. function job_precast(spell, action, spellMap, eventArgs)
  656.     if buffactive['terror'] or buffactive['petrification'] or buffactive['stun'] or buffactive['sleep'] then
  657.         add_to_chat(167, 'Stopped due to status.')
  658.         eventArgs.cancel = true
  659.         return
  660.     end
  661.    
  662.     refine_cure(spell, spellMap, eventArgs)
  663. end
  664.  
  665. function job_post_precast(spell, action, spellMap, eventArgs)
  666.     if buffactive['Aftermath: Lv.3'] then
  667.         equip({main=""})
  668.     end
  669.         if elemental_ws:contains(spell.name) then
  670.             -- Matching double weather (w/o day conflict).
  671.             if spell.element == world.weather_element and (get_weather_intensity() == 2 and spell.element ~= elements.weak_to[world.day_element]) then
  672.                 equip({waist="Hachirin-no-Obi"})
  673.             -- Target distance under 1.7 yalms.
  674.             elseif spell.target.distance < (1.7 + spell.target.model_size) then
  675.                 equip({waist="Orpheus's Sash"})
  676.             -- Matching day and weather.
  677.             elseif spell.element == world.day_element and spell.element == world.weather_element then
  678.                 equip({waist="Hachirin-no-Obi"})
  679.             -- Target distance under 8 yalms.
  680.             elseif spell.target.distance < (8 + spell.target.model_size) then
  681.                 equip({waist="Orpheus's Sash"})
  682.             -- Match day or weather.
  683.             elseif spell.element == world.day_element or spell.element == world.weather_element then
  684.                 equip({waist="Hachirin-no-Obi"})
  685.             end
  686.         end
  687. end
  688.  
  689. function job_post_midcast(spell, action, spellMap, eventArgs)
  690.     if buffactive['Aftermath: Lv.3'] then
  691.         equip({main=""})
  692.     end
  693. end
  694.  
  695. function job_aftercast(spell, action, spellMap, eventArgs)
  696.     if state.WeaponLock.value == false then
  697.         check_weaponset()
  698.     end
  699. end
  700.  
  701. -------------------------------------------------------------------------------------------------------------------
  702. -- Job-specific hooks for non-casting events.
  703. -------------------------------------------------------------------------------------------------------------------
  704.  
  705. -- Called when the player's status changes.
  706. function job_state_change(field, new_value, old_value)
  707.     classes.CustomDefenseGroups:clear()
  708.     classes.CustomDefenseGroups:append(state.Charm.current)
  709.     classes.CustomDefenseGroups:append(state.Knockback.current)
  710.     classes.CustomDefenseGroups:append(state.Death.current)
  711.  
  712.     classes.CustomMeleeGroups:clear()
  713.     classes.CustomMeleeGroups:append(state.Charm.current)
  714.     classes.CustomMeleeGroups:append(state.Knockback.current)
  715.     classes.CustomMeleeGroups:append(state.Death.current)
  716. end
  717.  
  718. function job_buff_change(buff,gain)
  719.     -- If we gain or lose any haste buffs, adjust which gear set we target.
  720. --    if buffactive['Reive Mark'] then
  721. --        if gain then
  722. --            equip(sets.Reive)
  723. --            disable('neck')
  724. --        else
  725. --            enable('neck')
  726. --        end
  727. --    end
  728.  
  729.     if buff == "terror" then
  730.         if gain then
  731.             equip(sets.defense.PDT)
  732.         end
  733.     end
  734.  
  735.     if buff == "doom" then
  736.         if gain then
  737.             equip(sets.buff.Doom)
  738.             send_command('@input /p Doomed, please Cursna.')
  739.              disable('neck','legs','left_ring','right_ring','waist')
  740.         else
  741.             enable('neck','legs','left_ring','right_ring','waist')
  742.             send_command('input /p Doom removed, Thank you.')
  743.             handle_equipping_gear(player.status)
  744.         end
  745.     end
  746.    
  747.     if buff == "Sleep" then
  748.         if gain then
  749.             send_command('@input /p Slept, please wake.')
  750.         else
  751.             send_command('input /p '..player.name..' is no longer asleep.')
  752.         end
  753.     end
  754.    
  755.     if buff == "petrification" then
  756.         if gain then    
  757.             send_command('@input /p Petrification, please Stona.')     
  758.         else
  759.             send_command('input /p '..player.name..' is no longer Petrify Thank you !')
  760.         end
  761.     end
  762.                  
  763.     if buff == "Charm" then
  764.         if gain then           
  765.             send_command('@input /p Charmed, please Sleep me.')    
  766.         else   
  767.             send_command('input /p '..player.name..' is no longer Charmed, please wake me up!')
  768.         end
  769.     end
  770.                
  771.     if buff == "paralysis" then
  772.         if gain then          
  773.             send_command('@input /p '..player.name..' Paralysed, please Paralyna.')
  774.         else                        
  775.             send_command('input /p '..player.name..' is no longer Paralysed Thank you !')
  776.         end
  777.     end
  778.                
  779.     if buff == "silence" then
  780.         if gain then              
  781.             send_command('@input /p '..player.name..' Silence, please Silena.')
  782.             send_command('@input /item "Echo Drops" <me>')
  783.         else                        
  784.             send_command('input /p '..player.name..' is no longer Silenced Thank you !')
  785.         end
  786.     end
  787.  
  788.     if buff:startswith('Aftermath Lv.3') then
  789.             state.Buff.Aftermath = gain
  790.             --customize_melee_set()
  791.             handle_equipping_gear(player.status)
  792.     end
  793. end
  794.  
  795.  
  796.  
  797.  
  798. -- Handle notifications of general user state change.
  799. function job_state_change(stateField, newValue, oldValue)
  800.     if state.WeaponLock.value == true then
  801.         disable('main','sub')
  802.     else
  803.         enable('main','sub')
  804.     end
  805.  
  806.     check_weaponset()
  807.  
  808. end
  809.  
  810. -------------------------------------------------------------------------------------------------------------------
  811. -- User code that supplements standard library decisions.
  812. -------------------------------------------------------------------------------------------------------------------
  813.  
  814. function job_handle_equipping_gear(playerStatus, eventArgs)
  815.     check_gear()
  816.     check_moving()
  817. end
  818.  
  819. function job_update(cmdParams, eventArgs)
  820.     handle_equipping_gear(player.status)
  821. end
  822.  
  823. function check_moving()
  824.     if state.DefenseMode.value == 'None'  and state.Kiting.value == false then
  825.         if state.Auto_Kite.value == false and moving then
  826.             state.Auto_Kite:set(true)
  827.         elseif state.Auto_Kite.value == true and moving == false then
  828.             state.Auto_Kite:set(false)
  829.         end
  830.     end
  831. end
  832.  
  833. -- Modify the default melee set after it was constructed.
  834. function customize_melee_set(meleeSet)
  835.     if buffactive['Aftermath: Lv.3'] and player.equipment.main == "Burtgang"
  836.         and state.DefenseMode.value == 'None' then
  837.         if state.HybridMode.value == "DT" then
  838.             meleeSet = set_combine(meleeSet, sets.engaged.Aftermath.DT)
  839.         else
  840.             meleeSet = set_combine(meleeSet, sets.engaged.Aftermath)
  841.         end
  842.     end
  843.  
  844.     return meleeSet
  845. end
  846.  
  847. -- Function to display the current relevant user state when doing an update.
  848. -- Set eventArgs.handled to true if display was handled, and you don't want the default info shown.
  849. function display_current_job_state(eventArgs)
  850.         local cf_msg = ''
  851.     if state.CombatForm.has_value then
  852.         cf_msg = ' (' ..state.CombatForm.value.. ')'
  853.     end
  854.  
  855.     local m_msg = state.OffenseMode.value
  856.     if state.HybridMode.value ~= 'Normal' then
  857.         m_msg = m_msg .. '/' ..state.HybridMode.value
  858.     end
  859.  
  860.     local ws_msg = state.WeaponskillMode.value
  861.  
  862.     local d_msg = 'None'
  863.     if state.DefenseMode.value ~= 'None' then
  864.         d_msg = state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value
  865.     end
  866.  
  867.     local i_msg = state.IdleMode.value
  868.  
  869.     local msg = ''
  870.     if state.Kiting.value then
  871.         msg = msg .. ' Kiting: On |'
  872.     end
  873.  
  874.     add_to_chat(002, '| ' ..string.char(31,210).. 'Melee' ..cf_msg.. ': ' ..string.char(31,001)..m_msg.. string.char(31,002)..  ' |'
  875.         ..string.char(31,207).. ' WS: ' ..string.char(31,001)..ws_msg.. string.char(31,002)..  ' |'
  876.         ..string.char(31,004).. ' Defense: ' ..string.char(31,001)..d_msg.. string.char(31,002)..  ' |'
  877.         ..string.char(31,008).. ' Idle: ' ..string.char(31,001)..i_msg.. string.char(31,002)..  ' |'
  878.         ..string.char(31,002)..msg)
  879.  
  880.     eventArgs.handled = true
  881. end
  882.  
  883. -------------------------------------------------------------------------------------------------------------------
  884. -- General hooks for other events.
  885. -------------------------------------------------------------------------------------------------------------------
  886. function job_get_spell_map(spell, default_spell_map)
  887.     if spell.skill == 'Blue Magic' then
  888.         for category,spell_list in pairs(blue_magic_maps) do
  889.             if spell_list:contains(spell.english) then
  890.                 return category
  891.             end
  892.         end
  893.     end
  894. end
  895.  
  896. -------------------------------------------------------------------------------------------------------------------
  897. -- Utility functions specific to this job.
  898. -------------------------------------------------------------------------------------------------------------------
  899.  
  900. function check_gear()
  901.     if no_swap_gear:contains(player.equipment.left_ring) then
  902.         disable("left_ring")
  903.     else
  904.         enable("left_ring")
  905.     end
  906.     if no_swap_gear:contains(player.equipment.right_ring) then
  907.         disable("right_ring")
  908.     else
  909.         enable("right_ring")
  910.     end
  911. end
  912.  
  913. function check_weaponset()
  914.     if state.OffenseMode.value == 'Atk' then
  915.         equip(sets[state.WeaponSet.current].Acc)
  916.     else
  917.         equip(sets[state.WeaponSet.current])
  918.     end
  919. end
  920.  
  921. windower.register_event('zone change',
  922.     function()
  923.         if no_swap_gear:contains(player.equipment.left_ring) then
  924.             enable("left_ring")
  925.             equip(sets.idle)
  926.         end
  927.         if no_swap_gear:contains(player.equipment.right_ring) then
  928.             enable("right_ring")
  929.             equip(sets.idle)
  930.         end
  931.     end
  932. )
  933.  
  934. -- Select default macro book on initial load or subjob change.
  935. function select_default_macro_book()
  936.     -- Default macro set/book: (set, book)
  937.     if player.sub_job == 'BLU' then
  938.         set_macro_page(2, 6)
  939.     elseif player.sub_job == 'DRK' then
  940.         set_macro_page(1, 6)
  941.     elseif player.sub_job == 'SAM' then
  942.         set_macro_page(4, 6)
  943.     elseif player.sub_job == 'WAR' then
  944.         set_macro_page(3, 6)
  945.     elseif player.sub_job == 'DRG' then
  946.         set_macro_page(3, 6)
  947.     elseif player.sub_job == 'RUN' then
  948.         set_macro_page(5, 6)
  949.     else
  950.         set_macro_page(1, 6)
  951.     end
  952. end
  953.  
  954. function set_lockstyle()
  955.     send_command('@input ;wait 5;input /lockstyleset ' .. lockstyleset)
  956. end
  957.  
  958. --Cure rules--
  959. local cure_targets = {
  960.     I   =   150,
  961.     II  =   300,
  962.     III =   500,
  963.     IV  =   700
  964. }
  965. local cure_costs = {
  966.     I   = 8,
  967.     II  = 24,
  968.     III = 46,
  969.     IV  = 88
  970. }
  971. function refine_cure(spell, spellMap, eventArgs)
  972.     if spell.name:startswith('Cure') then
  973.    
  974.         local newCure = spell.english
  975.        
  976.         local missingHP
  977.         local currentHeal = 0
  978.        
  979.         -- If curing ourself, get our exact missing HP
  980.         if spell.target.type == "SELF" then
  981.             missingHP = player.max_hp - player.hp
  982.         -- If curing someone in our alliance, we can estimate their missing HP
  983.         elseif spell.target.isallymember then
  984.             local target = find_player_in_alliance(spell.target.name)
  985.             local est_max_hp = target.hp / (target.hpp/100)
  986.             missingHP = math.floor(est_max_hp - target.hp)
  987.         end
  988.  
  989.         for level, health in pairs(cure_targets) do
  990.             if missingHP > health and currentHeal < health and player.mp >= cure_costs[level] then
  991.                 currentHeal = health
  992.                 if level == 'I' then
  993.                     newCure = 'Cure'
  994.                 else
  995.                     newCure = 'Cure '..level
  996.                 end
  997.             end
  998.         end
  999.  
  1000.         if newCure ~= spell.english then
  1001.             send_command('@input /ma "'..newCure..'" '..tostring(spell.target.raw))
  1002.             eventArgs.cancel = true
  1003.         else
  1004.             if missingHP and missingHP > 0 then
  1005.                 add_to_chat(122,'Trying to cure '..tostring(missingHP)..' HP using '..newCure..'.')
  1006.             end
  1007.         end
  1008.     end
  1009. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement