Advertisement
Alteubent

Beast lua

Apr 17th, 2014
466
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 11.58 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Initialization function that defines sets and variables to be used.
  3. -------------------------------------------------------------------------------------------------------------------
  4. -- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
  5. -- Initialization function for this job file.
  6. function get_sets()
  7.     -- Load and initialize the include file.
  8.     include('Mote-Include.lua')
  9. end
  10. function job_setup()
  11.     -- List of pet weaponskills to check for
  12.     petWeaponskills = S{"Sic", "Ready", "Magic Mortar",
  13.         "Chimera Ripper", "String Clipper",  "Cannibal Blade", "Bone Crusher", "String Shredder",
  14.         "Arcuballista", "Daze", "Armor Piercer", "Armor Shatterer"}
  15.  
  16. end
  17.  
  18. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  19. function user_setup()
  20.     -- Options: Override default values
  21.     options.OffenseModes = {'Normal', 'Acc'}
  22.     options.DefenseModes = {'Normal', 'DT'}
  23.     options.WeaponskillModes = {'Normal', 'Att', 'Mod'}
  24.     options.IdleModes = {'Normal'}
  25.     options.RestingModes = {'Normal'}
  26.     options.PhysicalDefenseModes = {'PDT', 'Evasion'}
  27.     options.MagicalDefenseModes = {'MDT'}
  28.  
  29.     state.Defense.PhysicalMode = 'PDT'
  30. end
  31. -- Called when this job file is unloaded (eg: job change)
  32. function file_unload()
  33.     if binds_on_unload then
  34.         binds_on_unload()
  35.     end
  36. end
  37.  
  38. -- Define sets used by this job file.
  39. function init_gear_sets()
  40.  
  41. -- Precast Sets
  42. -- Fast cast sets for spells
  43. sets.precast.FC = {head="Otomi Helm", neck="Jeweled Collar", ear1="Ethereal Earring", ear2="Loquacious Earring",body="Mirke Wardecors",
  44.     hands="Buremte Gloves", ring1="Prolix Ring", ring2="Dark Ring", back="Boxer's Mantle", waist="Phasmida Belt", legs="Iuitl Tights",
  45.     feet="Iuitl Gaiters"}
  46. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads",back="Mujin Mantle"})
  47.  
  48.  
  49. -- Precast sets to enhance JAs
  50. sets.precast.JA['Reward'] = {head="Khimaira Bonnet",ear2="Ferine Earring",body="Totemic Jackcoat",legs="Ankusa Trousers",feet="Ankusa Gaiters"}
  51. sets.precast.JA['Familiar'] = {hands="Ankusa Gloves",legs="Ankusa Trousers"}
  52. sets.precast.JA['Call Beast'] = {hands="Ankusa Gloves",legs="Ankusa Trousers"}
  53. sets.precast.JA['Ready'] = {hands="Frn. Manoplas +1"}
  54. sets.precast.JA['Sic'] = {hands="Frn. Manoplas +1"}
  55. sets.precast.JA['Tame'] = {head="Totemic Helm"}
  56. sets.precast.JA['Spur'] = {feet="Ferine Ocreae +1"}
  57. sets.precast.JA['Charm'] = {head="Ankusa Helm",neck="Ferine Necklace",body="Totemic Jackcoat",hands="Ankusa Gloves",legs="Totemic Trousers",
  58. feet="Ankusa Gaiters"}      
  59. sets.precast.Sic = {hands="Frn. Manoplas +1"}
  60. -- Weaponskill sets
  61. -- Default set for any weaponskill that isn't any more specifically defined
  62. sets.precast.WS = {
  63.     head="Otomi Helm",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  64.     body="Karieyh Haubert +1",hands="Buremite Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
  65.     back="Atheling Mantle",waist="Windbuffet Belt",legs="Ankusa Trousers",feet="Ejekamal Boots"}
  66. sets.precast.WS['Rampage'] = {
  67.     head="Otomi Helm",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  68.     body="Karieyh Haubert +1",hands="Buremite Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
  69.     back="Atheling Mantle",waist="Windbuffet Belt",legs="Ankusa Trousers",feet="Ejekamal Boots"}
  70. -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
  71. -- Midcast Sets
  72. sets.midcast.FastRecast = {head="Haruspex Hat",ear2="Loquacious Earring",body="Otronif Harness",
  73.     hands="Regimen Mittens",waist="Twilight Belt",legs="Manibozho Brais",feet="Otronif Boots +1"}
  74. -- Midcast sets for pet actions
  75. sets.midcast.Pet.Weaponskill = {head="Empty"}
  76. -- Sets to return to when not performing an action.
  77. -- Resting sets
  78. sets.resting = {head="Ocelomeh Headpiece +1",ring1="Sheltered Ring",ring2="Paguroidea Ring"}
  79. -- Idle sets
  80. sets.idle = {ammo="Brigantia Pebble",head="Otomi Helm",neck="Twilight Torque",
  81.     ear1="Phawaylla Earring",ear2="Ethereal Earring",body="Mekira Meikogai",hands="Buremte Gloves",ring1="Dark Ring",ring2="Dark Ring",back="Boxer's Mantle",waist="Nierenschutz",legs="Iuitl Tights",feet="Ejekamal Boots"}
  82. sets.idle.Town = set_combine(sets.idle, {main="Emxgha"})
  83. -- Set for idle while pet is out (eg: pet regen gear)
  84. sets.idle.Pet = {head="Anwig Salade",neck="Twilight Torque",ear1="Phawaylla Earring",
  85.     ear2="Ethereal Earring",body="Mekira Meikogai",hands="Ankusa Gloves",back="Boxer's Mantle",
  86.     waist="Nierenschutz",legs="Iuitl Tights",feet="Ankusa Gaiters"}
  87. -- Idle sets to wear while pet is engaged
  88. sets.idle.Pet.Engaged = {head="Anwig Salade",neck="Ferine Necklace",ear1="Sabong Earring",
  89.     ear2="Ferine Earring",body="Ankusa Jackcoat",hands="Totemic Gloves",ring1="Dark Ring",
  90.     ring2="Dark Ring",back="Pastoralist's Mantle",waist="Kuku Stone",legs="Ankusa Trousers",
  91.     feet="Totemic Gaiters"}
  92. -- Defense sets
  93. sets.defense.Evasion = {
  94.     head="Whirlpool Mask",neck="Twilight Torque",body="Otronif Harness",hands="Otronif Gloves",
  95.     ring1="Beeline Ring",ring2="Dark Ring",back="Ik Cape",waist="Hurch'lan Sash",
  96.     legs="Nahtirah Trousers",feet="Otronif Boots +1"}
  97. sets.defense.PDT = {head="Whirlpool Mask",neck="Twilight Torque",body="Otronif Harness",
  98.     hands="Otronif Gloves",ring1="Beeline Ring",ring2="Dark Ring",back="Shadow Mantle",
  99.     waist="Hurch'lan Sash",legs="Nahtirah Trousers",feet="Otronif Boots +1"}
  100. sets.defense.MDT = {head="Whirlpool Mask",neck="Twilight Torque",body="Otronif Harness",
  101.     hands="Otronif Gloves",ring1="Dark Ring",ring2="Shadow Ring",back="Tuilha Cape",
  102.     waist="Hurch'lan Sash",legs="Nahtirah Trousers",feet="Otronif Boots +1"}
  103. -- Engaged sets
  104. -- Variations for TP weapon and (optional) offense/defense modes.  Code will fall back on previous
  105. -- sets if more refined versions aren't defined.
  106. -- If you create a set with both offense and defense modes, the offense mode should be first.
  107. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  108. -- Normal melee group
  109. sets.engaged = {ammo="Jukukik Feather",head="Otomi Helm",neck="Asperity Necklace",ear1="Suppanomimi",
  110.     ear2="Brutal Earring",body="Karieyh Haubert +1",hands="Buremte Gloves",ring1="Epona's Ring",
  111.     ring2="Rajas Ring",back="Atheling Mantle",waist="Patentia Sash",legs="Iuitl Tights",
  112.     feet="Ejekamal Boots"}
  113. sets.engaged.Pet = {ammo="Demonry Core",head="Anwig Salade",neck="Ferine Necklace",ear1="Sabong Earring",
  114.     ear2="Ferine Earring",body="Ankusa Jackcoat",hands="Totemic Gloves",ring1="Epona's Ring",
  115.     ring2="Rajas Ring",back="Pastoralist's Mantle",waist="Kuku Stone",legs="Ankusa Trousers",
  116.     feet="Totemic Gaiters"}
  117.  
  118. sets.engaged.Acc = {head="Whirlpool Mask",neck="Peacock Charm",ear1="Bladeborn Earring",
  119.     ear2="Steelflash Earring",body="Thaumas Coat",hands="Otronif Gloves",ring1="Rajas Ring",
  120.     ring2="Epona's Ring",back="Pantin Cape",waist="Hurch'lan Sash",legs="Manibozho Brais",
  121.     feet="Otronif Boots +1"}
  122. sets.engaged.DT = {head="Whirlpool Mask",neck="Twilight Torque",ear1="Bladeborn Earring",
  123.     ear2="Steelflash Earring",body="Otronif Harness",hands="Regimen Mittens",ring1="Dark Ring",
  124.     ring2="Epona's Ring",back="Iximulew Cape",waist="Windbuffet Belt",legs="Manibozho Brais",
  125.     feet="Otronif Boots +1"}
  126. sets.engaged.Acc.DT = {head="Whirlpool Mask",neck="Twilight Torque",ear1="Bladeborn Earring",
  127.     ear2="Steelflash Earring",body="Otronif Harness",hands="Regimen Mittens",ring1="Dark Ring",
  128.     ring2="Beeline Ring",back="Iximulew Cape",waist="Hurch'lan Sash",legs="Manibozho Brais",
  129.     feet="Otronif Boots +1"}
  130. end
  131.  
  132.  
  133. -------------------------------------------------------------------------------------------------------------------
  134. -- Job-specific hooks that are called to process player actions at specific points in time.
  135. -------------------------------------------------------------------------------------------------------------------
  136. -- Called when player is about to perform an action
  137. function job_precast(spell, action, spellMap, eventArgs)
  138.     if spell.type == 'Waltz' then
  139.         refine_waltz(spell, action, spellMap, eventArgs)
  140.     end
  141. end
  142.  
  143. -- Called when pet is about to perform an action
  144. function job_pet_midcast(spell, action, spellMap, eventArgs)
  145.     if petWeaponskills:contains(spell.english) then
  146.         classes.CustomClass = "Weaponskill"
  147.     end
  148. end
  149.  
  150. -- Modify the default idle set after it was constructed.
  151. function customize_idle_set(idleSet)
  152.     if pet.isvalid and pet.status == 'Engaged' then
  153.         idleSet = set_combine(idleSet, sets.idle.Pet.Engaged)
  154.     end
  155.     if pet.isvalid and pet.status == 'Idle' then
  156.         idleSet = set_combine(idleSet, sets.idle.Pet)
  157.     end
  158.         if pet.notvalid and player.status == 'Idle' then
  159.         idleSet = set_combine(idleSet, sets.idle)
  160.     end
  161.     return idleSet
  162. end
  163. function customize_melee_set(meleeSet)
  164.     if newStatus == 'Engaged' and pet.isvalid == 'True' then
  165.         meleeSet = set_combine(meleeSet, sets.engaged.Pet)
  166.     end
  167.     if newStatus == 'Engaged' and pet.isvalid == 'False' then
  168.         meleeSet = set_combine(meleeSet, sets.engaged)
  169.     end
  170.     return meleeSet
  171. end
  172.  
  173. -------------------------------------------------------------------------------------------------------------------
  174. -- General hooks for other game events.
  175. -------------------------------------------------------------------------------------------------------------------
  176. -- Called when the player's subjob changes.
  177. function sub_job_change(newSubjob, oldSubjob)
  178.     select_default_macro_book()
  179. end
  180.  
  181. -------------------------------------------------------------------------------------------------------------------
  182. -- User code that supplements self-commands.
  183. -------------------------------------------------------------------------------------------------------------------
  184. -- Called when the player's pet's status changes.
  185. -- This is also called after pet_change after a pet is released.  Check for pet validity.
  186. function job_pet_status_change(newStatus, oldStatus, eventArgs)
  187.     if pet.isvalid and not midaction() and not pet_midaction() and (newStatus == 'Engaged' or oldStatus == 'Engaged') then
  188.         handle_equipping_gear(player.status, newStatus)
  189.     end
  190. end
  191. function job_midcast(spell, action, spellMap, eventArgs)
  192.         if spell.name == 'Spectral Jig' and buffactive.sneak then
  193.                 -- If sneak is active when using, cancel before completion
  194.                 send_command('cancel 71')
  195.         end
  196. end
  197. function job_precast(spell, action, spellMap, eventArgs)
  198.     refine_waltz(spell, action, spellMap, eventArgs)
  199.     if spell.skill == "Ninjutsu" and spell.target.type:lower() == 'self' and spellMap ~= "Utsusemi" then
  200.         classes.CustomClass = "SelfNinjutsu"
  201.     end
  202. end
  203.  
  204. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  205. function job_aftercast(spell, action, spellMap, eventArgs)
  206.  
  207. end
  208.  
  209. -- Run after the default aftercast() is done.
  210. -- eventArgs is the same one used in job_aftercast, in case information needs to be persisted.
  211. function job_post_aftercast(spell, action, spellMap, eventArgs)
  212.  
  213. end
  214. -------------------------------------------------------------------------------------------------------------------
  215. -- Utility functions specific to this job.
  216. -------------------------------------------------------------------------------------------------------------------
  217. -- Get the pet mode value based on the equipped head of the automaton.
  218. -- Select default macro book on initial load or subjob change.
  219. function select_default_macro_book()
  220.     -- Default macro set/book
  221.     if player.sub_job == 'DNC' then
  222.         set_macro_page(2, 9)
  223.     elseif player.sub_job == 'NIN' then
  224.         set_macro_page(3, 9)
  225.     elseif player.sub_job == 'THF' then
  226.         set_macro_page(4, 9)
  227.     else
  228.         set_macro_page(1, 9)
  229.     end
  230. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement