Item Search
     
BG-Wiki Search
Page 243 of 302 FirstFirst ... 193 233 241 242 243 244 245 253 293 ... LastLast
Results 4841 to 4860 of 6036

Thread: Gearswap Help Thread!     submit to reddit submit to twitter

  1. #4841
    Puppetmaster
    Join Date
    Sep 2015
    Posts
    73
    BG Level
    2

    Quote Originally Posted by dlsmd View Post
    i just tried this code and had no issues
    Code:
    function file_unload(new_job)
        local old_main = player.main_job
        local new_main = new_job
        job_on_load:schedule(3, new_main,old_main)
    end
    --this function would have to be the same on all files
    function job_on_load(new, old)
        add_to_chat(8,new..''..old)
        --gear to get rid of
        if old == "WHM" then
        add_to_chat(8,old)
        end
        --gear to get
        if new == "WAR" then
        add_to_chat(8,new)
        end
    end
    I just put that exact code in my test lua addon and no messages appear onscreen for me when changing between whm and war. >< Not sure where the disconnect is. Which lua file did you put that code into? A standalone lua? Gearswap.lua? A job.lua?

  2. #4842
    Bagel
    Join Date
    Dec 2012
    Posts
    1,488
    BG Level
    6

    Quote Originally Posted by Roland_J View Post
    I just put that exact code in my test lua addon and no messages appear onscreen for me when changing between whm and war. >< Not sure where the disconnect is. Which lua file did you put that code into? A standalone lua? Gearswap.lua? A job.lua?
    in 2 gearswap autoload files

    WAR.lua
    WHM.lua
    and changed my job ingame

    file_unload only runs when gearswap changes the files on its own

  3. #4843
    Puppetmaster
    Join Date
    Sep 2015
    Posts
    73
    BG Level
    2

    Well, I've loaded the following code in my whm.lua and blu.lua.
    Code:
    function file_unload(new_job)
        local old_main = player.main_job
        local new_main = new_job
        job_on_load:schedule(3, new_main,old_main)
    end
    --this function would have to be the same on all files
    function job_on_load(new, old)
        add_to_chat(8,new..''..old)
        --gear to get rid of
        if old == 'BLU' then
        add_to_chat(8,old)
    	send_command('input //put "Reraiser" satchel')
        end
    	if old == 'WHM' then
        add_to_chat(8,old)
    	send_command('input //put "Hi-reraiser" satchel')
        end
        --gear to get
        if new == 'BLU' then
        add_to_chat(8,new)
    	send_command('input //get "Reraiser" satchel')
        end
    	 if new == 'WHM' then
        add_to_chat(8,new)
    	send_command('input //get "Hi-reraiser" satchel')
        end
    end
    That code was partially working for a while but now it has quit working for me. It was printing messages on screen but not getting/putting items.


    To be honest, though, I was hoping for this to be done in a standalone .lua file. If we just make some job.lua code here then it'll just get lost on this page; when the thread grows on to the next page almost no one will see it any longer. Would anyone like to see some code like this develop and become an addon? I hope I'm not the only one because I really want to get the //get and //put code out of my load/unload functions of my job.luas; it causes me grief whenever I need to reload my .luas to test new code.

    If I can't get such an addon created maybe I'll just make keybinds to make my .luas import/export items on key-press instead of on load/unload.

    The following code is giving me an 'attempt to call string value' error message on the tempered cape line.
    Code:
    ----- <itemizer>
    send_command('bind !l'
    -- Sack
    'input //get "Tempered cape +1" sack'
    -- Case
    'input //get "Tanmogayi" case'
    'input //get "Vampirism" case'
    'input //get "Nibiru blade" case')
    -- </itemizer> --
    I've tried putting semicolons before each second ' and also inside of each ' but that didn't solve it, either. I don't want to combine the entire list into one line by putting ;wait 0.3;' between each entry because then I won't be able to manage the list to keep it up to date because it wont be lined up nicely which will make it hard to interpret and read quickly.

    On the other hand, if I could write a program that gives me two columns of text boxes - one for the item name, one for the sack, and then compiles the list with proper formatting between each input - "input //get "column1" column2;wait 0.2;" repeated for the entire list. This would allow me to keep the list in a sane format for editing purposes while avoiding the multiple-lines-problem I just ran into with send_command. If only I was better at coding to be able to make such a simple program.
    Although, if I create such a program it won't benefit the windower community, much - as it won't be in the list of addon/plugins. It sure would be nice to have an addon created for this instead.


    I've considered testing organizer to see if it avoids this problem but afaik it also doesn't offer a 'no-items-put-away-or-grabbed-if-not-a-job-change' functionality. To be honest, I'm not very sure of what array of features that Organizer offers because of the very poor documentation on it. The readme file for it looks like they took the bare-bones approach to writing it and once they were done they removed 50% of what little info was in it to begin with. If the authors are reading this, I'm very sorry, but as a newcomer to the addon this is how it makes me feel - quite lost. It makes it very hard for a newcomer to get a solid idea of what they can do with your addon. It doesn't even let me know if I can keep it from throwing my items in every which direction and making my bags a jumbled mess of randomly placed items or not through any clear means of an explanation.

  4. #4844
    Smells like Onions
    Join Date
    Dec 2015
    Posts
    1
    BG Level
    0

    Hello! Back in May, someone named Flanteus was investigating an issue where he couldn't swap in his automaton ws gearset correctly/in time to get the TP bonus from his gear for the ws, does anyone know if any progress has been made on this issue?
    showswaps shows that the midcast and aftercast are being executed.

    Here is the relevant code:
    sets.midcast.Pet.Weaponskill = {head="Karagoz Capello +1", hands="Karagoz Guanti", legs="Karagoz Pantaloni +1",
    waist="Incarnation Sash", back="Dispersal mantle", body="Pitre Tobe +1", ring1="Overbearing ring",
    ring2="Thurandaut Ring", ear1="Burana Earring"}

    function job_pet_midcast(spell, action, spellMap, eventArgs)
    if petWeaponskills:contains(spell.english) then
    classes.CustomClass = "Weaponskill"
    end
    end

  5. #4845
    Puppetmaster
    Join Date
    Sep 2015
    Posts
    73
    BG Level
    2

    I've given up on making it totally automatic - that would require creating an addon, which I do not know a sufficient amount about code to do.

    As an alternative I've gotten the following code to handle importing items only on a job change.
    Code:
    windower.register_event('job change',function(job)
    As for handling gear exporting I have made a .txt file in my scripts folder that exports all the gear. I want to bind this to the same key for all of my job.luas so that I just press this key before changing jobs. My problem is that the following code does not work ingame.
    Code:
    send_command('bind !` /console exec blu.txt')
    When I type /console exec blu.txt ingame it works. Where is the disconnect? I guess I need to change /console or /console exec to something else but I'm not sure what that is.

  6. #4846
    Bagel
    Join Date
    Dec 2012
    Posts
    1,488
    BG Level
    6

    Quote Originally Posted by Roland_J View Post
    I've given up on making it totally automatic - that would require creating an addon, which I do not know a sufficient amount about code to do.

    As an alternative I've gotten the following code to handle importing items only on a job change.
    Code:
    windower.register_event('job change',function(job)
    As for handling gear exporting I have made a .txt file in my scripts folder that exports all the gear. I want to bind this to the same key for all of my job.luas so that I just press this key before changing jobs. My problem is that the following code does not work ingame.
    Code:
    send_command('bind !` /console exec blu.txt')
    When I type /console exec blu.txt ingame it works. Where is the disconnect? I guess I need to change /console or /console exec to something else but I'm not sure what that is.
    this just sets the bind not actually triggering it
    send_command('bind !` /console exec blu.txt')
    you still need to press ctrl+`

  7. #4847
    Melee Summoner
    Join Date
    May 2014
    Posts
    38
    BG Level
    1
    FFXI Server
    Bismarck

    Quote Originally Posted by Speedy View Post
    Having issues with casting. Occassionally, either my Assim. Shalwar +1, Hashishin Tayt +1, Luhluza Charuqs +1 or Hashi. Basmak +1, will equip randomly when casting offensive spells.
    I do not have Diffusion, Burst Affinity or Efflux active. They're either on cooldown or not used at all. I suspect it's something in the code. Any assistance is appreciated.
    Still looking for any help with this. Thanks!

    Spoiler: show
    Code:
    -------------------------------------------------------------------------------------------------------------------
    -- Setup functions for this job.  Generally should not be modified.
    -------------------------------------------------------------------------------------------------------------------
     
    -- Initialization function for this job file.
    function get_sets()
        mote_include_version = 2
         
        -- Load and initialize the include file.
        include('Mote-Include.lua')
        include('organizer-lib')
    end
     
     
    -- Setup vars that are user-independent.  state.Buff vars initialized here will automatically be tracked.
    function job_setup()
        state.Buff['Burst Affinity'] = buffactive['Burst Affinity'] or false
        state.Buff['Chain Affinity'] = buffactive['Chain Affinity'] or false
        state.Buff.Convergence = buffactive.Convergence or false
        state.Buff.Diffusion = buffactive.Diffusion or false
        state.Buff.Efflux = buffactive.Efflux or false
         
        state.Buff['Unbridled Learning'] = buffactive['Unbridled Learning'] or false
     
        state.MagicBurst = M(false, 'Magic Burst')
     
        blue_magic_maps = {}
         
        -- Mappings for gear sets to use for various blue magic spells.
        -- While Str isn't listed for each, it's generally assumed as being at least
        -- moderately signficant, even for spells with other mods.
         
        -- Physical Spells --
         
        -- Physical spells with no particular (or known) stat mods
        blue_magic_maps.Physical = S{
            'Bilgestorm'
        }
     
        -- Spells with heavy accuracy penalties, that need to prioritize accuracy first.
        blue_magic_maps.PhysicalAcc = S{
            'Heavy Strike',
        }
     
        -- Physical spells with Str stat mod
        blue_magic_maps.PhysicalStr = S{
            'Battle Dance','Bloodrake','Death Scissors','Dimensional Death',
            'Empty Thrash','Quadrastrike','Sinker Drill','Spinal Cleave',
            'Uppercut','Vertical Cleave'
        }
             
        -- Physical spells with Dex stat mod
        blue_magic_maps.PhysicalDex = S{
            'Amorphic Spikes','Asuran Claws','Barbed Crescent','Claw Cyclone','Disseverment',
            'Foot Kick','Frenetic Rip','Goblin Rush','Hysteric Barrage','Paralyzing Triad',
            'Seedspray','Sickle Slash','Smite of Rage','Terror Touch','Thrashing Assault',
            'Vanity Dive'
        }
             
        -- Physical spells with Vit stat mod
        blue_magic_maps.PhysicalVit = S{
            'Body Slam','Cannonball','Delta Thrust','Glutinous Dart','Grand Slam',
            'Power Attack','Quad. Continuum','Sprout Smack','Sub-zero Smash'
        }
             
        -- Physical spells with Agi stat mod
        blue_magic_maps.PhysicalAgi = S{
            'Benthic Typhoon','Feather Storm','Helldive','Hydro Shot','Jet Stream',
            'Pinecone Bomb','Spiral Spin','Wild Oats'
        }
     
        -- Physical spells with Int stat mod
        blue_magic_maps.PhysicalInt = S{
            'Mandibular Bite','Queasyshroom'
        }
     
        -- Physical spells with Mnd stat mod
        blue_magic_maps.PhysicalMnd = S{
            'Ram Charge','Screwdriver','Tourbillion'
        }
     
        -- Physical spells with Chr stat mod
        blue_magic_maps.PhysicalChr = S{
            'Bludgeon'
        }
     
        -- Physical spells with HP stat mod
        blue_magic_maps.PhysicalHP = S{
            'Final Sting'
        }
     
        -- Magical Spells --
     
        -- Magical spells with the typical Int mod
        blue_magic_maps.Magical = S{
            'Blastbomb','Blazing Bound','Bomb Toss','Cursed Sphere','Dark Orb','Death Ray',
            'Diffusion Ray','Droning Whirlwind','Embalming Earth','Firespit','Foul Waters',
            'Ice Break','Leafstorm','Maelstrom','Rail Cannon','Regurgitation','Rending Deluge',
            'Retinal Glare','Subduction','Tem. Upheaval','Water Bomb', 'Searing Tempest', 'Blinding Fulgor',
            'Spectral Floe', 'Scouring Spate', 'Anvil Lightning', 'Silent Storm', 'Entomb', 'Tenebral Crush'
        }
     
        -- Magical spells with a primary Mnd mod
        blue_magic_maps.MagicalMnd = S{
            'Acrid Stream','Evryone. Grudge','Magic Hammer','Mind Blast'
        }
     
        -- Magical spells with a primary Chr mod
        blue_magic_maps.MagicalChr = S{
            'Eyes On Me','Mysterious Light'
        }
     
        -- Magical spells with a Vit stat mod (on top of Int)
        blue_magic_maps.MagicalVit = S{
            'Thermal Pulse'
        }
     
        -- Magical spells with a Dex stat mod (on top of Int)
        blue_magic_maps.MagicalDex = S{
            'Charged Whisker','Gates of Hades'
        }
                 
        -- Magical spells (generally debuffs) that we want to focus on magic accuracy over damage.
        -- Add Int for damage where available, though.
        blue_magic_maps.MagicAccuracy = S{
            '1000 Needles','Absolute Terror','Actinic Burst','Auroral Drape','Awful Eye',
            'Blank Gaze','Blistering Roar','Blood Drain','Blood Saber','Chaotic Eye',
            'Cimicine Discharge','Cold Wave','Corrosive Ooze','Demoralizing Roar','Digest',
            'Dream Flower','Enervation','Feather Tickle','Filamented Hold','Frightful Roar',
            'Geist Wall','Hecatomb Wave','Infrasonics','Jettatura','Light of Penance',
            'Lowing','Mind Blast','Mortal Ray','MP Drainkiss','Osmosis','Reaving Wind',
            'Sandspin','Sandspray','Sheep Song','Soporific','Sound Blast','Stinking Gas',
            'Sub-zero Smash','Venom Shell','Voracious Trunk','Yawn'
        }
             
        -- Breath-based spells
        blue_magic_maps.Breath = S{
            'Bad Breath','Flying Hip Press','Frost Breath','Heat Breath',
            'Hecatomb Wave','Magnetite Cloud','Poison Breath','Radiant Breath','Self-Destruct',
            'Thunder Breath','Vapor Spray','Wind Breath'
        }
     
        -- Stun spells
        blue_magic_maps.Stun = S{
            'Blitzstrahl','Frypan','Head Butt','Sudden Lunge','Tail slap','Temporal Shift',
            'Thunderbolt','Whirl of Rage'
        }
             
        -- Healing spells
        blue_magic_maps.Healing = S{
            'Healing Breeze','Magic Fruit','Plenilune Embrace','Pollen','Restoral','White Wind',
            'Wild Carrot'
        }
         
        -- Buffs that depend on blue magic skill
        blue_magic_maps.SkillBasedBuff = S{
            'Barrier Tusk','Diamondhide','Magic Barrier','Metallic Body','Plasma Charge',
            'Pyric Bulwark','Reactor Cool',
        }
     
        -- Other general buffs
        blue_magic_maps.Buff = S{
            'Amplification','Animating Wail','Battery Charge','Carcharian Verve','Cocoon',
            'Erratic Flutter','Exuviation','Fantod','Feather Barrier','Harden Shell',
            'Memento Mori','Nat. Meditation','Occultation','Orcish Counterstance','Refueling',
            'Regeneration','Saline Coat','Triumphant Roar','Warm-Up','Winds of Promyvion',
            'Zephyr Mantle'
        }
         
         
        -- Spells that require Unbridled Learning to cast.
        unbridled_spells = S{
            'Absolute Terror','Bilgestorm','Blistering Roar','Bloodrake','Carcharian Verve',
            'Crashing Thunder','Droning Whirlwind','Gates of Hades','Harden Shell','Polar Roar',
            'Pyric Bulwark','Thunderbolt','Tourbillion','Uproot','Mighty Guard','Cruel Joke','Cesspool','Tearing Gust'
        }
    end
     
    -------------------------------------------------------------------------------------------------------------------
    -- User setup functions for this job.  Recommend that these be overridden in a sidecar file.
    -------------------------------------------------------------------------------------------------------------------
     
    -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
    function user_setup()
        state.OffenseMode:options('Normal', 'Acc', 'Refresh', 'Learning')
        state.WeaponskillMode:options('Normal', 'Acc')
        state.CastingMode:options('Normal', 'Resistant')
        state.IdleMode:options('Normal', 'PDT', 'Refresh', 'Learning')
        state.HybridMode:options('Normal', 'PDT')
         
        state.MagicBurst = M(false, 'Magic Burst')
     
        -- Additional local binds
        send_command('bind ^` input /ja "Chain Affinity" <me>')
        send_command('bind !` input /ja "Burst Affinity" <me>')
        send_command('bind @` input /ja "Efflux" <me>')
        send_command('bind ` input /ma "Sudden Lunge" <t>')
        send_command('bind delete input /ws "Chant du Cygne" <t>')
        send_command('bind end input /ja "Diffusion" <me>')
        send_command('bind home input /ja "Unbridled Learning" <me>')
        send_command('bind ^- input /ma "Carcharian Verve" <me>')
        send_command('bind ^= input /ma "Mighty Guard" <me>')
        send_command('bind !- gs c toggle MagicBurst')
     
        update_combat_form()
        select_default_macro_book()
    end
     
    -- Called when this job file is unloaded (eg: job change)
    function user_unload()
        send_command('unbind `')
        send_command('unbind ^`')
        send_command('unbind ^-')
        send_command('unbind ^=')
        send_command('unbind !`')
        send_command('unbind !-')
        send_command('unbind !=')
        send_command('unbind @`')
        send_command('unbind @-')
        send_command('unbind @=')
        send_command('unbind delete')
        send_command('unbind end')
        send_command('unbind home')
    end
     
    -- Set up gear sets.
    function init_gear_sets()
        --------------------------------------
        -- Start defining the sets
        --------------------------------------
     
        sets.buff['Burst Affinity'] = {legs="Assimilator's Shalwar +1",feet="Hashishin Basmak +1"}
        sets.buff['Chain Affinity'] = {head="Hashishin Kavuk", feet="Assimilator's Charuqs +1"}
        sets.buff.Convergence = {}
        sets.buff.Enchainment = {}
        sets.buff.Diffusion = {feet="Luhlaza Charuqs +1"}
        sets.buff.Efflux = {legs="Hashishin Tayt +1"}
     
         
        -- Precast Sets
        organizer_items = {
            claid="Claidheamh Soluis",
            nblade={name="Nibiru Blade", augments={'DEX+10','Accuracy+20','Mag. Acc.+15'}},
            nblade2={name="Nibiru Blade", augments={'STR+10','Attack+20','"Store TP"+3'}},
            nclub="Nibiru Cudgel"}
         
        -- Precast sets to enhance JAs
        sets.precast.JA['Azure Lore'] = {hands="Luhlaza Bazubands"}
     
     
        -- Waltz set (chr and vit)
        sets.precast.Waltz = {}
             
        -- Don't need any special gear for Healing Waltz.
        sets.precast.Waltz['Healing Waltz'] = {}
     
        -- Fast cast sets for spells
         
        sets.precast.FC = {ammo="Impatiens",
            head="Carmine Mask",neck="Orunmila's Torque",ear1="Enchanter Earring +1",ear2="Loquacious Earring",
            body="Luhlaza Jubbah +1",hands="Leyline Gloves",ring1="Weatherspoon Ring",ring2="Prolix Ring",
            back="Swith Cape +1",waist="Witful Belt",legs="Psycloth Lappas",feet="Chelona Boots +1"} 
             
        sets.precast.FC['Blue Magic'] = set_combine(sets.precast.FC, {body="Hashishin Mintan +1"})
     
            
        -- Weaponskill sets
        -- Default set for any weaponskill that isn't any more specifically defined
        sets.precast.WS = {ammo="Expeditious Pinion",
            head="Adhemar Bonnet",neck=gear.ElementalGorget,ear1="Cessance Earring",ear2="Brutal Earring",
            body="Abnoba Kaftan",hands="Rawhide Gloves",ring1="Ramuh Ring",ring2="Epona's Ring",
            back="Rancorous Mantle",waist=gear.ElementalBelt,legs="Samnuha Tights",feet="Thereoid Greaves"}
         
        sets.precast.WS.acc = set_combine(sets.precast.WS, {ammpo="Honed Tathlum"}) 
     
        -- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
        sets.precast.WS['Chant du Cygne'] = set_combine(sets.precast.WS, {
            ear1="Moonshade Earring",legs="Samnuha Tights"})
         
        sets.precast.WS['Requiescat'] = set_combine(sets.precast.WS, {ammo="Hydrocera",
            head="Carmine Mask",ear1="Moonshade Earring",ring1="Aquasoul Ring",back="Bleating Mantle"})
         
        sets.precast.WS['Requiescat'].acc = set_combine(sets.precast.WS['Requiescat'], {back="Bleating Mantle"})
     
        sets.precast.WS['Sanguine Blade'] = {
            head=gear.hag_mab_hat,neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Novio Earring",
            body="Amalric Doublet",hands="Amalric Gages",ring1="Shiva Ring +1",ring2="Shiva Ring +1",
            back="Cornflower Cape",waist="Yamabuki-no-Obi",legs="Hagondes Pants +1",feet="Hashishin Basmak +1"}
             
        sets.precast.WS['Flash Nova'] = set_combine(sets.precast.WS['Sanguine Blade'], {ring1="Weatherspoon Ring"})
         
        sets.precast.WS['Realmrazer'] = set_combine(sets.precast.WS, {
            head="Adhemar Bonnet",ring1="Aquasoul Ring",ring2="Aquasoul Ring",
            back="Bleating Mantle",legs="Samnuha Tights"})
         
         
        -- Midcast Sets
        sets.midcast.FastRecast = {}
             
        sets.midcast['Blue Magic'] = {}
         
        -- Physical Spells --
         
        sets.midcast['Blue Magic'].Physical = {ammo="Honed Tathlum",
            head="Adhemar Bonnet",neck="Caro Necklace",ear1="Vulcan's Pearl",ear2="Flame Pearl",
            body="Adhemar Jacket",hands="Rawhide Gloves",ring1="Pyrosoul Ring",ring2="Pyrosoul Ring",
            back="Cornflower Cape",waist="Prosilio Belt +1",legs="Samnuha Tights",feet="Rawhide Boots"}
     
        sets.midcast['Blue Magic'].PhysicalAcc = set_combine(sets.midcast['Blue Magic'].Physical, {
            neck="Clotharius Torque",hands="Leyline Gloves",back="Grounded Mantle +1",waist="Olseni Belt",feet=gear.accdt_feet})
     
        sets.midcast['Blue Magic'].PhysicalStr = set_combine(sets.midcast['Blue Magic'].Physical, {})
     
        sets.midcast['Blue Magic'].PhysicalDex = set_combine(sets.midcast['Blue Magic'].Physical, {})
     
        sets.midcast['Blue Magic'].PhysicalVit = set_combine(sets.midcast['Blue Magic'].Physical, {})
     
        sets.midcast['Blue Magic'].PhysicalAgi = set_combine(sets.midcast['Blue Magic'].Physical, {})
     
        sets.midcast['Blue Magic'].PhysicalInt = set_combine(sets.midcast['Blue Magic'].Physical, {})
     
        sets.midcast['Blue Magic'].PhysicalMnd = set_combine(sets.midcast['Blue Magic'].Physical, {})
     
        sets.midcast['Blue Magic'].PhysicalChr = set_combine(sets.midcast['Blue Magic'].Physical, {})
     
        sets.midcast['Blue Magic'].PhysicalHP = set_combine(sets.midcast['Blue Magic'].Physical, {})
     
     
        -- Magical Spells --
         
        sets.midcast['Blue Magic'].Magical = {ammo="Ghastly Tathlum +1",
            head=gear.hag_mab_hat,neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Novio Earring",
            body="Amalric Doublet",hands="Amalric Gages",ring1="Shiva Ring +1",ring2="Shiva Ring +1",
            back="Cornflower Cape",waist="Yamabuki-no-Obi",legs="Amalric Slops",feet="Amalric Nails"}
     
        sets.midcast['Blue Magic'].Magical.Resistant = set_combine(sets.midcast['Blue Magic'].Magical,
            {ammo="Mavi Tathlum",ear1="Enchanter Earring +1",ear2="Gwati Earring",head="Helios Band",body="Hashishin Mintan +1",
            hands="Leyline Gloves",ring1="Weatherspoon Ring",legs="Psycloth Lappas",feet="Hashishin Basmak +1"})
             
        sets.midcast['Blue Magic'].MagicAccuracy = set_combine(sets.midcast['Blue Magic'].Magical, {ammo="Mavi Tathlum",
            head="Helios Band",ear1="Enchanter Earring +1",ear2="Gwati Earring",body="Hashishin Mintan +1",ring1="Weatherspoon Ring",legs="Psycloth Lappas"})   
         
        sets.midcast['Blue Magic'].MagicalMnd = set_combine(sets.midcast['Blue Magic'].Magical,
            {hands="Telchine Gloves",ring1="Aquasoul Ring",ring2="Aquasoul Ring",back="Cornflower Cape",
            legs="Telchine Braconi",feet="Medium's Sabots"})
     
        sets.midcast['Blue Magic'].MagicalChr = set_combine(sets.midcast['Blue Magic'].Magical)
        sets.midcast['Blue Magic'].MagicalVit = set_combine(sets.midcast['Blue Magic'].Magical, {})
        sets.midcast['Blue Magic'].MagicalDex = set_combine(sets.midcast['Blue Magic'].Magical, {})
        sets.midcast['Blue Magic']['Tenebral Crush'] = set_combine(sets.midcast['Blue Magic'].Magical, {head="Pixie Hairpin +1"})
     
        -- Breath Spells --
         
        sets.midcast['Blue Magic'].Breath = {ammo="Mavi Tathlum",
            neck="Sanctity Necklace",ear1="Enchanter Earring +1",ear2="Gwati Earring",
            hands="Amalric Gages",back="Cornflower Cape",legs="Psycloth Lappas",feet="Medium's Sabots"}
     
        -- Other Types --
         
        sets.midcast['Blue Magic'].Stun = set_combine(sets.midcast['Blue Magic'].MagicAccuracy, {head="Carmine Mask",neck="Sanctity Necklace",ear1="Steelflash Earring",ring2="Patricius Ring",
            waist="Olseni Belt",feet=gear.herc_feet_TP})
             
        sets.midcast['Blue Magic']['White Wind'] = set_combine(sets.midcast['Blue Magic'].Healing, {})
     
        sets.midcast['Blue Magic'].Healing = {
            head="Telchine Cap",neck="Colossus's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
            body="Hashishin Mintan +1",hands="Telchine Gloves",ring1="Aquasoul Ring",ring2="Aquasoul Ring",
            back="Tempered Cape +1",waist="Bishop's Sash",legs="Telchine Braconi",feet="Medium's Sabots"}
     
        sets.midcast['Blue Magic'].SkillBasedBuff = {ammo="Mavi Tathlum",
            body="Assimilator's Jubbah +1",back="Cornflower Cape",legs="Hashishin Tayt +1",feet="Luhlaza Charuqs +1"}
     
        sets.midcast['Blue Magic'].Buff = set_combine(sets.midcast['Blue Magic'].SkillBasedBuff, {})
         
        sets.midcast.Protect = {ring1="Sheltered Ring"}
        sets.midcast.Protectra = {ring1="Sheltered Ring"}
        sets.midcast.Shell = {ring1="Sheltered Ring"}
        sets.midcast.Shellra = {ring1="Sheltered Ring"}
        sets.midcast.Refresh = {waist="Gishdubar Sash"}
         
         
        -- Sets to return to when not performing an action.
     
        -- Gear for learning spells: +skill and AF hands.
        sets.Learning = {ammo="Mavi Tathlum",body="Assimilator's Jubbah +1",hands="Assimilator's Bazubands",
            back="Cornflower Cape",legs="Hashishin Tayt +1",feet="Luhlaza Charuqs +1"}
            --head="Luhlaza Keffiyeh"
     
     
        sets.latent_refresh = {}
     
        -- Resting sets
        sets.resting = {
            head="Iuitl Headgear +1",neck="Wiglen Gorget",
            body="Assimilator's Jubbah +1",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",feet="Chelona Boots +1"}
         
        -- Idle sets
        sets.idle = {ammo="Impatiens",
            head="Rawhide Mask",neck="Wiglen Gorget",ear1="Ethereal Earring",ear2="Loquacious Earring",
            body="Assimilator's Jubbah +1",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
            back="Umbra Cape",waist="Flume Belt",legs="Crimson Cuisses",feet="Serpentes Sabots"}
     
        sets.idle.PDT = {
            head="Iuitl Headgear +1",neck="Twilight Torque",ear1="Ethereal Earring",ear2="Loquacious Earring",
            body="Emet Harness +1",hands="Umuthi Gloves",ring1="Defending Ring",ring2=gear.DarkRing.physical,
            back="Umbra Cape",waist="Flume Belt",legs="Hagondes Pants +1",feet=gear.accdt_feet}
     
        sets.idle.Town = {
            head="Adhemar Bonnet",neck="Clotharius Torque",ear1="Cessance Earring",ear2="Brutal Earring",
            body="Adhemar Jacket",hands=gear.herc_hands_TP,ring1="Epona's Ring",ring2="Petrov Ring",
            back="Bleating Mantle",waist="Windbuffet Belt +1",legs="Crimson Cuisses",feet=gear.herc_feet_TP}
     
        sets.idle.Learning = set_combine(sets.idle, sets.Learning)
        sets.idle.Refresh = set_combine(sets.idle, {legs="Lengo Pants"})
     
         
        -- Defense sets
        sets.defense.PDT = {
            head="Iuitl Headgear +1",neck="Twilight Torque",ear1="Ethereal Earring",ear2="Loquacious Earring",
            body="Emet Harness +1",hands="Umuthi Gloves",ring1="Defending Ring",ring2=gear.DarkRing.physical,
            back="Umbra Cape",waist="Flume Belt",legs="Hagondes Pants +1",feet=gear.accdt_feet}
     
        sets.defense.MDT = {
            head="Helios Band",neck="Twilight Torque",ear1="Mujin Stud",ear2="Sanare Earring",
            body="Hashishin Mintan +1",hands="Amalric Gages",ring1="Defending Ring",ring2="Shadow Ring",
            back="Engulfer Cape +1",waist="Flume Belt",legs="Hashishin Tayt +1",feet="Amalric Nails"}
     
        sets.Kiting = {legs="Crimson Cuisses"}
     
        -- Engaged sets
     
        -- Variations for TP weapon and (optional) offense/defense modes.  Code will fall back on previous
        -- sets if more refined versions aren't defined.
        -- If you create a set with both offense and defense modes, the offense mode should be first.
        -- EG: sets.engaged.Dagger.Accuracy.Evasion
         
        -- Normal melee group
        sets.engaged = {ammo="Ginsen",
            head="Adhemar Bonnet",neck="Asperity Necklace",ear1="Cessance Earring",ear2="Brutal Earring",
            body="Adhemar Jacket",hands=gear.herc_hands_TP,ring1="Petrov Ring",ring2="Epona's Ring",
            back="Bleating Mantle",waist="Windbuffet Belt +1",legs="Samnuha Tights",feet=gear.herc_feet_TP}
        sets.engaged.Acc = set_combine(sets.engaged, {ammo="Honed Tathlum",
            head="Carmine Mask",neck="Clotharius Torque",ear2="Steelflash Earring",
            hands="Leyline Gloves",back="Grounded Mantle +1",waist="Olseni Belt"})
             
        sets.engaged.PDT = {
            head="Iuitl Headgear +1",neck="Twilight Torque",ear1="Cessance Earring",ear2="Brutal Earring",
            body="Emet Harness +1",hands="Umuthi Gloves",ring1="Defending Ring",ring2=gear.DarkRing.physical,
            back="Umbra Cape",waist="Windbuffet Belt +1",legs="Samnuha Tights",feet=gear.accdt_feet}    
     
        sets.engaged.Refresh = set_combine(sets.engaged, {head="Rawhide Mask",body="Assimilator's Jubbah +1",legs="Lengo Pants"})
        sets.engaged.DW = set_combine(sets.engaged, {})
        sets.engaged.DW.Acc = set_combine(sets.engaged.Acc, {})
        sets.engaged.DW.Refresh = set_combine(sets.engaged.Refresh, {})
        sets.engaged.Learning = set_combine(sets.engaged, sets.Learning)
        sets.engaged.DW.Learning = set_combine(sets.engaged.DW, sets.Learning)
     
        sets.self_healing = {ring1="Kunaji Ring",ring2="Asklepian Ring",waist="Gishdubar Sash"}
         
        sets.MagicBurst = {head="Helios Band",hands="Helios Gloves",ring1="Locus Ring",ring2="Mujin Band",back="Seshaw Cape",feet="Helios Boots"}
    end
     
    -------------------------------------------------------------------------------------------------------------------
    -- Job-specific hooks for standard casting events.
    -------------------------------------------------------------------------------------------------------------------
     
    -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
    -- Set eventArgs.useMidcastGear to true if we want midcast gear equipped on precast.
    function job_precast(spell, action, spellMap, eventArgs)
        if unbridled_spells:contains(spell.english) and not state.Buff['Unbridled Learning'] then
            eventArgs.cancel = true
            windower.send_command('@input /ja "Unbridled Learning" <me>; wait 1.5; input /ma "'..spell.name..'" '..spell.target.name)
        end
        if (spell.type:endswith('Magic') or spell.type == "Ninjutsu") and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
            cancel_spell()
            send_command('input /item "Echo Drops" <me>')
        end
        if spell.english == 'Berserk' then 
            if buffactive.Berserk then -- Change Berserk To Aggressor If Berserk Is On --
            cancel_spell()
            send_command('input /ja Aggressor <me>')
            end   
        end
    end
     
    -- Run after the default midcast() is done.
    -- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
    function job_post_midcast(spell, action, spellMap, eventArgs)
        -- Add enhancement gear for Chain Affinity, etc.
        if spell.skill == 'Blue Magic' then
            for buff,active in pairs(state.Buff) do
                if active and sets.buff[buff] then
                    equip(sets.buff[buff])
                end
            end
            if spellMap == 'Healing' and spell.target.type == 'SELF' and sets.self_healing then
                equip(sets.self_healing)
            end
        end
     
        -- If in learning mode, keep on gear intended to help with that, regardless of action.
        if state.OffenseMode.value == 'Learning' then
            equip(sets.Learning)
        end
         
        if state.MagicBurst.value and spellMap:contains('Magical') then
            if buffactive['Burst Affinity'] or buffactive['Azure Lore'] then
                equip(sets.MagicBurst)
            end
        end
         
    end
    -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
    function job_aftercast(spell, action, spellMap, eventArgs)
     
        if not (buffactive['Burst Affinity'] or buffactive['Azure Lore']) then
        state.MagicBurst:reset()
        end
         
    end 
     
     
    -------------------------------------------------------------------------------------------------------------------
    -- Job-specific hooks for non-casting events.
    -------------------------------------------------------------------------------------------------------------------
     
    -- Called when a player gains or loses a buff.
    -- buff == buff gained or lost
    -- gain == true if the buff was gained, false if it was lost.
    function job_buff_change(buff, gain)
        if state.Buff[buff] ~= nil then
            state.Buff[buff] = gain
        end
    end
     
    -------------------------------------------------------------------------------------------------------------------
    -- User code that supplements standard library decisions.
    -------------------------------------------------------------------------------------------------------------------
     
    -- Custom spell mapping.
    -- Return custom spellMap value that can override the default spell mapping.
    -- Don't return anything to allow default spell mapping to be used.
    function job_get_spell_map(spell, default_spell_map)
        if spell.skill == 'Blue Magic' then
            for category,spell_list in pairs(blue_magic_maps) do
                if spell_list:contains(spell.english) then
                    return category
                end
            end
        end
    end
     
    -- Modify the default idle set after it was constructed.
    function customize_idle_set(idleSet)
        if player.mpp < 51 then
            set_combine(idleSet, sets.latent_refresh)
        end
         
        if world.area:contains('Adoulin') then
            idleSet = set_combine(sets.idle.Town, {body="Councilor's Garb"})
        end
         
        return idleSet
    end
     
    -- Called by the 'update' self-command, for common needs.
    -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
    function job_update(cmdParams, eventArgs)
        update_combat_form()
    end
     
     
    -------------------------------------------------------------------------------------------------------------------
    -- Utility functions specific to this job.
    -------------------------------------------------------------------------------------------------------------------
     
    function update_combat_form()
        -- Check for H2H or single-wielding
        if player.equipment.sub == "Genbu's Shield" or player.equipment.sub == 'empty' then
            state.CombatForm:reset()
        else
            state.CombatForm:set('DW')
        end
    end
     
     
    -- Select default macro book on initial load or subjob change.
    function select_default_macro_book()
        -- Default macro set/book
        if player.sub_job == 'WAR' then
            set_macro_page(2, 9)
        else
            set_macro_page(1, 9)
        end
    end

  8. #4848
    Bagel
    Join Date
    Dec 2012
    Posts
    1,488
    BG Level
    6

    Quote Originally Posted by Speedy View Post
    Still looking for any help with this. Thanks!
    i dont know anything about how mots includes work so i cant help you

  9. #4849
    Melee Summoner
    Join Date
    May 2014
    Posts
    38
    BG Level
    1
    FFXI Server
    Bismarck

    Quote Originally Posted by dlsmd View Post
    i dont know anything about how mots includes work so i cant help you
    No worries, hopefully somebody else does.

  10. #4850
    Puppetmaster
    Join Date
    Sep 2015
    Posts
    73
    BG Level
    2

    Quote Originally Posted by dlsmd View Post
    this just sets the bind not actually triggering it
    send_command('bind !` /console exec blu.txt')
    you still need to press ctrl+`
    Oh, the insult XD Yes, I pressed that key ingame and nothing happened. That is the problem. Try it yourself. I need to change the code to something else but I don't know what.

  11. #4851
    Bagel
    Join Date
    Dec 2012
    Posts
    1,488
    BG Level
    6

    Quote Originally Posted by Roland_J View Post
    Oh, the insult XD Yes, I pressed that key ingame and nothing happened. That is the problem. Try it yourself. I need to change the code to something else but I don't know what.
    then try just this
    send_command('bind !` exec blu.txt')

  12. #4852
    Puppetmaster
    Join Date
    Sep 2015
    Posts
    73
    BG Level
    2

    Quote Originally Posted by dlsmd View Post
    then try just this
    send_command('bind !` exec blu.txt')
    IT WORKS!! :D tyty

  13. #4853
    Bagel
    Join Date
    Dec 2012
    Posts
    1,488
    BG Level
    6

    Quote Originally Posted by Roland_J View Post
    IT WORKS!! :D tyty
    no prob

  14. #4854
    Sea Torques
    Join Date
    Aug 2006
    Posts
    518
    BG Level
    5
    FFXI Server
    Leviathan

    Nvm. Fixed

  15. #4855
    BEES OH GOD BEES
    Join Date
    Sep 2005
    Posts
    1,294
    BG Level
    6
    FFXI Server
    Bahamut
    WoW Realm
    Stormrage

    Been meaning to test it for a while now, but I went out and checked to see if pet pre and/or midcast swaps did anything for puppet WSs. Turns out it does not. My idea then is to have my gear change to puppet ws gear when the puppet hits 1000tp+, but I'm not sure how to write that as a trigger for when it happens. just changing which pet tp gear I call on depending on what TP the puppet has wouldn't do it, as the triggering event would still be needed. Am I SOL and have to trigger it manually, or is there a way to do this?

  16. #4856
    Bagel
    Join Date
    Dec 2012
    Posts
    1,488
    BG Level
    6

    Quote Originally Posted by Khelek View Post
    Been meaning to test it for a while now, but I went out and checked to see if pet pre and/or midcast swaps did anything for puppet WSs. Turns out it does not. My idea then is to have my gear change to puppet ws gear when the puppet hits 1000tp+, but I'm not sure how to write that as a trigger for when it happens. just changing which pet tp gear I call on depending on what TP the puppet has wouldn't do it, as the triggering event would still be needed. Am I SOL and have to trigger it manually, or is there a way to do this?
    pet ws's show in the pet_midcast/pet_aftercast functions

    but if thats not good enuf
    you would probably want to use a packet watch system
    then watch for the pet update packet and when your pets tp == 1000 equip and lock you gear till it drops

  17. #4857
    RIDE ARMOR
    Join Date
    Dec 2015
    Posts
    12
    BG Level
    1

    Hello, I'm new around here so pardon me if I don't include something I should've or something but~

    I need help fixing my old RDM gearswap. It's roughly a year and a half out of date, and while I'm sure there are new templates upon which I could rebuild it there were a few special features built into mine. For instance, the F9~12 commands were a bit altered, as well as having special weapon locks for when I was engaged and the ability to change between whether or not I was to be on the front lines or not.

    If someone could help me get it back in working order I would be very much appreciative, as I wish to journey Vana'diel once more as my lolmeleeRDM!

    Code:
    -------------------------------------------------------------------------------------------------------------------
    -- Initialization function that defines sets and variables to be used.
    -------------------------------------------------------------------------------------------------------------------
    
    -- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
    
    -- Initialization function for this job file.
    function get_sets()
    	-- Load and initialize the include file.
    	include('Mote-Include.lua')
    end
    
    -- Setup vars that are user-independent.
    function job_setup()
    	state.Buff.Saboteur = buffactive.saboteur or false
        event_list = L{}
        event_list:append(windower.register_event('time change', time_change))
    end
    
    
    -- Setup vars that are user-dependent.  Can override this function in a sidecar file.
    function user_setup()
    	-- Options: Override default values
    	options.CombatModes = {'Frontline', 'Backline'}
    	options.OffenseModes = {'Normal', 'Acc', 'TH'}
    	options.DefenseModes = {'Normal', 'DT'}
    	options.WeaponskillModes = {'Normal', 'Acc', 'TH'}
    	options.CastingModes = {'Normal', 'Acc', 'TH'}
    	options.IdleModes = {'Normal'}
    	options.RestingModes = {'Normal'}
    	options.PhysicalDefenseModes = {'PDT', 'RefreshPDT'}
    	options.MagicalDefenseModes = {'MDT'}
    
    	state.Defense.PhysicalMode = 'PDT'
    	state.CombatForm = nil
    	if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
            state.CombatForm = 'DW'
    	else
            state.CombatForm = nil
    	end
    	if S{'WAR', 'THF', 'PLD', 'DRK', 'BST', 'RNG', 'SAM', 'NIN', 'BLU', 'DNC', 'RUN'}:contains(player.sub_job) then
    		state.CombatMode = 'Frontline'
    	else
    		state.CombatMode = 'Backline'
    	end
    	
    	EnhancingSpells = S{'Haste', 'Haste', 'Invisible', 'Sneak', 'Regen', 'Regen II', 'Refresh', 'Refresh II', 'Sandstorm', 'Rainstorm', 'Windstorm', 'Firestorm', 'Hailstorm', 'Klimaform'}
    	MNDPotencySpells = S{'Paralyze', 'Paralyze II', 'Slow', 'Slow II', 'Addle', 'Distract', 'Distract II', 'Frazzle', 'Frazzle II'}
    	INTAccuracySpells = S{'Sleep', 'Sleep II', 'Sleepga', 'Sleepga II', 'Break', 'Breakga', 'Bind', 'Dispel', 'Gravity', 'Gravity II'}
    	IceSpells = S{'Blizzard', 'Blizzard II', 'Blizzard III', 'Blizzard IV', 'Blizzard V', 'Blizzaga', 'Blizzaga II', 'Blizzaga III', 'Blizzaja', 'Blizzara', 'Blizzara II', 'Cryohelix'}
    
    	send_command('unbind !f11; wait 0.1; bind !f11 gs c cycle CombatMode')
    	
    	HMAtk = {name="Hagondes Cuffs +1",augments={'Phys. dmg. taken -3%','Magic dmg. taken -3%','"Mag.Atk.Bns."+21',}}
    	HMAcc = {name="Hagondes Cuffs +1",augments={'Phys. dmg. taken -3%','Mag. Acc.+26',}}
    	
    	
    	if player.sub_job == 'BLM' then
    		set_macro_page(2, 5)
    	elseif player.sub_job == 'NIN' then
    		set_macro_page(4, 5)
    	elseif player.sub_job == 'DNC' then
    		set_macro_page(5, 5)
    	elseif player.sub_job == 'DRK' then
    		set_macro_page(7, 5)
    	elseif player.sub_job == 'PLD' then
    		set_macro_page(8, 5)
    	else
    		set_macro_page(1, 5)
    	end
    end
    
    
    -- Called when this job file is unloaded (eg: job change)
    function file_unload()
    	if binds_on_unload then
    		binds_on_unload()
    	end
        event_list:map(unregister_event)
    end
    
    
    -- Define sets and vars used by this job file.
    function init_gear_sets()
    	--------------------------------------
    	-- Start defining the sets
    	--------------------------------------
    	
    	-- Precast Sets
    	
    	-- Precast sets to enhance JAs
    	sets.precast.JA['Chainspell'] = {body="Vitivation Tabard"}
    	
    
    	-- Waltz set (chr and vit)
    	sets.precast.Waltz = {main="Excalibur",sub="Buramenk'ah",ammo="Impatiens",
    		head="Atro. Chapeau +1",neck="Twilight Torque",ear1="Brutal Earring",ear2="Ethereal Earring",
    		body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Asklepian Ring",
    		back="Kumbira Cape",waist="Fucho-no-obi",legs="Atrophy Tights +1",feet="Vitivation Boots +1"}
    
    	-- Fast cast sets for spells
    	
    	-- 80% Fast Cast (including trait) for all spells, plus 5% quick cast
    	-- No other FC sets necessary.
    	sets.precast.FC = {main="Shikargar",sub="Genbu's Shield",ammo="Impatiens",
    		head="Atro. Chapeau +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Enchntr. Earring +1",
    		body="Vitivation Tabard",hands="Gende. Gages +1",ring1="Prolix Ring",ring2="Shadow Ring",
    		back="Ogapepo Cape +1",waist="Witful Belt",legs="Artsieq Hose",feet="Battlecast Gaiters"}
    
    	sets.precast.FC.Impact = set_combine(sets.precast.FC, {head=empty,body="Twilight Cloak"})
    
    	-- Weaponskill sets
    	-- Default set for any weaponskill that isn't any more specifically defined
    	sets.precast.WS = {ammo="Cheruski Needle",
    		head="Lithelimb Cap",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
    		body="Karmesin Vest",hands="Umuthi Gloves",ring1="Aqua Ring",ring2="Rajas Ring",
    		back="Bleating Mantle",waist="Wanion Belt",legs="Augury Cuisses",feet="Battlecast Gaiters"}
    		
    	sets.precast.WS.Acc = {ammo="Jukukik Feather",
    		head="Sukeroku Hachi.",neck="Iqabi Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
    		body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
    		back="Letalis Mantle",waist="Wanion Belt",legs="Atrophy Tights +1",feet="Battlecast Gaiters"}
    		
    	sets.precast.WS.DaytimeAcc = set_combine(sets.precast.WS.Acc, {ammo="Tengu-no-Hane"})
    		
    	sets.precast.WS.TH= {ammo="Cheruski Needle",
    		head="Sukeroku Hachi.",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
    		body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
    		back="Letalis Mantle",waist="Chaac Belt",legs="Atrophy Tights +1",feet="Vitivation Boots +1"}
    
    	-- Specific weaponskill sets.  Uses the base set if an appropriate WSMod version isn't found.
    	sets.precast.WS['Requiescat'] = {ammo="Oreiad's Tathlum",
    		head="Viti. Chapeau +1",neck="Soil Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
    		body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
    		back="Bleating Mantle",waist="Soil Belt",legs="Atrophy Tights +1",feet="Vitivation Boots +1"}
    		
    	sets.precast.WS['Requiescat'].Acc = {ammo="Jukukik Feather",
    		head="Sukeroku Hachi.",neck="Soil Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
    		body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
    		back="Letalis Mantle",waist="Soil Belt",legs="Atrophy Tights +1",feet="Battlecast Gaiters"}
    		
    	sets.precast.WS['Requiescat'].DaytimeAcc = set_combine(sets.precast.WS['Requiescat'].Acc, {ammo="Tengu-no-Hane"})
    		
    	sets.precast.WS['Knights of Round'] = {ammo="Cheruski Needle",
    		head="Atro. Chapeau +1",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
    		body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
    		back="Bleating Mantle",waist="Celt Belt",legs="Atrophy Tights +1",feet="Vitivation Boots +1"}
    		
    	sets.precast.WS['Knights of Round'].Acc = {ammo="Jukukik Feather",
    		head="Sukeroku Hachi.",neck="Iqabi Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
    		body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
    		back="Letalis Mantle",waist="Celt Belt",legs="Atrophy Tights +1",feet="Battlecast Gaiters"}
    		
    	sets.precast.WS['Knights of Round'].DaytimeAcc = set_combine(sets.precast.WS['Knights of Round'].Acc, {ammo="Tengu-no-Hane"})
    		
    	sets.precast.WS['Death Blossom'] = {ammo="Cheruski Needle",
    		head="Viti. Chapeau +1",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
    		body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
    		back="Bleating Mantle",waist="Celt Belt",legs="Atrophy Tights +1",feet="Vitivation Boots +1"}
    		
    	sets.precast.WS['Death Blossom'].Acc = {ammo="Jukukik Feather",
    		head="Sukeroku Hachi.",neck="Iqabi Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
    		body="Atrophy Tabard +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Rajas Ring",
    		back="Letalis Mantle",waist="Celt Belt",legs="Atrophy Tights +1",feet="Battlecast Gaiters"}
    		
    	sets.precast.WS['Death Blossom'].DaytimeAcc = set_combine(sets.precast.WS['Death Blossom'].Acc, {ammo="Tengu-no-Hane"})
    
    	sets.precast.WS['Chant du Cygne'] = {ammo="Yetshila",
    		head="Lithelimb Cap",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
    		body="Karmesin Vest",hands="Umuthi Gloves",ring1="Thundersoul Ring",ring2="Rajas Ring",
    		back="Bleating Mantle",waist="Wanion Belt",legs="Augury Cuisses",feet="Vanir Boots"}
    		
    	sets.precast.WS['Chant du Cygne'].Acc = {ammo="Jukukik Feather",
    		head="Sukeroku Hachi.",neck="Iqabi Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
    		body="Karmesin Vest",hands="Umuthi Gloves",ring1="Thundersoul Ring",ring2="Rajas Ring",
    		back="Letalis Mantle",waist="Wanion Belt",legs="Augury Cuisses",feet="Battlecast Gaiters"}
    		
    	sets.precast.WS['Chant du Cygne'].DaytimeAcc = set_combine(sets.precast.WS['Chant du Cygne'].Acc, {ammo="Tengu-no-Hane"})
    
    	
    	-- Midcast Sets
    	
    	sets.midcast.FastRecast = {main="Twebuliij",sub="Mephitis Grip",ammo="Impatiens",
    		head="Atro. Chapeau +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Ethereal Earring",
    		body="Vitivation Tabard",hands="Umuthi Gloves",ring1="Prolix Ring",ring2="Shadow Ring",
    		back="Shadow Mantle",waist="Pya'ekue Belt",legs="Artsieq Hose",feet="Battlecast Gaiters"}
    		
    	sets.midcast.FrontlineCure = {main="Excalibur",sub="Buramenk'ah",ammo="Oreiad's Tathlum",
    		head="Gende. Caubeen +1",neck="Phalaina Locket",ear1="Estq. Earring",ear2="Ethereal Earring",
    		body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Asklepian Ring",
    		back="Pahtli Cape",waist="Pya'ekue Belt",legs="Atrophy Tights +1",feet="Estq. Houseaux +2"}
    		
    	sets.midcast.BacklineCure = {main="Tamaxchi",sub="Genbu's Shield",ammo="Oreiad's Tathlum",
    		head="Gende. Caubeen +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Novia Earring",
    		body="Heka's Kalasiris",hands="Gende. Gages +1",ring1="Prolix Ring",ring2="Sirona's Ring",
    		back="Pahtli Cape",waist="Pya'ekue Belt",legs="Atrophy Tights +1",feet="Estq. Houseaux +2"}
    		
    	sets.midcast['Enhancing Magic'] = {main="Bolelabunga",sub="Genbu's Shield",ammo="Impatiens",
    		head="Umuthi Hat",neck="Colossus's Torque",ear1="Estq. Earring",ear2="Andoaa Earring",
    		body="Vitivation Tabard",hands="Atrophy Gloves +1",ring1="Prolix Ring",ring2="Defending Ring",
    		back="Estoqueur's Cape",waist="Pya'ekue Belt",legs="Atrophy Tights +1",feet="Estq. Houseaux +2"}
    		
    	sets.midcast.Enhancing = {main="Twebuliij",sub="Mephitis Grip",ammo="Impatiens",
    		head="Estoqueur's Chappel +2",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Ethereal Earring",
    		body="Estoqueur's Sayon +2",hands="Atrophy Gloves +1",ring1="Prolix Ring",ring2="Defending Ring",
    		back="Estoqueur's Cape",waist="Pya'ekue Belt",legs="Estoqueur's Fuseau +2",feet="Estoqueur's Houseaux +2"}
    		
    	sets.midcast.Refresh = set_combine(sets.midcast.Enhancing, {legs="Estoqueur's Fuseau +2"})
    
    	sets.midcast.Stoneskin = {neck="Stone Gorget",ear2="Earthcry Earring",waist="Siegel Sash",legs="Shedir Seraweels"}
    	
    	sets.midcast.Aquaveil = set_combine(sets.midcast['Enhancing Magic'], {waist="Emphatikos Rope",legs="Shedir Seraweels"})
    	
    	sets.midcast['Enfeebling Magic'] = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
    		head="Viti. Chapeau +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
    		body="Atrophy Tabard +1",hands=HMAcc,ring1="Sangoma Ring",ring2="Perception Ring",
    		back="Refraction Cape",waist="Demonry Sash",legs="Artsieq Hose",feet="Vitivation Boots +1"}
    	
    	sets.midcast['Dia III'] = {head="Viti. Chapeau +1"}
    
    	sets.midcast['Diaga'] = set_combine(sets.midcast.EnfeeblingMagic, {waist="Chaac Belt"})
    	
    	sets.midcast.MNDPotency = {main="Twebuliij",sub="Mephitis Grip",ammo="Oreiad's Tathlum",
    		head="Viti. Chapeau +1",neck="Phalaina Locket",ear1="Lifestorm Earring",ear2="Psystorm Earring",
    		body="Estoqueur's Sayon +2",hands=HMAcc,ring1="Aqua Ring",ring2="Sirona's Ring",
    		back="Refraction Cape",waist="Demonry Sash",legs="Artsieq Hose",feet="Uk'uxkaj Boots"}
    		
    	sets.midcast.MNDPotency.Acc = set_combine(sets.midcast.MNDAccuracy, {body="Estoqueur's Sayon +2",feet="Uk'uxkaj Boots"})
    	
    	sets.midcast.MNDAccuracy = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
    		head="Viti. Chapeau +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
    		body="Artsieq Jubbah",hands=HMAcc,ring1="Sangoma Ring",ring2="Perception Ring",
    		back="Ogapepo Cape +1",waist="Demonry Sash",legs="Artsieq Hose",feet="Vitivation Boots +1"}
    		
    	sets.midcast.INTPotency = {main="Twebuliij",sub="Mephitis Grip",ammo="Oreiad's Tathlum",
    		head="Atro. Chapeau +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
    		body="Estoqueur's Sayon +2",hands=HMAcc,ring1="Spiral Ring",ring2="Diamond Ring",
    		back="Refraction Cape",waist="Wanion Belt",legs="Artsieq Hose",feet="Uk'uxkaj Boots"}
    		
    	sets.midcast.INTPotency.Acc = set_combine(sets.midcast.INTAccuracy, {body="Estoqueur's Sayon +2",feet="Uk'uxkaj Boots"})
    	
    	sets.midcast.INTAccuracy = {main="Twebuliij",sub="Mephitis Grip",ammo="Impatiens",
    		head="Atro. Chapeau +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Enchntr. Earring +1",
    		body="Artsieq Jubbah",hands="Gende. Gages +1",ring1="Prolix Ring",ring2="Perception Ring",
    		back="Ogapepo Cape +1",waist="Witful Belt",legs="Artsieq Hose",feet="Vitivation Boots +1"}
    		
    	sets.midcast['ElementalEnfeeble'] = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
    		head="Atro. Chapeau +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
    		body="Artsieq Jubbah",hands=HMAcc,ring1="Sangoma Ring",ring2="Perception Ring",
    		back="Refraction Cape",waist="Wanion Belt",legs="Artsieq Hose",feet="Vitivation Boots +1"}
    
    	sets.midcast['Elemental Magic'] = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Witchstone",
    		head="Hagondes Hat +1",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Crematio Earring",
    		body="Seidr Cotehardie",hands=HMAtk,ring1="Acumen Ring",ring2="Diamond Ring",
    		back="Refraction Cape",waist="Sekhmet Corset",legs="Hagondes Pants +1",feet="Umbani Boots"}
    		
    	sets.midcast['Elemental Magic'].Acc = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Kalboron Stone",
    		head="Atro. Chapeau +1",neck="Imbodla Necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
    		body="Artsieq Jubbah",hands=HMAtk,ring1="Sangoma Ring",ring2="Diamond Ring",
    		back="Refraction Cape",waist="Wanion Belt",legs="Hagondes Pants +1",feet="Vitivation Boots +1"}
    		
    	sets.midcast['Elemental Magic'].TH = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Witchstone",
    		head="Hagondes Hat +1",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Crematio Earring",
    		body="Seidr Cotehardie",hands=HMAtk,ring1="Acumen Ring",ring2="Diamond Ring",
    		back="Refraction Cape",waist="Chaac Belt",legs="Hagondes Pants +1",feet="Umbani Boots"}
    		
    	sets.midcast.Blizzard = set_combine(sets.midcast['Elemental Magic'], {main="Ngqoqwanb"})
    		
    	sets.midcast.Blizzard.Acc = set_combine(sets.midcast['Elemental Magic'].Acc, {main="Ngqoqwanb"})
    		
    	sets.midcast.Blizzard.TH = set_combine(sets.midcast['Elemental Magic'].TH, {main="Ngqoqwanb"})
    		
    	sets.midcast.Impact = set_combine(sets.midcast['ElementalEnfeeble'], {head=empty,body="Twilight Cloak"})
    
    	sets.midcast['Dark Magic'] = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
    		head="Viti. Chapeau +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
    		body="Atrophy Tabard +1",hands=HMAcc,ring1="Sangoma Ring",ring2="Diamond Ring",
    		back="Refraction Cape",waist="Wanion Belt",legs="Artsieq Hose",feet="Vitivation Boots +1"}
    
    	sets.midcast.Stun = {main="Twebuliij",sub="Mephitis Grip",ammo="Impatiens",
    		head="Atro. Chapeau +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Enchntr. Earring +1",
    		body="Vitivation Tabard",hands="Gende. Gages +1",ring1="Prolix Ring",ring2="Diamond Ring",
    		back="Ogapepo Cape +1",waist="Witful Belt",legs="Artsieq Hose",feet="Battlecast Gaiters"}
    
    	--sets.midcast.Stun = set_combine(sets.midcast.DarkMagic, {})
    	
    	--sets.midcast.Drain = set_combine(sets.midcast.DarkMagic, {ring2="Excelsis Ring"})
    
    	--sets.midcast.Aspir = sets.midcast.Drain
    
    
    	-- Sets for special buff conditions on spells.
    
    	sets.midcast.EnhancingDuration = {hands="Atrophy Gloves +1",back="Estoqueur's Cape",feet="Estoqueur's Houseaux +2"}
    		
    	sets.buff.ComposureOther = {head="Estoqueur's Chappel +2",
    		body="Estoqueur's Sayon +2",hands="Atrophy Gloves +1",
    		back="Estoqueur's Cape",legs="Estoqueur's Fuseau +2",feet="Estoqueur's Houseaux +2"}
    
    	sets.buff.Saboteur = {hands="Estoqueur's Gantherots +2"}
    	
    
    	-- Sets to return to when not performing an action.
    	
    	-- Resting sets
    	sets.resting = {main="Bolelabunga",sub="Genbu's Shield",ammo="Impatiens",
    		head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
    		body="Atrophy Tabard +1",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shadow Ring",
    		back="Shadow Mantle",waist="Fucho-no-obi",legs="Nares Trews",feet="Serpentes Sabots"}
    	
    
    	-- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
    	sets.idle.Town = {main="Bolelabunga",sub="Genbu's Shield",ammo="Impatiens",
    		head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
    		body="Atrophy Tabard +1",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shadow Ring",
    		back="Kumbira Cape",waist="Fucho-no-obi",legs="Nares Trews",feet="Serpentes Sabots"}
    	
    	sets.idle.Field = {main="Bolelabunga",sub="Genbu's Shield",ammo="Impatiens",
    		head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
    		body="Atrophy Tabard +1",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shadow Ring",
    		back="Kumbira Cape",waist="Fucho-no-obi",legs="Nares Trews",feet="Serpentes Sabots"}
    
    	sets.idle.Weak = {main="Bolelabunga",sub="Genbu's Shield",ammo="Impatiens",
    		head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
    		body="Atrophy Tabard +1",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shadow Ring",
    		back="Kumbira Cape",waist="Fucho-no-obi",legs="Nares Trews",feet="Serpentes Sabots"}
    	
    	-- Defense sets
    	sets.defense.PDT = {main="Shikargar",sub="Genbu's Shield",ammo="Impatiens",
    		head="Lithelimb Cap",neck="Twilight Torque",ear1="Brutal Earring",ear2="Ethereal Earring",
    		body="Karmesin Vest",hands="Umuthi Gloves",ring1="Defending Ring",ring2="K'ayres Ring",
    		back="Shadow Mantle",waist="Fucho-no-obi",legs="Osmium Cuisses",feet="Battlecast Gaiters"}
    		
    	sets.defense.RefreshPDT = {main="Shikargar",sub="Genbu's Shield",ammo="Impatiens",
    		head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Brutal Earring",ear2="Ethereal Earring",
    		body="Atrophy Tabard +1",hands="Umuthi Gloves",ring1="Defending Ring",ring2="K'ayres Ring",
    		back="Shadow Mantle",waist="Fucho-no-obi",legs="Osmium Cuisses",feet="Battlecast Gaiters"}
    
    	sets.defense.MDT = {main="Shikargar",sub="Genbu's Shield",ammo="Impatiens",
    		head="Atrophy Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
    		body="Atrophy Tabard +1",hands="Vitivation Gloves +1",ring1="Defending Ring",ring2="Shadow Ring",
    		back="Refraction Cape",waist="Wanion Belt",legs="Atrophy Tights +1",feet="Umbani Boots"}
    
    	-- Engaged sets
    
    	-- Variations for TP weapon and (optional) offense/defense modes.  Code will fall back on previous
    	-- sets if more refined versions aren't defined.
    	-- If you create a set with both offense and defense modes, the offense mode should be first.
    	-- EG: sets.engaged.Dagger.Accuracy.Evasion
    	
    	-- Normal melee group
    	
    	sets.engaged = {main="Excalibur", sub="Genbu's Shield",ammo="Paeapua",
    		head="Lithelimb Cap",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
    		body="Karmesin Vest",hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Rajas Ring",
    		back="Bleating Mantle",waist="Shetal Stone",legs="Augury Cuisses",feet="Battlecast Gaiters"}
    		
    	sets.engaged.Acc = {main="Excalibur", sub="Genbu's Shield",ammo="Jukukik Feather",
    		head="Lithelimb Cap",neck="Iqabi Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
    		body="Karmesin Vest",hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Rajas Ring",
    		back="Letalis Mantle",waist="Shetal Stone",legs="Augury Cuisses",feet="Battlecast Gaiters"}
    		
    	sets.engaged.Acc.Daytime = set_combine(sets.engaged.Acc, {ammo="Tengu-no-Hane"})	
    			
    	sets.engaged.TH = {main="Excalibur", sub="Genbu's Shield",ammo="Paeapua",
    		head="Lithelimb Cap",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
    		body="Karmesin Vest",hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Rajas Ring",
    		back="Bleating Mantle",waist="Chaac Belt",legs="Augury Cuisses",feet="Battlecast Gaiters"}
    		
    	sets.engaged.DW = set_combine(sets.engaged, {sub="Buramenk'ah",ear1="Brutal Earring",ear2="Suppanomimi"})
    	
    	sets.engaged.DW.Acc = set_combine(sets.engaged.Acc, {sub="Buramenk'ah",ear1="Brutal Earring",ear2="Suppanomimi"})
    	
    	sets.engaged.DW.Acc.Daytime = set_combine(sets.engaged.Acc.Daytime, {sub="Buramenk'ah",ear1="Brutal Earring",ear2="Suppanomimi"})
    	
    	sets.engaged.DW.TH = set_combine(sets.engaged.TH, {sub="Buramenk'ah",ear1="Brutal Earring",ear2="Suppanomimi"})
    	
    	-- Defensive melee group
    	
    	sets.engaged.DT = set_combine(sets.engaged, {head="Lithelimb Cap",neck="Twilight Torque",
    		hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
    	
    	sets.engaged.Acc.DT = set_combine(sets.engaged.Acc, {head="Lithelimb Cap",neck="Twilight Torque",
    		hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
    	
    	sets.engaged.Acc.DT.Daytime = set_combine(sets.engaged.Acc.Daytime, {head="Lithelimb Cap",neck="Twilight Torque",
    		hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
    	
    	sets.engaged.TH.DT = set_combine(sets.engaged.TH, {head="Lithelimb Cap",neck="Twilight Torque",
    		hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
    	
    	sets.engaged.DW.DT = set_combine(sets.engaged.DW, {head="Lithelimb Cap",neck="Twilight Torque",
    		hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
    	
    	sets.engaged.DW.Acc.DT = set_combine(sets.engaged.DW.Acc, {head="Lithelimb Cap",neck="Twilight Torque",
    		hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
    	
    	sets.engaged.DW.Acc.DT.Daytime = set_combine(sets.engaged.DW.Acc.Daytime, {head="Lithelimb Cap",neck="Twilight Torque",
    		hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
    	
    	sets.engaged.DW.TH.DT = set_combine(sets.engaged.DW.TH, {head="Lithelimb Cap",neck="Twilight Torque",
    		hands="Umuthi Gloves",ring1="K'ayres Ring",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
    		
        sets.FrontlineWeapons = {main="Excalibur", sub="Genbu's Shield"}
    		
        sets.FrontlineWeapons.DW = {main="Excalibur", sub="Buramenk'ah"}
    end
    
    -------------------------------------------------------------------------------------------------------------------
    -- Job-specific hooks that are called to process player actions at specific points in time.
    -------------------------------------------------------------------------------------------------------------------
    
    -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
    function job_midcast(spell, action, spellMap, eventArgs)
        if spell.action_type == 'Magic' then
    		-- Default base equipment layer of fast recast.
    		equip(sets.midcast.FastRecast)
    	end
    end
    
    -- Run after the default midcast() is done.
    -- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
    function job_post_midcast(spell, action, spellMap, eventArgs)
    	if spell.skill == 'Enfeebling Magic' and state.Buff.Saboteur then
    		equip(sets.buff.Saboteur)
    	elseif spell.skill == 'Enhancing Magic' then
    		if buffactive.composure and spell.target.type == 'PLAYER' then
                if spell.english == 'Phalanx II' then
                    equip(sets.buff.EnhancingDuration)
                else
                    equip(sets.buff.ComposureOther)
                end
            else
                equip(sets.midcast.EnhancingDuration)
            end
    	end
    end
    
    -- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
    function job_aftercast(spell, action, spellMap, eventArgs)
    	if not spell.interrupted then
    		if state.Buff[spell.english] ~= nil then
    			state.Buff[spell.english] = true
    		end
    	end
    end
    
    -------------------------------------------------------------------------------------------------------------------
    -- Customization hooks for idle and melee sets, after they've been automatically constructed.
    -------------------------------------------------------------------------------------------------------------------
    
    -- Custom spell mapping.
    function job_get_spell_map(spell, default_spell_map)
    	if spell.action_type == 'Magic' then
    		if (default_spell_map == 'Cure' or default_spell_map == 'Curaga') then
    			if state.CombatMode == 'Frontline' then
    				return "FrontlineCure"
    			else
    				return "BacklineCure"
    			end
    		elseif MNDPotencySpells:contains(spell.english) then
    			return 'MNDPotency'
    		elseif spell.english == 'Silence' then
    			return 'MNDAccuracy'
    		elseif spell.english == 'Blind' then
    			return 'INTPotency'
    		elseif INTAccuracySpells:contains(spell.english) then
    			return 'INTAccuracy'
    		elseif EnhancingSpells:contains(spell.english) then
    			return 'Enhancing'
    		elseif IceSpells:contains(spell.english) then
    			return 'Blizzard'
    		end
    	end
    end
    
    -------------------------------------------------------------------------------------------------------------------
    -- General hooks for other events.
    -------------------------------------------------------------------------------------------------------------------
    
    -- Called when a player gains or loses a buff.
    -- buff == buff gained or lost
    -- gain == true if the buff was gained, false if it was lost.
    function job_buff_change(buff, gain)
    	if state.Buff[buff] ~= nil then
    		state.Buff[buff] = gain
    	end
    end
    
    function get_custom_wsmode(spell, action, spellMap, default_wsmode)
        if default_wsmode == 'Acc' and classes.Daytime then
            return 'DaytimeAcc'
        end
    end
    
    function job_time_change(new_time, old_time)
        classes.CustomMeleeGroups:clear()
        if classes.Daytime then
            classes.CustomMeleeGroups:append('Daytime')
        end
    end
    
    -------------------------------------------------------------------------------------------------------------------
    -- User code that supplements self-commands.
    -------------------------------------------------------------------------------------------------------------------
    
    -- Called by the 'update' self-command, for common needs.
    -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
    function job_update(cmdParams, eventArgs)
        if weapons then
            equip(weapons)
            weapons = nil
            eventArgs.handled = true
        end
    end
    
    
    function job_state_change(stateField, newValue, oldValue)
        if stateField == 'CombatMode' then
            if newValue == 'Frontline' then
                weapons = sets.FrontlineWeapons[state.CombatForm] or sets.FrontlineWeapons
                send_command('wait 0.1; gs disable main sub')
            else
                enable('main', 'sub')
            end
        end
    end
    
    -- Set eventArgs.handled to true if we don't want the automatic display to be run.
    function display_current_job_state(eventArgs)
    	local defenseString = ''
    	if state.Defense.Active then
    		local defMode = state.Defense.PhysicalMode
    		if state.Defense.Type == 'Magical' then
    			defMode = state.Defense.MagicalMode
    		end
    
    		defenseString = 'Defense: '..state.Defense.Type..' '..defMode..', '
    	end
    
    	local meleeString = ''
    	if state.OffenseMode == 'Normal' then
    		--meleeString = 'Melee: Weapons locked, '
    	end
    
    	add_to_chat(122,'Combat ['..state.CombatMode..'], '..meleeString..'Casting ['..state.CastingMode..'], '..meleeString..
    	'Idle ['..state.IdleMode..'], '..defenseString..'Kiting: '..on_off_names[state.Kiting])
    
    	eventArgs.handled = true
    end
    
    -------------------------------------------------------------------------------------------------------------------
    -- Utility functions specific to this job.
    -------------------------------------------------------------------------------------------------------------------
    
    -- Select default macro book on initial load or subjob change.
    function select_default_macro_book()
    	-- Default macro set/book
    	set_macro_page(1, 5)
    	
    
    	-- Default macro set/book
    	if player.sub_job == 'BLM' then
    		set_macro_page(2, 5)
    	elseif player.sub_job == 'NIN' then
    		set_macro_page(4, 5)
    	elseif player.sub_job == 'DNC' then
    		set_macro_page(5, 5)
    	elseif player.sub_job == 'DRK' then
    		set_macro_page(7, 5)
    	elseif player.sub_job == 'PLD' then
    		set_macro_page(8, 5)
    	end
    end

  18. #4858
    New Merits
    Join Date
    Sep 2010
    Posts
    223
    BG Level
    4
    FFXI Server
    Ifrit

    Is there a way to auto cancel spells if they're not instacasted? I'd like to have a "mode" where I only cast death if it's not going to have a recast. I know this wouldn't be practical for magic bursting. I am assuming it would be the same as seeing spell interrupted messages but on purpose. I can't exactly just move a little because of the speed that Death goes off at.

  19. #4859
    Bagel
    Join Date
    Dec 2012
    Posts
    1,488
    BG Level
    6

    Quote Originally Posted by Warusha View Post
    Is there a way to auto cancel spells if they're not instacasted? I'd like to have a "mode" where I only cast death if it's not going to have a recast. I know this wouldn't be practical for magic bursting. I am assuming it would be the same as seeing spell interrupted messages but on purpose. I can't exactly just move a little because of the speed that Death goes off at.
    -recast(the time between each cast) aka rapid cast
    you would have to find a way to calculate the recast on the fly and that wont be easy because the resources only have the max time for this
    --New Recast = floor( [1-Haste] * truncate( [1-Fast Cast] * Recast ) )
    -casting time(the time it takes to cast) aka fast/instant cast
    you would have to find a way to calculate the cast time on the fly and that wont be easy because the resources only have the max time for this
    --new casttime = (base cast time - fastcast %)

  20. #4860
    BEES OH GOD BEES
    Join Date
    Sep 2005
    Posts
    1,294
    BG Level
    6
    FFXI Server
    Bahamut
    WoW Realm
    Stormrage

    Quote Originally Posted by dlsmd View Post
    pet ws's show in the pet_midcast/pet_aftercast functions

    but if thats not good enuf
    you would probably want to use a packet watch system
    then watch for the pet update packet and when your pets tp == 1000 equip and lock you gear till it drops
    Yeah that's what I'm asking how to do. pet_midcast or pet_precast doesn't work for puppet WSs, as they happen instantly and automatically. your gear changes just fine, but it doesn't happen in time to affect the WSs.

Page 243 of 302 FirstFirst ... 193 233 241 242 243 244 245 253 293 ... LastLast

Similar Threads

  1. Replies: 6547
    Last Post: 2014-07-08, 22:45