Advertisement
Dcronic

PLD LUA

Jul 6th, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 17.41 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. end
  12.  
  13. -- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
  14. function job_setup()
  15.     state.Buff.Sentinel = buffactive.sentinel or false
  16.     state.Buff.Cover = buffactive.cover or false
  17.     state.Buff.Doom = buffactive.Doom or false
  18. end
  19.  
  20. -------------------------------------------------------------------------------------------------------------------
  21. -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
  22. -------------------------------------------------------------------------------------------------------------------
  23.  
  24. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  25. function user_setup()
  26.     state.OffenseMode:options('Normal', 'Acc')
  27.     state.HybridMode:options('Normal', 'PDT', 'Reraise')
  28.     state.WeaponskillMode:options('Normal', 'Acc')
  29.     state.CastingMode:options('Normal', 'Resistant')
  30.     state.PhysicalDefenseMode:options('PDT', 'HP', 'Reraise', 'Charm')
  31.     state.MagicalDefenseMode:options('MDT', 'HP', 'Reraise', 'Charm')
  32.    
  33.     state.ExtraDefenseMode = M{['description']='Extra Defense Mode', 'None', 'MP', 'Knockback', 'MP_Knockback'}
  34.     state.EquipShield = M(false, 'Equip Shield w/Defense')
  35.  
  36.     update_defense_mode()
  37.    
  38.     send_command('bind ^f11 gs c cycle MagicalDefenseMode')
  39.     send_command('bind !f11 gs c cycle ExtraDefenseMode')
  40.     send_command('bind @f10 gs c toggle EquipShield')
  41.     send_command('bind @f11 gs c toggle EquipShield')
  42.  
  43.     select_default_macro_book()
  44.    
  45.  
  46.    
  47.     yorium_head_ws={name='Yorium Barbuta', augments={'STR+6 VIT+6', 'Accuracy+8', 'Enmity+9'}}
  48.     yorium_hands_ws={name='Yorium gauntlets', augments={'Enmity+7', 'Weapon skill damage +3%'}}
  49.     yorium_legs_ws={name='Yorium cuisses', augments={'Enmity+7', 'Weapon skill damage +3%'}}
  50.     yorium_feet_ws={name='Yorium Sabatons', augments={'Attack+4', 'Enmity +8', 'Weapon skill damage+2%'}}
  51.    
  52.     yorium_head_tp={name='Yorium Barbuta', augments={'Accuracy+21', '"Store TP"+4', 'Damage taken -2%'}}
  53.     yorium_hands_tp={name='Yorium gauntlets', augments={'Accuracy+17 Attack+17', '"Dbl. Atk."+3', 'Damage taken -2%'}}
  54.     yorium_legs_tp={name='Yorium cuisses', augments={'Accuracy+17 Attack+17', '"Dbl. Atk."+3', 'Phys. dmg. taken -4%'}}
  55.     yorium_feet_tp={name='Yorium Sabatons', augments={'Accuracy+19 Attack+19', '"Dbl. Atk."+3', 'Damage taken -2%'}}
  56.    
  57.    
  58.    
  59.    
  60. end
  61.  
  62. function user_unload()
  63.     send_command('unbind ^f11')
  64.     send_command('unbind !f11')
  65.     send_command('unbind @f10')
  66.     send_command('unbind @f11')
  67. end
  68.  
  69.  
  70. -- Define sets and vars used by this job file.
  71. function init_gear_sets()
  72.     --------------------------------------
  73.     -- Precast sets
  74.     --------------------------------------
  75.    
  76.     -- Precast sets to enhance JAs
  77.     sets.precast.JA['Invincible'] = {legs="Caballarius Breeches"}
  78.     sets.precast.JA['Holy Circle'] = {feet="Reverence Leggings +1"}
  79.     sets.precast.JA['Shield Bash'] = {hands="Caballarius Gauntlets"}
  80.     sets.precast.JA['Sentinel'] = {feet="Caballarius Leggings"}
  81.     sets.precast.JA['Rampart'] = {head="Caballarius Coronet"}
  82.     sets.precast.JA['Fealty'] = {body="Caballarius Surcoat +1"}
  83.     sets.precast.JA['Divine Emblem'] = {feet="Creed Sabatons +2"}
  84.     sets.precast.JA['Cover'] = {head="Reverence Coronet +1"}
  85.  
  86.     -- add mnd for Chivalry
  87.     sets.precast.JA['Chivalry'] = {
  88.         head="Reverence Coronet +1",
  89.         body="Reverence Surcoat +1",
  90.         hands="Reverence Gauntlets +1",
  91.         ring1="Leviathan Ring",
  92.         ring2="Aquasoul Ring",
  93.         back="Weard Mantle",
  94.         legs="Reverence Breeches +1",
  95.         feet="Whirlpool Greaves"}
  96.    
  97.  
  98.     -- Waltz set (chr and vit)
  99.     sets.precast.Waltz = {ammo="Sonia's Plectrum",
  100.         head="Reverence Coronet +1",
  101.         body="Gorney Haubert +1",
  102.         hands="Reverence Gauntlets +1",
  103.         ring2="Asklepian Ring",
  104.         back="Iximulew Cape",
  105.         waist="Caudata Belt",
  106.         legs="Reverence Breeches +1",
  107.         feet="Whirlpool Greaves"}
  108.        
  109.     -- Don't need any special gear for Healing Waltz.
  110.     sets.precast.Waltz['Healing Waltz'] = {}
  111.    
  112.     sets.precast.Step = {waist="Chaac Belt"}
  113.     sets.precast.Flourish1 = {waist="Chaac Belt"}
  114.  
  115.     -- Fast cast sets for spells
  116.    
  117.     sets.precast.FC = {ammo="Incantor Stone",
  118.         head="Chevalier's Armet",
  119.         ear2="Loquacious Earring",
  120.         ring2="Prolix Ring",
  121.         --legs="Enif Cosciales"
  122.         }
  123.  
  124.     sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  125.  
  126.        
  127.     -- Weaponskill sets
  128.     -- Default set for any weaponskill that isn't any more specifically defined
  129.     sets.precast.WS = {ammo="Paeapua",
  130.         head="Otomi Helm",
  131.         neck=gear.ElementalGorget,
  132.         ear1="Bladeborn Earring",
  133.         ear2="Steelflash Earring",
  134.         body="Gorney Haubert +1",
  135.         hands="Cizin Mufflers",
  136.         ring1="Rajas Ring",
  137.         ring2="Cho'j Band",
  138.         back="Atheling Mantle",
  139.         waist=gear.ElementalBelt,
  140.         legs="Cizin Breeches",
  141.         feet="Whirlpool Greaves"}
  142.  
  143.     sets.precast.WS.Acc = {ammo="Ginsen",
  144.         head="Yaoyotl Helm",
  145.         neck=gear.ElementalGorget,
  146.         ear1="Bladeborn Earring",
  147.         ear2="Steelflash Earring",
  148.         body="Gorney Haubert +1",
  149.         hands="Buremte Gloves",
  150.         ring1="Rajas Ring",
  151.         ring2="Patricius Ring",
  152.         back="Atheling Mantle",
  153.         waist=gear.ElementalBelt,
  154.         legs="Cizin Breeches",
  155.         feet="Whirlpool Greaves"}
  156.  
  157.     -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
  158.     sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {ring1="Leviathan Ring",ring2="Aquasoul Ring"})
  159.     sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS.Acc, {ring1="Leviathan Ring"})
  160.  
  161.     sets.precast.WS['Chant du Cygne'] = set_combine(sets.precast.WS, {hands="Buremte Gloves",waist="Zoran's Belt"})
  162.     sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS.Acc, {waist="Zoran's Belt"})
  163.  
  164.     sets.precast.WS['Sanguine Blade'] = {ammo="Ginsen",
  165.         head="Reverence Coronet +1",
  166.         neck="Eddy Necklace",
  167.         ear1="Friomisi Earring",
  168.         ear2="Hecate's Earring",
  169.         body="Reverence Surcoat +1",
  170.         hands="Reverence Gauntlets +1",
  171.         ring1="Shiva Ring",
  172.         ring2="K'ayres Ring",
  173.         back="Toro Cape",
  174.         waist="Caudata Belt",
  175.         legs="Reverence Breeches +1",
  176.         feet="Reverence Leggings +1"}
  177.    
  178.     sets.precast.WS['Atonement'] = {
  179.         ammo="Paeapua",
  180.         head=yorium_head_ws,
  181.         neck="Fotia Gorget",
  182.         --ear1="Creed Earring",
  183.         --ear2="Steelflash Earring",
  184.         body="Phorcys Korazin",
  185.         hands=yorium_hands_ws,
  186.         ring1="Patricius Ring",
  187.         ring2="Defending Ring",
  188.         back="Weard Mantle",
  189.         waist='Fotia Belt',
  190.         legs=yorium_legs_ws,
  191.         feet=yorium_feet_ws}
  192.    
  193.     --------------------------------------
  194.     -- Midcast sets
  195.     --------------------------------------
  196.  
  197.     sets.midcast.FastRecast = {
  198.         head="Reverence Coronet +1",
  199.         body="Reverence Surcoat +1",
  200.         hands="Reverence Gauntlets +1",
  201.         waist="Zoran's Belt",
  202.         --legs="Enif Cosciales",
  203.         feet="Reverence Leggings +1"}
  204.        
  205.     sets.midcast.Enmity = set_combine(sets.precast.WS['Atonement'], {neck="Unmoving Collar"})
  206.  
  207.     sets.midcast.Flash = set_combine(sets.midcast.Enmity, { })
  208.    
  209.     sets.midcast.Stun = sets.midcast.Flash
  210.    
  211.     sets.midcast.Cure = {ammo="Iron Gobbet",
  212.         head="Adaman Barbuta",
  213.         neck="Invidia Torque",
  214.         ear1="Hospitaler Earring",
  215.         ear2="Bloodgem Earring",
  216.         body="Reverence Surcoat +1",
  217.         hands="Buremte Gloves",
  218.         ring1="Kunaji Ring",
  219.         ring2="Asklepian Ring",
  220.         back="Fierabras's Mantle",
  221.         waist="Chuq'aba Belt",
  222.         legs="Reverence Breeches +1",
  223.         feet="Caballarius Leggings"}
  224.  
  225.     sets.midcast['Enhancing Magic'] = {neck="Colossus's Torque", waist="Olympus Sash", legs="Reverence Breeches +1"}
  226.    
  227.     sets.midcast.Protect = {ring1="Sheltered Ring"}
  228.     sets.midcast.Shell = {ring1="Sheltered Ring"}
  229.    
  230.     --------------------------------------
  231.     -- Idle/resting/defense/etc sets
  232.     --------------------------------------
  233.  
  234.     sets.Reraise = {head="Twilight Helm", body="Twilight Mail"}
  235.    
  236.     sets.resting = {neck="Creed Collar",
  237.         ring1="Sheltered Ring",
  238.         ring2="Paguroidea Ring"}
  239.    
  240.  
  241.     -- Idle sets
  242.     sets.idle = set_combine(sets.engaged, {legs="Crimson Cuisses"})
  243.  
  244.     sets.idle.Town = set_combine(sets.idle, {})
  245.    
  246.     sets.idle.Weak = set_combine(sets.idle, {})
  247.    
  248.     sets.idle.Weak.Reraise = set_combine(sets.idle.Weak, sets.Reraise)
  249.    
  250.     sets.Kiting = {legs="Crimson Cuisses"}
  251.  
  252.     sets.latent_refresh = {waist="Fucho-no-obi"}
  253.  
  254.  
  255.     --------------------------------------
  256.     -- Defense sets
  257.     --------------------------------------
  258.    
  259.     -- Extra defense sets.  Apply these on top of melee or defense sets.
  260.     sets.Knockback = {back="Repulse Mantle",ring2="Vocane Ring"}
  261.     sets.MP = {neck="Creed Collar",waist="Flume Belt"}
  262.     sets.MP_Knockback = {neck="Creed Collar",waist="Flume Belt",back="Repulse Mantle"}
  263.    
  264.     -- If EquipShield toggle is on (Win+F10 or Win+F11), equip the weapon/shield combos here
  265.     -- when activating or changing defense mode:
  266.     sets.PhysicalShield = {main="Burtgang",sub="Ochain"} -- Ochain
  267.     sets.MagicalShield = {main="Burtgang",sub="Aegis"} -- Aegis
  268.  
  269.     -- Basic defense sets.
  270.        
  271.     sets.defense.PDT = set_combine(sets.engaged, {ammo="Vanir Battery",
  272.     ear1="Ethereal Earring",
  273.     ear2="Merman's Earring",
  274.     neck="Twilight Torque",
  275.     ring1="Defending Ring",
  276.     ring2="Vocane Ring",
  277.     waist="Flume Belt"})
  278.    
  279.     sets.defense.HP = set_combine(sets.engaged, {})
  280.     sets.defense.Reraise = set_combine(sets.engaged, {})
  281.     sets.defense.Charm = set_combine(sets.engaged, {})
  282.     -- To cap MDT with Shell IV (52/256), need 76/256 in gear.
  283.     -- Shellra V can provide 75/256, which would need another 53/256 in gear.
  284.     sets.defense.MDT = set_combine(sets.engaged, {})
  285.  
  286.  
  287.     --------------------------------------
  288.     -- Engaged sets
  289.     --------------------------------------
  290.    
  291.     sets.engaged = {ammo="Ginsen",
  292.         head=yorium_head_tp,
  293.         neck="Asperity Necklace",
  294.         ear1="Bladeborn Earring",
  295.         ear2="Steelflash Earring",
  296.         body="Caballarius Surcoat +1",
  297.         hands=yorium_hands_tp,
  298.         ring1="Rajas Ring",
  299.         ring2="K'ayres Ring",
  300.         back="Weard Mantle",
  301.         waist="Windbuffet Belt +1",
  302.         legs=yorium_legs_tp,
  303.         feet=yorium_feet_tp}
  304.  
  305.     sets.engaged.Acc = set_combine(sets.engaged, {})
  306.  
  307.     sets.engaged.DW = set_combine(sets.engaged, {})
  308.  
  309.     sets.engaged.DW.Acc = set_combine(sets.engaged, {})
  310.  
  311.     sets.engaged.PDT = set_combine(sets.engaged, {})
  312.     sets.engaged.Acc.PDT = set_combine(sets.engaged.Acc, {neck="Twilight Torque",ring1="Defending Ring"})
  313.     sets.engaged.Reraise = set_combine(sets.engaged, sets.Reraise)
  314.     sets.engaged.Acc.Reraise = set_combine(sets.engaged.Acc, sets.Reraise)
  315.  
  316.     sets.engaged.DW.PDT = set_combine(sets.engaged.DW, {neck="Twilight Torque",ring1="Defending Ring"})
  317.     sets.engaged.DW.Acc.PDT = set_combine(sets.engaged.DW.Acc, {neck="Twilight Torque",ring1="Defending Ring"})
  318.     sets.engaged.DW.Reraise = set_combine(sets.engaged.DW, sets.Reraise)
  319.     sets.engaged.DW.Acc.Reraise = set_combine(sets.engaged.DW.Acc, sets.Reraise)
  320.  
  321.  
  322.     --------------------------------------
  323.     -- Custom buff sets
  324.     --------------------------------------
  325.  
  326.     sets.buff.Doom = {ring2="Saida Ring"}
  327.     sets.buff.Cover = {head="Reverence Coronet +1", body="Caballarius Surcoat +1"}
  328. end
  329.  
  330.  
  331. -------------------------------------------------------------------------------------------------------------------
  332. -- Job-specific hooks for standard casting events.
  333. -------------------------------------------------------------------------------------------------------------------
  334.  
  335. function job_midcast(spell, action, spellMap, eventArgs)
  336.     -- If DefenseMode is active, apply that gear over midcast
  337.     -- choices.  Precast is allowed through for fast cast on
  338.     -- spells, but we want to return to def gear before there's
  339.     -- time for anything to hit us.
  340.     -- Exclude Job Abilities from this restriction, as we probably want
  341.     -- the enhanced effect of whatever item of gear applies to them,
  342.     -- and only one item should be swapped out.
  343.     if state.DefenseMode.value ~= 'None' and spell.type ~= 'JobAbility' then
  344.         handle_equipping_gear(player.status)
  345.         eventArgs.handled = true
  346.     end
  347. end
  348.  
  349. -------------------------------------------------------------------------------------------------------------------
  350. -- Job-specific hooks for non-casting events.
  351. -------------------------------------------------------------------------------------------------------------------
  352.  
  353. -- Called when the player's status changes.
  354. function job_state_change(field, new_value, old_value)
  355.     classes.CustomDefenseGroups:clear()
  356.     classes.CustomDefenseGroups:append(state.ExtraDefenseMode.current)
  357.     if state.EquipShield.value == true then
  358.         classes.CustomDefenseGroups:append(state.DefenseMode.current .. 'Shield')
  359.     end
  360.  
  361.     classes.CustomMeleeGroups:clear()
  362.     classes.CustomMeleeGroups:append(state.ExtraDefenseMode.current)
  363. end
  364.  
  365. -------------------------------------------------------------------------------------------------------------------
  366. -- User code that supplements standard library decisions.
  367. -------------------------------------------------------------------------------------------------------------------
  368.  
  369. -- Called by the 'update' self-command, for common needs.
  370. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  371. function job_update(cmdParams, eventArgs)
  372.     update_defense_mode()
  373. end
  374.  
  375. -- Modify the default idle set after it was constructed.
  376. function customize_idle_set(idleSet)
  377.     if player.mpp < 51 then
  378.         idleSet = set_combine(idleSet, sets.latent_refresh)
  379.     end
  380.     if state.Buff.Doom then
  381.         idleSet = set_combine(idleSet, sets.buff.Doom)
  382.     end
  383.    
  384.     return idleSet
  385. end
  386.  
  387. -- Modify the default melee set after it was constructed.
  388. function customize_melee_set(meleeSet)
  389.     if state.Buff.Doom then
  390.         meleeSet = set_combine(meleeSet, sets.buff.Doom)
  391.     end
  392.    
  393.     return meleeSet
  394. end
  395.  
  396. function customize_defense_set(defenseSet)
  397.     if state.ExtraDefenseMode.value ~= 'None' then
  398.         defenseSet = set_combine(defenseSet, sets[state.ExtraDefenseMode.value])
  399.     end
  400.    
  401.     if state.EquipShield.value == true then
  402.         defenseSet = set_combine(defenseSet, sets[state.DefenseMode.current .. 'Shield'])
  403.     end
  404.    
  405.     if state.Buff.Doom then
  406.         defenseSet = set_combine(defenseSet, sets.buff.Doom)
  407.     end
  408.    
  409.     return defenseSet
  410. end
  411.  
  412.  
  413. function display_current_job_state(eventArgs)
  414.     local msg = 'Melee'
  415.    
  416.     if state.CombatForm.has_value then
  417.         msg = msg .. ' (' .. state.CombatForm.value .. ')'
  418.     end
  419.    
  420.     msg = msg .. ': '
  421.    
  422.     msg = msg .. state.OffenseMode.value
  423.     if state.HybridMode.value ~= 'Normal' then
  424.         msg = msg .. '/' .. state.HybridMode.value
  425.     end
  426.     msg = msg .. ', WS: ' .. state.WeaponskillMode.value
  427.    
  428.     if state.DefenseMode.value ~= 'None' then
  429.         msg = msg .. ', Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  430.     end
  431.  
  432.     if state.ExtraDefenseMode.value ~= 'None' then
  433.         msg = msg .. ', Extra: ' .. state.ExtraDefenseMode.value
  434.     end
  435.    
  436.     if state.EquipShield.value == true then
  437.         msg = msg .. ', Force Equip Shield'
  438.     end
  439.    
  440.     if state.Kiting.value == true then
  441.         msg = msg .. ', Kiting'
  442.     end
  443.  
  444.     if state.PCTargetMode.value ~= 'default' then
  445.         msg = msg .. ', Target PC: '..state.PCTargetMode.value
  446.     end
  447.  
  448.     if state.SelectNPCTargets.value == true then
  449.         msg = msg .. ', Target NPCs'
  450.     end
  451.  
  452.     add_to_chat(122, msg)
  453.  
  454.     eventArgs.handled = true
  455. end
  456.  
  457. -------------------------------------------------------------------------------------------------------------------
  458. -- Utility functions specific to this job.
  459. -------------------------------------------------------------------------------------------------------------------
  460.  
  461. function update_defense_mode()
  462.     if player.equipment.main == 'Kheshig Blade' and not classes.CustomDefenseGroups:contains('Kheshig Blade') then
  463.         classes.CustomDefenseGroups:append('Kheshig Blade')
  464.     end
  465.    
  466.     if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  467.         if player.equipment.sub and not player.equipment.sub:contains('Shield') and
  468.            player.equipment.sub ~= 'Aegis' and player.equipment.sub ~= 'Ochain' then
  469.             state.CombatForm:set('DW')
  470.         else
  471.             state.CombatForm:reset()
  472.         end
  473.     end
  474. end
  475.  
  476.  
  477. -- Select default macro book on initial load or subjob change.
  478. function select_default_macro_book()
  479.     -- Default macro set/book
  480.     if player.sub_job == 'DNC' then
  481.         set_macro_page(5, 3)
  482.     elseif player.sub_job == 'NIN' then
  483.         set_macro_page(5, 3)
  484.     elseif player.sub_job == 'RDM' then
  485.         set_macro_page(5, 3)
  486.     else
  487.         set_macro_page(5, 3)
  488.     end
  489. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement