Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.33 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Setup functions for this job. Generally should not be modified.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. --[[
  6. gs c toggle LuzafRing -- Toggles use of Luzaf Ring on and off
  7.  
  8. Offense mode is melee or ranged. Used ranged offense mode if you are engaged
  9. for ranged weaponskills, but not actually meleeing.
  10.  
  11. Weaponskill mode, if set to 'Normal', is handled separately for melee and ranged weaponskills.
  12. --]]
  13.  
  14.  
  15. -- Initialization function for this job file.
  16. function get_sets()
  17. mote_include_version = 2
  18.  
  19. -- Load and initialize the include file.
  20. include('Mote-Include.lua')
  21. end
  22.  
  23. -- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
  24. function job_setup()
  25. -- Whether to use Luzaf's Ring
  26. state.LuzafRing = M(false, "Luzaf's Ring")
  27. -- Whether a warning has been given for low ammo
  28. state.warned = M(false)
  29.  
  30. define_roll_values()
  31. end
  32. include('organizer-lib.lua')
  33. -------------------------------------------------------------------------------------------------------------------
  34. -- User setup functions for this job. Recommend that these be overridden in a sidecar file.
  35. -------------------------------------------------------------------------------------------------------------------
  36.  
  37. -- Setup vars that are user-dependent. Can override this function in a sidecar file.
  38. function user_setup()
  39.  
  40.  
  41. state.HybridMode:options('Normal','DT')
  42. state.OffenseMode:options('Normal','SB','Ranged')
  43. state.IdleMode:options('Normal','SB','Ranged')
  44.  
  45. send_command('bind f9 exec bind3.txt')
  46. send_command('bind F10 gs c cycle HybridMode')
  47. send_command('bind !f9 input /lockstyleset 5')
  48. send_command('unbind !f10')
  49. send_command('unbind ^f10')
  50. send_command('unbind f11')
  51. send_command('unbind !f11')
  52. send_command('bind f12 gs c update user')
  53. send_command('bind !f12 gs c reset defense')
  54.  
  55. gear.RngHead = { name="Herculean Helm", augments={'Rng.Acc.+13 Rng.Atk.+13','Weapon skill damage +3%','Rng.Acc.+8','Rng.Atk.+12',}}
  56. gear.MagicHead = { name="Herculean Helm", augments={'"Mag.Atk.Bns."+15','Weapon skill damage +4%','STR+7','Mag. Acc.+14',}}
  57.  
  58. gear.RngLegs= { name="Herculean Trousers", augments={'Rng.Acc.+14 Rng.Atk.+14','Weapon skill damage +4%','AGI+10','Rng.Atk.+13',}}
  59. gear.MagicLegs = { name="Herculean Trousers", augments={'Mag. Acc.+18 "Mag.Atk.Bns."+18','Weapon skill damage +3%','MND+8','Mag. Acc.+5','"Mag.Atk.Bns."+10',}}
  60. gear.CritLegs = { name="Herculean Trousers", augments={'Attack+12','Crit.hit rate+4','DEX+9','Accuracy+14',}}
  61. gear.SavageLegs = { name="Herculean Trousers", augments={'Attack+28','Weapon skill damage +4%','STR+14',}}
  62.  
  63. gear.TPHands = { name="Herculean Gloves", augments={'Accuracy+11 Attack+11','"Triple Atk."+4','AGI+3','Accuracy+9',}}
  64. gear.DTHands = { name="Herculean Gloves", augments={'Accuracy+24','Damage taken-3%','DEX+3','Attack+7',}}
  65.  
  66. gear.SavageBody = { name="Herculean Vest", augments={'Attack+28','Weapon skill damage +4%','STR+12',}}
  67.  
  68.  
  69. gear.TPFeet = { name="Herculean Boots", augments={'Accuracy+18 Attack+18','"Triple Atk."+4',}}
  70. gear.DTFeet = { name="Herculean Boots", augments={'Rng.Acc.+7','Damage taken-4%','DEX+9','Accuracy+15',}}
  71. gear.RngFeet = { name="Herculean Boots", augments={'Rng.Atk.+27','Weapon skill damage +3%','Rng.Acc.+11',}}
  72. gear.MagicFeet = { name="Herculean Boots", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Weapon skill damage +3%','Mag. Acc.+13','"Mag.Atk.Bns."+15',}}
  73. gear.SavageFeet = { name="Herculean Boots", augments={'Accuracy+24','Weapon skill damage +4%','STR+8',}}
  74.  
  75.  
  76. gear.AgiBack = { name="Camulus's Mantle", augments={'AGI+20','Rng.Acc.+20 Rng.Atk.+20','"Store TP"+10',}}
  77. gear.StrBack = { name="Camulus's Mantle", augments={'STR+20','Accuracy+20 Attack+20','STR+10','Weapon skill damage +10%',}}
  78.  
  79. -- Additional local binds
  80. send_command('bind ^` input /ja "Double-up" <me>')
  81. send_command('bind !` input /ja "Bolter\'s Roll" <me>')
  82.  
  83. select_default_macro_book()
  84. end
  85.  
  86.  
  87.  
  88.  
  89. -- Called when this job file is unloaded (eg: job change)
  90. function user_unload()
  91. send_command('unbind ^`')
  92. send_command('unbind !`')
  93. end
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100. -- Define sets and vars used by this job file.
  101. function init_gear_sets()
  102. --------------------------------------
  103. -- Start defining the sets
  104. --------------------------------------
  105.  
  106. -- Precast Sets
  107.  
  108. -- Precast sets to enhance JAs
  109.  
  110. sets.precast.JA['Triple Shot'] = {body="Chasseur's Frac +1"}
  111. sets.precast.JA['Snake Eye'] = {legs="Lanun Culottes +1"}
  112. sets.precast.JA['Wild Card'] = {feet="Lanun Bottes +1"}
  113. sets.precast.JA['Random Deal'] = {body="Lanun Frac +1"}
  114. sets.precast.JA['Double-Up'] = {ring1="luzaf's Ring"}
  115.  
  116.  
  117. sets.precast.CorsairRoll = {range="Compensator",head="Lanun Tricorne +1",hands="Chasseur's Gants +1",back="Camulus's Mantle",ring1="Luzaf's Ring",neck="Regal Necklace",legs="Desultor Tassets"}
  118.  
  119. sets.precast.CorsairRoll["Caster's Roll"] = set_combine(sets.precast.CorsairRoll, {legs="Chas. Culottes"})
  120. sets.precast.CorsairRoll["Courser's Roll"] = set_combine(sets.precast.CorsairRoll, {feet="Chasseur's Bottes"})
  121. sets.precast.CorsairRoll["Tactician's Roll"] = set_combine(sets.precast.CorsairRoll, {body="Chasseur's Frac +1"})
  122.  
  123. sets.precast.LuzafRing = {ring2="Luzaf's Ring"}
  124. sets.precast.FoldDoubleBust = {hands="Lanun Gants +1"}
  125.  
  126. sets.precast.CorsairShot = {
  127. head=gear.MagicHead,neck="Sanctity Necklace",ear1="Friomisi Earring",ear2="Hecate's Earring",
  128. body="Samnuha Coat",hands="Carmine Fin. Ga. +1",ring1="Arvina Ringlet +1",ring2="Dingir Ring",
  129. back=gear.AgiBack,waist="Eschan Stone",legs=gear.MagicLegs,feet=gear.MagicFeet}
  130.  
  131.  
  132. -- Waltz set (chr and vit)
  133. sets.precast.Waltz = {}
  134.  
  135. -- Don't need any special gear for Healing Waltz.
  136. sets.precast.Waltz['Healing Waltz'] = {}
  137.  
  138. -- Fast cast sets for spells
  139.  
  140. sets.precast.FC = {
  141. head="",neck="Voltsurge Torque",ear1="Loquac. Earring",ear2="",
  142. body="Dread Jupon",hands="",ring1="Kishar Ring",ring2="Rahab Ring",
  143. back="",legs="Rawhide Trousers",feet="Carmine Greaves"}
  144.  
  145. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {})
  146.  
  147.  
  148.  
  149.  
  150. sets.precast.RA = {ammo="Chrono Bullet",
  151. head="Taeon Chapeau",
  152. body="Taeon Tabard",hands="Carmine Fin. Ga. +1",
  153. back=gear.SnapBack,waist="Yemaya Belt",legs="Adhemar Kecks",feet="Meg. Jam. +1"}
  154.  
  155.  
  156. -- Weaponskill sets
  157. -- Default set for any weaponskill that isn't any more specifically defined
  158. sets.precast.WS = {head=gear.RngHead,neck="Fotia Gorget",ear1="Ishvara Earring",ear2="Moonshade Earring",
  159. body="Laksa. Frac +3",hands="Meg. Gloves +1",ring1="Garuda Ring +1",ring2="Dingir Ring",
  160. back=gear.AgiBack,waist="Fotia Belt",legs=gear.RngLegs,feet=gear.RngFeet}
  161.  
  162.  
  163. -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
  164. sets.precast.WS['Evisceration'] = {
  165. head="Mummu Bonnet +1",neck="Fotia Gorget",ear1="Telos Earring",ear2="Moonshade Earring",
  166. body="Abnoba Kaftan",hands="Adhemar Wristbands",ring1="Begrudging Ring",ring2="Epona's Ring",
  167. back=gear.AgiBack,waist="Fotia Belt",legs=gear.CritLegs,feet=gear.TPFeet}
  168.  
  169.  
  170.  
  171. sets.precast.WS['Savage Blade'] = {
  172. head="Lilitu Headpiece",neck="Fotia Gorget",ear1="Ishvara Earring",ear2="Moonshade Earring",
  173. body="Laksa. Frac +3",hands="Meg. Gloves +1",ring1="Ifrit Ring +1",ring2="Epona's Ring",
  174. back=gear.StrBack,waist="Fotia Belt",legs=gear.SavageLegs,feet=gear.SavageFeet}
  175.  
  176. sets.precast.WS['Last Stand'] = {ammo="Chrono Bullet",
  177. head=gear.RngHead,neck="Fotia Gorget",ear1="Ishvara Earring",ear2="Moonshade Earring",
  178. body="Laksa. Frac +3",hands="Meg. Gloves +1",ring1="Garuda Ring +1",ring2="Dingir Ring",
  179. back=gear.AgiBack,waist="Fotia Belt",legs=gear.RngLegs,feet=gear.RngFeet}
  180.  
  181.  
  182. sets.precast.WS['Wildfire'] = {ammo="Chrono Bullet",
  183. head=gear.MagicHead,neck="Baetyl Pendant",ear1="Friomisi Earring",ear2="Moonshade Earring",
  184. body="Laksa. Frac +3",hands="Carmine Fin. Ga. +1",ring1="Arvina Ringlet +1",ring2="Dingir Ring",
  185. back=gear.AgiBack,waist="Eschan Stone",legs=gear.MagicLegs,feet=gear.MagicFeet}
  186.  
  187. sets.precast.WS['Wildfire'].Brew = set_combine(sets.precast.WS['Wildfire'],{})
  188.  
  189. sets.precast.WS['Leaden Salute'] = {ammo="Chrono Bullet",
  190. head=gear.MagicHead,neck="Baetyl Pendant",ear1="Friomisi Earring",ear2="Moonshade Earring",
  191. body="Laksa. Frac +3",hands="Carmine Fin. Ga. +1",ring1="Arvina Ringlet +1",ring2="Dingir Ring",
  192. back=gear.AgiBack,waist="Eschan Stone",legs=gear.MagicLegs,feet=gear.MagicFeet}
  193.  
  194.  
  195. -- Midcast Sets
  196. sets.midcast.FastRecast = {}
  197.  
  198. -- Specific spells
  199. sets.midcast.Utsusemi = sets.midcast.FastRecast
  200.  
  201. sets.midcast.Cure = {main="Chatoyant Staff",sub="Achaq Grip"}
  202.  
  203.  
  204. -- Ranged gear
  205.  
  206. sets.buff['Triple Shot'] = {ammo=gear.RAbullet,
  207. head="Meghanada Visor +1",neck="Iskur Gorget",ear1="Telos Earring",ear2="Neritic Earring",
  208. body="Chasseur's Frac +1",hands="Adhemar Wristbands",ring1="Ilabrat Ring",ring2="Dingir Ring",
  209. back=gear.AgiBack,waist="Yemaya Belt",legs="Meg. Chausses +1",feet="Meg. Jam. +1"}
  210.  
  211. sets.midcast.RA = {ammo=gear.RAbullet,
  212. head="Meghanada Visor +1",neck="Iskur Gorget",ear1="Telos Earring",ear2="Neritic Earring",
  213. body="Laksa. Frac +3",hands="Adhemar Wristbands",ring1="Ilabrat Ring",ring2="Dingir Ring",
  214. back=gear.AgiBack,waist="Yemaya Belt",legs="Meg. Chausses +1",feet="Meg. Jam. +1"}
  215.  
  216.  
  217.  
  218.  
  219. -- Sets to return to when not performing an action.
  220.  
  221. -- Resting sets
  222. sets.resting = {}
  223.  
  224.  
  225. -- Idle sets
  226. sets.idle = {main="Fettering Blade",sub="Demers. Degen +1",Range="Fomalhaut",ammo="Chrono Bullet",
  227. head="Meghanada Visor +1",neck="Twilight Torque",ear1="Sanare Earring",ear2="Ethereal Earring",
  228. body="Meg. Cuirie +1",hands=gear.DTHands,ring1="Dark Ring",ring2="Defending Ring",
  229. back="Solemnity Cape",waist="Chaac Belt",legs="Meg. Chausses +1",feet="Skadi's Jambeaux +1"}
  230.  
  231. sets.idle.SB = {main="Fettering Blade",sub="Demers. Degen +1",Range="Anarchy +2",ammo="Chrono Bullet",
  232. head="Meghanada Visor +1",neck="Twilight Torque",ear1="Sanare Earring",ear2="Ethereal Earring",
  233. body="Meg. Cuirie +1",hands=gear.DTHands,ring1="Dark Ring",ring2="Defending Ring",
  234. back="Solemnity Cape",waist="Chaac Belt",legs="Meg. Chausses +1",feet="Skadi's Jambeaux +1"}
  235.  
  236. sets.ExtraRegen = {main="Fettering Blade",sub="Demers. Degen +1",
  237. head="Ocelomeh Headpiece +1",neck="Bathy Choker +1",ear1="Sanare Earring",ear2="Ethereal Earring",
  238. body="Meg. Cuirie +1",hands=gear.DTHands,ring1="Sheltered Ring",ring2="Paguroidea Ring",
  239. back="Solemnity Cape",waist="Chaac Belt",legs="Meg. Chausses +1",feet="Skadi's Jambeaux +1"}
  240.  
  241. sets.idle.Ranged = {main="Fettering Blade",sub="Nusku Shield",Range="Fomalhaut",ammo="Chrono Bullet",
  242. head="Meghanada Visor +1",neck="Twilight Torque",ear1="Sanare Earring",ear2="Ethereal Earring",
  243. body="Meg. Cuirie +1",hands=gear.DTHands,ring1="Dark Ring",ring2="Defending Ring",
  244. back="Solemnity Cape",waist="Chaac Belt",legs="Meg. Chausses +1",feet="Skadi's Jambeaux +1"}
  245.  
  246. sets.idle.Town = {main="Fettering Blade",sub="Demers. Degen +1",Range="Fomalhaut",ammo="Chrono Bullet",
  247. head="Meghanada Visor +1",neck="Twilight Torque",ear1="Sanare Earring",ear2="Ethereal Earring",
  248. body="Councilor's Garb",hands=gear.DTHands,ring1="Dark Ring",ring2="Defending Ring",
  249. back="Solemnity Cape",waist="Chaac Belt",legs="Meg. Chausses +1",feet="Skadi's Jambeaux +1"}
  250.  
  251. -- Defense sets
  252.  
  253.  
  254.  
  255. sets.Kiting = {}
  256.  
  257. -- Engaged sets
  258.  
  259. -- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
  260. -- sets if more refined versions aren't defined.
  261. -- If you create a set with both offense and defense modes, the offense mode should be first.
  262. -- EG: sets.engaged.Dagger.Accuracy.Evasion
  263.  
  264. -- Normal melee group
  265. sets.engaged = {main="Fettering Blade",sub="Demers. Degen +1",range="Fomalhaut",ammo="Chrono Bullet",
  266. head="Dampening Tam",neck="Combatant's Torque",ear1="Telos Earring",ear2="Zennaroi Earring",
  267. body="Adhemar Jacket",hands="Floral Gauntlets",ring1="Ilabrat Ring",ring2="Epona's Ring",
  268. back=gear.StrBack,waist="Windbuffet Belt +1",legs="Meg. Chausses +1",feet=gear.TPFeet}
  269.  
  270. sets.engaged.DT = {main="Fettering Blade",sub="Demers. Degen +1",range="Fomalhaut",ammo="Chrono Bullet",
  271. head="Dampening Tam",neck="Twilight Torque",ear1="Telos Earring",ear2="Zennaroi Earring",
  272. body="Adhemar Jacket",hands=gear.DTHands,ring1="Dark Ring",ring2="Defending Ring",
  273. back="Solemnity Cape",waist="Windbuffet Belt +1",legs="Meg. Chausses +1",feet=gear.DTFeet}
  274.  
  275. sets.engaged.SB = {main="Fettering Blade",sub="Demers. Degen +1",range="Anarchy +2",ammo="Chrono Bullet",
  276. head="Dampening Tam",neck="Combatant's Torque",ear1="Telos Earring",ear2="Zennaroi Earring",
  277. body="Adhemar Jacket",hands="Floral Gauntlets",ring1="Ilabrat Ring",ring2="Epona's Ring",
  278. back=gear.StrBack,waist="Windbuffet Belt +1",legs="Meg. Chausses +1",feet=gear.TPFeet}
  279.  
  280. sets.engaged.SB.DT = {main="Fettering Blade",sub="Demers. Degen +1",range="Anarchy +2",ammo="Chrono Bullet",
  281. head="Dampening Tam",neck="Twilight Torque",ear1="Telos Earring",ear2="Zennaroi Earring",
  282. body="Adhemar Jacket",hands=gear.DTHands,ring1="Dark Ring",ring2="Defending Ring",
  283. back="Solemnity Cape",waist="Windbuffet Belt +1",legs="Meg. Chausses +1",feet=gear.DTFeet}
  284.  
  285.  
  286. sets.engaged.Ranged = {main="Fettering Blade",sub="Nusku Shield",range="Fomalhaut",ammo="Chrono Bullet",
  287. head="Meghanada Visor +1",neck="Twilight Torque",ear1="Sanare Earring",ear2="Ethereal Earring",
  288. body="Meg. Cuirie +1",hands=gear.DTHands,ring1="Dark Ring",ring2="Defending Ring",
  289. back="Solemnity Cape",waist="Windbuffet Belt +1",legs="Meg. Chausses +1",feet=gear.DTFeet}
  290.  
  291. sets.engaged.Ranged.DT = {main="Fettering Blade",sub="Nusku Shield",range="Fomalhaut",ammo="Chrono Bullet",
  292. head="Meghanada Visor +1",neck="Twilight Torque",ear1="Sanare Earring",ear2="Ethereal Earring",
  293. body="Meg. Cuirie +1",hands=gear.DTHands,ring1="Dark Ring",ring2="Defending Ring",
  294. back="Solemnity Cape",waist="Windbuffet Belt +1",legs="Meg. Chausses +1",feet=gear.DTFeet}
  295. sets.engaged.Acc = {}
  296.  
  297. organizer_items = {
  298. cards = "Trump Card"
  299. }
  300. sets.random = {neck="trump card", sub="trump card case",main="ad. bull. pouch"}
  301.  
  302. end
  303. -------------------------------------------------------------------------------------------------------------------
  304. -- Job-specific hooks for standard casting events.
  305. -------------------------------------------------------------------------------------------------------------------
  306. function job_post_midcast(spell, action, spellMap, eventArgs)
  307. if buffactive['Triple Shot'] then
  308. equip(sets.buff['Triple Shot'])
  309. end
  310. end
  311. function customize_idle_set(idleSet)
  312. if player.hpp < 95 then
  313. idleSet = set_combine(idleSet, sets.ExtraRegen)
  314. end
  315.  
  316. return idleSet
  317. end
  318.  
  319. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  320. -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
  321. function job_precast(spell, action, spellMap, eventArgs)
  322. -- gear sets
  323. if (spell.type == 'CorsairRoll' or spell.english == "Double-Up") and state.LuzafRing.value then
  324. equip(sets.precast.LuzafRing)
  325. elseif spell.type == 'CorsairShot' and state.CastingMode.value == 'Resistant' then
  326. classes.CustomClass = 'Acc'
  327. elseif spell.english == 'Fold' and buffactive['Bust'] == 2 then
  328. if sets.precast.FoldDoubleBust then
  329. equip(sets.precast.FoldDoubleBust)
  330. eventArgs.handled = true
  331. end
  332. end
  333. end
  334.  
  335.  
  336. -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
  337. function job_aftercast(spell, action, spellMap, eventArgs)
  338. if spell.type == 'CorsairRoll' and not spell.interrupted then
  339. display_roll_info(spell)
  340. end
  341. end
  342.  
  343. -------------------------------------------------------------------------------------------------------------------
  344. -- User code that supplements standard library decisions.
  345. -------------------------------------------------------------------------------------------------------------------
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352. -- Set eventArgs.handled to true if we don't want the automatic display to be run.
  353. function display_current_job_state(eventArgs)
  354. local msg = ''
  355.  
  356. msg = msg .. 'Offense: '..state.OffenseMode.current
  357. msg = msg .. ', Idle: '..state.IdleMode.current
  358. msg = msg .. ', Def: '..state.HybridMode.current
  359.  
  360.  
  361. if state.DefenseMode.value ~= 'None' then
  362. local defMode = state[state.DefenseMode.value ..'DefenseMode'].current
  363. msg = msg .. ', Defense: '..state.DefenseMode.value..' '..defMode
  364. end
  365.  
  366. if state.Kiting.value then
  367. msg = msg .. ', Kiting'
  368. end
  369.  
  370. if state.PCTargetMode.value ~= 'default' then
  371. msg = msg .. ', Target PC: '..state.PCTargetMode.value
  372. end
  373.  
  374. if state.SelectNPCTargets.value then
  375. msg = msg .. ', Target NPCs'
  376. end
  377.  
  378. add_to_chat(122, msg)
  379.  
  380. eventArgs.handled = true
  381. end
  382.  
  383.  
  384. -------------------------------------------------------------------------------------------------------------------
  385. -- Utility functions specific to this job.
  386. -------------------------------------------------------------------------------------------------------------------
  387.  
  388. function define_roll_values()
  389. rolls = {
  390. ["Corsair's Roll"] = {lucky=5, unlucky=9, bonus="Experience Points"},
  391. ["Ninja Roll"] = {lucky=4, unlucky=8, bonus="Evasion"},
  392. ["Hunter's Roll"] = {lucky=4, unlucky=8, bonus="Accuracy"},
  393. ["Chaos Roll"] = {lucky=4, unlucky=8, bonus="Attack"},
  394. ["Magus's Roll"] = {lucky=2, unlucky=6, bonus="Magic Defense"},
  395. ["Healer's Roll"] = {lucky=3, unlucky=7, bonus="Cure Potency Received"},
  396. ["Puppet Roll"] = {lucky=4, unlucky=8, bonus="Pet Magic Accuracy/Attack"},
  397. ["Choral Roll"] = {lucky=2, unlucky=6, bonus="Spell Interruption Rate"},
  398. ["Monk's Roll"] = {lucky=3, unlucky=7, bonus="Subtle Blow"},
  399. ["Beast Roll"] = {lucky=4, unlucky=8, bonus="Pet Attack"},
  400. ["Samurai Roll"] = {lucky=2, unlucky=6, bonus="Store TP"},
  401. ["Evoker's Roll"] = {lucky=5, unlucky=9, bonus="Refresh"},
  402. ["Rogue's Roll"] = {lucky=5, unlucky=9, bonus="Critical Hit Rate"},
  403. ["Warlock's Roll"] = {lucky=4, unlucky=8, bonus="Magic Accuracy"},
  404. ["Fighter's Roll"] = {lucky=5, unlucky=9, bonus="Double Attack Rate"},
  405. ["Drachen Roll"] = {lucky=3, unlucky=7, bonus="Pet Accuracy"},
  406. ["Gallant's Roll"] = {lucky=3, unlucky=7, bonus="Defense"},
  407. ["Wizard's Roll"] = {lucky=5, unlucky=9, bonus="Magic Attack"},
  408. ["Dancer's Roll"] = {lucky=3, unlucky=7, bonus="Regen"},
  409. ["Scholar's Roll"] = {lucky=2, unlucky=6, bonus="Conserve MP"},
  410. ["Bolter's Roll"] = {lucky=3, unlucky=9, bonus="Movement Speed"},
  411. ["Caster's Roll"] = {lucky=2, unlucky=7, bonus="Fast Cast"},
  412. ["Courser's Roll"] = {lucky=3, unlucky=9, bonus="Snapshot"},
  413. ["Blitzer's Roll"] = {lucky=4, unlucky=9, bonus="Attack Delay"},
  414. ["Tactician's Roll"] = {lucky=5, unlucky=8, bonus="Regain"},
  415. ["Allies's Roll"] = {lucky=3, unlucky=10, bonus="Skillchain Damage"},
  416. ["Miser's Roll"] = {lucky=5, unlucky=7, bonus="Save TP"},
  417. ["Companion's Roll"] = {lucky=2, unlucky=10, bonus="Pet Regain and Regen"},
  418. ["Avenger's Roll"] = {lucky=4, unlucky=8, bonus="Counter Rate"},
  419. }
  420. end
  421.  
  422. function display_roll_info(spell)
  423. rollinfo = rolls[spell.english]
  424. local rollsize = (state.LuzafRing.value and 'Large') or 'Small'
  425.  
  426. if rollinfo then
  427. add_to_chat(104, spell.english..' provides a bonus to '..rollinfo.bonus..'. Roll size: '..rollsize)
  428. add_to_chat(104, 'Lucky roll is '..tostring(rollinfo.lucky)..', Unlucky roll is '..tostring(rollinfo.unlucky)..'.')
  429. end
  430. end
  431.  
  432.  
  433. -- Select default macro book on initial load or subjob change.
  434. function select_default_macro_book()
  435. set_macro_page(1, 11)
  436. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement