Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Original: Motenten / Modified: Ballzack
- -- Haste/DW Detection Requires Gearinfo Addon
- -------------------------------------------------------------------------------------------------------------------
- -- Keybinds
- -------------------------------------------------------------------------------------------------------------------
- -- Modes: [ F9 ] Cycle Offense Modes
- -- [ CTRL+F9 ] Cycle Hybrid Modes
- -- [ WIN+F9 ] Cycle Weapon Skill Modes
- -- [ F10 ] Emergency -PDT Mode
- -- [ ALT+F10 ] Toggle Kiting Mode
- -- [ F11 ] Emergency -MDT Mode
- -- [ F12 ] Update Current Gear / Report Current Status
- -- [ CTRL+F12 ] Cycle Idle Modes
- -- [ ALT+F12 ] Cancel Emergency -PDT/-MDT Mode
- -- [ WIN+C ] Toggle Capacity Points Mode
- --
- -- Abilities: [ ] Chain Affinity
- -- [ ] Burst Affinity
- -- [ ] Efflux
- -- [ ] Diffusion
- -- [ ] Unbridled Learning
- -- [ CTRL+B ] Berserk
- -- [ CTRL+W ] Warcry
- -- [ CTRL+A ] Aggressor
- -- [ WIN+` ] Provoke
- --
- -- Spells: [ ] Blank Gaze
- -- [ WIN+N ] Nature's Meditation/Fantod
- -- [ WIN+C ] Cocoon/Reactor Cool
- -- [ WIN+E ] Erratic Flutter
- -- [ WIN+R ] Battery Charge/Refresh
- -- [ WIN+O ] Occultation
- -- [ WIN+B ] Barrier Tusk/Phalanx
- -- [ WIN+D ] Diamondhide/Stoneskin
- -- [ WIN+M ] Mighty Guard/Carcharian Verve
- -- [ ] Utsusemi: Ichi
- -- [ ] Utsusemi: Ni
- --
- -- WS: [ Home ] Savage Blade
- -- [ Delete ] Chant Du Cygne
- -- [ End ] Sanguine Blade
- --
- --
- --------------------------------------------------------------------------------------------------------------------
- -- 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')
- 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
- 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 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','Saurian Slide','Sinker Drill','Spinal Cleave','Sweeping Gouge',
- '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 with the typical Int mod
- blue_magic_maps.Magical = S{'Anvil Lightning','Blastbomb','Blazing Bound','Bomb Toss','Cursed Sphere',
- 'Droning Whirlwind','Embalming Earth','Entomb','Firespit','Foul Waters','Ice Break','Leafstorm',
- 'Maelstrom','Molting Plumage','Nectarous Deluge','Regurgitation','Rending Deluge','Scouring Spate',
- 'Silent Storm','Spectral Floe','Searing Tempest','Subduction','Tem. Upheaval','Water Bomb'}
- blue_magic_maps.MagicalDark = S{'Dark Orb','Death Ray','Eyes On Me','Evryone. Grudge','Palling Salvo',
- 'Tenebral Crush'}
- blue_magic_maps.MagicalLight = S{'Blinding Fulgor','Diffusion Ray','Radiant Breath','Rail Cannon',
- 'Retinal Glare'}
- -- Magical spells with a primary Mnd mod
- blue_magic_maps.MagicalMnd = S{'Acrid Stream','Magic Hammer','Mind Blast'}
- -- Magical spells with a primary Chr mod
- blue_magic_maps.MagicalChr = S{'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','Atra. Libations',
- 'Auroral Drape','Awful Eye', 'Blank Gaze','Blistering Roar','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','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','Occultation'}
- -- Other general buffs
- blue_magic_maps.Buff = S{'Amplification','Animating Wail','Carcharian Verve','Cocoon',
- 'Erratic Flutter','Exuviation','Fantod','Feather Barrier','Harden Shell','Memento Mori',
- 'Nat. Meditation','Orcish Counterstance','Refueling','Regeneration','Saline Coat','Triumphant Roar',
- 'Warm-Up','Winds of Promyvion','Zephyr Mantle'}
- blue_magic_maps.Refresh = S{'Battery Charge'}
- -- Spells that require Unbridled Learning to cast.
- unbridled_spells = S{'Absolute Terror','Bilgestorm','Blistering Roar','Bloodrake','Carcharian Verve','Cesspool',
- 'Crashing Thunder','Cruel Joke','Droning Whirlwind','Gates of Hades','Harden Shell','Mighty Guard',
- 'Polar Roar','Pyric Bulwark','Tearing Gust','Thunderbolt','Tourbillion','Uproot'}
- include('Mote-TreasureHunter')
- -- For th_action_check():
- -- JA IDs for actions that always have TH: Provoke, Animated Flourish
- info.default_ja_ids = S{35, 204}
- -- Unblinkable JA IDs for actions that always have TH: Quick/Box/Stutter Step, Desperate/Violent Flourish
- info.default_u_ja_ids = S{201, 202, 203, 205, 207}
- lockstyleset = 13
- 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', 'MidAcc', 'HighAcc')
- state.HybridMode:options('Normal', 'DT')
- state.RangedMode:options('Normal', 'Acc')
- state.WeaponskillMode:options('Normal', 'Acc')
- state.CastingMode:options('Normal', 'Resistant')
- state.PhysicalDefenseMode:options('PDT', 'MDT')
- state.IdleMode:options('Normal', 'DT')--, 'Learning')
- state.MagicBurst = M(false, 'Magic Burst')
- --state.CP = M(false, "Capacity Points Mode")
- state.HasteMode = M(false, 'Block Haste Reset')
- -- Additional local binds
- send_command('bind @t gs c cycle treasuremode')
- send_command('bind !` gs c toggle MagicBurst')
- send_command('bind ^` input /ma "Sudden Lunge" <t>; wait 0.5; input /p Stun (ในใฟใณ) <t>')
- send_command('bind @e input /ma "Erratic Flutter" <me>')
- send_command('bind @o input /ma "Occultation" <me>')
- if player.sub_job == "RDM" then
- send_command('bind @n input /ma "Fantod" <me>')
- send_command('bind @c input /ma "Reactor Cool" <me>')
- send_command('bind @r input /ma "Refresh" <stpc>')
- send_command('bind @b input /ma "Phalanx" <me>')
- send_command('bind @d input /ma "Stoneskin" <me>')
- send_command('bind @m input /ma "Carcharian Verve" <me>')
- else
- send_command('bind @n input /ma "Nat. Meditation" <me>')
- send_command('bind @c input /ma "Cocoon" <me>')
- send_command('bind @r input /ma "Battery Charge" <me>')
- send_command('bind @b input /ma "Barrier Tusk" <me>')
- send_command('bind @d input /ma "Diamondhide" <me>')
- send_command('bind @m input /ma "Mighty Guard" <me>')
- end
- --send_command('bind @c gs c toggle CP')
- if player.sub_job == 'WAR' then
- send_command('bind ^b input /ja "Berserk" <me>')
- send_command('bind ^w input /ja "Warcry" <me>')
- send_command('bind ^a input /ja "Aggressor" <me>')
- send_command('bind @` input /ja "Provoke" <t>')
- end
- send_command('bind Home input /ws "Savage Blade" <t>')
- send_command('bind Delete input /ws "Chant du Cygne" <t>')
- send_command('bind End input /ws "Sanguine Blade" <t>')
- select_default_macro_book()
- set_lockstyle()
- Haste = 0
- DW_needed = 0
- DW = false
- moving = false
- update_combat_form()
- determine_haste_group()
- end
- -- Called when this job file is unloaded (eg: job change)
- function user_unload()
- send_command('unbind @t')
- send_command('unbind !`')
- send_command('bind @e input /ma Haste <stpc>')
- send_command('bind @o input /ma Blink <me>')
- send_command('unbind @n')
- send_command('unbind @c')
- send_command('bind @r input /ma Refresh <stpc>')
- send_command('bind @b input /ma Phalanx <me>')
- send_command('bind @d input /ma Stoneskin <me>')
- send_command('unbind @m')
- send_command('unbind @c')
- send_command('unbind ^b')
- send_command('unbind ^w')
- send_command('unbind ^a')
- send_command('unbind @`')
- send_command('unbind Home')
- send_command('unbind Delete')
- send_command('unbind End')
- end
- -- Define sets and vars used by this job file.
- function init_gear_sets()
- include('augmented-items.lua')
- ------------------------------------------------------------------------------------------------
- ---------------------------------------- Precast Sets ------------------------------------------
- ------------------------------------------------------------------------------------------------
- -- Precast sets to enhance JAs
- -- Enmity set
- sets.Enmity = {ammo="Sapience Orb"}
- sets.precast.JA['Provoke'] = sets.Enmity
- sets.buff['Burst Affinity'] = {legs="Assim. Shalwar +2", feet="Hashi. Basmak +1"}
- sets.buff['Diffusion'] = {feet="Luhlaza Charuqs +1"}
- sets.buff['Efflux'] = {back=RosmertaDA,legs="Hashishin Tayt +1"}
- --sets.precast.JA['Azure Lore'] = {hands="Luhlaza Bazubands"}
- sets.precast.JA['Chain Affinity'] = {ring2="Mujin Band",feet="Assim. Charuqs +2"}
- --sets.precast.JA['Convergence'] = {head="Luh. Keffiyeh +1"}
- --sets.precast.JA['Enchainment'] = {body="Luhlaza Jubbah +1"}
- sets.precast.FC = {
- ammo="Sapience Orb",
- head="Carmine Mask +1",
- neck="Orunmila's Torque",
- ear1="Loquac. Earring",
- ear2="Etiolation Earring",
- body=TaeonTabardFC,
- hands="Leyline Gloves",
- ring1="Prolix Ring",
- ring2="Lebeche Ring",
- back="Perimede Cape",
- waist="Witful Belt",
- legs="Psycloth Lappas",
- feet="Carmine Greaves +1"}
- sets.precast.FC['Blue Magic'] = sets.precast.FC
- sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
- sets.precast.FC.Cure = set_combine(sets.precast.FC, {ammo="Impatiens", ear2="Mendi. Earring"})
- sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {
- ammo="Impatiens",
- neck="Magoraga Beads"})
- ------------------------------------------------------------------------------------------------
- ------------------------------------- Weapon Skill Sets ----------------------------------------
- ------------------------------------------------------------------------------------------------
- sets.precast.WS = {
- ammo="Floestone",
- head="Adhemar Bonnet +1",
- neck="Fotia Gorget",
- ear1="Moonshade Earring",
- ear2="Brutal Earring",
- body="Adhemar Jacket +1",
- hands=AdhemarWristbandsB,
- ring1="Epona's Ring",
- ring2="Shukuyu Ring",
- back=RosmertaDA,
- waist="Fotia Belt",
- legs="Samnuha Tights",
- feet=HerculeanBootsTA}
- sets.precast.WS.Acc = set_combine(sets.precast.WS, {
- ammo="Falcon Eye",
- head="Dampening Tam",
- ear2="Telos Earring"})
- sets.precast.WS['Chant du Cygne'] = set_combine(sets.precast.WS, {
- ammo="Jukukik Feather",
- ear2="Mache Earring +1",
- body="Abnoba Kaftan",
- ring2="Ilabrat Ring",
- back=RosmertaCrit,
- feet="Thereoid Greaves"})
- sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS['Chant du Cygne'], {
- ammo="Falcon Eye",
- head="Dampening Tam",
- ring2="Ramuh Ring +1",
- feet=HerculeanBootsTA})
- sets.precast.WS['Vorpal Blade'] = sets.precast.WS['Chant du Cygne']
- sets.precast.WS['Vorpal Blade'].Acc = sets.precast.WS['Chant du Cygne'].Acc
- sets.precast.WS['Savage Blade'] = set_combine(sets.precast.WS, {
- head="Lilitu Headpiece",
- neck="Caro Necklace",
- ear2="Ishvara Earring",
- body="Assim. Jubbah +2",
- hands="Jhakri Cuffs +2",
- ring1="Ifrit Ring +1",
- back=RosmertaWSD,
- waist="Prosilio Belt +1",
- feet=HerculeanBootsWSD})
- sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'], {
- ammo="Falcon Eye",
- neck="Combatant's Torque",
- ear2="Telos Earring",
- waist="Grunfeld Rope"})
- sets.precast.WS['Requiescat'] = {
- ammo="Hydrocera",
- head="Jhakri Coronal +2",
- neck="Fotia Gorget",
- ear1="Moonshade Earring",
- ear2="Brutal Earring",
- body="Jhakri Robe +2",
- hands="Jhakri Cuffs +2",
- ring1="Rufescent Ring",
- ring2="Epona's Ring",
- back=RosmertaDA,
- waist="Fotia Belt",
- legs="Jhakri Slops +2",
- feet="Jhakri Pigaches +2"}
- sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS['Requiescat'], {
- ammo="Falcon Eye",
- head="Dampening Tam",
- legs="Carmine Cuisses +1",
- ear2="Telos Earring"})
- sets.precast.WS['Expiacion'] = sets.precast.WS['Savage Blade']
- sets.precast.WS['Expiacion'].Acc = sets.precast.WS['Expiacion']
- sets.precast.WS['Sanguine Blade'] = {
- ammo="Pemphredo Tathlum",
- head="Pixie Hairpin +1",
- neck="Baetyl Pendant",
- ear1="Friomisi Earring",
- ear2="Regal Earring",
- body="Amalric Doublet +1",
- hands="Jhakri Cuffs +2",
- ring1="Shiva Ring +1",
- ring2="Archon Ring",
- back=RosmertaINT,
- waist="Yamabuki-no-Obi",
- legs="Amalric Slops +1",
- feet="Amalric Nails +1"}
- sets.precast.WS['True Strike'] = sets.precast.WS['Savage Blade']
- sets.precast.WS['True Strike'].Acc = sets.precast.WS['Savage Blade'].Acc
- sets.precast.WS['Judgment'] = sets.precast.WS['True Strike']
- sets.precast.WS['Judgment'].Acc = sets.precast.WS['True Strike'].Acc
- sets.precast.WS['Black Halo'] = sets.precast.WS['True Strike']
- sets.precast.WS['Black Halo'].Acc = sets.precast.WS['True Strike'].Acc
- sets.precast.WS['Realmrazer'] = sets.precast.WS['Requiescat']
- sets.precast.WS['Realmrazer'].Acc = sets.precast.WS['Requiescat'].Acc
- sets.precast.WS['Flash Nova'] = set_combine(sets.precast.WS['Sanguine Blade'], {head="Jhakri Coronal +2"})
- ------------------------------------------------------------------------------------------------
- ---------------------------------------- Midcast Sets ------------------------------------------
- ------------------------------------------------------------------------------------------------
- sets.midcast.FastRecast = sets.precast.FC
- sets.midcast.SpellInterrupt = {
- ammo="Impatiens",
- ring1="Evanescence Ring"}
- sets.midcast['Blue Magic'] = {
- ammo="Mavi Tathlum",
- head="Luh. Keffiyeh +1",
- neck="Incanter's Torque",
- body="Assim. Jubbah +2",
- hands="Rawhide Gloves",
- ring1="Stikini Ring +1",
- ring2="Stikini Ring +1",
- back="Cornflower Cape",
- legs="Hashishin Tayt +1",
- feet="Luhlaza Charuqs +1"}
- sets.midcast['Blue Magic'].Physical = {
- ammo="Floestone",
- head="Jhakri Coronal +2",
- neck="Caro Necklace",
- body="Jhakri Robe +2",
- hands="Jhakri Cuffs +2",
- ring1="Shukuyu Ring",
- ring2="Ifrit Ring +1",
- back="Cornflower Cape",
- waist="Prosilio Belt +1",
- legs="Jhakri Slops +2",
- feet="Jhakri Pigaches +2"}
- sets.midcast['Blue Magic'].PhysicalAcc = set_combine(sets.midcast['Blue Magic'].Physical, {
- ammo="Falcon Eye",
- head="Carmine Mask +1",
- neck="Sanctity Necklace",
- ear1="Telos Earring",
- ear2="Digni. Earring",
- body="Adhemar Jacket +1",
- hands=AdhemarWristbandsB,
- ring1="Ramuh Ring +1",
- ring2="Ramuh Ring +1",
- back=RosmertaDA,
- waist="Grunfeld Rope",
- legs="Carmine Cuisses +1",
- feet=HerculeanBootsWSD})
- sets.midcast['Blue Magic'].PhysicalStr = sets.midcast['Blue Magic'].Physical
- sets.midcast['Blue Magic'].PhysicalDex = set_combine(sets.midcast['Blue Magic'].Physical, {
- ammo="Falcon Eye",
- ear1="Mache Earring +1",
- ring1="Ramuh Ring +1",
- ring2="Ilabrat Ring",
- back=RosmertaCrit,
- waist="Grunfeld Rope"})
- sets.midcast['Blue Magic'].PhysicalVit = sets.midcast['Blue Magic'].Physical
- sets.midcast['Blue Magic'].PhysicalAgi = set_combine(sets.midcast['Blue Magic'].Physical, {
- ring1="Petrov Ring",
- ring2="Ilabrat Ring"})
- sets.midcast['Blue Magic'].PhysicalInt = set_combine(sets.midcast['Blue Magic'].Physical, {
- ear1="Regal Earring",
- ring1="Shiva Ring +1",
- ring2="Shiva Ring +1",
- back=RosmertaINT})
- sets.midcast['Blue Magic'].PhysicalMnd = set_combine(sets.midcast['Blue Magic'].Physical, {ear1="Regal Earring"})
- sets.midcast['Blue Magic'].PhysicalChr = set_combine(sets.midcast['Blue Magic'].Physical, {ear1="Regal Earring", ear2="Enchntr. Earring +1"})
- sets.midcast['Blue Magic'].Magical = {
- ammo="Pemphredo Tathlum",
- head=HerculeanHelmMAB,
- neck="Sanctity Necklace",
- ear1="Regal Earring",
- ear2="Crematio Earring",
- body="Amalric Doublet +1",
- hands=AmalricD,
- ring1="Shiva Ring +1",
- ring2="Shiva Ring +1",
- back=RosmertaINT,
- waist="Yamabuki-no-Obi",
- legs="Amalric Slops +1",
- feet="Amalric Nails +1"}
- sets.midcast['Blue Magic'].Magical.Resistant = set_combine(sets.midcast['Blue Magic'].Magical, {
- head="Assim. Keffiyeh +2",
- neck="Erra Pendant",
- ear1="Digni. Earring",
- waist="Yamabuki-no-Obi"})
- sets.midcast['Blue Magic'].MagicalDark = set_combine(sets.midcast['Blue Magic'].Magical, {
- head="Pixie Hairpin +1",
- ring1="Archon Ring"})
- sets.midcast['Blue Magic'].MagicalLight = sets.midcast['Blue Magic'].Magical
- sets.midcast['Blue Magic'].MagicalMnd = sets.midcast['Blue Magic'].Magical
- sets.midcast['Blue Magic'].MagicalDex = sets.midcast['Blue Magic'].Magical
- sets.midcast['Blue Magic'].MagicalVit = sets.midcast['Blue Magic'].Magical
- sets.midcast['Blue Magic'].MagicalChr = sets.midcast['Blue Magic'].Magical
- sets.midcast['Blue Magic'].MagicAccuracy = {
- ammo="Pemphredo Tathlum",
- head="Carmine Mask +1",
- neck="Erra Pendant",
- ear1="Gwati Earring",
- ear2="Digni. Earring",
- body="Jhakri Robe +2",
- hands="Rawhide Gloves",
- ring1="Stikini Ring +1",
- ring2="Stikini Ring +1",
- back=RosmertaINT,
- waist="Luminary Sash",
- legs="Jhakri Slops +2",
- feet="Jhakri Pigaches +2"}
- sets.midcast['Blue Magic'].Breath = sets.midcast['Blue Magic'].Magical
- sets.midcast['Blue Magic'].Stun = set_combine(sets.midcast['Blue Magic'].MagicAccuracy,{
- ammo="Falcon Eye",
- ear1="Regal Earring",
- back="Cornflower Cape"})
- sets.midcast['Blue Magic'].Healing = {
- ammo="Hydrocera",
- head="Carmine Mask +1",
- neck="Phalaina Locket",
- ear2="Mendi. Earring",
- body=TaeonTabardFC,
- hands="Telchine Gloves",
- ring1="Rufescent Ring",
- ring2="Lebeche Ring",
- back="Tempered Cape +1",
- waist="Luminary Sash",
- legs="Gyve Trousers",
- feet="Medium's Sabots"}
- sets.midcast['Blue Magic'].HealingSelf = set_combine(sets.midcast['Blue Magic'].Healing, {
- neck="Phalaina Locket",
- ring1="Asklepian Ring",
- ring2="Kunaji Ring",
- waist="Gishdubar Sash",
- legs="Telchine Braconi"})
- sets.midcast['Blue Magic'].Buff = sets.midcast['Blue Magic']
- sets.midcast['Blue Magic'].Refresh = set_combine(sets.midcast['Blue Magic'], {
- head="Amalric Coif +1",
- waist="Gishdubar Sash"})
- sets.midcast['Blue Magic'].SkillBasedBuff = sets.midcast['Blue Magic']
- sets.midcast['Blue Magic']['Occultation'] = set_combine(sets.midcast['Blue Magic'], {
- ammo="Sapience Orb",
- hands="Hashi. Bazubands",
- feet="Carmine Greaves +1"})
- sets.midcast['Blue Magic']['Carcharian Verve'] = set_combine(sets.midcast['Blue Magic'].Buff, {
- head="Amalric Coif +1",
- waist="Emphatikos Rope"})
- sets.midcast['Enhancing Magic'] = {
- head="Carmine Mask +1",
- neck="Incanter's Torque",
- ear1="Andoaa Earring",
- ear2="Augment. Earring",
- body="Telchine Chas.",
- ring1="Stikini Ring +1",
- ring2="Stikini Ring +1",
- back="Perimede Cape",
- waist="Olympus Sash",
- legs="Carmine Cuisses +1"}
- sets.midcast.EnhancingDuration = {
- head="Telchine Cap",
- body="Telchine Chas.",
- hands="Telchine Gloves",
- legs="Telchine Braconi",
- feet="Telchine Pigaches"}
- sets.midcast.Refresh = set_combine(sets.midcast['Enhancing Magic'], {
- head="Amalric Coif +1",
- waist="Gishdubar Sash"})
- sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
- sets.midcast.Phalanx = set_combine(sets.midcast['Enhancing Magic'], {})
- sets.midcast.Aquaveil = set_combine(sets.midcast['Enhancing Magic'], {
- head="Amalric Coif +1",
- waist="Emphatikos Rope"})
- sets.midcast.Protect = {ring1="Sheltered Ring"}
- sets.midcast.Protectra = sets.midcast.Protect
- sets.midcast.Shell = sets.midcast.Protect
- sets.midcast.Shellra = sets.midcast.Protect
- sets.midcast.Utsusemi = sets.midcast.SpellInterrupt
- ------------------------------------------------------------------------------------------------
- ----------------------------------------- Idle Sets --------------------------------------------
- ------------------------------------------------------------------------------------------------
- sets.idle = {
- ammo="Staunch Tathlum +1",
- head="Rawhide Mask",
- neck="Loricate Torque +1",
- ear1="Sanare Earring",
- ear2="Hearty Earring",
- body="Jhakri Robe +2",
- hands="Aya. Manopolas +2",
- ring1="Stikini Ring +1",
- ring2="Stikini Ring +1",
- back="Moonlight Cape",
- waist="Flume Belt +1",
- legs="Lengo Pants",
- feet=HerculeanBootsDT}
- sets.idle.DT = set_combine(sets.idle, {
- head="Aya. Zucchetto +2",
- body="Ayanmo Corazza +2",
- ring1="Vocane Ring",
- ring2="Defending Ring",
- legs=HerculeanTrousersDT})
- sets.idle.Town = set_combine(sets.idle, {
- head="Adhemar Bonnet +1",
- neck="Combatant's Torque",
- ear1="Mache Earring +1",
- ear2="Telos Earring",
- body="Amalric Doublet +1",
- hands=AmalricD,
- ring1="Chirich Ring +1",
- ring2="Stikini Ring +1",
- back="Moonlight Cape",
- waist="Flume Belt +1",
- legs="Carmine Cuisses +1",
- feet="Adhe. Gamashes +1"})
- sets.idle.Weak = sets.idle.DT
- --sets.idle.Learning = set_combine(sets.idle, sets.Learning)
- ------------------------------------------------------------------------------------------------
- ---------------------------------------- Defense Sets ------------------------------------------
- ------------------------------------------------------------------------------------------------
- sets.defense.PDT = sets.idle.DT
- sets.defense.MDT = sets.idle.DT
- ------------------------------------------------------------------------------------------------
- ---------------------------------------- Engaged Sets ------------------------------------------
- ------------------------------------------------------------------------------------------------
- -- 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
- sets.engaged = {
- ammo="Ginsen",
- head="Adhemar Bonnet +1",
- neck="Asperity Necklace",
- ear1="Suppanomimi",
- ear2="Brutal Earring",
- body="Adhemar Jacket +1",
- hands=AdhemarWristbandsB,
- ring1="Epona's Ring",
- ring2="Hetairoi Ring",
- back=RosmertaSTP,
- waist="Windbuffet Belt +1",
- legs="Samnuha Tights",
- feet=HerculeanBootsTA}
- sets.engaged.MidAcc = set_combine(sets.engaged, {})
- sets.engaged.HighAcc = set_combine(sets.engaged.MidAcc, {})
- -- Base Dual-Wield Values:
- -- * DW6: +37%
- -- * DW5: +35%
- -- * DW4: +30%
- -- * DW3: +25% (NIN Subjob)
- -- * DW2: +15% (DNC Subjob)
- -- * DW1: +10%
- -- No Magic Haste (74% DW to cap)
- sets.engaged.DW = {
- ammo="Ginsen",
- head=HerculeanHelmDW,
- neck="Asperity Necklace",
- ear1="Suppanomimi",
- ear2="Eabani Earring",
- body="Adhemar Jacket +1",
- hands=AdhemarWristbandsB,
- ring1="Epona's Ring",
- ring2="Hetairoi Ring",
- back=RosmertaDW,
- waist="Reiki Yotai",
- legs="Carmine Cuisses +1",
- feet=HerculeanBootsDW}
- sets.engaged.DW.MidAcc = set_combine(sets.engaged.DW, {
- ammo="Falcon Eye",
- neck="Lissome Necklace",
- ring2="Chirich Ring +1"})
- sets.engaged.DW.HighAcc = set_combine(sets.engaged.DW.MidAcc, {
- neck="Combatant's Torque"})
- -- 15% Magic Haste (67% DW to cap)
- sets.engaged.DW.LowHaste = set_combine(sets.engaged.DW, {
- ammo="Ginsen",
- head="Adhemar Bonnet +1",
- neck="Asperity Necklace",
- ear1="Suppanomimi",
- ear2="Eabani Earring",
- body="Adhemar Jacket +1",
- hands=AdhemarWristbandsB,
- ring1="Epona's Ring",
- ring2="Hetairoi Ring",
- back=RosmertaDW,
- waist="Reiki Yotai",
- legs="Carmine Cuisses +1",
- feet=HerculeanBootsDW})
- sets.engaged.DW.MidAcc.LowHaste = set_combine(sets.engaged.DW.LowHaste, {
- ammo="Falcon Eye",
- head="Dampening Tam",
- neck="Lissome Necklace",
- ring2="Chirich Ring +1"})
- sets.engaged.DW.HighAcc.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, {
- head="Carmine Mask +1",
- neck="Combatant's Torque"})
- -- 30% Magic Haste (56% DW to cap)
- sets.engaged.DW.MidHaste = {
- ammo="Ginsen",
- head="Adhemar Bonnet +1",
- neck="Asperity Necklace",
- ear1="Suppanomimi",
- ear2="Eabani Earring",
- body="Adhemar Jacket +1",
- hands=AdhemarWristbandsB,
- ring1="Epona's Ring",
- ring2="Hetairoi Ring",
- back=RosmertaDW,
- waist="Reiki Yotai",
- legs="Samnuha Tights",
- feet=HerculeanBootsTA}
- sets.engaged.DW.MidAcc.MidHaste = set_combine(sets.engaged.DW.MidHaste, {
- ammo="Falcon Eye",
- head="Dampening Tam",
- neck="Lissome Necklace",
- ring2="Chirich Ring +1"})
- sets.engaged.DW.HighAcc.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, {
- head="Carmine Mask +1",
- neck="Combatant's Torque",
- ear1="Mache Earring +1",
- ear2="Telos Earring",
- waist="Grunfeld Rope",
- legs="Carmine Cuisses +1"})
- -- 35% Magic Haste (51% DW to cap)
- sets.engaged.DW.HighHaste = {
- ammo="Ginsen",
- head="Adhemar Bonnet +1",
- neck="Asperity Necklace",
- ear1="Suppanomimi",
- ear2="Eabani Earring",
- body="Adhemar Jacket +1",
- hands=AdhemarWristbandsB,
- ring1="Epona's Ring",
- ring2="Hetairoi Ring",
- back=RosmertaDW,
- waist="Windbuffet Belt +1",
- legs="Samnuha Tights",
- feet=HerculeanBootsTA}
- sets.engaged.DW.MidAcc.HighHaste = set_combine(sets.engaged.DW.HighHaste, {
- ammo="Falcon Eye",
- head="Dampening Tam",
- neck="Lissome Necklace",
- ring2="Chirich Ring +1",
- waist="Kentarch Belt +1"})
- sets.engaged.DW.HighAcc.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, {
- head="Carmine Mask +1",
- neck="Combatant's Torque",
- ear1="Mache Earring +1",
- ear2="Telos Earring",
- waist="Grunfeld Rope",
- legs="Carmine Cuisses +1"})
- -- 45% Magic Haste (36% DW to cap)
- sets.engaged.DW.MaxHaste = {
- ammo="Ginsen",
- head="Adhemar Bonnet +1",
- neck="Asperity Necklace",
- ear1="Suppanomimi",
- ear2="Brutal Earring",
- body="Adhemar Jacket +1",
- hands=AdhemarWristbandsB,
- ring1="Epona's Ring",
- ring2="Hetairoi Ring",
- back=RosmertaSTP,
- waist="Windbuffet Belt +1",
- legs="Samnuha Tights",
- feet=HerculeanBootsTA} -- 6%
- sets.engaged.DW.MidAcc.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, {
- ammo="Falcon Eye",
- head="Dampening Tam",
- neck="Lissome Necklace",
- ear2="Cessance Earring",
- waist="Kentarch Belt +1"})
- sets.engaged.DW.HighAcc.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, {
- head="Carmine Mask +1",
- neck="Combatant's Torque",
- ear1="Telos Earring",
- ear2="Mache Earring +1",
- ring2="Chirich Ring +1",
- waist="Grunfeld Rope",
- legs="Carmine Cuisses +1"})
- ------------------------------------------------------------------------------------------------
- ---------------------------------------- Hybrid Sets -------------------------------------------
- ------------------------------------------------------------------------------------------------
- sets.engaged.Hybrid = {
- ammo="Staunch Tathlum +1", --2/2
- neck="Loricate Torque +1", --6/6
- hands="Aya. Manopolas +2", --3/3
- ring1="Vocane Ring", --7/7
- ring2="Defending Ring", --10/10
- legs="Aya. Cosciales +2"} --5/5
- sets.engaged.DT = set_combine(sets.engaged, sets.engaged.Hybrid)
- sets.engaged.MidAcc.DT = set_combine(sets.engaged.MidAcc, sets.engaged.Hybrid)
- sets.engaged.HighAcc.DT = set_combine(sets.engaged.HighAcc, sets.engaged.Hybrid)
- sets.engaged.DW.DT = set_combine(sets.engaged.DW, sets.engaged.Hybrid)
- sets.engaged.DW.MidAcc.DT = set_combine(sets.engaged.DW.MidAcc, sets.engaged.Hybrid)
- sets.engaged.DW.HighAcc.DT = set_combine(sets.engaged.DW.HighAcc, sets.engaged.Hybrid)
- sets.engaged.DW.DT.LowHaste = set_combine(sets.engaged.DW.LowHaste, sets.engaged.Hybrid)
- sets.engaged.DW.MidAcc.DT.LowHaste = set_combine(sets.engaged.DW.MidAcc.LowHaste, sets.engaged.Hybrid)
- sets.engaged.DW.HighAcc.DT.LowHaste = set_combine(sets.engaged.DW.HighAcc.LowHaste, sets.engaged.Hybrid)
- sets.engaged.DW.DT.MidHaste = set_combine(sets.engaged.DW.MidHaste, sets.engaged.Hybrid)
- sets.engaged.DW.MidAcc.DT.MidHaste = set_combine(sets.engaged.DW.MidAcc.MidHaste, sets.engaged.Hybrid)
- sets.engaged.DW.HighAcc.DT.MidHaste = set_combine(sets.engaged.DW.HighAcc.MidHaste, sets.engaged.Hybrid)
- sets.engaged.DW.DT.HighHaste = set_combine(sets.engaged.DW.HighHaste, sets.engaged.Hybrid)
- sets.engaged.DW.MidAcc.DT.HighHaste = set_combine(sets.engaged.DW.MidAcc.HighHaste, sets.engaged.Hybrid)
- sets.engaged.DW.HighAcc.DT.HighHaste = set_combine(sets.engaged.DW.HighAcc.HighHaste, sets.engaged.Hybrid)
- sets.engaged.DW.DT.MaxHaste = set_combine(sets.engaged.DW.MaxHaste, sets.engaged.Hybrid)
- sets.engaged.DW.MidAcc.DT.MaxHaste = set_combine(sets.engaged.DW.MidAcc.MaxHaste, sets.engaged.Hybrid)
- sets.engaged.DW.HighAcc.DT.MaxHaste = set_combine(sets.engaged.DW.HighAcc.MaxHaste, sets.engaged.Hybrid)
- ------------------------------------------------------------------------------------------------
- ---------------------------------------- Special Sets ------------------------------------------
- ------------------------------------------------------------------------------------------------
- sets.magic_burst = set_combine(sets.midcast['Blue Magic'].Magical, {
- ear2="Static Earring", --5
- body="Samnuha Coat", --(8)
- hands=AmalricD, --(5)
- ring1="Mujin Band", --(5)
- ring2="Locus Ring", --5
- back="Seshaw Cape", --5
- legs="Assim. Shalwar +2", --5
- feet="Jhakri Pigaches +2"}) --5
- sets.Kiting = {legs="Carmine Cuisses +1"}
- --sets.Learning = {hands="Assim. Bazu. +1"}
- sets.latent_refresh = {waist="Fucho-no-obi"}
- sets.buff.Doom = {ring1="Eshmun's Ring", ring2="Eshmun's Ring", waist="Gishdubar Sash"}
- --sets.CP = {back="Mecisto. Mantle"}
- --sets.Reive = {neck="Ygnas's Resolve +1"}
- sets.TreasureHunter = {head="Wh. Rarab Cap +1", waist="Chaac Belt", feet=HerculeanBootsTH}
- sets.midcast.Diaga = sets.TreasureHunter
- 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 spellMap == 'Utsusemi' then
- if buffactive['Copy Image (3)'] or buffactive['Copy Image (4+)'] then
- cancel_spell()
- add_to_chat(123, '**!! '..spell.english..' Canceled: [3+ IMAGES] !!**')
- eventArgs.handled = true
- return
- elseif buffactive['Copy Image'] or buffactive['Copy Image (2)'] then
- send_command('cancel 66; cancel 444; cancel Copy Image; cancel Copy Image (2)')
- 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' then
- equip(sets.midcast['Blue Magic'].HealingSelf)
- end
- end
- if spell.skill == 'Enhancing Magic' and classes.NoSkillSpells:contains(spell.english) then
- equip(sets.midcast.EnhancingDuration)
- if spellMap == 'Refresh' then
- equip(sets.midcast.Refresh)
- end
- end
- end
- function job_post_midcast(spell, action, spellMap, eventArgs)
- if not spell.interrupted then
- if spell.english == "Dream Flower" then
- send_command('@timers c "Dream Flower ['..spell.target.name..']" 90 down spells/00098.png')
- elseif spell.english == "Soporific" then
- send_command('@timers c "Sleep ['..spell.target.name..']" 90 down spells/00259.png')
- elseif spell.english == "Sheep Song" then
- send_command('@timers c "Sheep Song ['..spell.target.name..']" 60 down spells/00098.png')
- elseif spell.english == "Yawn" then
- send_command('@timers c "Yawn ['..spell.target.name..']" 60 down spells/00098.png')
- elseif spell.english == "Entomb" then
- send_command('@timers c "Entomb ['..spell.target.name..']" 60 down spells/00547.png')
- end
- 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 buffactive['Reive Mark'] then
- -- if gain then
- -- equip(sets.Reive)
- -- disable('neck')
- -- else
- -- enable('neck')
- -- end
- -- end
- if buff == "doom" then
- if gain then
- equip(sets.buff.Doom)
- disable('ring1','ring2','waist')
- else
- enable('ring1','ring2','waist')
- handle_equipping_gear(player.status)
- end
- end
- end
- -------------------------------------------------------------------------------------------------------------------
- -- User code that supplements standard library decisions.
- -------------------------------------------------------------------------------------------------------------------
- -- 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_handle_equipping_gear(playerStatus, eventArgs)
- update_combat_form()
- determine_haste_group()
- end
- function job_update(cmdParams, eventArgs)
- handle_equipping_gear(player.status)
- th_update(cmdParams, eventArgs)
- end
- function update_combat_form()
- if DW == true then
- state.CombatForm:set('DW')
- elseif DW == false then
- state.CombatForm:reset()
- end
- end
- -- 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
- idleSet = set_combine(idleSet, sets.latent_refresh)
- end
- --if state.CP.current == 'on' then
- --equip(sets.CP)
- --disable('back')
- --else
- --enable('back')
- --end
- --if state.IdleMode.value == 'Learning' then
- -- equip(sets.Learning)
- -- disable('hands')
- --else
- -- enable('hands')
- --end
- return idleSet
- end
- -- Modify the default melee set after it was constructed.
- function customize_melee_set(meleeSet)
- if state.TreasureMode.value == 'Fulltime' then
- meleeSet = set_combine(meleeSet, sets.TreasureHunter)
- end
- return meleeSet
- end
- -- Function to display the current relevant user state when doing an update.
- -- Return true if display was handled, and you don't want the default info shown.
- function display_current_job_state(eventArgs)
- local msg = '[ Melee'
- if state.CombatForm.has_value then
- msg = msg .. ' (' .. state.CombatForm.value .. ')'
- end
- msg = msg .. ': '
- msg = msg .. state.OffenseMode.value
- if state.HybridMode.value ~= 'Normal' then
- msg = msg .. '/' .. state.HybridMode.value
- end
- msg = msg .. ' ][ WS: ' .. state.WeaponskillMode.value .. ' ]'
- if state.DefenseMode.value ~= 'None' then
- msg = msg .. '[ Defense: ' .. state.DefenseMode.value .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ' ]'
- end
- if state.IdleMode.value ~= 'None' then
- msg = msg .. '[ Idle: ' .. state.IdleMode.value .. ' ]'
- end
- if state.Kiting.value then
- msg = msg .. '[ Kiting Mode: ON ]'
- end
- add_to_chat(122, msg)
- eventArgs.handled = true
- end
- -------------------------------------------------------------------------------------------------------------------
- -- Utility functions specific to this job.
- -------------------------------------------------------------------------------------------------------------------
- function determine_haste_group()
- classes.CustomMeleeGroups:clear()
- if DW == true then
- if DW_needed <= 11 then
- classes.CustomMeleeGroups:append('MaxHaste')
- elseif DW_needed > 11 and DW_needed <= 21 then
- classes.CustomMeleeGroups:append('HighHaste')
- elseif DW_needed > 21 and DW_needed <= 31 then
- classes.CustomMeleeGroups:append('MidHaste')
- elseif DW_needed > 31 and DW_needed <= 37 then
- classes.CustomMeleeGroups:append('LowHaste')
- elseif DW_needed > 37 then
- classes.CustomMeleeGroups:append('')
- end
- end
- end
- function job_self_command(cmdParams, eventArgs)
- gearinfo(cmdParams, eventArgs)
- end
- function gearinfo(cmdParams, eventArgs)
- if cmdParams[1] == 'gearinfo' then
- if type(tonumber(cmdParams[2])) == 'number' then
- if tonumber(cmdParams[2]) ~= DW_needed then
- DW_needed = tonumber(cmdParams[2])
- DW = true
- end
- elseif type(cmdParams[2]) == 'string' then
- if cmdParams[2] == 'false' then
- DW_needed = 0
- DW = false
- end
- end
- if type(tonumber(cmdParams[3])) == 'number' then
- if tonumber(cmdParams[3]) ~= Haste then
- Haste = tonumber(cmdParams[3])
- end
- end
- if type(cmdParams[4]) == 'string' then
- if cmdParams[4] == 'true' then
- moving = true
- elseif cmdParams[4] == 'false' then
- moving = false
- end
- end
- if not midaction() then
- job_update()
- end
- end
- end
- function update_active_abilities()
- state.Buff['Burst Affinity'] = buffactive['Burst Affinity'] or false
- state.Buff['Efflux'] = buffactive['Efflux'] or false
- state.Buff['Diffusion'] = buffactive['Diffusion'] or false
- end
- -- State buff checks that will equip buff gear and mark the event as handled.
- function apply_ability_bonuses(spell, action, spellMap)
- if state.Buff['Burst Affinity'] and (spellMap == 'Magical' or spellMap == 'MagicalLight' or spellMap == 'MagicalDark' or spellMap == 'Breath') then
- if state.MagicBurst.value then
- equip(sets.magic_burst)
- end
- equip(sets.buff['Burst Affinity'])
- end
- if state.Buff.Efflux and spellMap == 'Physical' then
- equip(sets.buff['Efflux'])
- end
- if state.Buff.Diffusion and (spellMap == 'Buffs' or spellMap == 'BlueSkill') then
- equip(sets.buff['Diffusion'])
- end
- if state.Buff['Burst Affinity'] then equip (sets.buff['Burst Affinity']) end
- if state.Buff['Efflux'] then equip (sets.buff['Efflux']) end
- if state.Buff['Diffusion'] then equip (sets.buff['Diffusion']) end
- end
- -- Check for various actions that we've specified in user code as being used with TH gear.
- -- This will only ever be called if TreasureMode is not 'None'.
- -- Category and Param are as specified in the action event packet.
- function th_action_check(category, param)
- if category == 2 or -- any ranged attack
- --category == 4 or -- any magic action
- (category == 3 and param == 30) or -- Aeolian Edge
- (category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
- (category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
- then return true
- 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(1, 5)
- elseif player.sub_job == 'RDM' then
- set_macro_page(2, 5)
- else
- set_macro_page(1, 5)
- end
- end
- function set_lockstyle()
- send_command('wait 2; input /lockstyleset ' .. lockstyleset)
- end
Add Comment
Please, Sign In to add comment