Advertisement
Guest User

Untitled

a guest
Dec 13th, 2016
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 14.29 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------------------------
  2. -- Initialization function that defines sets and variables to be used.
  3. -------------------------------------------------------------------------------------------------------------------
  4.  
  5. -- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
  6.  
  7. -- Initialization function for this job file.
  8. function get_sets()
  9.   mote_include_version = 2
  10.   -- Load and initialize the include file.
  11.   include('Mote-Include.lua')
  12. end
  13.  
  14. include('organizer-lib')
  15. -- Setup vars that are user-independent.
  16. function job_setup()
  17.   -- List of pet weaponskills to check for
  18.   petWeaponskills = S{"Slapstick", "Knockout", "Magic Mortar",
  19.     "Chimera Ripper", "String Clipper",  "Cannibal Blade", "Bone Crusher", "String Shredder",
  20.     "Arcuballista", "Daze", "Armor Piercer", "Armor Shatterer"}
  21.  
  22.   -- Map automaton heads to combat roles
  23.   petModes = {
  24.     ['Harlequin Head'] = 'Melee',
  25.     ['Sharpshot Head'] = 'Ranged',
  26.     ['Valoredge Head'] = 'Tank',
  27.     ['Stormwaker Head'] = 'Magic',
  28.     ['Soulsoother Head'] = 'Tank',
  29.     ['Spiritreaver Head'] = 'Nuke'
  30.     }
  31.  
  32.   -- Subset of modes that use magic
  33.   magicPetModes = S{'Nuke','Heal','Magic'}
  34.  
  35.   -- Var to track the current pet mode.
  36.   state.PetMode = M{['description']='Pet Mode', 'None', 'Melee', 'Ranged', 'Tank', 'Magic', 'Heal', 'Nuke'}
  37.  
  38.   include('Mote-TreasureHunter')
  39. end
  40.  
  41.  
  42. -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
  43. function user_setup()
  44.   -- Options: Override default values
  45.   state.OffenseMode:options('Normal', 'Acc', 'Fodder')
  46.   state.WeaponskillMode:options('Normal', 'Acc', 'Fodder')
  47.   state.PhysicalDefenseMode:options('PDT', 'Evasion', "Pulling")
  48.   state.MagicalDefenseMode:options('MDT')
  49.  
  50.   send_command('bind ^= gs c cycle treasuremode')
  51.  
  52.   update_pet_mode()
  53.   select_default_macro_book()
  54. end
  55.  
  56.  
  57. -- Define sets used by this job file.
  58. function init_gear_sets()
  59.  
  60. sets.Organizer = {
  61.         main="Animator P",
  62.         sub="Eminent Animator II",
  63.         neck="Midnights",
  64.         body="Ohtas",
  65.  
  66.     }
  67.  
  68.  
  69.   sets.TreasureHunter = {waist="Chaac Belt"}
  70.   -- Precast Sets
  71.  
  72.   -- Fast cast sets for spells
  73.   sets.precast.FC = {
  74.     head="Rawhide Mask",neck="Orunmila's Torque",ear1="Loquacious Earring",
  75.     body="Anhur Robe",ring1="Veneficium Ring",ring2="Prolix Ring",
  76.     back="Swith Cape",waist="Hurch'lan Sash",feet="Regal Pumps +1"
  77.   }
  78.  
  79.   sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
  80.  
  81.  
  82.   -- Precast sets to enhance JAs
  83.   sets.precast.JA['Tactical Switch'] = {feet="Karagoz Scarpe +1"}
  84.  
  85.   sets.precast.JA['Repair'] = {
  86.     ammo="Automaton Oil +3",
  87.     ear1="Guignol Earring",ear2="Pratik Earring",
  88.     legs="Desultor Tassets",feet="Foire Bab. +1"
  89.   }
  90.  
  91.   sets.precast.JA['Maintenance'] = {ammo="Automaton Oil"}
  92.  
  93.   sets.precast.JA.Maneuver = {neck="Buffoon's Collar",ear2="Burana Earring",body="Karagoz Farsetto",hands="Puppetry Dastanas",back="Visucius's Mantle"}
  94.  
  95.   -- Waltz set (chr and vit)
  96.   sets.precast.Waltz = {
  97.     ear1="Roundel Earring",
  98.     body="Pitre Tobe +1",hands="Regimen Mittens",ring1="Spiral Ring",
  99.     back="Refraction Cape",legs="Naga Hakama",feet="Dance Shoes"}
  100.  
  101.   -- Don't need any special gear for Healing Waltz.
  102.   sets.precast.Waltz['Healing Waltz'] = {}
  103.  
  104.  
  105.   -- Weaponskill sets
  106.   -- Default set for any weaponskill that isn't any more specifically defined
  107.   sets.precast.WS = {
  108.     neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  109.     ring1="Rajas Ring",ring2="Epona's Ring",
  110.     back="Dispersal Mantle",waist="Fotia Belt",legs="Samnuha Tights",}
  111.  
  112.   -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
  113.   sets.precast.WS['Stringing Pummel'] = set_combine(sets.precast.WS, {
  114.     ear1="Brutal Earring",ear2="Moonshade Earring",
  115.     ring1="Spiral Ring"})
  116.  
  117.   sets.precast.WS['Victory Smite'] = set_combine(sets.precast.WS, {
  118.     ear1="Brutal Earring",ear2="Moonshade Earring",
  119.     ring1="Pyrosoul Ring"})
  120.  
  121.   -- Midcast Sets
  122.  
  123.   -- Midcast sets for pet actions
  124.   sets.midcast.Pet.Cure = {
  125.     head="Naga Somen",
  126.     body="Naga Samue",hands="Regimen Mittens",ring1="Kunaji Ring",ring2="Thurandaut Ring",
  127.     back="Refraction Cape",waist="Ukko Sash",legs="Naga Hakama",feet="Foire Bab. +1"}
  128.  
  129.   sets.midcast.Pet['Elemental Magic'] = {
  130.     head="Rawhide Mask",
  131.     neck="Deino Collar",
  132.     ear1="Charivari Earring",
  133.     ear2="Burana Earring",
  134.     hands="Naga Tekko",
  135.     ring1="",
  136.     ring2="Thurandaut Ring",
  137.     back="Argochampsa Mantle",
  138.     waist="Ukko Sash",
  139.     legs={ name="Herculean Trousers", augments={'Pet: "Mag.Atk.Bns."+29','Pet: "Store TP"+5','Pet: INT+10','Pet: Attack+9 Pet: Rng.Atk.+9',}},
  140.     feet={ name="Herculean Boots", augments={'Pet: "Mag.Atk.Bns."+23','Pet: "Dbl.Atk."+1 Pet: Crit.hit rate +1','Pet: INT+7','Pet: Attack+12 Pet: Rng.Atk.+12',}},}
  141.  
  142.   sets.midcast.Pet.WeaponSkill = {
  143.     head="Karagoz Capello +1",neck="Empath Necklace",ear1="Charivari Earring",ear2="Burana Earring",
  144.     body="Pitre Tobe +1",hands="Karagoz Guanti +1",ring1="Overbearing Ring",ring2="Thurandaut Ring",
  145.     back="Dispersal Mantle",waist="Ukko Sash",legs="Karaggoz Pantaloni +1",feet="Naga Kyahan"}
  146.  
  147.  
  148.   -- Sets to return to when not performing an action.
  149.  
  150.   -- Resting sets
  151.   sets.resting = {
  152.     head="Pitre Taj +1",neck="Wiglen Gorget",ear1="Infused Earring",ear2="Burana Earring",
  153.     ring1="Sheltered Ring",ring2="Paguroidea Ring",
  154.     back="Contriver's Cape"}
  155.  
  156.   -- Idle sets
  157.   sets.idle = {
  158.     ammo="Automat. Oil +3",
  159.     head="Rao Kabuto",neck="Wiglen Gorget",ear1="Infused Earring",ear2="Burana Earring",
  160.     body="Rao Togi", hands="Rao Kote",ring1="Sheltered Ring",ring2="Paguroidea Ring",
  161.     back="Mecistopins Mantle",waist="Lycopodium Sash",legs="Rao Haidate",feet="Hermes' Sandals"}
  162.  
  163.     sets.idle.PDT = {
  164.     main="Earth Staff",
  165.     head="Rao Kabuto",neck="Twilight Torque",ear1="Heartseeker Earring",
  166.     body="Qaaxo Harness",hands="Rao Kote", ring1="Defending Ring",ring2="Dark Ring",
  167.     back="Cheviot Cape",waist="Flume Belt",legs=="Rao Haidate", feet="Hermes' Sandals",
  168.   }
  169.  
  170.   -- Set for idle while pet is out (eg: pet regen gear)
  171.   sets.idle.Pet = set_combine(sets.idle, {neck="Empath Necklace",ring2="Thurandaut Ring",back="Mecistopins Mantle",waist="Isa Belt"})
  172.   sets.idle.PDT.Pet = sets.idle.PDT
  173.   -- Idle sets to wear while pet is engaged
  174.   sets.idle.Pet.Engaged = {
  175.     range="Animator P",
  176.     ammo="Automat. Oil +3",
  177.     head="Tali'ah Turban +1",
  178.     body="Tali'ah Manteel +1",
  179.     hands="Tali'ah Gages +1",
  180.     legs="Tali'ah Seraweels +1",
  181.     feet="Tali'ah Crackows +1",
  182.     neck="Empath Necklace",
  183.     waist="Hurch'lan Sash",
  184.     left_ear="Zennaroi Earring",
  185.     right_ear="Steelflash Earring",
  186.     left_ring="Overbearing Ring",
  187.     right_ring="Paguroidea Ring",
  188.     back={ name="Visucius's Mantle", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+20 Attack+20','Pet: Haste+10',}}
  189.     }
  190.  
  191.   sets.idle.Pet.Engaged.Ranged = {
  192.       main={ name="Ohtas", augments={'Accuracy+70','Pet: Accuracy+70','Pet: Haste+10%',}},
  193.       range="Animator P",
  194.       ammo="Automat. Oil +3",
  195.       head="Tali'ah Turban +1",
  196.       body="Tali'ah Manteel +1",
  197.       hands="Tali'ah Gages +1",
  198.       legs="Tali'ah Seraweels +1",
  199.       feet="Tali'ah Crackows +1",
  200.       neck="Empath Necklace",
  201.       waist="Incarnation Sash",
  202.       left_ear="Domesticator's Earring",
  203.       right_ear="Rimeice Earring",
  204.       left_ring="Varar Ring",
  205.       right_ring="Varar Ring",
  206.       back={ name="Visucius's Mantle", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+20 Attack+20','Pet: Haste+10',}},
  207.     }
  208.   sets.idle.Pet.Engaged.Nuke = set_combine(sets.idle.Pet.Engaged, {legs="Karaggoz Pantaloni +1",feet="Pitre Babouches +1"})
  209.   sets.idle.Pet.Engaged.Magic = sets.idle.Pet.Engaged
  210.  
  211.     sets.idle.Pet.Engaged.Tank = {
  212.       ammo="Automat. Oil +3",
  213.     head="Rao Kabuto",
  214.     body="Rao Togi",
  215.     hands="Rao Kote",
  216.     legs="Rao Haidate",
  217.     feet="Rao Sune-Ate",
  218.     neck="Empath Necklace",
  219.     waist="Isa Belt",
  220.     left_ear="Domesticator's Earring",
  221.     right_ear="Handler's Earring +1",
  222.     left_ring="Varar Ring",
  223.     right_ring="Varar Ring",
  224.     back="Visucius's Mantle",}
  225.  
  226.  
  227.   -- Engaged sets
  228.  
  229.   -- Variations for TP weapon and (optional) offense/defense modes.  Code will fall back on previous
  230.   -- sets if more refined versions aren't defined.
  231.   -- If you create a set with both offense and defense modes, the offense mode should be first.
  232.   -- EG: sets.engaged.Dagger.Accuracy.Evasion
  233. sets.inwkr = {
  234.         neck="Ygnas's Resolve +1"}
  235.   -- Normal melee group
  236.   sets.engaged = {
  237.     head="Tali'ah Turban +1",
  238.     body="Tali'ah Manteel +1",
  239.     hands="Tali'ah gages +1",
  240.     legs="Samnuha Tights",
  241.     feet={ name="Herculean Boots", augments={'Accuracy+28','"Triple Atk."+3','Attack+15',}},
  242.     neck="Clotharius Torque",
  243.     waist="Grunfeld Rope",
  244.     left_ear="Bladeborn Earring",
  245.     right_ear="Steelflash Earring",
  246.     left_ring="Apate Ring",
  247.     right_ring="Cacoethic Ring",
  248.     back={ name="Visucius's Mantle", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Accuracy+20 Attack+20','Pet: Haste+10',}},
  249.     }
  250.  
  251.   sets.engaged.Acc = set_combine(sets.engaged, {
  252.   })
  253.  
  254. end
  255.  
  256.  
  257. -------------------------------------------------------------------------------------------------------------------
  258. -- Job-specific hooks that are called to process player actions at specific points in time.
  259. -------------------------------------------------------------------------------------------------------------------
  260.  
  261. -- Called when player is about to perform an action
  262. function job_precast(spell, action, spellMap, eventArgs)
  263.   custom_aftermath_timers_precast(spell)
  264. end
  265.  
  266. function job_aftercast(spell, action, spellMap, eventArgs)
  267.   custom_aftermath_timers_aftercast(spell)
  268. end
  269.  
  270. -- Called when pet is about to perform an action
  271. function job_pet_midcast(spell, action, spellMap, eventArgs)
  272.   if petWeaponskills:contains(spell.english) then
  273.     classes.CustomClass = "Weaponskill"
  274.   end
  275. end
  276.  
  277.  
  278. -------------------------------------------------------------------------------------------------------------------
  279. -- General hooks for other game events.
  280. -------------------------------------------------------------------------------------------------------------------
  281.  
  282. -- Called when a player gains or loses a buff.
  283. -- buff == buff gained or lost
  284. -- gain == true if the buff was gained, false if it was lost.
  285. function job_buff_change(buff, gain)
  286.   if buff == 'Wind Maneuver' then
  287.     handle_equipping_gear(player.status)
  288.   end
  289. end
  290.  
  291. -- Called when a player gains or loses a pet.
  292. -- pet == pet gained or lost
  293. -- gain == true if the pet was gained, false if it was lost.
  294. function job_pet_change(pet, gain)
  295.   update_pet_mode()
  296. end
  297.  
  298. -- Called when the pet's status changes.
  299. function job_pet_status_change(newStatus, oldStatus)
  300.   if newStatus == 'Engaged' then
  301.     display_pet_status()
  302.   end
  303. end
  304. if buffactive["reive mark"] then
  305.         equip(sets.inwkr)
  306. end
  307.  
  308. -------------------------------------------------------------------------------------------------------------------
  309. -- User code that supplements self-commands.
  310. -------------------------------------------------------------------------------------------------------------------
  311.  
  312. -- Called for custom player commands.
  313. function job_self_command(cmdParams, eventArgs)
  314.   if cmdParams[1] == 'maneuver' then
  315.     if pet.isvalid then
  316.       local man = defaultManeuvers[state.PetMode]
  317.       if man and tonumber(cmdParams[2]) then
  318.         man = man[tonumber(cmdParams[2])]
  319.       end
  320.  
  321.       if man then
  322.         send_command('input /pet "'..man..'" <me>')
  323.       end
  324.     else
  325.       add_to_chat(123,'No valid pet.')
  326.     end
  327.   end
  328. end
  329.  
  330.  
  331. -- Called by the 'update' self-command, for common needs.
  332. -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
  333. function job_update(cmdParams, eventArgs)
  334.   update_pet_mode()
  335. end
  336.  
  337.  
  338. -- Set eventArgs.handled to true if we don't want the automatic display to be run.
  339. function display_current_job_state(eventArgs)
  340.   local defenseString = ''
  341.   if state.Defense.Active then
  342.     local defMode = state.Defense.PhysicalMode
  343.     if state.Defense.Type == 'Magical' then
  344.       defMode = state.Defense.MagicalMode
  345.     end
  346.  
  347.     defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
  348.   end
  349.  
  350.   add_to_chat(122,'Melee: '..state.OffenseMode..'/'..state.DefenseMode..', WS: '..state.WeaponskillMode..', '..defenseString..
  351.     'Kiting: '..on_off_names[state.Kiting])
  352.  
  353.   display_pet_status()
  354.  
  355.   eventArgs.handled = true
  356. end
  357.  
  358.  
  359. -------------------------------------------------------------------------------------------------------------------
  360. -- Utility functions specific to this job.
  361. -------------------------------------------------------------------------------------------------------------------
  362.  
  363. -- Get the pet mode value based on the equipped head of the automaton.
  364. -- Returns nil if pet is not valid.
  365. function get_pet_mode()
  366.   if pet.isvalid then
  367.     return petModes[pet.head] or 'None'
  368.   else
  369.     return 'None'
  370.   end
  371. end
  372.  
  373. -- Update state.PetMode, as well as functions that use it for set determination.
  374. function update_pet_mode()
  375.   state.PetMode:set(get_pet_mode())
  376.   update_custom_groups()
  377. end
  378.  
  379. -- Update custom groups based on the current pet.
  380. function update_custom_groups()
  381.   classes.CustomIdleGroups:clear()
  382.   if pet.isvalid then
  383.     classes.CustomIdleGroups:append(state.PetMode.value)
  384.   end
  385. end
  386.  
  387. -- Display current pet status.
  388. function display_pet_status()
  389.   if pet.isvalid then
  390.     local petInfoString = pet.name..' ['..pet.head..']: '..tostring(pet.status)..'  TP='..tostring(pet.tp)..'  HP%='..tostring(pet.hpp)
  391.  
  392.     if magicPetModes:contains(state.PetMode) then
  393.       petInfoString = petInfoString..'  MP%='..tostring(pet.mpp)
  394.     end
  395.  
  396.     add_to_chat(122,petInfoString)
  397.   end
  398. end
  399.  
  400. -- Select default macro book on initial load or subjob change.
  401. function select_default_macro_book()
  402.   -- Default macro set/book
  403.   if player.sub_job == 'DNC' then
  404.     set_macro_page(1, 13)
  405.   elseif player.sub_job == 'NIN' then
  406.     set_macro_page(1, 13)
  407.   elseif player.sub_job == 'THF' then
  408.     set_macro_page(1, 13)
  409.   else
  410.     set_macro_page(1, 13)
  411.   end
  412. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement