Advertisement
Guest User

PLD

a guest
May 5th, 2016
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 18.38 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job.  Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. -- Initialization function for this job file.
  6. function get_sets()
  7.     mote_include_version = 2
  8.  
  9.     -- Load and initialize the include file.
  10.     include('Mote-Include.lua')
  11.  
  12. end
  13.  
  14. -- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
  15. function job_setup()
  16.     state.Buff.Sentinel = buffactive.sentinel or false
  17.     state.Buff.Cover = buffactive.cover or false
  18.     state.Buff.Doom = buffactive.Doom or false
  19. end
  20.  
  21. -------------------------------------------------------------------------------------------------------------------
  22. -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
  23. -------------------------------------------------------------------------------------------------------------------
  24.  
  25. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  26. function user_setup()
  27.     state.OffenseMode:options('Normal', 'Acc', 'JobPoint')
  28.     state.WeaponskillMode:options('Normal', 'Acc', 'JobPoint')
  29.     state.PhysicalDefenseMode:options('DT')
  30.     state.MagicalDefenseMode:options('DT')
  31.     state.ExtraDefenseMode = M{['description']='Extra Defense Mode', 'None', 'Knockback', 'MP', 'MP_Knockback'}
  32.    
  33.     state.HybridMode:options('Normal', 'PDT', 'Reraise')
  34.     state.CastingMode:options('Normal', 'Resistant')
  35.     state.EquipShield = M(false, 'Equip Shield w/Defense')
  36.     --===============================================  
  37.  
  38.     --Gear with Augments
  39.     gear.ambCape_TP = {name="Rudianos's Mantle", augments={'DEX+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}}
  40.     --===============================================
  41.    
  42.     update_defense_mode()
  43.    
  44.     send_command('bind !f8 gs c cycle ExtraDefenseMode')
  45.     send_command('bind @f10 gs c toggle EquipShield')
  46.     send_command('bind @f11 gs c toggle EquipShield')
  47.  
  48.     select_default_macro_book()
  49. end
  50.  
  51. function user_unload()
  52.     send_command('unbind ^f11')
  53.     send_command('unbind !f11')
  54.     send_command('unbind @f10')
  55.     send_command('unbind @f11')
  56. end
  57.  
  58.  
  59. -- Define sets and vars used by this job file.
  60. function init_gear_sets()
  61.     --------------------------------------
  62.     -- Precast sets
  63.     --------------------------------------
  64.        
  65.     -- Precast sets to enhance JAs
  66.     sets.precast.JA['Invincible'] = {legs="Cab. Breeches"}
  67.     sets.precast.JA['Holy Circle'] = {feet="Gallant Leggings"}
  68.     sets.precast.JA['Shield Bash'] = {hands="Cab. Gauntlets"}
  69.     sets.precast.JA['Sentinel'] = {feet="Cab. Leggings"}
  70.     sets.precast.JA['Rampart'] = {head="Valor Coronet"}
  71.     sets.precast.JA['Fealty'] = {body="Cab. Surcoat +1"}
  72.     sets.precast.JA['Divine Emblem'] = {feet="Chev. Sabatons"}
  73.     sets.precast.JA['Cover'] = {head="Rev. Coronet", body="Cab. Surcoat +1"}
  74.    
  75.     --Enmity
  76.     sets.precast.JA['Provoke'] = {ammo="Paeapua",
  77.         head="Yorium Barbuta",neck="Unmoving Collar",
  78.         body="Chev. Cuirass",hands="Yorium Gauntlets",ring1="Apeile Ring +1",ring2="Apeile Ring",
  79.         back="Weard Mantle",waist="Creed Baudrier",legs="Yorium Cuisses",feet="Yorium Sabatons"}
  80.  
  81.     --MND for Chivalry
  82.     sets.precast.JA['Chivalry'] = {
  83.         head="Quiahuiz Helm",neck="Unmoving Collar",ear1="Nourish. Earring",ear2="Nourish. Earring +1",
  84.         body="Cab. Surcoat +1",hands="Macabre Gaunt. +1",ring1="Apeile Ring +1",ring2="Defending Ring",
  85.         back="Weard Mantle",waist="Creed Baudrier",legs="Cab. Breeches",feet="Yorium Sabatons"}
  86.    
  87.  
  88.     -- Waltz set (chr and vit)
  89.     sets.precast.Waltz = {
  90.         head="Quiahuiz Helm",neck="Twilight Torque",ear1="Impreg. Earring",ear2="Ethereal Earring",
  91.         body="Cab. Surcoat +1",hands="Buremte Gloves",ring1="Kunaji Ring",ring2="Vocane Ring",
  92.         back="Weard Mantle",waist="Chuq'aba Belt",legs="Yorium Cuisses",feet="Yorium Sabatons"}
  93.    
  94.     --sets.precast.Step = {waist="Chaac Belt"}
  95.     --sets.precast.Flourish1 = {waist="Chaac Belt"}
  96.  
  97.     -- Fast cast sets for spells
  98.    
  99.     sets.precast.FC = {ammo="Incantor Stone", head="Chevalier's Armet", ear1="Loquac. Earring"}
  100.    
  101.     sets.precast.Cure = set_combine(sets.precast.FC, {ear1="Nourish. Earring",ear2="Nourish. Earring +1"})
  102.  
  103.     --sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  104.  
  105.        
  106.     -- Weaponskill sets
  107.     -- Default set for any weaponskill that isn't any more specifically defined
  108.     sets.precast.WS = {ammo="Jukukik Feather",
  109.         head="Otomi Helm",neck="Fotia Gorget",ear1="Moonshade Earring",ear2="Brutal Earring",
  110.         body="Sulevia's Plate. +1",hands="Sulev. Gauntlets +1",ring1="Vehemence Ring",ring2="Rajas Ring",
  111.         back=gear.ambCape_TP,waist="Fotia Belt",legs="Sulevi. Cuisses +1",feet="Sulev. Leggings +1"}
  112.  
  113.     sets.precast.WS.Acc = {ammo="Jukukik Feather",
  114.         head="Sulevia's Mask +1",neck="Fotia Gorget",ear1="Moonshade Earring",ear2="Brutal Earring",
  115.         body="Sulevia's Plate. +1",hands="Sulev. Gauntlets +1",ring1="Mouflon Ring",ring2="Rajas Ring",
  116.         back=gear.ambCape_TP,waist="Dynamic Belt +1",legs="Sulevi. Cuisses +1",feet="Sulev. Leggings +1"}
  117.    
  118.     sets.precast.WS.JobPoint = set_combine(sets.precast.WS.Acc, {back="Mecisto. Mantle"})
  119.  
  120.     -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
  121.     sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {head="Sulevia's Mask +1"})
  122.    
  123.     sets.precast.WS['Chant du Cygne'] = {ammo="Jukukik Feather",
  124.         head="Quiahuiz Helm",neck="Fotia Gorget",ear1="Moonshade Earring",ear2="Brutal Earring",
  125.         body="Acro Surcoat",hands="Acro Gauntlets",ring1="Rajas Ring",ring2="Thundersoul Ring",
  126.         back=gear.ambCape_TP,waist="Fotia Belt",legs="Acro Breeches",feet="Acro Leggings"}
  127.        
  128.     sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS['Chant du Cygne'], {
  129.         hands="Sulev. Gauntlets +1",ring2="Enlivened Ring",feet="Sulev. Leggings +1"})
  130.    
  131.     sets.precast.WS['Atonement'] = {ammo="Paeapua",
  132.         head="Yorium Barbuta",neck="Fotia Gorget",ear1="Moonshade Earring",ear2="Brutal Earring",
  133.         body="Phorcys Korazin",hands="Yorium Gauntlets",ring1="Apeile Ring +1",ring2="Apeile Ring",
  134.         back="Weard Mantle",waist="Fotia Belt",legs="Yorium Cuisses",feet="Yorium Sabatons"}
  135.        
  136.     sets.precast.WS['Aeolian Edge'] = {ammo="Jukukik Feather",
  137.         head="Quiahuiz Helm",neck="Fotia Gorget",ear1="Moonshade Earring",ear2="Strophadic Earring",
  138.         body="Phorcys Korazin",hands="Buremte Gloves",ring1="Acumen Ring",ring2="Spiral Ring",
  139.         back="Toro Cape",waist="Fotia Belt",legs="Acro Breeches",feet="Sulev. Leggings +1"}
  140.        
  141.    
  142.     --------------------------------------
  143.     -- Midcast sets
  144.     --------------------------------------
  145.  
  146.     sets.midcast.FastRecast = {ammo="Incantor Stone",
  147.         head="Chevalier's Armet", ear1="Loquac. Earring",
  148.         body="Cab. Surcoat +1",hands="Macabre Gaunt. +1",
  149.         waist="Chuq'aba Belt",legs="Chevalier's Cuisses",feet="Chev. Sabatons"}
  150.        
  151.     sets.midcast.Enmity = {ammo="Paeapua",
  152.         head="Yorium Barbuta",neck="Unmoving Collar",
  153.         body="Chev. Cuirass",hands="Yorium Gauntlets",ring1="Apeile Ring +1",ring2="Apeile Ring",
  154.         back="Weard Mantle",waist="Creed Baudrier",legs="Yorium Cuisses",feet="Yorium Sabatons"}
  155.  
  156.     sets.midcast.Flash = sets.midcast.Enmity
  157.    
  158.     sets.midcast.Stun = sets.midcast.Enmity
  159.    
  160.     sets.midcast.Cure = set_combine(sets.midcast.Enmity, {
  161.         hands="Macabre Gaunt. +1",ear1="Nourish. Earring",ear2="Nourish. Earring +1",
  162.         waist="Chuq'aba Belt",ring2="Kunaji Ring",ring1="Vocane Ring"})
  163.  
  164.     --sets.midcast['Enhancing Magic'] = {neck="Colossus's Torque",waist="Olympus Sash",legs="Reverence Breeches +1"}
  165.    
  166.     --sets.midcast.Protect = {ring1="Sheltered Ring"}
  167.     --sets.midcast.Shell = {ring1="Sheltered Ring"}
  168.    
  169.     --------------------------------------
  170.     -- Idle/resting/defense/etc sets
  171.     --------------------------------------
  172.  
  173.     sets.Reraise = {head="Twilight Helm", body="Twilight Mail"}
  174.    
  175.     --[[sets.resting = {neck="Creed Collar",
  176.         ring1="Sheltered Ring",ring2="Paguroidea Ring",
  177.         waist="Austerity Belt"}]]
  178.        
  179.     -- Idle sets
  180.     sets.idle = {ammo="Incantor Stone",
  181.         head="Twilight Helm",neck="Creed Collar",ear1="Ethereal Earring",ear2="Impreg. Earring",
  182.         body="Twilight Mail",hands="Buremte Gloves",ring1="Vocane Ring",ring2="Defending Ring",
  183.         back="Weard Mantle",waist="Chuq'aba Belt",legs="Blood Cuisses",feet="Sulev. Leggings +1"}
  184.  
  185.     sets.idle.Town = {
  186.         head="Otomi Helm",
  187.         body="Acro Surcoat",hands="Macabre Gaunt. +1",
  188.         legs="Blood Cuisses",feet="Acro Leggings"}
  189.        
  190.     sets.idle.Adoulin = set_combine(sets.idle, {body="Councilor's Garb"})
  191.    
  192.     sets.idle.Weak = set_combine(sets.idle, sets.Reraise)
  193.    
  194.     sets.Kiting = {legs="Blood Cuisses"}
  195.  
  196.     sets.latent_refresh = {waist="Fucho-no-obi"}
  197.  
  198.  
  199.     --------------------------------------
  200.     -- Defense sets
  201.     --------------------------------------
  202.    
  203.     -- Extra defense sets.  Apply these on top of melee or defense sets.
  204.     sets.Knockback = {back="Repulse Mantle",ring2="Vocane Ring"}
  205.     sets.MP = {neck="Creed Collar"} --,waist="Flume Belt"
  206.     --sets.MP_Knockback = {neck="Creed Collar",waist="Flume Belt",back="Repulse Mantle"}
  207.    
  208.     -- If EquipShield toggle is on (Win+F10 or Win+F11), equip the weapon/shield combos here
  209.     -- when activating or changing defense mode:
  210.     --sets.PhysicalShield = {main="Claidheamh Soluis",sub="Ochain"}
  211.     --sets.MagicalShield = {main="Claidheamh Soluis",sub="Aegis"}
  212.  
  213.     -- Basic defense sets.
  214.    
  215.     --This set caps Damage Taken
  216.     sets.defense.DT = {ammo="Jukukik Feather",
  217.         head="Otomi Helm",neck="Twilight Torque",ear1="Ethereal Earring",ear2="Impreg. Earring",
  218.         body="Cab. Surcoat +1",hands="Sulev. Gauntlets +1",ring1="Vocane Ring",ring2="Defending Ring",
  219.         back="Weard Mantle",waist="Dynamic Belt +1",legs="Sulevi. Cuisses +1",feet="Sulev. Leggings +1"}
  220. --[[    
  221.     sets.defense.PDT = {ammo="Jukukik Feather",
  222.         head="Otomi Helm",neck="Twilight Torque",ear1="Ethereal Earring",ear2="Impregnable Earring",
  223.         body="Cab. Surcoat +1",hands="Macabre Gaunt. +1",ring1="Vocane Ring",ring2="Defending Ring",
  224.         back="Weard Mantle",waist="Nierenschutz",legs="Chevalier's Cuisses",feet="Acro Leggings"}
  225.  
  226.     sets.defense.MDT = {ammo="Jukukik Feather",
  227.         head="Otomi Helm",neck="Twilight Torque",ear1="Ethereal Earring",ear2="Impregnable Earring",
  228.         body="Cab. Surcoat +1",hands="Rev. Gauntlets +1",ring1="Vocane Ring",ring2="Defending Ring",
  229.         back="Weard Mantle",waist="Nierenschutz",legs="Chevalier's Cuisses",feet="Cab. Leggings"}
  230. ]]
  231.  
  232.     --------------------------------------
  233.     -- Engaged sets
  234.     --------------------------------------
  235.    
  236.     sets.engaged = {ammo="Paeapua",
  237.         head="Otomi Helm",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  238.         body="Acro Surcoat",hands="Acro Gauntlets",ring1="Rajas Ring",ring2="Tyrant's Ring",
  239.         back=gear.ambCape_TP,waist="Windbuffet Belt +1",legs="Acro Breeches",feet="Acro Leggings"}
  240.  
  241.     sets.engaged.Acc = set_combine(sets.engaged, {ammo="Jukukik Feather",
  242.         neck="Houyi's Gorget",hands="Buremte Gloves",ring2="Mouflon Ring"})
  243.    
  244.     sets.engaged.JobPoint = set_combine(sets.engaged, {back="Mecisto. Mantle"})
  245.  
  246.     sets.engaged.DW = set_combine(sets.engaged, {ear1="Brutal Earring",ear2="Suppanomimi"})
  247.     sets.engaged.DW.Acc = set_combine(sets.engaged.DW, {hands="Buremte Gloves",ring2="Mouflon Ring"})
  248.  
  249.     sets.engaged.PDT = set_combine(sets.engaged, {ring1="Vocane Ring",ring2="Defending Ring"})
  250.     sets.engaged.Reraise = set_combine(sets.engaged, sets.Reraise)
  251.     sets.engaged.Acc.Reraise = set_combine(sets.engaged.Acc, sets.Reraise)
  252.  
  253.     sets.engaged.DW.PDT = set_combine(sets.engaged.DW, {ring1="Vocane Ring",ring2="Defending Ring"})
  254.     sets.engaged.DW.Reraise = set_combine(sets.engaged.DW, sets.Reraise)
  255.     sets.engaged.DW.Acc.Reraise = set_combine(sets.engaged.DW.Acc, sets.Reraise)
  256.  
  257.  
  258.     --------------------------------------
  259.     -- Custom buff sets
  260.     --------------------------------------
  261.  
  262.     sets.buff.Doom = {}
  263.     sets.buff.Cover = {head="Rev. Coronet", body="Cab. Surcoat +1"}
  264.    
  265.     --------------------------------------
  266.     -- Other sets
  267.     --------------------------------------
  268.    
  269. end
  270.  
  271.  
  272. -------------------------------------------------------------------------------------------------------------------
  273. -- Job-specific hooks for standard casting events.
  274. -------------------------------------------------------------------------------------------------------------------
  275.  
  276. function job_midcast(spell, action, spellMap, eventArgs)
  277.     -- If DefenseMode is active, apply that gear over midcast
  278.     -- choices.  Precast is allowed through for fast cast on
  279.     -- spells, but we want to return to def gear before there's
  280.     -- time for anything to hit us.
  281.     -- Exclude Job Abilities from this restriction, as we probably want
  282.     -- the enhanced effect of whatever item of gear applies to them,
  283.     -- and only one item should be swapped out.
  284.     if state.DefenseMode.value ~= 'None' and spell.type ~= 'JobAbility' then
  285.         handle_equipping_gear(player.status)
  286.         eventArgs.handled = true
  287.     end
  288. end
  289.  
  290. -------------------------------------------------------------------------------------------------------------------
  291. -- Job-specific hooks for non-casting events.
  292. -------------------------------------------------------------------------------------------------------------------
  293.  
  294. -- Called when the player's status changes.
  295. function job_state_change(field, new_value, old_value)
  296.     classes.CustomDefenseGroups:clear()
  297.     classes.CustomDefenseGroups:append(state.ExtraDefenseMode.current)
  298.     if state.EquipShield.value == true then
  299.         classes.CustomDefenseGroups:append(state.DefenseMode.current .. 'Shield')
  300.     end
  301.  
  302.     classes.CustomMeleeGroups:clear()
  303.     classes.CustomMeleeGroups:append(state.ExtraDefenseMode.current)
  304. end
  305.  
  306. -------------------------------------------------------------------------------------------------------------------
  307. -- User code that supplements standard library decisions.
  308. -------------------------------------------------------------------------------------------------------------------
  309.  
  310. -- Called by the 'update' self-command, for common needs.
  311. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  312. function job_update(cmdParams, eventArgs)
  313.     update_defense_mode()
  314. end
  315.  
  316. -- Modify the default idle set after it was constructed.
  317. function customize_idle_set(idleSet)
  318.     if player.mpp < 51 then
  319.         idleSet = set_combine(idleSet, sets.latent_refresh)
  320.     end
  321.     if state.Buff.Doom then
  322.         idleSet = set_combine(idleSet, sets.buff.Doom)
  323.     end
  324.    
  325.     return idleSet
  326. end
  327.  
  328. -- Modify the default melee set after it was constructed.
  329. function customize_melee_set(meleeSet)
  330.     if state.Buff.Doom then
  331.         meleeSet = set_combine(meleeSet, sets.buff.Doom)
  332.     end
  333.    
  334.     return meleeSet
  335. end
  336.  
  337. function customize_defense_set(defenseSet)
  338.     if state.ExtraDefenseMode.value ~= 'None' then
  339.         defenseSet = set_combine(defenseSet, sets[state.ExtraDefenseMode.value])
  340.     end
  341.     --[[
  342.     if state.EquipShield.value == true then
  343.         defenseSet = set_combine(defenseSet, sets[state.DefenseMode.current .. 'Shield'])
  344.     end
  345.    
  346.     if state.Buff.Doom then
  347.         defenseSet = set_combine(defenseSet, sets.buff.Doom)
  348.     end
  349.     ]]
  350.     return defenseSet
  351. end
  352.  
  353.  
  354. function display_current_job_state(eventArgs)
  355.     local msg = 'Melee'
  356.    
  357.     if state.CombatForm.has_value then
  358.         msg = msg .. ' (' .. state.CombatForm.value .. ')'
  359.     end
  360.    
  361.     msg = msg .. ': '
  362.    
  363.     msg = msg .. state.OffenseMode.value
  364.     if state.HybridMode.value ~= 'Normal' then
  365.         msg = msg .. '/' .. state.HybridMode.value
  366.     end
  367.     msg = msg .. ', WS: ' .. state.WeaponskillMode.value
  368.    
  369.     if state.DefenseMode.value ~= 'None' then
  370.         msg = msg .. ', Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  371.     end
  372.  
  373.     if state.ExtraDefenseMode.value ~= 'None' then
  374.         msg = msg .. ', Extra: ' .. state.ExtraDefenseMode.value
  375.     end
  376.    
  377.     if state.EquipShield.value == true then
  378.         msg = msg .. ', Force Equip Shield'
  379.     end
  380.    
  381.     if state.Kiting.value == true then
  382.         msg = msg .. ', Kiting'
  383.     end
  384.  
  385.     if state.PCTargetMode.value ~= 'default' then
  386.         msg = msg .. ', Target PC: '..state.PCTargetMode.value
  387.     end
  388.  
  389.     if state.SelectNPCTargets.value == true then
  390.         msg = msg .. ', Target NPCs'
  391.     end
  392.  
  393.     add_to_chat(122, msg)
  394.  
  395.     eventArgs.handled = true
  396. end
  397.  
  398. -------------------------------------------------------------------------------------------------------------------
  399. -- Utility functions specific to this job.
  400. -------------------------------------------------------------------------------------------------------------------
  401.  
  402. function update_defense_mode()
  403.     if player.equipment.main == 'Kheshig Blade' and not classes.CustomDefenseGroups:contains('Kheshig Blade') then
  404.         classes.CustomDefenseGroups:append('Kheshig Blade')
  405.     end
  406.    
  407.     if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  408.         if player.equipment.sub and not player.equipment.sub:contains('Shield') and
  409.            player.equipment.sub ~= 'Aegis' and player.equipment.sub ~= 'Ochain' then
  410.             state.CombatForm:set('DW')
  411.         else
  412.             state.CombatForm:reset()
  413.         end
  414.     end
  415. end
  416.  
  417. function update_combat_form()
  418.     if areas.Dynamis:contains(world.area) then
  419.         state.CombatForm:set('Dynamis')
  420.     else
  421.         state.CombatForm:reset()
  422.     end
  423. end
  424.  
  425.  
  426. -- Select default macro book on initial load or subjob change.
  427. function select_default_macro_book()
  428.     -- Default macro set/book
  429.     if player.sub_job == 'WAR' then
  430.         set_macro_page(3, 5)
  431.     elseif player.sub_job == 'RUN' then
  432.         set_macro_page(3, 13)
  433.     elseif player.sub_job == 'BLU' then
  434.         set_macro_page(3, 14)
  435.     elseif player.sub_job == 'RDM' then
  436.         set_macro_page(3, 15)
  437.     else
  438.         set_macro_page(1, 5)
  439.     end
  440. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement