Guest User

Untitled

a guest
Dec 20th, 2014
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.04 KB | None | 0 0
  1.  
  2.  
  3. function get_sets()
  4. AccIndex = 1
  5. AccArray = {"LowACC","MidACC","HighACC"} -- 3 Levels Of Accuracy Sets For TP/WS/Hybrid. Default ACC Set Is LowACC. The First TP Set Of Your Main Weapon Is LowACC. Add More ACC Sets If Needed Then Create Your New ACC Below --
  6. WeaponIndex = 1
  7. WeaponArray = {"Izhiikoh","Sandung"} -- Default Sub Weapon Is Izhiikoh. Can Delete Any Weapons/Sets That You Don't Need Or Replace/Add The New Weapons That You Want To Use. --
  8. IdleIndex = 1
  9. IdleArray = {"Movement","Regen"} -- Default Idle Set Is Movement --
  10. SA = false
  11. TA = false
  12. TH = 'OFF' -- Set Default Full TH ON or OFF Here --
  13. Rancor = 'OFF' -- Set Default Rancor ON or OFF Here --
  14. target_distance = 6 -- Set Default Distance Here --
  15. select_default_macro_book() -- Change Default Macro Book At The End --
  16.  
  17. sc_map = {SC1="Exenterator", SC2="HasteSamba", SC3="Ranged"} -- 3 Additional Binds. Can Change Whatever JA/WS/Spells You Like Here. Remember Not To Use Spaces. --
  18.  
  19. -- Idle/Town Sets --
  20. sets.Idle = {}
  21. sets.Idle.Regen = {
  22. range="Raider's Bmrng.",
  23. head="Oce. Headpiece +1",
  24. neck="Wiglen Gorget",
  25. ear1="Colossus's Earring",
  26. ear2="Sanare Earring",
  27. body="Kheper Jacket",
  28. hands="Iuitl Wristbands",
  29. ring1="Paguroidea Ring",
  30. ring2="Sheltered Ring",
  31. back="Shadow Mantle",
  32. waist="Flume Belt",
  33. legs="Iuitl tights",
  34. feet="Skd. Jambeaux +1"}
  35. sets.Idle.Regen.Izhiikoh = set_combine(sets.Idle.Regen,{
  36. main="Izhiikoh",
  37. sub="Sandung"})
  38. sets.Idle.Regen.Sandung = set_combine(sets.Idle.Regen,{
  39. main="Izhiikoh",
  40. sub="Sandung"})
  41.  
  42. sets.Idle.Movement = set_combine(sets.Idle.Regen,{
  43. range="Raider's Bmrng.",
  44. head="Oce. Headpiece +1",
  45. neck="Wiglen Gorget",
  46. ear1="Colossus's Earring",
  47. ear2="Sanare Earring",
  48. body="Kheper Jacket",
  49. hands="Iuitl Wristbands",
  50. ring1="Paguroidea Ring",
  51. ring2="Sheltered Ring",
  52. back="Shadow Mantle",
  53. waist="Flume Belt",
  54. legs="Iuitl tights",
  55. feet="Skd. Jambeaux +1"})
  56. sets.Idle.Movement.Izhiikoh = set_combine(sets.Idle.Movement,{
  57. main="Izhiikoh",
  58. sub="Sandung"})
  59. sets.Idle.Movement.Sandung = set_combine(sets.Idle.Movement,{
  60. main="Izhiikoh",
  61. sub="Sandung"})
  62.  
  63. -- Normal TP Sets --
  64. sets.TP = {
  65. head="Felistris Mask",
  66. neck="Asperity Necklace",
  67. ear1="Dudgeon Earring",
  68. ear2="Heartseeker Earring",
  69. body="Thaumas Coat",
  70. hands="Pill. Armlets +1",
  71. ring1="Epona's Ring",
  72. ring2="Rajas Ring",
  73. back="Canny Cape",
  74. waist="Shetal Stone",
  75. legs="Iuitl Tights",
  76. feet="Plun. Poulaines +1"}
  77. sets.TP.MidACC = set_combine(sets.TP,{
  78. neck="Iqabi Necklace",
  79. body="Qaaxo Harness",
  80. ring2="Ramuh Ring +1",
  81. hands="Buremte Gloves",
  82. back="Letalis Mantle",
  83. feet="Manibozho Boots"})
  84. sets.TP.HighACC = set_combine(sets.TP.MidACC,{
  85. head="Whirlpool Mask",})
  86.  
  87.  
  88. -- March x2 + Haste --
  89. sets.TP.MidHaste = set_combine(sets.TP,{
  90. ear1="Suppanomimi",
  91. ear2="Brutal Earring",
  92. back="Bleating Mantle",
  93. waist="Windbuffet Belt +1",
  94. body="Qaaxo Harness"})
  95. sets.TP.MidACC.MidHaste = set_combine(sets.TP.MidHaste,{
  96. neck="Iqabi Necklace",
  97. ear1="Suppanomimi",
  98. ring2="Ramuh Ring +1",
  99. ear2="Brutal Earring",
  100. body="Qaaxo Harness",
  101. back="Letalis Mantle"})
  102. sets.TP.HighACC.MidHaste = set_combine(sets.TP.MidACC.MidHaste,{
  103. head="Whirlpool Mask",
  104. waist="Olseni Belt"})
  105.  
  106. -- March x2 + Haste + Samba --
  107. sets.TP.HighHaste = set_combine(sets.TP.MidHaste,{
  108. ear1="Suppanomimi",
  109. back="Bleating Mantle",
  110. body="Qaaxo Harness",
  111. ear2="Brutal Earring",
  112. waist="Windbuffet Belt +1"})
  113. sets.TP.MidACC.HighHaste = set_combine(sets.TP.HighHaste,{
  114. neck="Iqabi Necklace",
  115. ear1="Suppanomimi",
  116. ring2="Ramuh Ring +1",
  117. ear2="Brutal Earring",
  118. body="Qaaxo Harness",
  119. back="Letalis Mantle"})
  120.  
  121. sets.TP.HighACC.MidHaste = set_combine(sets.TP.MidACC.MidHaste,{
  122. head="Whirlpool Mask",
  123. body="Qaaxo Harness",
  124. ring1="Mars's Ring"})
  125.  
  126. -- Full TH TP Set --
  127. sets.TP.TH = {
  128. hands="Plun. Armlets +1",
  129. waist="Chaac Belt"}
  130.  
  131. sets.TP.RangedTH = {
  132. head="Umbani Cap",
  133. neck="Iqabi Necklace",
  134. body="Mekosu. Harness",
  135. ear1="Volley Earring",
  136. feet="Scopuli Nails +1",
  137. ear2="Clearview Earring",
  138. ring1="Hajduk Ring",
  139. ring2="Paqichikaji Ring",
  140. back="Thall Mantle",
  141. legs="Thur. Tights +1",
  142. hands="Plun. Armlets +1",
  143. waist="Chaac Belt"}
  144.  
  145. sets.TP.StepsTH = {
  146. head="Whirlpool Mask",
  147. neck="Iqabi Necklace",
  148. body="Qaaxo Harness",
  149. back="Letalis Mantle",
  150. legs="Manibozho Brais",
  151. hands="Plun. Armlets +1",
  152. waist="Chaac Belt"}
  153.  
  154.  
  155. -- TP Rancor ON Neck --
  156. sets.TP.Rancor = {neck="Rancor Collar"}
  157.  
  158. -- PDT/MDT Sets --
  159. sets.PDT = {
  160. head="Felistris Mask",
  161. neck="Twilight Torque",
  162. ear1="Heartseeker Earring",
  163. ear2="Dudgeon Earring",
  164. body="Qaaxo Harness",
  165. hands="Pill. Armlets +1",
  166. ring1="Dark Ring",
  167. ring2="Defending Ring",
  168. back="Mollusca Mantle",
  169. waist="Windbuffet Belt +1",
  170. legs="Pill. Culottes +1",
  171. feet="Plun. Poulaines +1"}
  172.  
  173. sets.MDT = set_combine(sets.PDT,{
  174. ear1="Merman's Earring",
  175. ear2="Sanare Earring",
  176. ring1="Shadow Ring",
  177. back="Engulfer Cape",
  178. waist="Resolute Belt"})
  179.  
  180. -- Hybrid/Evasion Sets --
  181. sets.TP.Hybrid = set_combine(sets.PDT,{
  182. head="Iuitl Headgear +1",
  183. neck="Twilight Torque",
  184. ear1="Heartseeker Earring",
  185. ear2="Dudgeon Earring",
  186. body="Iuitl Vest +1",
  187. hands="Iuitl Wristbands",
  188. ring1="Dark Ring",
  189. ring2="Defending Ring",
  190. back="Mollusca Mantle",
  191. waist="Hurch'lan sash",
  192. legs="Iuitl Tights",
  193. feet="Iuitl Gaiters"})
  194. sets.TP.Hybrid.MidACC = set_combine(sets.TP.Hybrid,{})
  195. sets.TP.Hybrid.HighACC = set_combine(sets.TP.Hybrid.MidACC,{})
  196.  
  197. sets.Evasion = set_combine(sets.PDT,{})
  198.  
  199. -- WS Base Set --
  200. sets.WS = {}
  201.  
  202. -- WS Sets --
  203. sets.WS["Mercy Stroke"] = {
  204. head="Whirlpool Mask",
  205. neck="Justiciar's Torque",
  206. ear1="Steelflash Earring",
  207. ear2="Bladeborn Earring",
  208. body="Khepri Jacket",
  209. hands="Pill. Armlets +1",
  210. ring1="Epona's Ring",
  211. ring2="Pyrosoul Ring",
  212. back="Buquwik Cape",
  213. waist="Chiner Belt +1",
  214. legs="Nahtirah Trousers",
  215. feet="Plun. Poulaines +1"}
  216. sets.WS["Mercy Stroke"].SA = {
  217. head="Pill. Bonnet +1",
  218. neck="Soil Gorget",
  219. ear1="Vulcan's Pearl",
  220. ear2="Vulcan's Pearl",
  221. body="Pillager's Vest +1",
  222. hands="Raider's Armlets +2",
  223. ring1="Pyrosoul Ring",
  224. ring2="Rajas Ring",
  225. back="Buquwik Cape",
  226. waist="Chiner Belt +1",
  227. legs="Pill. Culottes +1",
  228. feet="Plun. Poulaines +1"}
  229. sets.WS["Mercy Stroke"].TA = {
  230. head="Pill. Bonnet +1",
  231. neck="Soil Gorget",
  232. ear1="Vulcan's Pearl",
  233. ear2="Vulcan's Pearl",
  234. body="Pillager's Vest +1",
  235. hands="Pill. Armlets +1",
  236. ring1="Pyrosoul Ring",
  237. ring2="Rajas Ring",
  238. back="Buquwik Cape",
  239. waist="Soil Belt",
  240. legs="Pill. Culottes +1",
  241. feet="Plun. Poulaines +1"}
  242.  
  243. sets.WS.Exenterator = {
  244. head="Felistris Mask",
  245. neck="Justiciar's Torque",
  246. ear1="Steelflash Earring",
  247. ear2="Bladeborn Earring",
  248. body="Pillager's Vest +1",
  249. hands="Pill. Armlets +1",
  250. ring1="Stormsoul Ring",
  251. ring2="Epona's Ring",
  252. back="Canny Cape",
  253. waist="Elanid Belt",
  254. legs="Nahtirah Trousers",
  255. feet="Plun. Poulaines +1"}
  256. sets.WS.Exenterator.SA = set_combine(sets.WS.Exenterator,{head="Pill. Bonnet +1",legs="Pill. Culottes +1"})
  257. sets.WS.Exenterator.TA = set_combine(sets.WS.Exenterator,{head="Pill. Bonnet +1",legs="Pill. Culottes +1"})
  258.  
  259. sets.WS.Evisceration = {
  260. head="Whirlpool Mask",
  261. neck="Soil Gorget",
  262. ear1="Moonshade Earring",
  263. ear2="Brutal Earring",
  264. body="Plunderer's Vest +1",
  265. hands="Pill. Armlets +1",
  266. ring1="Epona's Ring",
  267. ring2="Ramuh Ring +1",
  268. back="Rancorous Mantle",
  269. waist="Chiner Belt +1",
  270. legs="Pill. Culottes +1",
  271. feet="Plun. Poulaines +1"}
  272. sets.WS.Evisceration.SA = set_combine(sets.WS.Evisceration,{hands="Pill. Armlets +1", head="Uk'uxkaj Cap"})
  273. sets.WS.Evisceration.TA = set_combine(sets.WS.Evisceration,{head="Uk'uxkaj Cap"})
  274.  
  275. sets.WS["Rudra's Storm"] = {
  276. head="Pill. Bonnet +1",
  277. neck="Snow Gorget",
  278. ear1="Moonshade Earring",
  279. ear2="Jupiter's Pearl",
  280. body="Plunderer's Vest +1",
  281. hands="Pill. Armlets +1",
  282. ring1="Epona's Ring",
  283. ring2="Ramuh Ring +1",
  284. back="Canny Cape",
  285. waist="Chiner Belt +1",
  286. legs="Pill. Culottes +1",
  287. feet="Plun. Poulaines +1"}
  288. sets.WS["Rudra's Storm"].SA = set_combine(sets.WS["Rudra's Storm"],{hands="Pill. Armlets +1"})
  289. sets.WS["Rudra's Storm"].TA = set_combine(sets.WS["Rudra's Storm"],{})
  290.  
  291. sets.WS["Aeolian Edge"] = {
  292. back="Toro cape",
  293. waist="Aquiline Belt",
  294. legs="Iuitl Tights",
  295. ear1="Friomisi Earring",
  296. ear2="Crematio Earring",
  297. neck="Stoicheion Medal",
  298. ring1="Shiva ring +1",
  299. ring2="Shiva ring +1",
  300. body="Mekosu. Harness",
  301. feet="Qaaxo Leggings",
  302. hands="Khepri Wristbands",
  303. head="Highwing Helm"}
  304.  
  305. sets.WS["Mandalic Stab"] = {
  306. head="Pill. Bonnet +1",
  307. neck="Flame Gorget",
  308. ear1="Moonshade Earring",
  309. ear2="Jupiter's Pearl",
  310. body="Plunderer's Vest +1",
  311. hands="Pill. Armlets +1",
  312. ring1="Epona's Ring",
  313. ring2="Ramuh Ring +1",
  314. back="Canny Cape",
  315. waist="Chiner Belt +1",
  316. legs="Pill. Culottes +1",
  317. feet="Plun. Poulaines +1"}
  318.  
  319. -- JA Sets --
  320. sets.JA = {}
  321. TH_Gear = {hands="Plun. Armlets +1",feet="Raid. Poulaines +2"}
  322. sets.JA.Conspirator = {body="Raider's Vest +2"}
  323. sets.JA.Accomplice = {head="Raid. Bonnet +2"}
  324. sets.JA.Collaborator = {head="Raid. Bonnet +2"}
  325. sets.JA["Perfect Dodge"] = {hands="Plun. Armlets +1"}
  326. sets.JA.Steal = {hands="Pill. Armlets +1",legs="Pill. Culottes +1",feet="Pill. Poulaines +1"}
  327. sets.JA.Flee = {feet="Pill. Poulaines +1"}
  328. sets.JA.Despoil = {legs="Raid. Culottes +2",feet="Raid. Poulaines +2"}
  329. sets.JA.Mug = {head="Plun. Bonnet +1"}
  330. sets.JA.Hide = {body="Pillager's Vest +1"}
  331. sets.JA.Provoke = TH_Gear
  332. sets.JA["Sneak Attack"] = {
  333. head="Pill. Bonnet +1",
  334. body="Plunderer's Vest +1",
  335. hands="Pill. Armlets +1",
  336. legs="Pill. Culottes +1",
  337. feet="Plun. Poulaines +1"}
  338. sets.JA["Trick Attack"] = set_combine(sets.JA["Sneak Attack"],{hands="Pill. Armlets +1"})
  339.  
  340. -- Step Set --
  341. sets.Step = set_combine({},sets.TP.StepsTH)
  342.  
  343. -- Flourish Set --
  344. sets.Flourish = set_combine({},sets.TP.StepsTH)
  345.  
  346. -- Waltz Set --
  347. sets.Waltz = {
  348. head="Khepri Bonnet"}
  349.  
  350. sets.Precast = {}
  351. -- Fastcast Set --
  352. sets.Precast.FastCast = {
  353. head="Haruspex Hat +1",
  354. neck="Orunmila's Torque",
  355. ear1="Loquac. Earring",
  356. ear2="Enchantr. Earring +1",
  357. hands="Thaumas Gloves",
  358. ring1="Prolix Ring",
  359. ring2="Veneficium Ring",
  360. legs="Enif Cosciales"}
  361. -- Utsusemi Precast Set --
  362. sets.Precast.Utsusemi = set_combine(sets.Precast.FastCast,{neck="Magoraga Beads"})
  363.  
  364. sets.Midcast = {}
  365. -- Magic Haste Set --
  366. sets.Midcast.Haste = set_combine(sets.PDT,{})
  367. end
  368.  
  369. function pretarget(spell,action)
  370. if (spell.type:endswith('Magic') or spell.type == "Ninjutsu") and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
  371. cancel_spell()
  372. send_command('input /item "Echo Drops" <me>')
  373. elseif spell.english == "Berserk" and buffactive.Berserk then -- Change Berserk To Aggressor If Berserk Is On --
  374. cancel_spell()
  375. send_command('Aggressor')
  376. elseif (spell.english == 'Ranged' and spell.target.distance > 24.9) or (spell.type == "WeaponSkill" and spell.target.distance > target_distance and player.status == 'Engaged') then -- Cancel Ranged Attack or WS If You Are Out Of Range --
  377. cancel_spell()
  378. add_to_chat(123, spell.name..' Canceled: [Out of Range]')
  379. return
  380. end
  381. end
  382.  
  383. function precast(spell,action)
  384. if spell.type == "WeaponSkill" then
  385. if player.status ~= 'Engaged' then -- Cancel WS If You Are Not Engaged. Can Delete It If You Don't Need It --
  386. cancel_spell()
  387. add_to_chat(123,'Unable To Use WeaponSkill: [Disengaged]')
  388. return
  389. else
  390. equipSet = sets.WS
  391. if equipSet[spell.english] then
  392. equipSet = equipSet[spell.english]
  393. end
  394. if SA and equipSet["SA"] then
  395. equipSet = equipSet["SA"]
  396. end
  397. if TA and equipSet["TA"] then
  398. equipSet = equipSet["TA"]
  399. end
  400. if spell.english == "Evisceration" and player.tp > 2999 then -- Equip Jupiter's Pearl When You Have 300 TP --
  401. equipSet = set_combine(equipSet,{ear1="Jupiter's Pearl"})
  402. end
  403. equip(equipSet)
  404. end
  405. elseif spell.type=="JobAbility" then
  406. if sets.JA[spell.english] then
  407. equip(sets.JA[spell.english])
  408. end
  409. if spell.english=="Sneak Attack" then
  410. SA = true
  411. end
  412. if spell.english=="Trick Attack" then
  413. TA = true
  414. end
  415. elseif spell.type:endswith('Magic') or spell.type == "Ninjutsu" then
  416. if string.find(spell.english,'Utsusemi') then
  417. if buffactive['Copy Image (3)'] or buffactive['Copy Image (4)'] then
  418. cancel_spell()
  419. add_to_chat(123, spell.name .. ' Canceled: [3+ Images]')
  420. return
  421. else
  422. equip(sets.Precast.Utsusemi)
  423. end
  424. else
  425. equip(sets.Precast.FastCast)
  426. end
  427. elseif spell.type == 'Step' then
  428. equip(sets.Step)
  429. elseif string.find(spell.type,'Flourish') then
  430. equip(sets.Flourish)
  431. elseif spell.type == "Waltz" then
  432. refine_waltz(spell,action)
  433. equip(sets.Waltz)
  434. elseif spell.english == 'Spectral Jig' and buffactive.Sneak then
  435. cast_delay(0.2)
  436. send_command('cancel Sneak')
  437. end
  438. end
  439.  
  440. function midcast(spell,action)
  441. if spell.english == 'Ranged' then
  442. equip(sets.TP.RangedTH)
  443. elseif spell.type:endswith('Magic') or spell.type == "Ninjutsu" then
  444. if string.find(spell.english,'Utsusemi') then
  445. if spell.english == 'Utsusemi: Ichi' and (buffactive['Copy Image'] or buffactive['Copy Image (2)']) then
  446. send_command('@wait 1.7;cancel Copy Image*')
  447. end
  448. equip(sets.Midcast.Haste)
  449. elseif spell.english == 'Monomi: Ichi' then
  450. if buffactive['Sneak'] then
  451. send_command('@wait 1.7;cancel sneak')
  452. end
  453. equip(sets.Midcast.Haste)
  454. else
  455. equip(sets.Midcast.Haste)
  456. end
  457. end
  458. end
  459.  
  460. function aftercast(spell,action)
  461. if spell.type == "WeaponSkill" and not spell.interrupted then
  462. send_command('wait 0.2;gs c TP')
  463. end
  464. status_change(player.status)
  465. end
  466.  
  467. function status_change(new,old)
  468. if player.equipment.range ~= 'empty' then
  469. disable('range','ammo')
  470. else
  471. enable('range','ammo')
  472. end
  473. if Armor == 'PDT' then
  474. equip(sets.PDT)
  475. elseif Armor == 'MDT' then
  476. equip(sets.MDT)
  477. elseif Armor == 'EVA' then
  478. equip(sets.Evasion)
  479. elseif new == 'Engaged' then
  480. equipSet = sets.TP
  481. if Armor == 'Hybrid' and equipSet["Hybrid"] then
  482. equipSet = equipSet["Hybrid"]
  483. end
  484. if equipSet[AccArray[AccIndex]] then
  485. equipSet = equipSet[AccArray[AccIndex]]
  486. end
  487. if buffactive.March == 2 or buffactive.March == 1 and (buffactive.Embrava or buffactive.Haste) and equipSet["HighHaste"] then
  488. equipSet = equipSet["HighHaste"]
  489. end
  490.  
  491. if SA then
  492. equipSet = set_combine(equipSet,sets.JA["Sneak Attack"])
  493. end
  494.  
  495. if buffactive['Reive Mark'] and player.hpp <= 50 then
  496. equip({neck="Adoulin's Refuge"})
  497. end
  498. if TA then
  499. equipSet = set_combine(equipSet,sets.JA["Trick Attack"])
  500. end
  501. if Rancor == 'ON' then -- Use Rancor Toggle For Rancor Collar --
  502. equipSet = set_combine(equipSet,sets.TP.Rancor)
  503. end
  504. if TH == 'ON' then -- Use TH Toggle To Lock Full TH Set --
  505. equipSet = set_combine(equipSet,sets.TP.TH)
  506. end
  507. equip(equipSet)
  508. else
  509. equipSet = sets.Idle
  510. if equipSet[IdleArray[IdleIndex]] then
  511. equipSet = equipSet[IdleArray[IdleIndex]]
  512. end
  513. if equipSet[WeaponArray[WeaponIndex]] then
  514. equipSet = equipSet[WeaponArray[WeaponIndex]]
  515. end
  516. equip(equipSet)
  517. end
  518. end
  519.  
  520. function buff_change(buff,gain)
  521. buff = string.lower(buff)
  522. if buff == "sneak attack" then
  523. SA = gain
  524. elseif buff == "trick attack" then
  525. TA = gain
  526. elseif buff == 'weakness' then -- Weakness Timer --
  527. if gain then
  528. send_command('timers create "Weakness" 300 up')
  529. else
  530. send_command('timers delete "Weakness"')
  531. end
  532. end
  533. if not midaction() then
  534. status_change(player.status)
  535. end
  536. end
  537.  
  538. -- In Game: //gs c (command), Macro: /console gs c (command), Bind: gs c (command) --
  539. function self_command(command)
  540. if command == 'C1' then -- Accuracy Level Toggle --
  541. AccIndex = (AccIndex % #AccArray) + 1
  542. status_change(player.status)
  543. add_to_chat(158,'Accuracy Level: ' .. AccArray[AccIndex])
  544. elseif command == 'C17' then -- Main Weapon Toggle --
  545. WeaponIndex = (WeaponIndex % #WeaponArray) + 1
  546. add_to_chat(158,'Main Weapon: '..WeaponArray[WeaponIndex])
  547. status_change(player.status)
  548. elseif command == 'C5' then -- Auto Update Gear Toggle --
  549. status_change(player.status)
  550. add_to_chat(158,'Auto Update Gear')
  551. elseif command == 'C2' then -- Hybrid Toggle --
  552. if Armor == 'Hybrid' then
  553. Armor = 'None'
  554. add_to_chat(123,'Hybrid Set: [Unlocked]')
  555. else
  556. Armor = 'Hybrid'
  557. add_to_chat(158,'Hybrid Set: '..AccArray[AccIndex])
  558. end
  559. status_change(player.status)
  560. elseif command == 'C9' then -- Full TH Set Toggle --
  561. if TH == 'ON' then
  562. TH = 'OFF'
  563. add_to_chat(123,'Full TH Set: [Unlocked]')
  564. else
  565. TH = 'ON'
  566. add_to_chat(158,'Full TH Set: [Locked]')
  567. end
  568. status_change(player.status)
  569. elseif command == 'C7' then -- PDT Toggle --
  570. if Armor == 'PDT' then
  571. Armor = 'None'
  572. add_to_chat(123,'PDT Set: [Unlocked]')
  573. else
  574. Armor = 'PDT'
  575. add_to_chat(158,'PDT Set: [Locked]')
  576. end
  577. status_change(player.status)
  578. elseif command == 'C15' then -- MDT Toggle --
  579. if Armor == 'MDT' then
  580. Armor = 'None'
  581. add_to_chat(123,'MDT Set: [Unlocked]')
  582. else
  583. Armor = 'MDT'
  584. add_to_chat(158,'MDT Set: [Locked]')
  585. end
  586. status_change(player.status)
  587. elseif command == 'C3' then -- Evasion Toggle --
  588. if Armor == 'EVA' then
  589. Armor = 'None'
  590. add_to_chat(123,'Evasion Set: [Unlocked]')
  591. else
  592. Armor = 'EVA'
  593. add_to_chat(158,'Evasion Set: [Locked]')
  594. end
  595. status_change(player.status)
  596. elseif command == 'C16' then -- Rancor Toggle --
  597. if Rancor == 'ON' then
  598. Rancor = 'OFF'
  599. add_to_chat(123,'Rancor: [OFF]')
  600. else
  601. Rancor = 'ON'
  602. add_to_chat(158,'Rancor: [ON]')
  603. end
  604. status_change(player.status)
  605. elseif command == 'C8' then -- Distance Toggle --
  606. if player.target.distance then
  607. target_distance = math.floor(player.target.distance*10)/10
  608. add_to_chat(158,'Distance: '..target_distance)
  609. else
  610. add_to_chat(123,'No Target Selected')
  611. end
  612. elseif command == 'C6' then -- Idle Toggle --
  613. IdleIndex = (IdleIndex % #IdleArray) + 1
  614. status_change(player.status)
  615. add_to_chat(158,'Idle Set: ' .. IdleArray[IdleIndex])
  616. elseif command == 'TP' then
  617. add_to_chat(158,'TP Return: ['..tostring(player.tp)..']')
  618. elseif command:match('^SC%d$') then
  619. send_command('//' .. sc_map[command])
  620. end
  621. end
  622.  
  623. function refine_waltz(spell,action)
  624. if spell.type ~= 'Waltz' then
  625. return
  626. end
  627.  
  628. if spell.name == "Healing Waltz" or spell.name == "Divine Waltz" or spell.name == "Divine Waltz II" then
  629. return
  630. end
  631.  
  632. local newWaltz = spell.english
  633. local waltzID
  634.  
  635. local missingHP
  636.  
  637. if spell.target.type == "SELF" then
  638. missingHP = player.max_hp - player.hp
  639. elseif spell.target.isallymember then
  640. local target = find_player_in_alliance(spell.target.name)
  641. local est_max_hp = target.hp / (target.hpp/100)
  642. missingHP = math.floor(est_max_hp - target.hp)
  643. end
  644.  
  645. if missingHP ~= nil then
  646. if player.sub_job == 'DNC' then
  647. if missingHP < 40 and spell.target.name == player.name then
  648. add_to_chat(123,'Full HP!')
  649. cancel_spell()
  650. return
  651. elseif missingHP < 150 then
  652. newWaltz = 'Curing Waltz'
  653. waltzID = 190
  654. elseif missingHP < 300 then
  655. newWaltz = 'Curing Waltz II'
  656. waltzID = 191
  657. else
  658. newWaltz = 'Curing Waltz III'
  659. waltzID = 192
  660. end
  661. else
  662. return
  663. end
  664. end
  665.  
  666. local waltzTPCost = {['Curing Waltz'] = 20, ['Curing Waltz II'] = 35, ['Curing Waltz III'] = 50, ['Curing Waltz IV'] = 65, ['Curing Waltz V'] = 80}
  667. local tpCost = waltzTPCost[newWaltz]
  668.  
  669. local downgrade
  670.  
  671. if player.tp < tpCost and not buffactive.trance then
  672.  
  673. if player.tp < 200 then
  674. add_to_chat(123, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.')
  675. cancel_spell()
  676. return
  677. elseif player.tp < 350 then
  678. newWaltz = 'Curing Waltz'
  679. elseif player.tp < 500 then
  680. newWaltz = 'Curing Waltz II'
  681. elseif player.tp < 650 then
  682. newWaltz = 'Curing Waltz III'
  683. elseif player.tp < 800 then
  684. newWaltz = 'Curing Waltz IV'
  685. end
  686.  
  687. downgrade = 'Insufficient TP ['..tostring(player.tp)..']. Downgrading to '..newWaltz..'.'
  688. end
  689.  
  690. if newWaltz ~= spell.english then
  691. send_command('@input /ja "'..newWaltz..'" '..tostring(spell.target.raw))
  692. if downgrade then
  693. add_to_chat(158, downgrade)
  694. end
  695. cancel_spell()
  696. return
  697. end
  698.  
  699. if missingHP > 0 then
  700. add_to_chat(158,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.')
  701. end
  702. end
  703.  
  704. function find_player_in_alliance(name)
  705. for i,v in ipairs(alliance) do
  706. for k,p in ipairs(v) do
  707. if p.name == name then
  708. return p
  709. end
  710. end
  711. end
  712. end
  713.  
  714. function sub_job_change(newSubjob, oldSubjob)
  715. select_default_macro_book()
  716. end
  717.  
  718. function set_macro_page(set,book)
  719. if not tonumber(set) then
  720. add_to_chat(123,'Error setting macro page: Set is not a valid number ('..tostring(set)..').')
  721. return
  722. end
  723. if set < 1 or set > 10 then
  724. add_to_chat(123,'Error setting macro page: Macro set ('..tostring(set)..') must be between 1 and 10.')
  725. return
  726. end
  727.  
  728. if book then
  729. if not tonumber(book) then
  730. add_to_chat(123,'Error setting macro page: book is not a valid number ('..tostring(book)..').')
  731. return
  732. end
  733. if book < 1 or book > 20 then
  734. add_to_chat(123,'Error setting macro page: Macro book ('..tostring(book)..') must be between 1 and 20.')
  735. return
  736. end
  737. send_command('@input /macro book '..tostring(book)..';wait .1;input /macro set '..tostring(set))
  738. else
  739. send_command('@input /macro set '..tostring(set))
  740. end
  741. end
  742.  
  743. function select_default_macro_book()
  744. -- Default macro set/book
  745. if player.sub_job == 'WAR' then
  746. set_macro_page(1, 12)
  747. elseif player.sub_job == 'DNC' then
  748. set_macro_page(1, 12)
  749. elseif player.sub_job == 'NIN' then
  750. set_macro_page(1, 12)
  751. else
  752. set_macro_page(1, 12)
  753. end
  754. end
Advertisement
Add Comment
Please, Sign In to add comment