Advertisement
OrphenPUP

OrphenPUP2

Nov 13th, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.71 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.  
  14. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  15. function job_setup()
  16. -- List of pet weaponskills to check for
  17. petWeaponskills = S{"Slapstick", "Knockout", "Magic Mortar",
  18. "Chimera Ripper", "String Clipper", "Cannibal Blade", "Bone Crusher", "String Shredder",
  19. "Arcuballista", "Daze", "Armor Piercer", "Armor Shatterer"}
  20.  
  21. -- Map automaton heads to combat roles
  22. petModes = {
  23. ['Harlequin Head'] = 'Melee',
  24. ['Sharpshot Head'] = 'Ranged',
  25. ['Valoredge Head'] = 'Tank',
  26. ['Stormwaker Head'] = 'Magic',
  27. ['Soulsoother Head'] = 'Heal',
  28. ['Spiritreaver Head'] = 'Nuke'
  29. }
  30.  
  31. -- Subset of modes that use magic
  32. magicPetModes = S{'Nuke','Heal','Magic'}
  33.  
  34. -- Var to track the current pet mode.
  35. state.PetMode = M{['description']='Pet Mode', 'None', 'Melee', 'Ranged', 'Tank', 'Magic', 'Heal', 'Nuke'}
  36.  
  37. -- Var to track Enmity Cure rule
  38. state.CureEnmity = M{['description']='CureEnmity', 'Yes', 'No'}
  39.  
  40. end
  41.  
  42. -------------------------------------------------------------------------------------------------------------------
  43. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  44. -------------------------------------------------------------------------------------------------------------------
  45.  
  46. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  47. function user_setup()
  48. state.OffenseMode:options('Normal', 'Acc', 'HighAcc', 'Fodder')
  49. state.HybridMode:options('Normal', 'DT')
  50. state.WeaponskillMode:options('Normal', 'Acc', 'Fodder')
  51. state.IdleMode:options('Normal', 'PDT', 'Refresh')
  52. state.PhysicalDefenseMode:options('PDT', 'Evasion')
  53.  
  54. update_pet_mode()
  55. end
  56.  
  57.  
  58. -- Define sets used by this job file.
  59. function init_gear_sets()
  60.  
  61. -- Precast Sets
  62. -- Fast cast sets for spells
  63.  
  64. -- Precast sets for pet actions
  65.  
  66. -- Precast sets to enhance JAs
  67. -- Waltz set (chr and vit)
  68.  
  69.  
  70. -- Weaponskill sets
  71. -- Default set for any weaponskill that isn't any more specifically defined
  72.  
  73. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  74.  
  75.  
  76. -- Midcast Sets
  77.  
  78. -- Midcast sets for pet actions
  79. sets.midcast.Pet.Cure = {legs="Foire Churidars +1"}
  80. sets.midcast.Pet.CureEnmity = {legs="Foire Churidars +1"}
  81.  
  82. sets.midcast.Pet['Elemental Magic'] = {} --Base
  83. sets.midcast.Pet['Elemental Magic'].MAB = set_combine(sets.midcast.Pet['Elemental Magic'], {}) --MAB Set
  84. sets.midcast.Pet['Elemental Magic'].MAcc = set_combine(sets.midcast.Pet['Elemental Magic'], {}) -- Magic Accuracy
  85.  
  86. sets.midcast.Pet['Enfeebling Magic'] = {}
  87.  
  88. sets.midcast.Pet['Enhancing Magic'] = {}
  89. sets.midcast.Pet.Protect = set_combine(sets.midcast.Pet['Enhancing Magic'], {lring="Sheltered Ring"})
  90. sets.midcast.Pet.Protectra = sets.midcast.Pet.Protect
  91.  
  92. sets.midcast.Pet.Shell = set_combine(sets.midcast.Pet['Enhancing Magic'], {lring="Sheltered Ring"})
  93. sets.midcast.Pet.Shellra = sets.midcast.Pet.Shell
  94.  
  95. sets.midcast.Pet.WeaponSkill = {}
  96.  
  97. -- Sets to return to when not performing an action.
  98.  
  99. -- Resting sets
  100.  
  101. -- Idle sets
  102.  
  103. sets.idle = {}
  104.  
  105. sets.idle.PetTurtle = set_combine(sets.idle, {
  106. neck="Shepherd's Chain", ear2="Handler's Earring +1"})
  107.  
  108. -- Set for idle while pet is out (eg: pet regen gear)
  109. sets.idle.Pet = sets.idle
  110. sets.idle.Pet.Idle.Tank = set_combine(sets.idle.Pet, {})
  111. sets.idle.Pet.Idle.Melee = set_combine(sets.idle.Pet, {})
  112. sets.idle.Pet.Idle.Ranged = set_combine(sets.idle.Pet, {})
  113. sets.idle.Pet.Idle.Magic = set_combine(sets.idle.Pet, {})
  114. sets.idle.Pet.Idle.Heal = set_combine(sets.idle.Pet, {})
  115. sets.idle.Pet.Idle.Nuke = set_combine(sets.idle.Pet, {})
  116.  
  117.  
  118. -- Master Idle sets to wear while pet is engaged
  119. sets.idle.Pet.Engaged = {}
  120. sets.idle.Pet.Engaged.Tank = set_combine(sets.idle.Pet.Engaged, {})
  121. sets.idle.Pet.Engaged.Melee = set_combine(sets.idle.Pet.Engaged, {})
  122. sets.idle.Pet.Engaged.Ranged = set_combine(sets.idle.Pet.Engaged, {})
  123. sets.idle.Pet.Engaged.Nuke = set_combine(sets.idle.Pet.Engaged, {})
  124. sets.idle.Pet.Engaged.Magic = set_combine(sets.idle.Pet.Engaged, {})
  125.  
  126.  
  127. -- Defense sets
  128.  
  129. sets.defense.Evasion = {}
  130. sets.defense.PDT = set_combine(sets.defense.Evasion, {})
  131. sets.defense.MDT = set_combine(sets.defense.PDT, {})
  132.  
  133. sets.Kiting = {}
  134.  
  135. -- Engaged sets
  136.  
  137. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  138. -- sets if more refined versions aren't defined.
  139. -- If you create a set with both offense and defense modes, the offense mode should be first.
  140. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  141.  
  142. -- Normal melee group
  143. sets.engaged = {}
  144. sets.engaged.Acc = {}
  145.  
  146. end
  147.  
  148.  
  149. -------------------------------------------------------------------------------------------------------------------
  150. -- Job-specific hooks for standard casting events.
  151.  
  152. -------------------------------------------------------------------------------------------------------------------
  153.  
  154. function job_precast(spell, action, spellMap, eventArgs)
  155. custom_aftermath_timers_precast(spell)
  156. end
  157.  
  158. -- Called when pet is about to perform an action
  159. function job_pet_midcast(spell, action, spellMap, eventArgs)
  160. if petWeaponskills:contains(spell.english) then
  161. classes.CustomClass = "Weaponskill"
  162. equip(sets.midcast.Pet.WeaponSkill)
  163. end
  164. if spell.skill == 'Healing Magic' then
  165. if state.CureEnmity.value == 'Yes' then
  166. equip(sets.midcast.Pet.CureEnmity)
  167. else
  168. equip(sets.midcast.Pet.Cure)
  169. end
  170. end
  171. end
  172.  
  173. function job_aftercast(spell, action, spellMap, eventArgs)
  174. custom_aftermath_timers_aftercast(spell)
  175. end
  176.  
  177.  
  178.  
  179. -------------------------------------------------------------------------------------------------------------------
  180. -- Job-specific hooks for non-casting events.
  181. -------------------------------------------------------------------------------------------------------------------
  182.  
  183. -- Called when a player gains or loses a buff.
  184. -- buff == buff gained or lost
  185. -- gain == true if the buff was gained, false if it was lost.
  186. function job_buff_change(buff, gain)
  187. if buff == 'Wind Maneuver' then
  188. handle_equipping_gear(player.status)
  189. end
  190.  
  191. end
  192.  
  193. -- Called when a player gains or loses a pet.
  194. -- pet == pet gained or lost
  195. -- gain == true if the pet was gained, false if it was lost.
  196. function job_pet_change(pet, gain)
  197. update_pet_mode()
  198. end
  199.  
  200. -- Called when the pet's status changes.
  201. function job_pet_status_change(newStatus, oldStatus)
  202. if newStatus == 'Engaged' then
  203. display_pet_status()
  204. end
  205. end
  206.  
  207.  
  208. -------------------------------------------------------------------------------------------------------------------
  209. -- User code that supplements standard library decisions.
  210. -------------------------------------------------------------------------------------------------------------------
  211.  
  212. -- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
  213. function job_handle_equipping_gear(playerStatus, eventArgs)
  214.  
  215. end
  216.  
  217. -- Called by the 'update' self-command, for common needs.
  218. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  219. function job_update(cmdParams, eventArgs)
  220. update_pet_mode()
  221. end
  222.  
  223.  
  224. -- Set eventArgs.handled to true if we don't want the automatic display to be run.
  225. function display_current_job_state(eventArgs)
  226. display_pet_status()
  227. end
  228.  
  229. function customize_melee_set(meleeSet)
  230.  
  231. end
  232.  
  233. -------------------------------------------------------------------------------------------------------------------
  234. -- User self-commands.
  235. -------------------------------------------------------------------------------------------------------------------
  236.  
  237.  
  238.  
  239. -------------------------------------------------------------------------------------------------------------------
  240. -- Utility functions specific to this job.
  241. -------------------------------------------------------------------------------------------------------------------
  242.  
  243. -- Get the pet mode value based on the equipped head of the automaton.
  244. -- Returns nil if pet is not valid.
  245. function get_pet_mode()
  246. if pet.isvalid then
  247. return petModes[pet.head] or 'None'
  248. else
  249. return 'None'
  250. end
  251. end
  252.  
  253. -- Update state.PetMode, as well as functions that use it for set determination.
  254. function update_pet_mode()
  255. state.PetMode:set(get_pet_mode())
  256. update_custom_groups()
  257. end
  258.  
  259. -- Update custom groups based on the current pet.
  260. function update_custom_groups()
  261. classes.CustomIdleGroups:clear()
  262. if pet.isvalid then
  263. classes.CustomIdleGroups:append(state.PetMode.value)
  264. end
  265. end
  266.  
  267. -- Display current pet status.
  268. function display_pet_status()
  269. if pet.isvalid then
  270. local petInfoString = pet.name..' ['..pet.head..']: '..tostring(pet.status)..' TP='..tostring(pet.tp)..' HP%='..tostring(pet.hpp)
  271.  
  272. if magicPetModes:contains(state.PetMode.value) then
  273. petInfoString = petInfoString..' MP%='..tostring(pet.mpp)
  274. end
  275.  
  276. add_to_chat(122,petInfoString)
  277. end
  278. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement