Guest User

Motes Geo.lua

a guest
Aug 4th, 2014
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 15.16 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.     -- Load and initialize the include file.
  8.     include('Mote-Include.lua')
  9. end
  10.  
  11. -- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
  12. function job_setup()
  13.     indi_timer = ''
  14.     indi_duration = 180
  15. end
  16.  
  17. -------------------------------------------------------------------------------------------------------------------
  18. -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
  19. -------------------------------------------------------------------------------------------------------------------
  20.  
  21. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  22. function user_setup()
  23.     -- Options: Override default values
  24.     options.OffenseModes = {'None', 'Normal'}
  25.     options.DefenseModes = {'Normal'}
  26.     options.WeaponskillModes = {'Normal'}
  27.     options.IdleModes = {'Normal', 'PDT'}
  28.     options.RestingModes = {'Normal'}
  29.     options.PhysicalDefenseModes = {'PDT'}
  30.     options.MagicalDefenseModes = {'MDT'}
  31.  
  32.     state.Defense.PhysicalMode = 'PDT'
  33.     state.OffenseMode = 'None'
  34.  
  35.     gear.default.weaponskill_waist = "Windbuffet Belt"
  36.  
  37.     select_default_macro_book()
  38. end
  39.  
  40.  
  41. -- Define sets and vars used by this job file.
  42. function init_gear_sets()
  43. --------------------------------------
  44. -- Start defining the sets
  45. --------------------------------------
  46.  
  47. -- Precast Sets
  48.  
  49. -- Precast sets to enhance JAs
  50. sets.precast.JA['Life Cycle'] = {body="Geo. Tunic +1"}
  51. sets.precast.JA['Full Circle'] = {hands="Bagua Mitaines +1"}
  52. sets.precast.JA['Radial Arcana'] = {feet="Bagua Sandals +1"}
  53. sets.precast.JA['Bolster'] = {body="Bagua Tunic +1"}
  54. sets.precast.JA['Mending Halation'] = {legs="Bagua Pants +1"}
  55.  
  56. -- Fast cast sets for spells
  57. sets.precast.FC = {
  58. head="Nahtirah Hat",neck="Orunmila's Torque",ear2="Loquacious Earring",ammo="Impatiens",ear1="Magnetic Earring",
  59. body="Anhur Robe",hands="Repartie Gloves",ring1="Veneficium Ring",ring2="Prolix Ring",
  60. back="Lifestream Cape",waist="Witful Belt",legs="Geo. Pants +1",feet="Chelona Boots"}
  61.  
  62. sets.precast.FC.Stoneskin = set_combine(sets.precast.FC, {head="Umuthi Hat"})
  63.  
  64. sets.precast.FC.Cure = {
  65. head="Nahtirah Hat",neck="Orunmila's Torque",ear1="Magnetic Earring",ear2="Loquacious Earring",ammo="Impatiens",
  66. body="Heka's Kalasiris",hands="Repartie Gloves",ring1="Veneficium Ring",ring2="Prolix Ring",
  67. back="Pahtli Cape",waist="Witful Belt",legs="Geo. Pants +1",feet="Chelona Boots"}
  68.  
  69. sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {hands="Bagua Mitaines +1"})
  70.  
  71. sets.precast.FC.Geomancy = {main="Idris",range="Dunna",
  72. head="Nahtirah Hat",neck="Orunmila's Torque",ear2="Loquacious Earring",ammo="Dunna",ear1="Magnetic Earring",
  73. body="Anhur Robe",hands="Repartie Gloves",ring1="Veneficium Ring",ring2="Prolix Ring",
  74. back="Lifestream Cape",waist="Witful Belt",legs="Geo. Pants +1",feet="Chelona Boots"}
  75.  
  76.  
  77. -- Weaponskill sets: Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  78. sets.precast.WS['Realmrazer'] = {
  79. head="Espial Cap",neck="Light Gorget",ear1="Moonshade Earring",ear2="Brutal Earring",
  80. body="Espial Gambison",hands="Yaoyotl Gloves",ring1="Aquasoul Ring",ring2="Mars's Ring",
  81. back="Buquwik Cape",waist="Anguinus Belt",legs="Espial Hose",feet="Espial Socks"}
  82.  
  83. sets.precast.WS['Exudation'] = {main="Idris",sub="Cagliostro's Rod",ammo="Jukukik Feather",
  84. head="Buremte Hat",neck="Asperity Necklace",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  85. body="Ischemia Chasu.",hands="Geo. Gloves +1",ring1="Levia. Ring +1",ring2="Levia. Ring +1",
  86. back="Refraction Cape",waist="Windbuffet Belt",legs="Mes'Yohi Slacks",feet="Bagua Sandals +1"}
  87.  
  88. sets.precast.WS['Seraph Strike'] = {ammo="Dosis Tathlum",
  89. head="Hagondes Hat",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Crematio Earring",
  90. body="Hagondes Coat +1",hands="Otomi Gloves",ring1="Acumen Ring",ring2="Levia. Ring +1",
  91. back="Toro Cape",waist="Sekhmet Corset",legs="Hagondes Pants +1",feet="Umbani Boots"}
  92.  
  93. sets.precast.WS['Starlight'] = {ear2="Moonshade Earring"}
  94.  
  95. sets.precast.WS['Moonlight'] = {ear2="Moonshade Earring"}
  96.  
  97. sets.precast.WS['Flash Nova'] = {
  98. head="Hagondes Hat",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Crematio Earring",ammo="Dosis Tathlum",
  99. body="Hagondes Coat +1",hands="Otomi Gloves",ring1="Acumen Ring",ring2="Levia. Ring +1",
  100. back="Toro Cape",waist="Sekhmet Corset",legs="Hagondes Pants +1",feet="Umbani Boots"}
  101.  
  102.  
  103. -- Midcast Sets
  104. sets.midcast.FastRecast = {
  105. head="Nahtirah Hat",neck="Orunmila's Torque",ear2="Loquacious Earring",
  106. body="Anhur Robe",hands="Repartie Gloves",ring2="Prolix Ring",
  107. back="Lifestream Cape",waist="Witful Belt",legs="Geo. Pants +1",feet="Chelona Boots"}
  108.  
  109. sets.midcast.Geomancy = {main="Idris",range="Dunna",
  110. head="Selenian Cap",ear1="Magnetic Earring",ear2="Loquacious Earring",
  111. body="Bagua Tunic +1",hands="Geo. Mitaines +1",ring2="Prolix Ring",
  112. back="Lifestream Cape",waist="Witful Belt",legs="Theurgist's Slacks",feet="Umbani Boots"}
  113.  
  114. sets.midcast.Geomancy.Indi = set_combine(sets.midcast.Geomancy, {legs="Bagua Pants +1"})
  115.  
  116. sets.midcast.Cure = {main="Tamaxchi",sub="Genbu's Shield",ammo="Impatiens",
  117. head="Nahtirah Hat",neck="Orunmila's Torque",ear1="Loquacious Earring",ear2="Beatific Earring",
  118. body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Sirona's Ring",ring2="Prolix Ring",
  119. back="Lifestream Cape",waist="Witful Belt",legs="Geo. Pants +1",feet="Chelona Boots"}
  120.  
  121. sets.midcast['Dark Magic'] = {main="Idis",sub="Genbu's Shield",
  122. head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  123. body="Geo. Tunic +1",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Sangoma Ring",
  124. back="Refraction Cape",waist="Witful Belt",legs="Geomancy Pants",feet="Orvail Souliers +1"}
  125.  
  126. sets.midcast.Drain = {main="Idris",range="Dunna",
  127. head="Bagua Galero",neck="Weike Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  128. body="Geo. Tunic +1",hands="Lurid Mitts",ring1="Perception Ring",ring2="Sangoma Ring",
  129. back="Refraction Cape",waist="Witful Belt",legs="Mes'yohi Slacks",feet="Artsieq Boots"}
  130.  
  131. sets.midcast.Aspir = sets.midcast.Drain
  132. sets.midcast['Aspir II'] = sets.midcast.Drain
  133.  
  134. sets.midcast['Elemental Magic'] = {main="Idris",ammo="Dosis Tathlum",
  135. head="Hagondes Hat",neck="Eddy Necklace",ear1="Crematio Earring",ear2="Friomisi Earring",
  136. body="Hagondes Coat +1",hands="Otomi Gloves",ring1="Acumen Ring",ring2="Icesoul Ring",
  137. back="Toro Cape",waist="Sekhmet Corset",legs="Hagondes Pants +1",feet="Umbani Boots"}
  138.  
  139. sets.midcast['Protect III'] = {ring1="Sheltered Ring"}
  140. sets.midcast['Shell II'] = {ring1="Sheltered Ring"}
  141.  
  142. -- Enfeebling Magic Sets
  143. sets.midcast.MndEnfeebles = {main="Idris",
  144. head="Artsieq Hat",neck="Weike Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  145. body="Ischemia Chasu.",hands="Lurid Mitts",ring1="Levia. Ring +1",ring2="Levia. Ring +1",
  146. back="Lifestream Cape",waist="Bougonia Rope",legs="Mes'yohi Slacks",feet="Artsieq Boots"}
  147.  
  148. sets.midcast.IntEnfeebles = {main="Idris",
  149. head="Artsieq Hat",neck="Weike Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
  150. body="Ischemia Chasu.",hands="Lurid Mitts",ring1="Perception Ring",ring2="Sangoma Ring",
  151. back="Lifestream Cape",waist="Bougonia Rope",legs="Mes'yohi Slacks",feet="Artsieq Boots"}
  152.  
  153. sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
  154.  
  155.  
  156. -- Sets to return to when not performing an action.
  157.  
  158. -- Resting sets
  159. sets.resting = {range="Dunna",
  160. head="Nefer Khat",neck="Wiglen Gorget",ear1="Sanare Earring",ear2="Merman's Earring",
  161. body="Heka's Kalasiris",hands="Bagua Mitaines +1",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  162. back="Umbra Cape",waist="Austerity Belt",legs="Nares Trews",feet="Chelona Boots"}
  163.  
  164.  
  165. -- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
  166. sets.idle.Town = {main="Idris",range="Dunna",
  167. head="Nefer Khat",neck="Wiglen Gorget",ear1="Sanare Earring",ear2="Merman's Earring",
  168. body="Heka's Kalasiris",hands="Bagua Mitaines +1",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  169. back="Umbra Cape",waist="Slipor Sash",legs="Nares Trews",feet="Geo. Sandals +1"}
  170.  
  171. sets.idle.Field = {main="Idris",range="Dunna",
  172. head="Nefer Khat",neck="Wiglen Gorget",ear1="Sanare Earring",ear2="Merman's Earring",
  173. body="Heka's Kalasiris",hands="Bagua Mitaines +1",ring1="Sheltered Ring",ring2="Defending Ring",
  174. back="Umbra Cape",waist="Slipor Sash",legs="Nares Trews",feet="Geo. Sandals +1"}
  175.  
  176. sets.idle.Field.PDT = {range="Dunna",
  177. head="Hagondes Hat",neck="Twilight Torque",ear1="Ethereal Earring",ear2="Loquacious Earring",
  178. body="Heka's Kalasiris",hands="Bagua Mitaines",ring1="Dark Ring",ring2="Dark Ring",
  179. back="Umbra Cape",waist="Witful Belt",legs="Hagondes Pants",feet="Geomancy Sandals"}
  180.  
  181. -- .Pet sets are for when Luopan is present.
  182. sets.idle.Pet = {main="Idris",range="Dunna",
  183. head="Nahtirah Hat",neck="Twilight Torque",ear1="Sanare Earring",ear2="Loquacious Earring",
  184. body="Hagondes Coat",hands="Geo. Mitaines +1",ring1="Defending Ring",ring2="Paguroidea Ring",
  185. back="Umbra Cape",waist="Goading Belt",legs="Nares Trews",feet="Herald's Gaiters"}
  186.  
  187. sets.idle.Weak = {range="Dunna",
  188. head="Hagondes Hat",neck="Twilight Torque",ear1="Sanare EArring",ear2="Merman's Earring",
  189. body="Hagondes Coat +1",hands="Geo. Mitaines +1",ring1="Defending Ring",ring2="Paguroidea Ring",
  190. back="Umbra Cape",waist="Slipor Sash",legs="Hagondes Pants +1",feet="Geo. Sandals +1"}
  191.  
  192. -- Defense sets
  193. sets.defense.PDT = {sub="Genbu's Shield",range="Nepote Bell",
  194. head="Hagondes Hat",neck="Twilight Torque",ear1="Ethereal Earring",ear2="Loquacious Earring",
  195. body="Heka's Kalasiris",hands="Bagua Mitaines",ring1="Dark Ring",ring2="Dark Ring",
  196. back="Shadow Mantle",waist="Goading Belt",legs="Hagondes Pants",feet="Geomancy Sandals"}
  197.  
  198. sets.defense.MDT = {sub="Genbu's Shield",range="Nepote Bell",
  199. head="Nahtirah Hat",neck="Twilight Torque",ear1="Ethereal Earring",ear2="Loquacious Earring",
  200. body="Heka's Kalasiris",hands="Bagua Mitaines",ring1="Merman's Ring",ring2="Merman's Ring",
  201. back="Shadow Mantle",waist="Goading Belt",legs="Hagondes Pants",feet="Geomancy Sandals"}
  202.  
  203. sets.Kiting = {feet="Geomancy Sandals"}
  204.  
  205. -- Engaged sets
  206.  
  207. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  208. -- sets if more refined versions aren't defined.
  209. -- If you create a set with both offense and defense modes, the offense mode should be first.
  210. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  211.  
  212. -- Normal melee group
  213.  
  214. sets.engaged = {main="Idris",sub="Cagliostro's Rod",ammo="Jukukik Feather",
  215. head="Kaabnax Hat",neck="Iqabi Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  216. body="Ischemia Chasu.",hands="Bokwus Gloves",ring1="Enlivened Ring",ring2="Mars's Ring",
  217. back="Kayapa Cape",waist="Cetl Belt",legs="Bokwus Slops",feet="Geo. Sandals +1"}
  218. end
  219.  
  220. -------------------------------------------------------------------------------------------------------------------
  221. -- Job-specific hooks for standard casting events.
  222. -------------------------------------------------------------------------------------------------------------------
  223.  
  224. function job_aftercast(spell, action, spellMap, eventArgs)
  225.     if not spell.interrupted then
  226.         if spell.english:startswith('Indi') then
  227.             if not classes.CustomIdleGroups:contains('Indi') then
  228.                 classes.CustomIdleGroups:append('Indi')
  229.             end
  230.             send_command('@timers d "'..indi_timer..'"')
  231.             indi_timer = spell.english
  232.             send_command('@timers c "'..indi_timer..'" '..indi_duration..' down spells/00136.png')
  233.         elseif spell.english == 'Sleep' or spell.english == 'Sleepga' then
  234.             send_command('@timers c "'..spell.english..' ['..spell.target.name..']" 60 down spells/00220.png')
  235.         elseif spell.english == 'Sleep II' or spell.english == 'Sleepga II' then
  236.             send_command('@timers c "'..spell.english..' ['..spell.target.name..']" 90 down spells/00220.png')
  237.         end
  238.     elseif not player.indi then
  239.         classes.CustomIdleGroups:clear()
  240.     end
  241. end
  242.  
  243.  
  244. -------------------------------------------------------------------------------------------------------------------
  245. -- Job-specific hooks for non-casting events.
  246. -------------------------------------------------------------------------------------------------------------------
  247.  
  248. -- Called when a player gains or loses a buff.
  249. -- buff == buff gained or lost
  250. -- gain == true if the buff was gained, false if it was lost.
  251. function job_buff_change(buff, gain)
  252.     if player.indi and not classes.CustomIdleGroups:contains('Indi')then
  253.         classes.CustomIdleGroups:append('Indi')
  254.         handle_equipping_gear(player.status)
  255.     elseif classes.CustomIdleGroups:contains('Indi') and not player.indi then
  256.         classes.CustomIdleGroups:clear()
  257.         handle_equipping_gear(player.status)
  258.     end
  259. end
  260.  
  261. function job_state_change(stateField, newValue, oldValue)
  262.     if stateField == 'OffenseMode' then
  263.         if newValue == 'Normal' then
  264.             disable('main','sub')
  265.         else
  266.             enable('main','sub')
  267.         end
  268.     elseif stateField == 'Reset' then
  269.         if state.OffenseMode == 'None' then
  270.             enable('main','sub')
  271.         end
  272.     end
  273. end
  274.  
  275. -------------------------------------------------------------------------------------------------------------------
  276. -- User code that supplements standard library decisions.
  277. -------------------------------------------------------------------------------------------------------------------
  278.  
  279. function customize_idle_set(idleSet)
  280.     if player.mpp < 51 then
  281.         idleSet = set_combine(idleSet, sets.latent_refresh)
  282.     end
  283.     return idleSet
  284. end
  285.  
  286. -- Called by the 'update' self-command.
  287. function job_update(cmdParams, eventArgs)
  288.     classes.CustomIdleGroups:clear()
  289.     if player.indi then
  290.         classes.CustomIdleGroups:append('Indi')
  291.     end
  292. end
  293.  
  294. -- Function to display the current relevant user state when doing an update.
  295. -- Return true if display was handled, and you don't want the default info shown.
  296. function display_current_job_state()
  297.     local defenseString = ''
  298.     if state.Defense.Active then
  299.         local defMode = state.Defense.PhysicalMode
  300.         if state.Defense.Type == 'Magical' then
  301.             defMode = state.Defense.MagicalMode
  302.         end
  303.  
  304.         defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
  305.     end
  306.    
  307.     local meleeString = ''
  308.     if state.OffenseMode == 'Normal' then
  309.         meleeString = 'Melee: Weapons locked, '
  310.     end
  311.  
  312.     add_to_chat(122,'Casting ['..state.CastingMode..'], '..meleeString..'Idle ['..state.IdleMode..'], '..defenseString..
  313.         'Kiting: '..on_off_names[state.Kiting])
  314. end
  315.  
  316. -------------------------------------------------------------------------------------------------------------------
  317. -- Utility functions specific to this job.
  318. -------------------------------------------------------------------------------------------------------------------
  319.  
  320. -- Select default macro book on initial load or subjob change.
  321. function select_default_macro_book()
  322.     set_macro_page(1, 6)
  323. end
Advertisement
Add Comment
Please, Sign In to add comment