Falkirk

FFXI Generic BST GearSwap lua May 28/15

Apr 23rd, 2014
3,473
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Last Revised: May 28th, 2015 (Removed Hibernation Earring rule from idle set,
  3. -- The typo in Somersault has been corrected by SE - updated Ready move list,
  4. -- Added a 'PetOnly' Mode - 'Windows Key'+F8 cycles Pet Modes.
  5. -- Pet status changes will update idle and engaged pet gear.
  6. -- And added a new rule for equipping TP Bonus Hands for TP-based moves.)
  7. --
  8. -- alt+F8 cycles through designated Jug Pets
  9. -- ctrl+F8 toggles Monster Correlation between Neutral and Favorable
  10. -- 'Windows Key'+F8 switches between Pet stances for Master/Pet hybrid gearsets
  11. -- alt+= cycles through Pet Food types
  12. -- ctrl+= can swap in the usage of Chaac Belt for Treasure Hunter on common subjob abilities.
  13. -- ctrl+F11 cycles between Magical Defense Modes
  14. --
  15. -- General Gearswap Commands:
  16. -- F9 cycles Accuracy modes
  17. -- ctrl+F9 cycles Hybrid modes
  18. -- 'Windows Key'+F9 cycles Weapon Skill modes
  19. -- F10 equips Physical Defense
  20. -- alt+F10 toggles Kiting on or off
  21. -- ctrl+F10 cycles Physical Defense modes
  22. -- F11 equips Magical Defense
  23. -- alt+F12 turns off Defense modes
  24. -- ctrl+F12 cycles Idle modes
  25. --
  26. -- Keep in mind that any time you Change Jobs/Subjobs, your Pet/Pet Food/etc. reset to default options.
  27. -- F12 will list your current options.
  28. -------------------------------------------------------------------------------------------------------------------
  29.  
  30. -------------------------------------------------------------------------------------------------------------------
  31. -- Initialization function that defines sets and variables to be used.
  32. -------------------------------------------------------------------------------------------------------------------
  33.  
  34. -- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
  35.  
  36. -- Initialization function for this job file.
  37. function get_sets()
  38.     mote_include_version = 2
  39.  
  40.     -- Load and initialize the include file.
  41.     include('Mote-Include.lua')
  42. end
  43.  
  44. function job_setup()
  45.     state.Buff['Killer Instinct'] = buffactive['Killer Instinct'] or false
  46.     state.Buff.Doomed = buffactive.doomed or false
  47.  
  48.     get_combat_form()
  49. end
  50.  
  51. function user_setup()
  52.         state.OffenseMode:options('Normal', 'LowAccHaste', 'MedAcc', 'MedAccHaste', 'HighAcc', 'HighAccHaste')
  53.         state.HybridMode:options('Normal', 'Hybrid')
  54.         state.WeaponskillMode:options('Normal', 'WSMedAcc', 'WSHighAcc')
  55.         state.CastingMode:options('Normal')
  56.         state.IdleMode:options('Normal', 'Refresh', 'Reraise')
  57.         state.RestingMode:options('Normal')
  58.         state.PhysicalDefenseMode:options('PDT', 'PetPDT', 'Reraise', 'Killer')
  59.         state.MagicalDefenseMode:options('MDT', 'MDTShell', 'MKiller')
  60.  
  61.         -- 'Out of Range' distance; WS will auto-cancel
  62.         target_distance = 6
  63.  
  64.         -- Set up Jug Pet cycling and keybind Alt+F8
  65.         -- INPUT PREFERRED JUG PETS HERE
  66.         state.JugMode = M{['description']='Jug Mode', 'BlackbeardRandy', 'WarlikePatrick', 'ThreestarLynn',
  67.                 'SwoopingZhivago'}
  68.         send_command('bind !f8 gs c cycle JugMode')
  69.  
  70.     -- Set up Monster Correlation Modes and keybind Ctrl+F8
  71.         state.CorrelationMode = M{['description']='Correlation Mode', 'Neutral', 'Favorable'}
  72.         send_command('bind ^f8 gs c cycle CorrelationMode')
  73.  
  74.         -- Set up Pet Modes for Hybrid sets and keybind 'Windows Key'+F8
  75.         state.PetMode = M{['description']='Pet Mode', 'Normal', 'PetOnly', 'PetStance', 'PetTank'}
  76.         send_command('bind @f8 gs c cycle PetMode')
  77.  
  78.     -- Keybind Ctrl+F11 to cycle Magical Defense Modes
  79.     send_command('bind ^f11 gs c cycle MagicalDefenseMode')
  80.  
  81.     -- Set up Reward Modes and keybind alt+=
  82.         state.RewardMode = M{['description']='Reward Mode', 'Theta', 'Zeta', 'Eta'}
  83.         send_command('bind != gs c cycle RewardMode')
  84.  
  85.         -- Set up Treasure Modes and keybind Ctrl+=
  86.         state.TreasureMode = M{['description']='Treasure Mode', 'Tag', 'Normal'}
  87.         send_command('bind ^= gs c cycle TreasureMode')
  88.  
  89. -- Complete list of Ready moves to use with Sic & Ready Recast -5 Desultor Tassets.
  90. ready_moves_to_check = S{'Sic','Whirl Claws','Dust Cloud','Foot Kick','Sheep Song','Sheep Charge','Lamb Chop',
  91.     'Rage','Head Butt','Scream','Dream Flower','Wild Oats','Leaf Dagger','Claw Cyclone','Razor Fang',
  92.     'Roar','Gloeosuccus','Palsy Pollen','Soporific','Cursed Sphere','Venom','Geist Wall','Toxic Spit',
  93.     'Numbing Noise','Nimble Snap','Cyclotail','Spoil','Rhino Guard','Rhino Attack','Power Attack',
  94.     'Hi-Freq Field','Sandpit','Sandblast','Venom Spray','Mandibular Bite','Metallic Body','Bubble Shower',
  95.     'Bubble Curtain','Scissor Guard','Big Scissors','Grapple','Spinning Top','Double Claw','Filamented Hold',
  96.     'Frog Kick','Queasyshroom','Silence Gas','Numbshroom','Spore','Dark Spore','Shakeshroom','Blockhead',
  97.     'Secretion','Fireball','Tail Blow','Plague Breath','Brain Crush','Infrasonics','??? Needles',
  98.     'Needleshot','Chaotic Eye','Blaster','Scythe Tail','Ripper Fang','Chomp Rush','Intimidate','Recoil Dive',
  99.     'Water Wall','Snow Cloud','Wild Carrot','Sudden Lunge','Spiral Spin','Noisome Powder','Wing Slap',
  100.     'Beak Lunge','Suction','Drainkiss','Acid Mist','TP Drainkiss','Back Heel','Jettatura','Choke Breath',
  101.     'Fantod','Charged Whisker','Purulent Ooze','Corrosive Ooze','Tortoise Stomp','Harden Shell','Aqua Breath',
  102.     'Sensilla Blades','Tegmina Buffet','Molting Plumage','Swooping Frenzy','Pentapeck','Sweeping Gouge',
  103.     'Zealous Snort','Somersault','Tickling Tendrils','Stink Bomb','Nectarous Deluge','Nepenthic Plunge',
  104.         'Pecking Flurry','Pestilent Plume','Foul Waters','Spider Web','Sickle Slash'}
  105.  
  106. tp_based_ready_moves = S{'Sic','Somersault','Dust Cloud','Foot Kick','Sheep Song','Sheep Charge','Lamb Chop',
  107.         'Rage','Head Butt','Scream','Dream Flower','Wild Oats','Leaf Dagger','Claw Cyclone','Razor Fang','Roar',
  108.         'Gloeosuccus','Palsy Pollen','Soporific','Cursed Sphere','Geist Wall','Numbing Noise','Frogkick',
  109.         'Nimble Snap','Cyclotail','Spoil','Rhino Guard','Rhino Attack','Hi-Freq Field','Sandpit','Sandblast',
  110.         'Mandibular Bite','Metallic Body','Bubble Shower','Bubble Curtain','Scissor Guard','Grapple','Spinning Top',
  111.         'Double Claw','Filamented Hold','Spore','Blockhead','Secretion','Fireball','Tail Blow','Plague Breath',
  112.         'Brain Crush','Infrasonics','Needleshot','Chaotic Eye','Blaster','Ripper Fang','Intimidate','Recoil Dive',
  113.     'Water Wall','Snow Cloud','Wild Carrot','Sudden Lunge','Noisome Powder','Wing Slap','Beak Lunge','Suction',
  114.         'Drainkiss','Acid Mist','TP Drainkiss','Back Heel','Jettatura','Choke Breath','Fantod','Charged Whisker',
  115.         'Purulent Ooze','Corrosive Ooze','Tortoise Stomp','Harden Shell','Aqua Breath','Sensilla Blades',
  116.         'Tegmina Buffet','Sweeping Gouge','Zealous Snort','Tickling Tendrils','Pecking Flurry',
  117.         'Pestilent Plume','Foul Waters','Spider Web'}
  118.  
  119. -- List of Magic-based Ready moves to use with Pet MAB or Pet M.Acc gearset.
  120. magic_ready_moves = S{'Dust Cloud','Sheep Song','Scream','Dream Flower','Roar','Gloeosuccus','Palsy Pollen',
  121.         'Soporific','Cursed Sphere','Venom','Geist Wall','Toxic Spit','Numbing Noise','Spoil','Hi-Freq Field',
  122.         'Sandpit','Sandblast','Venom Spray','Bubble Shower','Filamented Hold','Queasyshroom','Silence Gas',
  123.         'Numbshroom','Spore','Dark Spore','Shakeshroom','Fireball','Plague Breath','Infrasonics','Chaotic Eye',
  124.         'Blaster','Intimidate','Snow Cloud','Noisome Powder','TP Drainkiss','Jettatura','Charged Whisker',
  125.         'Purulent Ooze','Corrosive Ooze','Aqua Breath','Molting Plumage','Stink Bomb','Nectarous Deluge',
  126.         'Nepenthic Plunge','Pestilent Plume','Foul Waters','Spider Web'}
  127.  
  128. -- List of abilities to reference for applying Treasure Hunter +1 via Chaac Belt.
  129. abilities_to_check = S{'Feral Howl','Quickstep','Box Step','Stutter Step','Desperate Flourish','Violent Flourish',
  130.     'Animated Flourish','Provoke','Dia','Dia II','Flash','Bio','Bio II','Sleep','Sleep II',
  131.     'Drain','Aspir','Dispel','Steal','Mug'}
  132. end
  133.  
  134. function file_unload()
  135.     if binds_on_unload then
  136.         binds_on_unload()
  137.     end
  138.  
  139.     -- Unbinds the Jug Pet, Reward, Correlation, Treasure, PetMode, MDEF Mode hotkeys.
  140.     send_command('unbind !=')
  141.     send_command('unbind ^=')
  142.     send_command('unbind !f8')
  143.     send_command('unbind ^f8')
  144.     send_command('unbind @f8')
  145.     send_command('unbind ^f11')
  146. end
  147.  
  148. -- BST gearsets
  149. function init_gear_sets()
  150.     -- PRECAST SETS
  151.         sets.precast.JA['Killer Instinct'] = {head="Ankusa Helm +1"}
  152.     sets.precast.JA['Bestial Loyalty'] = {hands="Ankusa Gloves +1"}
  153.     sets.precast.JA['Call Beast'] = sets.precast.JA['Bestial Loyalty']
  154.         sets.precast.JA.Familiar = {legs="Ankusa Trousers +1"}
  155.     sets.precast.JA.Tame = {head="Totemic Helm +1",ear1="Tamer's Earring",legs="Stout Kecks"}
  156.     sets.precast.JA.Spur = {feet="Ferine Ocreae +2"}
  157.  
  158.         sets.precast.JA['Feral Howl'] = {ammo="Plumose Sachet",
  159.         head="Seiokona Beret",neck="Voltsurge Torque",ear1="Gwati Earring",ear2="Enchanter Earring +1",
  160.         body="Ankusa Jackcoat +1",hands="Sombra Mittens +1",ring1="Perception Ring",ring2="Sangoma Ring",
  161.         back="Aput Mantle +1",waist="Salire Belt",legs="Iuitl Tights +1",feet="Scamp's Sollerets"}
  162.  
  163.     sets.precast.JA.Reward = {
  164.                 head="Stout Bonnet",neck="Aife's Medal",ear1="Lifestorm Earring",ear2="Neptune's Pearl",
  165.         body="Totemic Jackcoat +1",hands="Totemic Gloves +1",ring1="Leviathan's Ring +1",ring2="Leviathan's Ring +1",
  166.         back="Pastoralist's Mantle",waist="Salire Belt",legs="Ankusa Trousers +1",feet="Ankusa Gaiters +1"}
  167.  
  168.     sets.precast.JA.Reward.Theta = set_combine(sets.precast.JA.Reward, {ammo="Pet Food Theta"})
  169.     sets.precast.JA.Reward.Zeta = set_combine(sets.precast.JA.Reward, {ammo="Pet Food Zeta"})
  170.     sets.precast.JA.Reward.Eta = set_combine(sets.precast.JA.Reward, {ammo="Pet Food Eta"})
  171.  
  172.     sets.precast.JA.Charm = {ammo="Tsar's Egg",
  173.         head="Totemic Helm +1",neck="Unmoving Collar +1",ear1="Enchanter's Earring",ear2="Enchanter Earring +1",
  174.         body="Ankusa Jackcoat +1",hands="Ankusa Gloves +1",ring1="Carbuncle's Ring +1",ring2="Carbuncle's Ring +1",
  175.         back="Aisance Mantle +1",waist="Aristo Belt",legs="Ankusa Trousers +1",feet="Ankusa Gaiters +1"}
  176.  
  177.         -- CURING WALTZ
  178.         sets.precast.Waltz = {ammo="Sonia's Plectrum",
  179.         head="Ighwa Cap",neck="Unmoving Collar +1",ear1="Handler's Earring",ear2="Handler's Earring +1",
  180.         body="Gorney Haubert +1",hands="Umuthi Gloves",ring1="Valseur's Ring",ring2="Asklepian Ring",
  181.         back="Iximulew Cape",waist="Aristo Belt",legs="Osmium Cuisses",feet="Scamp's Sollerets"}
  182.                
  183.         -- HEALING WALTZ
  184.         sets.precast.Waltz['Healing Waltz'] = {}
  185.  
  186.     -- STEPS
  187.     sets.precast.Step = {ammo="Hasty Pinion +1",
  188.         head="Gavialis Helm",neck="Ej Necklace +1",ear1="Zennaroi Earring",ear2="Heartseeker Earring",
  189.         body="Mes'yohi Haubergeon",hands="Buremte Gloves",ring1="Ramuh's Ring +1",ring2="Ramuh's Ring +1",
  190.         back="Grounded Mantle +1",waist="Olseni Belt",legs="Sombra Tights +1",feet="Ostro Greaves"}
  191.  
  192.     -- VIOLENT FLOURISH
  193.     sets.precast.Flourish1 = {}
  194.     sets.precast.Flourish1['Violent Flourish'] = {ammo="Plumose Sachet",
  195.         head="Seiokona Beret",neck="Voltsurge Torque",ear1="Gwati Earring",ear2="Enchanter Earring +1",
  196.         body="Ankusa Jackcoat +1",hands="Sombra Mittens +1",ring1="Perception Ring",ring2="Sangoma Ring",
  197.         back="Aput Mantle +1",waist="Salire Belt",legs="Iuitl Tights +1",feet="Scamp's Sollerets"}
  198.  
  199.         sets.precast.FC = {ammo="Impatiens",neck="Orunmila's Torque",ear1="Loquacious Earring",
  200.                 ear2="Enchanter Earring +1",hands="Sombra Mittens +1",ring1="Prolix Ring"}
  201.         sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  202.  
  203.         -- MIDCAST SETS
  204.         sets.midcast.FastRecast = {
  205.                 head="Iuitl Headgear +1",neck="Orunmila's Torque",ear1="Loquacious Earring",ear2="Enchanter Earring +1",
  206.                 body="Ankusa Jackcoat +1",hands="Sombra Mittens +1",ring1="Prolix Ring",ring2="Defending Ring",
  207.                 back="Mollusca Mantle",waist="Hurch'lan Sash",legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"}
  208.  
  209.         sets.midcast.Utsusemi = sets.midcast.FastRecast
  210.  
  211.     sets.midcast.Cure = {ammo="Quartz Tathlum +1",
  212.         head="Ighwa Cap",neck="Phalaina Locket",ear1="Lifestorm Earring",ear2="Neptune's Pearl",
  213.         body="Savas Jawshan",hands="Buremte Gloves",ring1="Leviathan's Ring +1",ring2="Asklepian Ring",
  214.         back="Pastoralist's Mantle",waist="Chuq'aba Belt",legs="Osmium Cuisses",feet="Whirlpool Greaves"}
  215.  
  216.     sets.midcast.Curaga = sets.midcast.Cure
  217.  
  218.     sets.midcast.Stoneskin = {ammo="Quartz Tathlum +1",
  219.         head="Totemic Helm +1",neck="Stone Gorget",ear1="Earthcry Earring",ear2="Lifestorm Earring",
  220.         body="Totemic Jackcoat +1",hands="Stone Mufflers",ring1="Leviathan's Ring +1",ring2="Leviathan's Ring +1",
  221.         back="Pastoralist's Mantle",waist="Salire Belt",legs="Haven Hose",feet="Whirlpool Greaves"}
  222.  
  223.     sets.midcast.Cursna = set_combine(sets.midcast.FastRecast, {neck="Debilis Medallion",
  224.         ring1="Eshmun's Ring",ring2="Haoma's Ring"})
  225.  
  226.     sets.midcast.Protect = {ring2="Sheltered Ring"}
  227.     sets.midcast.Protectra = sets.midcast.Protect
  228.  
  229.     sets.midcast.Shell = {ring2="Sheltered Ring"}
  230.     sets.midcast.Shellra = sets.midcast.Shell
  231.  
  232.     sets.midcast['Enfeebling Magic'] = {ammo="Plumose Sachet",
  233.         head="Seiokona Beret",neck="Voltsurge Torque",ear1="Gwati Earring",ear2="Enchanter Earring +1",
  234.         body="Ankusa Jackcoat +1",hands="Sombra Mittens +1",ring1="Perception Ring",ring2="Sangoma Ring",
  235.         back="Aput Mantle +1",waist="Salire Belt",legs="Iuitl Tights +1",feet="Scamp's Sollerets"}
  236.  
  237.     sets.midcast['Elemental Magic'] = sets.midcast['Enfeebling Magic']
  238.  
  239.         -- WEAPONSKILLS
  240.         -- Default weaponskill sets.
  241.     sets.precast.WS = {ammo="Cheruski Needle",
  242.         head="Otomi Helm",neck="Asperity Necklace",ear1="Kokou's Earring",ear2="Brutal Earring",
  243.         body="Sombra Harness +1",hands="Boor Bracelets",ring1="Ifrit's Ring +1",ring2="Epona's Ring",
  244.         back="Buquwik Cape",waist="Windbuffet Belt +1",legs="Zoar Subligar +1",feet="Gigantes Boots +1"}
  245.  
  246.     sets.precast.WS.WSMedAcc = {ammo="Ginsen",
  247.         head="Yaoyotl Helm",neck="Ej Necklace +1",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  248.         body="Mes'yohi Haubergeon",hands="Buremte Gloves",ring1="Ifrit's Ring +1",ring2="Ramuh's Ring +1",
  249.         back="Letalis Mantle",waist="Anguinus Belt",legs="Zoar Subligar +1",feet="Ejekamal Boots"}
  250.  
  251.     sets.precast.WS.WSHighAcc = {ammo="Ginsen",
  252.         head="Yaoyotl Helm",neck="Ej Necklace +1",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  253.         body="Mes'yohi Haubergeon",hands="Buremte Gloves",ring1="Mars's Ring",ring2="Ramuh's Ring +1",
  254.         back="Letalis Mantle",waist="Olseni Belt",legs="Mikinaak Cuisses",feet="Ejekamal Boots"}
  255.  
  256.         -- Specific weaponskill sets.
  257.         sets.precast.WS['Ruinator'] = set_combine(sets.precast.WS, {neck="Breeze Gorget",waist="Breeze Belt"})
  258.     sets.precast.WS['Ruinator'].Mekira = set_combine(sets.precast.WS['Ruinator'], {head="Gavialis Helm"})
  259.         sets.precast.WS['Ruinator'].WSMedAcc = set_combine(sets.precast.WS.WSMedAcc, {neck="Breeze Gorget",waist="Breeze Belt"})
  260.         sets.precast.WS['Ruinator'].WSHighAcc = set_combine(sets.precast.WS.WSHighAcc, {neck="Breeze Gorget",waist="Breeze Belt"})
  261.  
  262.         sets.precast.WS['Onslaught'] = set_combine(sets.precast.WS, {ammo="Floestone",
  263.                 neck="Justiciar's Torque",ear1="Tati Earring +1",ear2="Brutal Earring",
  264.         body="Mes'yohi Haubergeon",hands="Nomkahpa Mittens +1",ring1="Ramuh Ring +1",
  265.                 back="Vespid Mantle",legs="Mikinaak Cuisses",feet="Vanir Boots"})
  266.         sets.precast.WS['Onslaught'].WSMedAcc = set_combine(sets.precast.WSMedAcc, {hands="Buremte Gloves",ring1="Ramuh Ring +1"})
  267.         sets.precast.WS['Onslaught'].WSHighAcc = set_combine(sets.precast.WSHighAcc, {hands="Buremte Gloves"})
  268.  
  269.     sets.precast.WS['Primal Rend'] = {ammo="Erlene's Notebook",
  270.         head="Highwing Helm",neck="Stoicheion Medal",ear1="Crematio Earring",ear2="Friomisi Earring",
  271.         body="Sombra Harness +1",hands="Nilas Gloves",ring1="Acumen Ring",ring2="Fenrir Ring +1",
  272.         back="Argochampsa Mantle",waist="Salire Belt",legs="Augury Cuisses +1",feet="Sombra Leggings +1"}
  273.  
  274.     sets.precast.WS['Cloudsplitter'] = set_combine(sets.precast.WS['Primal Rend'], {waist="Thunder Belt"})
  275.  
  276.     -- PET SIC & READY MOVES
  277.     sets.midcast.Pet.WS = {ammo="Demonry Core",
  278.         neck="Ferine Necklace",ear1="Sabong Earring",ear2="Domesticator's Earring",
  279.         body="Mirke Wardecors",hands="Regimen Mittens",ring1="Thurandaut Ring",ring2="Angel's Ring",
  280.         back="Pastoralist's Mantle",waist="Hurch'lan Sash",legs="Totemic Trousers +1",feet="Totemic Gaiters +1"}
  281.  
  282.         sets.midcast.Pet.MagicReady = set_combine(sets.midcast.Pet.WS, {
  283.                 ear1="Diamond Earring",ear2="Diamond Earring",
  284.                 hands="Regimen Mittens",
  285.                 back="Argochampsa Mantle"})
  286.  
  287.         sets.midcast.Pet.HighAcc = set_combine(sets.midcast.Pet.WS, {head="Totemic Helm +1",hands="Regimen Mittens",legs="Wisent Kecks"})
  288.  
  289.         sets.midcast.Pet.ReadyRecast = {legs="Desultor Tassets"}
  290.     sets.midcast.Pet.Neutral = {head="Totemic Helm +1"}
  291.     sets.midcast.Pet.Favorable = {head="Nukumi Cabasset +1"}
  292.     sets.midcast.Pet.TPBonus = {hands="Nukumi Manoplas +1"}
  293.  
  294.         -- PET-ONLY SETS THAT SWAP WEAPONS FOR READY AND IDLE
  295.         sets.midcast.Pet.ReadyRecastNE = {sub="Charmer's Merlin",legs="Desultor Tassets"}
  296.  
  297.         sets.midcast.Pet.ReadyNE = set_combine(sets.midcast.Pet.WS, {main="Kumbhakarna",sub="Kumbhakarna"})
  298.         sets.midcast.Pet.ReadyNE.MedAcc = set_combine(sets.midcast.Pet.WS, {main="Kerehcatl",sub="Kumbhakarna"})
  299.         sets.midcast.Pet.ReadyNE.HighAcc = set_combine(sets.midcast.Pet.WS, {main="Kerehcatl",sub="Hunahpu"})
  300.  
  301.         sets.midcast.Pet.MagicReadyNE = set_combine(sets.midcast.Pet.MagicReady, {main="Kumbhakarna",sub="Kumbhakarna"})
  302.  
  303.         sets.IdleAxesNE = {main ="Izizoeksi",sub="Astolfo"}
  304.  
  305.         -- RESTING
  306.         sets.resting = {}
  307.        
  308.         -- IDLE SETS
  309.     sets.ExtraRegen = {waist="Muscle Belt +1"}
  310.  
  311.         sets.idle = {ammo="Demonry Core",
  312.         head="Twilight Helm",neck="Wiglen Gorget",ear1="Dawn Earring",ear2="Infused Earring",
  313.         body="Kumarbi's Akar",hands="Iuitl Wristbands +1",ring1="Paguroidea Ring",ring2="Sheltered Ring",
  314.         back="Repulse Mantle",waist="Lycopodium Sash",legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"}
  315.  
  316.         sets.idle.Refresh = set_combine(sets.idle, {head="Wivre Hairpin",body="Twilight Mail",hands="Ogier's Gauntlets",
  317.                 legs="Stearc Subligar",feet="Ogier's Leggings"})
  318.     sets.idle.Reraise = set_combine(sets.idle, {head="Twilight Helm",body="Twilight Mail"})
  319.  
  320.     sets.idle.Pet = set_combine(sets.idle, {ammo="Demonry Core",
  321.         head="Twilight Helm",neck="Wiglen Gorget",ear1="Dawn Earring",ear2="Infused Earring",
  322.         body="Kirin's Osode",hands="Ankusa Gloves +1",ring1="Paguroidea Ring",ring2="Sheltered Ring",
  323.         back="Oneiros Cappa",waist="Isa Belt",legs="Ferine Quijotes +2",feet="Armada Sollerets"})
  324.  
  325.     sets.idle.Pet.Engaged = {ammo="Demonry Core",
  326.         head="Anwig Salade",neck="Ferine Necklace",ear1="Rimeice Earring",ear2="Domesticator's Earring",
  327.         body="Ankusa Jackcoat +1",hands="Regimen Mittens",ring1="Dark Ring",ring2="Defending Ring",
  328.         back="Ferine Mantle",waist="Hurch'lan Sash",legs="Wisent Kecks",feet="Armada Sollerets"}
  329.        
  330.         -- DEFENSE SETS
  331.     sets.defense.PDT = {head="Ighwa Cap",neck="Twilight Torque",
  332.         body="Emet Harness +1",hands="Iuitl Wristbands +1",ring1="Dark Ring",ring2="Defending Ring",
  333.         back="Repulse Mantle",waist="Flume Belt +1",legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"}
  334.  
  335.         sets.defense.PetPDT = {ammo="Demonry Core",
  336.         head="Anwig Salade",neck="Shepherd's Chain",ear1="Handler's Earring",ear2="Handler's Earring +1",
  337.         body="Ankusa Jackcoat +1",hands="Ankusa Gloves +1",ring1="Dark Ring",ring2="Defending Ring",
  338.         back="Oneiros Cappa",waist="Isa Belt",legs="Ferine Quijotes +2",feet="Ankusa Gaiters +1"}
  339.  
  340.     sets.defense.Killer = set_combine(sets.defense.PDT, {body="Ferine Gausape +2"})
  341.     sets.defense.Reraise = set_combine(sets.defense.PDT, {head="Twilight Helm",body="Twilight Mail"})
  342.  
  343.     sets.defense.MDT = set_combine(sets.defense.PDT, {ammo="Vanir Battery",
  344.         head="Iuitl Headgear +1",ear1="Merman's Earring",ear2="Sanare Earring",
  345.         body="Savas Jawshan",
  346.         back="Engulfer's Cape +1",waist="Nierenschutz"})
  347.  
  348.     sets.defense.MDTShell = set_combine(sets.defense.MDT, {neck="Inquisitor Bead Necklace",ear1="Flashward Earring",
  349.         body="Iuitl Vest +1",ring1="Shadow Ring",
  350.         back="Engulfer Cape +1",waist="Resolute Belt",legs="Sombra Tights +1",feet="Durgai Leggings"})
  351.  
  352.     sets.defense.MKiller = set_combine(sets.defense.MDT, {body="Ferine Gausape +2"})
  353.  
  354.     sets.Kiting = {feet="Skadi's Jambeaux +1"}
  355.  
  356.         -- MELEE (SINGLE-WIELD) SETS
  357.         sets.engaged = {ammo="Ginsen",
  358.         head="Otomi Helm",neck="Asperity Necklace",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  359.         body="Sombra Harness +1",hands="Xaddi Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
  360.         back="Atheling Mantle",waist="Windbuffet Belt +1",legs="Xaddi Cuisses",feet="Ejekamal Boots"}
  361.         sets.engaged.LowAccHaste = {ammo="Ginsen",
  362.         head="Otomi Helm",neck="Asperity Necklace",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  363.         body="Sombra Harness +1",hands="Xaddi Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
  364.         back="Atheling Mantle",waist="Windbuffet Belt +1",legs="Xaddi Cuisses",feet="Ejekamal Boots"}
  365.         sets.engaged.MedAcc = {ammo="Paeapua",
  366.         head="Yaoyotl Helm",neck="Ej Necklace +1",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  367.         body="Sombra Harness +1",hands="Buremte Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
  368.         back="Letalis Mantle",waist="Hurch'lan Sash",legs="Xaddi Cuisses",feet="Ejekamal Boots"}
  369.         sets.engaged.MedAccHaste = {ammo="Paeapua",
  370.         head="Yaoyotl Helm",neck="Ej Necklace +1",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  371.         body="Sombra Harness +1",hands="Buremte Gloves",ring1="Rajas Ring",ring2="Epona's Ring",
  372.         back="Letalis Mantle",waist="Hurch'lan Sash",legs="Xaddi Cuisses",feet="Ejekamal Boots"}
  373.     sets.engaged.HighAcc = {ammo="Jukukik Feather",
  374.         head="Yaoyotl Helm",neck="Ej Necklace +1",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  375.         body="Mes'yohi Haubergeon",hands="Buremte Gloves",ring1="Mars's Ring",ring2="Ramuh's Ring +1",
  376.         back="Grounded Mantle +1",waist="Olseni Belt",legs="Xaddi Cuisses",feet="Ejekamal Boots"}
  377.     sets.engaged.HighAccHaste = {ammo="Jukukik Feather",
  378.         head="Yaoyotl Helm",neck="Ej Necklace +1",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  379.         body="Mes'yohi Haubergeon",hands="Buremte Gloves",ring1="Mars's Ring",ring2="Ramuh's Ring +1",
  380.         back="Grounded Mantle +1",waist="Olseni Belt",legs="Xaddi Cuisses",feet="Ejekamal Boots"}
  381.     -- MELEE (SINGLE-WIELD) HYBRID SETS
  382.         sets.engaged.Hybrid = set_combine(sets.engaged, {head="Iuitl Headgear +1",body="Iuitl Vest +1",
  383.         back="Mollusca Mantle",hands="Iuitl Wristbands +1",legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"})
  384.         sets.engaged.LowAccHaste.Hybrid = set_combine(sets.engaged.LowAccHaste, {head="Iuitl Headgear +1",body="Iuitl Vest +1",
  385.         back="Mollusca Mantle",hands="Iuitl Wristbands +1",legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"})
  386.         sets.engaged.MedAcc.Hybrid = set_combine(sets.engaged.MedAcc, {head="Iuitl Headgear +1",
  387.         body="Iuitl Vest +1",legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"})
  388.         sets.engaged.MedAccHaste.Hybrid = set_combine(sets.engaged.MedAccHaste, {head="Iuitl Headgear +1",
  389.         body="Iuitl Vest +1",legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"})
  390.     sets.engaged.HighAcc.Hybrid = set_combine(sets.engaged.HighAcc, {legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"})
  391.     sets.engaged.HighAccHaste.Hybrid = set_combine(sets.engaged.HighAccHaste, {legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"})
  392.  
  393.         -- MELEE (DUAL-WIELD) SETS FOR DNC AND NIN SUBJOB
  394.         sets.engaged.DW = {ammo="Ginsen",
  395.         head="Otomi Helm",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
  396.         body="Skadi's Cuirie +1",hands="Nomkahpa Mittens +1",ring1="Rajas Ring",ring2="Epona's Ring",
  397.         back="Vellaunus' Mantle +1",waist="Patentia Sash",legs="Sombra Tights +1",feet="Ejekamal Boots"}
  398.         sets.engaged.DW.LowAccHaste = {ammo="Ginsen",
  399.         head="Otomi Helm",neck="Asperity Necklace",ear1="Suppanomimi",ear2="Brutal Earring",
  400.         body="Skadi's Cuirie +1",hands="Nomkahpa Mittens +1",ring1="Rajas Ring",ring2="Epona's Ring",
  401.         back="Bleating Mantle",waist="Windbuffet Belt +1",legs="Xaddi Cuisses",feet="Xaddi Boots"}
  402.         sets.engaged.DW.MedAcc = {ammo="Ginsen",
  403.         head="Yaoyotl Helm",neck="Ej Necklace +1",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  404.         body="Mes'yohi Haubergeon",hands="Buremte Gloves",ring1="Mars's Ring",ring2="Epona's Ring",
  405.         back="Letalis Mantle",waist="Hurch'lan Sash",legs="Sombra Tights +1",feet="Ejekamal Boots"}
  406.         sets.engaged.DW.MedAccHaste = {ammo="Ginsen",
  407.         head="Yaoyotl Helm",neck="Ej Necklace +1",ear1="Suppanomimi",ear2="Brutal Earring",
  408.         body="Mes'yohi Haubergeon",hands="Buremte Gloves",ring1="Mars's Ring",ring2="Epona's Ring",
  409.         back="Letalis Mantle",waist="Hurch'lan Sash",legs="Xaddi Cuisses",feet="Xaddi Boots"}
  410.     sets.engaged.DW.HighAcc = {ammo="Ginsen",
  411.         head="Yaoyotl Helm",neck="Ej Necklace +1",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  412.         body="Mes'yohi Haubergeon",hands="Buremte Gloves",ring1="Mars's Ring",ring2="Ramuh's Ring +1",
  413.         back="Grounded Mantle +1",waist="Olseni Belt",legs="Sombra Tights +1",feet="Ejekamal Boots"}
  414.     sets.engaged.DW.HighAccHaste = {ammo="Ginsen",
  415.         head="Yaoyotl Helm",neck="Ej Necklace +1",ear1="Heartseeker Earring",ear2="Dudgeon Earring",
  416.         body="Mes'yohi Haubergeon",hands="Buremte Gloves",ring1="Mars's Ring",ring2="Ramuh's Ring +1",
  417.         back="Grounded Mantle +1",waist="Olseni Belt",legs="Sombra Tights +1",feet="Ejekamal Boots"}
  418.     -- MELEE (DUAL-WIELD) HYBRID SETS
  419.         sets.engaged.DW.Hybrid = set_combine(sets.engaged.DW, {head="Iuitl Headgear +1",body="Iuitl Vest +1",
  420.         back="Mollusca Mantle",hands="Iuitl Wristbands +1",legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"})
  421.         sets.engaged.DW.LowAccHaste.Hybrid = set_combine(sets.engaged.DW.LowAccHaste, {head="Iuitl Headgear +1",body="Iuitl Vest +1",
  422.         back="Mollusca Mantle",hands="Iuitl Wristbands +1",legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"})
  423.         sets.engaged.DW.MedAcc.Hybrid = set_combine(sets.engaged.DW.MedAcc, {head="Iuitl Headgear +1",
  424.         body="Iuitl Vest +1",legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"})
  425.         sets.engaged.DW.MedAccHaste.Hybrid = set_combine(sets.engaged.DW.MedAccHaste, {head="Iuitl Headgear +1",
  426.         body="Iuitl Vest +1",legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"})
  427.     sets.engaged.DW.HighAcc.Hybrid = set_combine(sets.engaged.DW.HighAcc, {legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"})
  428.     sets.engaged.DW.HighAccHaste.Hybrid = set_combine(sets.engaged.DW.HighAccHaste, {legs="Iuitl Tights +1",feet="Iuitl Gaiters +1"})
  429.  
  430.     -- GEARSETS FOR MASTER ENGAGED (SINGLE-WIELD) & PET ENGAGED
  431.         sets.engaged.PetStance = set_combine(sets.engaged,
  432.         {head="Anwig Salade",
  433.         body="Ankusa Jackcoat +1",hands="Regimen Mittens",
  434.         waist="Hurch'lan Sash",legs="Wisent Kecks",feet="Armada Sollerets"})
  435.         sets.engaged.PetStance.LowAccHaste = set_combine(sets.engaged.LowAccHaste,
  436.         {head="Anwig Salade",
  437.         body="Ankusa Jackcoat +1",hands="Regimen Mittens",
  438.         waist="Hurch'lan Sash",legs="Wisent Kecks",feet="Armada Sollerets"})
  439.         sets.engaged.PetStance.MedAcc = set_combine(sets.engaged.MedAcc,
  440.         {head="Ankusa Helm +1",
  441.         hands="Regimen Mittens",
  442.         waist="Hurch'lan Sash"})
  443.         sets.engaged.PetStance.MedAccHaste = set_combine(sets.engaged.MedAccHaste,
  444.         {head="Ankusa Helm +1",
  445.         hands="Regimen Mittens",
  446.         waist="Hurch'lan Sash"})
  447.         sets.engaged.PetStance.HighAcc = set_combine(sets.engaged.HighAcc,
  448.         {hands="Regimen Mittens",
  449.         waist="Hurch'lan Sash"})
  450.         sets.engaged.PetStance.HighAccHaste = set_combine(sets.engaged.HighAccHaste,
  451.         {hands="Regimen Mittens",
  452.         waist="Hurch'lan Sash"})
  453.  
  454.     -- GEARSETS FOR MASTER ENGAGED (SINGLE-WIELD) & PET TANKING
  455.         sets.engaged.PetTank = set_combine(sets.engaged,
  456.         {head="Anwig Salade",neck="Shepherd's Chain",ear1="Handler's Earring",ear2="Handler's Earring +1",
  457.         body="Ankusa Jackcoat +1",hands="Ankusa Gloves +1",
  458.         back="Oneiros Cappa",waist="Isa Belt",legs="Ferine Quijotes +2",feet="Ankusa Gaiters +1"})
  459.         sets.engaged.PetTank.LowAccHaste = set_combine(sets.engaged.LowAccHaste,
  460.         {head="Anwig Salade",neck="Shepherd's Chain",ear1="Handler's Earring",ear2="Handler's Earring +1",
  461.         body="Ankusa Jackcoat +1",hands="Ankusa Gloves +1",
  462.         back="Oneiros Cappa",waist="Isa Belt",legs="Ferine Quijotes +2",feet="Ankusa Gaiters +1"})
  463.         sets.engaged.PetTank.MedAcc = set_combine(sets.engaged.MedAcc,
  464.         {head="Anwig Salade",
  465.         hands="Ankusa Gloves +1",
  466.         back="Oneiros Cappa",legs="Ferine Quijotes +2"})
  467.         sets.engaged.PetTank.MedAccHaste = set_combine(sets.engaged.MedAccHaste,
  468.         {head="Anwig Salade",
  469.         hands="Ankusa Gloves +1",
  470.         back="Oneiros Cappa",legs="Ferine Quijotes +2"})
  471.         sets.engaged.PetTank.HighAcc = set_combine(sets.engaged.HighAcc,
  472.         {head="Anwig Salade",
  473.         hands="Regimen Mittens"})
  474.         sets.engaged.PetTank.HighAccHaste = set_combine(sets.engaged.HighAccHaste,
  475.         {head="Anwig Salade",
  476.         hands="Regimen Mittens"})
  477.  
  478.     -- GEARSETS FOR MASTER ENGAGED (DUAL-WIELD) & PET ENGAGED
  479.         sets.engaged.DW.PetStance = set_combine(sets.engaged.DW,
  480.         {head="Anwig Salade",
  481.         body="Ankusa Jackcoat +1",hands="Regimen Mittens",
  482.         waist="Hurch'lan Sash",legs="Wisent Kecks",feet="Armada Sollerets"})
  483.         sets.engaged.DW.PetStance.LowAccHaste = set_combine(sets.engaged.DW.LowAccHaste,
  484.         {head="Anwig Salade",
  485.         body="Ankusa Jackcoat +1",hands="Regimen Mittens",
  486.         waist="Hurch'lan Sash",legs="Wisent Kecks",feet="Armada Sollerets"})
  487.         sets.engaged.DW.PetStance.MedAcc = set_combine(sets.engaged.DW.MedAcc,
  488.         {head="Ankusa Helm +1",
  489.         hands="Regimen Mittens",
  490.         waist="Hurch'lan Sash"})
  491.         sets.engaged.DW.PetStance.MedAccHaste = set_combine(sets.engaged.DW.MedAccHaste,
  492.         {head="Ankusa Helm +1",
  493.         hands="Regimen Mittens",
  494.         waist="Hurch'lan Sash"})
  495.         sets.engaged.DW.PetStance.HighAcc = set_combine(sets.engaged.DW.HighAcc,
  496.         {hands="Regimen Mittens",
  497.         waist="Hurch'lan Sash"})
  498.         sets.engaged.DW.PetStance.HighAccHaste = set_combine(sets.engaged.DW.HighAccHaste,
  499.         {hands="Regimen Mittens",
  500.         waist="Hurch'lan Sash"})
  501.  
  502.     -- GEARSETS FOR MASTER ENGAGED (DUAL-WIELD) & PET TANKING
  503.         sets.engaged.DW.PetTank = set_combine(sets.engaged.DW,
  504.         {head="Anwig Salade",neck="Shepherd's Chain",ear1="Handler's Earring",ear2="Handler's Earring +1",
  505.         body="Ankusa Jackcoat +1",hands="Ankusa Gloves +1",
  506.         back="Oneiros Cappa",waist="Isa Belt",legs="Ferine Quijotes +2",feet="Ankusa Gaiters +1"})
  507.         sets.engaged.DW.PetTank.LowAccHaste = set_combine(sets.engaged.DW.LowAccHaste,
  508.         {head="Anwig Salade",neck="Shepherd's Chain",ear1="Handler's Earring",ear2="Handler's Earring +1",
  509.         body="Ankusa Jackcoat +1",hands="Ankusa Gloves +1",
  510.         back="Oneiros Cappa",waist="Isa Belt",legs="Ferine Quijotes +2",feet="Ankusa Gaiters +1"})
  511.         sets.engaged.DW.PetTank.MedAcc = set_combine(sets.engaged.DW.MedAcc,
  512.         {head="Anwig Salade",
  513.         hands="Ankusa Gloves +1",
  514.         back="Oneiros Cappa",legs="Ferine Quijotes +2"})
  515.         sets.engaged.DW.PetTank.MedAccHaste = set_combine(sets.engaged.DW.MedAccHaste,
  516.         {head="Anwig Salade",
  517.         hands="Ankusa Gloves +1",
  518.         back="Oneiros Cappa",legs="Ferine Quijotes +2"})
  519.         sets.engaged.DW.PetTank.HighAcc = set_combine(sets.engaged.DW.HighAcc,
  520.         {head="Anwig Salade",
  521.         hands="Regimen Mittens"})
  522.         sets.engaged.DW.PetTank.HighAccHaste = set_combine(sets.engaged.DW.HighAccHaste,
  523.         {head="Anwig Salade",
  524.         hands="Regimen Mittens"})
  525.  
  526.     sets.buff['Killer Instinct'] = {body="Ferine Gausape +2"}
  527.     sets.buff.Doomed = {ring1="Eshmun's Ring"}
  528.     sets.THBelt = {waist="Chaac Belt"}
  529.  
  530. -------------------------------------------------------------------------------------------------------------------
  531. -- Complete Lvl 76-99 Jug Pet Precast List +Funguar +Courier +Amigo
  532. -------------------------------------------------------------------------------------------------------------------
  533.  
  534.     sets.precast.JA['Bestial Loyalty'].FunguarFamiliar = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Seedbed Soil"})
  535.     sets.precast.JA['Bestial Loyalty'].CourierCarrie = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Fish Oil Broth"})
  536.     sets.precast.JA['Bestial Loyalty'].AmigoSabotender = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Sun Water"})
  537.     sets.precast.JA['Bestial Loyalty'].NurseryNazuna = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="D. Herbal Broth"})
  538.     sets.precast.JA['Bestial Loyalty'].CraftyClyvonne = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Cng. Brain Broth"})
  539.     sets.precast.JA['Bestial Loyalty'].PrestoJulio = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="C. Grass. Broth"})
  540.     sets.precast.JA['Bestial Loyalty'].SwiftSieghard = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Mlw. Bird Broth"})
  541.     sets.precast.JA['Bestial Loyalty'].MailbusterCetas = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Gob. Bug Broth"})
  542.     sets.precast.JA['Bestial Loyalty'].AudaciousAnna = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="B. Carrion Broth"})
  543.     sets.precast.JA['Bestial Loyalty'].TurbidToloi = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Auroral Broth"})
  544.     sets.precast.JA['Bestial Loyalty'].LuckyLulush = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="L. Carrot Broth"})
  545.     sets.precast.JA['Bestial Loyalty'].DipperYuly = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Wool Grease"})
  546.     sets.precast.JA['Bestial Loyalty'].FlowerpotMerle = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Vermihumus"})
  547.     sets.precast.JA['Bestial Loyalty'].DapperMac = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Briny Broth"})
  548.     sets.precast.JA['Bestial Loyalty'].DiscreetLouise = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Deepbed Soil"})
  549.     sets.precast.JA['Bestial Loyalty'].FatsoFargann = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="C. Plasma Broth"})
  550.     sets.precast.JA['Bestial Loyalty'].FaithfulFalcorr = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Lucky Broth"})
  551.     sets.precast.JA['Bestial Loyalty'].BugeyedBroncha = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Svg. Mole Broth"})
  552.     sets.precast.JA['Bestial Loyalty'].BloodclawShasra = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Rzr. Brain Broth"})
  553.     sets.precast.JA['Bestial Loyalty'].GorefangHobs = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="B. Carrion Broth"})
  554.     sets.precast.JA['Bestial Loyalty'].GooeyGerard = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Cl. Wheat Broth"})
  555.     sets.precast.JA['Bestial Loyalty'].CrudeRaphie = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Shadowy Broth"})
  556.  
  557. -------------------------------------------------------------------------------------------------------------------
  558. -- Complete iLvl Jug Pet Precast List
  559. -------------------------------------------------------------------------------------------------------------------
  560.  
  561.     sets.precast.JA['Bestial Loyalty'].DroopyDortwin = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Swirling Broth"})
  562.     sets.precast.JA['Bestial Loyalty'].PonderingPeter = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Vis. Broth"})
  563.     sets.precast.JA['Bestial Loyalty'].SunburstMalfik = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Shimmering Broth"})
  564.     sets.precast.JA['Bestial Loyalty'].AgedAngus = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Ferm. Broth"})
  565.     sets.precast.JA['Bestial Loyalty'].WarlikePatrick = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Livid Broth"})
  566.     sets.precast.JA['Bestial Loyalty'].ScissorlegXerin = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Spicy Broth"})
  567.     sets.precast.JA['Bestial Loyalty'].BouncingBertha = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Bubbly Broth"})
  568.     sets.precast.JA['Bestial Loyalty'].RhymingShizuna = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Lyrical Broth"})
  569.     sets.precast.JA['Bestial Loyalty'].AttentiveIbuki = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Salubrious Broth"})
  570.     sets.precast.JA['Bestial Loyalty'].SwoopingZhivago = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Windy Greens"})
  571.     sets.precast.JA['Bestial Loyalty'].AmiableRoche = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Airy Broth"})
  572.     sets.precast.JA['Bestial Loyalty'].HeraldHenry = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Trans. Broth"})
  573.     sets.precast.JA['Bestial Loyalty'].BrainyWaluis = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Crumbly Soil"})
  574.     sets.precast.JA['Bestial Loyalty'].HeadbreakerKen = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Blackwater Broth"})
  575.     sets.precast.JA['Bestial Loyalty'].RedolentCandi = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Electrified Broth"})
  576.     sets.precast.JA['Bestial Loyalty'].AlluringHoney = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Bug-Ridden Broth"})
  577.     sets.precast.JA['Bestial Loyalty'].CaringKiyomaro = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Fizzy Broth"})
  578.     sets.precast.JA['Bestial Loyalty'].VivaciousVickie = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Tant. Broth"})
  579.     sets.precast.JA['Bestial Loyalty'].HurlerPercival = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Pale Sap"})
  580.     sets.precast.JA['Bestial Loyalty'].BlackbeardRandy = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Meaty Broth"})
  581.     sets.precast.JA['Bestial Loyalty'].GenerousArthur = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Dire Broth"})
  582.     sets.precast.JA['Bestial Loyalty'].ThreestarLynn = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Muddy Broth"})
  583.     sets.precast.JA['Bestial Loyalty'].BraveHeroGlenn = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Wispy Broth"})
  584.     sets.precast.JA['Bestial Loyalty'].SharpwitHermes = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Saline Broth"})
  585.     sets.precast.JA['Bestial Loyalty'].ColibriFamiliar = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Sugary Broth"})
  586.     sets.precast.JA['Bestial Loyalty'].ChoralLeera = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Glazed Broth"})
  587.     sets.precast.JA['Bestial Loyalty'].SpiderFamiliar = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Sticky Webbing"})
  588.     sets.precast.JA['Bestial Loyalty'].GussyHachirobe = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Slimy Webbing"})
  589.     sets.precast.JA['Bestial Loyalty'].AcuexFamiliar = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Poisonous Broth"})
  590.     sets.precast.JA['Bestial Loyalty'].FluffyBredo = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Venomous Broth"})
  591. end
  592.  
  593. -------------------------------------------------------------------------------------------------------------------
  594. -- Job-specific hooks that are called to process player actions at specific points in time.
  595. -------------------------------------------------------------------------------------------------------------------
  596.  
  597. function job_precast(spell, action, spellMap, eventArgs)
  598.     cancel_conflicting_buffs(spell, action, spellMap, eventArgs)
  599.  
  600.         if spell.type == "WeaponSkill" and spell.name ~= 'Mistral Axe' and spell.name ~= 'Bora Axe' and spell.target.distance > target_distance then
  601.                 cancel_spell()
  602.                 add_to_chat(123, spell.name..' Canceled: [Out of Range]')
  603.                 return
  604.         end
  605.  
  606.     if spell.english == 'Reward' then
  607.         if state.RewardMode.value == 'Theta' then
  608.             equip(sets.precast.JA.Reward.Theta)
  609.         elseif state.RewardMode.value == 'Zeta' then
  610.             equip(sets.precast.JA.Reward.Zeta)
  611.         elseif state.RewardMode.value == 'Eta' then
  612.             equip(sets.precast.JA.Reward.Eta)
  613.         end
  614.     end
  615.  
  616.     if spell.english == 'Bestial Loyalty' or spell.english == 'Call Beast' then
  617.                 if state.JugMode.value == 'FunguarFamiliar' then
  618.             equip(sets.precast.JA['Bestial Loyalty'].FunguarFamiliar)
  619.                 elseif state.JugMode.value == 'CourierCarrie' then
  620.             equip(sets.precast.JA['Bestial Loyalty'].CourierCarrie)
  621.                 elseif state.JugMode.value == 'AmigoSabotender' then
  622.             equip(sets.precast.JA['Bestial Loyalty'].AmigoSabotender)
  623.                 elseif state.JugMode.value == 'NurseryNazuna' then
  624.             equip(sets.precast.JA['Bestial Loyalty'].NurseryNazuna)
  625.                 elseif state.JugMode.value == 'CraftyClyvonne' then
  626.             equip(sets.precast.JA['Bestial Loyalty'].CraftyClyvonne)
  627.                 elseif state.JugMode.value == 'PrestoJulio' then
  628.             equip(sets.precast.JA['Bestial Loyalty'].PrestoJulio)
  629.                 elseif state.JugMode.value == 'SwiftSieghard' then
  630.             equip(sets.precast.JA['Bestial Loyalty'].SwiftSieghard)
  631.                 elseif state.JugMode.value == 'MailbusterCetas' then
  632.             equip(sets.precast.JA['Bestial Loyalty'].MailbusterCetas)
  633.                 elseif state.JugMode.value == 'AudaciousAnna' then
  634.             equip(sets.precast.JA['Bestial Loyalty'].AudaciousAnna)
  635.                 elseif state.JugMode.value == 'TurbidToloi' then
  636.             equip(sets.precast.JA['Bestial Loyalty'].TurbidToloi)
  637.                 elseif state.JugMode.value == 'SlipperySilas' then
  638.             equip(sets.precast.JA['Bestial Loyalty'].SlipperySilas)
  639.                 elseif state.JugMode.value == 'LuckyLulush' then
  640.             equip(sets.precast.JA['Bestial Loyalty'].LuckyLulush)
  641.                 elseif state.JugMode.value == 'DipperYuly' then
  642.             equip(sets.precast.JA['Bestial Loyalty'].DipperYuly)
  643.                 elseif state.JugMode.value == 'FlowerpotMerle' then
  644.             equip(sets.precast.JA['Bestial Loyalty'].FlowerpotMerle)
  645.                 elseif state.JugMode.value == 'DapperMac' then
  646.             equip(sets.precast.JA['Bestial Loyalty'].DapperMac)
  647.                 elseif state.JugMode.value == 'DiscreetLouise' then
  648.             equip(sets.precast.JA['Bestial Loyalty'].DiscreetLouise)
  649.                 elseif state.JugMode.value == 'FatsoFargann' then
  650.             equip(sets.precast.JA['Bestial Loyalty'].FatsoFargann)
  651.                 elseif state.JugMode.value == 'FaithfulFalcorr' then
  652.             equip(sets.precast.JA['Bestial Loyalty'].FaithfulFalcorr)
  653.                 elseif state.JugMode.value == 'BugeyedBroncha' then
  654.             equip(sets.precast.JA['Bestial Loyalty'].BugeyedBroncha)
  655.                 elseif state.JugMode.value == 'BloodclawShasra' then
  656.             equip(sets.precast.JA['Bestial Loyalty'].BloodclawShasra)
  657.                 elseif state.JugMode.value == 'GorefangHobs' then
  658.             equip(sets.precast.JA['Bestial Loyalty'].GorefangHobs)
  659.                 elseif state.JugMode.value == 'GooeyGerard' then
  660.             equip(sets.precast.JA['Bestial Loyalty'].GooeyGerard)
  661.                 elseif state.JugMode.value == 'CrudeRaphie' then
  662.             equip(sets.precast.JA['Bestial Loyalty'].CrudeRaphie)
  663.                 elseif state.JugMode.value == 'DroopyDortwin' then
  664.             equip(sets.precast.JA['Bestial Loyalty'].DroopyDortwin)
  665.                 elseif state.JugMode.value == 'PonderingPeter' then
  666.                         equip(sets.precast.JA['Bestial Loyalty'].PonderingPeter)
  667.                 elseif state.JugMode.value == 'SunburstMalfik' then
  668.                         equip(sets.precast.JA['Bestial Loyalty'].SunburstMalfik)
  669.                 elseif state.JugMode.value == 'AgedAngus' then
  670.                         equip(sets.precast.JA['Bestial Loyalty'].AgedAngus)
  671.                 elseif state.JugMode.value == 'WarlikePatrick' then
  672.                         equip(sets.precast.JA['Bestial Loyalty'].WarlikePatrick)
  673.                 elseif state.JugMode.value == 'ScissorlegXerin' then
  674.                         equip(sets.precast.JA['Bestial Loyalty'].ScissorlegXerin)
  675.                 elseif state.JugMode.value == 'BouncingBertha' then
  676.                         equip(sets.precast.JA['Bestial Loyalty'].BouncingBertha)
  677.                 elseif state.JugMode.value == 'RhymingShizuna' then
  678.                         equip(sets.precast.JA['Bestial Loyalty'].RhymingShizuna)
  679.                 elseif state.JugMode.value == 'AttentiveIbuki' then
  680.                         equip(sets.precast.JA['Bestial Loyalty'].AttentiveIbuki)
  681.                 elseif state.JugMode.value == 'SwoopingZhivago' then
  682.                         equip(sets.precast.JA['Bestial Loyalty'].SwoopingZhivago)
  683.                 elseif state.JugMode.value == 'AmiableRoche' then
  684.                         equip(sets.precast.JA['Bestial Loyalty'].AmiableRoche)
  685.                 elseif state.JugMode.value == 'HeraldHenry' then
  686.                         equip(sets.precast.JA['Bestial Loyalty'].HeraldHenry)
  687.                 elseif state.JugMode.value == 'BrainyWaluis' then
  688.                         equip(sets.precast.JA['Bestial Loyalty'].BrainyWaluis)
  689.                 elseif state.JugMode.value == 'HeadbreakerKen' then
  690.                         equip(sets.precast.JA['Bestial Loyalty'].HeadbreakerKen)
  691.                 elseif state.JugMode.value == 'RedolentCandi' then
  692.                         equip(sets.precast.JA['Bestial Loyalty'].RedolentCandi)
  693.                 elseif state.JugMode.value == 'AlluringHoney' then
  694.                         equip(sets.precast.JA['Bestial Loyalty'].AlluringHoney)
  695.                 elseif state.JugMode.value == 'CaringKiyomaro' then
  696.                         equip(sets.precast.JA['Bestial Loyalty'].CaringKiyomaro)
  697.                 elseif state.JugMode.value == 'VivaciousVickie' then
  698.                         equip(sets.precast.JA['Bestial Loyalty'].VivaciousVickie)
  699.                 elseif state.JugMode.value == 'HurlerPercival' then
  700.                         equip(sets.precast.JA['Bestial Loyalty'].HurlerPercival)
  701.                 elseif state.JugMode.value == 'BlackbeardRandy' then
  702.                         equip(sets.precast.JA['Bestial Loyalty'].BlackbeardRandy)
  703.                 elseif state.JugMode.value == 'GenerousArthur' then
  704.                         equip(sets.precast.JA['Bestial Loyalty'].GenerousArthur)
  705.                 elseif state.JugMode.value == 'ThreestarLynn' then
  706.                         equip(sets.precast.JA['Bestial Loyalty'].ThreestarLynn)
  707.                 elseif state.JugMode.value == 'BraveHeroGlenn' then
  708.                         equip(sets.precast.JA['Bestial Loyalty'].BraveHeroGlenn)
  709.                 elseif state.JugMode.value == 'SharpwitHermes' then
  710.                         equip(sets.precast.JA['Bestial Loyalty'].SharpwitHermes)
  711.                 elseif state.JugMode.value == 'ColibriFamiliar' then
  712.                         equip(sets.precast.JA['Bestial Loyalty'].ColibriFamiliar)
  713.                 elseif state.JugMode.value == 'ChoralLeera' then
  714.                         equip(sets.precast.JA['Bestial Loyalty'].ChoralLeera)
  715.                 elseif state.JugMode.value == 'SpiderFamiliar' then
  716.                         equip(sets.precast.JA['Bestial Loyalty'].SpiderFamiliar)
  717.                 elseif state.JugMode.value == 'GussyHachirobe' then
  718.                         equip(sets.precast.JA['Bestial Loyalty'].GussyHachirobe)
  719.                 elseif state.JugMode.value == 'AcuexFamiliar' then
  720.                         equip(sets.precast.JA['Bestial Loyalty'].AcuexFamiliar)
  721.                 elseif state.JugMode.value == 'FluffyBredo' then
  722.                         equip(sets.precast.JA['Bestial Loyalty'].FluffyBredo)
  723.         end
  724.     end
  725.  
  726. -- Define class for Sic and Ready moves.
  727.         if ready_moves_to_check:contains(spell.english) then
  728.                 classes.CustomClass = "WS"
  729.                 if state.PetMode.Value == 'PetOnly' then
  730.                  equip(sets.midcast.Pet.ReadyRecastNE)
  731.                 else
  732.                          equip(sets.midcast.Pet.ReadyRecast)
  733.                 end
  734.         end
  735. end
  736.  
  737. function job_post_precast(spell, action, spellMap, eventArgs)
  738. -- If Killer Instinct is active during WS, equip Ferine Gausape +2.
  739.     if spell.type:lower() == 'weaponskill' and buffactive['Killer Instinct'] then
  740.                 equip(sets.buff['Killer Instinct'])
  741.         end
  742.  
  743. -- Equip Chaac Belt for TH+1 on common Subjob Abilities or Spells.
  744.     if abilities_to_check:contains(spell.english) and state.TreasureMode.value == 'Tag' then
  745.                 equip(sets.THBelt)
  746.     end
  747. end
  748.  
  749. function job_pet_midcast(spell, action, spellMap, eventArgs)
  750.         if state.PetMode.value == 'PetOnly' then
  751.                 if state.OffenseMode.value == 'HighAcc' or state.OffenseMode.value == 'HighAccHaste' then
  752.                         equip(sets.midcast.Pet.ReadyNE.HighAcc)
  753.                 elseif state.OffenseMode.value == 'MedAcc' or state.OffenseMode.value == 'MedAccHaste' then
  754.                         equip(sets.midcast.Pet.ReadyNE.MedAcc)
  755.                 else
  756.                         equip(set_combine(sets.midcast.Pet.ReadyNE, sets.midcast.Pet[state.CorrelationMode.value]))
  757.                 end
  758.         else
  759.                 if state.OffenseMode.value == 'HighAcc' or state.OffenseMode.value == 'HighAccHaste' then
  760.                         equip(sets.midcast.Pet.HighAcc)
  761.                 else
  762.                         equip(set_combine(sets.midcast.Pet.WS, sets.midcast.Pet[state.CorrelationMode.value]))
  763.                 end
  764.         end
  765.  
  766.         if magic_ready_moves:contains(spell.name) then
  767.                 if state.PetMode.value == 'PetOnly' then
  768.                         equip(sets.midcast.Pet.MagicReadyNE)
  769.                 else
  770.                         equip(sets.midcast.Pet.MagicReady)
  771.                 end
  772.         end
  773.  
  774.     -- If Pet TP, before bonuses, is less than a certain value then equip Nukumi Manoplas +1
  775.     if tp_based_ready_moves:contains(spell.name) and PetJob == 'Warrior' then
  776.                 if pet.tp < 190 then
  777.                         equip(sets.midcast.Pet.TPBonus)
  778.                 end
  779.         elseif tp_based_ready_moves:contains(spell.name) and PetJob ~= 'Warrior' then
  780.                 if pet.tp < 240 then
  781.                         equip(sets.midcast.Pet.TPBonus)
  782.                 end
  783.         end
  784. end
  785.  
  786. function job_pet_aftercast(spell, action, spellMap, eventArgs)
  787.         if ready_moves_to_check:contains(spell.english) and state.PetMode.value == 'PetOnly' then
  788.                 equip(sets.IdleAxesNE)
  789.         end
  790. end
  791.  
  792. -- Return true if we handled the aftercast work.  Otherwise it will fall back
  793. -- to the general aftercast() code in Mote-Include.
  794. function job_aftercast(spell, action, spellMap, eventArgs)
  795.         if ready_moves_to_check:contains(spell.english) and state.PetMode.value == 'PetOnly' then
  796.                 equip(sets.IdleAxesNE)
  797.         end
  798. end
  799.  
  800. -------------------------------------------------------------------------------------------------------------------
  801. -- Customization hook for idle sets.
  802. -------------------------------------------------------------------------------------------------------------------
  803.  
  804. function customize_idle_set(idleSet)
  805.     if player.hpp < 50 and pet.status ~= 'Engaged' then
  806.         idleSet = set_combine(idleSet, sets.ExtraRegen)
  807.     end
  808.     return idleSet
  809. end
  810.  
  811. -------------------------------------------------------------------------------------------------------------------
  812. -- Hooks for Reward, Correlation, Treasure Hunter, and Pet Mode handling.
  813. -------------------------------------------------------------------------------------------------------------------
  814.  
  815. function job_state_change(stateField, newValue, oldValue)
  816.     if stateField == 'Correlation Mode' then
  817.         state.CorrelationMode:set(newValue)
  818.     elseif stateField == 'Reward Mode' then
  819.                 state.RewardMode:set(newValue)
  820.     elseif stateField == 'Treasure Mode' then
  821.         state.TreasureMode:set(newValue)
  822.         elseif stateField == 'Pet Mode' then
  823.                 state.CombatWeapon:set(newValue)
  824.         elseif stateField == 'Jug Mode' then
  825.                 state.JugMode:set(newValue)
  826.         end
  827. end
  828.  
  829. function get_custom_wsmode(spell, spellMap, default_wsmode)
  830.         if default_wsmode == 'Normal' then
  831.                 if spell.english == "Ruinator" and (world.day_element == 'Water' or world.day_element == 'Wind' or world.day_element == 'Ice') then
  832.                         return 'Mekira'
  833.                 end
  834.         end
  835. end
  836.  
  837. -------------------------------------------------------------------------------------------------------------------
  838. -- User code that supplements self-commands.
  839. -------------------------------------------------------------------------------------------------------------------
  840.  
  841. -- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
  842. function job_handle_equipping_gear(playerStatus, eventArgs)    
  843.     if player.equipment.back == 'Mecisto. Mantle' or player.equipment.back == 'Aptitude Mantle' or player.equipment.back == 'Aptitude Mantle +1' then
  844.         disable('back')
  845.     else
  846.         enable('back')
  847.     end
  848. end
  849.  
  850. -- Called by the 'update' self-command, for common needs.
  851. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  852. function job_update(cmdParams, eventArgs)
  853.     get_combat_form()
  854.  
  855.         if state.JugMode.value == 'FunguarFamiliar' then
  856.                 PetInfo = "Funguar, Plantoid"
  857.                 PetJob = 'Warrior'
  858.         elseif state.JugMode.value == 'CourierCarrie' then
  859.                 PetInfo = "Crab, Aquan"
  860.                 PetJob = 'Paladin'
  861.         elseif state.JugMode.value == 'AmigoSabotender' then
  862.                 PetInfo = "Cactuar, Plantoid"
  863.                 PetJob = 'Warrior'
  864.         elseif state.JugMode.value == 'NurseryNazuna' then
  865.                 PetInfo = "Sheep, Beast"
  866.                 PetJob = 'Warrior'
  867.         elseif state.JugMode.value == 'CraftyClyvonne' then
  868.                 PetInfo = "Coeurl, Beast"
  869.                 PetJob = 'Warrior'
  870.         elseif state.JugMode.value == 'PrestoJulio' then
  871.                 PetInfo = "Flytrap, Plantoid"
  872.                 PetJob = 'Warrior'
  873.         elseif state.JugMode.value == 'SwiftSieghard' then
  874.                 PetInfo = "Raptor, Lizard"
  875.                 PetJob = 'Warrior'
  876.         elseif state.JugMode.value == 'MailbusterCetas' then
  877.                 PetInfo = "Fly, Vermin"
  878.                 PetJob = 'Warrior'
  879.         elseif state.JugMode.value == 'AudaciousAnna' then
  880.                 PetInfo = "Lizard, Lizard"
  881.                 PetJob = 'Warrior'
  882.         elseif state.JugMode.value == 'TurbidToloi' then
  883.                 PetInfo = "Pugil, Aquan"
  884.                 PetJob = 'Warrior'
  885.         elseif state.JugMode.value == 'SlipperySilas' then
  886.                 PetInfo = "Toad, Aquan"
  887.                 PetJob = 'Warrior'
  888.         elseif state.JugMode.value == 'LuckyLulush' then
  889.                 PetInfo = "Rabbit, Beast"
  890.                 PetJob = 'Warrior'
  891.         elseif state.JugMode.value == 'DipperYuly' then
  892.                 PetInfo = "Ladybug, Vermin"
  893.                 PetJob = 'Thief'
  894.         elseif state.JugMode.value == 'FlowerpotMerle' then
  895.                 PetInfo = "Mandragora, Plantoid"
  896.                 PetJob = 'Monk'
  897.         elseif state.JugMode.value == 'DapperMac' then
  898.                 PetInfo = "Apkallu, Bird"
  899.                 PetJob = 'Monk'
  900.         elseif state.JugMode.value == 'DiscreetLouise' then
  901.                 PetInfo = "Funguar, Plantoid"
  902.                 PetJob = 'Warrior'
  903.         elseif state.JugMode.value == 'FatsoFargann' then
  904.                 PetInfo = "Leech, Amorph"
  905.                 PetJob = 'Warrior'
  906.         elseif state.JugMode.value == 'FaithfulFalcorr' then
  907.                 PetInfo = "Hippogryph, Bird"
  908.                 PetJob = 'Thief'
  909.         elseif state.JugMode.value == 'BugeyedBroncha' then
  910.                 PetInfo = "Eft, Lizard"
  911.                 PetJob = 'Warrior'
  912.         elseif state.JugMode.value == 'BloodclawShasra' then
  913.                 PetInfo = "Lynx, Beast"
  914.                 PetJob = 'Warrior'
  915.         elseif state.JugMode.value == 'GorefangHobs' then
  916.                 PetInfo = "Tiger, Beast"
  917.                 PetJob = 'Warrior'
  918.         elseif state.JugMode.value == 'GooeyGerard' then
  919.                 PetInfo = "Slug, Amorph"
  920.                 PetJob = 'Warrior'
  921.         elseif state.JugMode.value == 'CrudeRaphie' then
  922.                 PetInfo = "Adamantoise, Lizard"
  923.                 PetJob = 'Paladin'
  924.         elseif state.JugMode.value == 'DroopyDortwin' then
  925.                 PetInfo = "Rabbit, Beast"
  926.                 PetJob = 'Warrior'
  927.         elseif state.JugMode.value == 'PonderingPeter' then
  928.                 PetInfo = "HQ Rabbit, Beast"
  929.                 PetJob = 'Warrior'
  930.         elseif state.JugMode.value == 'SunburstMalfik' then
  931.                 PetInfo = "Crab, Aquan"
  932.                 PetJob = 'Paladin'
  933.         elseif state.JugMode.value == 'AgedAngus' then
  934.                 PetInfo = "HQ Crab, Aquan"
  935.                 PetJob = 'Paladin'
  936.         elseif state.JugMode.value == 'WarlikePatrick' then
  937.                 PetInfo = "Lizard, Lizard"
  938.                 PetJob = 'Warrior'
  939.         elseif state.JugMode.value == 'ScissorlegXerin' then
  940.                 PetInfo = "Chapuli, Vermin"
  941.                 PetJob = 'Warrior'
  942.         elseif state.JugMode.value == 'BouncingBertha' then
  943.                 PetInfo = "HQ Chapuli, Vermin"
  944.                 PetJob = 'Warrior'
  945.         elseif state.JugMode.value == 'RhymingShizuna' then
  946.                 PetInfo = "Sheep, Beast"
  947.                 PetJob = 'Warrior'
  948.         elseif state.JugMode.value == 'AttentiveIbuki' then
  949.                 PetInfo = "Tulfaire, Bird"
  950.                 PetJob = 'Warrior'
  951.         elseif state.JugMode.value == 'SwoopingZhivago' then
  952.                 PetInfo = "HQ Tulfaire, Bird"
  953.                 PetJob = 'Warrior'
  954.         elseif state.JugMode.value == 'AmiableRoche' then
  955.                 PetInfo = "Pugil, Aquan"
  956.                 PetJob = 'Warrior'
  957.         elseif state.JugMode.value == 'HeraldHenry' then
  958.                 PetInfo = "Crab, Aquan"
  959.                 PetJob = 'Paladin'
  960.         elseif state.JugMode.value == 'BrainyWaluis' then
  961.                 PetInfo = "Funguar, Plantoid"
  962.                 PetJob = 'Warrior'
  963.         elseif state.JugMode.value == 'HeadbreakerKen' then
  964.                 PetInfo = "Fly, Vermin"
  965.                 PetJob = 'Warrior'
  966.         elseif state.JugMode.value == 'RedolentCandi' then
  967.                 PetInfo = "Snapweed, Plantoid"
  968.                 PetJob = 'Warrior'
  969.         elseif state.JugMode.value == 'AlluringHoney' then
  970.                 PetInfo = "HQ Snapweed, Plantoid"
  971.                 PetJob = 'Warrior'
  972.         elseif state.JugMode.value == 'CaringKiyomaro' then
  973.                 PetInfo = "Raaz, Beast"
  974.                 PetJob = 'Monk'
  975.         elseif state.JugMode.value == 'VivaciousVickie' then
  976.                 PetInfo = "HQ Raaz, Beast"
  977.                 PetJob = 'Monk'
  978.         elseif state.JugMode.value == 'HurlerPercival' then
  979.                 PetInfo = "Beetle, Vermin"
  980.                 PetJob = 'Paladin'
  981.         elseif state.JugMode.value == 'BlackbeardRandy' then
  982.                 PetInfo = "Tiger, Beast"
  983.                 PetJob = 'Warrior'
  984.         elseif state.JugMode.value == 'GenerousArthur' then
  985.                 PetInfo = "Slug, Amorph"
  986.                 PetJob = 'Warrior'
  987.         elseif state.JugMode.value == 'ThreestarLynn' then
  988.                 PetInfo = "Ladybug, Vermin"
  989.                 PetJob = 'Thief'
  990.         elseif state.JugMode.value == 'BraveHeroGlenn' then
  991.                 PetInfo = "Frog, Aquan"
  992.                 PetJob = 'Warrior'
  993.         elseif state.JugMode.value == 'SharpwitHermes' then
  994.                 PetInfo = "Mandragora, Plantoid"
  995.                 PetJob = 'Monk'
  996.         elseif state.JugMode.value == 'ColibriFamiliar' then
  997.                 PetInfo = "Colibri, Bird"
  998.                 PetJob = 'Red Mage'
  999.         elseif state.JugMode.value == 'ChoralLeera' then
  1000.                 PetInfo = "HQ Colibri, Bird"
  1001.                 PetJob = 'Red Mage'
  1002.         elseif state.JugMode.value == 'SpiderFamiliar' then
  1003.                 PetInfo = "Spider, Vermin"
  1004.                 PetJob = 'Warrior'
  1005.         elseif state.JugMode.value == 'GussyHachirobe' then
  1006.                 PetInfo = "HQ Spider, Vermin"
  1007.                 PetJob = 'Warrior'
  1008.         elseif state.JugMode.value == 'AcuexFamiliar' then
  1009.                 PetInfo = "Acuex, Amorph"
  1010.                 PetJob = 'Black Mage'
  1011.         elseif state.JugMode.value == 'FluffyBredo' then
  1012.                 PetInfo = "HQ Acuex, Amorph"
  1013.                 PetJob = 'Black Mage'
  1014.         end
  1015. end
  1016.  
  1017. -- Updates gear based on pet status changes.
  1018. function job_pet_status_change(newStatus, oldStatus, eventArgs)
  1019.         if newStatus == 'Idle' or newStatus == 'Engaged' then
  1020.                 handle_equipping_gear(player.status)
  1021.         end
  1022. end
  1023.  
  1024. -- Set eventArgs.handled to true if we don't want the automatic display to be run.
  1025. function display_current_job_state(eventArgs)
  1026.     local msg = 'Melee'
  1027.    
  1028.     if state.CombatForm.has_value then
  1029.         msg = msg .. ' (' .. state.CombatForm.value .. ')'
  1030.     end
  1031.    
  1032.     msg = msg .. ': '
  1033.    
  1034.     msg = msg .. state.OffenseMode.value
  1035.     if state.HybridMode.value ~= 'Normal' then
  1036.         msg = msg .. '/' .. state.HybridMode.value
  1037.     end
  1038.     msg = msg .. ', WS: ' .. state.WeaponskillMode.value
  1039.    
  1040.     if state.DefenseMode.value ~= 'None' then
  1041.         msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  1042.     end
  1043.    
  1044.     if state.Kiting.value then
  1045.         msg = msg .. ', Kiting'
  1046.     end
  1047.  
  1048.     msg = msg .. ', Reward: '..state.RewardMode.value..', Corr.: '..state.CorrelationMode.value
  1049.  
  1050.     if state.JugMode.value ~= 'None' then
  1051.         add_to_chat(8,'--- Jug Pet: '.. state.JugMode.value ..' --- ('.. PetInfo ..', '.. PetJob ..')')
  1052.     end
  1053.  
  1054.     add_to_chat(122, msg)
  1055.  
  1056.     eventArgs.handled = true
  1057. end
  1058.  
  1059. -------------------------------------------------------------------------------------------------------------------
  1060. -- Utility functions specific to this job.
  1061. -------------------------------------------------------------------------------------------------------------------
  1062.  
  1063. function get_combat_form()
  1064.     if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1065.                 state.CombatForm:set('DW')
  1066.     else
  1067.         state.CombatForm:reset()
  1068.         end
  1069. end
RAW Paste Data