Advertisement
Guest User

Untitled

a guest
Nov 14th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 27.29 KB | None | 0 0
  1. include('organizer-lib')
  2. -- *** Credit goes to Flippant for helping me with Gearswap *** --
  3. -- ** I Use Some of Motenten's Functions ** --
  4. -- Last Updated: 05/02/14 10:00 PM *Advanced Version* --
  5.  
  6. function get_sets()
  7.     AccIndex = 1
  8.     AccArray = {"LowACC","MidACC","HighACC"} -- 3 Levels Of Accuracy Sets For TP/WS/Hybrid. Default ACC Set Is LowACC. The First TP Set Of Your Main Weapon Is LowACC. Add More ACC Sets If Needed Then Create Your New ACC Below --
  9.     WeaponIndex = 1
  10.     WeaponArray = {"Shijo","Sandung"} -- Default Sub Weapon Is Sandung. Can Delete Any Weapons/Sets That You Don't Need Or Replace/Add The New Weapons That You Want To Use. --
  11.     IdleIndex = 1
  12.     IdleArray = {"Movement","Regen"} -- Default Idle Set Is Movement --
  13.     SA = false
  14.     TA = false
  15.     TH = 'OFF' -- Set Default Full TH ON or OFF Here --
  16.     Rancor = 'OFF' -- Set Default Rancor ON or OFF Here --
  17.     target_distance = 5 -- Set Default Distance Here --
  18.     select_default_macro_book() -- Change Default Macro Book At The End --
  19.  
  20.     sc_map = {SC1="Exenterator",SC2="Ranged"} -- 3 Additional Binds. Can Change Whatever JA/WS/Spells You Like Here. Remember Not To Use Spaces. --
  21.  
  22.     organizer_items = {
  23.     Rearr="Raider's Earring",
  24.     Mband="Mujin Band",
  25.     Hak="Sukeroku Hachimaki",
  26.     Krak="Kraken Club",
  27.     Omen="Pillager's Poulaines +2",
  28.     Wring="Warp Ring",
  29.     Xbo="Octant",}
  30.    
  31.     -- Idle/Town Sets --
  32.     sets.Idle = {}
  33.     sets.Idle.Regen = {
  34.             range="Raider's Bmrng.",
  35.             head="Iuitl headgear +1",
  36.             neck="Loricate Torque +1",
  37.             ear1="Black Earring",
  38.             ear2="Reraise Earring",
  39.             body="Iuitl vest +1",
  40.             hands="plunderer's armlets +1",
  41.             ring1="bellona's Ring",
  42.             ring2="Defending Ring",
  43.             back="Shadow Mantle",
  44.             waist="Chaac belt",
  45.             legs="Sombra Tights +1",
  46.             feet="Jute Boots +1"}
  47.     sets.Idle.Regen.Shijo = set_combine(sets.Idle.Regen,{
  48.             main="Shijo",
  49.             sub="Sandung"})
  50.     sets.Idle.Regen.Sandung = set_combine(sets.Idle.Regen,{
  51.             main="Shijo",
  52.             sub="Sandung"})
  53.  
  54.     sets.Idle.Movement = set_combine(sets.Idle.Regen,{
  55.             head="Iuitl headgear +1",
  56.             neck="Loricate Torque +1",
  57.             ear1="Black Earring",
  58.             eart2="Reraise Earring",
  59.             ring1="bellona's Ring",
  60.             ring2="Defending Ring",
  61.             back="Shadow mantle"})
  62.     sets.Idle.Movement.Shijo = set_combine(sets.Idle.Movement,{
  63.             main="Shijo",
  64.             sub="Sandung"})
  65.     sets.Idle.Movement.Sandung = set_combine(sets.Idle.Movement,{
  66.             main="Shijo",
  67.             sub="Sandung"})
  68.  
  69.     -- Preshot --
  70.     sets.Preshot = {
  71.             head="Aurore Beret +1",
  72.             hands="Iuitl Wristbands +1",
  73.             back="Libeccio Mantle",
  74.             legs="Nahtirah Trousers",
  75.             feet={ name="Taeon Boots", augments={'"Snapshot"+5','AGI+10',}}}
  76.            
  77.     -- Shooting Base Set --
  78.     sets.Midshot = {
  79.             head="Meghanada Visor +1",
  80.             neck="Erudition Necklace",
  81.             ear1="Volley Earring",
  82.             ear2="Enervating Earring",
  83.             body="Iuitl Vest +1",
  84.             hands="Iuitl Wristbands +1",
  85.             ring1="Hajduk Ring",
  86.             ring2="Cacoethic ring",
  87.             back="Libeccio Mantle",
  88.             waist="Chaac Belt",
  89.             legs="Darraigner's Brais",
  90.             feet="Herculean Boots",}       
  91.            
  92.     -- Normal TP Sets --
  93.     sets.TP = {
  94.             head={ name="Herculean Helm", augments={'Pet: Mag. Acc.+3 Pet: "Mag.Atk.Bns."+3','Accuracy+22 Attack+22','"Store TP"+5',}},
  95.             neck="Loricate Torque +1",
  96.             ear1="Dedition Earring",
  97.             ear2="Suppanomimi",
  98.             body="Adhemar Jacket",
  99.             hands="Floral Gauntlets",
  100.             ring1="Epona's Ring",
  101.             ring2="Rajas ring",
  102.             back={ name="Toutatis's Cape", augments={'DEX+10','Accuracy+20 Attack+20','"Dual Wield"+10',}},
  103.             waist="Shetal stone",
  104.             legs="Sombra Tights +1",
  105.             feet="Taeon Boots",
  106.                         main="Shijo",
  107.                         sub="Sandung"}
  108.     sets.TP.MidACC = set_combine(sets.TP,{
  109.             head="Iuitl headgear +1",
  110.             neck="Asperity necklace",
  111.             ear1="Brutal Earring",
  112.             ear2="Suppanomimi",
  113.             body="Plunderer's vest +1",
  114.             hands="Iuitl wristbands +1",
  115.             ring1="Epona's Ring",
  116.             ring2="Defending ring",
  117.             back="Canny cape",
  118.             waist="Shetal stone",
  119.             legs="Kaabnax trousers",
  120.             feet="Iuitl gaiters +1",
  121.                         main="Shijo",
  122.                         sub="Sandung"})
  123.     sets.TP.HighACC = set_combine(sets.TP.MidACC,{
  124.             head={ name="Herculean Helm", augments={'Pet: Mag. Acc.+3 Pet: "Mag.Atk.Bns."+3','Accuracy+22 Attack+22','"Store TP"+5',}},
  125.             neck="Ej Necklace",
  126.             ear1="Zennaroi Earring",
  127.             ear2="Suppanomimi",
  128.             body="Rawhide Vest",
  129.             hands="Adhemar Wristbands",
  130.             ring1="Cacoethic ring",
  131.             ring2="Cacoethic ring +1",
  132.             back="Canny cape",
  133.             waist="Shetal stone",
  134.             legs="Sombra Tights +1",
  135.             feet="Herculean Boots",
  136.                         main="Shijo",
  137.                         sub="Sandung"})
  138.  
  139.     -- March x2 + Haste --
  140.     sets.TP.MidHaste = set_combine(sets.TP,{
  141.             head="Skormoth Mask",
  142.             neck="Asperity necklace",
  143.             ear1="Brutal Earring",
  144.             ear2="Suppanomimi",
  145.             body="Rawhide Vest",
  146.             hands="Adhemar Wristbands",
  147.             ring1="Epona's Ring",
  148.             ring2="Rajas ring",
  149.             back="Canny cape",
  150.             waist="Shetal stone",
  151.             legs="Sombra Tights +1",
  152.             feet="Herculean Boots",
  153.                         main="Shijo",
  154.                         sub="Sandung"})
  155.     sets.TP.MidACC.MidHaste = set_combine(sets.TP.MidHaste,{
  156.             head="Iuitl headgear +1",
  157.             neck="Asperity necklace",
  158.             ear1="Brutal Earring",
  159.             ear2="Suppanomimi",
  160.             body="Plunderer's vest +1",
  161.             hands="Iuitl wristbands +1",
  162.             ring1="Epona's Ring",
  163.             ring2="Defending ring",
  164.             back="Canny cape",
  165.             waist="Shetal stone",
  166.             legs="Kaabnax trousers",
  167.             feet="Iuitl gaiters +1",
  168.                         main="Shijo",
  169.                         sub="Sandung"})
  170.     sets.TP.HighACC.MidHaste = set_combine(sets.TP.MidACC.MidHaste,{
  171.             head={ name="Herculean Helm", augments={'Pet: Mag. Acc.+3 Pet: "Mag.Atk.Bns."+3','Accuracy+22 Attack+22','"Store TP"+5',}},
  172.             neck="Ej Necklace",
  173.             ear1="Zennaroi Earring",
  174.             ear2="Suppanomimi",
  175.             body="Rawhide Vest",
  176.             hands="Adhemar Wristbands",
  177.             ring1="Cacoethic ring",
  178.             ring2="Cacoethic ring +1",
  179.             back="Canny cape",
  180.             waist="Shetal stone",
  181.             legs="Sombra Tights +1",
  182.             feet="Herculean Boots",
  183.                         main="Shijo",
  184.                         sub="Sandung"})
  185.  
  186.     -- March x2 + Haste + Samba --
  187.     sets.TP.HighHaste = set_combine(sets.TP.MidHaste,{
  188.             head="Skormoth Mask",
  189.             neck="Asperity necklace",
  190.             ear1="Brutal Earring",
  191.             ear2="Suppanomimi",
  192.             body="Rawhide Vest",
  193.             hands="Adhemar Wristbands",
  194.             ring1="Epona's Ring",
  195.             ring2="Rajas ring",
  196.             back="Canny cape",
  197.             waist="Shetal stone",
  198.             legs="Sombra Tights +1",
  199.             feet="Herculean Boots",
  200.                         main="Shijo",
  201.                         sub="Sandung"})
  202.     sets.TP.MidACC.HighHaste = set_combine(sets.TP.HighHaste,{
  203.             head="Iuitl headgear +1",
  204.             neck="Asperity necklace",
  205.             ear1="Brutal Earring",
  206.             ear2="Suppanomimi",
  207.             body="Plunderer's vest +1",
  208.             hands="Iuitl wristbands +1",
  209.             ring1="Epona's Ring",
  210.             ring2="Defending ring",
  211.             back="Canny cape",
  212.             waist="Shetal stone",
  213.             legs="Kaabnax trousers",
  214.             feet="Iuitl gaiters +1",
  215.                         main="Shijo",
  216.                         sub="Sandung"})
  217.     sets.TP.HighACC.MidHaste = set_combine(sets.TP.MidACC.MidHaste,{
  218.             head={ name="Herculean Helm", augments={'Pet: Mag. Acc.+3 Pet: "Mag.Atk.Bns."+3','Accuracy+22 Attack+22','"Store TP"+5',}},
  219.             neck="Ej Necklace",
  220.             ear1="Zennaroi Earring",
  221.             ear2="Suppanomimi",
  222.             body="Rawhide Vest",
  223.             hands="Adhemar Wristbands",
  224.             ring1="Cacoethic ring",
  225.             ring2="Cacoethic ring +1",
  226.             back="Canny cape",
  227.             waist="Shetal stone",
  228.             legs="Sombra Tights +1",
  229.             feet="Herculean Boots",
  230.                         main="Shijo",
  231.                         sub="Sandung"})
  232.  
  233.     -- Full TH TP Set --
  234.     sets.TP.TH = {head="Mummu Bonnet +1",
  235.             neck="Loricate Torque +1",
  236.             body="Mummu Jacket +1",
  237.             hands="Plunderer's armlets +1",
  238.             ring1="Dark Ring",
  239.             ring2="Defending Ring",
  240.             waist="Chaac Belt",
  241.             legs="Sombra Tights +1",
  242.             feet="Skulker's Poulaines +1"}
  243.  
  244.     -- TP Rancor ON Neck --
  245.     sets.TP.Rancor = {hands="Plunderer's armlets"}
  246.  
  247.     -- PDT/MDT Sets --
  248.     sets.PDT = {
  249.             head="Meghanada Visor +1",
  250.             neck="Twilight Torque",
  251.             ear1="Black Earring",
  252.             ear2="Darkness Earring",
  253.             body="Meghanada Cuirie +1",
  254.             hands="Meghanada Gloves +1",
  255.             ring1="Dark Ring",
  256.             ring2="Defending Ring",
  257.             back="Shadow Mantle",
  258.             waist="Flume Belt",
  259.             legs="Meghanada Chausses +1",
  260.             feet="Meghanada Jambeaux +1"}
  261.  
  262.     sets.MDT = set_combine(sets.PDT,{
  263.             ear1="Merman's Earring",
  264.             ear2="Sanare Earring",
  265.             ring1="Shadow Ring",
  266.             back="Engulfer Cape",
  267.             waist="Resolute Belt"})
  268.  
  269.     -- Hybrid/Evasion Sets --
  270.     sets.TP.Hybrid = set_combine(sets.PDT,{
  271.             head="Felistris Mask",
  272.             ear1="Heartseeker Earring",
  273.             ear2="Dudgeon Earring",
  274.             body="Thaumas Coat",
  275.             waist="Patentia Sash",
  276.             legs="Sombra Thights +1",
  277.             feet="Plun. Poulaines +1"})
  278.     sets.TP.Hybrid.MidACC = set_combine(sets.TP.Hybrid,{})
  279.     sets.TP.Hybrid.HighACC = set_combine(sets.TP.Hybrid.MidACC,{})
  280.  
  281.     sets.Evasion = set_combine(sets.PDT,{})
  282.  
  283.     -- WS Base Set --
  284.     sets.WS = {}
  285.  
  286.     -- WS Sets --
  287.     sets.WS["Mercy Stroke"] = {
  288.             head="Iuitl headgear +1",
  289.             neck="Fotia gorget",
  290.             ear1="Steelflash Earring",
  291.             ear2="Bladeborn Earring",
  292.             body="Khepri Jacket",
  293.             ring1="Epona's Ring",
  294.             back="Buquwik Cape",
  295.             waist="Wanion Belt",
  296.             legs="Nahtirah Trousers",
  297.             feet="Pillager's Poulaines"}
  298.     sets.WS["Mercy Stroke"].SA = {
  299.             head="Plun. Bonnet",
  300.             neck="fotia Gorget",
  301.             ear1="Vulcan's Pearl",
  302.             ear2="Vulcan's Pearl",
  303.             body="Pillager's Vest +1",
  304.             hands="Skulker's Armlets +1",
  305.             ring1="Pyrosoul Ring",
  306.             ring2="Defending ring",
  307.             back="Buquwik Cape",
  308.             waist="Wanion Belt",
  309.             legs="Sombra Thights +1",
  310.             feet="Plun. Poulaines +1"}
  311.     sets.WS["Mercy Stroke"].TA = {
  312.             head={ name="Herculean Helm", augments={'Pet: Mag. Acc.+3 Pet: "Mag.Atk.Bns."+3','Accuracy+22 Attack+22','"Store TP"+5',}},
  313.             neck="fotia Gorget",
  314.             ear1="Vulcan's Pearl",
  315.             ear2="Vulcan's Pearl",
  316.             body="Pillager's Vest +1",
  317.             ring1="Pyrosoul Ring",
  318.             ring2="Defending ring",
  319.             back="Buquwik Cape",
  320.             waist="Fotia Belt",
  321.             legs="Sombra Thights +1",
  322.             feet="Plun. Poulaines +1"}
  323.  
  324.     sets.WS.Exenterator = {
  325.             head={ name="Herculean Helm", augments={'Pet: Mag. Acc.+3 Pet: "Mag.Atk.Bns."+3','Accuracy+22 Attack+22','"Store TP"+5',}},
  326.             neck="Ej Necklace",
  327.             ear1="Brutal Earring",
  328.             ear2="Suppanomimi",
  329.             body="Rawhide Vest",
  330.             hands="Adhemar Wristbands",
  331.             ring1="Cacoethic ring",
  332.             ring2="Cacoethic ring +1",
  333.             back="Canny cape",
  334.             waist="Shetal stone",
  335.             legs="Sombra Tights +1",
  336.             feet={ name="Herculean Boots", augments={'Accuracy+19','Weapon skill damage +5%',}}}
  337.     sets.WS.Exenterator.SA = set_combine(sets.WS.Exenterator,{})
  338.     sets.WS.Exenterator.TA = set_combine(sets.WS.Exenterator,{})
  339.  
  340.     sets.WS.Evisceration = {
  341.             head="Taeon Chapeau",
  342.             neck="Fotia gorget",
  343.             ear1="Ishvara Earring",
  344.             ear2="Bladeborn earring",
  345.             body="Taeon Tabard",
  346.             hands={ name="Herculean Gloves", augments={'Accuracy+30','Weapon skill damage +4%','DEX+7','Attack+6',}},
  347.             ring1="Ramuh Ring",
  348.             ring2="Karieyh Ring",
  349.             back="Toutatis's Cape",
  350.             waist="Fotia Belt",
  351.             legs="Taeon Tights",
  352.             feet={ name="Herculean Boots", augments={'Accuracy+19','Weapon skill damage +5%',}}}
  353.     sets.WS.Evisceration.SA = set_combine(sets.WS.Evisceration,{})
  354.     sets.WS.Evisceration.TA = set_combine(sets.WS.Evisceration,{})
  355.  
  356.     sets.WS["Rudra's Storm"] = {head="Taeon Chapeau",
  357.             neck="Fotia gorget",
  358.             ear1="Ishvara Earring",
  359.             ear2="Aesir Ear Pendant",
  360.             body="Herculean Vest",
  361.             hands="Skulker's Armlets +1",
  362.             ring1="Ramuh Ring",
  363.             ring2="Karieyh Ring",
  364.             back="Toutatis's Cape",
  365.             waist="Shadow Belt",
  366.             legs="Taeon Tights",
  367.             feet={ name="Herculean Boots", augments={'Accuracy+19','Weapon skill damage +5%',}}}
  368.     sets.WS["Rudra's Storm"].SA = set_combine(sets.WS["Rudra's Storm"],{hands="Skulker's Armlets +1"})
  369.     sets.WS["Rudra's Storm"].TA = set_combine(sets.WS["Rudra's Storm"],{})
  370.  
  371.     sets.WS["Aeolian Edge"] = {head="Taeon Chapeau",
  372.             neck="Fotia gorget",
  373.             ear1="Ishvara Earring",
  374.             ear2="Friomisi earring",
  375.             body="Taeon Vest",
  376.             hands={ name="Herculean Gloves", augments={'Accuracy+30','Weapon skill damage +4%','DEX+7','Attack+6',}},
  377.             ring1="Ramuh Ring",
  378.             ring2="Shiva Ring",
  379.             back="Toro Cape",
  380.             waist="Fotia Belt",
  381.             legs="Taeon Tights",
  382.             feet={ name="Herculean Boots", augments={'Accuracy+19','Weapon skill damage +5%',}}}
  383.  
  384.     sets.WS["Mandalic Stab"] = {}
  385.    
  386.     sets.WS["Last Stand"] = {
  387.             head="Taeon Chapeau",
  388.             neck="Fotia gorget",
  389.             ear1="Ishvara Earring",
  390.             ear2="Enervating Earring",
  391.             body="Taeon Tabard",
  392.             hands={ name="Herculean Gloves", augments={'Accuracy+30','Weapon skill damage +4%','DEX+7','Attack+6',}},
  393.             ring1="Garuda Ring +1",
  394.             ring2="Karieyh Ring",
  395.             back="Libeccio mantle",
  396.             waist="Fotia Belt",
  397.             legs="Taeon Tights",
  398.             feet={ name="Herculean Boots", augments={'Accuracy+19','Weapon skill damage +5%',}}}
  399.    
  400.     -- JA Sets --
  401.     sets.JA = {}
  402.     TH_Gear = {head="Mummu Bonnet +1",
  403.             neck="Loricate Torque +1",
  404.             body="Mummu Jacket +1",
  405.             hands="Plunderer's armlets +1",
  406.             ring1="Dark Ring",
  407.             ring2="Defending Ring",
  408.             waist="Chaac Belt",
  409.             legs="Sombra Tights +1",
  410.             feet="Skulker's Poulaines +1"}
  411.     sets.JA.Feint = {legs="Plunderer's Culottes +1"}       
  412.     sets.JA.Conspirator = {body="Skulker's Vest"}
  413.     sets.JA.Accomplice = {head="Skulker's Bonnet"}
  414.     sets.JA.Collaborator = {head="Skulker's Bonnet"}
  415.     sets.JA["Perfect Dodge"] = {hands="Plun. Armlets +1"}
  416.     sets.JA.Steal = {head="Plun. Bonnet",feet="Pill. Poulaines"}
  417.     sets.JA.Flee = {feet="Pillager's Poulaines"}
  418.     sets.JA.Despoil = {legs="Skulker's Culottes",feet="Skulker's Poulaines +1"}
  419.     sets.JA.Mug = {head="Plun. Bonnet"}
  420.     sets.JA.Hide = {body="Pillager's Vest +1"}
  421.     sets.JA["Assassin's Charge"] = {feet="Plunderer's Poulaines +1"}
  422.     sets.JA.Provoke = TH_Gear
  423.     sets.JA["Sneak Attack"] = {back="Toutatis's Cape"}
  424.     sets.JA["Trick Attack"] = set_combine(sets.JA["Sneak Attack"],{back="Toutatis's Cape"})
  425.  
  426.     -- Step Set --
  427.     sets.Step = set_combine({},TH_Gear)
  428.  
  429.     -- Flourish Set --
  430.     sets.Flourish = set_combine({},TH_Gear)
  431.  
  432.     -- Waltz Set --
  433.     sets.Waltz = {ring1="Asklepian Ring",ring2="Valseur's Ring"}
  434.  
  435.     sets.Precast = {}
  436.     -- Fastcast Set --
  437.     sets.Precast.FastCast = {
  438.             head="Haruspex Hat +1",
  439.             neck="Orunmila's Torque",
  440.             ear1="Loquac. Earring",
  441.             hands="Thaumas Gloves",
  442.             ring1="Prolix Ring",
  443.             ring2="Veneficium Ring",
  444.             legs="Enif Cosciales"}
  445.     -- Utsusemi Precast Set --
  446.     sets.Precast.Utsusemi = set_combine(sets.Precast.FastCast,{neck="Magoraga Beads"})
  447.  
  448.     sets.Midcast = {}
  449.     -- Magic Haste Set --
  450.     sets.Midcast.Haste = set_combine(sets.PDT,{})
  451. end
  452.  
  453. function pretarget(spell,action)
  454.     if (spell.type:endswith('Magic') or spell.type == "Ninjutsu") and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
  455.         cancel_spell()
  456.         send_command('input /item "Echo Drops" <me>')
  457.     elseif spell.english == "Berserk" and buffactive.Berserk then -- Change Berserk To Aggressor If Berserk Is On --
  458.         cancel_spell()
  459.         send_command('Aggressor')
  460.     return
  461.     end
  462. end
  463.  
  464. function precast(spell,action)
  465.     if spell.action_type == 'Ranged Attack' then
  466.     equip(sets.Preshot)
  467.     end
  468.     if spell.type == "WeaponSkill" then
  469.         if player.status ~= 'Engaged' then -- Cancel WS If You Are Not Engaged. Can Delete It If You Don't Need It --
  470.             cancel_spell()
  471.             add_to_chat(123,'Unable To Use WeaponSkill: [Disengaged]')
  472.             return
  473.         else
  474.             equipSet = sets.WS
  475.             if equipSet[spell.english] then
  476.                 equipSet = equipSet[spell.english]
  477.             end
  478.             if SA and equipSet["SA"] then
  479.                 equipSet = equipSet["SA"]
  480.             end
  481.             if TA and equipSet["TA"] then
  482.                 equipSet = equipSet["TA"]
  483.             end
  484.             if spell.english == "Evisceration" and player.tp > 299 then -- Equip Jupiter's Pearl When You Have 300 TP --
  485.                 equipSet = set_combine(equipSet,{ear1="Jupiter's Pearl"})
  486.             end
  487.             equip(equipSet)
  488.         end
  489.     elseif spell.type=="JobAbility" then
  490.         if sets.JA[spell.english] then
  491.             equip(sets.JA[spell.english])
  492.         end
  493.         if spell.english=="Sneak Attack" then
  494.             SA = true
  495.         end
  496.         if spell.english=="Trick Attack" then
  497.             TA = true
  498.         end
  499.     elseif spell.type:endswith('Magic') or spell.type == "Ninjutsu" then
  500.         if string.find(spell.english,'Utsusemi') then
  501.             if buffactive['Copy Image (3)'] or buffactive['Copy Image (4)'] then
  502.                 cancel_spell()
  503.                 add_to_chat(123, spell.name .. ' Canceled: [3+ Images]')
  504.                 return
  505.             else
  506.                 equip(sets.Precast.Utsusemi)
  507.             end
  508.         else
  509.             equip(sets.Precast.FastCast)
  510.         end
  511.     elseif spell.type == 'Step' then
  512.         equip(sets.Step)
  513.     elseif string.find(spell.type,'Flourish') then
  514.         equip(sets.Flourish)
  515.     elseif string.find(spell.type,'Waltz') then
  516.         equip(sets.Waltz)
  517.     end
  518. end
  519.  
  520. function midcast(spell,action)
  521.     if spell.action_type == 'Ranged Attack' then
  522.         equip(sets.Midshot)
  523.     end
  524.     if spell.type:endswith('Magic') or spell.type == "Ninjutsu" then
  525.         if string.find(spell.english,'Utsusemi') then
  526.             if spell.english == 'Utsusemi: Ichi' and (buffactive['Copy Image'] or buffactive['Copy Image (2)']) then
  527.                 send_command('@wait 1.7;cancel Copy Image*')
  528.             end
  529.             equip(sets.Midcast.Haste)
  530.         elseif spell.english == 'Monomi: Ichi' then
  531.             if buffactive['Sneak'] then
  532.                 send_command('@wait 1.7;cancel sneak')
  533.             end
  534.             equip(sets.Midcast.Haste)
  535.         else
  536.             equip(sets.Midcast.Haste)
  537.         end
  538.     end
  539. end
  540.  
  541. local packets = require('packets')
  542.  
  543. function check_actor(packet)
  544.     local key_indices = {'p0','p1','p2','p3','p4','p5','a10','a11','a12','a13','a14','a15','a20','a21','a22','a23','a24','a25'}
  545.     local party = windower.ffxi.get_party()
  546.     local actor = windower.ffxi.get_mob_by_id(packet['Actor'])
  547.     for i = 1, 18 do
  548.         local member = party[key_indices[i]]
  549.         if member and member.mob and member.mob.id == actor.id then
  550.             return true
  551.         end
  552.     end
  553.     return false
  554. end
  555.  
  556.  
  557. windower.raw_register_event('incoming chunk', function(id,original,modified,injected,blocked)
  558.  if id == 0x028 then
  559.         local packet = packets.parse('incoming', original)
  560.         local target = windower.ffxi.get_mob_by_id(packet['Target 1 ID'])
  561.         if packet.Category == 1 and check_actor(packet) then
  562.             if packet['Target 1 Action 1 Has Added Effect'] then
  563.                 if packet['Target 1 Action 1 Added Effect Message'] == 603 then
  564.                     local th = tonumber(packet['Target 1 Action 1 Added Effect Param'])
  565.                     if th == 5 then
  566.                         aftercast({TH5=''})
  567.                     elseif
  568.                         th == 6 then
  569.                         aftercast({TH6=''})
  570.                     --etc etc
  571.                     end
  572.                 end
  573.             end
  574.         end
  575.     end
  576. end)
  577.  
  578. function aftercast(spell)
  579.     if spell.TH5 then
  580.         equip(sets.TP.Rancor)
  581.         return
  582.     elseif spell.TH6 then
  583.         -- equip different set
  584.         return
  585.     elseif spell.TH7 then
  586.         -- equip different different set
  587.         return
  588.     --etc etc
  589.     end
  590.     if spell.type == "WeaponSkill" and not spell.interrupted then
  591.         send_command('wait 0.2;gs c TP')
  592.     end
  593.     status_change(player.status)
  594. end
  595.  
  596. function status_change(new,old)
  597.     if player.equipment.range ~= 'empty' then
  598.         disable('range','ammo')
  599.     else
  600.         enable('range','ammo')
  601.     end
  602.     if Armor == 'PDT' then
  603.         equip(sets.PDT)
  604.     elseif Armor == 'MDT' then
  605.         equip(sets.MDT)
  606.     elseif Armor == 'EVA' then
  607.         equip(sets.Evasion)
  608.     elseif new == 'Engaged' then
  609.         equipSet = sets.TP
  610.         if Armor == 'Hybrid' and equipSet["Hybrid"] then
  611.             equipSet = equipSet["Hybrid"]
  612.         end
  613.         if equipSet[AccArray[AccIndex]] then
  614.             equipSet = equipSet[AccArray[AccIndex]]
  615.         end
  616.         if (buffactive.Embrava and (buffactive.Haste or buffactive.March) and buffactive['Haste Samba']) or (buffactive.March == 2 and buffactive.Haste and buffactive['Haste Samba']) and equipSet["HighHaste"] then
  617.             equipSet = equipSet["HighHaste"]
  618.         end
  619.         if (buffactive.Embrava and (buffactive.Haste or buffactive.March or buffactive['Haste Samba'])) or (buffactive.March == 1 and buffactive.Haste and buffactive['Haste Samba'] and equipSet["MidHaste"]) or (buffactive.March == 2 and (buffactive.Haste or buffactive['Haste Samba'])) and equipSet["MidHaste"] then
  620.             equipSet = equipSet["MidHaste"]
  621.         end
  622.         if SA then
  623.             equipSet = set_combine(equipSet,sets.JA["Sneak Attack"])
  624.         end
  625.         if TA then
  626.             equipSet = set_combine(equipSet,sets.JA["Trick Attack"])
  627.         end
  628.         if Rancor == 'ON' then -- Use Rancor Toggle For Rancor Collar --
  629.             equipSet = set_combine(equipSet,sets.TP.Rancor)
  630.         end
  631.         if TH == 'ON' then -- Use TH Toggle To Lock Full TH Set --
  632.             equipSet = set_combine(equipSet,sets.TP.TH)
  633.         end
  634.         equip(equipSet)
  635.     else
  636.         equipSet = sets.Idle
  637.         if equipSet[IdleArray[IdleIndex]] then
  638.             equipSet = equipSet[IdleArray[IdleIndex]]
  639.         end
  640.         if equipSet[WeaponArray[WeaponIndex]] then
  641.             equipSet = equipSet[WeaponArray[WeaponIndex]]
  642.         end
  643.         equip(equipSet)
  644.     end
  645. end
  646.  
  647. function buff_change(buff,gain)
  648.     buff = string.lower(buff)
  649.     if buff == "sneak attack" then
  650.         SA = gain
  651.     elseif buff == "trick attack" then
  652.         TA = gain
  653.     elseif buff == 'weakness' then -- Weakness Timer --
  654.         if gain then
  655.             send_command('timers create "Weakness" 300 up')
  656.         else
  657.             send_command('timers delete "Weakness"')
  658.         end
  659.     end
  660.     if not midaction() then
  661.         status_change(player.status)
  662.     end
  663. end
  664.  
  665. -- In Game: //gs c (command), Macro: /console gs c (command), Bind: gs c (command) --
  666. function self_command(command)
  667.     if command == 'C1' then -- Accuracy Level Toggle --
  668.         AccIndex = (AccIndex % #AccArray) + 1
  669.         status_change(player.status)
  670.         add_to_chat(158,'Accuracy Level: ' .. AccArray[AccIndex])
  671.     elseif command == 'C17' then -- Main Weapon Toggle --
  672.         WeaponIndex = (WeaponIndex % #WeaponArray) + 1
  673.         add_to_chat(158,'Main Weapon: '..WeaponArray[WeaponIndex])
  674.         status_change(player.status)
  675.     elseif command == 'C5' then -- Auto Update Gear Toggle --
  676.         status_change(player.status)
  677.         add_to_chat(158,'Auto Update Gear')
  678.     elseif command == 'C2' then -- Hybrid Toggle --
  679.         if Armor == 'Hybrid' then
  680.             Armor = 'None'
  681.             add_to_chat(123,'Hybrid Set: [Unlocked]')
  682.         else
  683.             Armor = 'Hybrid'
  684.             add_to_chat(158,'Hybrid Set: '..AccArray[AccIndex])
  685.         end
  686.         status_change(player.status)
  687.     elseif command == 'C9' then -- Full TH Set Toggle --
  688.         if TH == 'ON' then
  689.             TH = 'OFF'
  690.             add_to_chat(123,'Full TH Set: [Unlocked]')
  691.         else
  692.             TH = 'ON'
  693.             add_to_chat(158,'Full TH Set: [Locked]')
  694.         end
  695.         status_change(player.status)
  696.     elseif command == 'C7' then -- PDT Toggle --
  697.         if Armor == 'PDT' then
  698.             Armor = 'None'
  699.             add_to_chat(123,'PDT Set: [Unlocked]')
  700.         else
  701.             Armor = 'PDT'
  702.             add_to_chat(158,'PDT Set: [Locked]')
  703.         end
  704.         status_change(player.status)
  705.     elseif command == 'C15' then -- MDT Toggle --
  706.         if Armor == 'MDT' then
  707.             Armor = 'None'
  708.             add_to_chat(123,'MDT Set: [Unlocked]')
  709.         else
  710.             Armor = 'MDT'
  711.             add_to_chat(158,'MDT Set: [Locked]')
  712.         end
  713.         status_change(player.status)
  714.     elseif command == 'C3' then -- Evasion Toggle --
  715.         if Armor == 'EVA' then
  716.             Armor = 'None'
  717.             add_to_chat(123,'Evasion Set: [Unlocked]')
  718.         else
  719.             Armor = 'EVA'
  720.             add_to_chat(158,'Evasion Set: [Locked]')
  721.         end
  722.         status_change(player.status)
  723.     elseif command == 'C16' then -- Rancor Toggle --
  724.         if Rancor == 'ON' then
  725.             Rancor = 'OFF'
  726.             add_to_chat(123,'Rancor: [OFF]')
  727.         else
  728.             Rancor = 'ON'
  729.             add_to_chat(158,'Rancor: [ON]')
  730.         end
  731.         status_change(player.status)
  732.     elseif command == 'C8' then -- Distance Toggle --
  733.         if player.target.distance then
  734.             target_distance = math.floor(player.target.distance*10)/10
  735.             add_to_chat(158,'Distance: '..target_distance)
  736.         else
  737.             add_to_chat(123,'No Target Selected')
  738.         end
  739.     elseif command == 'C6' then -- Idle Toggle --
  740.         IdleIndex = (IdleIndex % #IdleArray) + 1
  741.         status_change(player.status)
  742.         add_to_chat(158,'Idle Set: ' .. IdleArray[IdleIndex])
  743.     elseif command == 'TP' then
  744.         add_to_chat(158,'TP Return: ['..tostring(player.tp)..']')
  745.     elseif command:match('^SC%d$') then
  746.         send_command('//' .. sc_map[command])
  747.     end
  748. end
  749.  
  750. function refine_waltz(spell,action)
  751.     if spell.type ~= 'Waltz' then
  752.         return
  753.     end
  754.  
  755.     if spell.name == "Healing Waltz" or spell.name == "Divine Waltz" or spell.name == "Divine Waltz II" then
  756.         return
  757.     end
  758.  
  759.     local newWaltz = spell.english
  760.     local waltzID
  761.  
  762.     local missingHP
  763.  
  764.     if spell.target.type == "SELF" then
  765.         missingHP = player.max_hp - player.hp
  766.     elseif spell.target.isallymember then
  767.         local target = find_player_in_alliance(spell.target.name)
  768.         local est_max_hp = target.hp / (target.hpp/100)
  769.         missingHP = math.floor(est_max_hp - target.hp)
  770.     end
  771.  
  772.     if missingHP ~= nil then
  773.         if player.sub_job == 'DNC' then
  774.             if missingHP < 40 and spell.target.name == player.name then
  775.                 add_to_chat(123,'Full HP!')
  776.                 cancel_spell()
  777.                 return
  778.             elseif missingHP < 150 then
  779.                 newWaltz = 'Curing Waltz'
  780.                 waltzID = 190
  781.             elseif missingHP < 300 then
  782.                 newWaltz = 'Curing Waltz II'
  783.                 waltzID = 191
  784.             else
  785.                 newWaltz = 'Curing Waltz III'
  786.                 waltzID = 192
  787.             end
  788.         else
  789.             return
  790.         end
  791.     end
  792.  
  793.     local waltzTPCost = {['Curing Waltz'] = 20, ['Curing Waltz II'] = 35, ['Curing Waltz III'] = 50, ['Curing Waltz IV'] = 65, ['Curing Waltz V'] = 80}
  794.     local tpCost = waltzTPCost[newWaltz]
  795.  
  796.     local downgrade
  797.  
  798.     if player.tp < tpCost and not buffactive.trance then
  799.  
  800.         if player.tp < 20 then
  801.             add_to_chat(123, 'Insufficient TP ['..tostring(player.tp)..']. Cancelling.')
  802.             cancel_spell()
  803.             return
  804.         elseif player.tp < 35 then
  805.             newWaltz = 'Curing Waltz'
  806.         elseif player.tp < 50 then
  807.             newWaltz = 'Curing Waltz II'
  808.         elseif player.tp < 65 then
  809.             newWaltz = 'Curing Waltz III'
  810.         elseif player.tp < 80 then
  811.             newWaltz = 'Curing Waltz IV'
  812.         end
  813.  
  814.         downgrade = 'Insufficient TP ['..tostring(player.tp)..']. Downgrading to '..newWaltz..'.'
  815.     end
  816.  
  817.     if newWaltz ~= spell.english then
  818.         send_command('@input /ja "'..newWaltz..'" '..tostring(spell.target.raw))
  819.         if downgrade then
  820.             add_to_chat(158, downgrade)
  821.         end
  822.         cancel_spell()
  823.         return
  824.     end
  825.  
  826.     if missingHP > 0 then
  827.         add_to_chat(158,'Trying to cure '..tostring(missingHP)..' HP using '..newWaltz..'.')
  828.     end
  829. end
  830.  
  831. function find_player_in_alliance(name)
  832.     for i,v in ipairs(alliance) do
  833.         for k,p in ipairs(v) do
  834.             if p.name == name then
  835.                 return p
  836.             end
  837.         end
  838.     end
  839. end
  840.  
  841. function sub_job_change(newSubjob, oldSubjob)
  842.     select_default_macro_book()
  843. end
  844.  
  845. function set_macro_page(set,book)
  846.     if not tonumber(set) then
  847.         add_to_chat(123,'Error setting macro page: Set is not a valid number ('..tostring(set)..').')
  848.         return
  849.     end
  850.     if set < 1 or set > 10 then
  851.         add_to_chat(123,'Error setting macro page: Macro set ('..tostring(set)..') must be between 1 and 10.')
  852.         return
  853.     end
  854.  
  855.     if book then
  856.         if not tonumber(book) then
  857.             add_to_chat(123,'Error setting macro page: book is not a valid number ('..tostring(book)..').')
  858.             return
  859.         end
  860.         if book < 1 or book > 20 then
  861.             add_to_chat(123,'Error setting macro page: Macro book ('..tostring(book)..') must be between 1 and 20.')
  862.             return
  863.         end
  864.         send_command('@input /macro book '..tostring(book)..';wait .1;input /macro set '..tostring(set))
  865.     else
  866.         send_command('@input /macro set '..tostring(set))
  867.     end
  868. end
  869.  
  870. function select_default_macro_book()
  871.  -- Default macro set/book
  872.  if player.sub_job == 'WAR' then
  873.   set_macro_page(1, 13)
  874.  elseif player.sub_job == 'DNC' then
  875.   set_macro_page(1, 13)
  876.  elseif player.sub_job == 'NIN' then
  877.   set_macro_page(7, 13)
  878.  else
  879.   set_macro_page(1, 13)
  880.  end
  881. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement