Jump to content


Photo

Best way to have multiple nuking sets, blm lua?


    4 replies to this topic

    #1 Gukai

    Gukai

      Advanced Member

    • Members
    • PipPipPip
    • 95 posts

      Posted 11 January 2016 - 09:14 AM

      Hi

      I am trying to figure out the best way to have multiple nuking gearsets for blm.  I need one for:

      • normal nuking
      • magic acc nuking
      • magic bursting nuking

      I'm trying to figure out the best way to change the sets when I nuke.  I believe i'll need a base set, which will be for normal nuking.  Then a set for Macc and another for Bursting.  Those latter 2 sets will just be the specific gear for the set, and i'll add 'set_combine' to the normal nuking base set.  The trick is how to tell the lua which I need.  

       

      I am certain there's an easy way to do this, and I think it will be similar to the melee method I have below but I can't figure it out.  For melee I currently have sets for normal tp, accuracy tp, and when im cp farming (freezes back and cp rings).  To do this i have a TP set for all, see here: (i cut out some gear from this to save space)

      .

      	sets.engaged.TPnormal = {
      		feet="Umbani Boots"} --6+7+3+5+5+3=29 haste
      		
      	sets.engaged.TPacc = set_combine(sets.engaged.TPnormal, {
      		lring="Patricius Ring",
      		rring="Mars's Ring"}) --6+3+3+5+4+3=24 haste
      	
      	sets.engaged.CPfarm = set_combine(sets.engaged.TPacc, {
      		back="Mecisto. Mantle"})
      
      	sets.aftercast.TP = sets.engaged.TPnormal
      

      And at the bottom my rules are

      function self_command(command)
      	if command == 'toggle TP set' then
      		if sets.aftercast.TP == sets.engaged.TPnormal then
      			sets.aftercast.TP = sets.engaged.TPacc
      			send_command('@input /echo ACC SET')
      		elseif sets.aftercast.TP == sets.engaged.TPacc then
      			sets.aftercast.TP = sets.engaged.CPfarm
      			send_command('@input /echo CP SET')
      		elseif sets.aftercast.TP == sets.engaged.CPfarm then
      			sets.aftercast.TP = sets.engaged.TPnormal
      			send_command('@input /echo NORMAL SET')
      		end
      	end
      end
      

       

      I further bound a key to input the command so i can quickly toggle through the different TP sets.  

       

      Can someone help??



      #2 sdahlka

      sdahlka

        Advanced Member

      • Members
      • PipPipPip
      • 324 posts

        Posted 11 January 2016 - 06:12 PM

        here these should work

           
            tp_type = {"TPnormal","TPacc","CPfarm"}
            tp_count = 1
            sets.engaged.TPnormal = {
                feet="Umbani Boots"} --6+7+3+5+5+3=29 haste
                
            sets.engaged.TPacc = set_combine(sets.engaged.TPnormal, {
                lring="Patricius Ring",
                rring="Mars's Ring"}) --6+3+3+5+4+3=24 haste
            
            sets.engaged.CPfarm = set_combine(sets.engaged.TPacc, {
                back="Mecisto. Mantle"})
        
            sets.aftercast.TP = sets.engaged.TPnormal
        
        function self_command(command)
            if command == 'Cycle TP set' then --forwars cycle
                tp_count = (tp_count % #tp_type) + 1
                send_command('@input /echo '..tp_type[tp_count])
            elseif command == 'RCycle TP set' then --revers cycle
                tp_count = tp_count - 1
                if tp_count == 0 then
                    tp_count = #tp_type
                end
                send_command('@input /echo '..tp_type[tp_count])
            end
        end
        
        --when you equip gear
        equip(sets.engaged[tp_type[tp_count]])
         


        #3 Gukai

        Gukai

          Advanced Member

        • Members
        • PipPipPip
        • 95 posts

          Posted 12 January 2016 - 05:21 AM

          Hmmm, this seems to be an alternate method of doing my TP set programming.  Some of the commands I'm not familiar with, so whats the best way I can find out?  I want to understand better, thank you in advance for any support.

           

          I am sure this wasnt just meant to show me a different way to do my TP sets when I was asking for help with my nuking rules, so I figure it's important I understand this so I can adapt it to my nuking needs.  



          #4 sdahlka

          sdahlka

            Advanced Member

          • Members
          • PipPipPip
          • 324 posts

            Posted 14 January 2016 - 01:52 AM

            all i did was setup a variable that will allow you to change your gear sets with one command it just makes things smaller in your code and allows you to add things easily
             
            for instance if you want to add another engaged tp set (examlpe: MaxAtt)
            you just need to put MaxAtt in your tp_type table like this
            tp_type = {"TPnormal","TPacc","CPfarm","MaxAtt"}
            then build your set
            sets.engaged.MaxAtt = {...}
            there will be no need to add any more commands as long as you follow the same setup
             
            also if you wanted to tie your tp set to your mid cast sets you can do this
             

                sets.engaged.TPnormal = {
                    feet="Umbani Boots"} --6+7+3+5+5+3=29 haste
                    
                sets.midcast.TPnormal = {...}
            
            

            and then all you need to do is set your midcast gear with

            equip(sets.midcast[tp_type[tp_count]])



            #5 Gukai

            Gukai

              Advanced Member

            • Members
            • PipPipPip
            • 95 posts

              Posted 21 March 2016 - 05:36 AM

              I'm finally getting back to this.  Sorry, my year has been horribly busy with Accounting stuff and closing the financials for the year.  

               

              I'm beating my head trying to understand this, but not sure I'm making any ground other than getting a headache.

               

              For blm, I am taking out the TP sets, and I need to create magic sets for nuking:

              1. Normal Nuking
              2. Nuking on a magic burst
              3. Magic accuracy set
              4. Magic accuracy set for a magic burst

              I'm sure it's in the 'Function self_command(command) area, but I need to build this part up from scratch and also somehow get it incorporated into the rules but I dont know how.  I have some place-holder sets in the lua below, lines 148-155.  My midcast rules that these need to come into play is from lines 263-269.  I know there is a re-write needed so that the rules point to the right set, which is ever-changing based on the nuking-type I designate (#1-4 above), I just dont know how.  Please please help.  This is so frustrating.

               

              function get_sets()
              -------------------------------------------
              	-- aftercast for returning to TP and Idle sets
              	-- the 'self command' area will change the set defined as aftercast.TP
              -------------------------------------------		
              	sets.aftercast = {}
              	sets.engaged = {}
              	sets.precast = {}
              	sets.midcast = {}
              		
              	sets.aftercast.Idle = {
              		main="Lathi",
              		sub="Niobid Strap",
              		ammo="Pemphredo Tathlum",
              --		head="Nahtirah Hat",
              		neck="Twilight Torque",
              		lear="Infused Earring",
              		rear="Friomisi Earring",
              		body="Respite Cloak",
              		hands="Wicce Gloves +1",
              --		hands="Serpentes Cuffs",
              		lring="Defending Ring",	
              		rring="Shneddick Ring",
              		back="Bane Cape",
              		waist="Slipor Sash",
              		legs="Nares Trews",
              		feet="Merlinic Crackows"}
              
              	sets.aftercast.Resting = set_combine(sets.aftercast.Idle, {
              		ammo="Mana Ampulla",
              		rear="Relaxing Earring",
              		hands="Nares Cuffs",
              		waist="Austerity Belt",
              		legs="Nisse Slacks"})
              		
              -------------------------------------------
              -- The outermost table has to be named "sets", but
              -- otherwise there are no restrictions.
              -------------------------------------------
              
              	sets.engaged.TPnormal = {
              		ammo="Flame Sachet",
              		head="Spae. Petasos +1",
              		neck="Asperity Necklace",
              		lear="Bladeborn Earring",
              		rear="Steelflash Earring",
              		body="Count's Garb",
              		hands="Wicce Gloves +1",
              		lring="K'ayres Ring",
              		rring="Rajas Ring",
              		back="Potentia Cape",
              		waist="Goading Belt",
              		legs="Spae. Tonban +1",
              		feet="Umbani Boots"} --6+7+3+5+5+3=29 haste
              		
              
              	sets.aftercast.TP = sets.engaged.TPnormal
              -------------------------------------------
              	-- WS sets
              	-- So it's easy to determine if new obtained gear can replace anything, listed str/mnd/int stats per piece	
              -------------------------------------------
              	sets.precast.WSStr = {
              		ammo="Flame Sachet", --2/0/0
              		head="Sukeroku Hachi.", --25/20/20
              		neck="Asperity Necklace",
              		lear="Bladeborn Earring",
              		rear="Steelflash Earring",
              		body="Count's Garb", --21/29/38
              		hands="Wicce Gloves +1", --6/32/27
              		lring="K'ayres Ring",
              		rring="Rajas Ring", --5/0/0
              		back="Potentia Cape", --6/0/6
              		waist="Goading Belt",
              		legs="Spae. Tonban +1", --25/24/34
              		feet="Umbani Boots"} --10/19/22
              	
              	sets.precast.WSStrMnd = set_combine(sets.precast.WSStr, {
              		ammo="Mana Ampulla", --0/0/4
              		lring="Diamond Ring"}) --0/4/4
              		
              	sets.precast.WSStrInt = set_combine(sets.precast.WSStr, {
              		lring="Sprial Ring", --5/0/5
              		waist="Wanion Belt", --8/(5)/8
              		legs="Wicce Chausses +1", --21/23/38
              		feet="Merlinic Crackows"}) --6/23/31
              	
              	sets.precast.Myrkr = set_combine(sets.precast.WSStr, {
              		rear="Moonshade Earring"})
              		
              -------------------------------------------
              	-- Fastcast sets:  
              -------------------------------------------	
              	sets.precast.Fastcast = {
              		ammo="Impatiens",
              		head="Nahtirah Hat",
              		neck="Voltsurge Torque",
              		lear="Loquac. Earring",
              		rear="Enchntr. Earring +1",
              		body="Count's Garb",
              		hands="Helios Gloves",
              		lring="Lebeche Ring",
              		rring="Prolix Ring",
              		back="Shadow Mantle",
              		waist="Witful Belt",
              		legs="Artsieq Hose",
              		feet="Merlinic Crackows"}
              
              	sets.precast.HasteEnhancing = set_combine(sets.precast.Fastcast, {
              		waist="Siegel Sash"})
              	
              	sets.precast.HasteStoneskin = set_combine(sets.precast.HasteEnhancing, {
              		head="Umuthi Hat",
              		hands="Carapacho Cuffs"})
              	
              	sets.precast.HasteHealing = set_combine(sets.precast.Fastcast, {
              		rear="Mendi. Earring",
              		body="Heka's Kalasiris",
              		back="Pahtli Cape"})
              	
              	sets.precast.HasteElemental = set_combine(sets.precast.Fastcast, {
              		main="Lathi",
              		sub="Niobid Strap",
              		head="Wicce Petasos +1",
              		neck="Stoicheion Medal",
              		body="Wicce Coat +1",
              		feet="Spae. Sabots +1"})
              -------------------------------------------
              	-- Spell (midcast) sets:  
              -------------------------------------------	
              	sets.midcast['Elemental Magic'] = {
              		main="Lathi",
              		sub="Niobid Strap",
              		ammo="Pemphredo Tathlum",
              		head="Merlinic Hood",
              		neck="Eddy Necklace",
              		lear="Barkaro. Earring",
              		rear="Friomisi Earring",
              		body="Count's Garb",
              		hands="Wicce Gloves +1",
              		lring="Strendu Ring",
              		rring="Acumen Ring",
              		back="Toro Cape",
              		waist="Yamabuki-no-Obi",
              		legs="Merlinic Shalwar",
              		--legs="Hagondes Pants +1",
              		feet="Merlinic Crackows"}
              		
              	sets.midcast.Macc = set_combine(sets.midcast['Elemental Magic'], {
              		lring="Patricius Ring",
              		rring="Mars's Ring"})
              	
              	sets.midcast.Burst = set_combine(sets.midcast['Elemental Magic']{
              		rear="Moonshade Earring",
              		body="Spae. Coat +1",
              		back="Mecisto. Mantle"})
              	
              	sets.midcast.Impact = set_combine(sets.midcast['Elemental Magic'], {
              		body="Twilight Cloak"})
              	
              	sets.midcast['Dark Magic'] = set_combine(sets.midcast['Elemental Magic'], {
              		ammo="Pemphredo Tathlum",
              		hands="Arch. Gloves +1",
              		rring="Archon Ring",
              		legs="Spae. Tonban +1",
              		feet="Wicce Sabots +1"})
              		
              	sets.midcast.weather = {waist="Hachirin-No-Obi"}
              	
              	sets.midcast['Enfeebling Magic'] = {
              		main="Lathi",
              		sub="Niobid Strap",
              		ammo="Pemphredo Tathlum",
              		head="Befouled Crown",
              		neck="Voltsurge Torque",
              		lear="Barkaro. Earring",
              		rear="Enchntr. Earring +1",
              		body="Spae. Coat +1",
              		hands="Lurid Mitts",
              		lring="Spiral Ring",
              		rring="Strendu Ring",
              		back="Bane Cape",
              		waist="Rumination Sash",
              		legs="Portent Pants",
              		feet="Spae. Sabots +1"}
              	
              	sets.midcast['Enhancing Magic'] = {
              		main="Lathi",
              		sub="Niobid Strap",
              		ammo="Impatiens",
              		head="Befouled Crown",
              		neck="Twilight Torque",
              		lear="Gifted Earring",
              		rear="Enchntr. Earring +1",
              		body="Count's Garb",
              		hands="Wicce Gloves +1",
              		lring="Defending Ring",
              		rring="Sirona's Ring",
              		back="Shadow Mantle",
              		waist="Siegel Sash",
              		legs="Portent Pants",
              		feet="Rubeus Boots"}
              		
              	sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {
              		neck="Stone Gorget",
              		waist="Siegel Sash",
              		legs="Haven Hose"})
              		
              	sets.midcast['Healing Magic'] = { 
              		--33% potency, this is taking into consideration that blm's mostly cast single tier cure spells
              		-- commented stats are potency/skill/mnd (ignoring vitality)
              		main="Lathi",
              		sub="Niobid Strap",
              		ammo="Mana Ampulla", --0/0/3
              		head="Spae. Petasos +1", --0/0/24
              		neck="Phalaina Locket", --4/0/3
              		lear="Gifted Earring",
              		rear="Mendi. Earring", --5/0/0
              		body="Heka's Kalasiris", --15/0/17
              		hands="Wicce Gloves +1", --0/0/32
              		lring="Lebeche Ring", --3/0/0
              		rring="Sirona's Ring", --0/10/3
              		back="Tempered Cape +1", --6/8/0
              		waist="Korin Obi", --0/0/5
              		legs="Spae. Tonban +1", --0/0/24
              		feet="Rubeus Boots"} --0/10/0
              	
              	sets.midcast.ProtectShell = set_combine(sets.midcast['Healing Magic'], {
              		rring="Sheltered Ring"})
              		
              	sets.midcast.Cursna = set_combine(sets.precast.Fastcast, {
              		rear="Enchntr. Earring +1",
              		lring="Ephedra Ring", --0/7/0
              		rring="Sirona's Ring", --0/10/3
              		feet="Rubeus Boots"}) --0/10/0
              		
                  sets.midcast['Divine Magic'] = set_combine(sets.midcast['Healing Magic'], {
              		ammo="Pemphredo Tathlum",})
              
              	
              -------------------------------------------
              	-- Job Ability sets
              -------------------------------------------
              		
              	sets.precast["Manafont"] = {body="Arch. Coat"}
              	--sets.precast["Elemental Seal"] = {main="Laevateinn"}
              	sets.precast["Mana Wall"] = {feet="Wicce Sabots +1"}
              	
              	send_command('input /macro book 4')
              end
              
              function precast(spell,action)
              	if player.equipment.head == 'Reraise Hairpin' then 
              		disable('head')
              	else enable('head') end
              	if player.equipment.left_ear == 'Reraise Earring' then 
              		disable('ear1')
              	else enable('ear1') end
              	if sets.aftercast.TP == sets.engaged.CPfarm then
              		equip(sets.engaged.CPfarm)
              		disable('main', 'sub', 'rear', 'body', 'back') 
              	else enable('main', 'sub', 'rear', 'body', 'back') end	
              	if spell.action_type == 'Magic' or spell.type == 'Ninjutsu' then
              		if spell.skill == 'Elemental Magic' then
              			if spell.name == 'Impact' then
              				equip(sets.precast.HasteElemental,{body="Twilight Cloak"})
              			elseif spell.element == world.weather_element or spell.element == world.day_element then
              				equip(sets.midcast.weather)
              			else equip(sets.precast.HasteElemental)
              			end
              		elseif spell.skill == 'Enhancing Magic' then
              			if spell.name == 'Stoneskin' then
              				equip(sets.precast.HasteStoneskin)
              			else equip(sets.precast.HasteEnhancing)
              			end
              		elseif spell.skill == 'Healing Magic' then
              			if spell.english:startswith('Cur') then
              				if spell.name == 'Cursna' then
              					equip(sets.midcast.Cursna)
              				else equip(sets.midcast['Healing Magic'])
              				end
              			else equip(sets.precast.HasteHealing)
              			end
                      else equip(sets.precast.Fastcast)
                      end
              	elseif spell.type == 'WeaponSkill' then
              		if spell.english == 'Brainshaker' or 'Skullbreaker' or 'True Strike' or 'Heavy Swing' or 'Full Swing' or 'Shell Crusher' then
              			equip(sets.precast.WSStr)
              		elseif spell.english == 'Shining Strike' or 'Seraph Strike' or 'Judgement' or 'Hexa Strike' or 'Black Halo' or 'Flash Nova' or 'Starburst' or 'Sunburst' or 'Retribution' then
              			equip(sets.precast.WSStrMnd)
              		elseif spell.english == 'Rock Crusher' or 'Earth Crusher' or 'Spirit Taker' or 'Vidohunir' or 'Cataclysm' then
              			equip(sets.precast.WSStrInt)
              		elseif spell.english == 'Myrkr' then
              			equip(sets.precast.Myrkr)
              		else equip(sets.precast.WSStr)
              		end
              	elseif sets.precast[spell.english] then
              		equip(sets.precast[spell.english])
              	end
              end
              
              function midcast(spell,action)
              	if spell.action_type == 'Magic' then
              		if spell.skill == 'Elemental Magic' then
              			if spell.english == 'Impact' then
              				equip(sets.midcast.Impact)
              			else equip(sets.midcast['Elemental Magic'])
              			end
              			if spell.element == world.weather_element or spell.element == world.day_element then
              				equip(sets.midcast.weather)
              			end
              		elseif spell.skill == 'Enhancing Magic' then
              			if spell.english:startswith('Protect') or spell.english:startswith('Shell') then
              				equip(sets.midcast.ProtectShell)
              			elseif spell.name == 'Stoneskin' then
              				equip(sets.midcast.Stoneskin)
              			else equip(sets.midcast['Enhancing Magic'])
              			end
              		elseif sets.midcast[spell.skill] then
              			equip(sets.midcast[spell.skill])
              		else equip(sets.precast.Fastcast)
              		end
              	end
              end
              
              function aftercast(spell)
              	if player.status == 'Engaged' then
              		equip(sets.aftercast.TP)
              	else
              		equip(sets.aftercast.Idle)
              	end
              end
              
              function status_change(new,old)
              	if new == 'Idle' then
              		equip(sets.aftercast.Idle)
              	elseif new == 'Resting' then
              		equip(sets.aftercast.Resting)
              	elseif new == 'Engaged' then
              		equip(sets.aftercast.TP)
              	end
              end
              
              function self_command(command)  --this is all messed up, its not sets.aftercast.tp anymore, nor is it sets.engaged because we're nuking... what is it?
              	if command == 'toggle TP set' then
              		if sets.aftercast.TP == sets.engaged.TPnormal then
              			sets.aftercast.TP = sets.engaged.Macc
              			send_command('@input /echo M.ACC SET')
              		elseif sets.aftercast.TP == sets.engaged.Macc then
              			sets.aftercast.TP = sets.engaged.Burst
              			send_command('@input /echo BURST SET')
              		elseif sets.aftercast.TP == sets.engaged.Burst then
              			sets.aftercast.TP = sets.engaged.TPnormal
              			send_command('@input /echo NORMAL SET')
              		end
              	end
              end
              





              1 user(s) are reading this topic

              0 members, 1 guests, 0 anonymous users