talran

Falkirk Gearswap BST LUA December 15th, 2015 pet.tp fix

Dec 14th, 2015
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 113.15 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Last Revised: December 14th, 2015 (Commented out pet.tp stuff for fae -kmeaux)
  3. -- (Added on-screen indicators for Modes [requires the Text add-on] - set DisplayModeInfo to 'true' to enable
  4. -- Added Buff Timers for Reward, Spur, Run Wild, and certain Ready Moves - set DisplayPetBuffTimers to 'true' to enable
  5. -- You can now identify pets based on Pet Name or Jug Name for Pet Cycling.)
  6. --
  7. -- Gearswap Commands Specific to this File:
  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['Aftermath: Lv.3'] = buffactive['Aftermath: Lv.3'] or false
  46.     state.Buff['Killer Instinct'] = buffactive['Killer Instinct'] or false
  47.     state.Buff.Doomed = buffactive.doomed or false
  48.  
  49.     -- Pet Buff Timer Info
  50.     DisplayPetBuffTimers = 'false'
  51.  
  52.     -- Input Pet:TP Bonus values for Skirmish Axes used during Pet Buffs
  53.     TP_Bonus_Main = 180
  54.     TP_Bonus_Sub = 180
  55.  
  56.     -- 1200 Job Point Gift Bonus (Set equal to 0 if below 1200 Job Points)
  57.     TP_Gift_Bonus = 40
  58.  
  59.     -- (Adjust Run Wild Duration based on # of Job Points)
  60.     RunWildDuration = 330;RunWildIcon = 'abilities/00121.png'
  61.     RewardRegenIcon = 'spells/00023.png'
  62.     SpurIcon = 'abilities/00037.png'
  63.     BubbleCurtainDuration = 180;BubbleCurtainIcon = 'spells/00048.png'
  64.     ScissorGuardIcon = 'spells/00043.png'
  65.     SecretionIcon = 'spells/00053.png'
  66.     RageIcon = 'abilities/00002.png'
  67.     RhinoGuardIcon = 'spells/00053.png'
  68.     ZealousSnortIcon = 'spells/00057.png'
  69.  
  70.     get_combat_form()
  71.     get_melee_groups()
  72.  
  73.     -- Display Mode Info as on-screen Text
  74.     DisplayModeInfo = 'false'
  75.     TextBoxX = 950
  76.     TextBoxY = 47
  77.     TextSize = 10
  78.     display_mode_info()
  79. end
  80.  
  81. function user_setup()
  82.     state.OffenseMode:options('Normal', 'MedAcc', 'HighAcc')
  83.     state.HybridMode:options('Normal', 'Hybrid')
  84.     state.WeaponskillMode:options('Normal', 'WSMedAcc', 'WSHighAcc')
  85.     state.CastingMode:options('Normal')
  86.     state.IdleMode:options('Normal', 'Reraise', 'Regen', 'Refresh')
  87.     state.RestingMode:options('Normal')
  88.     state.PhysicalDefenseMode:options('PetPDT', 'HybridPDT', 'PDT')
  89.     state.MagicalDefenseMode:options('MDTShell', 'PetMDT')
  90.  
  91.     -- 'Out of Range' distance; WS will auto-cancel
  92.     target_distance = 7
  93.  
  94.     -- Set up Jug Pet cycling and keybind Alt+F8
  95.     -- INPUT PREFERRED JUG PETS HERE
  96.     state.JugMode = M{['description']='Jug Mode', 'Meaty Broth', 'Windy Greens', 'Livid Broth',
  97.         'HeadbreakerKen', 'Tant. Broth', 'Bubbly Broth', 'HeraldHenry'}
  98.     send_command('bind !f8 gs c cycle JugMode')
  99.  
  100.     -- Set up Monster Correlation Modes and keybind Ctrl+F8
  101.     state.CorrelationMode = M{['description']='Correlation Mode', 'Neutral', 'Favorable'}
  102.     send_command('bind ^f8 gs c cycle CorrelationMode')
  103.  
  104.     -- Set up Pet Modes for Hybrid sets and keybind 'Windows Key'+F8
  105.     state.PetMode = M{['description']='Pet Mode', 'PetOnly', 'PetTank', 'Normal'}
  106.     send_command('bind @f8 gs c cycle PetMode')
  107.  
  108.     -- Keybind Ctrl+F11 to cycle Magical Defense Modes
  109.     send_command('bind ^f11 gs c cycle MagicalDefenseMode')
  110.  
  111.     -- Set up Reward Modes and keybind alt+=
  112.     state.RewardMode = M{['description']='Reward Mode', 'Theta', 'Eta', 'Zeta'}
  113.     send_command('bind != gs c cycle RewardMode')
  114.  
  115.     -- Set up Treasure Modes and keybind Ctrl+=
  116.     state.TreasureMode = M{['description']='Treasure Mode', 'Tag', 'Normal'}
  117.     send_command('bind ^= gs c cycle TreasureMode')
  118.  
  119. -- Complete list of Ready moves
  120. physical_ready_moves = S{'Foot Kick','Whirl Claws','Wild Carrot','Sheep Charge','Lamb Chop','Rage','Head Butt',
  121.     'Wild Oats','Leaf Dagger','Claw Cyclone','Razor Fang','Nimble Snap','Cyclotail','Rhino Guard','Rhino Attack',
  122.     'Power Attack','Mandibular Bite','Big Scissors','Bubble Curtain','Scissor Guard','Grapple','Spinning Top',
  123.     'Double Claw','Frogkick','Blockhead','Secretion','Brain Crush','Tail Blow','??? Needles','Needleshot',
  124.     'Scythe Tail','Ripper Fang','Chomp Rush','Recoil Dive','Sudden Lunge','Spiral Spin','Wing Slap','Beak Lunge',
  125.     'Suction','Back Heel','Choke Breath','Fantod','Tortoise Stomp','Harden Shell','Sensilla Blades','Tegmina Buffet',
  126.     'Swooping Frenzy','Pentapeck','Sweeping Gouge','Zealous Snort','Somersault','Tickling Tendrils','Pecking Flurry',
  127.     'Sickle Slash'}
  128.  
  129. magic_atk_ready_moves = S{'Dust Cloud','Cursed Sphere','Venom','Toxic Spit','Bubble Shower','Drainkiss',
  130.     'Silence Gas','Dark Spore','Fireball','Plague Breath','Snow Cloud','Charged Whisker','Purulent Ooze',
  131.     'Corrosive Ooze','Aqua Breath','Stink Bomb','Nectarous Deluge','Nepenthic Plunge','Pestilent Plume',
  132.     'Foul Waters','Infected Leech','Gloom Spray'}
  133.  
  134. magic_acc_ready_moves = S{'Sheep Song','Scream','Dream Flower','Roar','Gloeosuccus','Palsy Pollen',
  135.     'Soporific','Geist Wall','Toxic Spit','Numbing Noise','Spoil','Hi-Freq Field','Sandpit','Sandblast',
  136.     'Venom Spray','Filamented Hold','Queasyshroom','Numbshroom','Spore','Shakeshroom','Infrasonics',
  137.     'Chaotic Eye','Blaster','Intimidate','Noisome Powder','Acid Mist','TP Drainkiss','Jettatura',
  138.     'Molting Plumage','Spider Web'}
  139.  
  140. tp_based_ready_moves = S{'Foot Kick','Dust Cloud','Snow Cloud','Wild Carrot','Sheep Song','Sheep Charge',
  141.     'Lamb Chop','Rage','Head Butt','Scream','Dream Flower','Wild Oats','Leaf Dagger','Claw Cyclone','Razor Fang',
  142.     'Roar','Gloeosuccus','Palsy Pollen','Soporific','Cursed Sphere','Somersault','Geist Wall','Numbing Noise',
  143.     'Frogkick','Nimble Snap','Cyclotail','Spoil','Rhino Guard','Rhino Attack','Hi-Freq Field','Sandpit','Sandblast',
  144.     'Mandibular Bite','Metallic Body','Bubble Shower','Bubble Curtain','Scissor Guard','Grapple','Spinning Top',
  145.     'Double Claw','Filamented Hold','Spore','Blockhead','Secretion','Fireball','Tail Blow','Plague Breath',
  146.     'Brain Crush','Infrasonics','Needleshot','Chaotic Eye','Blaster','Ripper Fang','Intimidate','Recoil Dive',
  147.     'Water Wall','Sudden Lunge','Noisome Powder','Wing Slap','Beak Lunge','Suction','Drainkiss','Acid Mist',
  148.     'TP Drainkiss','Back Heel','Jettatura','Choke Breath','Fantod','Charged Whisker','Purulent Ooze',
  149.     'Corrosive Ooze','Tortoise Stomp','Harden Shell','Aqua Breath','Sensilla Blades','Tegmina Buffet',
  150.     'Sweeping Gouge','Zealous Snort','Tickling Tendrils','Pecking Flurry','Pestilent Plume','Foul Waters',
  151.     'Spider Web','Gloom Spray'}
  152.  
  153. pet_buff_moves = S{'Reward','Spur','Run Wild','Bubble Curtain','Scissor Guard','Secretion','Rage',
  154.     'Rhino Guard','Zealous Snort'}
  155.  
  156. -- List of abilities to reference for applying Treasure Hunter +1 via Chaac Belt.
  157. abilities_to_check = S{'Feral Howl','Quickstep','Box Step','Stutter Step','Desperate Flourish',
  158.     'Violent Flourish','Animated Flourish','Provoke','Dia','Dia II','Flash','Bio','Bio II',
  159.     'Sleep','Sleep II','Drain','Aspir','Dispel','Stun','Steal','Mug'}
  160. end
  161.  
  162. function file_unload()
  163.     if binds_on_unload then
  164.         binds_on_unload()
  165.     end
  166.  
  167.     -- Unbinds the Reward, Correlation, PetMode and Treasure hotkeys.
  168.     send_command('unbind ^=')
  169.     send_command('unbind !f8')
  170.     send_command('unbind ^f8')
  171.     send_command('unbind ^f11')
  172.  
  173.     -- Removes any Text Info Boxes
  174.     if DisplayModeInfo == 'true' then
  175.         send_command('text JugPetText delete')
  176.         send_command('text PetModeText delete')
  177.         send_command('text CorrelationText delete')
  178.         send_command('text AccuracyText delete')
  179.     end
  180. end
  181.  
  182. -- BST gearsets
  183. function init_gear_sets()
  184.     -- AUGMENTED GEAR
  185.     Pet_PDT_AxeMain = "Izizoeksi"
  186.     Pet_PDT_AxeSub = "Astolfo"
  187.     Ready_Atk_Axe = {name="Kumbhakarna", augments={'Pet: Attack+20 Pet: Rng.Atk.+20','Pet: Phys. dmg. taken -4%','Pet: TP Bonus+160',}}
  188.     Ready_Acc_Axe = {name="Kumbhakarna", augments={'Pet: Accuracy+20 Pet: Rng. Acc.+20','Pet: "Dbl.Atk."+2 Pet: Crit.hit rate +2','Pet: TP Bonus+180',}}
  189.     Ready_MAB_Axe = {name="Kumbhakarna", augments={'Pet: "Mag.Atk.Bns."+20','Pet: Phys. dmg. taken -4%','Pet: TP Bonus+180',}}
  190.     Ready_MAB_Axe2 = {name="Kumbhakarna", augments={'Pet: "Mag.Atk.Bns."+20','Pet: Phys. dmg. taken -4%','Pet: TP Bonus+200',}}
  191.     Ready_MAcc_Axe = {name="Kumbhakarna", augments={'Pet: Mag. Acc.+20','"Cure" potency +15%','Pet: TP Bonus+180',}}
  192.     Ready_MAcc_Axe2 = {name="Kumbhakarna", augments={'Pet: Mag. Acc.+20','"Cure" potency +15%','Pet: TP Bonus+200',}}
  193.  
  194.     Pet_PDT_head = "Anwig Salade"
  195.     Pet_PDT_body = {name="Acro Surcoat", augments={'Pet: DEF+22','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  196.     Pet_PDT_hands = {name="Acro Gauntlets", augments={'Pet: DEF+22','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  197.     Pet_PDT_legs = {name="Acro Breeches", augments={'Pet: DEF+25','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  198.     Pet_PDT_feet = {name="Acro Leggings", augments={'Pet: DEF+25','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  199.     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%',}}
  200.  
  201.     Pet_MDT_body = {name="Acro Surcoat", augments={'Pet: DEF+22','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  202.     Pet_MDT_hands = {name="Taeon Gloves", augments={'Pet: Mag. Evasion+25','Pet: "Regen"+2','Pet: Damage taken -3%',}}
  203.     Pet_MDT_legs = {name="Acro Breeches", augments={'Pet: DEF+25','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  204.     Pet_MDT_feet = {name="Taeon Boots", augments={'Pet: Mag. Evasion+22','Pet: "Regen"+2','Pet: Damage taken -4%',}}
  205.  
  206.     Ready_Atk_head = "Emicho Coronet +1"
  207.     Ready_Atk_body = {name="Taeon Tabard", augments={'Pet: Attack+23 Pet: Rng.Atk.+23',}}
  208.     Ready_Atk_hands = {name="Acro Gauntlets", augments={'Pet: Attack+25 Pet: Rng.Atk.+25','Pet: "Dbl. Atk."+5',}}
  209.     Ready_Atk_legs = {name="Taeon Tights", augments={'Pet: Attack+23 Pet: Rng.Atk.+23','Pet: "Dbl. Atk."+5','Pet: Haste+5',}}
  210.     Ready_Atk_feet = {name="Taeon Boots", augments={'Pet: Attack+23 Pet: Rng.Atk.+23','Pet: "Dbl. Atk."+5','Pet: Haste+5',}}
  211.     Ready_Atk_back = "Argochampsa Mantle"
  212.  
  213.     Ready_Acc_head = "Emicho Coronet +1"
  214.     Ready_Acc_body = {name="Acro Surcoat", augments={'Pet: Accuracy+24 Pet: Rng.Acc.+24','Pet: "Dbl. Atk."+5','Pet: Haste+5',}}
  215.     Ready_Acc_hands = {name="Acro Gauntlets", augments={'Pet: Accuracy+25 Pet: Rng. Acc.+25','Pet: "Dbl. Atk."+4',}}
  216.     Ready_Acc_legs = {name="Acro Breeches", augments={'Pet: Accuracy+25 Pet: Rng. Acc.+25','Pet: "Store TP"+8',}}
  217.     Ready_Acc_feet = {name="Taeon Boots", augments={'Pet: Accuracy+23 Pet: Rng. Acc.+23',}}
  218.     Ready_Acc_back = {name="Pastoralist's Mantle", augments={'STR+1 DEX+1','Accuracy+1','Pet: Accuracy+20 Pet: Rng. Acc.+20','Pet: Damage taken -5%',}}
  219.  
  220.     Ready_MAB_head = {name="Acro Helm", augments={'Pet: "Mag.Atk.Bns."+25','Pet: "Store TP"+6',}}
  221.     Ready_MAB_body = {name="Acro Surcoat", augments={'Pet: "Mag.Atk.Bns."+25',}}
  222.     Ready_MAB_hands = {name="Acro Gauntlets", augments={'Pet: "Mag.Atk.Bns."+24',}}
  223.     Ready_MAB_legs = {name="Acro Breeches", augments={'Pet: "Mag.Atk.Bns."+22','Pet: Breath+7',}}
  224.     Ready_MAB_feet = {name="Acro Leggings", augments={'Pet: "Mag.Atk.Bns."+23','Pet: Breath+7',}}
  225.  
  226.     Ready_MAcc_head = {name="Acro Helm", augments={'Pet: Mag. Acc.+25','"Call Beast" ability delay -5',}}
  227.     Ready_MAcc_body = {name="Acro Surcoat", augments={'Pet: Mag. Acc.+24',}}
  228.     Ready_MAcc_hands = {name="Acro Gauntlets", augments={'Pet: Mag. Acc.+25',}}
  229.     Ready_MAcc_legs = {name="Acro Breeches", augments={'Pet: Mag. Acc.+25','"Call Beast" ability delay -5',}}
  230.     Ready_MAcc_feet = {name="Acro Leggings", augments={'Pet: Mag. Acc.+23',}}
  231.  
  232.     Pet_Melee_head = Ready_Atk_head
  233.     Pet_Melee_body = Ready_Acc_body
  234.     Pet_Melee_hands = Ready_Acc_hands
  235.     Pet_Melee_legs = Ready_Atk_legs
  236.     Pet_Melee_feet = Ready_Atk_feet
  237.  
  238.     Hybrid_head = {name="Taeon Chapeau", augments={'Accuracy+24','Pet: "Regen"+3','Pet: Damage taken -4%',}}
  239.     Hybrid_body = Pet_PDT_body
  240.     Hybrid_hands = Pet_PDT_hands
  241.     Hybrid_legs = {name="Taeon Tights", augments={'Accuracy+20 Attack+20','"Triple Atk."+2','Pet: Damage taken -4%',}}
  242.     Hybrid_feet = {name="Taeon Boots", augments={'Accuracy+25','"Triple Atk."+2','Pet: Damage taken -4%',}}
  243.  
  244.     DW_head = {name="Taeon Chapeau", augments={'Accuracy+19 Attack+19','"Dual Wield"+5','STR+3 VIT+3',}}
  245.     DW_body = {name="Taeon Tabard", augments={'Accuracy+20 Attack+20','"Dual Wield"+5','Crit. hit damage +2%',}}
  246.     DW_hands = {name="Taeon Gloves", augments={'Accuracy+18 Attack+18','"Dual Wield"+5','STR+6 VIT+6',}}
  247.     DW_legs = {name="Taeon Tights", augments={'Accuracy+22','"Dual Wield"+5','Crit. hit damage +2%',}}
  248.     DW_feet = {name="Taeon Boots", augments={'Accuracy+23','"Dual Wield"+5','Crit. hit damage +2%',}}
  249.  
  250.     MAB_head = "Jumalik Helm"
  251.     MAB_body = "Jumalik Mail"
  252.     MAB_hands = "Leyline Gloves"
  253.     MAB_legs = {name="Taeon Tights", augments={'Mag. Acc.+14 "Mag.Atk.Bns."+14','"Fast Cast"+3','STR+10',}}
  254.     MAB_feet = {name="Taeon Boots", augments={'Mag. Acc.+13 "Mag.Atk.Bns."+13','"Fast Cast"+5','Weapon skill damage +2%',}}
  255.  
  256.     FC_head = {name="Taeon Chapeau", augments={'"Mag.Atk.Bns."+19','"Fast Cast"+4','Weapon skill damage +2%',}}
  257.     FC_body = {name="Taeon Tabard", augments={'"Mag.Atk.Bns."+20','"Fast Cast"+5','Weapon skill damage +2%',}}
  258.     FC_hands = "Leyline Gloves"
  259.     FC_legs = MAB_legs
  260.     FC_feet = MAB_feet
  261.  
  262.     MAcc_head = "Jumalik Helm"
  263.     MAcc_body = "Ankusa Jackcoat +1"
  264.     MAcc_hands = MAB_hands
  265.     MAcc_legs = MAB_legs
  266.     MAcc_feet = MAB_feet
  267.  
  268.     CB_head = Ready_MAcc_head
  269.     CB_body = "Mirke Wardecors"
  270.     CB_hands = "Ankusa Gloves +1"
  271.     CB_legs = Ready_MAcc_legs
  272.     CB_feet = "Adaman Sollerets"
  273.  
  274.     Cure_Potency_axe = Ready_MAcc_Axe
  275.     Cure_Potency_head = {name="Taeon Chapeau", augments={'"Cure" potency +4%',}}
  276.     Cure_Potency_body = "Jumalik Mail"
  277.     Cure_Potency_hands = "Buremte Gloves"
  278.     Cure_Potency_legs = "Ankusa Trousers +1"
  279.     Cure_Potency_feet = {name="Taeon Boots", augments={'"Cure" potency +5%',}}
  280.  
  281.     -- PRECAST SETS
  282.     sets.precast.JA['Killer Instinct'] = {head="Ankusa Helm +1"}
  283.     sets.precast.JA['Bestial Loyalty'] = {head=CB_head,
  284.         body=CB_body,
  285.         hands=CB_hands,
  286.         legs=CB_legs,
  287.         feet=CB_feet}
  288.     sets.precast.JA['Call Beast'] = sets.precast.JA['Bestial Loyalty']
  289.     sets.precast.JA.Familiar = {legs="Ankusa Trousers +1"}
  290.     sets.precast.JA.Tame = {head="Totemic Helm +1",ear1="Tamer's Earring",legs="Stout Kecks"}
  291.     sets.precast.JA.Spur = {feet="Nukumi Ocreae +1"}
  292.     sets.precast.SpurPetOnly = set_combine(sets.precast.JA.Spur, {main="Skullrender"})
  293.     sets.precast.SpurPetOnlyDW = set_combine(sets.precast.JA.Spur, {main="Skullrender",sub="Skullrender"})
  294.  
  295.     sets.precast.JA['Feral Howl'] = {main="Mafic Cudgel",sub="Breidox",ammo="Paeapua",
  296.         head="Rabid Visor",neck="Unmoving Collar +1",ear1="Trux Earring",ear2="Cryptic Earring",
  297.         body="Jumalik Mail",hands="Macabre Gauntlets +1",ring1="Provocare Ring",ring2="Eihwaz Ring",
  298.         back="Earthcry Mantle",waist="Warwolf Belt",legs="Zoar Subligar +1",feet="Rager Ledelsens +1"}
  299.  
  300.     sets.precast.JA.Reward = {
  301.         head="Stout Bonnet",neck="Aife's Medal",ear1="Lifestorm Earring",ear2="Neptune's Pearl",
  302.         body="Totemic Jackcoat +1",hands="Buremte Gloves",ring1="Leviathan Ring +1",ring2="Leviathan Ring +1",
  303.         back=Pet_PDT_back,
  304.         waist="Engraved Belt",legs="Ankusa Trousers +1",feet="Ankusa Gaiters +1"}
  305.  
  306.     sets.precast.JA.Reward.Theta = set_combine(sets.precast.JA.Reward, {ammo="Pet Food Theta"})
  307.     sets.precast.JA.Reward.Zeta = set_combine(sets.precast.JA.Reward, {ammo="Pet Food Zeta"})
  308.     sets.precast.JA.Reward.Eta = set_combine(sets.precast.JA.Reward, {ammo="Pet Food Eta"})
  309.  
  310.     sets.precast.JA.Charm = {ammo="Tsar's Egg",
  311.         head="Jumalik Helm",neck="Dualism Collar +1",ear1="Enchanter's Earring",ear2="Enchanter Earring +1",
  312.         body="Totemic Jackcoat +1",hands="Ankusa Gloves +1",ring1="Dawnsoul Ring",ring2="Dawnsoul Ring",
  313.         back="Aisance Mantle +1",waist="Aristo Belt",legs="Ankusa Trousers +1",feet="Ankusa Gaiters +1"}
  314.  
  315.     -- CURING WALTZ
  316.     sets.precast.Waltz = {ammo="Sonia's Plectrum",
  317.         head="Jumalik Helm",neck="Dualism Collar +1",ear1="Enchanter's Earring",ear2="Enchanter Earring +1",
  318.         body="Totemic Jackcoat +1",hands="Regimen Mittens",ring1="Valseur's Ring",ring2="Asklepian Ring",
  319.         back="Aisance Mantle +1",waist="Aristo Belt",legs="Desultor Tassets",feet="Totemic Gaiters +1"}
  320.  
  321.     -- HEALING WALTZ
  322.     sets.precast.Waltz['Healing Waltz'] = {}
  323.  
  324.     -- STEPS
  325.     sets.precast.Step = {ammo="Hasty Pinion +1",
  326.         head="Yaoyotl Helm",neck="Subtlety Spectacles",ear1="Steelflash Earring",ear2="Heartseeker Earring",
  327.         body="Mes'yohi Haubergeon",
  328.         hands=DW_hands,
  329.         ring1="Mars's Ring",ring2="Oneiros Annulet",
  330.         back="Grounded Mantle +1",waist="Olseni Belt",
  331.         legs=DW_legs,
  332.         feet=DW_feet}
  333.  
  334.     -- VIOLENT FLOURISH
  335.     sets.precast.Flourish1 = {}
  336.     sets.precast.Flourish1['Violent Flourish'] = {ammo="Hasty Pinion +1",
  337.         head=MAcc_head,
  338.         neck="Stoicheion Medal",ear1="Lifestorm Earring",ear2="Psystorm Earring",
  339.         body="Mes'yohi Haubergeon",
  340.         hands=MAcc_hands,
  341.         ring1="Sangoma Ring",ring2="Fenrir Ring +1",
  342.         back="Grounded Mantle +1",waist="Eschan Stone",
  343.         legs=MAcc_legs,
  344.         feet=MAcc_feet}
  345.  
  346.     sets.precast.FC = {ammo="Impatiens",
  347.         head=FC_head,
  348.         neck="Orunmila's Torque",ear1="Loquacious Earring",ear2="Enchanter Earring +1",
  349.         body=FC_body,
  350.         hands=FC_hands,
  351.         ring1="Prolix Ring",ring2="Fenrir Ring +1",
  352.         legs=FC_legs,
  353.         feet=FC_feet}
  354.  
  355.         sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  356.  
  357.     -- MIDCAST SETS
  358.     sets.midcast.FastRecast = {
  359.         head=FC_head,
  360.         neck="Orunmila's Torque",ear1="Loquacious Earring",ear2="Enchanter Earring +1",
  361.         body=FC_body,
  362.         hands=FC_hands,
  363.         ring1="Prolix Ring",ring2="Defending Ring",
  364.         back="Impassive Mantle",waist="Incarnation Sash",
  365.         legs=FC_legs,
  366.         feet=FC_feet}
  367.  
  368.     sets.midcast.Utsusemi = sets.midcast.FastRecast
  369.  
  370.     sets.midcast.Cure = {ammo="Quartz Tathlum +1",
  371.         head=Cure_Potency_head,
  372.         neck="Phalaina Locket",ear1="Lifestorm Earring",ear2="Mendicant's Earring",
  373.         body=Cure_Potency_body,
  374.         hands=Cure_Potency_hands,
  375.         ring1="Lebeche Ring",ring2="Asklepian Ring",back=Pet_PDT_back,waist="Gishdubar Sash",
  376.         legs=Cure_Potency_legs,
  377.         feet=Cure_Potency_feet}
  378.  
  379.     sets.midcast.Curaga = sets.midcast.Cure
  380.     sets.CurePetOnly = {main=Cure_Potency_axe,sub="Matamata Shield +1"}
  381.  
  382.     sets.midcast.Stoneskin = {ammo="Quartz Tathlum +1",
  383.         head="Jumalik Helm",neck="Stone Gorget",ear1="Earthcry Earring",ear2="Lifestorm Earring",
  384.         body="Totemic Jackcoat +1",hands="Stone Mufflers",ring1="Leviathan Ring +1",ring2="Leviathan Ring +1",
  385.         back=Pet_PDT_back,
  386.         waist="Engraved Belt",legs="Haven Hose",feet="Whirlpool Greaves"}
  387.  
  388.     sets.midcast.Cursna = set_combine(sets.midcast.FastRecast, {neck="Malison Medallion",
  389.         ring1="Eshmun's Ring",ring2="Haoma's Ring",waist="Gishdubar Sash"})
  390.  
  391.     sets.midcast.Protect = {ring2="Sheltered Ring"}
  392.     sets.midcast.Protectra = sets.midcast.Protect
  393.  
  394.     sets.midcast.Shell = {ring2="Sheltered Ring"}
  395.     sets.midcast.Shellra = sets.midcast.Shell
  396.  
  397.     sets.midcast['Enfeebling Magic'] = {ammo="Quartz Tathlum +1",
  398.         head=FC_head,
  399.         neck="Stoicheion Medal",ear1="Lifestorm Earring",ear2="Psystorm Earring",
  400.         body=FC_body,
  401.         hands=FC_hands,
  402.         ring1="Sangoma Ring",ring2="Fenrir Ring +1",
  403.         back="Aput Mantle +1",waist="Eschan Stone",
  404.         legs=FC_legs,
  405.         feet=FC_feet}
  406.  
  407.     sets.midcast['Elemental Magic'] = sets.midcast['Enfeebling Magic']
  408.  
  409.     sets.precast.JA.Provoke = {main="Mafic Cudgel",sub="Breidox",ammo="Paeapua",
  410.         head="Rabid Visor",neck="Unmoving Collar +1",ear1="Trux Earring",ear2="Cryptic Earring",
  411.         body="Jumalik Mail",hands="Macabre Gauntlets +1",ring1="Provocare Ring",ring2="Eihwaz Ring",
  412.         back="Earthcry Mantle",waist="Warwolf Belt",legs="Zoar Subligar +1",feet="Rager Ledelsens +1"}
  413.  
  414.     sets.precast.LuzafRing = {ring1="Luzaf's Ring"}
  415.  
  416.     -- WEAPONSKILLS
  417.     -- Default weaponskill sets.
  418.     sets.precast.WS = {ammo="Cheruski Needle",
  419.         head="Otomi Helm",neck="Asperity Necklace",ear1="Kokou's Earring",ear2="Brutal Earring",
  420.         body="Mes'yohi Haubergeon",
  421.         hands=DW_hands,
  422.         ring1="Ifrit Ring +1",ring2="Epona's Ring",
  423.         back="Bleating Mantle",waist="Windbuffet Belt",
  424.         legs=Hybrid_legs,
  425.         feet=Hybrid_Feet}
  426.  
  427.     sets.precast.WS.WSMedAcc = {ammo="Hasty Pinion +1",
  428.         head="Otomi Helm",neck="Subtlety Spectacles",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  429.         body="Mes'yohi Haubergeon",
  430.         hands=DW_hands,
  431.         ring1="Ifrit Ring +1",ring2="Epona's Ring",
  432.         back="Bleating Mantle",waist="Anguinus Belt",
  433.         legs=Hybrid_legs,
  434.         feet=Hybrid_feet}
  435.  
  436.     sets.precast.WS.WSHighAcc = {ammo="Hasty Pinion +1",
  437.         head="Yaoyotl Helm",neck="Subtlety Spectacles",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  438.         body="Mes'yohi Haubergeon",
  439.         hands=DW_hands,
  440.         ring1="Mars's Ring",ring2="Oneiros Annulet",
  441.         back="Grounded Mantle +1",waist="Anguinus Belt",
  442.         legs=Hybrid_legs,
  443.         feet=Hybrid_feet}
  444.  
  445.     -- Specific weaponskill sets.
  446.     sets.precast.WS['Ruinator'] = set_combine(sets.precast.WS, {neck="Fotia Gorget",hands="Boor Bracelets",
  447.         back="Buquwik Cape",waist="Fotia Belt"})
  448.     sets.precast.WS['Ruinator'].Gavialis = set_combine(sets.precast.WS['Ruinator'], {head="Gavialis Helm"})
  449.     sets.precast.WS['Ruinator'].WSMedAcc = set_combine(sets.precast.WS.WSMedAcc, {neck="Fotia Gorget",
  450.         ear1="Kokou's Earring",ear2="Brutal Earring",
  451.         back="Buquwik Cape",waist="Fotia Belt"})
  452.     sets.precast.WS['Ruinator'].WSHighAcc = set_combine(sets.precast.WS.WSHighAcc, {neck="Fotia Gorget",
  453.         ear1="Kokou's Earring",ear2="Brutal Earring",
  454.         waist="Fotia Belt"})
  455.  
  456.     sets.precast.WS['Onslaught'] = set_combine(sets.precast.WS, {neck="Justiciar's Torque",
  457.         ear1="Steelflash Earring",ear2="Bladeborn Earring",
  458.         ring1="Rajas Ring",back="Vespid Mantle"})
  459.     sets.precast.WS['Onslaught'].WSMedAcc = set_combine(sets.precast.WSMedAcc, {ring1="Rajas Ring",back="Vespid Mantle"})
  460.     sets.precast.WS['Onslaught'].WSHighAcc = set_combine(sets.precast.WSHighAcc, {back="Vespid Mantle"})
  461.  
  462.     sets.precast.WS['Primal Rend'] = {ammo="Erlene's Notebook",
  463.         head=MAB_head,
  464.         neck="Stoicheion Medal",ear1="Moonshade Earring",ear2="Friomisi Earring",
  465.         body=MAB_body,
  466.         hands=MAB_hands,
  467.         ring1="Acumen Ring",ring2="Fenrir Ring +1",
  468.         back="Argochampsa Mantle",waist="Eschan Stone",
  469.         legs=MAB_legs,
  470.         feet=MAB_feet}
  471.     sets.precast.WS['Primal Rend'].WSMedAcc = set_combine(sets.precast.WS['Primal Rend'], {neck="Fotia Gorget",waist="Fotia Belt"})
  472.     sets.precast.WS['Primal Rend'].WShighAcc = sets.precast.WS['Primal Rend'].WSMedAcc
  473.     sets.precast.WS['Cloudsplitter'] = set_combine(sets.precast.WS['Primal Rend'], {neck="Fotia Gorget",
  474.         ring2="Fenrir Ring +1",waist="Fotia Belt"})
  475.  
  476.     sets.midcast.NightEarrings = {ear1="Lugra Earring",ear2="Lugra Earring +1"}
  477.     sets.midcast.ExtraMAB = {ear1="Hecate's Earring"}
  478.  
  479.     -- PET SIC & READY MOVES
  480.     sets.midcast.Pet.WS = {ammo="Demonry Core",
  481.         neck="Empath Necklace",ear1="Hija Earring",ear2="Ruby Earring",
  482.         body=Ready_Atk_body,
  483.         hands=Ready_Atk_hands,
  484.         ring1="Thurandaut Ring",
  485.         ring2="Angel's Ring",
  486.         back=Ready_Atk_back,
  487.         waist="Incarnation Sash",
  488.         legs=Ready_Atk_legs,
  489.         feet=Ready_Atk_feet}
  490.  
  491.     sets.midcast.Pet.MagicAtkReady = set_combine(sets.midcast.Pet.WS, {
  492.         head=Ready_MAB_head,
  493.         ear1="Hija Earring",ear2="Diamond Earring",
  494.         body=Ready_MAB_body,
  495.         hands=Ready_MAB_hands,
  496.         back="Argochampsa Mantle",
  497.         legs=Ready_MAB_legs,
  498.         feet=Ready_MAB_feet})
  499.  
  500.     sets.midcast.Pet.MagicAccReady = set_combine(sets.midcast.Pet.WS, {
  501.         head=Ready_MAcc_head,
  502.         ear1="Sapphire Earring",ear2="Sapphire Earring",
  503.         body=Ready_MAcc_body,
  504.         hands=Ready_MAcc_hands,
  505.         back="Argochampsa Mantle",
  506.         legs=Ready_MAcc_legs,
  507.         feet=Ready_MAcc_feet})
  508.  
  509.     sets.midcast.Pet.ReadyRecast = {legs="Desultor Tassets"}
  510.  
  511.     sets.midcast.Pet.Neutral = {head=Ready_Atk_head}
  512.     sets.midcast.Pet.Favorable = {head="Nukumi Cabasset +1"}
  513.     sets.midcast.Pet.MedAcc = set_combine(sets.midcast.Pet.WS, {ear2="Ferine Earring",
  514.         body=Ready_Acc_body,
  515.         legs="Wisent Kecks"})
  516.     sets.midcast.Pet.HighAcc = set_combine(sets.midcast.Pet.WS, {ear1="Spinel Earring",
  517.         ear2="Ferine Earring",
  518.         body=Ready_Acc_body,
  519.         hands=Ready_Acc_hands,
  520.         legs=Ready_Acc_legs,
  521.         feet=Ready_Acc_feet})
  522.     sets.midcast.Pet.TPBonus = {hands="Nukumi Manoplas +1"}
  523.  
  524.     -- PET-ONLY READY GEARSETS
  525.     -- Single-wield PetOnly Sets
  526.     sets.midcast.Pet.ReadyRecastNE = {main="Charmer's Merlin",legs="Desultor Tassets"}
  527.  
  528.     sets.midcast.Pet.ReadyNE = set_combine(sets.midcast.Pet.WS, {main="Aymur"})
  529.     sets.midcast.Pet.ReadyNE.MedAcc = set_combine(sets.midcast.Pet.WS, {main="Aymur",
  530.         ear2="Ferine Earring",
  531.         body=Ready_Acc_body,
  532.         legs="Wisent Kecks"})
  533.     sets.midcast.Pet.ReadyNE.HighAcc = set_combine(sets.midcast.Pet.WS, {main="Kerehcatl",
  534.         ear1="Spinel Earring",
  535.         ear2="Ferine Earring",
  536.         body=Ready_Acc_body,
  537.         hands=Ready_Acc_hands,
  538.         legs=Ready_Acc_legs,
  539.         feet=Ready_Acc_feet})
  540.  
  541.     sets.midcast.Pet.MagicAtkReadyNE = set_combine(sets.midcast.Pet.MagicAtkReady, {main=Ready_MAB_Axe})
  542.     sets.midcast.Pet.MagicAtkReadyNE.MedAcc = set_combine(sets.midcast.Pet.MagicAtkReady, {main=Ready_MAB_Axe,
  543.         head=Ready_MAcc_head,
  544.         legs=Ready_MAcc_legs,
  545.         feet=Ready_MAcc_feet})
  546.     sets.midcast.Pet.MagicAtkReadyNE.HighAcc = set_combine(sets.midcast.Pet.MagicAtkReady, {main=Ready_MAB_Axe,
  547.         head=Ready_MAcc_head,
  548.         ear1="Sapphire Earring",ear2="Sapphire Earring",
  549.         body=Ready_MAcc_body,
  550.         hands=Ready_MAcc_hands,
  551.         legs=Ready_MAcc_legs,
  552.         feet=Ready_MAcc_feet})
  553.  
  554.     sets.midcast.Pet.MagicAccReadyNE = set_combine(sets.midcast.Pet.MagicAccReady, {main="Aymur"})
  555.  
  556.     sets.DTAxeShield = {main=Pet_PDT_AxeMain,
  557.         sub="Beatific Shield +1"}
  558.  
  559.     -- Dual-wield PetOnly Sets
  560.     sets.midcast.Pet.ReadyRecastDWNE = {main="Aymur",sub="Charmer's Merlin",legs="Desultor Tassets"}
  561.  
  562.     sets.midcast.Pet.ReadyDWNE = set_combine(sets.midcast.Pet.ReadyNE, {sub=Ready_Atk_Axe})
  563.     sets.midcast.Pet.ReadyDWNE.MedAcc = set_combine(sets.midcast.Pet.ReadyNE.MedAcc, {sub=Ready_Acc_Axe})
  564.     sets.midcast.Pet.ReadyDWNE.HighAcc = set_combine(sets.midcast.Pet.ReadyNE.HighAcc, {sub="Hunahpu"})
  565.  
  566.     sets.midcast.Pet.MagicAtkReadyDWNE = set_combine(sets.midcast.Pet.MagicAtkReadyNE, {main=Ready_MAB_Axe,sub=Ready_MAcc_Axe})
  567.     sets.midcast.Pet.MagicAtkReadyDWNE.MedAcc = set_combine(sets.midcast.Pet.MagicAtkReadyNE.MedAcc, {main=Ready_MAB_Axe,sub=Ready_MAcc_Axe})
  568.     sets.midcast.Pet.MagicAtkReadyDWNE.HighAcc = set_combine(sets.midcast.Pet.MagicAtkReadyNE.HighAcc, {main=Ready_MAB_Axe,sub=Ready_MAcc_Axe})
  569.  
  570.     sets.midcast.Pet.MagicAccReadyDWNE = set_combine(sets.midcast.Pet.MagicAccReadyNE, {sub=Ready_MAcc_Axe})
  571.  
  572.     sets.DTAxes = {main=Pet_PDT_AxeMain,
  573.         sub=Pet_PDT_AxeSub}
  574.  
  575.     -- RESTING
  576.     sets.resting = {}
  577.  
  578.     -- IDLE SETS
  579.     sets.ExtraRegen = {waist="Muscle Belt +1"}
  580.     sets.RegenAxes = {main="Hatxiik",sub="Hunahpu"}
  581.  
  582.     sets.idle = {ammo="Demonry Core",
  583.         head="Twilight Helm",neck="Bathy Choker +1",ear1="Infused Earring",ear2="Dawn Earring",
  584.         body="Kirin's Osode",hands="Umuthi Gloves",ring1="Paguroidea Ring",ring2="Sheltered Ring",
  585.         back="Impassive Mantle",waist="Flume Belt +1",legs="Iuitl Tights +1",feet="Skadi's Jambeaux +1"}
  586.  
  587.     sets.idle.Regen = {ammo="Demonry Core",
  588.         head="Twilight Helm",neck="Bathy Choker +1",ear1="Infused Earring",ear2="Dawn Earring",
  589.         body="Kirin's Osode",hands="Umuthi Gloves",ring1="Paguroidea Ring",ring2="Sheltered Ring",
  590.         back="Impassive Mantle",waist="Flume Belt +1",legs="Iuitl Tights +1",feet="Skadi's Jambeaux +1"}
  591.  
  592.     sets.idle.Refresh = set_combine(sets.idle, {head="Jumalik Helm",body="Jumalik Mail",legs="Stearc Subligar"})
  593.     sets.idle.Reraise = set_combine(sets.idle, {head="Twilight Helm",body="Twilight Mail"})
  594.  
  595.     sets.idle.Pet = set_combine(sets.idle, {ammo="Demonry Core",
  596.         head=Hybrid_head,
  597.         neck="Empath Necklace",ear1="Infused Earring",ear2="Dawn Earring",
  598.         body=Pet_PDT_body,
  599.         hands=Pet_PDT_hands,
  600.         ring1="Paguroidea Ring",ring2="Sheltered Ring",
  601.         back=Pet_PDT_back,
  602.         waist="Isa Belt",
  603.         legs=Pet_PDT_legs,
  604.         feet="Skadi's Jambeaux +1"})
  605.  
  606.     sets.idle.Pet.Engaged = {ammo="Demonry Core",
  607.         head=Pet_Melee_head,
  608.         neck="Ferine Necklace",ear1="Hija Earring",ear2="Domesticator's Earring",
  609.         body=Pet_Melee_body,
  610.         hands=Pet_Melee_hands,
  611.         ring1="Thurandaut Ring",ring2="Defending Ring",
  612.         back=Pet_PDT_back,
  613.         waist="Incarnation Sash",
  614.         legs=Pet_Melee_legs,
  615.         feet=Pet_Melee_feet}
  616.  
  617.     -- DEFENSE SETS
  618.     sets.defense.PDT = {
  619.         head="Jumalik Helm",neck="Diemer Gorget",ear2="Genmei Earring",
  620.         body="Jumalik Mail",hands="Umuthi Gloves",ring1="Patricius Ring",ring2="Defending Ring",
  621.         back="Impassive Mantle",waist="Flume Belt +1",legs="Iuitl Tights +1",feet="Amm Greaves"}
  622.  
  623.     sets.defense.Plantoid = set_combine(sets.defense.PDT, {
  624.         head="Ankusa Helm +1",ear1="Vermin Earring",ear2="Vermin Earring",
  625.         body="Nukumi Gausape +1",
  626.         waist="Pipilaka Belt"})
  627.  
  628.     sets.defense.Reraise = set_combine(sets.defense.PDT, {head="Twilight Helm",body="Twilight Mail"})
  629.  
  630.     sets.defense.HybridPDT = {ammo="Sihirik",
  631.         head="Jumalik Helm",neck="Twilight Torque",ear1="Handler's Earring",ear2="Handler's Earring +1",
  632.         body="Jumalik Mail",hands=Pet_PDT_hands,ring1="Dark Ring",ring2="Defending Ring",
  633.         back="Impassive Mantle",waist="Flume Belt +1",legs=Pet_PDT_legs,feet="Amm Greaves"}
  634.  
  635.     sets.defense.MDT = set_combine(sets.defense.PDT, {ammo="Sihirik",
  636.         head="Jumalik Helm",neck="Twilight Torque",ear1="Sanare Earring",ear2="Etiolation Earring",
  637.         body="Jumalik Mail",
  638.         back="Engulfer Cape +1",waist="Nierenschutz"})
  639.  
  640.     sets.defense.MDTShell = set_combine(sets.defense.MDT, {ammo="Vanir Battery",
  641.         neck="Inquisitor Bead Necklace",
  642.         ring1="Shadow Ring",
  643.         back="Engulfer Cape +1",waist="Resolute Belt"})
  644.  
  645.     sets.defense.PetPDT = {ammo="Demonry Core",
  646.         head="Anwig Salade",neck="Shepherd's Chain",
  647.         ear1="Handler's Earring",ear2="Handler's Earring +1",
  648.         body=Pet_PDT_body,
  649.         hands=Pet_PDT_hands,
  650.         ring1="Thurandaut Ring",ring2="Defending Ring",
  651.         back=Pet_PDT_back,
  652.         waist="Isa Belt",
  653.         legs=Pet_PDT_legs,
  654.         feet=Pet_PDT_feet}
  655.  
  656.     sets.defense.PetMDT = set_combine(sets.defense.PetPDT, {ear1="Rimeice Earring",
  657.         body=Pet_MDT_body,
  658.         hands=Pet_MDT_hands,
  659.         ring1="Thurandaut Ring",ring2="Defending Ring",
  660.         legs=Pet_MDT_legs,
  661.         feet=Pet_MDT_feet})
  662.  
  663.     sets.defense.PetSB = set_combine(sets.defense.PetPDT, {ear1="Gelai Earring",
  664.         hands="Bestia Mufflers",
  665.         waist="Isa Belt",
  666.         legs="Bestia Breeches"})
  667.  
  668.     sets.Kiting = {feet="Skadi's Jambeaux +1"}
  669.  
  670.     -- MELEE (SINGLE-WIELD) SETS
  671.     sets.engaged = {ammo="Paeapua",
  672.         head="Otomi Helm",neck="Defiant Collar",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  673.         body="Mes'yohi Haubergeon",hands="Xaddi Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
  674.         back="Bleating Mantle",waist="Windbuffet Belt",
  675.         legs=Hybrid_legs,
  676.         feet=Hybrid_feet}
  677.     sets.engaged.LowAccHaste = sets.engaged
  678.     sets.engaged.MedAcc = {ammo="Paeapua",
  679.         head=Hybrid_head,
  680.         neck="Subtlety Spectacles",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  681.         body="Mes'yohi Haubergeon",
  682.         hands=DW_hands,
  683.         ring1="Rajas Ring",ring2="Epona's Ring",
  684.         back="Grounded Mantle +1",waist="Incarnation Sash",
  685.         legs=Hybrid_legs,
  686.         feet=Hybrid_feet}
  687.     sets.engaged.MedAccHaste = sets.engaged.MedAcc
  688.     sets.engaged.HighAcc = {ammo="Hasty Pinion +1",
  689.         head=Hybrid_head,
  690.         neck="Subtlety Spectacles",ear1="Steelflash Earring",ear2="Zennaroi Earring",
  691.         body="Mes'yohi Haubergeon",
  692.         hands=DW_hands,
  693.         ring1="Mars's Ring",ring2="Oneiros Annulet",
  694.         back="Grounded Mantle +1",waist="Olseni Belt",
  695.         legs=Hybrid_legs,
  696.         feet=Hybrid_feet}
  697.     sets.engaged.HighAccHaste = sets.engaged.HighAcc
  698.     sets.engaged.Aftermath = set_combine(sets.engaged, {hands="Aetosaur Gloves +1"})
  699.     sets.engaged.LowAccHaste.Aftermath = sets.engaged.Aftermath
  700.     sets.engaged.MedAcc.Aftermath = set_combine(sets.engaged.MedAcc, {hands="Aetosaur Gloves +1"})
  701.     sets.engaged.MedAccHaste.Aftermath = sets.engaged.MedAcc.Aftermath
  702.     sets.engaged.HighAcc.Aftermath = set_combine(sets.engaged.HighAcc)
  703.     sets.engaged.HighAccHaste.Aftermath = sets.engaged.HighAcc.Aftermath
  704.  
  705.     -- MELEE (SINGLE-WIELD) HYBRID SETS
  706.     sets.engaged.Hybrid = set_combine(sets.engaged, {head="Iuitl Headgear +1",
  707.         back="Mollusca Mantle",hands="Umuthi Gloves",legs="Iuitl Tights +1",feet="Amm Greaves"})
  708.     sets.engaged.LowAccHaste.Hybrid = sets.engaged.Hybrid
  709.     sets.engaged.MedAcc.Hybrid = set_combine(sets.engaged.MedAcc, {head="Iuitl Headgear +1",
  710.         legs="Iuitl Tights +1",feet="Amm Greaves"})
  711.     sets.engaged.MedAccHaste.Hybrid = sets.engaged.MedAcc.Hybrid
  712.     sets.engaged.HighAcc.Hybrid = set_combine(sets.engaged.HighAcc, {head="Iuitl Headgear +1",
  713.         legs="Iuitl Tights +1",feet="Amm Greaves"})
  714.     sets.engaged.HighAccHaste.Hybrid = sets.engaged.HighAcc.Hybrid
  715.  
  716.     -- MELEE (DUAL-WIELD) SETS FOR DNC AND NIN SUBJOB
  717.     sets.engaged.DW = {ammo="Paeapua",
  718.         head=DW_head,
  719.         neck="Asperity Necklace",ear1="Suppanomimi",ear2="Eabani Earring",
  720.         body=DW_body,
  721.         hands=DW_hands,
  722.         ring1="Rajas Ring",ring2="Epona's Ring",
  723.         back="Vellaunus' Mantle +1",waist="Patentia Sash",
  724.         legs=DW_legs,
  725.         feet=DW_feet}
  726.     sets.engaged.DW.LowAccHaste = {ammo="Paeapua",
  727.         head="Otomi Helm",neck="Asperity Necklace",ear1="Suppanomimi",ear2="Brutal Earring",
  728.         body=DW_body,
  729.         hands="Xaddi Gauntlets",ring1="Rajas Ring",ring2="Epona's Ring",
  730.         back="Bleating Mantle",waist="Windbuffet Belt",
  731.         legs=Hybrid_legs,
  732.         feet=Hybrid_feet}
  733.     sets.engaged.DW.MedAcc = {ammo="Hasty Pinion +1",
  734.         head=DW_head,
  735.         neck="Subtlety Spectacles",ear1="Suppanomimi",ear2="Eabani Earring",
  736.         body=DW_body,
  737.         hands=DW_hands,
  738.         ring1="Rajas Ring",ring2="Epona's Ring",
  739.         back="Vellaunus' Mantle +1",waist="Patentia Sash",
  740.         legs=DW_legs,
  741.         feet=DW_feet}
  742.     sets.engaged.DW.MedAccHaste = {ammo="Hasty Pinion +1",
  743.         head=Hybrid_head,
  744.         neck="Subtlety Spectacles",ear1="Suppanomimi",ear2="Brutal Earring",
  745.         body="Mes'yohi Haubergeon",
  746.         hands=DW_hands,
  747.         ring1="Rajas Ring",ring2="Epona's Ring",
  748.         back="Grounded Mantle +1",waist="Incarnation Sash",
  749.         legs=Hybrid_legs,
  750.         feet=Hybrid_feet}
  751.     sets.engaged.DW.HighAcc = {ammo="Hasty Pinion +1",
  752.         head=Hybrid_head,
  753.         neck="Subtlety Spectacles",ear1="Heartseeker Earring",ear2="Zennaroi Earring",
  754.         body=DW_body,
  755.         hands=DW_hands,
  756.         ring1="Mars's Ring",ring2="Oneiros Annulet",
  757.         back="Grounded Mantle +1",waist="Olseni Belt",
  758.         legs=DW_legs,
  759.         feet=DW_feet}
  760.     sets.engaged.DW.HighAccHaste = {ammo="Hasty Pinion +1",
  761.         head=Hybrid_head,
  762.         neck="Subtlety Spectacles",ear1="Heartseeker Earring",ear2="Zennaroi Earring",
  763.         body="Mes'yohi Haubergeon",
  764.         hands=DW_hands,
  765.         ring1="Mars's Ring",ring2="Oneiros Annulet",
  766.         back="Grounded Mantle +1",waist="Olseni Belt",
  767.         legs=Hybrid_legs,
  768.         feet=Hybrid_feet}
  769.     sets.engaged.DW.Aftermath = sets.engaged.DW
  770.     sets.engaged.DW.LowAccHaste.Aftermath = sets.engaged.DW.Aftermath
  771.     sets.engaged.DW.MedAcc.Aftermath = sets.engaged.DW.MedAcc
  772.     sets.engaged.DW.MedAccHaste.Aftermath = sets.engaged.DW.MedAcc.Aftermath
  773.     sets.engaged.DW.HighAcc.Aftermath = sets.engaged.DW.HighAcc
  774.     sets.engaged.DW.HighAccHaste.Aftermath = sets.engaged.DW.HighAcc.Aftermath
  775.     -- MELEE (DUAL-WIELD) HYBRID SETS
  776.     sets.engaged.DW.Hybrid = set_combine(sets.engaged.DW, {head="Iuitl Headgear +1",
  777.         back="Mollusca Mantle",hands="Umuthi Gloves",legs="Iuitl Tights +1",feet="Amm Greaves"})
  778.     sets.engaged.DW.LowAccHaste.Hybrid = sets.engaged.DW.Hybrid
  779.     sets.engaged.DW.MedAcc.Hybrid = set_combine(sets.engaged.DW.MedAcc, {head="Iuitl Headgear +1",
  780.         legs="Iuitl Tights +1",feet="Amm Greaves"})
  781.     sets.engaged.DW.MedAccHaste.Hybrid =sets.engaged.DW.MedAcc.Hybrid
  782.     sets.engaged.DW.HighAcc.Hybrid = set_combine(sets.engaged.DW.HighAcc, {head="Iuitl Headgear +1",
  783.         legs="Iuitl Tights +1",feet="Amm Greaves"})
  784.     sets.engaged.DW.HighAccHaste.Hybrid = sets.engaged.DW.HighAcc.Hybrid
  785.  
  786.     -- GEARSETS FOR MASTER ENGAGED (SINGLE-WIELD) & PET TANKING
  787.     sets.engaged.PetTank = set_combine(sets.engaged, {
  788.         head=Hybrid_head,
  789.         neck="Shepherd's Chain",ear1="Handler's Earring",ear2="Handler's Earring +1",
  790.         body=Hybrid_body,
  791.         hands=Hybrid_hands,
  792.         ring1="Thurandaut Ring",
  793.         back=Pet_PDT_back,
  794.         waist="Isa Belt",
  795.         legs=Hybrid_legs,
  796.         feet=Hybrid_feet})
  797.     sets.engaged.PetTank.LowAccHaste = sets.engaged.PetTank
  798.     sets.engaged.PetTank.MedAcc = sets.engaged.PetTank
  799.     sets.engaged.PetTank.MedAccHaste = sets.engaged.PetTank
  800.     sets.engaged.PetTank.HighAcc = sets.engaged.PetTank
  801.     sets.engaged.PetTank.HighAccHaste = sets.engaged.PetTank
  802.  
  803.     -- GEARSETS FOR MASTER ENGAGED (DUAL-WIELD) & PET TANKING
  804.     sets.engaged.DW.PetTank = set_combine(sets.engaged.DW, {
  805.         head=Pet_PDT_head,
  806.         neck="Shepherd's Chain",ear1="Handler's Earring",ear2="Handler's Earring +1",
  807.         body=Hybrid_body,
  808.         hands=Hybrid_hands,
  809.         ring1="Thurandaut Ring",
  810.         back=Pet_PDT_back,
  811.         waist="Isa Belt",
  812.         legs=Hybrid_legs,
  813.         feet=Hybrid_feet})
  814.     sets.engaged.DW.PetTank.LowAccHaste = sets.engaged.DW.PetTank
  815.     sets.engaged.DW.PetTank.MedAcc = set_combine(sets.engaged.DW.MedAcc, {
  816.         head=Hybrid_head,
  817.         ear1="Handler's Earring",ear2="Handler's Earring +1",
  818.         body=Hybrid_body,
  819.         ring1="Thurandaut Ring",
  820.         hands=Hybrid_hands,
  821.         legs=Hybrid_legs,
  822.         feet=Hybrid_feet})
  823.     sets.engaged.DW.PetTank.MedAccHaste = sets.engaged.DW.PetTank.MedAcc
  824.     sets.engaged.DW.PetTank.HighAcc = set_combine(sets.engaged.DW.HighAcc, {
  825.         head=Hybrid_head,
  826.         ear1="Handler's Earring",ear2="Handler's Earring +1",
  827.         body="Mes'yohi Haubergeon",
  828.         hands=Hybrid_hands,
  829.         ring1="Thurandaut Ring",
  830.         legs=Hybrid_legs,
  831.         feet=Hybrid_feet})
  832.     sets.engaged.DW.PetTank.HighAccHaste = sets.engaged.DW.PetTank.HighAcc
  833.  
  834.     sets.buff['Killer Instinct'] = {body="Nukumi Gausape +1"}
  835.     sets.buff.Doomed = {ring1="Eshmun's Ring"}
  836.     sets.THBelt = {waist="Chaac Belt"}
  837.     sets.DaytimeAmmo = {ammo="Tengu-no-Hane"}
  838.  
  839. -------------------------------------------------------------------------------------------------------------------
  840. -- Complete Lvl 76-99 Jug Pet Precast List +Funguar +Courier +Amigo
  841. -------------------------------------------------------------------------------------------------------------------
  842.  
  843.     sets.precast.JA['Bestial Loyalty'].FunguarFamiliar = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Seedbed Soil"})
  844.     sets.precast.JA['Bestial Loyalty'].CourierCarrie = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Fish Oil Broth"})
  845.     sets.precast.JA['Bestial Loyalty'].AmigoSabotender = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Sun Water"})
  846.     sets.precast.JA['Bestial Loyalty'].NurseryNazuna = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="D. Herbal Broth"})
  847.     sets.precast.JA['Bestial Loyalty'].CraftyClyvonne = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Cng. Brain Broth"})
  848.     sets.precast.JA['Bestial Loyalty'].PrestoJulio = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="C. Grass. Broth"})
  849.     sets.precast.JA['Bestial Loyalty'].SwiftSieghard = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Mlw. Bird Broth"})
  850.     sets.precast.JA['Bestial Loyalty'].MailbusterCetas = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Gob. Bug Broth"})
  851.     sets.precast.JA['Bestial Loyalty'].AudaciousAnna = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="B. Carrion Broth"})
  852.     sets.precast.JA['Bestial Loyalty'].TurbidToloi = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Auroral Broth"})
  853.     sets.precast.JA['Bestial Loyalty'].LuckyLulush = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="L. Carrot Broth"})
  854.     sets.precast.JA['Bestial Loyalty'].DipperYuly = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Wool Grease"})
  855.     sets.precast.JA['Bestial Loyalty'].FlowerpotMerle = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Vermihumus"})
  856.     sets.precast.JA['Bestial Loyalty'].DapperMac = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Briny Broth"})
  857.     sets.precast.JA['Bestial Loyalty'].DiscreetLouise = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Deepbed Soil"})
  858.     sets.precast.JA['Bestial Loyalty'].FatsoFargann = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="C. Plasma Broth"})
  859.     sets.precast.JA['Bestial Loyalty'].FaithfulFalcorr = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Lucky Broth"})
  860.     sets.precast.JA['Bestial Loyalty'].BugeyedBroncha = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Svg. Mole Broth"})
  861.     sets.precast.JA['Bestial Loyalty'].BloodclawShasra = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Rzr. Brain Broth"})
  862.     sets.precast.JA['Bestial Loyalty'].GorefangHobs = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="B. Carrion Broth"})
  863.     sets.precast.JA['Bestial Loyalty'].GooeyGerard = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Cl. Wheat Broth"})
  864.     sets.precast.JA['Bestial Loyalty'].CrudeRaphie = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Shadowy Broth"})
  865.  
  866. -------------------------------------------------------------------------------------------------------------------
  867. -- Complete iLvl Jug Pet Precast List
  868. -------------------------------------------------------------------------------------------------------------------
  869.  
  870.     sets.precast.JA['Bestial Loyalty'].DroopyDortwin = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Swirling Broth"})
  871.     sets.precast.JA['Bestial Loyalty'].PonderingPeter = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Vis. Broth"})
  872.     sets.precast.JA['Bestial Loyalty'].SunburstMalfik = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Shimmering Broth"})
  873.     sets.precast.JA['Bestial Loyalty'].AgedAngus = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Ferm. Broth"})
  874.     sets.precast.JA['Bestial Loyalty'].WarlikePatrick = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Livid Broth"})
  875.     sets.precast.JA['Bestial Loyalty'].ScissorlegXerin = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Spicy Broth"})
  876.     sets.precast.JA['Bestial Loyalty'].BouncingBertha = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Bubbly Broth"})
  877.     sets.precast.JA['Bestial Loyalty'].RhymingShizuna = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Lyrical Broth"})
  878.     sets.precast.JA['Bestial Loyalty'].AttentiveIbuki = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Salubrious Broth"})
  879.     sets.precast.JA['Bestial Loyalty'].SwoopingZhivago = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Windy Greens"})
  880.     sets.precast.JA['Bestial Loyalty'].AmiableRoche = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Airy Broth"})
  881.     sets.precast.JA['Bestial Loyalty'].HeraldHenry = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Trans. Broth"})
  882.     sets.precast.JA['Bestial Loyalty'].BrainyWaluis = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Crumbly Soil"})
  883.     sets.precast.JA['Bestial Loyalty'].HeadbreakerKen = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Blackwater Broth"})
  884.     sets.precast.JA['Bestial Loyalty'].RedolentCandi = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Electrified Broth"})
  885.     sets.precast.JA['Bestial Loyalty'].AlluringHoney = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Bug-Ridden Broth"})
  886.     sets.precast.JA['Bestial Loyalty'].CaringKiyomaro = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Fizzy Broth"})
  887.     sets.precast.JA['Bestial Loyalty'].VivaciousVickie = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Tant. Broth"})
  888.     sets.precast.JA['Bestial Loyalty'].HurlerPercival = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Pale Sap"})
  889.     sets.precast.JA['Bestial Loyalty'].BlackbeardRandy = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Meaty Broth"})
  890.     sets.precast.JA['Bestial Loyalty'].GenerousArthur = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Dire Broth"})
  891.     sets.precast.JA['Bestial Loyalty'].ThreestarLynn = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Muddy Broth"})
  892.     sets.precast.JA['Bestial Loyalty'].BraveHeroGlenn = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Wispy Broth"})
  893.     sets.precast.JA['Bestial Loyalty'].SharpwitHermes = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Saline Broth"})
  894.     sets.precast.JA['Bestial Loyalty'].ColibriFamiliar = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Sugary Broth"})
  895.     sets.precast.JA['Bestial Loyalty'].ChoralLeera = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Glazed Broth"})
  896.     sets.precast.JA['Bestial Loyalty'].SpiderFamiliar = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Sticky Webbing"})
  897.     sets.precast.JA['Bestial Loyalty'].GussyHachirobe = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Slimy Webbing"})
  898.     sets.precast.JA['Bestial Loyalty'].AcuexFamiliar = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Poisonous Broth"})
  899.     sets.precast.JA['Bestial Loyalty'].FluffyBredo = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Venomous Broth"})
  900.     sets.precast.JA['Bestial Loyalty'].SuspiciousAlice = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Furious Broth"})
  901.     sets.precast.JA['Bestial Loyalty'].AnklebiterJedd = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Crackling Broth"})
  902.     sets.precast.JA['Bestial Loyalty'].FleetReinhard = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Rapid Broth"})
  903.     sets.precast.JA['Bestial Loyalty'].CursedAnnabelle = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Creepy Broth"})
  904.     sets.precast.JA['Bestial Loyalty'].SurgingStorm = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Insipid Broth"})
  905.     sets.precast.JA['Bestial Loyalty'].SubmergedIyo = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Deepwater Broth"})
  906.     sets.precast.JA['Bestial Loyalty'].MosquitoFamiliar = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Wetlands Broth"})
  907.     sets.precast.JA['Bestial Loyalty'].LeftHandedYoko = set_combine(sets.precast.JA['Bestial Loyalty'], {ammo="Heavenly Broth"})
  908. end
  909.  
  910. -------------------------------------------------------------------------------------------------------------------
  911. -- General hooks for other game events.
  912. -------------------------------------------------------------------------------------------------------------------
  913.  
  914. -- function job_buff_change(buff, gain)
  915. --    if buff == 'Aftermath: Lv.3' and gain then
  916. --        job_update(cmdParams, eventArgs)
  917. --                handle_equipping_gear(player.status)
  918. --    else
  919. --        job_update(cmdParams, eventArgs)
  920. --        handle_equipping_gear(player.status)
  921. --    end
  922. -- end
  923.  
  924. -------------------------------------------------------------------------------------------------------------------
  925. -- Job-specific hooks that are called to process player actions at specific points in time.
  926. -------------------------------------------------------------------------------------------------------------------
  927.  
  928. function job_precast(spell, action, spellMap, eventArgs)
  929.     if player.equipment.main == 'Aymur' then
  930.         custom_aftermath_timers_precast(spell)
  931.     end
  932.  
  933.     if spell.type == "WeaponSkill" and spell.name ~= 'Mistral Axe' and spell.name ~= 'Bora Axe' and spell.target.distance > target_distance then
  934.         cancel_spell()
  935.         add_to_chat(123, spell.name..' Canceled: [Out of Range]')
  936.         handle_equipping_gear(player.status)
  937.         return
  938.     end
  939.  
  940.     if spell.type == 'CorsairRoll' or spell.english == "Double-Up" then
  941.         equip(sets.precast.LuzafRing)
  942.     end
  943.  
  944.     if spell.english == 'Spur' then
  945.         if state.PetMode.value == 'PetOnly' then
  946.             if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  947.                 equip(sets.precast.SpurPetOnlyDW)
  948.             else
  949.                 equip(sets.precast.SpurPetOnly)
  950.             end
  951.         end
  952.     end
  953.  
  954.     if spell.english == 'Reward' then
  955.         if state.RewardMode.value == 'Theta' then
  956.             equip(sets.precast.JA.Reward.Theta)
  957.         elseif state.RewardMode.value == 'Zeta' then
  958.             equip(sets.precast.JA.Reward.Zeta)
  959.         elseif state.RewardMode.value == 'Eta' then
  960.             equip(sets.precast.JA.Reward.Eta)
  961.         end
  962.     end
  963.  
  964.     if spell.english == 'Bestial Loyalty' or spell.english == 'Call Beast' then
  965.         if state.JugMode.value == 'FunguarFamiliar' or state.JugMode.value == 'Seedbed Soil' then
  966.             equip(sets.precast.JA['Bestial Loyalty'].FunguarFamiliar)
  967.         elseif state.JugMode.value == 'CourierCarrie' or state.JugMode.value == 'Fish Oil Broth' then
  968.             equip(sets.precast.JA['Bestial Loyalty'].CourierCarrie)
  969.         elseif state.JugMode.value == 'AmigoSabotender' or state.JugMode.value == 'Sun Water' then
  970.             equip(sets.precast.JA['Bestial Loyalty'].AmigoSabotender)
  971.         elseif state.JugMode.value == 'NurseryNazuna' or state.JugMode.value == 'Dancing Herbal Broth' or state.JugMode.value == 'D. Herbal Broth' then
  972.             equip(sets.precast.JA['Bestial Loyalty'].NurseryNazuna)
  973.         elseif state.JugMode.value == 'CraftyClyvonne' or state.JugMode.value == 'Cunning Brain Broth' or state.JugMode.value == 'Cng. Brain Broth' then
  974.             equip(sets.precast.JA['Bestial Loyalty'].CraftyClyvonne)
  975.         elseif state.JugMode.value == 'PrestoJulio' or state.JugMode.value == 'Chirping Grasshopper Broth' or state.JugMode.value == 'C. Grass Broth' then
  976.             equip(sets.precast.JA['Bestial Loyalty'].PrestoJulio)
  977.         elseif state.JugMode.value == 'SwiftSieghard' or state.JugMode.value == 'Mellow Bird Broth' or state.JugMode.value == 'Mlw. Bird Broth' then
  978.             equip(sets.precast.JA['Bestial Loyalty'].SwiftSieghard)
  979.         elseif state.JugMode.value == 'MailbusterCetas' or state.JugMode.value == 'Goblin Bug Broth' or state.JugMode.value == 'Gob. Bug Broth' then
  980.             equip(sets.precast.JA['Bestial Loyalty'].MailbusterCetas)
  981.         elseif state.JugMode.value == 'AudaciousAnna' or state.JugMode.value == 'Bubbling Carrion Broth' then
  982.             equip(sets.precast.JA['Bestial Loyalty'].AudaciousAnna)
  983.         elseif state.JugMode.value == 'TurbidToloi' or state.JugMode.value == 'Auroral Broth' then
  984.             equip(sets.precast.JA['Bestial Loyalty'].TurbidToloi)
  985.         elseif state.JugMode.value == 'SlipperySilas' or state.JugMode.value == 'Wormy Broth' then
  986.             equip(sets.precast.JA['Bestial Loyalty'].SlipperySilas)
  987.         elseif state.JugMode.value == 'LuckyLulush' or state.JugMode.value == 'Lucky Carrot Broth' or state.JugMode.value == 'L. Carrot Broth' then
  988.             equip(sets.precast.JA['Bestial Loyalty'].LuckyLulush)
  989.         elseif state.JugMode.value == 'DipperYuly' or state.JugMode.value == 'Wool Grease' then
  990.             equip(sets.precast.JA['Bestial Loyalty'].DipperYuly)
  991.         elseif state.JugMode.value == 'FlowerpotMerle' or state.JugMode.value == 'Vermihumus' then
  992.             equip(sets.precast.JA['Bestial Loyalty'].FlowerpotMerle)
  993.         elseif state.JugMode.value == 'DapperMac' or state.JugMode.value == 'Briny Broth' then
  994.             equip(sets.precast.JA['Bestial Loyalty'].DapperMac)
  995.         elseif state.JugMode.value == 'DiscreetLouise' or state.JugMode.value == 'Deepbed Soil' then
  996.             equip(sets.precast.JA['Bestial Loyalty'].DiscreetLouise)
  997.         elseif state.JugMode.value == 'FatsoFargann' or state.JugMode.value == 'Curdled Plasma Broth' or state.JugMode.value == 'C. Plasma Broth' then
  998.             equip(sets.precast.JA['Bestial Loyalty'].FatsoFargann)
  999.         elseif state.JugMode.value == 'FaithfulFalcorr' or state.JugMode.value == 'Lucky Broth' then
  1000.             equip(sets.precast.JA['Bestial Loyalty'].FaithfulFalcorr)
  1001.         elseif state.JugMode.value == 'BugeyedBroncha' or state.JugMode.value == 'Savage Mole Broth' or state.JugMode.value == 'Svg. Mole Broth' then
  1002.             equip(sets.precast.JA['Bestial Loyalty'].BugeyedBroncha)
  1003.         elseif state.JugMode.value == 'BloodclawShasra' or state.JugMode.value == 'Razor Brain Broth' or state.JugMode.value == 'Rzr. Brain Broth' then
  1004.             equip(sets.precast.JA['Bestial Loyalty'].BloodclawShasra)
  1005.         elseif state.JugMode.value == 'GorefangHobs' or state.JugMode.value == 'Burning Carrion Broth' then
  1006.             equip(sets.precast.JA['Bestial Loyalty'].GorefangHobs)
  1007.         elseif state.JugMode.value == 'GooeyGerard' or state.JugMode.value == 'Cloudy Wheat Broth' or state.JugMode.value == 'Cl. Wheat Broth' then
  1008.             equip(sets.precast.JA['Bestial Loyalty'].GooeyGerard)
  1009.         elseif state.JugMode.value == 'CrudeRaphie' or state.JugMode.value == 'Shadowy Broth' then
  1010.             equip(sets.precast.JA['Bestial Loyalty'].CrudeRaphie)
  1011.         elseif state.JugMode.value == 'DroopyDortwin' or state.JugMode.value == 'Swirling Broth' then
  1012.             equip(sets.precast.JA['Bestial Loyalty'].DroopyDortwin)
  1013.         elseif state.JugMode.value == 'PonderingPeter' or state.JugMode.value == 'Viscous Broth' or state.JugMode.value == 'Vis. Broth' then
  1014.             equip(sets.precast.JA['Bestial Loyalty'].PonderingPeter)
  1015.         elseif state.JugMode.value == 'SunburstMalfik' or state.JugMode.value == 'Shimmering Broth' then
  1016.             equip(sets.precast.JA['Bestial Loyalty'].SunburstMalfik)
  1017.         elseif state.JugMode.value == 'AgedAngus' or state.JugMode.value == 'Fermented Broth' or state.JugMode.value == 'Ferm. Broth' then
  1018.             equip(sets.precast.JA['Bestial Loyalty'].AgedAngus)
  1019.         elseif state.JugMode.value == 'WarlikePatrick' or state.JugMode.value == 'Livid Broth' then
  1020.             equip(sets.precast.JA['Bestial Loyalty'].WarlikePatrick)
  1021.         elseif state.JugMode.value == 'ScissorlegXerin' or state.JugMode.value == 'Spicy Broth' then
  1022.             equip(sets.precast.JA['Bestial Loyalty'].ScissorlegXerin)
  1023.         elseif state.JugMode.value == 'BouncingBertha' or state.JugMode.value == 'Bubbly Broth' then
  1024.             if spell.english == 'Call Beast' then
  1025.                 add_to_chat(123, spell.name..' Canceled: [HQ Jug Pet]')
  1026.                 return
  1027.             end
  1028.             equip(sets.precast.JA['Bestial Loyalty'].BouncingBertha)
  1029.         elseif state.JugMode.value == 'RhymingShizuna' or state.JugMode.value == 'Lyrical Broth' then
  1030.             equip(sets.precast.JA['Bestial Loyalty'].RhymingShizuna)
  1031.         elseif state.JugMode.value == 'AttentiveIbuki' or state.JugMode.value == 'Salubrious Broth' then
  1032.             equip(sets.precast.JA['Bestial Loyalty'].AttentiveIbuki)
  1033.         elseif state.JugMode.value == 'SwoopingZhivago' or state.JugMode.value == 'Windy Greens' then
  1034.             if spell.english == 'Call Beast' then
  1035.                 add_to_chat(123, spell.name..' Canceled: [HQ Jug Pet]')
  1036.                 return
  1037.             end
  1038.             equip(sets.precast.JA['Bestial Loyalty'].SwoopingZhivago)
  1039.         elseif state.JugMode.value == 'AmiableRoche' or state.JugMode.value == 'Airy Broth' then
  1040.             equip(sets.precast.JA['Bestial Loyalty'].AmiableRoche)
  1041.         elseif state.JugMode.value == 'HeraldHenry' or state.JugMode.value == 'Translucent Broth' or state.JugMode.value == 'Trans. Broth' then
  1042.             equip(sets.precast.JA['Bestial Loyalty'].HeraldHenry)
  1043.         elseif state.JugMode.value == 'BrainyWaluis' or state.JugMode.value == 'Crumbly Soil' then
  1044.             equip(sets.precast.JA['Bestial Loyalty'].BrainyWaluis)
  1045.         elseif state.JugMode.value == 'HeadbreakerKen' or state.JugMode.value == 'Blackwater Broth' then
  1046.             equip(sets.precast.JA['Bestial Loyalty'].HeadbreakerKen)
  1047.         elseif state.JugMode.value == 'RedolentCandi' or state.JugMode.value == 'Electrified Broth' then
  1048.             equip(sets.precast.JA['Bestial Loyalty'].RedolentCandi)
  1049.         elseif state.JugMode.value == 'AlluringHoney' or state.JugMode.value == 'Bug-Ridden Broth' then
  1050.             if spell.english == 'Call Beast' then
  1051.                 add_to_chat(123, spell.name..' Canceled: [HQ Jug Pet]')
  1052.                 return
  1053.             end
  1054.             equip(sets.precast.JA['Bestial Loyalty'].AlluringHoney)
  1055.         elseif state.JugMode.value == 'CaringKiyomaro' or state.JugMode.value == 'Fizzy Broth' then
  1056.             equip(sets.precast.JA['Bestial Loyalty'].CaringKiyomaro)
  1057.         elseif state.JugMode.value == 'VivaciousVickie' or state.JugMode.value == 'Tantalizing Broth' or state.JugMode.value == 'Tant. Broth' then
  1058.             if spell.english == 'Call Beast' then
  1059.                 add_to_chat(123, spell.name..' Canceled: [HQ Jug Pet]')
  1060.                 return
  1061.             end
  1062.             equip(sets.precast.JA['Bestial Loyalty'].VivaciousVickie)
  1063.         elseif state.JugMode.value == 'HurlerPercival' or state.JugMode.value == 'Pale Sap' then
  1064.             equip(sets.precast.JA['Bestial Loyalty'].HurlerPercival)
  1065.         elseif state.JugMode.value == 'BlackbeardRandy' or state.JugMode.value == 'Meaty Broth' then
  1066.             equip(sets.precast.JA['Bestial Loyalty'].BlackbeardRandy)
  1067.         elseif state.JugMode.value == 'GenerousArthur' or state.JugMode.value == 'Dire Broth' then
  1068.             equip(sets.precast.JA['Bestial Loyalty'].GenerousArthur)
  1069.         elseif state.JugMode.value == 'ThreestarLynn' or state.JugMode.value == 'Muddy Broth' then
  1070.             equip(sets.precast.JA['Bestial Loyalty'].ThreestarLynn)
  1071.         elseif state.JugMode.value == 'BraveHeroGlenn' or state.JugMode.value == 'Wispy Broth' then
  1072.             equip(sets.precast.JA['Bestial Loyalty'].BraveHeroGlenn)
  1073.         elseif state.JugMode.value == 'SharpwitHermes' or state.JugMode.value == 'Saline Broth' then
  1074.             equip(sets.precast.JA['Bestial Loyalty'].SharpwitHermes)
  1075.         elseif state.JugMode.value == 'ColibriFamiliar' or state.JugMode.value == 'Sugary Broth' then
  1076.             equip(sets.precast.JA['Bestial Loyalty'].ColibriFamiliar)
  1077.         elseif state.JugMode.value == 'ChoralLeera' or state.JugMode.value == 'Glazed Broth' then
  1078.             if spell.english == 'Call Beast' then
  1079.                 add_to_chat(123, spell.name..' Canceled: [HQ Jug Pet]')
  1080.                 return
  1081.             end
  1082.             equip(sets.precast.JA['Bestial Loyalty'].ChoralLeera)
  1083.         elseif state.JugMode.value == 'SpiderFamiliar' or state.JugMode.value == 'Sticky Webbing' then
  1084.             equip(sets.precast.JA['Bestial Loyalty'].SpiderFamiliar)
  1085.         elseif state.JugMode.value == 'GussyHachirobe' or state.JugMode.value == 'Slimy Webbing' then
  1086.             if spell.english == 'Call Beast' then
  1087.                 add_to_chat(123, spell.name..' Canceled: [HQ Jug Pet]')
  1088.                 return
  1089.             end
  1090.             equip(sets.precast.JA['Bestial Loyalty'].GussyHachirobe)
  1091.         elseif state.JugMode.value == 'AcuexFamiliar' or state.JugMode.value == 'Poisonous Broth' then
  1092.             equip(sets.precast.JA['Bestial Loyalty'].AcuexFamiliar)
  1093.         elseif state.JugMode.value == 'FluffyBredo' or state.JugMode.value == 'Venomous Broth' then
  1094.             if spell.english == 'Call Beast' then
  1095.                 add_to_chat(123, spell.name..' Canceled: [HQ Jug Pet]')
  1096.                 return
  1097.             end
  1098.             equip(sets.precast.JA['Bestial Loyalty'].FluffyBredo)
  1099.         elseif state.JugMode.value == 'SuspiciousAlice' or state.JugMode.value == 'Furious Broth' then
  1100.             equip(sets.precast.JA['Bestial Loyalty'].SuspiciousAlice)
  1101.         elseif state.JugMode.value == 'AnklebiterJedd' or state.JugMode.value == 'Crackling Broth' then
  1102.             equip(sets.precast.JA['Bestial Loyalty'].AnklebiterJedd)
  1103.         elseif state.JugMode.value == 'FleetReinhard' or state.JugMode.value == 'Rapid Broth' then
  1104.             equip(sets.precast.JA['Bestial Loyalty'].FleetReinhard)
  1105.         elseif state.JugMode.value == 'CursedAnnabelle' or state.JugMode.value == 'Creepy Broth' then
  1106.             equip(sets.precast.JA['Bestial Loyalty'].CursedAnnabelle)
  1107.         elseif state.JugMode.value == 'SurgingStorm' or state.JugMode.value == 'Insipid Broth' then
  1108.             equip(sets.precast.JA['Bestial Loyalty'].SurgingStorm)
  1109.         elseif state.JugMode.value == 'SubmergedIyo' or state.JugMode.value == 'Deepwater Broth' then
  1110.             if spell.english == 'Call Beast' then
  1111.                 add_to_chat(123, spell.name..' Canceled: [HQ Jug Pet]')
  1112.                 return
  1113.             end
  1114.             equip(sets.precast.JA['Bestial Loyalty'].SubmergedIyo)
  1115.         elseif state.JugMode.value == 'MosquitoFamiliar' or state.JugMode.value == 'Wetlands Broth' then
  1116.             equip(sets.precast.JA['Bestial Loyalty'].MosquitoFamiliar)
  1117.         elseif state.JugMode.value == 'Left-HandedYoko' or state.JugMode.value == 'Heavenly Broth' then
  1118.             if spell.english == 'Call Beast' then
  1119.                 add_to_chat(123, spell.name..' Canceled: [HQ Jug Pet]')
  1120.                 return
  1121.             end
  1122.             equip(sets.precast.JA['Bestial Loyalty'].LeftHandedYoko)
  1123.         end
  1124.     end
  1125.  
  1126. -- Define class for Sic and Ready moves.
  1127.     if spell.type == "Monster" then
  1128.             classes.CustomClass = "WS"
  1129.         if state.PetMode.Value == 'PetOnly' and not buffactive['Unleash']then
  1130.             if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1131.                 equip(sets.midcast.Pet.ReadyRecastDWNE)
  1132.             else
  1133.                 equip(sets.midcast.Pet.ReadyRecastNE)
  1134.             end
  1135.         else
  1136.             equip(sets.midcast.Pet.ReadyRecast)
  1137.         end
  1138.     end
  1139. end
  1140.  
  1141. function job_post_precast(spell, action, spellMap, eventArgs)
  1142. -- If Killer Instinct is active during WS, equip Nukumi Gausape +1.
  1143.     if spell.type:lower() == 'weaponskill' and buffactive['Killer Instinct'] then
  1144.         equip(sets.buff['Killer Instinct'])
  1145.     end
  1146.  
  1147.     if world.time >= 17*60 or world.time < 7*60 then
  1148.         if spell.english == "Ruinator" or spell.english == "Rampage" or spell.english == "Calamity" then
  1149.             equip(sets.midcast.NightEarrings)
  1150.         end
  1151.     end
  1152.  
  1153.     if spell.english == "Primal Rend" and player.tp > 2750 then
  1154.         equip(sets.midcast.ExtraMAB)
  1155.     end
  1156.  
  1157. -- Equip Chaac Belt for TH+1 on common Subjob Abilities or Spells.
  1158.     if abilities_to_check:contains(spell.english) and state.TreasureMode.value == 'Tag' then
  1159.         equip(sets.THBelt)
  1160.     end
  1161. end
  1162.  
  1163. function job_midcast(spell, action, spellMap, eventArgs)
  1164.     if state.PetMode.value == 'PetOnly' then
  1165.         if spell.english == "Cure" or spell.english == "Cure II" or spell.english == "Cure III" or spell.english == "Cure IV" then
  1166.             equip(sets.CurePetOnly)
  1167.         end
  1168.         if spell.english == "Curaga" or spell.english == "Curaga II" or spell.english == "Curaga III" then
  1169.             equip(sets.CurePetOnly)
  1170.         end
  1171.     end
  1172. end
  1173.  
  1174. function job_pet_midcast(spell, action, spellMap, eventArgs)
  1175.     if physical_ready_moves:contains(spell.name) then
  1176.         if state.PetMode.value == 'PetOnly' then
  1177.             if state.OffenseMode.value == 'HighAcc' or state.OffenseMode.value == 'HighAccHaste' then
  1178.                 if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1179.                     equip(sets.midcast.Pet.ReadyDWNE.HighAcc, sets.midcast.Pet[state.CorrelationMode.value])
  1180.                 else
  1181.                     equip(sets.midcast.Pet.ReadyNE.HighAcc, sets.midcast.Pet[state.CorrelationMode.value])
  1182.                 end
  1183.             elseif state.OffenseMode.value == 'MedAcc' or state.OffenseMode.value == 'MedAccHaste' then
  1184.                 if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1185.                     equip(sets.midcast.Pet.ReadyDWNE.MedAcc, sets.midcast.Pet[state.CorrelationMode.value])
  1186.                 else
  1187.                     equip(sets.midcast.Pet.ReadyNE.MedAcc, sets.midcast.Pet[state.CorrelationMode.value])
  1188.                 end
  1189.             else
  1190.                 if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1191.                     equip(set_combine(sets.midcast.Pet.ReadyDWNE, sets.midcast.Pet[state.CorrelationMode.value]))
  1192.                 else
  1193.                     equip(set_combine(sets.midcast.Pet.ReadyNE, sets.midcast.Pet[state.CorrelationMode.value]))
  1194.                 end
  1195.             end
  1196.         else
  1197.             if state.OffenseMode.value == 'HighAcc' or state.OffenseMode.value == 'HighAccHaste' then
  1198.                 equip(sets.midcast.Pet.HighAcc, sets.midcast.Pet[state.CorrelationMode.value])
  1199.             elseif state.OffenseMode.value == 'MedAcc' or state.OffenseMode.value == 'MedAccHaste' then
  1200.                 equip(sets.midcast.Pet.MedAcc, sets.midcast.Pet[state.CorrelationMode.value])
  1201.             else
  1202.                 equip(set_combine(sets.midcast.Pet.WS, sets.midcast.Pet[state.CorrelationMode.value]))
  1203.             end
  1204.         end
  1205.     end
  1206.  
  1207.     if magic_atk_ready_moves:contains(spell.name) then
  1208.         if state.PetMode.value == 'PetOnly' then
  1209.             if state.OffenseMode.value == 'HighAcc' or state.OffenseMode.value == 'HighAccHaste' then
  1210.                 if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1211.                     equip(sets.midcast.Pet.MagicAtkReadyDWNE.HighAcc)
  1212.                 else
  1213.                     equip(sets.midcast.Pet.MagicAtkReadyNE.HighAcc)
  1214.                 end
  1215.             elseif state.OffenseMode.value == 'MedAcc' or state.OffenseMode.value == 'MedAccHaste' then
  1216.                 if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1217.                     equip(sets.midcast.Pet.MagicAtkReadyDWNE.MedAcc)
  1218.                 else
  1219.                     equip(sets.midcast.Pet.MagicAtkReadyNE.MedAcc)
  1220.                 end
  1221.             else
  1222.                 if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1223.                     equip(sets.midcast.Pet.MagicAtkReadyDWNE)
  1224.                 else
  1225.                     equip(sets.midcast.Pet.MagicAtkReadyNE)
  1226.                 end
  1227.             end
  1228.         else
  1229.             equip(sets.midcast.Pet.MagicAtkReady)
  1230.         end
  1231.     end
  1232.  
  1233.     if magic_acc_ready_moves:contains(spell.name) then
  1234.         if state.PetMode.value == 'PetOnly' then
  1235.             if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1236.                 equip(sets.midcast.Pet.MagicAccReadyDWNE)
  1237.             else
  1238.                 equip(sets.midcast.Pet.MagicAccReadyNE)
  1239.             end
  1240.         else
  1241.             equip(sets.midcast.Pet.MagicAccReady)
  1242.         end
  1243.     end
  1244.  
  1245.     -- If Pet TP, before bonuses, is less than a certain value then equip Nukumi Manoplas +1
  1246.     -- if physical_ready_moves:contains(spell.name) and state.OffenseMode.value ~= 'HighAcc' then
  1247.     --    if tp_based_ready_moves:contains(spell.name) and PetJob == 'Warrior' and pet.tp < 190 then
  1248.             equip(sets.midcast.Pet.TPBonus)
  1249.     --    elseif tp_based_ready_moves:contains(spell.name) and PetJob ~= 'Warrior' and pet.tp < 240 then
  1250.     --        equip(sets.midcast.Pet.TPBonus)
  1251.     --    end
  1252.     -- end
  1253. end
  1254.  
  1255. function job_pet_aftercast(spell, action, spellMap, eventArgs)
  1256.     if pet_buff_moves:contains(spell.name) and DisplayPetBuffTimers == 'true' then
  1257.         -- Pet TP calculations for Ready Buff Durations
  1258.         local TP_Amount = 1000 + TP_Gift_Bonus
  1259.     -- Lets not check pet.tp right now, it is a silly var
  1260.         -- if pet.tp * 10 < 1000 then TP_Amount = TP_Amount + TP_Gift_Bonus;end
  1261.         -- if pet.tp * 10 > 1000 then TP_Amount = (pet.tp * 10) + TP_Gift_Bonus;end
  1262.         if player.equipment.hands == "Ferine Manoplas +1" then TP_Amount = TP_Amount + 250;end
  1263.         if player.equipment.hands == "Ferine Manoplas +2" then TP_Amount = TP_Amount + 500;end
  1264.         if player.equipment.hands == "Nukumi Manoplas" then TP_Amount = TP_Amount + 550;end
  1265.         if player.equipment.hands == "Nukumi Manoplas +1" then TP_Amount = TP_Amount + 600;end
  1266.         if player.equipment.main == "Aymur" or player.equipment.sub == "Aymur" then TP_Amount = TP_Amount + 500;end
  1267.         if player.equipment.main == "Kumbhakarna" then TP_Amount = TP_Amount + TP_Bonus_Main;end
  1268.         if player.equipment.sub == "Kumbhakarna" then TP_Amount = TP_Amount + TP_Bonus_Sub;end
  1269.         if TP_Amount > 3000 then TP_Amount = 3000;end
  1270.  
  1271.         -- add_to_chat(28, pet.name..' Ready Midcast TP: '..TP_Amount..'')
  1272.  
  1273.         if spell.english == 'Bubble Curtain' then
  1274.             local TP_Buff_Duration = math.floor((TP_Amount - 1000)* 0.09) + BubbleCurtainDuration
  1275.             send_command('timers c "'..spell.english..'" '..TP_Buff_Duration..' down '..BubbleCurtainIcon..'')
  1276.         elseif spell.english == 'Scissor Guard' then
  1277.             local TP_Buff_Duration = math.floor(TP_Amount * 0.06)
  1278.             send_command('timers c "'..spell.english..'" '..TP_Buff_Duration..' down '..ScissorGuardIcon..'')
  1279.         elseif spell.english == 'Secretion' then
  1280.             TP_Amount = TP_Amount + 500
  1281.             if TP_Amount > 3000 then TP_Amount = 3000;end
  1282.             local TP_Buff_Duration = math.floor(TP_Amount * 0.18)
  1283.             send_command('timers c "Secretion" '..TP_Buff_Duration..' down '..SecretionIcon..'')
  1284.         elseif spell.english == 'Rage' then
  1285.             TP_Amount = TP_Amount + 500
  1286.             if TP_Amount > 3000 then TP_Amount = 3000;end
  1287.             local TP_Buff_Duration = math.floor(TP_Amount * 0.18)
  1288.             send_command('timers c "'..spell.english..'" '..TP_Buff_Duration..' down '..RageIcon..'')
  1289.         elseif spell.english == 'Rhino Guard' then
  1290.             local TP_Buff_Duration = math.floor(TP_Amount * 0.18)
  1291.             send_command('timers c "Rhino Guard" '..TP_Buff_Duration..' down '..RhinoGuardIcon..'')
  1292.         elseif spell.english == 'Zealous Snort' then
  1293.             local TP_Buff_Duration = math.floor(TP_Amount * 0.06)
  1294.             send_command('timers c "'..spell.english..'" '..TP_Buff_Duration..' down '..ZealousSnortIcon..'')
  1295.         end
  1296.     end
  1297.  
  1298.     if state.PetMode.value == 'PetOnly' then
  1299.         if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1300.             equip(sets.DTAxes)
  1301.         else
  1302.             equip(sets.DTAxeShield)
  1303.         end
  1304.     end
  1305. end
  1306.  
  1307. -- Return true if we handled the aftercast work.  Otherwise it will fall back
  1308. -- to the general aftercast() code in Mote-Include.
  1309. function job_aftercast(spell, action, spellMap, eventArgs)
  1310. -- Create custom timers for Pet Buffs.
  1311.     if pet_buff_moves:contains(spell.name) and DisplayPetBuffTimers == 'true' then
  1312.         if not spell.interrupted then
  1313.             pet_buff_timer(spell)
  1314.         end
  1315.     end
  1316.  
  1317.     if spell.english == "Leave" then
  1318.         clear_pet_buff_timers()
  1319.     end
  1320.  
  1321.     if player.equipment.main == 'Aymur' then
  1322.         custom_aftermath_timers_aftercast(spell)
  1323.     end
  1324.  
  1325.     if world.time >= 360 and world.time < 1080 then
  1326.         if state.OffenseMode.value == 'HighAcc' or state.OffenseMode.value == 'HighAccHaste' then
  1327.             if player.status == 'Engaged' then
  1328.                 equip(sets.DaytimeAmmo)
  1329.             end
  1330.         end
  1331.     end
  1332.  
  1333.     if state.PetMode.value == 'PetOnly' then
  1334.         if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1335.             equip(sets.DTAxes)
  1336.         else
  1337.             equip(sets.DTAxeShield)
  1338.         end
  1339.     end
  1340. end
  1341.  
  1342. -------------------------------------------------------------------------------------------------------------------
  1343. -- Customization hook for idle sets.
  1344. -------------------------------------------------------------------------------------------------------------------
  1345.  
  1346. function customize_idle_set(idleSet)
  1347.     if player.hpp < 50 and pet.status ~= 'Engaged' then
  1348.         idleSet = set_combine(idleSet, sets.ExtraRegen)
  1349.     end
  1350.     return idleSet
  1351. end
  1352.  
  1353. -------------------------------------------------------------------------------------------------------------------
  1354. -- Hooks for Reward, Correlation, Treasure Hunter, and Pet Mode handling.
  1355. -------------------------------------------------------------------------------------------------------------------
  1356.  
  1357. function job_state_change(stateField, newValue, oldValue)
  1358.     if stateField == 'Correlation Mode' then
  1359.         state.CorrelationMode:set(newValue)
  1360.     elseif stateField == 'Reward Mode' then
  1361.         state.RewardMode:set(newValue)
  1362.     elseif stateField == 'Treasure Mode' then
  1363.         state.TreasureMode:set(newValue)
  1364.     elseif stateField == 'Pet Mode' then
  1365.         state.CombatWeapon:set(newValue)
  1366.     end
  1367.  
  1368.     if world.time >= 360 and world.time < 1080 then
  1369.         if state.OffenseMode.value == 'HighAcc' or state.OffenseMode.value == 'HighAccHaste' then
  1370.             if player.status == 'Engaged' then
  1371.                 equip(sets.DaytimeAmmo)
  1372.             end
  1373.         end
  1374.     end
  1375. end
  1376.  
  1377. function get_custom_wsmode(spell, spellMap, default_wsmode)
  1378.     if default_wsmode == 'Normal' then
  1379.         if spell.english == "Ruinator" and (world.day_element == 'Water' or world.day_element == 'Wind' or world.day_element == 'Ice') then
  1380.             return 'Gavialis'
  1381.         end
  1382.     end
  1383. end
  1384.  
  1385. -------------------------------------------------------------------------------------------------------------------
  1386. -- User code that supplements self-commands.
  1387. -------------------------------------------------------------------------------------------------------------------
  1388.  
  1389. -- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
  1390. function job_handle_equipping_gear(playerStatus, eventArgs)    
  1391.     if player.equipment.back == 'Mecisto. Mantle' or player.equipment.back == 'Aptitude Mantle' or player.equipment.back == 'Aptitude Mantle +1' or player.equipment.back == 'Nexus Cape' then
  1392.         disable('back')
  1393.     else
  1394.         enable('back')
  1395.     end
  1396.         if player.equipment.ring1 == 'Warp Ring' or player.equipment.ring1 == 'Vocation Ring' or player.equipment.ring1 == 'Capacity Ring' then
  1397.         disable('ring1')
  1398.     else
  1399.         enable('ring1')
  1400.     end
  1401.     if player.equipment.ring2 == 'Warp Ring' or player.equipment.ring2 == 'Vocation Ring' or player.equipment.ring2 == 'Capacity Ring' then
  1402.         disable('ring2')
  1403.     else
  1404.         enable('ring2')
  1405.     end
  1406. end
  1407.  
  1408. -- Called by the 'update' self-command, for common needs.
  1409. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  1410. function job_update(cmdParams, eventArgs)
  1411.     get_combat_form()
  1412.     get_melee_groups()
  1413.  
  1414.         if state.JugMode.value == 'FunguarFamiliar' or state.JugMode.value == 'Seedbed Soil' then
  1415.                 PetName = "FunguarFamiliar";JugInfo = "Seedbed Soil";PetInfo = "Funguar, Plantoid";PetJob = 'Warrior'
  1416.                 ReadyMoveOne = 'Frogkick';ReadyMoveTwo = 'Spore';ReadyMoveThree = 'Silence Gas'
  1417.         elseif state.JugMode.value == 'CourierCarrie' or state.JugMode.value == 'Fish Oil Broth' then
  1418.                 PetName = "CourierCarrie";JugInfo = "Fish Oil Broth";PetInfo = "Crab, Aquan";PetJob = 'Paladin'
  1419.                 ReadyMoveOne = 'Big Scissors';ReadyMoveTwo = 'Scissor Guard';ReadyMoveThree = 'Bubble Curtain'
  1420.         elseif state.JugMode.value == 'AmigoSabotender' or state.JugMode.value == 'Sun Water' then
  1421.                 PetName = "AmigoSabotender";JugInfo = "Sun Water";PetInfo = "Cactuar, Plantoid";PetJob = 'Warrior'
  1422.                 ReadyMoveOne = 'Needle Shot';ReadyMoveTwo = '??? Needles';ReadyMoveThree = '??? Needles'
  1423.         elseif state.JugMode.value == 'NurseryNazuna' or state.JugMode.value == 'Dancing Herbal Broth' or state.JugMode.value == 'D. Herbal Broth' then
  1424.                 PetName = "NurseryNazuna";JugInfo = "Dancing Herbal Broth";PetInfo = "Sheep, Beast";PetJob = 'Warrior'
  1425.                 ReadyMoveOne = 'Lamb Chop';ReadyMoveTwo = 'Rage';ReadyMoveThree = 'Sheep Song'
  1426.         elseif state.JugMode.value == 'CraftyClyvonne' or state.JugMode.value == 'Cunning Brain Broth' or state.JugMode.value == 'Cng. Brain Broth' then
  1427.                 PetName = "CraftyClyvonne";JugInfo = "Cunning Brain Broth";PetInfo = "Coeurl, Beast";PetJob = 'Warrior'
  1428.                 ReadyMoveOne = 'Blaster';ReadyMoveTwo = 'Chaotic Eye';ReadyMoveThree = 'None'
  1429.         elseif state.JugMode.value == 'PrestoJulio' or state.JugMode.value == 'Chirping Grasshopper Broth' or state.JugMode.value == 'C. Grass Broth' then
  1430.                 PetName = "PrestoJulio";JugInfo = "Chirping Grasshopper Broth";PetInfo = "Flytrap, Plantoid";PetJob = 'Warrior'
  1431.                 ReadyMoveOne = 'Frogkick';ReadyMoveTwo = 'Spore';ReadyMoveThree = 'Silence Gas'
  1432.         elseif state.JugMode.value == 'SwiftSieghard' or state.JugMode.value == 'Mellow Bird Broth' or state.JugMode.value == 'Mlw. Bird Broth' then
  1433.                 PetName = "SwiftSieghard";JugInfo = "Mellow Bird Broth";PetInfo = "Raptor, Lizard";PetJob = 'Warrior'
  1434.                 ReadyMoveOne = 'Scythe Tail';ReadyMoveTwo = 'Ripper Fang';ReadyMoveThree = 'Chomp Rush'
  1435.         elseif state.JugMode.value == 'MailbusterCetas' or state.JugMode.value == 'Goblin Bug Broth' or state.JugMode.value == 'Gob. Bug Broth' then
  1436.                 PetName = "MailbusterCetas";JugInfo = "Goblin Bug Broth";PetInfo = "Fly, Vermin";PetJob = 'Warrior'
  1437.                 ReadyMoveOne = 'Somersault';ReadyMoveTwo = 'Cursed Sphere';ReadyMoveThree = 'Venom'
  1438.         elseif state.JugMode.value == 'AudaciousAnna' or state.JugMode.value == 'Bubbling Carrion Broth' then
  1439.                 PetName = "AudaciousAnna";JugInfo = "Bubbling Carrion Broth";PetInfo = "Lizard, Lizard";PetJob = 'Warrior'
  1440.                 ReadyMoveOne = 'Tail Blow';ReadyMoveTwo = 'Brain Crush';ReadyMoveThree = 'Fireball'
  1441.         elseif state.JugMode.value == 'TurbidToloi' or state.JugMode.value == 'Auroral Broth' then
  1442.                 PetName = "TurbidToloi";JugInfo = "Auroral Broth";PetInfo = "Pugil, Aquan";PetJob = 'Warrior'
  1443.                 ReadyMoveOne = 'Recoil Dive';ReadyMoveTwo = 'Water Wall';ReadyMoveThree = 'Intimidate'
  1444.         elseif state.JugMode.value == 'SlipperySilas' or state.JugMode.value == 'Wormy Broth' then
  1445.                 PetName = "SlipperySilas";JugInfo = "Wormy Broth";PetInfo = "Toad, Aquan";PetJob = 'Warrior'
  1446.                 ReadyMoveOne = 'None';ReadyMoveTwo = 'None';ReadyMoveThree = 'None'
  1447.         elseif state.JugMode.value == 'LuckyLulush' or state.JugMode.value == 'Lucky Carrot Broth' or state.JugMode.value == 'L. Carrot Broth' then
  1448.                 PetName = "LuckyLulush";JugInfo = "Lucky Carrot Broth";PetInfo = "Rabbit, Beast";PetJob = 'Warrior'
  1449.                 ReadyMoveOne = 'Foot Kick';ReadyMoveTwo = 'Whirl Claws';ReadyMoveThree = 'Wild Carrot'
  1450.         elseif state.JugMode.value == 'DipperYuly' or state.JugMode.value == 'Wool Grease' then
  1451.                 PetName = "DipperYuly";JugInfo = "Wool Grease";PetInfo = "Ladybug, Vermin";PetJob = 'Thief'
  1452.                 ReadyMoveOne = 'Spiral Spin';ReadyMoveTwo = 'Sudden Lunge';ReadyMoveThree = 'Noisome Powder'
  1453.         elseif state.JugMode.value == 'FlowerpotMerle' or state.JugMode.value == 'Vermihumus' then
  1454.                 PetName = "FlowerpotMerle";JugInfo = "Vermihumus";PetInfo = "Mandragora, Plantoid";PetJob = 'Monk'
  1455.                 ReadyMoveOne = 'Head Butt';ReadyMoveTwo = 'Leaf Dagger';ReadyMoveThree = 'Wild Oats'
  1456.         elseif state.JugMode.value == 'DapperMac' or state.JugMode.value == 'Briny Broth' then
  1457.                 PetName = "DapperMac";JugInfo = "Briny Broth";PetInfo = "Apkallu, Bird";PetJob = 'Monk'
  1458.                 ReadyMoveOne = 'Beak Lunge';ReadyMoveTwo = 'Wing Slap';ReadyMoveThree = 'None'
  1459.         elseif state.JugMode.value == 'DiscreetLouise' or state.JugMode.value == 'Deepbed Soil' then
  1460.                 PetName = "DiscreetLouise";JugInfo = "Deepbed Soil";PetInfo = "Funguar, Plantoid";PetJob = 'Warrior'
  1461.                 ReadyMoveOne = 'Frogkick';ReadyMoveTwo = 'Spore';ReadyMoveThree = 'Silence Gas'
  1462.         elseif state.JugMode.value == 'FatsoFargann' or state.JugMode.value == 'Curdled Plasma Broth' or state.JugMode.value == 'C. Plasma Broth' then
  1463.                 PetName = "FatsoFargann";JugInfo = "Curdled Plasma Broth";PetInfo = "Leech, Amorph";PetJob = 'Warrior'
  1464.                 ReadyMoveOne = 'Suction';ReadyMoveTwo = 'Acid Mist';ReadyMoveThree = 'Drain Kiss'
  1465.         elseif state.JugMode.value == 'FaithfulFalcorr' or state.JugMode.value == 'Lucky Broth' then
  1466.                 PetName = "FaithfulFalcorr";JugInfo = "Lucky Broth";PetInfo = "Hippogryph, Bird";PetJob = 'Thief'
  1467.                 ReadyMoveOne = 'Back Heel';ReadyMoveTwo = 'Choke Breath';ReadyMoveThree = 'Fantod'
  1468.         elseif state.JugMode.value == 'BugeyedBroncha' or state.JugMode.value == 'Savage Mole Broth' or state.JugMode.value == 'Svg. Mole Broth' then
  1469.                 PetName = "BugeyedBroncha";JugInfo = "Savage Mole Broth";PetInfo = "Eft, Lizard";PetJob = 'Warrior'
  1470.                 ReadyMoveOne = 'Nimble Snap';ReadyMoveTwo = 'Cyclotail';ReadyMoveThree = 'Geist Wall'
  1471.         elseif state.JugMode.value == 'BloodclawShasra' or state.JugMode.value == 'Razor Brain Broth' or state.JugMode.value == 'Rzr. Brain Broth' then
  1472.                 PetName = "BloodclawShasra";JugInfo = "Razor Brain Broth";PetInfo = "Lynx, Beast";PetJob = 'Warrior'
  1473.                 ReadyMoveOne = 'Blaster';ReadyMoveTwo = 'Chaotic Eye';ReadyMoveThree = 'Charged Whisker'
  1474.         elseif state.JugMode.value == 'GorefangHobs' or state.JugMode.value == 'Burning Carrion Broth' then
  1475.                 PetName = "GorefangHobs";JugInfo = "Burning Carrion Broth";PetInfo = "Tiger, Beast";PetJob = 'Warrior'
  1476.                 ReadyMoveOne = 'Razor Fang';ReadyMoveTwo = 'Claw Cyclone';ReadyMoveThree = 'Roar'
  1477.         elseif state.JugMode.value == 'GooeyGerard' or state.JugMode.value == 'Cloudy Wheat Broth' then
  1478.                 PetName = "GooeyGerard";JugInfo = "Cloudy Wheat Broth";PetInfo = "Slug, Amorph";PetJob = 'Warrior'
  1479.                 ReadyMoveOne = 'Purulent Ooze';ReadyMoveTwo = 'Corrosive Ooze';ReadyMoveThree = 'Corrosive Ooze'
  1480.         elseif state.JugMode.value == 'CrudeRaphie' or state.JugMode.value == 'Shadowy Broth' then
  1481.                 PetName = "CrudeRaphie";JugInfo = "Shadowy Broth";PetInfo = "Adamantoise, Lizard";PetJob = 'Paladin'
  1482.                 ReadyMoveOne = 'Tortoise Stomp';ReadyMoveTwo = 'Harden Shell';ReadyMoveThree = 'Aqua Breath'
  1483.         elseif state.JugMode.value == 'DroopyDortwin' or state.JugMode.value == 'SwirlingBroth' then
  1484.                 PetName = "DroopyDortwin";JugInfo = "Swirling Broth";PetInfo = "Rabbit, Beast";PetJob = 'Warrior'
  1485.                 ReadyMoveOne = 'Foot Kick';ReadyMoveTwo = 'Whirl Claws';ReadyMoveThree = 'Wild Carrot'
  1486.         elseif state.JugMode.value == 'PonderingPeter' or state.JugMode.value == 'Viscous Broth' or state.JugMode.value == 'Vis. Broth' then
  1487.                 PetName = "PonderingPeter";JugInfo = "Vis. Broth";PetInfo = "HQ Rabbit, Beast";PetJob = 'Warrior'
  1488.                 ReadyMoveOne = 'Foot Kick';ReadyMoveTwo = 'Whirl Claws';ReadyMoveThree = 'Wild Carrot'
  1489.         elseif state.JugMode.value == 'SunburstMalfik' or state.JugMode.value == 'Shimmering Broth' then
  1490.                 PetName = "SunburstMalfik";JugInfo = "Shimmering Broth";PetInfo = "Crab, Aquan";PetJob = 'Paladin'
  1491.                 ReadyMoveOne = 'Big Scissors';ReadyMoveTwo = 'Scissor Guard';ReadyMoveThree = 'Bubble Curtain'
  1492.         elseif state.JugMode.value == 'AgedAngus' or state.JugMode.value == 'Fermented Broth' or state.JugMode.value == 'Ferm. Broth' then
  1493.                 PetName = "AgedAngus";JugInfo = "Ferm. Broth";PetInfo = "HQ Crab, Aquan";PetJob = 'Paladin'
  1494.                 ReadyMoveOne = 'Big Scissors';ReadyMoveTwo = 'Scissor Guard';ReadyMoveThree = 'Bubble Curtain'
  1495.         elseif state.JugMode.value == 'WarlikePatrick' or state.JugMode.value == 'Livid Broth' then
  1496.                 PetName = "WarlikePatrick";JugInfo = "Livid Broth";PetInfo = "Lizard, Lizard";PetJob = 'Warrior'
  1497.                 ReadyMoveOne = 'Tail Blow';ReadyMoveTwo = 'Brain Crush';ReadyMoveThree = 'Fireball'
  1498.         elseif state.JugMode.value == 'ScissorlegXerin' or state.JugMode.value == 'Spicy Broth' then
  1499.                 PetName = "ScissorlegXerin";JugInfo = "Spicy Broth";PetInfo = "Chapuli, Vermin";PetJob = 'Warrior'
  1500.                 ReadyMoveOne = 'Sensilla Blades';ReadyMoveTwo = 'Tegmina Buffet';ReadyMoveThree = 'Tegmina Buffet'
  1501.         elseif state.JugMode.value == 'BouncingBertha' or state.JugMode.value == 'Bubbly Broth' then
  1502.                 PetName = "BouncingBertha";JugInfo = "Bubbly Broth";PetInfo = "HQ Chapuli, Vermin";PetJob = 'Warrior'
  1503.                 ReadyMoveOne = 'Sensilla Blades';ReadyMoveTwo = 'Tegmina Buffet';ReadyMoveThree = 'Tegmina Buffet'
  1504.         elseif state.JugMode.value == 'RhymingShizuna' or state.JugMode.value == 'Lyrical Broth' then
  1505.                 PetName = "RhymingShizuna";JugInfo = "Lyrical Broth";PetInfo = "Sheep, Beast";PetJob = 'Warrior'
  1506.                 ReadyMoveOne = 'Lamb Chop';ReadyMoveTwo = 'Rage';ReadyMoveThree = 'Sheep Song'
  1507.         elseif state.JugMode.value == 'AttentiveIbuki' or state.JugMode.value == 'Salubrious Broth' then
  1508.                 PetName = "AttentiveIbuki";JugInfo = "Salubrious Broth";PetInfo = "Tulfaire, Bird";PetJob = 'Warrior'
  1509.                 ReadyMoveOne = 'Swooping Frenzy';ReadyMoveTwo = 'Pentapeck';ReadyMoveThree = 'Molting Plumage'
  1510.         elseif state.JugMode.value == 'SwoopingZhivago' or state.JugMode.value == 'Windy Greens' then
  1511.                 PetName = "SwoopingZhivago";JugInfo = "Windy Greens";PetInfo = "HQ Tulfaire, Bird";PetJob = 'Warrior'
  1512.                 ReadyMoveOne = 'Swooping Frenzy';ReadyMoveTwo = 'Pentapeck';ReadyMoveThree = 'Molting Plumage'
  1513.         elseif state.JugMode.value == 'AmiableRoche' or state.JugMode.value == 'Airy Broth' then
  1514.                 PetName = "AmiableRoche";JugInfo = "Airy Broth";PetInfo = "Pugil, Aquan";PetJob = 'Warrior'
  1515.                 ReadyMoveOne = 'Recoil Dive';ReadyMoveTwo = 'Water Wall';ReadyMoveThree = 'Intimidate'
  1516.         elseif state.JugMode.value == 'HeraldHenry' or state.JugMode.value == 'Translucent Broth' or state.JugMode.value == 'Trans. Broth' then
  1517.                 PetName = "HeraldHenry";JugInfo = "Trans. Broth";PetInfo = "Crab, Aquan";PetJob = 'Paladin'
  1518.                 ReadyMoveOne = 'Big Scissors';ReadyMoveTwo = 'Scissor Guard';ReadyMoveThree = 'Bubble Curtain'
  1519.         elseif state.JugMode.value == 'BrainyWaluis' or state.JugMode.value == 'CrumblySoil' then
  1520.                 PetName = "BrainyWaluis";JugInfo = "Crumbly Soil";PetInfo = "Funguar, Plantoid";PetJob = 'Warrior'
  1521.                 ReadyMoveOne = 'Frogkick';ReadyMoveTwo = 'Spore';ReadyMoveThree = 'Silence Gas'
  1522.         elseif state.JugMode.value == 'HeadbreakerKen' or state.JugMode.value == 'Blackwater Broth' then
  1523.                 PetName = "HeadbreakerKen";JugInfo = "Blackwater Broth";PetInfo = "Fly, Vermin";PetJob = 'Warrior'
  1524.                 ReadyMoveOne = 'Somersault';ReadyMoveTwo = 'Cursed Sphere';ReadyMoveThree = 'Venom'
  1525.         elseif state.JugMode.value == 'RedolentCandi' or state.JugMode.value == 'Electrified Broth' then
  1526.                 PetName = "RedolentCandi";JugInfo = "Electrified Broth";PetInfo = "Snapweed, Plantoid";PetJob = 'Warrior'
  1527.                 ReadyMoveOne = 'Tickling Tendrils';ReadyMoveTwo = 'Stink Bomb';ReadyMoveThree = 'Nepenthic Plunge'
  1528.         elseif state.JugMode.value == 'AlluringHoney' or state.JugMode.value == 'Bug-Ridden Broth' then
  1529.                 PetName = "AlluringHoney";JugInfo = "Bug-Ridden Broth";PetInfo = "HQ Snapweed, Plantoid";PetJob = 'Warrior'
  1530.                 ReadyMoveOne = 'Tickling Tendrils';ReadyMoveTwo = 'Stink Bomb';ReadyMoveThree = 'Nectarous Deluge'
  1531.         elseif state.JugMode.value == 'CaringKiyomaro' or state.JugMode.value == 'Fizzy Broth' then
  1532.                 PetName = "CaringKiyomaro";JugInfo = "Fizzy Broth";PetInfo = "Raaz, Beast";PetJob = 'Monk'
  1533.                 ReadyMoveOne = 'Sweeping Gouge';ReadyMoveTwo = 'Zealous Snort';ReadyMoveThree = 'Zealous Snort'
  1534.         elseif state.JugMode.value == 'VivaciousVickie' or state.JugMode.value == 'Tantalizing Broth' or state.JugMode.value == 'Tant. Broth' then
  1535.                 PetName = "VivaciousVickie";JugInfo = "Tant. Broth";PetInfo = "HQ Raaz, Beast";PetJob = 'Monk'
  1536.                 ReadyMoveOne = 'Sweeping Gouge';ReadyMoveTwo = 'Zealous Snort';ReadyMoveThree = 'Zealous Snort'
  1537.         elseif state.JugMode.value == 'HurlerPercival' or state.JugMode.value == 'Pale Sap' then
  1538.                 PetName = "HurlerPercival";JugInfo = "Pale Sap";PetInfo = "Beetle, Vermin";PetJob = 'Paladin'
  1539.                 ReadyMoveOne = 'Power Attack';ReadyMoveTwo = 'Rhino Attack';ReadyMoveThree = 'Hi-Freq Field'
  1540.         elseif state.JugMode.value == 'BlackbeardRandy' or state.JugMode.value == 'Meaty Broth' then
  1541.                 PetName = "BlackbeardRandy";JugInfo = "Meaty Broth";PetInfo = "Tiger, Beast";PetJob = 'Warrior'
  1542.                 ReadyMoveOne = 'Razor Fang';ReadyMoveTwo = 'Claw Cyclone';ReadyMoveThree = 'Roar'
  1543.         elseif state.JugMode.value == 'GenerousArthur' or state.JugMode.value == 'Dire Broth' then
  1544.                 PetName = "GenerousArthur";JugInfo = "Dire Broth";PetInfo = "Slug, Amorph";PetJob = 'Warrior'
  1545.                 ReadyMoveOne = 'Purulent Ooze';ReadyMoveTwo = 'Corrosive Ooze';ReadyMoveThree = 'Corrosive Ooze'
  1546.         elseif state.JugMode.value == 'ThreestarLynn' or state.JugMode.value == 'Muddy Broth' then
  1547.                 PetName = "ThreestarLynn";JugInfo = "Muddy Broth";PetInfo = "Ladybug, Vermin";PetJob = 'Thief'
  1548.                 ReadyMoveOne = 'Spiral Spin';ReadyMoveTwo = 'Sudden Lunge';ReadyMoveThree = 'Noisome Powder'
  1549.         elseif state.JugMode.value == 'BraveHeroGlenn' or state.JugMode.value == 'Wispy Broth' then
  1550.                 PetName = "BraveHeroGlenn";JugInfo = "Wispy Broth";PetInfo = "Frog, Aquan";PetJob = 'Warrior'
  1551.                 ReadyMoveOne = 'None';ReadyMoveTwo = 'None';ReadyMoveThree = 'None'
  1552.         elseif state.JugMode.value == 'SharpwitHermes' or state.JugMode.value == 'Saline Broth' then
  1553.                 PetName = "SharpwitHermes";JugInfo = "Saline Broth";PetInfo = "Mandragora, Plantoid";PetJob = 'Monk'
  1554.                 ReadyMoveOne = 'Head Butt';ReadyMoveTwo = 'Leaf Dagger';ReadyMoveThree = 'Wild Oats'
  1555.         elseif state.JugMode.value == 'ColibriFamiliar' or state.JugMode.value == 'Sugary Broth' then
  1556.                 PetName = "ColibriFamiliar";JugInfo = "Sugary Broth";PetInfo = "Colibri, Bird";PetJob = 'Red Mage'
  1557.                 ReadyMoveOne = 'Pecking Flurry';ReadyMoveTwo = 'Pecking Flurry';ReadyMoveThree = 'Pecking Flurry'
  1558.         elseif state.JugMode.value == 'ChoralLeera' or state.JugMode.value == 'Glazed Broth' then
  1559.                 PetName = "ChoralLeera";JugInfo = "Glazed Broth";PetInfo = "HQ Colibri, Bird";PetJob = 'Red Mage'
  1560.                 ReadyMoveOne = 'Pecking Flurry';ReadyMoveTwo = 'Pecking Flurry';ReadyMoveThree = 'Pecking Flurry'
  1561.         elseif state.JugMode.value == 'SpiderFamiliar' or state.JugMode.value == 'Sticky Webbing' then
  1562.                 PetName = "SpiderFamiliar";JugInfo = "Sticky Webbing";PetInfo = "Spider, Vermin";PetJob = 'Warrior'
  1563.                 ReadyMoveOne = 'Sickle Slash';ReadyMoveTwo = 'Acid Spray';ReadyMoveThree = 'Spider Web'
  1564.         elseif state.JugMode.value == 'GussyHachirobe' or state.JugMode.value == 'Slimy Webbing' then
  1565.                 PetName = "GussyHachirobe";JugInfo = "Slimy Webbing";PetInfo = "HQ Spider, Vermin";PetJob = 'Warrior'
  1566.                 ReadyMoveOne = 'Sickle Slash';ReadyMoveTwo = 'Acid Spray';ReadyMoveThree = 'Spider Web'
  1567.         elseif state.JugMode.value == 'AcuexFamiliar' or state.JugMode.value == 'Poisonous Broth' then
  1568.                 PetName = "AcuexFamiliar";JugInfo = "Poisonous Broth";PetInfo = "Acuex, Amorph";PetJob = 'Black Mage'
  1569.                 ReadyMoveOne = 'Foul Waters';ReadyMoveTwo = 'Pestilent Plume';ReadyMoveThree = 'Pestilent Plume'
  1570.         elseif state.JugMode.value == 'FluffyBredo' or state.JugMode.value == 'Venomous Broth' then
  1571.                 PetName = "FluffyBredo";JugInfo = "Venomous Broth";PetInfo = "HQ Acuex, Amorph";PetJob = 'Black Mage'
  1572.                 ReadyMoveOne = 'Foul Waters';ReadyMoveTwo = 'Pestilent Plume';ReadyMoveThree = 'Pestilent Plume'
  1573.         elseif state.JugMode.value == 'SuspiciousAlice' or state.JugMode.value == 'Furious Broth' then
  1574.                 PetName = "SuspiciousAlice";JugInfo = "Furious Broth";PetInfo = "Eft, Lizard";PetJob = 'Warrior'
  1575.                 ReadyMoveOne = 'Nimble Snap';ReadyMoveTwo = 'Cyclotail';ReadyMoveThree = 'Geist Wall'
  1576.         elseif state.JugMode.value == 'AnklebiterJedd' or state.JugMode.value == 'Crackling Broth' then
  1577.                 PetName = "AnklebiterJedd";JugInfo = "Crackling Broth";PetInfo = "Diremite, Vermin";PetJob = 'Dark Knight'
  1578.                 ReadyMoveOne = 'Double Claw';ReadyMoveTwo = 'Spinning Top';ReadyMoveThree = 'Filamented Hold'
  1579.         elseif state.JugMode.value == 'FleetReinhard' or state.JugMode.value == 'Rapid Broth' then
  1580.                 PetName = "FleetReinhard";JugInfo = "Rapid Broth";PetInfo = "Raptor, Lizard";PetJob = 'Warrior'
  1581.                 ReadyMoveOne = 'Scythe Tail';ReadyMoveTwo = 'Ripper Fang';ReadyMoveThree = 'Chomp Rush'
  1582.         elseif state.JugMode.value == 'CursedAnnabelle' or state.JugMode.value == 'Creepy Broth' then
  1583.                 PetName = "CursedAnnabelle";JugInfo = "Creepy Broth";PetInfo = "Antlion, Vermin";PetJob = 'Warrior'
  1584.                 ReadyMoveOne = 'Mandibular Bite';ReadyMoveTwo = 'Venom Spray';ReadyMoveThree = 'Sandblast'
  1585.         elseif state.JugMode.value == 'SurgingStorm' or state.JugMode.value == 'Insipid Broth' then
  1586.                 PetName = "SurgingStorm";JugInfo = "Insipid Broth";PetInfo = "Apkallu, Bird";PetJob = 'Monk'
  1587.                 ReadyMoveOne = 'Beak Lunge';ReadyMoveTwo = 'Wing Slap';ReadyMoveThree = 'Wing Slap'
  1588.         elseif state.JugMode.value == 'SubmergedIyo' or state.JugMode.value == 'Deepwater Broth' then
  1589.                 PetName = "SubmergedIyo";JugInfo = "Deepwater Broth";PetInfo = "HQ Apkallu, Bird";PetJob = 'Monk'
  1590.                 ReadyMoveOne = 'Beak Lunge';ReadyMoveTwo = 'Wing Slap';ReadyMoveThree = 'Wing Slap'
  1591.         elseif state.JugMode.value == 'MosquitoFamiliar' or state.JugMode.value == 'Wetlands Broth' then
  1592.                 PetName = "MosquitoFamiliar";JugInfo = "Wetlands Broth";PetInfo = "Mosquito, Vermin";PetJob = 'Dark Knight'
  1593.                 ReadyMoveOne = 'Infected Leech';ReadyMoveTwo = 'Gloom Spray';ReadyMoveThree = 'Gloom Spray'
  1594.         elseif state.JugMode.value == 'Left-HandedYoko' or state.JugMode.value == 'Heavenly Broth' then
  1595.                 PetName = "Left-HandedYoko";JugInfo = "Heavenly Broth";PetInfo = "HQ Mosquito, Vermin";PetJob = 'Dark Knight'
  1596.                 ReadyMoveOne = 'Infected Leech';ReadyMoveTwo = 'Gloom Spray';ReadyMoveThree = 'Gloom Spray'
  1597.         end
  1598.  
  1599.     update_display_mode_info()
  1600. end
  1601.  
  1602. -------------------------------------------------------------------------------------------------------------------
  1603. -- Ready Move Presets - Credit to Bomberto
  1604. -------------------------------------------------------------------------------------------------------------------
  1605.  
  1606. function job_self_command(cmdParams, eventArgs)
  1607.     if cmdParams[1]:lower() == 'ready' then
  1608.         ready_move(cmdParams)
  1609.         eventArgs.handled = true
  1610.     end
  1611. end
  1612.  
  1613. function ready_move(cmdParams)
  1614.      local move = cmdParams[2]:lower()
  1615.  
  1616.         if pet.name == 'DroopyDortwin' or pet.name == 'PonderingPeter' or pet.name == 'HareFamiliar' or pet.name == 'KeenearedSteffi' or pet.name == 'LuckyLulush' then
  1617.             if move == 'one' then
  1618.                 send_command('input /pet "Foot Kick" <me>')
  1619.             elseif move == 'two' then
  1620.                 send_command('input /pet "Whirl Claws" <me>')
  1621.             elseif move == 'three' then
  1622.                 send_command('input /pet "Wild Carrot" <me>') end
  1623.         elseif pet.name == 'SunburstMalfik' or pet.name == 'AgedAngus' or pet.name == 'HeraldHenry' or pet.name == 'CrabFamiliar' or pet.name == 'CourierCarrie' then
  1624.             if move == 'one' then
  1625.                 send_command('input /pet "Big Scissors" <me>')
  1626.             elseif move == 'two' then
  1627.                 send_command('input /pet "Scissor Guard" <me>')
  1628.             elseif move == 'three' then
  1629.                 send_command('input /pet "Bubble Curtain" <me>') end
  1630.         elseif pet.name == 'WarlikePatrick' or pet.name == 'LizardFamiliar' or pet.name == 'ColdbloodedComo' or pet.name == 'AudaciousAnna' then
  1631.             if move == 'one' then
  1632.                 send_command('input /pet "Tail Blow" <me>')
  1633.             elseif move == 'two' then
  1634.                 send_command('input /pet "Brain Crush" <me>')
  1635.             elseif move == 'three' then
  1636.                 send_command('input /pet "Fireball" <me>') end
  1637.         elseif pet.name == 'ScissorlegXerin' or pet.name == 'BouncingBertha' then
  1638.             if move == 'one' then
  1639.                 send_command('input /pet "Sensilla Blades" <me>')
  1640.             elseif move == 'two' or move == 'three' then
  1641.                 send_command('input /pet "Tegmina Buffet" <me>') end
  1642.         elseif pet.name == 'RhymingShizuna' or pet.name == 'SheepFamiliar' or pet.name == 'LullabyMelodia' or pet.name == 'NurseryNazuna' then
  1643.             if move == 'one' then
  1644.                 send_command('input /pet "Lamb Chop" <me>')
  1645.             elseif move == 'two' then
  1646.                 send_command('input /pet "Rage" <me>')
  1647.             elseif move == 'three' then
  1648.                 send_command('input /pet "Sheep Song" <me>') end
  1649.         elseif pet.name == 'AttentiveIbuki' or pet.name == 'SwoopingZhivago' then
  1650.             if move == 'one' then
  1651.                 send_command('input /pet "Swooping Frenzy" <me>')
  1652.             elseif move == 'two' then
  1653.                 send_command('input /pet "Pentapeck" <me>')
  1654.             elseif move == 'three' then
  1655.                 send_command('input /pet "Molting Plumage" <me>') end
  1656.         elseif pet.name == 'AmiableRoche' or pet.name == 'TurbidToloi' then
  1657.             if move == 'one' then
  1658.                 send_command('input /pet "Recoil Dive" <me>')
  1659.             elseif move == 'two' then
  1660.                 send_command('input /pet "Water Wall" <me>')
  1661.             elseif move == 'three' then
  1662.                 send_command('input /pet "Intimidate" <me>') end
  1663.         elseif pet.name == 'BrainyWaluis' or pet.name == 'FunguarFamiliar' or pet.name == 'DiscreetLouise' then
  1664.             if move == 'one' then
  1665.                 send_command('input /pet "Frogkick" <me>')
  1666.             elseif move == 'two' then
  1667.                 send_command('input /pet "Spore" <me>')
  1668.             elseif move == 'three' then
  1669.                 send_command('input /pet "Silence Gas" <me>') end              
  1670.         elseif pet.name == 'HeadbreakerKen' or pet.name == 'MayflyFamiliar' or pet.name == 'ShellbusterOrob' or pet.name == 'MailbusterCetas' then
  1671.             if move == 'one' then
  1672.                 send_command('input /pet "Somersault" <me>')  
  1673.             elseif move == 'two' then
  1674.                 send_command('input /pet "Cursed Sphere" <me>')
  1675.             elseif move == 'three' then
  1676.                 send_command('input /pet "Venom" <me>') end                
  1677.         elseif pet.name == 'RedolentCandi' or pet.name == 'AlluringHoney' then
  1678.             if move == 'one' then
  1679.                 send_command('input /pet "Tickling Tendrils" <me>')
  1680.             elseif move == 'two' then
  1681.                 send_command('input /pet "Stink Bomb" <me>')
  1682.             elseif move == 'three' then
  1683.                 send_command('input /pet "Nectarous Deluge" <me>') end
  1684.         elseif pet.name == 'CaringKiyomaro' or pet.name == 'VivaciousVickie' then
  1685.             if move == 'one' then
  1686.                 send_command('input /pet "Sweeping Gouge" <me>')
  1687.             elseif move == 'two' or move == 'three' then
  1688.                 send_command('input /pet "Zealous Snort" <me>') end
  1689.         elseif pet.name == 'HurlerPercival' or pet.name == 'BeetleFamiliar' or pet.name == 'PanzerGalahad' then
  1690.             if move == 'one' then
  1691.                 send_command('input /pet "Power Attack" <me>')
  1692.             elseif move == 'two' then
  1693.                 send_command('input /pet "Rhino Attack" <me>')
  1694.             elseif move == 'three' then
  1695.                 send_command('input /pet "Hi-Freq Field" <me>') end
  1696.         elseif pet.name == 'BlackbeardRandy' or pet.name == 'TigerFamiliar' or pet.name == 'SaberSiravarde' or pet.name == 'GorefangHobs' then
  1697.             if move == 'one' then
  1698.                 send_command('input /pet "Razor Fang" <me>')
  1699.             elseif move == 'two' then
  1700.                 send_command('input /pet "Claw Cyclone" <me>')
  1701.             elseif move == 'three' then
  1702.                 send_command('input /pet "Roar" <me>') end
  1703.         elseif pet.name == 'ColibriFamiliar' or pet.name == 'ChoralLeera' then
  1704.             if move == 'one' or move == 'two' or move == 'three' then
  1705.                 send_command('input /pet "Pecking Flurry" <me>') end
  1706.         elseif pet.name == 'SpiderFamiliar' or pet.name == 'GussyHachirobe' then
  1707.             if move == 'one' then
  1708.                 send_command('input /pet "Sickle Slash" <me>')
  1709.             elseif move == 'two' then
  1710.                 send_command('input /pet "Acid Spray" <me>')
  1711.             elseif move == 'three' then
  1712.                 send_command('input /pet "Spider Web" <me>') end
  1713.         elseif pet.name == 'GenerousArthur' or pet.name == 'GooeyGerard' then
  1714.             if move == 'one' then
  1715.                 send_command('input /pet "Purulent Ooze" <me>')
  1716.             elseif move == 'two' or move == 'three' then
  1717.                 send_command('input /pet "Corrosive Ooze" <me>') end
  1718.         elseif pet.name == 'ThreestarLynn' or pet.name == 'DipperYuly' then
  1719.             if move == 'one' then
  1720.                 send_command('input /pet "Spiral Spin" <me>')
  1721.             elseif move == 'two' then
  1722.                 send_command('input /pet "Sudden Lunge" <me>')
  1723.             elseif move == 'three' then
  1724.                 send_command('input /pet "Noisome Powder" <me>') end
  1725.         elseif pet.name == 'SharpwitHermes' or pet.name == 'FlowerpotBill' or pet.name == 'FlowerpotBen' or pet.name == 'Homunculus' or pet.name == 'FlowerpotMerle' then
  1726.             if move == 'one' then
  1727.                 send_command('input /pet "Head Butt" <me>')
  1728.             elseif move == 'two' then
  1729.                 send_command('input /pet "Leaf Dagger" <me>')
  1730.             elseif move == 'three' then
  1731.                 send_command('input /pet "Wild Oats" <me>') end
  1732.         elseif pet.name == 'AcuexFamiliar' or pet.name == 'FluffyBredo' then
  1733.             if move == 'one' then
  1734.                 send_command('input /pet "Foul Waters" <me>')
  1735.             elseif move == 'two' or move == 'three' then
  1736.                 send_command('input /pet "Pestilent Plume" <me>') end
  1737.         elseif pet.name == 'FlytrapFamiliar' or pet.name == 'VoraciousAudrey' or pet.name == 'PrestoJulio' then
  1738.             if move == 'one' then
  1739.                 send_command('input /pet "Soporific" <me>')
  1740.             elseif move == 'two' then
  1741.                 send_command('input /pet "Palsy Pollen" <me>')
  1742.             elseif move == 'three' then
  1743.                 send_command('input /pet "Gloeosuccus" <me>') end
  1744.         elseif pet.name == 'EftFamiliar' or pet.name == 'AmbusherAllie' or pet.name == 'BugeyedBroncha' or pet.name == 'SuspiciousAlice' then
  1745.             if move == 'one' then
  1746.                 send_command('input /pet "Nimble Snap" <me>')
  1747.             elseif move == 'two' then
  1748.                 send_command('input /pet "Cyclotail" <me>')
  1749.             elseif move == 'three' then
  1750.                 send_command('input /pet "Geist Wall" <me>') end
  1751.         elseif pet.name == 'AntlionFamiliar' or pet.name == 'ChopsueyChucky' or pet.name == 'CursedAnnabelle' then
  1752.             if move == 'one' then
  1753.                 send_command('input /pet "Mandibular Bite" <me>')
  1754.             elseif move == 'two' then
  1755.                 send_command('input /pet "Venom Spray" <me>')
  1756.             elseif move == 'three' then
  1757.                 send_command('input /pet "Sandblast" <me>') end
  1758.         elseif pet.name == 'MiteFamiliar' or pet.name == 'LifedrinkerLars' or pet.name == 'AnklebiterJedd' then
  1759.             if move == 'one' then
  1760.                 send_command('input /pet "Double Claw" <me>')
  1761.             elseif move == 'two' then
  1762.                 send_command('input /pet "Spinning Top" <me>')
  1763.             elseif move == 'three' then
  1764.                 send_command('input /pet "Filamented Hold" <me>') end
  1765.         elseif pet.name == 'AmigoSabotender' then
  1766.             if move == 'one' then
  1767.                 send_command('input /pet "Needleshot" <me>')
  1768.             elseif move == 'two' or move == 'three' then
  1769.                 send_command('input /pet "??? Needles" <me>') end
  1770.         elseif pet.name == 'CraftyClyvonne' or pet.name == 'BloodclawShashra' then
  1771.             if move == 'one' then
  1772.                 send_command('input /pet "Chaotic Eye" <me>')
  1773.             elseif move == 'two' then
  1774.                 send_command('input /pet "Blaster" <me>')
  1775.             elseif move == 'three' then
  1776.                 send_command('input /pet "Charged Whisker" <me>') end
  1777.         elseif pet.name == 'SwiftSieghard' or pet.name == 'FleetReinhard' then
  1778.             if move == 'one' then
  1779.                 send_command('input /pet "Scythe Tail" <me>')
  1780.             elseif move == 'two' then
  1781.                 send_command('input /pet "Ripper Fang" <me>')
  1782.             elseif move == 'three' then
  1783.                 send_command('input /pet "Chomp Rush" <me>') end
  1784.         elseif pet.name == 'DapperMac' or pet.name == 'SurgingStorm' or pet.name == 'SubmergedIyo' then
  1785.             if move == 'one' then
  1786.                 send_command('input /pet "Beak Lunge" <me>')
  1787.             elseif move == 'two' or move == 'three' then
  1788.                 send_command('input /pet "Wing Slap" <me>') end
  1789.         elseif pet.name == 'FatsoFargann' then
  1790.             if move == 'one' then
  1791.                 send_command('input /pet "Suction" <me>')
  1792.             elseif move == 'two' then
  1793.                 send_command('input /pet "Acid Mist" <me>')
  1794.             elseif move == 'three' then
  1795.                 send_command('input /pet "Drain Kiss" <me>') end
  1796.         elseif pet.name == 'FaithfulFalcorr' then
  1797.             if move == 'one' then
  1798.                 send_command('input /pet "Back Heel" <me>')
  1799.             elseif move == 'two' then
  1800.                 send_command('input /pet "Choke Breath" <me>')
  1801.             elseif move == 'three' then
  1802.                 send_command('input /pet "Fantod" <me>') end
  1803.         elseif pet.name == 'CrudeRaphie' then
  1804.             if move == 'one' then
  1805.                 send_command('input /pet "Tortoise Stomp" <me>')  
  1806.             elseif move == 'two' then
  1807.                 send_command('input /pet "Harden Shell" <me>')
  1808.             elseif move == 'three' then
  1809.                 send_command('input /pet "Aqua Breath" <me>') end
  1810.         elseif pet.name == 'MosquitoFamilia' or pet.name == 'Left-HandedYoko' then
  1811.             if move == 'one' then
  1812.                 send_command('input /pet "Infected Leech" <me>')
  1813.             elseif move == 'two' or move == 'three' then
  1814.                 send_command('input /pet "Gloom Spray" <me>') end
  1815.     end
  1816. end
  1817.  
  1818. -- Updates gear based on pet status changes.
  1819. function job_pet_status_change(newStatus, oldStatus, eventArgs)
  1820.     if newStatus == 'Idle' or newStatus == 'Engaged' then
  1821.         handle_equipping_gear(player.status)
  1822.     end
  1823.     if pet.hpp == 0 then
  1824.         clear_pet_buff_timers()
  1825.     end
  1826. end
  1827.  
  1828. -- Set eventArgs.handled to true if we don't want the automatic display to be run.
  1829. function display_current_job_state(eventArgs)
  1830.     local msg = 'Melee'
  1831.    
  1832.     if state.CombatForm.has_value then
  1833.         msg = msg .. ' (' .. state.CombatForm.value .. ')'
  1834.     end
  1835.    
  1836.     msg = msg .. ': '
  1837.    
  1838.     msg = msg .. state.OffenseMode.value
  1839.     if state.HybridMode.value ~= 'Normal' then
  1840.         msg = msg .. '/' .. state.HybridMode.value
  1841.     end
  1842.     msg = msg .. ', WS: ' .. state.WeaponskillMode.value
  1843.    
  1844.     if state.DefenseMode.value ~= 'None' then
  1845.         msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
  1846.     end
  1847.    
  1848.     if state.Kiting.value then
  1849.         msg = msg .. ', Kiting'
  1850.     end
  1851.  
  1852.     msg = msg .. ', Reward: '..state.RewardMode.value..', Corr.: '..state.CorrelationMode.value
  1853.  
  1854.     if state.JugMode.value ~= 'None' then
  1855.         add_to_chat(8,'-- Jug Pet: '.. PetName ..' -- Jug: '.. JugInfo ..' -- (Pet Info: '.. PetInfo ..', '.. PetJob ..')')
  1856.     end
  1857.  
  1858.     add_to_chat(28,'Ready Moves: 1.'.. ReadyMoveOne ..'  2.'.. ReadyMoveTwo ..'  3.'.. ReadyMoveThree ..'')
  1859.     add_to_chat(122, msg)
  1860.  
  1861.     eventArgs.handled = true
  1862. end
  1863.  
  1864. -------------------------------------------------------------------------------------------------------------------
  1865. -- Utility functions specific to this job.
  1866. -------------------------------------------------------------------------------------------------------------------
  1867.  
  1868. function get_combat_form()
  1869.     if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
  1870.         state.CombatForm:set('DW')
  1871.     else
  1872.         state.CombatForm:reset()
  1873.     end
  1874. end
  1875.  
  1876. function pet_buff_timer(spell)
  1877.     if spell.english == 'Reward' then
  1878.         send_command('timers c "Pet: Regen" 180 down '..RewardRegenIcon..'')
  1879.     elseif spell.english == 'Spur' then
  1880.         send_command('timers c "Pet: Spur" 90 down '..SpurIcon..'')
  1881.     elseif spell.english == 'Run Wild' then
  1882.         send_command('timers c "'..spell.english..'" '..RunWildDuration..' down '..RunWildIcon..'')
  1883.     end
  1884. end
  1885.  
  1886. function clear_pet_buff_timers()
  1887.     send_command('timers c "Pet: Regen" 0 down '..RewardRegenIcon..'')
  1888.     send_command('timers c "Pet: Spur" 0 down '..SpurIcon..'')
  1889.     send_command('timers c "Run Wild" 0 down '..RunWildIcon..'')
  1890. end
  1891.  
  1892. function display_mode_info()
  1893.     if DisplayModeInfo == 'true' then
  1894.         send_command('text AccuracyText create Accuracy Mode: Normal')
  1895.         send_command('text AccuracyText pos '..TextBoxX..' '..TextBoxY..'')
  1896.         send_command('text AccuracyText size '..TextSize..'')
  1897.         TextBoxY = TextBoxY + (TextSize + 6)
  1898.         send_command('text CorrelationText create Correlation Mode: Neutral')
  1899.         send_command('text CorrelationText pos '..TextBoxX..' '..TextBoxY..'')
  1900.         send_command('text CorrelationText size '..TextSize..'')
  1901.         TextBoxY = TextBoxY + (TextSize + 6)
  1902.         send_command('text PetModeText create Pet Mode: PetOnly')
  1903.         send_command('text PetModeText pos '..TextBoxX..' '..TextBoxY..'')
  1904.         send_command('text PetModeText size '..TextSize..'')
  1905.         TextBoxY = TextBoxY + (TextSize + 6)
  1906.         send_command('text JugPetText create Jug Mode: Meaty Broth')
  1907.         send_command('text JugPetText pos '..TextBoxX..' '..TextBoxY..'')
  1908.         send_command('text JugPetText size '..TextSize..'')
  1909.     end
  1910. end
  1911.  
  1912. function update_display_mode_info()
  1913.     if DisplayModeInfo == 'true' then
  1914.         send_command('text AccuracyText text Acc. Mode: '..state.OffenseMode.value..'')
  1915.         send_command('text CorrelationText text Corr. Mode: '..state.CorrelationMode.value..'')
  1916.         send_command('text PetModeText text Pet Mode: '..state.PetMode.value..'')
  1917.         send_command('text JugPetText text Jug Mode: '..state.JugMode.value..'')
  1918.     end
  1919. end
  1920.  
  1921. function get_melee_groups()
  1922.     classes.CustomMeleeGroups:clear()
  1923.  
  1924.     if buffactive['Aftermath: Lv.3'] then
  1925.         classes.CustomMeleeGroups:append('Aftermath')
  1926.     end
  1927. end
Add Comment
Please, Sign In to add comment