Advertisement
shadowmeld

THF.lua v 1.1

Dec 18th, 2013
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.58 KB | None | 0 0
  1. --require 'stringhelper'
  2. --require 'tablehelper'
  3.  
  4. function get_sets()
  5.  
  6.     -- Static Sets
  7.     sets.Iuitl = {head = "Iuitl Headgear", legs = "Iuitl Tights", feet = "Iuitl Gaiters"}
  8.    
  9.     sets.Haste = set_combine(sets.Iuitl, {range = "Raider's Bmrng.", ear1 = "Suppanomimi", body = "Thaumas Coat", waist = "Twilight Belt"})
  10.    
  11.     sets.Regen = {neck = "Orochi Nodowa"}
  12.    
  13.     sets.TH = {hands = "Asn. Armlets +2", feet = "Raid. Poulaines +2"}
  14.    
  15.     sets.Kite = {feet = "Fajin Boots"}
  16.    
  17.     sets.DEX = set_combine(sets.Iuitl, {neck = "Spike Necklace",
  18.                                                                             body = "Loki's Kaftan", hands = "Raid. Armlets", ring1 = "Rajas Ring", ring2 = "Airy Ring",
  19.                                                                             waist = "Cuchulain's Belt", legs = "Hecatomb Subligar"})
  20.    
  21.     sets.AGI = set_combine(sets.Iuitl, {neck = "Houyi's Gorget",
  22.                                                                             body = "Loki's Kaftan", hands = "Thaumas Gloves", ring1 = "Rajas Ring", ring2 = "Solemn Ring",
  23.                                                                             waist = "Cuchulain's Belt"})
  24.                                                                            
  25.     sets.JA = {}
  26.     sets.JA.Steal = {head = "Rogue's Bonnet", hands = "Rog. Armlets + 1", waist = "Key Ring Belt", legs = "Assassin's Culottes", feet = "Rogue's Poulaines"}
  27.     sets.JA.Despoil = {legs = "Raid. Culottes +2", feet = "Raid. Poulaines +2"}
  28.     sets.JA.Accomplice = {head = "Raid. Bonnet +2"}
  29.     sets.JA.Collaborator = sets.JA.Accomplice
  30.     sets.JA.Conspirator = {body = "Raider's Vest +2"}
  31.     sets.JA.Flee = {feet = "Rogue's Poulaines"}
  32.    
  33.     sets.DT = {neck = "Twilight Torque"}
  34.     sets.PDT = set_combine(sets.DT, {})
  35.     sets.MDT = set_combine(sets.DT, {})
  36.     -- Static Sets
  37.  
  38.     -- Dynamic Sets
  39.     Weapon_Set = "Default"
  40.     Weapon_Set_Toggles = T{ "Default", "Dagger", "Sword", "Club", "Staff" }
  41.     sets.Weapons = {}
  42.     sets.Weapons.Default = {main = "Eminent Dagger", sub = "Leisilonu +1"}
  43.     sets.Weapons.Dagger = {main = "Thokcha", sub = "Thief's Knife"}
  44.     sets.Weapons.Sword = {main = "Mailbreaker", sub = "Thief's Knife"}
  45.     sets.Weapons.Club = {main = "Shellbuster", sub = "Thief's Knife"}
  46.     sets.Weapons.Staff = {main = "Earth Staff", sub = "Pole Grip", ear1 = "Ethereal Earring"}
  47.     sets.Weapons.Master = sets.Weapons[Weapon_Set]
  48.    
  49.     optional_toggles = {}
  50.    
  51.     optional_toggles.Engaged = T{['PDT'] = 0, ['MDT'] = 0, ['Kite'] = 0, ['TH'] = 0}
  52.     sets.Engaged = {}
  53.     sets.Engaged.Default = {}
  54.     sets.Engaged.Master = {}
  55.    
  56.     optional_toggles.Idle = T{['Regen'] = 1, ['PDT'] = 0, ['MDT'] = 0, ['Kite'] = 1}
  57.     sets.Idle = {}
  58.     sets.Idle.Default = {}
  59.     sets.Idle.Master = {}
  60.    
  61.     sets.Resting = {}
  62.     sets.Resting.Default = {}
  63.     sets.Resting.Master = {}
  64.    
  65.     optional_toggles.Ranged = T{['TH'] = 1}
  66.     sets.Ranged = {}
  67.     sets.Ranged.Default = {}
  68.     sets.Ranged.Master = {}
  69.    
  70.     optional_toggles.Weaponskill = T{['TH'] = 0} -- Not implemented yet
  71.     sets.Weaponskill = {}
  72.     sets.Weaponskill.Evisceration = set_combine(sets.DEX, {neck = "Rancor Collar"})
  73.     sets.Weaponskill.Exenterator = set_combine(sets.AGI, {neck = "Soil Gorget", body = "Thaumas Coat", waist = "Breeze Belt"})
  74.     sets.Weaponskill["Mandalic Stab"] = set_combine(sets.DEX, {neck = "Flame Gorget"})
  75.     sets.Weaponskill["Aeolian Edge"] = set_combine(sets.DEX, {neck = "Stoicheion Medal", legs = "Iuitl Tights"})
  76.     sets.Weaponskill["Last Stand"] = set_combine(sets.AGI, {neck = "Flame Gorget"})
  77.     sets.Weaponskill.Master = {}
  78.    
  79.     optional_toggles.SATA = T{['PDT'] = 0, ['MDT'] = 0, ['Kite'] = 0, ['TH'] = 0}
  80.     sets.SA = {}
  81.     sets.SA.Default = {}
  82.     sets.SA.Master = {}
  83.     sets.TA = {}
  84.     sets.TA.Default = {}
  85.     sets.TA.Master = {}
  86.    
  87.     build_default_sets()
  88.     build_master_sets()
  89. end
  90.  
  91. function build_default_sets()
  92.  
  93.     -- Build Default Engaged Set
  94.     sets.Engaged.Default = {neck = "Houyi's Gorget", ear2 = "Brutal Earring",
  95.                                                     hands = "Raid. Armlets +2", ring1 = "Rajas Ring", ring2 = "Heed Ring",
  96.                                                     back = "Atheling Mantle"}
  97.                                                    
  98.     sets.Engaged.Default = set_combine(sets.Engaged.Default, sets.Haste)
  99.     sets.Engaged.Default = set_combine(sets.Engaged.Default, sets.Weapons.Master)
  100.    
  101.     -- Build Default Idle Set
  102.     sets.Idle.Default = sets.Engaged.Default
  103.    
  104.     for key, value in pairs(optional_toggles.Idle) do
  105.         if value == 1 then
  106.             sets.Idle.Default = set_combine(sets.Idle.Default, sets[key])
  107.         end
  108.     end
  109.    
  110.     -- Build Default Resting Set
  111.     sets.Resting.Default = sets.Idle.Default
  112.    
  113.     -- Build Default Ranged Sets
  114.     sets.Ranged.Default = set_combine(sets.AGI, {neck = "Arctier's Torque", ear2 = "Volley Earring", body = "Aurore Doublet", back = "Libeccio Mantle", waist = "Buccaneer's Belt"})
  115.    
  116.     -- Build Default SA and TA sets
  117.     sets.SA.Default = set_combine(sets.DEX, {hands = "Raid. Armlets +2"})
  118.     sets.TA.Default = set_combine(sets.AGI, {hands = "Rog. Armlets +1"})
  119.    
  120. end
  121.  
  122. function build_master_set(setName)
  123.  
  124.     if sets[setName].Master then
  125.         sets[setName].Master = sets[setName].Default
  126.         used_toggles = 'Currently Used Toggles - '
  127.         toggles = T{}
  128.        
  129.         if optional_toggles[setName] then
  130.             for key, value in pairs(optional_toggles[setName]) do
  131.                 if value == 1 then
  132.                     sets[setName].Master = set_combine(sets[setName].Master, sets[key])
  133.                     toggles:insert(key)
  134.                 end
  135.             end
  136.            
  137.             windower.add_to_chat(123, used_toggles .. toggles:concat(':'))
  138.         else
  139.             windower.add_to_chat(123, 'There are no toggles for this set: ' .. setName)
  140.         end
  141.     else
  142.         windower.add_to_chat(123, 'There is no master set for this variable')
  143.     end
  144.  
  145. end
  146.  
  147. function build_master_sets()
  148.  
  149.     --master_sets = T{'Engaged', 'Idle', 'Resting', 'Ranged', 'SA', 'TA'}
  150.     --for i = 1, i < #master_sets, i + 1 do
  151.         --build_master_set(i)
  152.     --end
  153.  
  154.     build_master_set('Engaged')
  155.     build_master_set('Idle')
  156.     build_master_set('Resting')
  157.     build_master_set('Ranged')
  158.     build_master_set('SA')
  159.     build_master_set('TA')
  160. end
  161.  
  162. function build_weaponskill_master(spell, action)
  163.  
  164.     sets.Weaponskill.Master = {}
  165.    
  166.     if sets.Weaponskill[spell.english] then
  167.         sets.Weaponskill.Master = sets.Weaponskill[spell.english]
  168.     end
  169.    
  170.     if not (spell.english == 'Aeolian Edge') then
  171.         if buffactive['Trick Attack'] and (spell.english == 'Exenterator' or not buffactive['Sneak Attack']) then
  172.             sets.Weaponskill.Master = set_combine(sets.Weaponskill.Master, {hands = 'Rog. Armlets +1'})
  173.         elseif buffactive['Sneak Attack'] then
  174.             sets.Weaponskill.Master = set_combine(sets.Weaponskill.Master, {hands = 'Raid. Armlets +2'})
  175.         end
  176.     end
  177.  
  178. end
  179.  
  180. function precast(spell, action)
  181.  
  182.     verify_equip()
  183.    
  184.     if sets.JA[spell.english] then
  185.         equip(sets.JA[spell.english])
  186.     elseif spell.type == 'Weaponskill' then
  187.         build_weaponskill_master(spell, action)
  188.        
  189.         equip(sets.Weaponskill.Master)
  190.     end
  191.  
  192. end
  193.  
  194. function midcast(spell, action)
  195. end
  196.  
  197. function aftercast(spell, action)
  198.     if T{'Idle', 'Resting', 'Engaged'}:contains(player.status) then
  199.         equip(sets[player.status].Master)
  200.     end
  201. end
  202.  
  203. function pet_midcast(spell, action)
  204. end
  205.  
  206. function pet_aftercast(spell, action)
  207. end
  208.  
  209. function status_change(new, old)
  210.     if T{'Zoning', 'Fishing', 'Event', 'Dead'}:contains(old) then
  211.         return
  212.     end
  213.  
  214.     if T{'Idle', 'Resting', 'Engaged'}:contains(new) then
  215.         equip(sets[new].Master)
  216.     end
  217. end
  218.  
  219. function buff_change(buff, gain_or_loss)
  220.     if buff == 'Sneak Attack' or buff == 'Trick Attack' then
  221.         if buff == 'Sneak Attack' and gain_or_loss == 'gain' then
  222.             sets.Engaged.Master = sets.SA.Master
  223.         elseif buff == 'Trick Attack' and gain_or_loss == 'gain' and not buffactive['Sneak Attack'] then
  224.             sets.Engaged.Master = sets.TA.Master
  225.         elseif (buff == 'Sneak Attack' or buff == 'Trick Attack') and gain_or_loss == 'loss' then
  226.             build_master_set('Engaged')
  227.         end
  228.        
  229.         if player.status == 'Engaged' then
  230.             equip(sets.Engaged.Master)
  231.         end
  232.     end
  233. end
  234.  
  235. function self_command(command)
  236.  
  237.     -- Toggle Commands: toggle engaged, toggle idle, toggle ranged, toggle SATA, toggle TH
  238.  
  239. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement