Advertisement
Loire

Myar_BRD

May 20th, 2014
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 15.15 KB | None | 0 0
  1. function get_sets()
  2.     sets.precast = {}
  3.     sets.precast.JA = {}
  4.    
  5.     -- Precast Sets
  6.     sets.precast.JA.Nightingale = {feet="Bihu Slippers +1"}
  7.    
  8.     sets.precast.JA.Troubadour = {body="Bihu Justaucorps +1"}
  9.    
  10.     sets.precast.JA['Soul Voice'] = {legs="Bihu. Cannions +1"}
  11.    
  12.     sets.precast.FC = {}
  13.    
  14.     sets.precast.FC.Song = {main="Felibre's Dague",sub=empty,range=empty,ammo="Impatiens",
  15.         head="Aoidos' Calot +2",neck="Orunmila's Torque",ear1={name="Loquac. Earring",order=5},ear2="Enchntr. Earring +1",
  16.         body="Sheikh Manteel",hands={name="Gendewitha Gages",order=8},ring1="Weather. ring",ring2={name="Prolix Ring",order=7},
  17.         back="Swith Cape +1",waist="Witful Belt",legs={name="Gendewitha Spats",order=9},feet={name="Bihu Slippers +1",order=6}}
  18.        
  19.     sets.precast.FC.Normal = {sub="Vivid Strap",range=empty,ammo="Impatiens",
  20.         head="Nahtirah Hat",neck="Orunmila's Torque",ear1="Loquac. Earring",ear2="Enchntr. Earring +1",
  21.         body="Marduk's Jubbah +1",hands="Gende. Gages",ring1="Weather. Ring",ring2="Prolix Ring",
  22.         back="Swith Cape +1",waist="Witful Belt",legs="Orvail Pants +1",feet="Chelona Boots +1"}
  23.    
  24.     sets.precast.FC.Utsu = {head="Nahtirah Hat",neck="Orunmila's Torque",ear1="Loquac. Earring",ear2="Enchntr. Earring +1",
  25.         body="Marduk's Jubbah +1",hands="Gende. Gages",ring1="Weather. Ring",ring2="Prolix Ring",
  26.         back="Swith Cape +1",waist="Witful Belt",legs="Orvail Pants +1",feet="Chelona Boots +1"}
  27.        
  28.     sets.precast.Cure = {sub="Vivid Strap",range=empty,ammo="Impatiens",
  29.         head="Nahtirah Hat",neck="Ormunmila's Torque",ear1="Loquac. Earring",ear2="Enchntr. Earring +1",
  30.         body="Marduk's Jubbah +1",hands="Gende. Gages",ring1="Weather. Ring",ring2="Prolix Ring",
  31.         back="Pahtli Cape",waist="Witful Belt",legs="Nabu's Shalwar",feet="Chelona Boots +1"}
  32.        
  33.     sets.precast.EnhancingMagic = {waist="Siegel Sash"}
  34.    
  35.     sets.precast.FC.Lightning = {main="Apamajas I",sub="Vivid Strap"}
  36.  
  37.    
  38.    
  39.    
  40.     sets.precast.WS = {}
  41.     sets.precast.WS["Mordant Rime"] = {ammo="Ginsen",
  42.         head="Brioso Roundlet +1",neck="Piper's Torque",ear1="Bladeborn Earring",ear2="Enchntr. Earring +1",
  43.         body="Bihu Jstcorps +1",hands="Brioso Cuffs +1",ring1="Mars's Ring",ring2="Carb. Ring +1",
  44.         back="Kumbira Cape",waist="Demonry Sash",legs="Bihu Cannions +1",feet="Battlecast Gaiters"}
  45.        
  46.     sets.precast.WS["Rudra's Storm"] = {ammo="Ginsen",
  47.         head="Sukeroku Hachi.",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  48.         body="Bihu Jstcorps +1",hands="Umuthi Gloves",ring1="Ramuh Ring",ring2="Ramuh Ring",
  49.         back="Letalis Mantle",waist="Chiner's Belt +1",legs="Bihu Cannions +1",feet="Battlecast Gaiters"}
  50.        
  51.     sets.precast.WS["Extenterator"] = {ammo="Ginsen",
  52.         head="Sukeroku Hachi.",neck="Aqua Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  53.         body="Bihu Jstcorps +1",hands="Brioso Cuffs +1",ring1="Mars's Ring",ring2="Ramuh Ring",
  54.         back="Letalis Mantle",waist="Aqua Belt",legs="Gendewitha Spats",feet="Brioso slippers +1"}
  55.        
  56.     sets.precast.WS["Evisceration"] = {ammo="Ginsen",
  57.         head="Sukeroku Hachi.",neck="Aqua Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
  58.         body="Bihu Jstcorps +1",hands="Umuthi Gloves",ring1="Ramuh Ring",ring2="Ramuh Ring",
  59.         back="Letalis Mantle",waist="Aqua Belt",legs="Gendewitha Spats",feet="Brioso slippers +1"}     
  60.     -- Midcast Sets
  61.     sets.midcast = {}
  62.        
  63.     sets.midcast.Haste = {main="Terra's Staff",sub="Vivid Strap",range="Angel Lyre",ammo=empty,
  64.         head={name="Nahtirah Hat",order=6},neck="Orunmila's Torque",ear1="Loquac. Earring",ear2={name="Andoaa Earring",order=7},
  65.         body={name="Marduk's Jubbah +1",order=5},hands={name="Gendewitha Gages",order=11},ring1="Weather. Ring",ring2={name="Prolix Ring",order=10},
  66.         back={name="Swith Cape +1",order=8},waist="Phasmida Belt",legs="Brioso Cannions +1",feet={name="Chelona Boots +1",order=9}}
  67.  
  68.     sets.midcast.Debuff = {main="Lehbrailg +2",sub="Mephitis Grip",range="Gjallarhorn",ammo=empty,
  69.         head="Bihu Roundlet +1",neck="Piper's Torque",ear1="Gwati earring",ear2="Enchntr. Earring +1",
  70.         body="Brioso Justaucorps +1",hands="Bihu Cuffs +1",ring1="Carb. Ring +1",ring2="Carb. Ring +1",
  71.         back="Rhapsode's Cape",waist="Demonry Sash",legs="Brioso Cannions +1",feet="Artsieq Boots"}
  72.    
  73.     sets.midcast.Enfeeble = {main="Lehbrailg +2",sub="Mephitis Grip",ammo=empty,
  74.         head="Bihu Roundlet +1",neck="Piper's Torque",ear1="Gwati earring",ear2="Enchntr. Earring +1",
  75.         body="Brioso Justaucorps +1",hands="Bihu Cuffs +1",ring1="Weather. Ring",ring2="Sangoma ring",
  76.         back="Rhapsode's Cape",waist="Demonry Sash",legs="Brioso Cannions +1",feet="Artsieq Boots"}
  77.        
  78.     sets.midcast.Buff = {main="Carnwenhan",sub="Genbu's Shield",
  79.         head="Aoidos' Calot +2",neck="Aoidos' Matinee",ear1="Musical Earring",
  80.         body="Aoidos' Hngrln. +2",hands="Ad. Mnchtte. +2",legs="Mdk. Shalwar +1",feet="Brioso slippers +1"}
  81.    
  82.     sets.midcast.DBuff = {range="Daurdabla",ammo=empty}
  83.    
  84.     sets.midcast.GBuff = {range="Gjallarhorn",ammo=empty}
  85.    
  86.     sets.midcast.Duration = {body="Aoidos' Hngrln. +2",neck="Aoidos' Matinee",legs="Mdk. Shalwar +1",feet="Brioso slippers +1"}
  87.        
  88.     sets.midcast.Ballad = {legs="Aoidos' Rhing. +2"}
  89.        
  90.     sets.midcast.Scherzo = {feet="Aoidos' Cothrn. +2"}
  91.            
  92.     sets.midcast.Lullaby = {hands="Brioso Cuffs +1"}
  93.    
  94.     sets.midcast.Horde = {neck="String Torque",legs="Bihu Cannions +1",}
  95.    
  96.     sets.midcast.Base = sets.midcast.Haste
  97.        
  98.     sets.midcast.Cure = {main="Chatoyant Staff",sub="Curatio Grip",range="Angel Lyre",ammo=empty,
  99.         head="Gende. Caubeen +1",neck="Phalaina Locket",ear2="Gwati earring",
  100.         body="Gende. Bilaut +1",hands="Bokwus Gloves",ring1="Haoma's Ring",ring2="Sirona's Ring",
  101.         back="Tempered Cape +1",waist="Pythia Sash",legs="Bihu Cannions +1",feet="Artsieq Boots"}
  102.        
  103.     sets.midcast.Stoneskin = {head="Brioso Roundlet +1",body="Marduk's Jubbah +1",hands="Marduk's Dastanas +1",
  104.         legs="Shedir Seraweels",feet="Bihu Slippers +1"}
  105.        
  106.     sets.midcast.Stun = {main="Lehbrailg +2",sub="Mephitis Grip",range="Angel Lyre",ammo=empty,
  107.         head="Brioso Roundlet +1",neck="Orunmila's Torque",ear1="Gwati Earring",ear2="Moonshade Earring",
  108.         body="Vanir Cotehardie",hands="Lurid Mitts",ring1="Weather. Ring",ring2="Sangoma Ring",
  109.         back="Rhapsode's Cape",waist="Witful Belt",legs="Artsieq Hose",feet="Artsieq Boots"}
  110.    
  111.    
  112.     --Aftercast Sets
  113.     sets.aftercast = {}
  114.     sets.aftercast.Regen = {main={name="Terra's Staff",order=1},sub={name="Oneiros Grip",order=2},range="Oneiros Harp",ammo=empty,
  115.         neck="Twilight Torque",ear1={name="Loquac. Earring",order=7},ear2={name="Moonshade Earring",order=5},
  116.         body="Respite Cloak",hands={name="Bihu Cuffs +1",order=9},ring1="Dark Ring",ring2={name="Dark Ring",order=8},
  117.         back="Umbra Cape",waist="Flume Belt",legs={name="Assid. Pants +1",order=6},feet="Gende. Galosh. +1"}
  118.    
  119.     sets.aftercast.PDT = {main="Terra's Staff",sub="Oneiros Grip",range="Oneiros Harp",ammo=empty,
  120.         head="Bihu Roundlet +1",neck="Twilight Torque",ear1="Loquac. Earring",ear2="Moonshade Earring",
  121.         body="Bihu Jstcorps +1",hands="Bihu Cuffs +1",ring1="Dark Ring",ring2="Dark Ring",
  122.         back="Umbra Cape",waist="Flume Belt",legs="Bihu Cannions +1",feet="Bihu Slippers +1"}
  123.    
  124.     sets.aftercast.Engaged = {main="Carnwenhan",ammo="Ginsen",
  125.         head="Lithelimb Cap",neck="Iqabi Necklace",ear1="Steelflash Earring",ear2="Bladeborn Earring",
  126.         body="Bihu Jstcorps +1",hands="Umuthi Gloves",ring1="Mars's Ring",ring2="Patricius Ring",
  127.         back="Grounded Mantle +1",waist="Anguinus Belt",legs="Bokwus Slops",feet="Battlecast Gaiters"}
  128.        
  129.     sets.aftercast.Idle = sets.aftercast.Regen
  130.    
  131.     DaurdSongs = T{"Herb Pastoral","Goblin Gavotte","Shining Fantasia","Goddess's Hymnus","Scop's Operetta","Fowl Aubade","Puppet's Operetta","Gold Capriccio","Warding Round"}
  132.    
  133.     send_command('input /macro book 1;wait .1;input /macro set 1')
  134.     timer_reg = {}
  135.     pianissimo_cycle = false
  136. end
  137.  
  138. function pretarget(spell)
  139.     if spell.type == 'BardSong' and spell.target.type and spell.target.type == 'PLAYER' and not buffactive.pianissimo and not spell.target.charmed and not pianissimo_cycle then
  140.         cancel_spell()
  141.         pianissimo_cycle = true
  142.         send_command('input /ja "Pianissimo" <me>;wait 1.5;input /ma "'..spell.name..'" '..spell.target.name..';')
  143.         return
  144.     end
  145.     if spell.name ~= 'Pianissimo' then
  146.         pianissimo_cycle = false
  147.     end
  148. end
  149.  
  150. function precast(spell)
  151.     if spell.type == 'BardSong' then
  152.             equip_song_gear(spell)
  153.             equip(sets.precast.FC.Song)
  154.     elseif string.find(spell.english,'Utsu') then
  155.             equip(sets.precast.FC.Utsu)    
  156.     elseif spell.action_type == 'Magic' then
  157.         equip(sets.precast.FC.Normal)
  158.         if string.find(spell.english,'Cur') and spell.name ~= 'Cursna' then
  159.             equip(sets.precast.Cure)
  160.         end
  161.         if spell.skill == 'Enhancing Magic' then
  162.             equip(sets.precast.EnhancingMagic)
  163.         end
  164.     elseif spell.type == 'WeaponSkill' then
  165.         if sets.precast.WS[spell.name] then
  166.             equip(sets.precast.WS[spell.name])
  167.         end
  168.     end
  169.     if sets.precast.FC[tostring(spell.element)] then equip(sets.precast.FC[tostring(spell.element)])
  170.     end
  171.    
  172.     if sets.precast.JA[spell.english] then equip(sets.precast.JA[spell.english])
  173.     end
  174. end
  175.  
  176.  
  177. function midcast(spell)
  178.     if spell.type == 'BardSong' then
  179.         equip_song_gear(spell)
  180.     elseif spell.skill == 'Enfeebling Magic' then
  181.         equip(sets.midcast.Enfeeble)
  182.     elseif string.find(spell.english,'Cur') then
  183.         equip(sets.midcast.Base,sets.midcast.Cure)
  184.     elseif spell.english=='Stoneskin' then
  185.         equip(sets.midcast.Base,sets.midcast.Stoneskin)
  186.     elseif spell.skill == 'Enhancing Magic' then
  187.             equip(sets.midcast.Haste)
  188.     elseif spell.english=='Stun' then
  189.         equip(sets.midcast.Stun)   
  190.     end
  191. end
  192.  
  193. function aftercast(spell)
  194.     if spell.type and spell.type == 'BardSong' and spell.target and spell.target.type:upper() == 'SELF' then
  195.         local t = os.time()
  196.        
  197.         -- Eliminate songs that have already expired
  198.         local tempreg = {}
  199.         for i,v in pairs(timer_reg) do
  200.             if v < t then tempreg[i] = true end
  201.         end
  202.         for i,v in pairs(tempreg) do
  203.             timer_reg[i] = nil
  204.         end
  205.        
  206.         local dur = calculate_duration(spell.name)
  207.         if timer_reg[spell.name] then
  208.             if (timer_reg[spell.name] - t) <= 120 then
  209.                 send_command('timers delete "'..spell.name..'"')
  210.                 timer_reg[spell.name] = t + dur
  211.                 send_command('timers create "'..spell.name..'" '..dur..' down')
  212.             end
  213.         else
  214.             local maxsongs = 2
  215.             if player.equipment.range == 'Daurdabla' then
  216.                 maxsongs = maxsongs+2
  217.             end
  218.             if buffactive['Clarion Call'] then
  219.                 maxsongs = maxsongs+1
  220.             end
  221.             if maxsongs < table.length(timer_reg) then
  222.                 maxsongs = table.length(timer_reg)
  223.             end
  224.            
  225.             if table.length(timer_reg) < maxsongs then
  226.                 timer_reg[spell.name] = t+dur
  227.                 send_command('timers create "'..spell.name..'" '..dur..' down')
  228.             else
  229.                 local rep,repsong
  230.                 for i,v in pairs(timer_reg) do
  231.                     if t+dur > v then
  232.                         if not rep or rep > v then
  233.                             rep = v
  234.                             repsong = i
  235.                         end
  236.                     end
  237.                 end
  238.                 if repsong then
  239.                     timer_reg[repsong] = nil
  240.                     send_command('timers delete "'..repsong..'"')
  241.                     timer_reg[spell.name] = t+dur
  242.                     send_command('timers create "'..spell.name..'" '..dur..' down')
  243.                 end
  244.             end
  245.         end
  246.     end
  247.     if player.status == 'Engaged' then
  248.         equip(sets.aftercast.Engaged)
  249.     else
  250.         equip(sets.aftercast.Idle)
  251.     end
  252. end
  253.  
  254. function status_change(new,old)
  255.     if new == 'Engaged' then
  256.         equip(sets.aftercast.Engaged)
  257.     elseif T{'Idle','Resting'}:contains(new) then
  258.         equip(sets.aftercast.Idle)
  259.     end
  260. end
  261.  
  262.  
  263. function equip_song_gear(spell)
  264.     if DaurdSongs:contains(spell.english) then
  265.         equip(sets.midcast.Base,sets.midcast.DBuff)
  266.     else
  267.         if spell.target.type == 'MONSTER' then
  268.             equip(sets.midcast.Base,sets.midcast.Debuff,sets.midcast.GBuff)
  269.             if buffactive.troubadour or buffactive['elemental seal'] then
  270.                 equip(sets.midcast.Duration)
  271.             end
  272.             if string.find(spell.english,'Foe Lullaby') then equip (sets.midcast.Lullaby) end
  273.             if string.find(spell.english,'Horde Lullaby') then equip (sets.midcast.Lullaby,sets.midcast.DBuff,sets.midcast.Horde) end
  274.         else
  275.             equip(sets.midcast.Base,sets.midcast.Buff,sets.midcast.GBuff)
  276.             if string.find(spell.english,'Ballad') then equip(sets.midcast.Ballad) end
  277.             if string.find(spell.english,'Scherzo') then equip(sets.midcast.Scherzo) end
  278.         end
  279.     end
  280. end
  281.  
  282. function calculate_duration(name)
  283.     local mult = 1
  284.     if player.equipment.range == "Daurdabla" then mult = mult + 0.3 end
  285.     if player.equipment.range == "Gjallarhorn" then mult = mult + 0.4 end
  286.    
  287.     if player.equipment.neck == "Aoidos' Matinee" then mult = mult + 0.1 end
  288.     if player.equipment.feet == "Brioso Slippers +1" then mult = mult + 0.11 end
  289.     if player.equipment.body == "Aoidos' Hngrln. +2" then mult = mult + 0.1 end
  290.     if player.equipment.legs == "Mdk. Shalwar +1" then mult = mult + 0.1 end
  291.     if player.equipment.main == "Legato Dagger" then mult = mult + 0.05 end
  292.     if player.equipment.sub == "Legato Dagger" then mult = mult + 0.05 end
  293.     if player.equipment.main == "Carnwenhan" then mult = mult + 0.5 end
  294.    
  295.     if string.find(name,'March') and player.equipment.hands == "Ad. Mnchtte. +2" then mult = mult + 0.1 end
  296.     if string.find(name,'Minuet') and player.equipment.body == "Aoidos' Hngrln. +2" then mult = mult + 0.1 end
  297.     if string.find(name,'Madrigal') and player.equipment.head == "Aoidos' Calot +2" then mult = mult + 0.1 end
  298.     if string.find(name,'Ballad') and player.equipment.legs == "Aoidos' Rhing. +2" then mult = mult + 0.1 end
  299.     if string.find(name,'Paeon') and player.equipment.head == "Brioso Roundlet +1" then mult = mult + 0.1 end
  300.     if string.find(name,'Scherzo') and player.equipment.feet == "Aoidos' Cothrn. +2" then mult = mult + 0.1 end
  301.    
  302.     if buffactive.Troubadour then
  303.         mult = mult*2
  304.     end
  305.     if string.find(name,'Scherzo') and buffactive['Soul Voice'] then
  306.         mult = mult*2
  307.     elseif string.find(name,'Scherzo') and buffactive.marcato then
  308.         mult = mult*1.5
  309.     end
  310.    
  311.     return mult*120
  312. end
  313.  
  314. --[[windower.register_event('zone change',function (...)
  315.     for i,v in pairs(timer_reg) do
  316.         send_command('timers delete "'..i..'"')
  317.     end
  318.     timer_reg = {}
  319. end)]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement