Advertisement
Guest User

GEOKinetics

a guest
Nov 24th, 2014
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.62 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job. Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4. -- Initialization function for this job file.
  5. function get_sets()
  6. mote_include_version = 2
  7. -- Load and initialize the include file.
  8. include('Mote-Include.lua')
  9. end
  10. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  11. function job_setup()
  12. indi_timer = ''
  13. indi_duration = 180
  14. end
  15. -------------------------------------------------------------------------------------------------------------------
  16. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  17. -------------------------------------------------------------------------------------------------------------------
  18. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  19. function user_setup()
  20. state.OffenseMode:options('None', 'Normal')
  21. state.CastingMode:options('Normal', 'Resistant')
  22. state.IdleMode:options('Normal', 'PDT')
  23. gear.default.weaponskill_waist = "Windbuffet Belt"
  24. select_default_macro_book()
  25. end
  26. -- Define sets and vars used by this job file.
  27. function init_gear_sets()
  28. --------------------------------------
  29. -- Precast sets
  30. --------------------------------------
  31. -- Precast sets to enhance JAs
  32. sets.precast.JA.Bolster = {body="Bagua Tunic"}
  33. sets.precast.JA['Life cycle'] = {body="Geomancy Tunic"}
  34. -- Fast cast sets for spells
  35. sets.precast.FC = {ammo="Impatiens",
  36. head="Nahtirah Hat",ear2="Loquacious Earring",
  37. body="Vanir Cotehardie",ring1="Prolix Ring",
  38. back="Swith Cape +1",waist="Witful Belt",legs="Orvail Pants +1",feet="Chelona Boots +1"}
  39. sets.precast.FC.Cure = set_combine(sets.precast.FC, {main="Tamaxchi",sub="Genbu's Shield",back="Pahtli Cape"})
  40. sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {neck="Stoicheion Medal"})
  41. -- Weaponskill sets
  42. -- Default set for any weaponskill that isn't any more specifically defined
  43. sets.precast.WS = {
  44. head="Nahtirah Hat",neck=gear.ElementalGorget,ear1="Bladeborn Earring",ear2="Steelflash Earring",
  45. body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
  46. back="Refraction Cape",waist=gear.ElementalBelt,legs="Hagondes Pants",feet="Hagondes Sabots"}
  47. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  48. sets.precast.WS['Flash Nova'] = {ammo="Dosis Tathlum",
  49. head="Hagondes Hat",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Crematio Earring",
  50. body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Acumen Ring",ring2="Strendu Ring",
  51. back="Toro Cape",waist="Snow Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
  52. sets.precast.WS['Starlight'] = {ear2="Moonshade Earring"}
  53. sets.precast.WS['Moonlight'] = {ear2="Moonshade Earring"}
  54. --------------------------------------
  55. -- Midcast sets
  56. --------------------------------------
  57. -- Base fast recast for spells
  58. sets.midcast.FastRecast = {
  59. head="Zelus Tiara",ear2="Loquacious Earring",
  60. body="Hagondes Coat",hands="Bokwus Gloves",ring1="Prolix Ring",
  61. back="Swith Cape +1",waist="Goading Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
  62. sets.midcast.Geomancy = {range="Nepote Bell"}
  63. sets.midcast.Geomancy.Indi = {range="Nepote Bell",legs="Bagua Pants"}
  64. sets.midcast.Cure = {main="Tamaxchi",sub="Genbu's Shield",
  65. body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Haoma Ring",ring2="Sirona's Ring",
  66. back="Swith Cape +1",legs="Nares Trews",feet="Hagondes Sabots"}
  67. sets.midcast.Curaga = sets.midcast.Cure
  68. sets.midcast.Protectra = {ring1="Sheltered Ring"}
  69. sets.midcast.Shellra = {ring1="Sheltered Ring"}
  70. --------------------------------------
  71. -- Idle/resting/defense/etc sets
  72. --------------------------------------
  73. -- Resting sets
  74. sets.resting = {head="Nefer Khat +1",neck="Wiglen Gorget",
  75. body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  76. waist="Austerity Belt",legs="Nares Trews",feet="Chelona Boots +1"}
  77. -- Idle sets
  78. sets.idle = {main="Bolelabunga",sub="Genbu's Shield",range="Nepote Bell",
  79. head="Nefer Khat +1",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  80. body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  81. back="Umbra Cape",waist="Goading Belt",legs="Nares Trews",feet="Herald's Gaiters"}
  82. sets.idle.PDT = {main="Bolelabunga",sub="Genbu's Shield",range="Nepote Bell",
  83. head="Nahtirah Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  84. body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Paguroidea Ring",
  85. back="Umbra Cape",waist="Goading Belt",legs="Nares Trews",feet="Herald's Gaiters"}
  86. -- .Pet sets are for when Luopan is present.
  87. sets.idle.Pet = {main="Bolelabunga",sub="Genbu's Shield",range="Nepote Bell",
  88. head="Nahtirah Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  89. body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Paguroidea Ring",
  90. back="Umbra Cape",waist="Goading Belt",legs="Nares Trews",feet="Herald's Gaiters"}
  91. sets.idle.PDT.Pet = {main="Bolelabunga",sub="Genbu's Shield",range="Nepote Bell",
  92. head="Nahtirah Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  93. body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Paguroidea Ring",
  94. back="Umbra Cape",waist="Goading Belt",legs="Nares Trews",feet="Herald's Gaiters"}
  95. -- .Indi sets are for when an Indi-spell is active.
  96. sets.idle.Indi = set_combine(sets.idle, {legs="Bagua Pants"})
  97. sets.idle.Pet.Indi = set_combine(sets.idle.Pet, {legs="Bagua Pants"})
  98. sets.idle.PDT.Indi = set_combine(sets.idle.PDT, {legs="Bagua Pants"})
  99. sets.idle.PDT.Pet.Indi = set_combine(sets.idle.PDT.Pet, {legs="Bagua Pants"})
  100. sets.idle.Town = {main="Bolelabunga",sub="Genbu's Shield",range="Nepote Bell",
  101. head="Nefer Khat +1",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  102. body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  103. back="Umbra Cape",waist="Goading Belt",legs="Nares Trews",feet="Herald's Gaiters"}
  104. sets.idle.Weak = {main="Bolelabunga",sub="Genbu's Shield",range="Nepote Bell",
  105. head="Nefer Khat +1",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  106. body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  107. back="Umbra Cape",waist="Goading Belt",legs="Nares Trews",feet="Herald's Gaiters"}
  108. -- Defense sets
  109. sets.defense.PDT = {range="Nepote Bell",
  110. head="Hagondes Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  111. body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2=gear.DarkRing.physical,
  112. back="Umbra Cape",waist="Goading Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
  113. sets.defense.MDT = {range="Nepote Bell",
  114. head="Nahtirah Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
  115. body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Shadow Ring",
  116. back="Umbra Cape",waist="Goading Belt",legs="Bokwus Slops",feet="Hagondes Sabots"}
  117. sets.Kiting = {feet="Herald's Gaiters"}
  118. sets.latent_refresh = {waist="Fucho-no-obi"}
  119. --------------------------------------
  120. -- Engaged sets
  121. --------------------------------------
  122. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  123. -- sets if more refined versions aren't defined.
  124. -- If you create a set with both offense and defense modes, the offense mode should be first.
  125. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  126. -- Normal melee group
  127. sets.engaged = {range="Nepote Bell",
  128. head="Zelus Tiara",neck="Peacock Charm",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  129. body="Vanir Cotehardie",hands="Bokwus Gloves",ring1="Rajas Ring",ring2="Paguroidea Ring",
  130. back="Umbra Cape",waist="Goading Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
  131. --------------------------------------
  132. -- Custom buff sets
  133. --------------------------------------
  134. end
  135. -------------------------------------------------------------------------------------------------------------------
  136. -- Job-specific hooks for standard casting events.
  137. -------------------------------------------------------------------------------------------------------------------
  138. function job_aftercast(spell, action, spellMap, eventArgs)
  139. if not spell.interrupted then
  140. if spell.english:startswith('Indi') then
  141. if not classes.CustomIdleGroups:contains('Indi') then
  142. classes.CustomIdleGroups:append('Indi')
  143. end
  144. send_command('@timers d "'..indi_timer..'"')
  145. indi_timer = spell.english
  146. send_command('@timers c "'..indi_timer..'" '..indi_duration..' down spells/00136.png')
  147. elseif spell.english == 'Sleep' or spell.english == 'Sleepga' then
  148. send_command('@timers c "'..spell.english..' ['..spell.target.name..']" 60 down spells/00220.png')
  149. elseif spell.english == 'Sleep II' or spell.english == 'Sleepga II' then
  150. send_command('@timers c "'..spell.english..' ['..spell.target.name..']" 90 down spells/00220.png')
  151. end
  152. elseif not player.indi then
  153. classes.CustomIdleGroups:clear()
  154. end
  155. end
  156. -------------------------------------------------------------------------------------------------------------------
  157. -- Job-specific hooks for non-casting events.
  158. -------------------------------------------------------------------------------------------------------------------
  159. -- Called when a player gains or loses a buff.
  160. -- buff == buff gained or lost
  161. -- gain == true if the buff was gained, false if it was lost.
  162. function job_buff_change(buff, gain)
  163. if player.indi and not classes.CustomIdleGroups:contains('Indi')then
  164. classes.CustomIdleGroups:append('Indi')
  165. handle_equipping_gear(player.status)
  166. elseif classes.CustomIdleGroups:contains('Indi') and not player.indi then
  167. classes.CustomIdleGroups:clear()
  168. handle_equipping_gear(player.status)
  169. end
  170. end
  171. function job_state_change(stateField, newValue, oldValue)
  172. if stateField == 'Offense Mode' then
  173. if newValue == 'Normal' then
  174. disable('main','sub','range')
  175. else
  176. enable('main','sub','range')
  177. end
  178. end
  179. end
  180. -------------------------------------------------------------------------------------------------------------------
  181. -- User code that supplements standard library decisions.
  182. -------------------------------------------------------------------------------------------------------------------
  183. function job_get_spell_map(spell, default_spell_map)
  184. if spell.action_type == 'Magic' then
  185. if spell.skill == 'Enfeebling Magic' then
  186. if spell.type == 'WhiteMagic' then
  187. return 'MndEnfeebles'
  188. else
  189. return 'IntEnfeebles'
  190. end
  191. elseif spell.skill == 'Geomancy' then
  192. if spell.english:startswith('Indi') then
  193. return 'Indi'
  194. end
  195. end
  196. end
  197. end
  198. function customize_idle_set(idleSet)
  199. if player.mpp < 51 then
  200. idleSet = set_combine(idleSet, sets.latent_refresh)
  201. end
  202. return idleSet
  203. end
  204. -- Called by the 'update' self-command.
  205. function job_update(cmdParams, eventArgs)
  206. classes.CustomIdleGroups:clear()
  207. if player.indi then
  208. classes.CustomIdleGroups:append('Indi')
  209. end
  210. end
  211. -- Function to display the current relevant user state when doing an update.
  212. function display_current_job_state(eventArgs)
  213. display_current_caster_state()
  214. eventArgs.handled = true
  215. end
  216. -------------------------------------------------------------------------------------------------------------------
  217. -- Utility functions specific to this job.
  218. -------------------------------------------------------------------------------------------------------------------
  219. -- Select default macro book on initial load or subjob change.
  220. function select_default_macro_book()
  221. set_macro_page(1, 6)
  222. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement