Advertisement
Arnan

RUN Lua June 2017

Jun 23rd, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 23.57 KB | None | 0 0
  1. -- *** Amadis Rune Fencer Gearswap Lua File *** --
  2.  
  3. function get_sets()
  4.     AccIndex = 1
  5.     AccArray = {"LowACC","MidACC","HighACC","MaxACC"} -- 4 Levels Of Accuracy Sets For TP/WS/Hybrid. Default ACC Set Is LowACC. Add More ACC Sets If Needed Then Create Your New ACC Below --
  6.     IdleIndex = 1
  7.     IdleArray = {"Full","DT"} -- Default Idle Set Is Movement --
  8.     Armor = 'None'
  9.     target_distance = 6 -- Set Default Distance Here --
  10.     Thaumas = 'OFF' -- Set Default Thaumas Coat ON or OFF Here --
  11.     select_default_macro_book() -- Change Default Macro Book At The End --
  12.  
  13.         -- Herculean Augments --
  14.         HerculeanHelm={}
  15.         HerculeanHelm.MAB={ name="Herculean Helm", augments={'Mag. Acc.+6 "Mag.Atk.Bns."+6','Magic burst mdg.+5%','INT+8','Mag. Acc.+15','"Mag.Atk.Bns."+15',}}
  16.         HerculeanVest={}   
  17.         HerculeanVest.WSD={ name="Herculean Vest", augments={'Accuracy+27','Weapon skill damage +4%','Attack+1',}}
  18.         HerculeanGloves={}
  19.         HerculeanGloves.WSD={ name="Herculean Gloves", augments={'Attack+2','STR+4','Weapon skill damage +4%','Accuracy+15 Attack+15',}}
  20.         HerculeanGloves.DT={ name="Herculean Gloves", augments={'Damage taken-3%','DEX+8','Accuracy+11','Attack+10',}}
  21.         HerculeanGloves.TH={ name="Herculean Gloves", augments={'Mag. Acc.+6','Accuracy+8','"Treasure Hunter"+1','Accuracy+13 Attack+13',}}
  22.         HerculeanGloves.RF={ name="Herculean Gloves", augments={'Magic dmg. taken -1%','Enmity-2','"Refresh"+1','Accuracy+11 Attack+11',}}
  23.         HerculeanBoots={}
  24.         HerculeanBoots.TA={ name="Herculean Boots", augments={'Accuracy+27','"Triple Atk."+4','DEX+7','Attack+13',}}
  25.         HerculeanBoots.WSD={ name="Herculean Boots", augments={'Accuracy+18 Attack+18','Weapon skill damage +5%','STR+9','Attack+10',}}
  26.         HerculeanBoots.DT={ name="Herculean Boots", augments={'Accuracy+12','Phys. dmg. taken -5%','Attack+5',}}
  27.         HerculeanBoots.RF={ name="Herculean Boots", augments={'"Fast Cast"+3','Pet: "Regen"+2','"Refresh"+1',}}
  28.  
  29.         -- Ogma's Cape Augments --
  30.         TankCape={ name="Ogma's cape", augments={'HP+60','Eva.+20 /Mag. Eva.+20','Enmity+10',}}
  31.         STRDACape={ name="Ogma's cape", augments={'STR+20','Accuracy+20 Attack+20','"Dbl.Atk."+10',}}
  32.        
  33.    
  34.     -- Idle/Town Sets --
  35.     sets.Idle = {}
  36.         sets.Idle.Full = {
  37.             ammo="Staunch Tathlum",
  38.             head="Fu. Bandeau +1",
  39.             neck="Bathy Choker +1",
  40.             ear1="Odnowa Earring",
  41.             ear2="Odnowa Earring +1",
  42.             body="Runeist Coat +1",
  43.             hands=HerculeanGloves.RF,
  44.             ring1="Moonbeam Ring",
  45.             ring2="Moonbeam Ring",
  46.             back="Moonbeam Cape",
  47.             waist="Flume Belt +1",
  48.             legs="Carmine Cuisses +1",
  49.             feet=HerculeanBoots.RF}
  50.         sets.Idle.DT = set_combine(sets.Idle.Refresh,{
  51.             neck="Loricate Torque +1"})
  52.  
  53.     -- TP Sets --  
  54.     sets.TP = {
  55.             ammo="Ginsen",
  56.             head="Adhemar Bonnet +1",
  57.             neck="Asperity Necklace",
  58.             ear1="Cessance Earring",
  59.             ear2="Sherida Earring",
  60.             body="Adhemar Jacket +1",
  61.             hands="Adhemar Wrist. +1",
  62.             ring1="Niqmaddu Ring",
  63.             ring2="Epona's Ring",
  64.             back=STRDACape,
  65.             waist="Windbuffet Belt +1",
  66.             legs="Samnuha Tights",
  67.             feet=HerculeanBoots.TA}
  68.         sets.TP.MidACC = set_combine(sets.TP,{
  69.             head="Dampening Tam",
  70.             neck="Combatant's Torque"})
  71.         sets.TP.HighACC = set_combine(sets.TP.MidACC,{
  72.             ammo="Yamarang",
  73.             ring1="Ramuh Ring +1"})
  74.         sets.TP.MaxACC = set_combine(sets.TP.HighACC,{
  75.             head="Carmine Mask +1",
  76.             ring2="Ramuh Ring +1",
  77.             Waist="Olseni Belt",
  78.             legs="Carmine Cuisses +1"})
  79.                        
  80.     -- TP Thaumas Coat --
  81.     sets.TP.Thaumas = {body="Thaumas Coat"}
  82.  
  83.     -- PDT/MDT Sets --
  84.         sets.PDT = {
  85.             ammo="Staunch Tathlum",
  86.             head="Fu. bandeau +1",
  87.             neck="Loricate Torque +1",
  88.             ear1="Odnowa Earring",
  89.             ear2="Odnowa Earring +1",
  90.             body="Erilaz Surcoat +1",
  91.             hands=HerculeanGloves.DT,
  92.             ring1="Moonbeam Ring",
  93.             ring2="Moonbeam Ring",
  94.             back="Moonbeam Cape",
  95.             waist="Flume Belt +1",
  96.             legs="Eri. Leg Guards +1",
  97.             feet="Erilaz Greaves +1"}
  98.  
  99.         sets.MDT = set_combine(sets.PDT,{})
  100.  
  101.         -- Hybrid Sets --
  102.         sets.TP.Hybrid = set_combine(sets.PDT,{})
  103.         sets.TP.Hybrid.MidACC = set_combine(sets.TP.Hybrid,{})
  104.         sets.TP.Hybrid.HighACC = set_combine(sets.TP.Hybrid.MidACC,{})
  105.         sets.TP.Hybrid.MaxACC = set_combine(sets.TP.Hybrid.HighACC,{})
  106.        
  107.         -- Kiting Set --
  108.         sets.Kiting =  set_combine(sets.PDT,{
  109.             legs="Carmine Cuisses +1",
  110.             feet="Hippo. Socks +1"})
  111.  
  112.         -- WS Base Set --
  113.         sets.WS = {
  114.             ammo="Seeth. Bomblet +1",            
  115.             head="Adhemar Bonnet +1",
  116.             neck="Fotia Gorget",
  117.             ear1="Moonshade Earring",
  118.             ear2="Sherida Earring",
  119.             body="Adhemar Jacket +1",
  120.             hands="Adhemar Wrist. +1",
  121.             ring1="Niqmaddu Ring",
  122.             ring2="Epona's Ring",
  123.             back=STRDACape,
  124.             waist="Fotia Belt",
  125.             legs="Samnuha Tights",
  126.             feet=HerculeanBoots.TA}
  127.         sets.WS.MidACC = set_combine(sets.WS,{
  128.             head="Dampening Tam"})
  129.         sets.WS.HighACC = set_combine(sets.WS.MidACC,{
  130.             ammo="Yamarang",
  131.             ring2="Ramuh Ring +1"})
  132.         sets.WS.MaxACC = set_combine(sets.WS.HighACC,{
  133.             head="Carmine Mask +1",
  134.             ring1="Ramuh Ring +1",
  135.             Waist="Olseni Belt",
  136.             legs="Carmine Cuisses +1"})
  137.  
  138.     -- WS Sets --
  139.    
  140.         sets.WS.Resolution = set_combine(sets.WS,{})
  141.         sets.WS.Resolution.MidACC = set_combine(sets.WS.MidACC,{})
  142.         sets.WS.Resolution.HighACC = set_combine(sets.WS.HighACC,{})
  143.         sets.WS.Resolution.MaxACC = set_combine(sets.WS.MaxACC,{}) 
  144.        
  145.         sets.WS.Dimidiation = set_combine(sets.WS,{
  146.             ammo="Knobkierrie",
  147.             ear2="Ishvara Earring",
  148.             ring1="Regal Ring",
  149.             ring2="Ilabrat Ring",
  150.             legs="Lustr. Subligar +1",
  151.             feet="Lustra. Leggings +1"})
  152.         sets.WS.Dimidiation.MidACC = set_combine(sets.WS.MidACC,{
  153.             ammo="Knobkierrie",
  154.             ear2="Ishvara Earring",
  155.             ring1="Regal Ring",
  156.             ring2="Ilabrat Ring",
  157.             legs="Lustr. Subligar +1",
  158.             feet="Lustra. Leggings +1"})
  159.         sets.WS.Dimidiation.HighACC = set_combine(sets.WS.HighACC,{
  160.             ear2="Ishvara Earring",
  161.             ring1="Regal Ring",
  162.             ring2="Ilabrat Ring",
  163.             legs="Lustr. Subligar +1",
  164.             feet="Lustra. Leggings +1"})
  165.         sets.WS.Dimidiation.MaxACC = set_combine(sets.WS.MaxACC,{
  166.             legs="Lustr. Subligar +1",
  167.             feet="Lustra. Leggings +1"})
  168.                
  169.     -- Enmity Set --
  170.     sets.Enmity = {
  171.                         ammo="Staunch Tathlum",
  172.                         head="Highwing Helm",
  173.                         neck="Unmoving Collar +1",
  174.                         ear1="Trux Earring",
  175.                         ear2="Cryptic Earring",
  176.                         hands="Futhark Mitons +1",
  177.                         ring1="Eihwaz Ring",
  178.                         ring2="Moonbeam Ring",
  179.                         back="Evasionist's Cape",
  180.                         waist="Goading Belt"}
  181.                        
  182.     -- JA Sets --
  183.     sets.JA = {}
  184.         sets.JA.Vallation = set_combine(sets.Enmity,{
  185.                         body="Runeist Coat +1",
  186.                         legs="Futhark Trousers +1",
  187.                         back="Ogma's Cape"})
  188.                        
  189.         sets.JA.Swordplay = set_combine(sets.Enmity,{
  190.                         hands="Futhark Mitons +1"})
  191.                        
  192.         sets.JA.Lunge = set_combine(sets.Enmity,{
  193.                         ammo="Pemphredo Tathlum",
  194.                         head="Highwing Helm",
  195.                         neck="Sanctity Necklace",
  196.                         ear1="Friomisi Earring",
  197.                         ear2="Crematio Earring",
  198.                         body="Count's Garb",
  199.                         hands="Taeon Gloves",
  200.                         ring1="Shiva Ring +1",
  201.                         ring2="Shiva Ring +1",
  202.                         back="Evasionist's Cape",
  203.                         legs="Shned. Tights +1",
  204.                         feet="Manabyss Pigaches"})
  205.                        
  206.         sets.JA.Swipe = set_combine(sets.Enmity,{
  207.                         ammo="Pemphredo Tathlum",
  208.                         head="Highwing Helm",
  209.                         neck="Sanctity Necklace",
  210.                         ear1="Friomisi Earring",
  211.                         ear2="Crematio Earring",
  212.                         body="Count's Garb",
  213.                         hands="Taeon Gloves",
  214.                         ring1="Shiva Ring +1",
  215.                         ring2="Shiva Ring +1",
  216.                         back="Evasionist's Cape",
  217.                         legs="Shned. Tights +1",
  218.                         feet="Manabyss Pigaches"})
  219.                        
  220.         sets.JA.Pflug = set_combine(sets.Enmity,{
  221.                         feet="Runeist Bottes +1"})
  222.                            
  223.         sets.JA.Valiance = set_combine(sets.Enmity,{
  224.                         body="Runeist Coat +1",
  225.                         legs="Futhark Trousers +1",
  226.                         back="Ogma's Cape"})
  227.                        
  228.         sets.JA.Embolden = set_combine(sets.Enmity,{
  229.                         back="Evasionist's Cape"})
  230.        
  231.         sets.JA.Gambit = set_combine(sets.Enmity,{
  232.                         hands="Runeist Mitons +1"})
  233.                        
  234.         sets.JA.Liement = set_combine(sets.Enmity,{
  235.                         body="Futhark Coat +1"})
  236.        
  237.         sets.JA["One For All"] = set_combine(sets.Enmity)
  238.        
  239.         sets.JA.Battuta = set_combine(sets.Enmity,{
  240.                         head="Fu. Bandeau +1"})
  241.                        
  242.         sets.JA.Rayke = set_combine(sets.Enmity,{
  243.                         feet="Futhark Boots"})
  244.  
  245.     -- Waltz Set --
  246.     sets.Waltz = {
  247.                         ammo="Staunch Tathlum",
  248.                         head="Rune. Bandeau +1",
  249.                         neck="Unmoving Collar +1",
  250.                         ear1="Trux Earring",
  251.                         ear2="Cryptic Earring",
  252.                         body="Vanir Cotehardie",
  253.                         hands="Runeist Mitons +1",
  254.                         ring1="Eihwaz Ring",
  255.                         ring2="Moonbeam Ring",
  256.                         back="Evasionist's Cape",
  257.                         waist="Goading Belt",
  258.                         legs="Rune. Trousers +1",
  259.                         feet="Runeist Bottes +1"}
  260.  
  261.     sets.Precast = {}
  262.     -- Fastcast Set --
  263.     sets.Precast.FastCast = {                        
  264.                         ammo="Impatiens",
  265.                         head="Carmine Mask +1",
  266.                         neck="Orunmila's Torque",
  267.                         ear1="Odnowa Earring",
  268.                         ear2="Odnowa Earring +1",
  269.                         body="Taeon Tabard",
  270.                         hands="Leyline Gloves",
  271.                         ring1="Moonbeam Ring",
  272.                         ring2="Moonbeam Ring",
  273.                         back="Moonbeam Cape",
  274.                         waist="Flume Belt +1",
  275.                         legs="Carmine Cuisses +1",
  276.                         feet="Carmine Greaves +1"}
  277.  
  278.     -- Utsusemi Precast Set --
  279.     sets.Precast.Utsusemi = set_combine(sets.Precast.FastCast,{})
  280.  
  281.     -- Precast Enhancing Magic --
  282.     sets.Precast['Enhancing Magic'] = set_combine(sets.Precast.FastCast,{
  283.                         waist="Siegel Sash",
  284.                         legs="Futhark Trousers +1"})
  285.  
  286.     -- Midcast Base Set --
  287.     sets.Midcast = {                        
  288.                         ammo="Staunch Tathlum",
  289.                         head="Carmine Mask +1",
  290.                         neck="Orunmila's Torque",
  291.                         ear1="Odnowa Earring",
  292.                         ear2="Odnowa Earring +1",
  293.                         body="Taeon Tabard",
  294.                         hands="Leyline Gloves",
  295.                         ring1="Moonbeam Ring",
  296.                         ring2="Moonbeam Ring",
  297.                         back="Moonbeam Cape",
  298.                         waist="Flume Belt +1",
  299.                         legs="Carmine Cuisses +1",
  300.                         feet="Carmine Greaves +1"}
  301.  
  302.  
  303.     -- Magic Haste Set --
  304.     sets.Midcast.Haste = set_combine(sets.PDT,{                        
  305.                         ammo="Staunch Tathlum",
  306.                         head="Carmine Mask +1",
  307.                         neck="Orunmila's Torque",
  308.                         ear1="Odnowa Earring",
  309.                         ear2="Odnowa Earring +1",
  310.                         body="Taeon Tabard",
  311.                         hands="Leyline Gloves",
  312.                         ring1="Moonbeam Ring",
  313.                         ring2="Moonbeam Ring",
  314.                         back="Moonbeam Cape",
  315.                         waist="Flume Belt +1",
  316.                         legs="Carmine Cuisses +1",
  317.                         feet="Carmine Greaves +1"}
  318. )
  319.                        
  320.     -- Flash Set --
  321.     sets.Midcast.Flash = {
  322.                         ammo="Staunch Tathlum",
  323.                         head="Highwing Helm",
  324.                         neck="Unmoving Collar +1",
  325.                         ear1="Trux Earring",
  326.                         ear2="Cryptic Earring",
  327.                         hands="Futhark Mitons +1",
  328.                         ring1="Eihwaz Ring",
  329.                         ring2="Moonbeam Ring",
  330.                         belt="Goading Belt"}
  331.  
  332.     -- Enhancing Magic --
  333.     sets.Midcast['Enhancing Magic'] = {                        
  334.                         head="Carmine Mask +1",
  335.                         neck="Incanter's Torque",
  336.                         ear1="Andoaa Earring",
  337.                         hands="Runeist Mitons +1",
  338.                         ring1="Stikini Ring",
  339.                         ring2="Stikini Ring",
  340.                         back="Merciful Cape",
  341.                         waist="Olympus Sash",
  342.                         legs="Carmine Cuisses +1"}
  343.  
  344.     -- Stoneskin --
  345.     sets.Midcast.Stoneskin = set_combine(sets.Midcast['Enhancing Magic'],{waist="Siegel Sash"})
  346.  
  347.     -- Phalanx --
  348.     sets.Midcast.Phalanx = set_combine(sets.Midcast['Enhancing Magic'],{                        
  349.                         head="Fu. bandeau +1"})
  350.  
  351.     -- Regen --
  352.     sets.Midcast.Regen = {
  353.                         head="Rune. Bandeau +1",
  354.                         legs="Futhark Trousers +1"}
  355.  
  356.     -- Divine Magic --
  357.     sets.Midcast['Divine Magic'] = {}
  358. end
  359.  
  360. function pretarget(spell,action)
  361.     if (spell.type:endswith('Magic') or spell.type == "Ninjutsu") and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
  362.         cancel_spell()
  363.         send_command('input /item "Echo Drops" <me>')
  364.     elseif spell.english == "Berserk" and buffactive.Berserk then -- Change Berserk To Aggressor If Berserk Is On --
  365.         cancel_spell()
  366.         send_command('Aggressor')
  367.     elseif spell.type == "WeaponSkill" and spell.target.distance > target_distance and player.status == 'Engaged' then -- Cancel WS If You Are Out Of Range --
  368.         cancel_spell()
  369.         add_to_chat(123, spell.name..' Canceled: [Out of Range]')
  370.         return
  371.     end
  372. end
  373.  
  374. function precast(spell,action)
  375.     if spell.type == "WeaponSkill" then
  376.         if player.status ~= 'Engaged' then -- Cancel WS If You Are Not Engaged. Can Delete It If You Don't Need It --
  377.             cancel_spell()
  378.             add_to_chat(123,'Unable To Use WeaponSkill: [Disengaged]')
  379.             return
  380.         else
  381.             equipSet = sets.WS
  382.             if equipSet[spell.english] then
  383.                 equipSet = equipSet[spell.english]
  384.             end
  385.             if equipSet[AccArray[AccIndex]] then
  386.                 equipSet = equipSet[AccArray[AccIndex]]
  387.             end
  388.             equip(equipSet)
  389.         end
  390.     elseif spell.type == "JobAbility" or spell.type == "Ward" or spell.type == "Effusion" then
  391.         if sets.JA[spell.english] then
  392.             equip(sets.JA[spell.english])
  393.         end
  394.     elseif spell.type == "Rune" then
  395.         equip(sets.Enmity)
  396.     elseif spell.type:endswith('Magic') or spell.type == "Ninjutsu" then
  397.         if buffactive.silence or spell.target.distance > 16+target_distance then -- Cancel Magic or Ninjutsu If You Are Silenced or Out of Range --
  398.             cancel_spell()
  399.             add_to_chat(123, spell.name..' Canceled: [Silenced or Out of Casting Range]')
  400.             return
  401.         else
  402.             if string.find(spell.english,'Utsusemi') then
  403.                 if buffactive['Copy Image (3)'] or buffactive['Copy Image (4)'] then
  404.                     cancel_spell()
  405.                     add_to_chat(123, spell.english .. ' Canceled: [3+ Images]')
  406.                     return
  407.                 else
  408.                     equip(sets.Precast.Utsusemi)
  409.                 end
  410.             elseif sets.Precast[spell.skill] then
  411.                 equip(sets.Precast[spell.skill])
  412.             else
  413.                 equip(sets.Precast.FastCast)
  414.             end
  415.         end
  416.     elseif spell.type == "Waltz" then
  417.         refine_waltz(spell,action)
  418.         equip(sets.Waltz)
  419.     elseif spell.english == 'Spectral Jig' and buffactive.Sneak then
  420.         cast_delay(0.2)
  421.         send_command('cancel Sneak')
  422.     end
  423. end
  424.  
  425. function midcast(spell,action)
  426.     equipSet = {}
  427.     if spell.type:endswith('Magic') or spell.type == 'Ninjutsu' then
  428.         equipSet = sets.Midcast
  429.         if equipSet[spell.english] then
  430.             equipSet = equipSet[spell.english]
  431.         elseif string.find(spell.english,'Protect') or string.find(spell.english,'Shell') then
  432.             equipSet = equipSet.Haste
  433.             if spell.target.name == player.name then
  434.                 equipSet = set_combine(equipSet,{ring2="Sheltered Ring"})
  435.             end
  436.         elseif spell.english == "Stoneskin" then
  437.             if buffactive.Stoneskin then
  438.                 send_command('@wait 2.8;cancel stoneskin')
  439.             end
  440.             equipSet = equipSet.Stoneskin
  441.         elseif spell.english == "Sneak" then
  442.             if spell.target.name == player.name and buffactive['Sneak'] then
  443.                 send_command('cancel sneak')
  444.             end
  445.             equipSet = equipSet.Haste
  446.         elseif string.find(spell.english,'Spikes') then
  447.             equipSet = equipSet.Haste
  448.         elseif string.find(spell.english,'Utsusemi') then
  449.             if spell.english == 'Utsusemi: Ichi' and (buffactive['Copy Image'] or buffactive['Copy Image (2)']) then
  450.                 send_command('@wait 1.7;cancel Copy Image*')
  451.             end
  452.             equipSet = equipSet.Haste
  453.         elseif spell.english == 'Monomi: Ichi' then
  454.             if buffactive['Sneak'] then
  455.                 send_command('@wait 1.7;cancel sneak')
  456.             end
  457.             equipSet = equipSet.Haste
  458.         elseif equipSet[spell.skill] then
  459.             equipSet = equipSet[spell.skill]
  460.         end
  461.     elseif equipSet[spell.english] then
  462.         equipSet = equipSet[spell.english]
  463.     end
  464.     equip(equipSet)
  465. end
  466.  
  467. function aftercast(spell,action)
  468.     if spell.type == "WeaponSkill" and not spell.interrupted then
  469.         send_command('wait 0.2;gs c TP')
  470.     end
  471.     status_change(player.status)
  472. end
  473.  
  474. function status_change(new,old)
  475.     if Armor == 'PDT' then
  476.         equip(sets.PDT)
  477.     elseif Armor == 'MDT' then
  478.         equip(sets.MDT)
  479.     elseif Armor == 'Kiting' then
  480.         equip(sets.Kiting)
  481.     elseif new == 'Engaged' then
  482.         equipSet = sets.TP
  483.         if Armor == 'Hybrid' and equipSet["Hybrid"] then
  484.             equipSet = equipSet["Hybrid"]
  485.         end
  486.         if equipSet[AccArray[AccIndex]] then
  487.             equipSet = equipSet[AccArray[AccIndex]]
  488.         end
  489.         if Thaumas == 'ON' then -- Use Thaumas Coat Toggle --
  490.         equipSet = set_combine(equipSet,sets.TP.Thaumas)
  491.         end
  492.         equip(equipSet)
  493.     else
  494.         equip(sets.Idle[IdleArray[IdleIndex]])
  495.     end
  496. end
  497.  
  498. function buff_change(buff,gain)
  499.     buff = string.lower(buff)
  500.     if buff == 'weakness' then -- Weakness Timer --
  501.         if gain then
  502.             send_command('timers create "Weakness" 300 up')
  503.         else
  504.             send_command('timers delete "Weakness"')
  505.         end
  506.     end
  507.     if not midaction() then
  508.         status_change(player.status)
  509.     end
  510. end
  511.  
  512. -- In Game: //gs c (command), Macro: /console gs c (command), Bind: gs c (command) --
  513. function self_command(command)
  514.     if command == 'C1' then -- Accuracy Level Toggle --
  515.         AccIndex = (AccIndex % #AccArray) + 1
  516.         add_to_chat(158,'Accuracy Level: ' .. AccArray[AccIndex])
  517.         status_change(player.status)
  518.     elseif command == 'C5' then -- Auto Update Gear Toggle --
  519.         status_change(player.status)
  520.         add_to_chat(158,'Auto Update Gear')
  521.     elseif command == 'C2' then -- Hybrid Toggle --
  522.         if Armor == 'Hybrid' then
  523.             Armor = 'None'
  524.             add_to_chat(123,'Hybrid Set: [Unlocked]')
  525.         else
  526.             Armor = 'Hybrid'
  527.             add_to_chat(158,'Hybrid Set: '..AccArray[AccIndex])
  528.         end
  529.         status_change(player.status)
  530.     elseif command == 'C7' then -- PDT Toggle --
  531.         if Armor == 'PDT' then
  532.             Armor = 'None'
  533.             add_to_chat(123,'PDT Set: [Unlocked]')
  534.         else
  535.             Armor = 'PDT'
  536.             add_to_chat(158,'PDT Set: [Locked]')
  537.         end
  538.         status_change(player.status)
  539.     elseif command == 'C15' then -- MDT Toggle --
  540.         if Armor == 'MDT' then
  541.             Armor = 'None'
  542.             add_to_chat(123,'MDT Set: [Unlocked]')
  543.         else
  544.             Armor = 'MDT'
  545.             add_to_chat(158,'MDT Set: [Locked]')
  546.         end
  547.         status_change(player.status)
  548.     elseif command == 'C12' then -- Kiting Toggle --
  549.         if Armor == 'Kiting' then
  550.             Armor = 'None'
  551.             add_to_chat(123,'Kiting Set: [Unlocked]')
  552.         else
  553.             Armor = 'Kiting'
  554.             add_to_chat(158,'Kiting Set: [Locked]')
  555.         end
  556.         status_change(player.status)
  557.     elseif command == 'C16' then -- Thaumas Coat Toggle --
  558.         if Thaumas == 'ON' then
  559.             Thaumas = 'OFF'
  560.             add_to_chat(123,'Thaumas Coat: [OFF]')
  561.         else
  562.             Thaumas = 'ON'
  563.             add_to_chat(158,'Thaumas Coat: [ON]')
  564.         end
  565.             status_change(player.status)
  566.     elseif command == 'C8' then -- Distance Toggle --
  567.         if player.target.distance then
  568.             target_distance = math.floor(player.target.distance*10)/10
  569.             add_to_chat(158,'Distance: '..target_distance)
  570.         else
  571.             add_to_chat(123,'No Target Selected')
  572.         end
  573.     elseif command == 'C6' then -- Idle Toggle --
  574.         IdleIndex = (IdleIndex % #IdleArray) + 1
  575.         add_to_chat(158,'Idle Set: ' .. IdleArray[IdleIndex])
  576.         status_change(player.status)
  577.     elseif command == 'TP' then
  578.         add_to_chat(155,'TP Return: ['..tostring(player.tp)..']')
  579.     elseif command:match('^SC%d$') then
  580.         send_command('//' .. sc_map[command])
  581.     end
  582. end
  583.  
  584. function refine_waltz(spell,action)
  585.     if spell.type ~= 'Waltz' then
  586.         return
  587.     end
  588.  
  589.     if spell.name == "Healing Waltz" or spell.name == "Divine Waltz" or spell.name == "Divine Waltz II" then
  590.         return
  591.     end
  592.  
  593.     local newWaltz = spell.english
  594.     local waltzID
  595.  
  596.     local missingHP
  597.  
  598.     if spell.target.type == "SELF" then
  599.         missingHP = player.max_hp - player.hp
  600.     elseif spell.target.isallymember then
  601.         local target = find_player_in_alliance(spell.target.name)
  602.         local est_max_hp = target.hp / (target.hpp/100)
  603.         missingHP = math.floor(est_max_hp - target.hp)
  604.     end
  605.  
  606.     if missingHP ~= nil then
  607.         if player.sub_job == 'DNC' then
  608.             if missingHP < 40 and spell.target.name == player.name then
  609.                 add_to_chat(123,'Full HP!')
  610.                 cancel_spell()
  611.                 return
  612.             elseif missingHP < 150 then
  613.                 newWaltz = 'Curing Waltz'
  614.                 waltzID = 190
  615.             elseif missingHP < 300 then
  616.                 newWaltz = 'Curing Waltz II'
  617.                 waltzID = 191
  618.             else
  619.                 newWaltz = 'Curing Waltz III'
  620.                 waltzID = 192
  621.             end
  622.         else
  623.             return
  624.         end
  625.     end
  626.  
  627.     local waltzTPCost = {['Curing Waltz'] = 20, ['Curing Waltz II'] = 35, ['Curing Waltz III'] = 50, ['Curing Waltz IV'] = 65, ['Curing Waltz V'] = 80}
  628.     local tpCost = waltzTPCost[newWaltz]
  629.  
  630.     local downgrade
  631.  
  632.     if player.tp < tpCost and not buffactive.trance then
  633.  
  634.         if player.tp < 20 then
  635.             add_to_chat(123, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.')
  636.             cancel_spell()
  637.             return
  638.         elseif player.tp < 35 then
  639.             newWaltz = 'Curing Waltz'
  640.         elseif player.tp < 50 then
  641.             newWaltz = 'Curing Waltz II'
  642.         elseif player.tp < 65 then
  643.             newWaltz = 'Curing Waltz III'
  644.         elseif player.tp < 80 then
  645.             newWaltz = 'Curing Waltz IV'
  646.         end
  647.  
  648.         downgrade = 'Insufficient TP ['..tostring(player.tp)..']. Downgrading to '..newWaltz..'.'
  649.     end
  650.  
  651.     if newWaltz ~= spell.english then
  652.         send_command('@input /ja "'..newWaltz..'" '..tostring(spell.target.raw))
  653.         if downgrade then
  654.             add_to_chat(158, downgrade)
  655.         end
  656.         cancel_spell()
  657.         return
  658.     end
  659.  
  660.     if missingHP > 0 then
  661.         add_to_chat(158,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.')
  662.     end
  663. end
  664.  
  665. function find_player_in_alliance(name)
  666.     for i,v in ipairs(alliance) do
  667.         for k,p in ipairs(v) do
  668.             if p.name == name then
  669.                 return p
  670.             end
  671.         end
  672.     end
  673. end
  674.  
  675. function sub_job_change(newSubjob, oldSubjob)
  676.     select_default_macro_book()
  677. end
  678.  
  679. function set_macro_page(set,book)
  680.     if not tonumber(set) then
  681.         add_to_chat(123,'Error setting macro page: Set is not a valid number ('..tostring(set)..').')
  682.         return
  683.     end
  684.     if set < 1 or set > 10 then
  685.         add_to_chat(123,'Error setting macro page: Macro set ('..tostring(set)..') must be between 1 and 10.')
  686.         return
  687.     end
  688.  
  689.     if book then
  690.         if not tonumber(book) then
  691.             add_to_chat(123,'Error setting macro page: book is not a valid number ('..tostring(book)..').')
  692.             return
  693.         end
  694.         if book < 1 or book > 20 then
  695.             add_to_chat(123,'Error setting macro page: Macro book ('..tostring(book)..') must be between 1 and 20.')
  696.             return
  697.         end
  698.         send_command('@input /macro book '..tostring(book)..';wait .1;input /macro set '..tostring(set))
  699.     else
  700.         send_command('@input /macro set '..tostring(set))
  701.     end
  702. end
  703.  
  704. function select_default_macro_book()
  705.     -- Default macro set/book
  706.     if player.sub_job == 'WAR' then
  707.         set_macro_page(1, 13)
  708.     elseif player.sub_job == 'DNC' then
  709.         set_macro_page(1, 13)
  710.     elseif player.sub_job == 'NIN' then
  711.         set_macro_page(1, 13)
  712.     else
  713.         set_macro_page(1, 13)
  714.     end
  715. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement