Guest User

WHM lua

a guest
May 23rd, 2014
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.66 KB | None | 0 0
  1. -- Start defining the sets
  2. --------------------------------------
  3.  
  4. -- Precast Sets
  5.  
  6. -- Fast cast sets for spells
  7. sets.precast.FC = {main=gear.FastcastStaff,ammo="Incantor Stone",
  8. head="Piety Cap",neck="Orison Locket",ear2="Loquacious Earring",
  9. body="Marduk's Jubbah",hands="Piety Mitts",ring1="Prolix Ring",
  10. back="Swith Cape +1",waist="Witful Belt",legs="Piety Pantaloons",feet="Rostrum Pumps"}
  11.  
  12. sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
  13.  
  14. sets.precast.FC.Stoneskin = set_combine(sets.precast.FC['Enhancing Magic'])
  15.  
  16. sets.precast.FC['Healing Magic'] = set_combine(sets.precast.FC, {legs="Orison Pantaloons +2"})
  17.  
  18. sets.precast.FC.StatusRemoval = sets.precast.FC['Healing Magic']
  19.  
  20. sets.precast.FC.Cure = set_combine(sets.precast.FC['Healing Magic'], {main="Tamaxchi",sub="Genbu's Shield",body="Heka's Kalasiris",back="Pahtli Cape",waist="Cleric's Belt",feet="Litany Clogs"})
  21.  
  22. sets.precast.FC.Curaga = sets.precast.FC.Cure
  23.  
  24. -- Precast sets to enhance JAs
  25. sets.precast.JA.Benediction = {body="Piety Briault"}
  26.  
  27. -- Waltz set (chr and vit)
  28. sets.precast.Waltz = {
  29. head="Nahtirah Hat",ear1="Roundel Earring",
  30. body="Vanir Cotehardie",hands="Yaoyotl Gloves",
  31. back="Refraction Cape",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  32.  
  33.  
  34. -- Weaponskill sets
  35.  
  36. -- Default set for any weaponskill that isn't any more specifically defined
  37. gear.default.weaponskill_neck = "Asperity Necklace"
  38. gear.default.weaponskill_waist = ""
  39. sets.precast.WS = {
  40. head="Nahtirah Hat",neck=gear.ElementalGorget,ear1="Bladeborn Earring",ear2="Steelflash Earring",
  41. body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
  42. back="Refraction Cape",waist=gear.ElementalBelt,legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  43.  
  44. sets.precast.WS['Flash Nova'] = {
  45. head="Nahtirah Hat",neck="Stoicheion Medal",ear1="Friomisi Earring",ear2="Hecate's Earring",
  46. body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="Strendu Ring",
  47. back="Toro Cape",waist="Thunder Belt",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  48.  
  49.  
  50. -- Midcast Sets
  51.  
  52. sets.midcast.FastRecast = {
  53. head="Piety Cap",ear1="Gifted Earring",
  54. body="Piety Briault",hands="Piety Mitts",ring1="Prolix Ring",
  55. back="Swith Cape +1",waist="Witful Belt",legs="Piety Pantaloons",feet="Piety Duckbills"}
  56.  
  57. -- Cure sets
  58. gear.default.obi_waist = "Cleric's Belt"
  59. gear.default.obi_back = "Orison Cape"
  60.  
  61. sets.midcast.CureSolace = {main="Tamaxchi",sub="Genbu's Shield",ammo="Incantor Stone",
  62. head="Theophany Cap",neck="Orison Locket",ear2="Loquacious Earring",ear1="Orison Earring",
  63. body="Heka's Kalasiris",hands="Theophany Mitts",ring1="Prolix Ring",ring2="Sirona's Ring",
  64. back="Orison Cape",waist=gear.ElementalObi,legs="Piety Pantaloons",feet="Piety Duckbills"}
  65.  
  66. sets.midcast.Cure = {main="Tamaxchi",sub="Genbu's Shield",ammo="Incantor Stone",
  67. head="Theophany Cap",neck="Orison Locket",ear2="Loquacious Earring",ear1="Orison Earring",
  68. body="Heka's Kalasiris",hands="Theophany Mitts",ring1="Prolix Ring",ring2="Sirona's Ring",
  69. back="Orison Cape",waist=gear.ElementalObi,legs="Piety Pantaloons",feet="Piety Duckbills"}
  70.  
  71. sets.midcast.Curaga = {main="Tamaxchi",sub="Genbu's Shield",ammo="Incantor Stone",
  72. head="Theophany Cap",neck="Orison Locket",ear2="Loquacious Earring",ear1="Orison Earring",
  73. body="Heka's Kalasiris",hands="Theophany Mitts",ring1="Prolix Ring",ring2="Sirona's Ring",
  74. back="Orison Cape",waist=gear.ElementalObi,legs="Piety Pantaloons",feet="Piety Duckbills"}
  75.  
  76. sets.midcast.CureMelee = {ammo="Incantor Stone",
  77. head="Theophany Cap",neck="Orison Locket",ear2="Loquacious Earring",ear1="Orison Earring",
  78. body="Vanir Cotehardie",hands="Theophany Mitts",ring1="Prolix Ring",ring2="Sirona's Ring",
  79. back="Tuilha Cape",waist=gear.ElementalObi,legs="Piety Pantaloons",feet="Piety Duckbills"}
  80.  
  81. sets.midcast.Cursna = {main="Beneficus",sub="Genbu's Shield",
  82. head="Orison Cap +2",neck="Malison Medallion",
  83. body="Orison Bliaud +2",hands="Theophany Mitts",ring2="Ephedra Ring",ring1="Sirona's Ring",
  84. back="Swith Cape +1",waist="Witful Belt",legs="Theophany Pantaloons",feet="Orison Duckbills +2"}
  85.  
  86. sets.midcast.StatusRemoval = {
  87. head="Orison Cap +2",legs="Orison Pantaloons +2"}
  88.  
  89. -- 110 total Enhancing Magic Skill; caps even without Light Arts
  90. sets.midcast['Enhancing Magic'] = {main="Beneficus",sub="Genbu's Shield",
  91. head="Piety Cap",neck="Colossus's Torque",
  92. body="Heka's Kalasiris",hands="Theophany Mitts",
  93. back="Merciful Cape",waist="Olympus Sash",legs="Piety Pantaloons",feet="Orison Duckbills +2"}
  94.  
  95. sets.midcast.Stoneskin = {
  96. head="Piety Cap",neck="Orison Locket",ear2="Loquacious Earring",
  97. body="Marduk's Jubbah",hands="Augur's Gloves",
  98. back="Swith Cape +1",waist="Siegel Sash",legs="Piety Pantaloons",feet="Piety Duckbills"}
  99.  
  100. sets.midcast.Auspice = {hands="Augur's Gloves",feet="Orison Duckbills +2"}
  101.  
  102. sets.midcast.BarElement = {main="Beneficus",sub="Genbu's Shield",
  103. head="Piety Cap",neck="Colossus's Torque",
  104. body="Orison Bliaud +2",hands="Augur's Gloves",
  105. back="Merciful Cape",waist="Olympus Sash",legs="Piety Pantaloons",feet="Orison Duckbills +2"}
  106.  
  107. sets.midcast.Regen = {main="Tamaxchi",sub="Genbu's Shield",
  108. body="Piety Briault",hands="Orison Mitts +2",
  109. legs="Theophany Pantaloons"}
  110.  
  111. sets.midcast.Protectra = {feet="Piety Duckbills"}
  112.  
  113. sets.midcast.Shellra = {legs="Piety Pantaloons"}
  114.  
  115.  
  116. sets.midcast['Divine Magic'] = {main="Tamaxchi",sub="Genbu's Shield",
  117. head="Nefer Khat",neck="Colossus's Torque",ear1="Magnetic Earring",ear2="Loquacious Earring",
  118. body="Theophany Briault",hands="Piety Mitts",ring2="Mediator's Ring",ring1="Omega Ring",
  119. back="Altruistic Cape",waist=gear.ElementalObi,legs="Theophany Pantaloons",feet="Piety Duckbills"}
  120.  
  121. sets.midcast['Dark Magic'] = {main="Tamaxchi", sub="Genbu's Shield",
  122. head="Nefer Khat",neck="Aesir Torque",ear1="Abyssal Earring",ear2="Loquacious Earring",
  123. body="Theophany Briault",hands="Piety Mitts",ring2="Mediator's Ring",ring1="Omega Ring",
  124. back="Merciful Cape",waist="Cleric's Belt",legs="Piety Pantaloons",feet="Piety Duckbills"}
  125.  
  126. -- Custom spell classes
  127. sets.midcast.MndEnfeebles = {main="Tamaxchi", sub="Genbu's Shield",
  128. head="Theophany Cap",neck="Imbodla Necklace",ear1="Magnetic Earring",ear2="Loquacious Earring",
  129. body="Theophany Briault",hands="Piety Mitts",ring2="Mediator's Ring",ring1="Omega Ring",
  130. back="Altruistic Cape",waist="Cleric's Belt",legs="Piety Pantaloons",feet="Piety Duckbills"}
  131.  
  132. sets.midcast.IntEnfeebles = {main="Tamaxchi", sub="Genbu's Shield",
  133. head="Theophany Cap",neck="Imbodla Necklace",ear1="Abyssal Earring",ear2="Loquacious Earring",
  134. body="Theophany Briault",hands="Piety Mitts",ring2="Mediator's Ring",ring1="Omega Ring",
  135. back="Altruistic Cape",waist="Cleric's Belt",legs="Piety Pantaloons",feet="Piety Duckbills"}
  136.  
  137.  
  138. -- Sets to return to when not performing an action.
  139.  
  140. -- Resting sets
  141. sets.resting = {main=gear.Staff.HMP,
  142. body="Heka's Kalasiris",main="Boonwell Staff",hands="Serpentes Cuffs",
  143. waist="Cleric's Belt",legs="Nares Trews",head="Nefer Khat",neck="Eidolon Pendant",
  144. ear1="Relaxing Earring",ear2="Magnetic Earring",back="Vita Cape",ring1="Star Ring",ring2="Tamas Ring",
  145. feet="Serpentes Sabots"}
  146.  
  147.  
  148. -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  149. sets.idle = {main="Terra's Staff", sub="Achaq Grip",ammo="Incantor Stone",
  150. head="Nefer Khat",neck="Orison Locket",ear1="Gifted Earring",ear2="Loquacious Earring",
  151. body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Prolix Ring",ring2="Mediator's Ring",
  152. back="Pahtli Cape",waist="Cleric's Belt",legs="Nares Trews",feet="Serpentes Sabots"}
  153.  
  154. sets.idle.PDT = {main="Terra's Staff", sub="Achaq Grip",ammo="Incantor Stone",
  155. head="Piety Cap",neck="Twilight Torque",ear1="Novia Earring",ear2="Medicine Earring",
  156. body="Piety Briault",hands="Piety Mitts",ring1="Jelly Ring",ring2="Kunaji Ring",
  157. back="Umbra Cape",waist="Witful Belt",legs="Piety Pantaloons",feet="Herald's Gaiters"}
  158.  
  159. sets.idle.Town = {main="Terra's Staff", sub="Achaq Grip",ammo="Incantor Stone",
  160. head="Nefer Khat",neck="Orison Locket",ear1="Gifted Earring",ear2="Loquacious Earring",
  161. body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Prolix Ring",ring2="Mediator's Ring",
  162. back="Pahtli Cape",waist="Cleric's Belt",legs="Nares Trews",feet="Herald's Gaiters"}
  163.  
  164. sets.idle.Weak = {main="Terra's Staff", sub="Achaq Grip",ammo="Incantor Stone",
  165. head="Piety Cap",neck="Twilight Torque",ear1="Novia Earring",ear2="Medicine Earring",
  166. body="Piety Briault",hands="Piety Mitts",ring1="Jelly Ring",ring2="Kunaji Ring",
  167. back="Umbra Cape",waist="Witful Belt",legs="Piety Pantaloons",feet="Herald's Gaiters"}
  168.  
  169. -- Defense sets
  170.  
  171. sets.defense.PDT = {main=gear.Staff.PDT,sub="Achaq Grip",
  172. head="Gendewitha Caubeen",neck="Twilight Torque",
  173. body="Gendewitha Bliaut",hands="Gendewitha Gages",ring1="Dark Ring",ring2="Dark Ring",
  174. back="Umbra Cape",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  175.  
  176. sets.defense.MDT = {main=gear.Staff.PDT,sub="Achaq Grip",
  177. head="Nahtirah Hat",neck="Twilight Torque",
  178. body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Dark Ring",ring2="Shadow Ring",
  179. back="Tuilha Cape",legs="Bokwus Slops",feet="Gendewitha Galoshes"}
  180.  
  181. sets.Kiting = {feet="Herald's Gaiters"}
  182.  
  183. -- Engaged sets
  184.  
  185. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  186. -- sets if more refined versions aren't defined.
  187. -- If you create a set with both offense and defense modes, the offense mode should be first.
  188. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  189.  
  190. -- Basic set for if no TP weapon is defined.
  191. sets.engaged = {
  192. head="Nahtirah Hat",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  193. body="Vanir Cotehardie",hands="Dynasty Mitts",ring1="Rajas Ring",ring2="K'ayres Ring",
  194. back="Umbra Cape",waist="Goading Belt",legs="Gendewitha Spats",feet="Gendewitha Galoshes"}
  195.  
  196.  
  197. -- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
  198. sets.buff['Divine Caress'] = {hands="Orison Mitts +2",back="Mending Cape"}
  199. end
  200.  
  201. -------------------------------------------------------------------------------------------------------------------
  202. -- Job-specific hooks that are called to process player actions at specific points in time.
  203. -------------------------------------------------------------------------------------------------------------------
  204.  
  205. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  206. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  207. function job_precast(spell, action, spellMap, eventArgs)
  208. if spell.english == "Paralyna" and buffactive.Paralyzed then
  209. -- no gear swaps if we're paralyzed, to avoid blinking while trying to remove it.
  210. eventArgs.handled = true
  211. end
  212.  
  213. if spell.skill == 'Healing Magic' then
  214. gear.default.obi_back = "Mending Cape"
  215. else
  216. gear.default.obi_back = "Toro Cape"
  217. end
  218. end
  219.  
  220.  
  221. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  222. function job_midcast(spell, action, spellMap, eventArgs)
  223. if spell.action_type == 'Magic' then
  224. -- Default base equipment layer of fast recast.
  225. equip(sets.midcast.FastRecast)
  226. end
  227. end
  228.  
  229.  
  230. function job_post_midcast(spell, action, spellMap, eventArgs)
  231. -- Apply Divine Caress boosting items as highest priority over other gear, if applicable.
  232. if spellMap == 'StatusRemoval' and buffactive['Divine Caress'] then
  233. equip(sets.buff['Divine Caress'])
  234. end
  235. end
  236.  
  237.  
  238. -- Return true if we handled the aftercast work. Otherwise it will fall back
  239. -- to the general aftercast() code in Mote-Include.
  240. function job_aftercast(spell, action, spellMap, eventArgs)
  241. if not spell.interrupted then
  242. if state.Buff[spell.name] ~= nil then
  243. state.Buff[spell.name] = true
  244. elseif spell.name == "Afflatus Misery" then
  245. state.Buff['Afflatus Solace'] = false
  246. end
  247. end
  248. end
  249.  
  250.  
  251. -------------------------------------------------------------------------------------------------------------------
  252. -- Customization hooks for idle and melee sets, after they've been automatically constructed.
  253. -------------------------------------------------------------------------------------------------------------------
  254.  
  255. -- Custom spell mapping.
  256. function job_get_spell_map(spell, default_spell_map)
  257. if spell.action_type == 'Magic' then
  258. if (default_spell_map == 'Cure' or default_spell_map == 'Curaga') and player.status == 'Engaged' then
  259. return "CureMelee"
  260. elseif default_spell_map == 'Cure' and state.Buff['Afflatus Solace'] then
  261. return "CureSolace"
  262. elseif spell.skill == "Enfeebling Magic" then
  263. if spell.type == "WhiteMagic" then
  264. return "MndEnfeebles"
  265. else
  266. return "IntEnfeebles"
  267. end
  268. end
  269. end
  270. end
  271.  
  272.  
  273. -------------------------------------------------------------------------------------------------------------------
  274. -- General hooks for other events.
  275. -------------------------------------------------------------------------------------------------------------------
  276.  
  277. -- Called when a player gains or loses a buff.
  278. -- buff == buff gained or lost
  279. -- gain == true if the buff was gained, false if it was lost.
  280. function job_buff_change(buff, gain)
  281. if state.Buff[buff] ~= nil then
  282. state.Buff[buff] = gain
  283. end
  284. end
  285.  
  286.  
  287. -------------------------------------------------------------------------------------------------------------------
  288. -- User code that supplements self-commands.
  289. -------------------------------------------------------------------------------------------------------------------
  290.  
  291. -- Called by the 'update' self-command.
  292. function job_update(cmdParams, eventArgs)
  293. if cmdParams[1] == 'user' and not areas.Cities:contains(world.area) then
  294. local needsArts =
  295. player.sub_job:lower() == 'sch' and
  296. not buffactive['Light Arts'] and
  297. not buffactive['Addendum: White'] and
  298. not buffactive['Dark Arts'] and
  299. not buffactive['Addendum: Black']
  300.  
  301. if not buffactive['Afflatus Solace'] and not buffactive['Afflatus Misery'] then
  302. if needsArts then
  303. send_command('@input /ja "Afflatus Solace" <me>;wait 1.2;input /ja "Light Arts" <me>')
  304. else
  305. send_command('@input /ja "Afflatus Solace" <me>')
  306. end
  307. end
  308. end
  309. end
  310.  
  311.  
  312. -- Handle notifications of general user state change.
  313. function job_state_change(stateField, newValue)
  314. if stateField == 'OffenseMode' then
  315. if newValue == 'Normal' then
  316. disable('main','sub')
  317. else
  318. enable('main','sub')
  319. end
  320. elseif stateField == 'Reset' then
  321. if state.OffenseMode == 'None' then
  322. enable('main','sub')
  323. end
  324. end
  325. end
  326.  
  327.  
  328. -- Function to display the current relevant user state when doing an update.
  329. -- Return true if display was handled, and you don't want the default info shown.
  330. function display_current_job_state(eventArgs)
  331. local defenseString = ''
  332. if state.Defense.Active then
  333. local defMode = state.Defense.PhysicalMode
  334. if state.Defense.Type == 'Magical' then
  335. defMode = state.Defense.MagicalMode
  336. end
  337.  
  338. defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
  339. end
  340.  
  341. local meleeString = ''
  342. if state.OffenseMode == 'Normal' then
  343. meleeString = 'Melee: Weapons locked, '
  344. end
  345.  
  346. add_to_chat(122,'Casting ['..state.CastingMode..'], '..meleeString..'Idle ['..state.IdleMode..'], '..defenseString..
  347. 'Kiting: '..on_off_names[state.Kiting])
  348.  
  349. eventArgs.handled = true
  350. end
  351.  
  352. -------------------------------------------------------------------------------------------------------------------
  353. -- Utility functions specific to this job.
  354. -------------------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment