Guest User

Untitled

a guest
Jul 8th, 2016
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 82.49 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Last Revised: June 20th, 2016
  3. -- Added Verda's pet_tp function to the lua.
  4. -- Acid Spray was missing from the magic_atk_ready list.
  5. -- Added a call_beast_cancel list to prevent usage of HQ jug pets with Call Beast.
  6. -- Moved pet_midcast rules to job_aftercast.
  7. -- Added rules for PetOnly idle Axe swaps (TP, PDT, MDT, Idle).
  8. -- Added Random Lockstyle Generator - set RandomLockstyleGenerator to 'false' to disable.
  9. -- Added on-screen indicators for Modes [requires the Text add-on] - set DisplayModeInfo to 'false' to disable
  10. -- Added Buff Timers for Reward, Spur, Run Wild - set DisplayPetBuffTimers to 'false' to disable
  11. --
  12. -- Gearswap Commands Specific to this File:
  13. -- Universal Ready Move Commands -
  14. -- //gs c Ready one
  15. -- //gs c Ready two
  16. -- //gs c Ready three
  17. --
  18. -- alt+F8 cycles through designated Jug Pets
  19. -- ctrl+F8 toggles Monster Correlation between Neutral and Favorable
  20. -- 'Windows Key'+F8 switches between Pet stances for Master/Pet hybrid gearsets
  21. -- ctrl+= can swap in the usage of Chaac Belt for Treasure Hunter on common subjob abilities.
  22. -- ctrl+F11 cycles between Magical Defense Modes
  23. --
  24. -- General Gearswap Commands:
  25. -- F9 cycles Accuracy modes
  26. -- ctrl+F9 cycles Hybrid modes
  27. -- 'Windows Key'+F9 cycles Weapon Skill modes
  28. -- F10 equips Physical Defense
  29. -- alt+F10 toggles Kiting on or off
  30. -- ctrl+F10 cycles Physical Defense modes
  31. -- F11 equips Magical Defense
  32. -- alt+F12 turns off Defense modes
  33. -- ctrl+F12 cycles Idle modes
  34. --
  35. -- Keep in mind that any time you Change Jobs/Subjobs, your Pet/Correlation/etc reset to default options.
  36. -- F12 will list your current options.
  37. -------------------------------------------------------------------------------------------------------------------
  38.  
  39. -------------------------------------------------------------------------------------------------------------------
  40. -- Initialization function that defines sets and variables to be used.
  41. -------------------------------------------------------------------------------------------------------------------
  42.  
  43. -- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
  44.  
  45. -- Initialization function for this job file.
  46. function get_sets()
  47. mote_include_version = 2
  48.  
  49. -- Load and initialize the include file.
  50. include('Mote-Include.lua')
  51. end
  52.  
  53. function job_setup()
  54. -- Display and Random Lockstyle Generator options
  55. DisplayPetBuffTimers = 'true'
  56. DisplayModeInfo = 'true'
  57. RandomLockstyleGenerator = 'true'
  58.  
  59. PetName = 'None';PetJob = 'None';PetInfo = 'None';ReadyMoveOne = 'None';ReadyMoveTwo = 'None';ReadyMoveThree = 'None'
  60. pet_info_update()
  61.  
  62. -- Input Pet:TP Bonus values for Skirmish Axes used during Pet Buffs
  63. TP_Bonus_Main = 180
  64. TP_Bonus_Sub = 0
  65.  
  66. -- 1200 Job Point Gift Bonus (Set equal to 0 if below 1200 Job Points)
  67. TP_Gift_Bonus = 0
  68.  
  69. -- (Adjust Run Wild Duration based on # of Job Points)
  70. RunWildDuration = 340;RunWildIcon = 'abilities/00121.png'
  71. RewardRegenIcon = 'spells/00023.png'
  72. SpurIcon = 'abilities/00037.png'
  73. BubbleCurtainDuration = 180;BubbleCurtainIcon = 'spells/00048.png'
  74. ScissorGuardIcon = 'spells/00043.png'
  75. SecretionIcon = 'spells/00053.png'
  76. RageIcon = 'abilities/00002.png'
  77. RhinoGuardIcon = 'spells/00053.png'
  78. ZealousSnortIcon = 'spells/00057.png'
  79.  
  80. -- Display Mode Info as on-screen Text
  81. TextBoxX = 1075
  82. TextBoxY = 47
  83. TextSize = 10
  84. display_mode_info()
  85.  
  86. -- List of Equipment Sets created for Random Lockstyle Generator
  87. -- (If you want to have the same Lockstyle every time, reduce the list to a single Equipset #)
  88. random_lockstyle_list = {1,2,3,4,7,8,10,13,14,15,16,17}
  89.  
  90. state.Buff['Aftermath: Lv.3'] = buffactive['Aftermath: Lv.3'] or false
  91. state.Buff['Killer Instinct'] = buffactive['Killer Instinct'] or false
  92.  
  93. get_combat_form()
  94. get_melee_groups()
  95. end
  96.  
  97. function user_setup()
  98. state.OffenseMode:options('Normal', 'MedAcc', 'HighAcc', 'MaxAcc')
  99. state.HybridMode:options('Normal', 'Hybrid')
  100. state.WeaponskillMode:options('Normal', 'WSMedAcc', 'WSHighAcc')
  101. state.CastingMode:options('Normal')
  102. state.IdleMode:options('Normal', 'Reraise', 'Regen', 'PetRegen')
  103. state.RestingMode:options('Normal')
  104. state.PhysicalDefenseMode:options('PetPDT', 'PDT')
  105. state.MagicalDefenseMode:options('MDTShell', 'PetMDT')
  106.  
  107. -- 'Out of Range' distance; WS will auto-cancel
  108. target_distance = 7
  109.  
  110. -- Set up Jug Pet cycling and keybind Alt+F8
  111. -- INPUT PREFERRED JUG PETS HERE
  112. state.JugMode = M{['description']='Jug Mode', 'Meaty Broth', 'Bubbly Broth', 'Spicy Broth', 'Livid Broth',
  113. 'Tant. Broth'}
  114. send_command('bind !f8 gs c cycle JugMode')
  115.  
  116. -- Set up Monster Correlation Modes and keybind Ctrl+F8
  117. state.CorrelationMode = M{['description']='Correlation Mode', 'Neutral', 'Favorable'}
  118. send_command('bind ^f8 gs c cycle CorrelationMode')
  119.  
  120. -- Set up Pet Modes for Hybrid sets and keybind 'Windows Key'+F8
  121. state.PetMode = M{['description']='Pet Mode', 'PetOnly', 'Normal'}
  122. send_command('bind @f8 gs c cycle PetMode')
  123.  
  124. -- Keybind Ctrl+F11 to cycle Magical Defense Modes
  125. send_command('bind ^f11 gs c cycle MagicalDefenseMode')
  126.  
  127. -- Set up Treasure Modes and keybind Ctrl+=
  128. state.TreasureMode = M{['description']='Treasure Mode', 'Tag', 'Normal'}
  129. send_command('bind ^= gs c cycle TreasureMode')
  130.  
  131. -- Complete list of Ready moves
  132. physical_ready_moves = S{'Foot Kick','Whirl Claws','Wild Carrot','Sheep Charge','Lamb Chop','Rage','Head Butt',
  133. 'Wild Oats','Leaf Dagger','Claw Cyclone','Razor Fang','Nimble Snap','Cyclotail','Rhino Guard','Rhino Attack',
  134. 'Power Attack','Mandibular Bite','Big Scissors','Bubble Curtain','Scissor Guard','Grapple','Spinning Top',
  135. 'Double Claw','Frogkick','Blockhead','Secretion','Brain Crush','Tail Blow','??? Needles','Needleshot',
  136. 'Scythe Tail','Ripper Fang','Chomp Rush','Recoil Dive','Sudden Lunge','Spiral Spin','Wing Slap','Beak Lunge',
  137. 'Suction','Back Heel','Choke Breath','Fantod','Tortoise Stomp','Harden Shell','Sensilla Blades','Tegmina Buffet',
  138. 'Swooping Frenzy','Pentapeck','Sweeping Gouge','Zealous Snort','Somersault','Tickling Tendrils','Pecking Flurry',
  139. 'Sickle Slash'}
  140.  
  141. magic_atk_ready_moves = S{'Dust Cloud','Cursed Sphere','Venom','Toxic Spit','Bubble Shower','Drainkiss',
  142. 'Silence Gas','Dark Spore','Fireball','Plague Breath','Snow Cloud','Charged Whisker','Purulent Ooze',
  143. 'Corrosive Ooze','Aqua Breath','Stink Bomb','Nectarous Deluge','Nepenthic Plunge','Pestilent Plume',
  144. 'Foul Waters','Acid Spray','Infected Leech','Gloom Spray'}
  145.  
  146. magic_acc_ready_moves = S{'Sheep Song','Scream','Dream Flower','Roar','Gloeosuccus','Palsy Pollen',
  147. 'Soporific','Geist Wall','Toxic Spit','Numbing Noise','Spoil','Hi-Freq Field','Sandpit','Sandblast',
  148. 'Venom Spray','Filamented Hold','Queasyshroom','Numbshroom','Spore','Shakeshroom','Infrasonics',
  149. 'Chaotic Eye','Blaster','Intimidate','Noisome Powder','Acid Mist','TP Drainkiss','Jettatura',
  150. 'Molting Plumage','Spider Web'}
  151.  
  152. tp_based_ready_moves = S{'Foot Kick','Dust Cloud','Snow Cloud','Wild Carrot','Sheep Song','Sheep Charge',
  153. 'Lamb Chop','Rage','Head Butt','Scream','Dream Flower','Wild Oats','Leaf Dagger','Claw Cyclone','Razor Fang',
  154. 'Roar','Gloeosuccus','Palsy Pollen','Soporific','Cursed Sphere','Somersault','Geist Wall','Numbing Noise',
  155. 'Frogkick','Nimble Snap','Cyclotail','Spoil','Rhino Guard','Rhino Attack','Hi-Freq Field','Sandpit','Sandblast',
  156. 'Mandibular Bite','Metallic Body','Bubble Shower','Bubble Curtain','Scissor Guard','Grapple','Spinning Top',
  157. 'Double Claw','Filamented Hold','Spore','Blockhead','Secretion','Fireball','Tail Blow','Plague Breath',
  158. 'Brain Crush','Infrasonics','Needleshot','Chaotic Eye','Blaster','Ripper Fang','Intimidate','Recoil Dive',
  159. 'Water Wall','Sudden Lunge','Noisome Powder','Wing Slap','Beak Lunge','Suction','Drainkiss','Acid Mist',
  160. 'TP Drainkiss','Back Heel','Jettatura','Choke Breath','Fantod','Charged Whisker','Purulent Ooze',
  161. 'Corrosive Ooze','Tortoise Stomp','Harden Shell','Aqua Breath','Sensilla Blades','Tegmina Buffet',
  162. 'Sweeping Gouge','Zealous Snort','Tickling Tendrils','Pecking Flurry','Pestilent Plume','Foul Waters',
  163. 'Spider Web','Gloom Spray'}
  164.  
  165. multi_hit_ready_moves = S{'Pentapeck','Tickling Tendrils','Sweeping Gouge','Chomp Rush','Pecking Flurry'}
  166.  
  167. pet_buff_moves = S{'Reward','Spur','Run Wild','Bubble Curtain','Scissor Guard','Secretion','Rage',
  168. 'Rhino Guard','Zealous Snort'}
  169.  
  170. -- List of Jug Modes that will cancel if Call Beast is used (Bestial Loyalty-only jug pets, HQs generally).
  171. call_beast_cancel = S{'Vis. Broth','Ferm. Broth','Bubbly Broth','Windy Greens','Bug-Ridden Broth','Tant. Broth',
  172. 'Glazed Broth','Slimy Webbing','Deepwater Broth','Venomous Broth','Heavenly Broth'}
  173.  
  174. -- List of abilities to reference for applying Treasure Hunter +1 via Chaac Belt.
  175. abilities_to_check = S{'Feral Howl','Quickstep','Box Step','Stutter Step','Desperate Flourish',
  176. 'Violent Flourish','Animated Flourish','Provoke','Dia','Dia II','Flash','Bio','Bio II',
  177. 'Sleep','Sleep II','Drain','Aspir','Dispel','Stun','Steal','Mug'}
  178.  
  179. -- Random Lockstyle generator.
  180. if RandomLockstyleGenerator == 'true' then
  181. local randomLockstyle = random_lockstyle_list[math.random(1, #random_lockstyle_list)]
  182. send_command('@wait 5;input /lockstyleset '.. randomLockstyle)
  183. end
  184. end
  185.  
  186. function file_unload()
  187. if binds_on_unload then
  188. binds_on_unload()
  189. end
  190.  
  191. -- Unbinds the Reward, Correlation, PetMode and Treasure hotkeys.
  192. send_command('unbind ^=')
  193. send_command('unbind !f8')
  194. send_command('unbind ^f8')
  195. send_command('unbind ^f11')
  196.  
  197. -- Removes any Text Info Boxes
  198. send_command('text JugPetText delete')
  199. send_command('text CorrelationText delete')
  200. send_command('text PetModeText delete')
  201. send_command('text AccuracyText delete')
  202. end
  203.  
  204. -- BST gearsets
  205. function init_gear_sets()
  206. -- AUGMENTED GEAR
  207. Pet_Idle_AxeMain = {name="Kumbhakarna", augments={'Pet: Attack+17 Pet: Rng.Atk.+17','Pet: Phys. dmg. taken -4%','STR+13 DEX+13',}}
  208. Pet_Idle_AxeSub = {name="Astolfo", augments={'VIT+11','Pet: Phys. dmg. taken -11%',}}
  209. Pet_PDT_AxeMain = {name="Kumbhakarna", augments={'Pet: Attack+17 Pet: Rng.Atk.+17','Pet: Phys. dmg. taken -4%','STR+13 DEX+13',}}
  210. Pet_PDT_AxeSub = {name="Astolfo", augments={'VIT+11','Pet: Phys. dmg. taken -11%',}}
  211. Pet_MDT_AxeMain = "Izizoeksi"
  212. Pet_MDT_AxeSub = {name="Digirbalag", augments={'Pet: Damage taken -5%','Pet: Accuracy+1 Pet: Rng. Acc.+1','Pet: Attack+8 Pet: Rng.Atk.+8',}}
  213. Pet_TP_AxeMain = {name="Kumbhakarna", augments={'Pet: Attack+17 Pet: Rng.Atk.+17','Pet: Phys. dmg. taken -4%','STR+13 DEX+13',}}
  214. Pet_TP_AxeSub = {name="Astolfo", augments={'VIT+11','Pet: Phys. dmg. taken -11%',}}
  215.  
  216. Ready_Atk_Axe = {name="Kumbhakarna", augments={'Pet: Accuracy+17 Pet: Rng. Acc.+20','Pet: "Dbl.Atk."+3 Pet: Crit.hit rate +3','Pet: TP Bonus+180',}}
  217. Ready_Acc_Axe = {name="Kumbhakarna", augments={'Pet: Accuracy+17 Pet: Rng. Acc.+20','Pet: "Dbl.Atk."+3 Pet: Crit.hit rate +3','Pet: TP Bonus+180',}}
  218. Ready_Acc_Axe2 = "Arktoi"
  219. Ready_Acc_Axe3 = {name="Digirbalag", augments={'"Store TP"+3','Pet: Accuracy+25 Pet: Rng. Acc.+25','Pet: Attack+29 Pet: Rng.Atk.+29','DMG:+14',}}
  220. Ready_MAB_Axe = {name="Kumbhakarna", augments={'Pet: "Mag.Atk.Bns."+20','Pet: TP Bonus+200',}}
  221. Ready_MAB_Axe2 = {name="Kumbhakarna", augments={'Pet: "Mag.Atk.Bns."+20','Pet: Phys. dmg. taken -4%','Pet: TP Bonus+180',}}
  222. Ready_MAcc_Axe = {name="Kumbhakarna", augments={'Pet: Mag. Acc.+20','"Cure" potency +15%','Pet: TP Bonus+180',}}
  223. Ready_MAcc_Axe2 = {name="Kumbhakarna", augments={'Pet: Mag. Acc.+20','"Cure" potency +15%','Pet: TP Bonus+200',}}
  224.  
  225. Ready_Unleash_MAB_Axe = "Deacon Tabar"
  226. Ready_Unleash_MAB_Axe2 = {name="Digirbalag", augments={'Weapon skill damage +2%','Pet: "Mag.Atk.Bns."+29','Rng.Acc.+25 Rng.Atk.+25','DMG:+13',}}
  227.  
  228. Reward_Axe = {name="Kumbhakarna", augments={'Pet: Mag. Evasion+20','Pet: Phys. dmg. taken -4%','MND+17',}}
  229. Reward_Axe2 = "Odium"
  230. Reward_hands = {name="Valorous Mitts", augments={'Accuracy+7','MND+15','Attack+11',}}
  231. Reward_back = {name="Artio's Mantle", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}}
  232.  
  233. Pet_PDT_head = "Anwig Salade"
  234. Pet_PDT_body = "Emicho Haubert +1"
  235. Pet_PDT_hands = "Ankusa Gloves"
  236. Pet_PDT_legs = "Nukumi Quijotes"
  237. Pet_PDT_feet = "Ankusa Gaiters"
  238. Pet_PDT_back = {name="Pastoralist's Mantle", augments={'STR+1 DEX+1','Accuracy+1','Pet: Accuracy+20 Pet: Rng. Acc.+20','Pet: Damage taken -5%',}}
  239.  
  240. Pet_MDT_head = "Anwig Salade"
  241. Pet_MDT_body = {name="Taeon Tabard", augments={'Pet: Mag. Evasion+22','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  242. Pet_MDT_hands = {name="Taeon Gloves", augments={'Pet: Mag. Evasion+25','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  243. Pet_MDT_legs = {name="Taeon Tights", augments={'Pet: Mag. Evasion+18','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  244. Pet_MDT_feet = {name="Taeon Boots", augments={'Pet: Mag. Evasion+22','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  245.  
  246. Pet_DT_head = "Anwig Salade"
  247. Pet_DT_body = {name="Acro Surcoat", augments={'Pet: DEF+22','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  248. Pet_DT_hands = {name="Acro Gauntlets", augments={'Pet: DEF+25','Pet: "Regen"+3',}}
  249. Pet_DT_legs = {name="Acro Breeches", augments={'Pet: DEF+25','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  250. Pet_DT_feet = {name="Acro Leggings", augments={'Pet: DEF+25','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  251.  
  252. Pet_Regen_head = {name="Valorous Mask", augments={'Pet: "Regen"+5','Pet: Accuracy+13 Pet: Rng. Acc.+13',}}
  253. Pet_Regen_body = {name="Taeon Tabard", augments={'Pet: "Regen"+5','Pet: Accuracy+13 Pet: Rng. Acc.+13',}}
  254. Pet_Regen_hands = {name="Acro gauntlets", augments={'Pet: Def +25','Pet: "Regen"+3',}}
  255. Pet_Regen_legs = {name="Valor. Hose", augments={'Pet: "Regen"+5','Pet: Attack+1 Pet: Rng.Atk.+1',}}
  256. Pet_Regen_feet = "Emicho Gambieras +1"
  257. Pet_Regen_back = {name="Artio's Mantle", augments={'Pet: M.Acc.+20 Pet: M.Dmg.+20','Eva.+20 /Mag. Eva.+20','Pet: "Regen"+10',}}
  258.  
  259. Ready_Atk_head = "Despair Helm"
  260. Ready_Atk_body = {name="Taeon Tabard", augments={'Pet: Attack+15 Pet: Rng.Atk.+15','Pet: "Dbl.Atk."+5',}}
  261. Ready_Atk_hands = {name="Valorous Mitts", augments={'Pet: Attack+29 Pet: Rng.Atk.+29','Pet: "Subtle Blow"+5','System: 1 ID: 1792 Val: 6','Pet: Accuracy+9 Pet: Rng. Acc.+9',}}
  262. Ready_Atk_legs = "Nukumi Quijotes"
  263. Ready_Atk_feet = {name="Taeon Boots", augments={'Pet: Accuracy+20 Pet: Rng. Acc.+20','Pet: Crit.hit rate +4',}}
  264. Ready_Atk_back = {name="Pastoralist's Mantle", augments={'STR+5 DEX+5','Accuracy+2','Pet: Accuracy+19 Pet: Rng. Acc.+19',}}
  265.  
  266. Ready_Acc_head = "Despair Helm"
  267. Ready_Acc_body = {name="Taeon Tabard", augments={'Pet: Attack+15 Pet: Rng.Atk.+15','Pet: "Dbl. Atk."+5',}}
  268. Ready_Acc_hands = {name="Ankusa Gloves", augments={'Enhances "Beast Affinity" effect',}}
  269. Ready_Acc_legs = "Nukumi Quijotes"
  270. Ready_Acc_feet = {name="Taeon Boots", augments={'Pet: Accuracy+20 Pet: Rng. Acc.+20','Pet: Crit.hit rate +4',}}
  271. Ready_Acc_back = {name="Pastoralist's Mantle", augments={'STR+5 DEX+5','Accuracy+2','Pet: Accuracy+19 Pet: Rng. Acc.+19',}}
  272.  
  273. Ready_MAB_head = {name="Valorous Mask", augments={'Pet: "Mag.Atk.Bns."+26','Pet: INT+15','Pet: Attack+4 Pet: Rng.Atk.+4',}}
  274. Ready_MAB_body = "Emicho Haubert +1"
  275. Ready_MAB_hands = {name="Valorous Mitts", augments={'Pet: "Mag.Atk.Bns."+29','Pet: "Store TP"+9','Pet: INT+12','Pet: Attack+4 Pet: Rng.Atk.+4',}}
  276. Ready_MAB_legs = {name="Acro Breeches", augments={'Pet: "Mag.Atk.Bns."+13','Pet: "Store TP"+6',}}
  277. Ready_MAB_feet = {name="Valorous Greaves", augments={'Pet: "Mag.Atk.Bns."+30','Pet: INT+13','Pet: Accuracy+9 Pet: Rng. Acc.+9','Pet: Attack+15 Pet: Rng.Atk.+15',}}
  278.  
  279. Ready_MAcc_head = {name="Acro Helm", augments={'Pet: Mag. Acc.+25','"Call Beast" ability delay -5',}}
  280. Ready_MAcc_body = {name="Acro Surcoat", augments={'Pet: Mag. Acc.+24',}}
  281. Ready_MAcc_hands = {name="Acro Gauntlets", augments={'Pet: Mag. Acc.+25',}}
  282. Ready_MAcc_legs = {name="Acro Breeches", augments={'Pet: "Mag.Atk.Bns."+13','Pet: "Store TP"+6',}}
  283. Ready_MAcc_feet = {name="Acro Leggings", augments={'Pet: Mag. Acc.+23',}}
  284. Ready_MAcc_back = {name="Artio's Mantle", augments={'Pet: M.Acc.+20 Pet: M.Dmg.+20','Eva.+20 /Mag. Eva.+20','Pet: "Regen"+10',}}
  285.  
  286. Ready_DA_axe = {name="Kumbhakarna", augments={'Pet: Attack+20 Pet: Rng.Atk.+20','Pet: "Dbl.Atk."+3 Pet: Crit.hit rate +3','Pet: TP Bonus+200',}}
  287. Ready_DA_head = "Emicho Coronet +1"
  288. Ready_DA_body = {name="Acro Surcoat", augments={'Pet: Accuracy+24 Pet: Rng. Acc.+24','Pet: "Dbl. Atk."+5','Pet: Haste+5',}}
  289. Ready_DA_hands = {name="Valorous Mitts", augments={'Pet: Accuracy+28 Pet: Rng. Acc.+28','Pet: "Dbl. Atk."+3','Pet: Attack+10 Pet: Rng.Atk.+10',}}
  290. Ready_DA_legs = {name="Taeon Tights", augments={'Pet: Attack+23 Pet: Rng.Atk.+23','Pet: "Dbl. Atk."+5','Pet: Haste+5',}}
  291. Ready_DA_feet = {name="Taeon Boots", augments={'Pet: Attack+23 Pet: Rng.Atk.+23','Pet: "Dbl. Atk."+5','Pet: Haste+5',}}
  292.  
  293. Pet_Melee_head = Ready_Atk_head
  294. Pet_Melee_body = Ready_Acc_body
  295. Pet_Melee_hands = Ready_Acc_hands
  296. Pet_Melee_legs = Ready_Atk_legs
  297. Pet_Melee_feet = Ready_Atk_feet
  298.  
  299. Hybrid_head = {name="Valorous Mask", augments={'Pet: "Regen"+5','Pet: Accuracy+13 Pet: Rng. Acc.+13',}}
  300. Hybrid_body = Pet_PDT_body
  301. Hybrid_hands = Pet_PDT_hands
  302. Hybrid_legs = {name="Taeon Tights", augments={'Accuracy+20 Attack+20','"Triple Atk."+2','Pet: Damage taken -4%',}}
  303. Hybrid_feet = {name="Taeon Boots", augments={'Accuracy+25','"Triple Atk."+2','Pet: Damage taken -4%',}}
  304.  
  305. DW_head = {name="Taeon Chapeau", augments={'Accuracy+12','"Dual Wield"+3',}}
  306. DW_body = "Taeon Tabard"
  307. DW_hands = "Taeon Gloves"
  308. DW_legs = "Taeon Tights"
  309. DW_feet = {name="Taeon Boots", augments={'Attack+22','"Dual Wield"+3',}}
  310.  
  311. MAB_head = "Jumalik Helm"
  312. MAB_body = "Jumalik Mail"
  313. MAB_hands = "Taeon Gloves"
  314. MAB_legs = {name="Taeon Tights", augments={'Mag. Acc.+14 "Mag.Atk.Bns."+14','"Fast Cast"+3','STR+10',}}
  315. MAB_feet = "Taeon Boots"
  316.  
  317. FC_head = {name="Taeon Chapeau", augments={'"Mag.Atk.Bns."+19','"Fast Cast"+4','Weapon skill damage +2%',}}
  318. FC_body = {name="Taeon Tabard", augments={'"Mag.Atk.Bns."+20','"Fast Cast"+5','Weapon skill damage +2%',}}
  319. FC_hands = "Leyline Gloves"
  320. FC_legs = MAB_legs
  321. FC_feet = MAB_feet
  322. FC_back = {name="Artio's Mantle", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}}
  323.  
  324. MAcc_head = "Jumalik Helm"
  325. MAcc_body = "Ankusa Jackcoat +1"
  326. MAcc_hands = MAB_hands
  327. MAcc_legs = MAB_legs
  328. MAcc_feet = MAB_feet
  329. MAcc_back = {name="Artio's Mantle", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}}
  330.  
  331. CB_head = "Acro Helm"
  332. CB_body = "Mirke Wardecors"
  333. CB_hands = "Ankusa Gloves"
  334. CB_legs = Ready_MAcc_legs
  335. CB_feet = "Armada Sollerets"
  336.  
  337. Cure_Potency_axe = Ready_MAcc_Axe
  338. Cure_Potency_head = {name="Taeon Chapeau", augments={'"Cure" potency +4%',}}
  339. Cure_Potency_body = "Jumalik Mail"
  340. Cure_Potency_hands = "Buremte Gloves"
  341. Cure_Potency_legs = "Ankusa Trousers +1"
  342. Cure_Potency_feet = {name="Taeon Boots", augments={'"Cure" potency +5%',}}
  343.  
  344. Physical_WS_back = "Atheling Mantle"
  345.  
  346. TH_hands = {name="Valorous Mitts", augments={'Pet: STR+6','"Fast Cast"+3','"Treasure Hunter"+1','Mag. Acc.+15 "Mag.Atk.Bns."+15',}}
  347.  
  348. -- PRECAST SETS
  349. sets.precast.JA.Familiar = {legs="Ankusa Trousers"}
  350. sets.precast.JA['Bestial Loyalty'] = {head=CB_head,
  351. body=CB_body,
  352. hands=CB_hands,
  353. legs=CB_legs,
  354. feet=CB_feet}
  355. sets.precast.JA['Call Beast'] = sets.precast.JA['Bestial Loyalty']
  356. --sets.precast.JA.Tame = {head="Totemic Helm +1",ear1="Tamer's Earring",legs="Stout Kecks"}
  357. sets.precast.JA['Killer Instinct'] = {head="Ankusa Helm +1"}
  358.  
  359. sets.precast.JA.Spur = {back="Artio's Mantle",feet="Nukumi Ocreae"}
  360. sets.precast.SpurPetOnly = set_combine(sets.precast.JA.Spur, {main="Skullrender"})
  361. sets.precast.SpurPetOnlyDW = set_combine(sets.precast.JA.Spur, {main="Skullrender",sub="Skullrender"})
  362.  
  363. sets.enmity = {main="Mafic Cudgel",ammo="Paeapua",
  364. head="Halitus Helm",neck="Unmoving Collar +1",ear1="Trux Earring",ear2="Cryptic Earring",
  365. body="Jumalik Mail",hands="Macabre Gauntlets +1",ring1="Provocare Ring",ring2="Eihwaz Ring",
  366. back="Earthcry Mantle",waist="Trance Belt",legs="Zoar Subligar +1",feet="Rager Ledelsens +1"}
  367.  
  368. sets.precast.JA['Feral Howl'] = sets.enmity
  369.  
  370. sets.precast.JA.Reward = {ammo="Pet Food Theta",
  371. head="Bison Warbonnet",neck="Aife's Medal",ear1="Lifestorm Earring",ear2="Neptune's Pearl",
  372. body="Totemic Jackcoat +1",hands="Ogre Gloves",ring1="Leviathan Ring +1",ring2="Leviathan Ring +1",
  373. back=Reward_back,waist="Engraved Belt",legs="Ankusa Trousers",feet="Ankusa Gaiters"}
  374. sets.precast.JA.RewardPetOnly = set_combine(sets.precast.JA.Reward, {main=Reward_Axe,sub="Matamata Shield +1"})
  375. sets.precast.JA.RewardPetOnlyDW = set_combine(sets.precast.JA.RewardPetOnly, {sub=Reward_Axe2})
  376.  
  377. --sets.precast.JA.Charm = {ammo="Tsar's Egg",
  378. -- head="Totemic Helm +1",neck="Dualism Collar +1",ear1="Enchanter's Earring",ear2="Enchanter Earring +1",
  379. -- body="Totemic Jackcoat +1",hands="Ankusa Gloves +1",ring1="Dawnsoul Ring",ring2="Dawnsoul Ring",
  380. -- back="Aisance Mantle +1",waist="Aristo Belt",legs="Ankusa Trousers",feet="Ankusa Gaiters"}
  381.  
  382. -- PET SIC & READY MOVES
  383. sets.midcast.Pet.TPBonus = {hands="Nukumi Manoplas"}
  384. sets.midcast.Pet.ReadyRecast = {legs="Desultor Tassets"}
  385. sets.midcast.Pet.Neutral = {head=Ready_Atk_head}
  386. sets.midcast.Pet.Favorable = {head="Despair Helm"}
  387.  
  388. sets.midcast.Pet.WS = {ammo="Demonry Core",
  389. neck="Empath Necklace",ear1="Hija Earring",ear2="Ruby Earring",
  390. body=Ready_Atk_body,
  391. hands=Ready_Atk_hands,
  392. ring1="Thurandaut Ring",
  393. ring2="Angel's Ring",
  394. back=Ready_Atk_back,
  395. waist="Incarnation Sash",
  396. legs=Ready_Atk_legs,
  397. feet=Ready_Atk_feet}
  398.  
  399. sets.midcast.Pet.MagicAtkReady = set_combine(sets.midcast.Pet.WS, {
  400. head=Ready_MAB_head,
  401. neck="Deino Collar",
  402. ear1="Hija Earring",ear2="Diamond Earring",
  403. body=Ready_MAB_body,
  404. hands=Ready_MAB_hands,
  405. back="Argochampsa Mantle",
  406. legs=Ready_MAB_legs,
  407. feet=Ready_MAB_feet})
  408.  
  409. sets.midcast.Pet.MagicAccReady = set_combine(sets.midcast.Pet.WS, {
  410. head=Ready_MAcc_head,
  411. neck="Deino Collar",
  412. ear1="Sapphire Earring",ear2="Sapphire Earring",
  413. body=Ready_MAcc_body,
  414. hands=Ready_MAcc_hands,
  415. back=Ready_MAcc_back,
  416. legs=Ready_MAcc_legs,
  417. feet=Ready_MAcc_feet})
  418.  
  419. sets.midcast.Pet.MultiStrike = set_combine(sets.midcast.Pet.WS, {
  420. neck="Ferine Necklace",ear2="Domesticator's Earring",
  421. body=Ready_DA_body,
  422. hands=Ready_DA_hands,
  423. legs=Ready_DA_legs,
  424. feet=Ready_DA_feet})
  425.  
  426. sets.midcast.Pet.MedAcc = set_combine(sets.midcast.Pet.WS, {ear2="Ferine Earring",
  427. body=Ready_Acc_body,
  428. back=Ready_Acc_back,
  429. legs=Ready_Acc_legs})
  430. sets.midcast.Pet.HighAcc = set_combine(sets.midcast.Pet.WS, {
  431. ear1="Spinel Earring",
  432. ear2="Ferine Earring",
  433. body=Ready_Acc_body,
  434. back=Ready_Acc_back,
  435. legs=Ready_Acc_legs,
  436. feet=Ready_Acc_feet})
  437. sets.midcast.Pet.MaxAcc = set_combine(sets.midcast.Pet.WS, {
  438. head=Ready_Acc_head,
  439. ear1="Spinel Earring",
  440. ear2="Ferine Earring",
  441. body=Ready_Acc_body,
  442. hands=Ready_Acc_hands,
  443. back=Ready_Acc_back,
  444. legs=Ready_Acc_legs,
  445. feet=Ready_Acc_feet})
  446.  
  447. -- PET-ONLY READY GEARSETS
  448. -- Single-wield PetOnly Sets
  449. sets.midcast.Pet.ReadyRecastNE = {main="Charmer's Merlin",legs="Desultor Tassets"}
  450.  
  451. sets.midcast.Pet.ReadyNE = set_combine(sets.midcast.Pet.WS, {main="Aymur"})
  452. sets.midcast.Pet.ReadyNE.MedAcc = set_combine(sets.midcast.Pet.WS, {main="Aymur",
  453. body=Ready_Acc_body,
  454. back=Ready_Acc_back,
  455. legs=Ready_Acc_legs})
  456. sets.midcast.Pet.ReadyNE.HighAcc = set_combine(sets.midcast.Pet.WS, {main=Ready_Acc_Axe2,
  457. ear1="Spinel Earring",
  458. ear2="Ferine Earring",
  459. body=Ready_Acc_body,
  460. back=Ready_Acc_back,
  461. legs=Ready_Acc_legs,
  462. feet=Ready_Acc_feet})
  463. sets.midcast.Pet.ReadyNE.MaxAcc = set_combine(sets.midcast.Pet.WS, {main=Ready_Acc_Axe2,
  464. head=Ready_Acc_head,
  465. ear1="Spinel Earring",
  466. ear2="Ferine Earring",
  467. body=Ready_Acc_body,
  468. hands=Ready_Acc_hands,
  469. back=Ready_Acc_back,
  470. legs=Ready_Acc_legs,
  471. feet=Ready_Acc_feet})
  472.  
  473. sets.midcast.Pet.MultiStrikeNE = set_combine(sets.midcast.Pet.MultiStrike, {main="Aymur"})
  474.  
  475. sets.midcast.Pet.MagicAtkReadyNE = set_combine(sets.midcast.Pet.MagicAtkReady, {main=Ready_MAB_Axe})
  476. sets.midcast.Pet.MagicAtkReadyNE.MedAcc = set_combine(sets.midcast.Pet.MagicAtkReady, {main=Ready_MAB_Axe,
  477. head=Ready_MAcc_head,
  478. legs=Ready_MAcc_legs})
  479. sets.midcast.Pet.MagicAtkReadyNE.HighAcc = set_combine(sets.midcast.Pet.MagicAtkReady, {main=Ready_MAB_Axe,
  480. head=Ready_MAcc_head,
  481. ear2="Sapphire Earring",
  482. body=Ready_MAcc_body,
  483. hands=Ready_MAcc_hands,
  484. back=Ready_MAcc_back,
  485. legs=Ready_MAcc_legs})
  486. sets.midcast.Pet.MagicAtkReadyNE.MaxAcc = set_combine(sets.midcast.Pet.MagicAtkReady, {main=Ready_MAB_Axe,
  487. head=Ready_MAcc_head,
  488. ear1="Sapphire Earring",ear2="Sapphire Earring",
  489. body=Ready_MAcc_body,
  490. hands=Ready_MAcc_hands,
  491. back=Ready_MAcc_back,
  492. legs=Ready_MAcc_legs,
  493. feet=Ready_MAcc_feet})
  494.  
  495. sets.midcast.Pet.MagicAccReadyNE = set_combine(sets.midcast.Pet.MagicAccReady, {main=Ready_Unleash_MAB_Axe})
  496.  
  497. sets.IdleAxeShield = {main=Pet_Idle_AxeMain,sub="Beatific Shield"}
  498. sets.PDTAxeShield = {main=Pet_PDT_AxeMain,sub="Beatific Shield"}
  499. sets.MDTAxeShield = {main=Pet_MDT_AxeMain,sub="Beatific Shield"}
  500. sets.TPAxeShield = {main=Pet_TP_AxeMain,sub="Beatific Shield"}
  501.  
  502. -- Dual-wield PetOnly Sets
  503. sets.midcast.Pet.ReadyRecastDWNE = {main="Aymur",sub="Charmer's Merlin",legs="Desultor Tassets"}
  504.  
  505. sets.midcast.Pet.ReadyDWNE = set_combine(sets.midcast.Pet.ReadyNE, {sub=Ready_Atk_Axe})
  506. sets.midcast.Pet.ReadyDWNE.MedAcc = set_combine(sets.midcast.Pet.ReadyNE.MedAcc, {sub=Ready_Acc_Axe})
  507. sets.midcast.Pet.ReadyDWNE.HighAcc = set_combine(sets.midcast.Pet.ReadyNE.HighAcc, {sub=Ready_Acc_Axe3})
  508. sets.midcast.Pet.ReadyDWNE.MaxAcc = set_combine(sets.midcast.Pet.ReadyNE.MaxAcc, {sub=Ready_Acc_Axe3})
  509. sets.midcast.Pet.MultiStrikeDWNE = set_combine(sets.midcast.Pet.MultiStrikeNE, {sub=Ready_Atk_Axe})
  510.  
  511. sets.midcast.Pet.MagicAtkReadyDWNE = set_combine(sets.midcast.Pet.MagicAtkReadyNE, {main=Ready_MAB_Axe,sub=Ready_MAB_Axe2})
  512. sets.midcast.Pet.MagicAtkReadyDWNE.MedAcc = set_combine(sets.midcast.Pet.MagicAtkReadyNE.MedAcc, {main=Ready_MAB_Axe2,sub=Ready_MAcc_Axe})
  513. sets.midcast.Pet.MagicAtkReadyDWNE.HighAcc = set_combine(sets.midcast.Pet.MagicAtkReadyNE.HighAcc, {main=Ready_MAB_Axe2,sub=Ready_MAcc_Axe})
  514. sets.midcast.Pet.MagicAtkReadyDWNE.MaxAcc = set_combine(sets.midcast.Pet.MagicAtkReadyNE.MaxAcc, {main=Ready_MAB_Axe2,sub=Ready_MAcc_Axe})
  515.  
  516. sets.midcast.Pet.MagicAccReadyDWNE = set_combine(sets.midcast.Pet.MagicAccReadyNE, {sub=Ready_MAcc_Axe})
  517.  
  518. sets.UnleashMABAxes = {main=Ready_Unleash_MAB_Axe,sub=Ready_Unleash_MAB_Axe2}
  519.  
  520. sets.IdleAxes = {main=Pet_Idle_AxeMain,sub=Pet_Idle_AxeSub}
  521. sets.PDTAxes = {main=Pet_PDT_AxeMain,sub=Pet_PDT_AxeSub}
  522. sets.MDTAxes = {main=Pet_MDT_AxeMain,sub=Pet_MDT_AxeSub}
  523. sets.TPAxes = {main=Pet_TP_AxeMain,sub=Pet_TP_AxeSub}
  524.  
  525. -- RESTING
  526. sets.resting = {}
  527.  
  528. -- IDLE SETS
  529. sets.idle = {ammo="Demonry Core",
  530. head="Despair Helm",neck="Twilight Torque",ear1="Infused Earring",ear2="Dawn Earring",
  531. body="Taeon Tabard",hands="Acro Gauntlets",ring1="Warp Ring",ring2="Sheltered Ring",
  532. back="Solemnity Cape",waist="Flume Belt +1",legs="Taeon Tights",feet="Skadi's Jambeaux +1"}
  533.  
  534. sets.idle.Regen = {ammo="Demonry Core",
  535. head="Twilight Helm",neck="Twilight Torque",ear1="Infused Earring",ear2="Dawn Earring",
  536. body="Kirin's Osode",hands="Umuthi Gloves",ring1="Warp Ring",ring2="Sheltered Ring",
  537. back="Solemnity Cape",waist="Flume Belt +1",legs="Taeon Tights",feet="Skadi's Jambeaux +1"}
  538.  
  539. sets.idle.Refresh = set_combine(sets.idle, {head="Jumalik Helm",body="Jumalik Mail",legs="Stearc Subligar"})
  540. sets.idle.Reraise = set_combine(sets.idle, {head="Twilight Helm",body="Twilight Mail"})
  541.  
  542. sets.idle.Pet = set_combine(sets.idle, {ammo="Demonry Core",
  543. head=Pet_Regen_head,
  544. neck="Twilight Torque",ear1="Infused Earring",ear2="Dawn Earring",
  545. body=Pet_Regen_body,
  546. hands=Pet_Regen_hands,
  547. ring1="Warp Ring",ring2="Sheltered Ring",
  548. back=Pet_Regen_back,
  549. waist="Isa Belt",
  550. legs=Pet_Regen_legs,
  551. feet="Skadi's Jambeaux +1"})
  552.  
  553. sets.idle.PetRegen = set_combine(sets.idle.Pet, {feet=Pet_Regen_feet})
  554.  
  555. sets.idle.Pet.Engaged = {ammo="Demonry Core",
  556. head=Pet_Melee_head,
  557. neck="Shepherd's Chain",ear1="Handler's Earring",ear2="Sabong Earring",
  558. body=Pet_Melee_body,
  559. hands=Pet_Melee_hands,
  560. ring1="Warp Ring",ring2="Sheltered Ring",
  561. back="Pastoralist's Mantle",
  562. waist="Hurch'lan Sash",
  563. legs=Pet_Melee_legs,
  564. feet=Pet_Melee_feet}
  565.  
  566. -- DEFENSE SETS
  567. sets.defense.PDT = {
  568. head="Jumalik Helm",neck="Twilight Torque",ear2="Genmei Earring",
  569. body="Jumalik Mail",hands="Acro Gauntlets",ring1="Warp Ring",ring2="Sheltered Ring",
  570. back="Solemnity Cape",waist="Flume Belt +1",legs="Arjuna Breeches",feet="Skadi's Jambeaux +1"}
  571.  
  572. sets.defense.Reraise = set_combine(sets.defense.PDT, {head="Twilight Helm",body="Twilight Mail"})
  573.  
  574. sets.defense.HybridPDT = {ammo="Sihirik",
  575. head="Jumalik Helm",neck="Loricate Torque +1",ear1="Handler's Earring",ear2="Handler's Earring +1",
  576. body="Jumalik Mail",hands=Pet_PDT_hands,ring1="Dark Ring",ring2="Sheltered Ring",
  577. back="Solemnity Cape",waist="Flume Belt +1",legs=Pet_PDT_legs,feet="Amm Greaves"}
  578.  
  579. sets.defense.MDT = set_combine(sets.defense.PDT, {ammo="Sihirik",
  580. head="Despair Helm",neck="Twilight Torque",ear1="Sanare Earring",ear2="Etiolation Earring",
  581. body="Totemic Jackcoat +1",hands="Taeon Gloves",
  582. back="Engulfer Cape +1",waist="Nierenschutz"})
  583.  
  584. sets.defense.MDTShell = set_combine(sets.defense.MDT, {ammo="Vanir Battery",
  585. neck="Inquisitor Bead Necklace",ear2="Eabani Earring",
  586. ring1="Shadow Ring",
  587. waist="Asklepian Belt",legs="Sombra Tights",feet="Sombra Leggings"})
  588.  
  589. sets.defense.PetPDT = {
  590. ammo="Demonry Core",
  591. head="Anwig Salade",neck="Shepherd's Chain",
  592. ear1="Handler's Earring",ear2="Sabong Earring",
  593. body=Pet_PDT_body,
  594. hands=Pet_PDT_hands,
  595. ring1="Warp Ring",ring2="Sheltered Ring",
  596. back=Pet_PDT_back,
  597. waist="Isa Belt",
  598. legs=Pet_PDT_legs,
  599. feet=Pet_PDT_feet}
  600.  
  601. sets.defense.PetMDT = set_combine(sets.defense.PetPDT, {
  602. ear1="Rimeice Earring",
  603. body="Emicho Haubert +1",
  604. hands=Pet_MDT_hands,
  605. ring1="Warp Ring",ring2="Sheltered Ring",
  606. legs=Pet_MDT_legs,
  607. feet=Pet_MDT_feet})
  608.  
  609. sets.Kiting = {feet="Skadi's Jambeaux +1"}
  610.  
  611. sets.precast.FC = {
  612. ammo="Sapience Orb",
  613. head=FC_head,
  614. neck="Orunmila's Torque",ear1="Loquacious Earring",ear2="Enchanter Earring +1",
  615. body=FC_body,
  616. hands=FC_hands,
  617. ring1="Prolix Ring",ring2="Rahab Ring",
  618. back=FC_back,
  619. legs=FC_legs,
  620. feet=FC_feet}
  621.  
  622. sets.precast.FCNE = set_combine(sets.precast.FC, {main="Shukuyu's Scythe",sub="Vivid Strap"})
  623. sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  624.  
  625. -- MASTER WS SETS
  626. sets.precast.WS['Primal Rend'] = {ammo="Pemphredo Tathlum",
  627. head=MAB_head,
  628. neck="Fotia Gorget",ear1="Hecate's Earring",ear2="Friomisi Earring",
  629. body=MAB_body,
  630. hands=MAB_hands,
  631. ring1="Acumen Ring",ring2="Fenrir Ring +1",
  632. back="Argochampsa Mantle",waist="Fotia Belt",
  633. legs=MAB_legs,
  634. feet=MAB_feet}
  635. sets.precast.WS['Primal Rend'].WSMedAcc = set_combine(sets.precast.WS['Primal Rend'], {neck="Fotia Gorget",waist="Fotia Belt"})
  636. sets.precast.WS['Primal Rend'].WSHighAcc = sets.precast.WS['Primal Rend'].WSMedAcc
  637. sets.precast.WS['Cloudsplitter'] = set_combine(sets.precast.WS['Primal Rend'], {neck="Fotia Gorget",
  638. ring2="Fenrir Ring +1",back=Physical_WS_back,waist="Fotia Belt"})
  639. sets.midcast.ExtraMAB = {ear1="Hecate's Earring"}
  640.  
  641. sets.precast.WS['Calamity'] = {ammo="Cheruski Needle",
  642. head="Lilitu Headpiece",neck="Fotia Gorget",ear1="Moonshade Earring",ear2="Brutal Earring",
  643. body="Emicho Haubert +1",hands="Nukumi Manoplas +1",ring1="Ifrit Ring +1",ring2="Epona's Ring",
  644. back=Physical_WS_back,waist="Windbuffet Belt +1",legs="Arjuna Breeches",feet="Emicho Gambieras +1"}
  645.  
  646. sets.precast.WS['Ruinator'] = {ammo="Cheruski Needle",
  647. head="Despair Helm",neck="Fotia Gorget",ear1="Kokou's Earring",ear2="Brutal Earring",
  648. body="Acro Surcoat",hands="Nukumi Manoplas",ring1="Ifrit Ring +1",ring2="Epona's Ring",
  649. back=Physical_WS_back,waist="Fotia Belt",legs="Taeon Tights",feet="Acro Leggings"}
  650. sets.precast.WS['Ruinator'].Gavialis = set_combine(sets.precast.WS['Ruinator'], {head="Gavialis Helm"})
  651.  
  652. -- MIDCAST SETS
  653. sets.midcast.FastRecast = {
  654. ammo="Sapience Orb",
  655. head=FC_head,
  656. neck="Orunmila's Torque",ear1="Loquacious Earring",ear2="Enchanter Earring +1",
  657. body=FC_body,
  658. hands=FC_hands,
  659. ring1="Prolix Ring",ring2="Rahab Ring",
  660. back=FC_back,
  661. waist="Asklepian Belt",
  662. legs=FC_legs,
  663. feet=FC_feet}
  664.  
  665. --sets.midcast.Utsusemi = set_combine(sets.midcast.FastRecast, {back="Mujin Mantle"})
  666.  
  667. sets.midcast.Cure = {ammo="Quartz Tathlum +1",
  668. head=Cure_Potency_head,
  669. neck="Phalaina Locket",ear1="Lifestorm Earring",ear2="Mendicant's Earring",
  670. body=Cure_Potency_body,
  671. hands=Cure_Potency_hands,
  672. ring1="Lebeche Ring",ring2="Asklepian Ring",back=Pet_PDT_back,waist="Gishdubar Sash",
  673. legs=Cure_Potency_legs,
  674. feet=Cure_Potency_feet}
  675.  
  676. sets.midcast.Curaga = sets.midcast.Cure
  677. sets.CurePetOnly = {main=Cure_Potency_axe,sub="Matamata Shield +1"}
  678.  
  679. sets.midcast.Stoneskin = {ammo="Quartz Tathlum +1",
  680. head="Jumalik Helm",neck="Stone Gorget",ear1="Earthcry Earring",ear2="Lifestorm Earring",
  681. body="Totemic Jackcoat +1",hands="Stone Mufflers",ring1="Leviathan Ring +1",ring2="Leviathan Ring +1",
  682. back=Pet_PDT_back,waist="Engraved Belt",legs="Haven Hose"}
  683.  
  684. sets.midcast.Cursna = set_combine(sets.midcast.FastRecast, {neck="Malison Medallion",
  685. ring1="Eshmun's Ring",ring2="Haoma's Ring",waist="Gishdubar Sash"})
  686.  
  687. sets.midcast.Protect = {ring2="Sheltered Ring"}
  688. sets.midcast.Protectra = sets.midcast.Protect
  689.  
  690. sets.midcast.Shell = {ring2="Sheltered Ring"}
  691. sets.midcast.Shellra = sets.midcast.Shell
  692.  
  693. sets.midcast['Enfeebling Magic'] = {ammo="Quartz Tathlum +1",
  694. head=FC_head,
  695. neck="Baetyl Pendant",ear1="Lifestorm Earring",ear2="Psystorm Earring",
  696. body=FC_body,
  697. hands=FC_hands,
  698. ring1="Sangoma Ring",ring2="Fenrir Ring +1",waist="Eschan Stone",
  699. legs=FC_legs,
  700. feet=FC_feet}
  701.  
  702. sets.midcast['Elemental Magic'] = sets.midcast['Enfeebling Magic']
  703.  
  704. -- SINGLE-WIELD MASTER ENGAGED SETS
  705. sets.engaged = {ammo="Paeapua",
  706. head="Skormoth Mask",neck="Defiant Collar",ear1="Trux Earring",ear2="Brutal Earring",
  707. body="Emicho Haubert +1",hands="Leyline Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
  708. back="Grounded Mantle +1",waist="Windbuffet Belt +1",legs="Obatala Subligar",feet="Emicho Gambieras +1"}
  709.  
  710. sets.engaged.DW = {ammo="Paeapua",
  711. head=DW_head,neck="Defiant Collar",ear1="Suppanomimi",ear2="Eabani Earring",
  712. body=DW_body,hands=DW_hands,ring1="Rajas Ring",ring2="Epona's Ring",
  713. back="Vellaunus' Mantle +1",waist="Patentia Sash",legs=DW_legs,feet=DW_feet}
  714.  
  715. sets.precast.JA.Provoke = sets.enmity
  716. sets.precast.LuzafRing = {ring1="Luzaf's Ring"}
  717. sets.buff['Killer Instinct'] = {body="Nukumi Gausape +1"}
  718. sets.THGear = {hands=TH_hands,waist="Chaac Belt"}
  719. end
  720.  
  721. -------------------------------------------------------------------------------------------------------------------
  722. -- Job-specific hooks that are called to process player actions at specific points in time.
  723. -------------------------------------------------------------------------------------------------------------------
  724.  
  725. function job_precast(spell, action, spellMap, eventArgs)
  726. -- Define class for Sic and Ready moves.
  727. if spell.type == "Monster" then
  728. classes.CustomClass = "WS"
  729. if state.PetMode.value == 'PetOnly' and not buffactive['Unleash']then
  730. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  731. equip(sets.midcast.Pet.ReadyRecastDWNE)
  732. else
  733. equip(sets.midcast.Pet.ReadyRecastNE)
  734. end
  735. else
  736. equip(sets.midcast.Pet.ReadyRecast)
  737. end
  738. end
  739.  
  740. if spell.english == 'Reward' then
  741. if state.PetMode.value == 'PetOnly' then
  742. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  743. equip(sets.precast.JA.RewardPetOnlyDW)
  744. else
  745. equip(sets.precast.JA.RewardPetOnly)
  746. end
  747. else
  748. equip(sets.precast.JA.Reward)
  749. end
  750. end
  751.  
  752. if spell.english == 'Spur' then
  753. if state.PetMode.value == 'PetOnly' then
  754. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  755. equip(sets.precast.SpurPetOnlyDW)
  756. else
  757. equip(sets.precast.SpurPetOnly)
  758. end
  759. end
  760. end
  761.  
  762. if spell.english == 'Bestial Loyalty' or spell.english == 'Call Beast' then
  763. JugInfo = ''
  764. if state.JugMode.value == 'FunguarFamiliar' or state.JugMode.value == 'Seedbed Soil' then
  765. JugInfo = 'Seedbed Soil'
  766. elseif state.JugMode.value == 'CourierCarrie' or state.JugMode.value == 'Fish Oil Broth' then
  767. JugInfo = 'Fish Oil Broth'
  768. elseif state.JugMode.value == 'AmigoSabotender' or state.JugMode.value == 'Sun Water' then
  769. JugInfo = 'Sun Water'
  770. elseif state.JugMode.value == 'NurseryNazuna' or state.JugMode.value == 'Dancing Herbal Broth' or state.JugMode.value == 'D. Herbal Broth' then
  771. JugInfo = 'D. Herbal Broth'
  772. elseif state.JugMode.value == 'CraftyClyvonne' or state.JugMode.value == 'Cunning Brain Broth' or state.JugMode.value == 'Cng. Brain Broth' then
  773. JugInfo = 'Cng. Brain Broth'
  774. elseif state.JugMode.value == 'PrestoJulio' or state.JugMode.value == 'Chirping Grasshopper Broth' or state.JugMode.value == 'C. Grass Broth' then
  775. JugInfo = 'C. Grass Broth'
  776. elseif state.JugMode.value == 'SwiftSieghard' or state.JugMode.value == 'Mellow Bird Broth' or state.JugMode.value == 'Mlw. Bird Broth' then
  777. JugInfo = 'Mlw. Bird Broth'
  778. elseif state.JugMode.value == 'MailbusterCetas' or state.JugMode.value == 'Goblin Bug Broth' or state.JugMode.value == 'Gob. Bug Broth' then
  779. JugInfo = 'Gob. Bug Broth'
  780. elseif state.JugMode.value == 'AudaciousAnna' or state.JugMode.value == 'Bubbling Carrion Broth' then
  781. JugInfo = 'B. Carrion Broth'
  782. elseif state.JugMode.value == 'TurbidToloi' or state.JugMode.value == 'Auroral Broth' then
  783. JugInfo = 'Auroral Broth'
  784. elseif state.JugMode.value == 'SlipperySilas' or state.JugMode.value == 'Wormy Broth' then
  785. JugInfo = 'Wormy Broth'
  786. elseif state.JugMode.value == 'LuckyLulush' or state.JugMode.value == 'Lucky Carrot Broth' or state.JugMode.value == 'L. Carrot Broth' then
  787. JugInfo = 'L. Carrot Broth'
  788. elseif state.JugMode.value == 'DipperYuly' or state.JugMode.value == 'Wool Grease' then
  789. JugInfo = 'Wool Grease'
  790. elseif state.JugMode.value == 'FlowerpotMerle' or state.JugMode.value == 'Vermihumus' then
  791. JugInfo = 'Vermihumus'
  792. elseif state.JugMode.value == 'DapperMac' or state.JugMode.value == 'Briny Broth' then
  793. JugInfo = 'Briny Broth'
  794. elseif state.JugMode.value == 'DiscreetLouise' or state.JugMode.value == 'Deepbed Soil' then
  795. JugInfo = 'Deepbed Soil'
  796. elseif state.JugMode.value == 'FatsoFargann' or state.JugMode.value == 'Curdled Plasma Broth' or state.JugMode.value == 'C. Plasma Broth' then
  797. JugInfo = 'C. Plasma Broth'
  798. elseif state.JugMode.value == 'FaithfulFalcorr' or state.JugMode.value == 'Lucky Broth' then
  799. JugInfo = 'Lucky Broth'
  800. elseif state.JugMode.value == 'BugeyedBroncha' or state.JugMode.value == 'Savage Mole Broth' or state.JugMode.value == 'Svg. Mole Broth' then
  801. JugInfo = 'Svg. Mole Broth'
  802. elseif state.JugMode.value == 'BloodclawShasra' or state.JugMode.value == 'Razor Brain Broth' or state.JugMode.value == 'Rzr. Brain Broth' then
  803. JugInfo = 'Rzr. Brain Broth'
  804. elseif state.JugMode.value == 'GorefangHobs' or state.JugMode.value == 'Burning Carrion Broth' then
  805. JugInfo = 'B. Carrion Broth'
  806. elseif state.JugMode.value == 'GooeyGerard' or state.JugMode.value == 'Cloudy Wheat Broth' or state.JugMode.value == 'Cl. Wheat Broth' then
  807. JugInfo = 'Cl. Wheat Broth'
  808. elseif state.JugMode.value == 'CrudeRaphie' or state.JugMode.value == 'Shadowy Broth' then
  809. JugInfo = 'Shadowy Broth'
  810. elseif state.JugMode.value == 'DroopyDortwin' or state.JugMode.value == 'Swirling Broth' then
  811. JugInfo = 'Swirling Broth'
  812. elseif state.JugMode.value == 'PonderingPeter' or state.JugMode.value == 'Viscous Broth' or state.JugMode.value == 'Vis. Broth' then
  813. JugInfo = 'Vis. Broth'
  814. elseif state.JugMode.value == 'SunburstMalfik' or state.JugMode.value == 'Shimmering Broth' then
  815. JugInfo = 'Shimmering Broth'
  816. elseif state.JugMode.value == 'AgedAngus' or state.JugMode.value == 'Fermented Broth' or state.JugMode.value == 'Ferm. Broth' then
  817. JugInfo = 'Ferm. Broth'
  818. elseif state.JugMode.value == 'WarlikePatrick' or state.JugMode.value == 'Livid Broth' then
  819. JugInfo = 'Livid Broth'
  820. elseif state.JugMode.value == 'ScissorlegXerin' or state.JugMode.value == 'Spicy Broth' then
  821. JugInfo = 'Spicy Broth'
  822. elseif state.JugMode.value == 'BouncingBertha' or state.JugMode.value == 'Bubbly Broth' then
  823. JugInfo = 'Bubbly Broth'
  824. elseif state.JugMode.value == 'RhymingShizuna' or state.JugMode.value == 'Lyrical Broth' then
  825. JugInfo = 'Lyrical Broth'
  826. elseif state.JugMode.value == 'AttentiveIbuki' or state.JugMode.value == 'Salubrious Broth' then
  827. JugInfo = 'Salubrious Broth'
  828. elseif state.JugMode.value == 'SwoopingZhivago' or state.JugMode.value == 'Windy Greens' then
  829. JugInfo = 'Windy Greens'
  830. elseif state.JugMode.value == 'AmiableRoche' or state.JugMode.value == 'Airy Broth' then
  831. JugInfo = 'Airy Broth'
  832. elseif state.JugMode.value == 'HeraldHenry' or state.JugMode.value == 'Translucent Broth' or state.JugMode.value == 'Trans. Broth' then
  833. JugInfo = 'Trans. Broth'
  834. elseif state.JugMode.value == 'BrainyWaluis' or state.JugMode.value == 'Crumbly Soil' then
  835. JugInfo = 'Crumbly Soil'
  836. elseif state.JugMode.value == 'HeadbreakerKen' or state.JugMode.value == 'Blackwater Broth' then
  837. JugInfo = 'Blackwater Broth'
  838. elseif state.JugMode.value == 'RedolentCandi' or state.JugMode.value == 'Electrified Broth' then
  839. JugInfo = 'Electrified Broth'
  840. elseif state.JugMode.value == 'AlluringHoney' or state.JugMode.value == 'Bug-Ridden Broth' then
  841. JugInfo = 'Bug-Ridden Broth'
  842. elseif state.JugMode.value == 'CaringKiyomaro' or state.JugMode.value == 'Fizzy Broth' then
  843. JugInfo = 'Fizzy Broth'
  844. elseif state.JugMode.value == 'VivaciousVickie' or state.JugMode.value == 'Tantalizing Broth' or state.JugMode.value == 'Tant. Broth' then
  845. JugInfo = 'Tant. Broth'
  846. elseif state.JugMode.value == 'HurlerPercival' or state.JugMode.value == 'Pale Sap' then
  847. JugInfo = 'Pale Sap'
  848. elseif state.JugMode.value == 'BlackbeardRandy' or state.JugMode.value == 'Meaty Broth' then
  849. JugInfo = 'Meaty Broth'
  850. elseif state.JugMode.value == 'GenerousArthur' or state.JugMode.value == 'Dire Broth' then
  851. JugInfo = 'Dire Broth'
  852. elseif state.JugMode.value == 'ThreestarLynn' or state.JugMode.value == 'Muddy Broth' then
  853. JugInfo = 'Muddy Broth'
  854. elseif state.JugMode.value == 'BraveHeroGlenn' or state.JugMode.value == 'Wispy Broth' then
  855. JugInfo = 'Wispy Broth'
  856. elseif state.JugMode.value == 'SharpwitHermes' or state.JugMode.value == 'Saline Broth' then
  857. JugInfo = 'Saline Broth'
  858. elseif state.JugMode.value == 'ColibriFamiliar' or state.JugMode.value == 'Sugary Broth' then
  859. JugInfo = 'Sugary Broth'
  860. elseif state.JugMode.value == 'ChoralLeera' or state.JugMode.value == 'Glazed Broth' then
  861. JugInfo = 'Glazed Broth'
  862. elseif state.JugMode.value == 'SpiderFamiliar' or state.JugMode.value == 'Sticky Webbing' then
  863. JugInfo = 'Sticky Webbing'
  864. elseif state.JugMode.value == 'GussyHachirobe' or state.JugMode.value == 'Slimy Webbing' then
  865. JugInfo = 'Slimy Webbing'
  866. elseif state.JugMode.value == 'AcuexFamiliar' or state.JugMode.value == 'Poisonous Broth' then
  867. JugInfo = 'Poisonous Broth'
  868. elseif state.JugMode.value == 'FluffyBredo' or state.JugMode.value == 'Venomous Broth' then
  869. JugInfo = 'Venomous Broth'
  870. elseif state.JugMode.value == 'SuspiciousAlice' or state.JugMode.value == 'Furious Broth' then
  871. JugInfo = 'Furious Broth'
  872. elseif state.JugMode.value == 'AnklebiterJedd' or state.JugMode.value == 'Crackling Broth' then
  873. JugInfo = 'Crackling Broth'
  874. elseif state.JugMode.value == 'FleetReinhard' or state.JugMode.value == 'Rapid Broth' then
  875. JugInfo = 'Rapid Broth'
  876. elseif state.JugMode.value == 'CursedAnnabelle' or state.JugMode.value == 'Creepy Broth' then
  877. JugInfo = 'Creepy Broth'
  878. elseif state.JugMode.value == 'SurgingStorm' or state.JugMode.value == 'Insipid Broth' then
  879. JugInfo = 'Insipid Broth'
  880. elseif state.JugMode.value == 'SubmergedIyo' or state.JugMode.value == 'Deepwater Broth' then
  881. JugInfo = 'Deepwater Broth'
  882. elseif state.JugMode.value == 'MosquitoFamiliar' or state.JugMode.value == 'Wetlands Broth' then
  883. JugInfo = 'Wetlands Broth'
  884. elseif state.JugMode.value == 'Left-HandedYoko' or state.JugMode.value == 'Heavenly Broth' then
  885. JugInfo = 'Heavenly Broth'
  886. end
  887. if spell.english == "Call Beast" and call_beast_cancel:contains(JugInfo) then
  888. add_to_chat(123, spell.name..' Canceled: [HQ Jug Pet]')
  889. return
  890. end
  891. equip({ammo=JugInfo})
  892. end
  893.  
  894. if player.equipment.main == 'Aymur' then
  895. custom_aftermath_timers_precast(spell)
  896. end
  897.  
  898. if spell.type == "WeaponSkill" and spell.name ~= 'Mistral Axe' and spell.name ~= 'Bora Axe' and spell.target.distance > target_distance then
  899. cancel_spell()
  900. add_to_chat(123, spell.name..' Canceled: [Out of Range]')
  901. handle_equipping_gear(player.status)
  902. return
  903. end
  904.  
  905. if spell.type == 'CorsairRoll' or spell.english == "Double-Up" then
  906. equip(sets.precast.LuzafRing)
  907. end
  908.  
  909. if spell.prefix == '/magic' or spell.prefix == '/ninjutsu' or spell.prefix == '/song' then
  910. if state.PetMode.value == 'PetOnly' then
  911. equip(sets.precast.FCNE)
  912. else
  913. equip(sets.precast.FC)
  914. end
  915. end
  916. end
  917.  
  918. function job_post_precast(spell, action, spellMap, eventArgs)
  919. -- If Killer Instinct is active during WS, equip Nukumi Gausape +1.
  920. if spell.type:lower() == 'weaponskill' and buffactive['Killer Instinct'] then
  921. equip(sets.buff['Killer Instinct'])
  922. end
  923.  
  924. if spell.english == "Primal Rend" and player.tp > 2750 then
  925. equip(sets.midcast.ExtraMAB)
  926. end
  927.  
  928. -- Equip Chaac Belt for TH+1 on common Subjob Abilities or Spells.
  929. if abilities_to_check:contains(spell.english) and state.TreasureMode.value == 'Tag' then
  930. equip(sets.THGear)
  931. end
  932. end
  933.  
  934. function job_midcast(spell, action, spellMap, eventArgs)
  935. if state.PetMode.value == 'PetOnly' then
  936. if spell.english == "Cure" or spell.english == "Cure II" or spell.english == "Cure III" or spell.english == "Cure IV" then
  937. equip(sets.CurePetOnly)
  938. end
  939. if spell.english == "Curaga" or spell.english == "Curaga II" or spell.english == "Curaga III" then
  940. equip(sets.CurePetOnly)
  941. end
  942. end
  943. end
  944.  
  945. -- Return true if we handled the aftercast work. Otherwise it will fall back
  946. -- to the general aftercast() code in Mote-Include.
  947. function job_aftercast(spell, action, spellMap, eventArgs)
  948. if spell.type == "Monster" and not spell.interrupted then
  949. if physical_ready_moves:contains(spell.name) then
  950. if state.PetMode.value == 'PetOnly' then
  951. if state.OffenseMode.value == 'MaxAcc' then
  952. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  953. equip(sets.midcast.Pet.ReadyDWNE.MaxAcc)
  954. else
  955. equip(sets.midcast.Pet.ReadyNE.MaxAcc)
  956. end
  957. elseif state.OffenseMode.value == 'HighAcc' then
  958. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  959. equip(sets.midcast.Pet.ReadyDWNE.HighAcc, sets.midcast.Pet[state.CorrelationMode.value])
  960. else
  961. equip(sets.midcast.Pet.ReadyNE.HighAcc, sets.midcast.Pet[state.CorrelationMode.value])
  962. end
  963. elseif state.OffenseMode.value == 'MedAcc' then
  964. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  965. equip(sets.midcast.Pet.ReadyDWNE.MedAcc, sets.midcast.Pet[state.CorrelationMode.value])
  966. else
  967. equip(sets.midcast.Pet.ReadyNE.MedAcc, sets.midcast.Pet[state.CorrelationMode.value])
  968. end
  969. else
  970. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  971. if multi_hit_ready_moves:contains(spell.name) then
  972. equip(set_combine(sets.midcast.Pet.MultiStrikeDWNE, sets.midcast.Pet[state.CorrelationMode.value]))
  973. else
  974. equip(set_combine(sets.midcast.Pet.ReadyDWNE, sets.midcast.Pet[state.CorrelationMode.value]))
  975. end
  976. else
  977. if multi_hit_ready_moves:contains(spell.name) then
  978. equip(set_combine(sets.midcast.Pet.MultiStrikeNE, sets.midcast.Pet[state.CorrelationMode.value]))
  979. else
  980. equip(set_combine(sets.midcast.Pet.ReadyNE, sets.midcast.Pet[state.CorrelationMode.value]))
  981. end
  982. end
  983. end
  984. else
  985. if state.OffenseMode.value == 'MaxAcc' then
  986. equip(sets.midcast.Pet.MaxAcc)
  987. elseif state.OffenseMode.value == 'HighAcc' then
  988. equip(sets.midcast.Pet.HighAcc, sets.midcast.Pet[state.CorrelationMode.value])
  989. elseif state.OffenseMode.value == 'MedAcc' then
  990. equip(sets.midcast.Pet.MedAcc, sets.midcast.Pet[state.CorrelationMode.value])
  991. else
  992. if multi_hit_ready_moves:contains(spell.name) then
  993. equip(set_combine(sets.midcast.Pet.MultiStrike, sets.midcast.Pet[state.CorrelationMode.value]))
  994. else
  995. equip(set_combine(sets.midcast.Pet.WS, sets.midcast.Pet[state.CorrelationMode.value]))
  996. end
  997. end
  998. end
  999. end
  1000.  
  1001. if magic_atk_ready_moves:contains(spell.name) then
  1002. if state.PetMode.value == 'PetOnly' then
  1003. if state.OffenseMode.value == 'MaxAcc' then
  1004. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1005. equip(sets.midcast.Pet.MagicAtkReadyDWNE.MaxAcc)
  1006. else
  1007. equip(sets.midcast.Pet.MagicAtkReadyNE.MaxAcc)
  1008. end
  1009. elseif state.OffenseMode.value == 'HighAcc' then
  1010. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1011. equip(sets.midcast.Pet.MagicAtkReadyDWNE.HighAcc)
  1012. else
  1013. equip(sets.midcast.Pet.MagicAtkReadyNE.HighAcc)
  1014. end
  1015. elseif state.OffenseMode.value == 'MedAcc' then
  1016. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1017. equip(sets.midcast.Pet.MagicAtkReadyDWNE.MedAcc)
  1018. else
  1019. equip(sets.midcast.Pet.MagicAtkReadyNE.MedAcc)
  1020. end
  1021. else
  1022. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1023. equip(sets.midcast.Pet.MagicAtkReadyDWNE)
  1024. else
  1025. equip(sets.midcast.Pet.MagicAtkReadyNE)
  1026. end
  1027. end
  1028. else
  1029. equip(sets.midcast.Pet.MagicAtkReady)
  1030. end
  1031. end
  1032.  
  1033. if magic_acc_ready_moves:contains(spell.name) then
  1034. if state.PetMode.value == 'PetOnly' then
  1035. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1036. equip(sets.midcast.Pet.MagicAccReadyDWNE)
  1037. else
  1038. equip(sets.midcast.Pet.MagicAccReadyNE)
  1039. end
  1040. else
  1041. equip(sets.midcast.Pet.MagicAccReady)
  1042. end
  1043. end
  1044.  
  1045. -- If Pet TP, before bonuses, is less than a certain value then equip Nukumi Manoplas +1
  1046. if physical_ready_moves:contains(spell.name) and state.OffenseMode.value ~= 'MaxAcc' then
  1047. if tp_based_ready_moves:contains(spell.name) and PetJob == 'Warrior' and pet_tp < 1900 then
  1048. equip(sets.midcast.Pet.TPBonus)
  1049. elseif tp_based_ready_moves:contains(spell.name) and PetJob ~= 'Warrior' and pet_tp < 2400 then
  1050. equip(sets.midcast.Pet.TPBonus)
  1051. end
  1052. end
  1053.  
  1054. if magic_atk_ready_moves:contains(spell.name) and state.PetMode.value == 'PetOnly' then
  1055. if tp_based_ready_moves:contains(spell.name) and PetJob == 'Warrior' and pet_tp > 2000 then
  1056. equip(sets.UnleashMABAxes)
  1057. elseif tp_based_ready_moves:contains(spell.name) and PetJob ~= 'Warrior' and pet_tp > 2500 then
  1058. equip(sets.UnleashMABAxes)
  1059. end
  1060. end
  1061. eventArgs.handled = true
  1062. end
  1063.  
  1064. -- Create custom timers for Pet Buffs.
  1065. if pet_buff_moves:contains(spell.name) and DisplayPetBuffTimers == 'true' then
  1066. if not spell.interrupted then
  1067. pet_buff_timer(spell)
  1068. end
  1069. end
  1070.  
  1071. if spell.english == 'Fight' or spell.english == 'Bestial Loyalty' or spell.english == 'Call Beast' then
  1072. if not spell.interrupted then
  1073. pet_info_update()
  1074. end
  1075. end
  1076.  
  1077. if spell.english == "Leave" and not spell.interrupted then
  1078. clear_pet_buff_timers()
  1079. PetName = 'None';PetJob = 'None';PetInfo = 'None';ReadyMoveOne = 'None';ReadyMoveTwo = 'None';ReadyMoveThree = 'None'
  1080. end
  1081.  
  1082. if player.equipment.main == 'Aymur' then
  1083. custom_aftermath_timers_aftercast(spell)
  1084. end
  1085.  
  1086. if player.status ~= 'Idle' and state.PetMode.value == 'PetOnly' and spell.type ~= "Monster" then
  1087. if pet.status == "Engaged" then
  1088. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1089. if state.DefenseMode.value == "Physical" and state.PhysicalDefenseMode.value == "PetPDT" then
  1090. equip(sets.PDTAxes)
  1091. elseif state.DefenseMode.value == "Magical" and state.MagicalDefenseMode.value == "PetMDT" then
  1092. equip(sets.MDTAxes)
  1093. else
  1094. equip(sets.TPAxes)
  1095. end
  1096. else
  1097. if state.DefenseMode.value == "Physical" and state.PhysicalDefenseMode.value == "PetPDT" then
  1098. equip(sets.PDTAxeShield)
  1099. elseif state.DefenseMode.value == "Magical" and state.MagicalDefenseMode.value == "PetMDT" then
  1100. equip(sets.MDTAxeShield)
  1101. else
  1102. equip(sets.TPAxeShield)
  1103. end
  1104. end
  1105. end
  1106. if pet.status ~= "Engaged" then
  1107. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1108. if state.DefenseMode.value == "Physical" and state.PhysicalDefenseMode.value == "PetPDT" then
  1109. equip(sets.PDTAxes)
  1110. elseif state.DefenseMode.value == "Magical" and state.MagicalDefenseMode.value == "PetMDT" then
  1111. equip(sets.MDTAxes)
  1112. else
  1113. equip(sets.IdleAxes)
  1114. end
  1115. else
  1116. if state.DefenseMode.value == "Physical" and state.PhysicalDefenseMode.value == "PetPDT" then
  1117. equip(sets.PDTAxeShield)
  1118. elseif state.DefenseMode.value == "Magical" and state.MagicalDefenseMode.value == "PetMDT" then
  1119. equip(sets.MDTAxeShield)
  1120. else
  1121. equip(sets.IdleAxeShield)
  1122. end
  1123. end
  1124. end
  1125. end
  1126. end
  1127.  
  1128. function job_pet_midcast(spell, action, spellMap, eventArgs)
  1129.  
  1130. end
  1131.  
  1132. function job_pet_aftercast(spell, action, spellMap, eventArgs)
  1133. if pet_buff_moves:contains(spell.name) and DisplayPetBuffTimers == 'true' then
  1134. -- Pet TP calculations for Ready Buff Durations
  1135. local TP_Amount = 1000
  1136. if pet_tp < 1000 then TP_Amount = TP_Amount + TP_Gift_Bonus;end
  1137. if pet_tp > 1000 then TP_Amount = pet_tp + TP_Gift_Bonus;end
  1138. if player.equipment.hands == "Ferine Manoplas +1" then TP_Amount = TP_Amount + 250;end
  1139. if player.equipment.hands == "Ferine Manoplas +2" then TP_Amount = TP_Amount + 500;end
  1140. if player.equipment.hands == "Nukumi Manoplas" then TP_Amount = TP_Amount + 550;end
  1141. if player.equipment.hands == "Nukumi Manoplas +1" then TP_Amount = TP_Amount + 600;end
  1142. if player.equipment.main == "Aymur" or player.equipment.sub == "Aymur" then TP_Amount = TP_Amount + 500;end
  1143. if player.equipment.main == "Kumbhakarna" then TP_Amount = TP_Amount + TP_Bonus_Main;end
  1144. if player.equipment.sub == "Kumbhakarna" then TP_Amount = TP_Amount + TP_Bonus_Sub;end
  1145. if TP_Amount > 3000 then TP_Amount = 3000;end
  1146.  
  1147. if spell.english == 'Bubble Curtain' then
  1148. local TP_Buff_Duration = math.floor((TP_Amount - 1000)* 0.09) + BubbleCurtainDuration
  1149. send_command('timers c "'..spell.english..'" '..TP_Buff_Duration..' down '..BubbleCurtainIcon..'')
  1150. elseif spell.english == 'Scissor Guard' then
  1151. local TP_Buff_Duration = math.floor(TP_Amount * 0.06)
  1152. send_command('timers c "'..spell.english..'" '..TP_Buff_Duration..' down '..ScissorGuardIcon..'')
  1153. elseif spell.english == 'Secretion' then
  1154. TP_Amount = TP_Amount + 500
  1155. if TP_Amount > 3000 then TP_Amount = 3000;end
  1156. local TP_Buff_Duration = math.floor(TP_Amount * 0.18)
  1157. send_command('timers c "Secretion" '..TP_Buff_Duration..' down '..SecretionIcon..'')
  1158. elseif spell.english == 'Rage' then
  1159. TP_Amount = TP_Amount + 500
  1160. if TP_Amount > 3000 then TP_Amount = 3000;end
  1161. local TP_Buff_Duration = math.floor(TP_Amount * 0.18)
  1162. send_command('timers c "'..spell.english..'" '..TP_Buff_Duration..' down '..RageIcon..'')
  1163. elseif spell.english == 'Rhino Guard' then
  1164. local TP_Buff_Duration = math.floor(TP_Amount * 0.18)
  1165. send_command('timers c "Rhino Guard" '..TP_Buff_Duration..' down '..RhinoGuardIcon..'')
  1166. elseif spell.english == 'Zealous Snort' then
  1167. local TP_Buff_Duration = math.floor(TP_Amount * 0.06)
  1168. send_command('timers c "'..spell.english..'" '..TP_Buff_Duration..' down '..ZealousSnortIcon..'')
  1169. end
  1170. end
  1171.  
  1172. if player.status == 'Engaged' and state.PetMode.value == 'PetOnly' then
  1173. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1174. if state.DefenseMode.value == "Physical" and state.PhysicalDefenseMode.value == "PetPDT" then
  1175. equip(sets.PDTAxes)
  1176. elseif state.DefenseMode.value == "Magical" and state.MagicalDefenseMode.value == "PetMDT" then
  1177. equip(sets.MDTAxes)
  1178. else
  1179. equip(sets.TPAxes)
  1180. end
  1181. else
  1182. if state.DefenseMode.value == "Physical" and state.PhysicalDefenseMode.value == "PetPDT" then
  1183. equip(sets.PDTAxeShield)
  1184. elseif state.DefenseMode.value == "Magical" and state.MagicalDefenseMode.value == "PetMDT" then
  1185. equip(sets.MDTAxeShield)
  1186. else
  1187. equip(sets.TPAxeShield)
  1188. end
  1189. end
  1190. end
  1191. end
  1192.  
  1193. -------------------------------------------------------------------------------------------------------------------
  1194. -- Customization hook for idle sets.
  1195. -------------------------------------------------------------------------------------------------------------------
  1196.  
  1197. function customize_idle_set(idleSet)
  1198. if state.PetMode.value == 'PetOnly' then
  1199. if pet.status == "Engaged" then
  1200. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1201. if state.DefenseMode.value == "Physical" and state.PhysicalDefenseMode.value == "PetPDT" then
  1202. idleSet = set_combine(idleSet, sets.PDTAxes)
  1203. elseif state.DefenseMode.value == "Magical" and state.MagicalDefenseMode.value == "PetMDT" then
  1204. idleSet = set_combine(idleSet, sets.MDTAxes)
  1205. else
  1206. idleSet = set_combine(idleSet, sets.TPAxes)
  1207. end
  1208. else
  1209. if state.DefenseMode.value == "Physical" and state.PhysicalDefenseMode.value == "PetPDT" then
  1210. idleSet = set_combine(idleSet, sets.PDTAxeShield)
  1211. elseif state.DefenseMode.value == "Magical" and state.MagicalDefenseMode.value == "PetMDT" then
  1212. idleSet = set_combine(idleSet, sets.MDTAxeShield)
  1213. else
  1214. idleSet = set_combine(idleSet, sets.TPAxeShield)
  1215. end
  1216. end
  1217. end
  1218. if pet.status ~= "Engaged" then
  1219. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1220. if state.DefenseMode.value == "Physical" and state.PhysicalDefenseMode.value == "PetPDT" then
  1221. idleSet = set_combine(idleSet, sets.PDTAxes)
  1222. elseif state.DefenseMode.value == "Magical" and state.MagicalDefenseMode.value == "PetMDT" then
  1223. idleSet = set_combine(idleSet, sets.MDTAxes)
  1224. else
  1225. idleSet = set_combine(idleSet, sets.IdleAxes)
  1226. end
  1227. else
  1228. if state.DefenseMode.value == "Physical" and state.PhysicalDefenseMode.value == "PetPDT" then
  1229. idleSet = set_combine(idleSet, sets.PDTAxeShield)
  1230. elseif state.DefenseMode.value == "Magical" and state.MagicalDefenseMode.value == "PetMDT" then
  1231. idleSet = set_combine(idleSet, sets.MDTAxeShield)
  1232. else
  1233. idleSet = set_combine(idleSet, sets.IdleAxeShield)
  1234. end
  1235. end
  1236. end
  1237. end
  1238. return idleSet
  1239. end
  1240.  
  1241. -------------------------------------------------------------------------------------------------------------------
  1242. -- Hooks for Reward, Correlation, Treasure Hunter, and Pet Mode handling.
  1243. -------------------------------------------------------------------------------------------------------------------
  1244.  
  1245. function job_state_change(stateField, newValue, oldValue)
  1246. if stateField == 'Correlation Mode' then
  1247. state.CorrelationMode:set(newValue)
  1248. elseif stateField == 'Treasure Mode' then
  1249. state.TreasureMode:set(newValue)
  1250. elseif stateField == 'Pet Mode' then
  1251. state.CombatWeapon:set(newValue)
  1252. end
  1253. end
  1254.  
  1255. function get_custom_wsmode(spell, spellMap, default_wsmode)
  1256. if default_wsmode == 'Normal' then
  1257. if spell.english == "Ruinator" and (world.day_element == 'Water' or world.day_element == 'Wind' or world.day_element == 'Ice') then
  1258. return 'Gavialis'
  1259. end
  1260. end
  1261. end
  1262.  
  1263. -------------------------------------------------------------------------------------------------------------------
  1264. -- User code that supplements self-commands.
  1265. -------------------------------------------------------------------------------------------------------------------
  1266.  
  1267. -- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
  1268. function job_handle_equipping_gear(playerStatus, eventArgs)
  1269. -- Equipping a Capacity Points Mantle locks it until it is manually unequipped.
  1270. if player.equipment.back == 'Mecisto. Mantle' or player.equipment.back == 'Aptitude Mantle' or player.equipment.back == 'Aptitude Mantle +1' then
  1271. disable('back')
  1272. else
  1273. enable('back')
  1274. end
  1275. end
  1276.  
  1277. -- Called by the 'update' self-command, for common needs.
  1278. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  1279. function job_update(cmdParams, eventArgs)
  1280. get_combat_form()
  1281. get_melee_groups()
  1282. pet_info_update()
  1283. update_display_mode_info()
  1284.  
  1285. if player.status ~= 'Idle' and state.PetMode.value == 'PetOnly' then
  1286. if pet.status == "Engaged" then
  1287. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1288. if state.DefenseMode.value == "Physical" and state.PhysicalDefenseMode.value == "PetPDT" then
  1289. equip(sets.PDTAxes)
  1290. elseif state.DefenseMode.value == "Magical" and state.MagicalDefenseMode.value == "PetMDT" then
  1291. equip(sets.MDTAxes)
  1292. else
  1293. equip(sets.TPAxes)
  1294. end
  1295. else
  1296. if state.DefenseMode.value == "Physical" and state.PhysicalDefenseMode.value == "PetPDT" then
  1297. equip(sets.PDTAxeShield)
  1298. elseif state.DefenseMode.value == "Magical" and state.MagicalDefenseMode.value == "PetMDT" then
  1299. equip(sets.MDTAxeShield)
  1300. else
  1301. equip(sets.TPAxeShield)
  1302. end
  1303. end
  1304. end
  1305. if pet.status ~= "Engaged" then
  1306. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1307. if state.DefenseMode.value == "Physical" and state.PhysicalDefenseMode.value == "PetPDT" then
  1308. equip(sets.PDTAxes)
  1309. elseif state.DefenseMode.value == "Magical" and state.MagicalDefenseMode.value == "PetMDT" then
  1310. equip(sets.MDTAxes)
  1311. else
  1312. equip(sets.IdleAxes)
  1313. end
  1314. else
  1315. if state.DefenseMode.value == "Physical" and state.PhysicalDefenseMode.value == "PetPDT" then
  1316. equip(sets.PDTAxeShield)
  1317. elseif state.DefenseMode.value == "Magical" and state.MagicalDefenseMode.value == "PetMDT" then
  1318. equip(sets.MDTAxeShield)
  1319. else
  1320. equip(sets.IdleAxeShield)
  1321. end
  1322. end
  1323. end
  1324. end
  1325. end
  1326.  
  1327. -- Updates gear based on pet status changes.
  1328. function job_pet_status_change(newStatus, oldStatus, eventArgs)
  1329. if newStatus == 'Idle' or newStatus == 'Engaged' then
  1330. handle_equipping_gear(player.status)
  1331. end
  1332.  
  1333. if pet.hpp == 0 then
  1334. clear_pet_buff_timers()
  1335. PetName = 'None';PetJob = 'None';PetInfo = 'None';ReadyMoveOne = 'None';ReadyMoveTwo = 'None';ReadyMoveThree = 'None'
  1336. end
  1337.  
  1338. pet_info_update()
  1339. end
  1340.  
  1341. -------------------------------------------------------------------------------------------------------------------
  1342. -- Ready Move Presets and Pet TP Evaluation Functions - Credit to Bomberto and Verda
  1343. -------------------------------------------------------------------------------------------------------------------
  1344.  
  1345. pet_tp=0
  1346. function job_self_command(cmdParams, eventArgs)
  1347. if cmdParams[1]:lower() == 'ready' then
  1348. ready_move(cmdParams)
  1349. eventArgs.handled = true
  1350. end
  1351. if cmdParams[1] == 'pet_tp' then
  1352. pet_tp = tonumber(cmdParams[2])
  1353. end
  1354. end
  1355.  
  1356. function ready_move(cmdParams)
  1357. local move = cmdParams[2]:lower()
  1358.  
  1359. local ReadyMove = ''
  1360. if move == 'one' then
  1361. ReadyMove = ReadyMoveOne
  1362. elseif move == 'two' then
  1363. ReadyMove = ReadyMoveTwo
  1364. else
  1365. ReadyMove = ReadyMoveThree
  1366. end
  1367.  
  1368. send_command('input /pet "'.. ReadyMove ..'" <me>')
  1369. end
  1370.  
  1371. pet_tp = 0
  1372. --Fix missing Pet.TP field by getting the packets from the fields lib
  1373. packets = require('packets')
  1374. function update_pet_tp(id,data)
  1375. if id == 0x068 then
  1376. pet_tp = 0
  1377. local update = packets.parse('incoming', data)
  1378. pet_tp = update["Pet TP"]
  1379. windower.send_command('lua c gearswap c pet_tp '..pet_tp)
  1380. end
  1381. end
  1382. id = windower.raw_register_event('incoming chunk', update_pet_tp)
  1383.  
  1384. -------------------------------------------------------------------------------------------------------------------
  1385. -- Current Job State Display
  1386. -------------------------------------------------------------------------------------------------------------------
  1387.  
  1388. -- Set eventArgs.handled to true if we don't want the automatic display to be run.
  1389. function display_current_job_state(eventArgs)
  1390. local msg = 'Melee'
  1391.  
  1392. if state.CombatForm.has_value then
  1393. msg = msg .. ' (' .. state.CombatForm.value .. ')'
  1394. end
  1395.  
  1396. msg = msg .. ': '
  1397.  
  1398. msg = msg .. state.OffenseMode.value
  1399. if state.HybridMode.value ~= 'Normal' then
  1400. msg = msg .. '/' .. state.HybridMode.value
  1401. end
  1402. msg = msg .. ', WS: ' .. state.WeaponskillMode.value
  1403.  
  1404. if state.DefenseMode.value ~= 'None' then
  1405. msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  1406. end
  1407.  
  1408. if state.Kiting.value then
  1409. msg = msg .. ', Kiting'
  1410. end
  1411.  
  1412. msg = msg .. ', Corr.: '..state.CorrelationMode.value
  1413.  
  1414. if state.JugMode.value ~= 'None' then
  1415. add_to_chat(8,'-- Jug Pet: '.. PetName ..' -- (Pet Info: '.. PetInfo ..', '.. PetJob ..')')
  1416. end
  1417.  
  1418. add_to_chat(28,'Ready Moves: 1.'.. ReadyMoveOne ..' 2.'.. ReadyMoveTwo ..' 3.'.. ReadyMoveThree ..'')
  1419. add_to_chat(122, msg)
  1420.  
  1421. eventArgs.handled = true
  1422. end
  1423.  
  1424. -------------------------------------------------------------------------------------------------------------------
  1425. -- Utility functions specific to this job.
  1426. -------------------------------------------------------------------------------------------------------------------
  1427.  
  1428. function pet_info_update()
  1429. if pet.isvalid then
  1430. PetName = pet.name
  1431.  
  1432. if pet.name == 'DroopyDortwin' or pet.name == 'PonderingPeter' or pet.name == 'HareFamiliar' or pet.name == 'KeenearedSteffi' or pet.name == 'LuckyLulush' then
  1433. PetInfo = "Rabbit, Beast";PetJob = 'Warrior';ReadyMoveOne = 'Foot Kick';ReadyMoveTwo = 'Whirl Claws';ReadyMoveThree = 'Wild Carrot'
  1434. elseif pet.name == 'SunburstMalfik' or pet.name == 'AgedAngus' or pet.name == 'HeraldHenry' or pet.name == 'CrabFamiliar' or pet.name == 'CourierCarrie' then
  1435. PetInfo = "Crab, Aquan";PetJob = 'Paladin';ReadyMoveOne = 'Big Scissors';ReadyMoveTwo = 'Scissor Guard';ReadyMoveThree = 'Bubble Curtain'
  1436. elseif pet.name == 'WarlikePatrick' or pet.name == 'LizardFamiliar' or pet.name == 'ColdbloodedComo' or pet.name == 'AudaciousAnna' then
  1437. PetInfo = "Lizard, Lizard";PetJob = 'Warrior';ReadyMoveOne = 'Tail Blow';ReadyMoveTwo = 'Brain Crush';ReadyMoveThree = 'Fireball'
  1438. elseif pet.name == 'ScissorlegXerin' or pet.name == 'BouncingBertha' then
  1439. PetInfo = "Chapuli, Vermin";PetJob = 'Warrior';ReadyMoveOne = 'Sensilla Blades';ReadyMoveTwo = 'Tegmina Buffet';ReadyMoveThree = 'Tegmina Buffet'
  1440. elseif pet.name == 'RhymingShizuna' or pet.name == 'SheepFamiliar' or pet.name == 'LullabyMelodia' or pet.name == 'NurseryNazuna' then
  1441. PetInfo = "Sheep, Beast";PetJob = 'Warrior';ReadyMoveOne = 'Lamb Chop';ReadyMoveTwo = 'Rage';ReadyMoveThree = 'Sheep Song'
  1442. elseif pet.name == 'AttentiveIbuki' or pet.name == 'SwoopingZhivago' then
  1443. PetInfo = "Tulfaire, Bird";PetJob = 'Warrior';ReadyMoveOne = 'Swooping Frenzy';ReadyMoveTwo = 'Pentapeck';ReadyMoveThree = 'Molting Plumage'
  1444. elseif pet.name == 'AmiableRoche' or pet.name == 'TurbidToloi' then
  1445. PetInfo = "Pugil, Aquan";PetJob = 'Warrior';ReadyMoveOne = 'Recoil Dive';ReadyMoveTwo = 'Water Wall';ReadyMoveThree = 'Intimidate'
  1446. elseif pet.name == 'BrainyWaluis' or pet.name == 'FunguarFamiliar' or pet.name == 'DiscreetLouise' then
  1447. PetInfo = "Funguar, Plantoid";PetJob = 'Warrior';ReadyMoveOne = 'Frogkick';ReadyMoveTwo = 'Spore';ReadyMoveThree = 'Silence Gas'
  1448. elseif pet.name == 'HeadbreakerKen' or pet.name == 'MayflyFamiliar' or pet.name == 'ShellbusterOrob' or pet.name == 'MailbusterCetas' then
  1449. PetInfo = "Fly, Vermin";PetJob = 'Warrior';ReadyMoveOne = 'Somersault';ReadyMoveTwo = 'Cursed Sphere';ReadyMoveThree = 'Venom'
  1450. elseif pet.name == 'RedolentCandi' or pet.name == 'AlluringHoney' then
  1451. PetInfo = "Snapweed, Plantoid";PetJob = 'Warrior';ReadyMoveOne = 'Tickling Tendrils';ReadyMoveTwo = 'Stink Bomb';ReadyMoveThree = 'Nectarous Deluge'
  1452. elseif pet.name == 'CaringKiyomaro' or pet.name == 'VivaciousVickie' then
  1453. PetInfo = "Raaz, Beast";PetJob = 'Monk';ReadyMoveOne = 'Sweeping Gouge';ReadyMoveTwo = 'Zealous Snort';ReadyMoveThree = 'Zealous Snort'
  1454. elseif pet.name == 'HurlerPercival' or pet.name == 'BeetleFamiliar' or pet.name == 'PanzerGalahad' then
  1455. PetInfo = "Beetle, Vermin";PetJob = 'Paladin';ReadyMoveOne = 'Power Attack';ReadyMoveTwo = 'Rhino Attack';ReadyMoveThree = 'Hi-Freq Field'
  1456. elseif pet.name == 'BlackbeardRandy' or pet.name == 'TigerFamiliar' or pet.name == 'SaberSiravarde' or pet.name == 'GorefangHobs' then
  1457. PetInfo = "Tiger, Beast";PetJob = 'Warrior';ReadyMoveOne = 'Razor Fang';ReadyMoveTwo = 'Claw Cyclone';ReadyMoveThree = 'Roar'
  1458. elseif pet.name == 'ColibriFamiliar' or pet.name == 'ChoralLeera' then
  1459. PetInfo = "Colibri, Bird";PetJob = 'Red Mage';ReadyMoveOne = 'Pecking Flurry';ReadyMoveTwo = 'Pecking Flurry';ReadyMoveThree = 'Pecking Flurry'
  1460. elseif pet.name == 'SpiderFamiliar' or pet.name == 'GussyHachirobe' then
  1461. PetInfo = "Spider, Vermin";PetJob = 'Warrior';ReadyMoveOne = 'Sickle Slash';ReadyMoveTwo = 'Acid Spray';ReadyMoveThree = 'Spider Web'
  1462. elseif pet.name == 'GenerousArthur' or pet.name == 'GooeyGerard' then
  1463. PetInfo = "Slug, Amorph";PetJob = 'Warrior';ReadyMoveOne = 'Purulent Ooze';ReadyMoveTwo = 'Corrosive Ooze';ReadyMoveThree = 'Corrosive Ooze'
  1464. elseif pet.name == 'ThreestarLynn' or pet.name == 'DipperYuly' then
  1465. PetInfo = "Ladybug, Vermin";PetJob = 'Thief';ReadyMoveOne = 'Spiral Spin';ReadyMoveTwo = 'Sudden Lunge';ReadyMoveThree = 'Noisome Powder'
  1466. elseif pet.name == 'SharpwitHermes' or pet.name == 'FlowerpotBill' or pet.name == 'FlowerpotBen' or pet.name == 'Homunculus' or pet.name == 'FlowerpotMerle' then
  1467. PetInfo = "Mandragora, Plantoid";PetJob = 'Monk';ReadyMoveOne = 'Head Butt';ReadyMoveTwo = 'Leaf Dagger';ReadyMoveThree = 'Wild Oats'
  1468. elseif pet.name == 'AcuexFamiliar' or pet.name == 'FluffyBredo' then
  1469. PetInfo = "Acuex, Amorph";PetJob = 'Black Mage';ReadyMoveOne = 'Foul Waters';ReadyMoveTwo = 'Pestilent Plume';ReadyMoveThree = 'Pestilent Plume'
  1470. elseif pet.name == 'FlytrapFamiliar' or pet.name == 'VoraciousAudrey' or pet.name == 'PrestoJulio' then
  1471. PetInfo = "Flytrap, Plantoid";PetJob = 'Warrior';ReadyMoveOne = 'Soporific';ReadyMoveTwo = 'Palsy Pollen';ReadyMoveThree = 'Gloeosuccus'
  1472. elseif pet.name == 'EftFamiliar' or pet.name == 'AmbusherAllie' or pet.name == 'BugeyedBroncha' or pet.name == 'SuspiciousAlice' then
  1473. PetInfo = "Eft, Lizard";PetJob = 'Warrior';ReadyMoveOne = 'Nimble Snap';ReadyMoveTwo = 'Cyclotail';ReadyMoveThree = 'Geist Wall'
  1474. elseif pet.name == 'AntlionFamiliar' or pet.name == 'ChopsueyChucky' or pet.name == 'CursedAnnabelle' then
  1475. PetInfo = "Antlion, Vermin";PetJob = 'Warrior';ReadyMoveOne = 'Mandibular Bite';ReadyMoveTwo = 'Venom Spray';ReadyMoveThree = 'Sandblast'
  1476. elseif pet.name == 'MiteFamiliar' or pet.name == 'LifedrinkerLars' or pet.name == 'AnklebiterJedd' then
  1477. PetInfo = "Diremite, Vermin";PetJob = 'Dark Knight';ReadyMoveOne = 'Double Claw';ReadyMoveTwo = 'Spinning Top';ReadyMoveThree = 'Filamented Hold'
  1478. elseif pet.name == 'AmigoSabotender' then
  1479. PetInfo = "Cactuar, Plantoid";PetJob = 'Warrior';ReadyMoveOne = 'Needle Shot';ReadyMoveTwo = '??? Needles';ReadyMoveThree = '??? Needles'
  1480. elseif pet.name == 'CraftyClyvonne' or pet.name == 'BloodclawShashra' then
  1481. PetInfo = "Lynx, Beast";PetJob = 'Warrior';ReadyMoveOne = 'Blaster';ReadyMoveTwo = 'Chaotic Eye';ReadyMoveThree = 'Charged Whisker'
  1482. elseif pet.name == 'SwiftSieghard' or pet.name == 'FleetReinhard' then
  1483. PetInfo = "Raptor, Lizard";PetJob = 'Warrior';ReadyMoveOne = 'Scythe Tail';ReadyMoveTwo = 'Ripper Fang';ReadyMoveThree = 'Chomp Rush'
  1484. elseif pet.name == 'DapperMac' or pet.name == 'SurgingStorm' or pet.name == 'SubmergedIyo' then
  1485. PetInfo = "Apkallu, Bird";PetJob = 'Monk';ReadyMoveOne = 'Beak Lunge';ReadyMoveTwo = 'Wing Slap';ReadyMoveThree = 'Wing Slap'
  1486. elseif pet.name == 'FatsoFargann' then
  1487. PetInfo = "Leech, Amorph";PetJob = 'Warrior';ReadyMoveOne = 'Suction';ReadyMoveTwo = 'Acid Mist';ReadyMoveThree = 'Drain Kiss'
  1488. elseif pet.name == 'FaithfulFalcorr' then
  1489. PetInfo = "Hippogryph, Bird";PetJob = 'Thief';ReadyMoveOne = 'Back Heel';ReadyMoveTwo = 'Choke Breath';ReadyMoveThree = 'Fantod'
  1490. elseif pet.name == 'CrudeRaphie' then
  1491. PetInfo = "Adamantoise, Lizard";PetJob = 'Paladin';ReadyMoveOne = 'Tortoise Stomp';ReadyMoveTwo = 'Harden Shell';ReadyMoveThree = 'Aqua Breath'
  1492. elseif pet.name == 'MosquitoFamilia' or pet.name == 'Left-HandedYoko' then
  1493. PetInfo = "Mosquito, Vermin";PetJob = 'Dark Knight';ReadyMoveOne = 'Infected Leech';ReadyMoveTwo = 'Gloom Spray';ReadyMoveThree = 'Gloom Spray'
  1494. end
  1495. else
  1496. PetName = 'None';PetJob = 'None';PetInfo = 'None';ReadyMoveOne = 'None';ReadyMoveTwo = 'None';ReadyMoveThree = 'None'
  1497. end
  1498. end
  1499.  
  1500. function pet_buff_timer(spell)
  1501. if spell.english == 'Reward' then
  1502. send_command('timers c "Pet: Regen" 180 down '..RewardRegenIcon..'')
  1503. elseif spell.english == 'Spur' then
  1504. send_command('timers c "Pet: Spur" 90 down '..SpurIcon..'')
  1505. elseif spell.english == 'Run Wild' then
  1506. send_command('timers c "'..spell.english..'" '..RunWildDuration..' down '..RunWildIcon..'')
  1507. end
  1508. end
  1509.  
  1510. function clear_pet_buff_timers()
  1511. send_command('timers c "Pet: Regen" 0 down '..RewardRegenIcon..'')
  1512. send_command('timers c "Pet: Spur" 0 down '..SpurIcon..'')
  1513. send_command('timers c "Run Wild" 0 down '..RunWildIcon..'')
  1514. end
  1515.  
  1516. function display_mode_info()
  1517. if DisplayModeInfo == 'true' then
  1518. send_command('text AccuracyText create Acc. Mode: Normal')
  1519. send_command('text AccuracyText pos '..TextBoxX..' '..TextBoxY..'')
  1520. send_command('text AccuracyText size '..TextSize..'')
  1521. TextBoxY = TextBoxY + (TextSize + 6)
  1522. send_command('text CorrelationText create Corr. Mode: Neutral')
  1523. send_command('text CorrelationText pos '..TextBoxX..' '..TextBoxY..'')
  1524. send_command('text CorrelationText size '..TextSize..'')
  1525. TextBoxY = TextBoxY + (TextSize + 6)
  1526. send_command('text PetModeText create Pet Mode: PetOnly')
  1527. send_command('text PetModeText pos '..TextBoxX..' '..TextBoxY..'')
  1528. send_command('text PetModeText size '..TextSize..'')
  1529. TextBoxY = TextBoxY + (TextSize + 6)
  1530. send_command('text JugPetText create Jug Mode: Meaty Broth')
  1531. send_command('text JugPetText pos '..TextBoxX..' '..TextBoxY..'')
  1532. send_command('text JugPetText size '..TextSize..'')
  1533. end
  1534. end
  1535.  
  1536. function update_display_mode_info()
  1537. if DisplayModeInfo == 'true' then
  1538. send_command('text AccuracyText text Acc. Mode: '..state.OffenseMode.value..'')
  1539. send_command('text CorrelationText text Corr. Mode: '..state.CorrelationMode.value..'')
  1540. send_command('text PetModeText text Pet Mode: '..state.PetMode.value..'')
  1541. send_command('text JugPetText text Jug Mode: '..state.JugMode.value..'')
  1542. end
  1543. end
  1544.  
  1545. function get_melee_groups()
  1546. classes.CustomMeleeGroups:clear()
  1547.  
  1548. if buffactive['Aftermath: Lv.3'] then
  1549. classes.CustomMeleeGroups:append('Aftermath')
  1550. end
  1551. end
  1552.  
  1553. function get_combat_form()
  1554. if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1555. state.CombatForm:set('DW')
  1556. else
  1557. state.CombatForm:reset()
  1558. end
  1559. end
Add Comment
Please, Sign In to add comment