Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -------------------------------------------------------------------------------------------------------------------
- -- Initialization function that defines sets and variables to be used.
- -------------------------------------------------------------------------------------------------------------------
- -- IMPORTANT: Make sure to also get the Mote-Include.lua file 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['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 --
- -- 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','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','Thrashing Assault','Terror Touch','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','Droning Whirlwind','Embalming Earth',
- 'Firespit','Foul Waters','Ice Break','Leafstorm',
- 'Maelstrom','Regurgitation','Rending Deluge','Retinal Glare',
- 'Subduction','Tem. Upheaval','Water Bomb'}
- -- 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',
- 'White Wind','Wild Carrot'}
- -- Buffs that depend on blue magic skill
- blue_magic_maps.SkillBasedBuff = S{
- 'Diamondhide','Metallic Body',}
- -- Buff spells where Blue Magic Skill matters (need verification)
- --['Metallic Body']='BuffSkill',['Diamondhide']='BuffSkill',['Reactor Cool']='BuffSkill',['Plasma Charge']='BuffSkill',
- --['Magic Barrier']='BuffSkill',['Barrier Tusk']='BuffSkill',['O. Counterstance']='BuffSkill',['Pyric Bulwark']='BuffSkill',
- --['Nat. Meditation']='BuffSkill',['Carcharian Verve']='BuffSkill',
- -- Other general buffs
- blue_magic_maps.Buff = S{
- 'Amplification','Animating Wail','Barrier Tusk','Battery Charge',
- 'Carcharian Verve','Cocoon','Erratic Flutter','Exuviation',
- 'Fantod','Feather Barrier','Harden Shell','Magic Barrier',
- 'Memento Mori','Nat. Meditation','Occultation','O. Counterstance',
- 'Plasma Charge','Pyric Bulwark','Reactor Cool','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','Droning Whirlwind','Gates of Hades','Harden Shell',
- 'Pyric Bulwark','Thunderbolt','Tourbillion'}
- end
- -- Setup vars that are user-dependent. Can override this function in a sidecar file.
- function user_setup()
- -- Options: Override default values
- options.OffenseModes = {'Normal', 'Acc', 'Refresh', 'Learning'}
- options.DefenseModes = {'Normal'}
- options.WeaponskillModes = {'Normal', 'Acc', 'Att', 'Mod'}
- options.CastingModes = {'Normal', 'Resistant'}
- options.IdleModes = {'Normal', 'PDT', 'Learning'}
- options.RestingModes = {'Normal'}
- options.PhysicalDefenseModes = {'PDT'}
- options.MagicalDefenseModes = {'MDT'}
- state.Defense.PhysicalMode = 'PDT'
- gear.macc_hagondes = {name="Hagondes Cuffs", augments={'Phys. dmg. taken -3%','Mag. Acc.+29'}}
- -- Additional local binds
- send_command('bind ^` input /ja "Chain Affinity" <me>')
- send_command('bind !` input /ja "Burst Affinity" <me>')
- select_default_macro_book()
- end
- -- Called when this job file is unloaded (eg: job change)
- function job_file_unload()
- send_command('unbind ^`')
- send_command('unbind !`')
- end
- function init_gear_sets()
- --------------------------------------
- -- Start defining the sets
- --------------------------------------
- sets.buff['Burst Affinity'] = {feet="Mavi Basmak +2"}
- sets.buff['Chain Affinity'] = {head="Mavi Kavuk +2", feet="Assimilator's Charuqs"}
- sets.buff.Convergence = {head="Luhlaza Keffiyeh"}
- sets.buff.Diffusion = {feet="Luhlaza Charuqs"}
- sets.buff.Enchainment = {body="Luhlaza Jubbah +1"}
- sets.buff.Efflux = {legs="Mavi Tayt +2"}
- -- Precast Sets
- -- Precast sets to enhance JAs
- sets.precast.JA['Azure Lore'] = {hands="Mirage Bazubands +2"}
- -- Waltz set (Waltz Potency > CHR > VIT)
- sets.precast.Waltz = {
- ammo="Bibiki Seashell",
- head="Shned. Chapeau +1",
- body="Weather. Robe +1",hands="Assim. Bazu. +1",
- back="Swith Cape",waist="Caudata Belt",legs="Shned. Tights +1",feet="Weath. Souliers +1"}
- -- Don't need any special gear for Healing Waltz.
- sets.precast.Waltz['Healing Waltz'] = {}
- -- Step Accuracy > Accuracy
- sets.precast.Step = {
- ammo="Jukukik Feather",
- head="Espial Cap",neck="Rancor Collar",ear1="Choreia Earring",ear2="Ghillie Earring +1",
- body="Luhlaza Jubbah +1",hands="Espial Bracers",ring1="Rajas Ring",ring2="Thundersoul Ring",
- back="",waist="Anguinus Belt",legs="Espial Hose",feet="Espial Socks"}
- sets.precast.Flourish1 = set_combine(sets.precast.Step, {})
- -- Fast Cast sets for spells
- sets.precast.FC = {
- ammo="Impatiens",
- ear2="Loquac. Earring",
- ring1="Prolix Ring",
- back="Swith Cape",waist="Witful Belt",legs="Homam Cosciales",feet="Chelona Boots"}
- -- Fast Cast sets for Blue Spells specifically ( -Blue Magic casting time > Fast Cast)
- sets.precast.FC['Blue Magic'] = set_combine(sets.precast.FC, {body="Mavi Mintan +2"})
- -- Weaponskill sets
- -- Default set for any weaponskill that isn't any more specifically defined
- sets.precast.WS = {
- ammo="Cheruski Needle",
- head="Shned. Chapeau +1",neck="Chivalrous Chain",ear1="Brutal Earring",ear2="Ghillie Earring +1",
- body="Luhlaza Jubbah +1",hands="Assim. Bazu. +1",ring1="Rajas Ring",ring2="Epona's Ring",
- back="Atheling Mantle",waist="Anguinus Belt",legs="Espial Hose",feet="Shned. Boots +1"}
- sets.precast.WS.acc = set_combine(sets.precast.WS, {
- neck="Rancor Collar"})
- -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
- -- Circle Blade = 100% STR ( Aqua/Thunder Gorget/Belt )
- sets.precast.WS['Circle Blade'] = {
- ammo="Cheruski Needle",
- head="Shned. Chapeau +1",neck="Chivalrous Chain",ear1="Brutal Earring",ear2="Flame Pearl",
- body="Luhlaza Jubbah +1",hands="Assim. Bazu. +1",ring1="Strigoi Ring",ring2="Epona's Ring",
- back="Atheling Mantle",waist="Windbuffet Belt",legs="Espial Hose",feet="Iuitl Gaiters"}
- -- Savage Blade = 50% STR, 50% MND ( STR > MND ) ( Breeze/Thunder/Soil Gorget/Belt )
- sets.precast.WS['Savage Blade'] = {
- ammo="Cheruski Needle",
- head="Shned. Chapeau +1",neck="Chivalrous Chain",ear1="Brutal Earring",ear2="Moonshade Earring",
- body="Weather. Robe +1",hands="Assim. Bazu. +1",ring1="Strigoi Ring",ring2="Epona's Ring",
- back="Atheling Mantle",waist="Caudata Belt",legs="Espial Hose",feet="Iuitl Gaiters"}
- -- Sanguine Blade = 30% STR, 50% MND ( MAB > MND = INT > STR ) ( Has no elemental Gorget/Belt )
- sets.precast.WS['Sanguine Blade'] = {
- ammo="Snow Sachet",
- head="Shned. Chapeau +1",neck="Stoicheion Medal",ear1="Hecate's Earring",ear2="Friomisi Earring",
- body="Weather. Robe +1",hands="Weath. Cuffs +1",ring1="Shiva Ring",ring2="Shiva Ring",
- back="Toro Cape",waist="Caudata Belt",legs="Shned. Tights +1",feet="Weath. Souliers +1"}
- -- Expiacion = 30% STR, 30% DEX, 30% INT ( Aqua/Snow/Soil Gorget/Belt )
- sets.precast.WS['Expiacion'] = {
- ammo="Cheruski Needle",
- head="Shned. Chapeau +1",neck="Chivalrous Chain",ear1="Brutal Earring",ear2="Moonshade Earring",
- body="Weather. Robe +1",hands="Assim. Bazu. +1",ring1="Rajas Ring",ring2="Epona's Ring",
- back="Atheling Mantle",waist="Windbuffet Belt",legs="Espial Hose",feet="Iuitl Gaiters"}
- -- Chant du Cygne = 80% DEX, TP Crit ( DEX >= Crit > STR ) ( Light/Flame/Thunder/Breeze/Aqua/Snow Gorget/Belt )
- sets.precast.WS['Chant du Cygne'] = {
- ammo="Cheruski Needle",
- head="Shned. Chapeau +1",neck="Moepapa Medal",ear1="Brutal Earring",ear2="Ghillie Earring +1",
- body="Luhlaza Jubbah +1",hands="Assim. Bazu. +1",ring1="Thundersoul Ring",ring2="Epona's Ring",
- back="Rancorous Mantle",waist="Windbuffet Belt",legs="Espial Hose",feet="Iuitl Gaiters"}
- -- Requiescat = 73 ~ 85% MND ( Shadow/Soil Gorget/Belt )
- sets.precast.WS['Requiescat'] = {
- ammo="Aqua Sachet",
- head="Shned. Chapeau +1",neck="Chivalrous Chain",ear1="Brutal Earring",ear2="Moonshade Earring",
- body="Weather. Robe +1",hands="Assim. Bazu. +1",ring1="Levia. Ring",ring2="Epona's Ring",
- back="Atheling Mantle",waist="Soil Belt",legs="Espial Hose",feet="Iuitl Gaiters"}
- -- Realmrazer = 73 ~ 85% MND ( Flame/Light/Thunder Gorget/Belt )
- sets.precast.WS['Realmrazer'] = {
- ammo="Aqua Sachet",
- head="Shned. Chapeau +1",neck="Light Gorget",ear1="Brutal Earring",ear2="Moonshade Earring",
- body="Weather. Robe +1",hands="Assim. Bazu. +1",ring1="Levia. Ring",ring2="Levia. Ring",
- back="Atheling Mantle",waist="Light Belt",legs="Espial Hose",feet="Weath. Souliers +1"}
- -- Midcast Sets
- -- This is the cooldown reduction ( Haste > Fast Cast )
- sets.midcast.FastRecast = {
- head="Shned. Chapeau +1",ear2="Loquac. Earring",
- body="Luhlaza Jubbah +1",hands="Assim. Bazu. +1",ring1="Prolix Ring",
- back="Swith Cape",waist="Witful Belt",legs="Homam Cosciales",feet="Weath. Souliers +1"}
- sets.midcast['Blue Magic'] = {}
- -- Physical Spells --
- sets.midcast['Blue Magic'].Physical = {
- ammo="Cheruski Needle",
- head="Shned. Chapeau +1",neck="Chivalrous Chain",ear1="Flame Pearl",ear2="Flame Pearl",
- body="Luhlaza Jubbah +1",hands="Assim. Bazu. +1",ring1="Pyrosoul Ring",ring2="Strigoi Ring",
- back="Cornflower Cape",waist="Caudata Belt",legs="Espial Hose",feet="Shned. Boots +1"}
- --ammo="Mavi Tathlum",
- --head="Whirlpool Mask",neck="Ej Necklace",ear1="Heartseeker Earring",ear2="Steelflash Earring",
- --body="Vanir Cotehardie",hands="Buremte Gloves",ring1="Rajas Ring",ring2="Spiral Ring",
- --back="Cornflower Cape",waist="Caudata Belt",legs="Nahtirah Trousers",feet="Qaaxo Leggings"}
- sets.midcast['Blue Magic'].PhysicalAcc = {
- ammo="Jukukik Feather"}
- 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="Snow Sachet",
- head="Shned. Chapeau +1",neck="Stoicheion Medal",ear1="Hecate's Earring",ear2="Friomisi Earring",
- body="Weather. Robe +1",hands="Mavi Bazubands +2",ring1="Shiva Ring",ring2="Shiva Ring",
- back="Cornflower Cape",waist="Penitent's Rope",legs="Shned. Tights +1",feet="Weath. Souliers +1"}
- sets.midcast['Blue Magic'].Magical.Resistant = set_combine(sets.midcast['Blue Magic'].Magical, {})
- sets.midcast['Blue Magic'].MagicalMnd = set_combine(sets.midcast['Blue Magic'].Magical, {
- ring1="Levia. Ring",ring2="Levia. Ring"})
- 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'].MagicAccuracy = {
- ammo="Mavi Tathlum",
- head="Mirage Keffiyeh",
- legs="Mavi Tayt +2"}
- -- Breath Spells --
- sets.midcast['Blue Magic'].Breath = {
- ammo="Mavi Tathlum",
- head="Mirage Keffiyeh",
- hands="Assim. Bazu.",}
- -- Other Types --
- -- Magic Accuracy to ensure Stun lands.
- sets.midcast['Blue Magic'].Stun = set_combine(sets.midcast['Blue Magic'].MagicAccuracy, {})
- -- Cure Potency > HP ( HP/7 ). MND has no effect.
- sets.midcast['Blue Magic']['White Wind'] = {
- head="Espial Cap",ear1="Gifted Earring",ear2="Loquac. Earring",
- body="Luhlaza Jubbah +1",hands="Espial Bracers",ring1="Prolix Ring",ring2="Kunaji Ring",
- waist="Witful Belt",waist="Chuq'aba Belt",legs="Espial Hose",feet="Espial Socks"}
- -- Cure Potency > MND > VIT
- sets.midcast['Blue Magic'].Healing = {
- ammo="Aqua Sachet",
- head="Shned. Chapeau +1",neck="",ear1="Gifted Earring",ear2="Loquac. Earring",
- body="Weather. Robe +1",hands="Weath. Cuffs +1",ring1="Levia. Ring",ring2="Levia. Ring",
- back="Tempered Cape",waist="Penitent's Rope",legs="Espial Hose",feet="Weath. Souliers +1"}
- sets.midcast['Blue Magic'].Healing.Self = {
- ammo="Aqua Sachet",
- head="Shned. Chapeau +1",neck="",ear1="Gifted Earring",ear2="Loquac. Earring",
- body="Weather. Robe +1",hands="Weath. Cuffs +1",ring1="Levia. Ring",ring2="Kunaji Ring",
- back="Tempered Cape",waist="Chuq'aba Belt",legs="Espial Hose",feet="Weath. Souliers +1"}
- -- Max out Blue Magic Skill
- sets.midcast['Blue Magic'].SkillBasedBuff = {
- ammo="Mavi Tathlum",
- head="Mirage Keffiyeh",ear2="Loquac. Earring",
- body="Magus Jubbah",hands="Mv. Bazubands +2",
- legs="Mavi Tayt +2"}
- -- Spell Interrupt down + Evasion
- sets.midcast['Blue Magic'].Buff = {
- ammo="Impatiens",
- head="Espial Cap",neck="Twilight Torque",ear1="",ear2="Loquac. Earring",
- body="Luhlaza Jubbah +1",hands="Mv. Bazubands",ring1="Prolix Ring",ring2="Stormsoul Ring",
- back="Swith Cape",waist="Twilight Belt",legs="Magus Shalwar",feet="Weath. Souliers +1"}
- 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 to return to when not performing an action.
- -- Gear for learning spells: +skill and AF hands.
- sets.Learning = {
- ammo="Mavi Tathlum",
- head="Mirage Keffiyeh",
- body="Magus Jubbah",hands="Assim. Bazu.",
- legs="Mavi Tayt +2"}
- --head="Luhlaza Keffiyeh",
- --body="Assimilator's Jubbah",hands="Assim. Bazu.",
- --back="Cornflower Cape",legs="Mavi Tayt +2",feet="Luhlaza Charuqs"}
- -- For below 50% MP
- sets.latent_refresh = {waist="Fucho-no-obi"}
- -- Resting ( /heal )
- sets.resting = {
- head="Ocelo. Headpiece",neck="Wiglen Gorget",
- body="Luhlaza Jubbah +1",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
- feet="Chelona Boots"}
- -- Idle sets
- sets.idle = {
- head="Ocelo. Headpiece",neck="Wiglen Gorget",ear1="Coral Earring",ear2="Coral Earring",
- body="Luhlaza Jubbah +1",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
- back="Shadow Mantle",feet="Chelona Boots"}
- sets.idle.PDT = {
- head="Ocelo. Headpiece",neck="Wiglen Gorget",ear1="Coral Earring",ear2="Coral Earring",
- body="Luhlaza Jubbah +1",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
- back="Shadow Mantle",feet="Chelona Boots"}
- sets.idle.Town = {
- head="Ocelo. Headpiece",neck="Wiglen Gorget",ear1="Coral Earring",ear2="Coral Earring",
- body="Luhlaza Jubbah +1",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
- back="Shadow Mantle",feet="Chelona Boots"}
- sets.idle.Learning = set_combine(sets.idle, sets.Learning)
- -- Defense sets
- sets.defense.PDT = {
- ammo="Bibiki Seashell",
- head="Espial Cap",neck="Twilight Torque",ear1="",ear2="",
- body="Luhlaza Jubbah +1",hands="Melaco Mittens",ring1="Jelly Ring",ring2="",
- back="Shadow Mantle",waist="Twilight Belt",legs="Espial Hose",feet="Thurandaut Boots"}
- sets.defense.MDT = {
- ammo="Demonry Stone",
- head="Espial Cap",neck="Twilight Torque",ear1="Coral Earring",ear2="Coral Earring",
- body="Weather. Robe +1",hands="Weath. Cuffs",ring1="Merman's Ring",ring2="Merman's Ring",
- back="Lamia Mantle +1",waist="Twilight Belt",legs="Espial Hose",feet="Weath. Souliers +1"}
- sets.Kiting = {}
- -- 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="Cheruski Needle",
- head="Shned. Chapeau +1",neck="Chivalrous Chain",ear1="Brutal Earring",ear2="Suppanomimi",
- body="Luhlaza Jubbah +1",hands="Assim. Bazu. +1",ring1="Rajas Ring",ring2="Epona's Ring",
- back="Atheling Mantle",waist="Windbuffet Belt",legs="Espial Hose",feet="Iuitl Gaiters"}
- sets.engaged.Acc = {
- ammo="Jukukik Feather",
- head="Shned. Chapeau +1",neck="Rancor Collar",ear1="Brutal Earring",ear2="Suppanomimi",
- body="Luhlaza Jubbah +1",hands="Assim. Bazu. +1",ring1="Rajas Ring",ring2="Epona's Ring",
- back="Atheling Mantle",waist="Windbuffet Belt",legs="Espial Hose",feet="Iuitl Gaiters"}
- sets.engaged.Refresh = {
- ammo="Cheruski Needle",
- head="Shned. Chapeau +1",neck="Chivalrous Chain",ear1="Brutal Earring",ear2="Suppanomimi",
- body="Luhlaza Jubbah +1",hands="Assim. Bazu. +1",ring1="Rajas Ring",ring2="Epona's Ring",
- back="Atheling Mantle",waist="Windbuffet Belt",legs="Espial Hose",feet="Iuitl Gaiters"}
- sets.engaged.DW = {
- ammo="Cheruski Needle",
- head="Shned. Chapeau +1",neck="Chivalrous Chain",ear1="Brutal Earring",ear2="Suppanomimi",
- body="Luhlaza Jubbah +1",hands="Assim. Bazu. +1",ring1="Rajas Ring",ring2="Epona's Ring",
- back="Atheling Mantle",waist="Windbuffet Belt",legs="Espial Hose",feet="Iuitl Gaiters"}
- sets.engaged.DW.Acc = {
- ammo="Jukukik Feather",
- head="Shned. Chapeau +1",neck="Rancor Collar",ear1="Brutal Earring",ear2="Suppanomimi",
- body="Luhlaza Jubbah +1",hands="Assim. Bazu. +1",ring1="Rajas Ring",ring2="Epona's Ring",
- back="Atheling Mantle",waist="Windbuffet Belt",legs="Espial Hose",feet="Iuitl Gaiters"}
- sets.engaged.DW.Refresh = {
- ammo="Cheruski Needle",
- head="Shned. Chapeau +1",neck="Chivalrous Chain",ear1="Brutal Earring",ear2="Suppanomimi",
- body="Luhlaza Jubbah +1",hands="Assim. Bazu. +1",ring1="Rajas Ring",ring2="Epona's Ring",
- back="Atheling Mantle",waist="Windbuffet Belt",legs="Espial Hose",feet="Iuitl Gaiters"}
- sets.engaged.Learning = set_combine(sets.engaged, sets.Learning)
- sets.engaged.DW.Learning = set_combine(sets.engaged.DW, sets.Learning)
- 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.
- -- 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 state.Buff[spell.english] ~= nil then
- --state.Buff[spell.english] = true
- --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
- end
- -- If in learning mode, keep on gear intended to help with that, regardless of action.
- if state.OffenseMode == 'Learning' then
- equip(sets.Learning)
- end
- end
- function midcast(spell,action)
- if spell.english == "Magic Fruit" then
- if spell.target.name == player.name then
- equipSet = sets.midcast['Blue Magic'].Healing.Self
- else
- equipSet = sets.midcast['Blue Magic'].Healing
- 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 state.Buff[spell.english] ~= nil then
- state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
- end
- end
- -------------------------------------------------------------------------------------------------------------------
- -- Customization hooks for idle and melee sets, after they've been automatically constructed.
- -------------------------------------------------------------------------------------------------------------------
- -- 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
- return idleSet
- 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
- -------------------------------------------------------------------------------------------------------------------
- -- 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)
- state.CombatForm = get_combat_form()
- end
- -- Set eventArgs.handled to true if we don't want the automatic display to be run.
- function display_current_job_state(eventArgs)
- local dwString = ''
- if state.CombatForm == 'DW' then
- dwString = ' (DW)'
- end
- 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 pcTarget = ''
- if state.PCTargetMode ~= 'default' then
- pcTarget = ', Target PC: '..state.PCTargetMode
- end
- local npcTarget = ''
- if state.SelectNPCTargets then
- pcTarget = ', Target NPCs'
- end
- add_to_chat(122,'Melee'..dwString..': '..state.OffenseMode..'/'..state.DefenseMode..', WS: '..state.WeaponskillMode..', '..defenseString..
- 'Kiting: '..on_off_names[state.Kiting]..pcTarget..npcTarget)
- eventArgs.handled = true
- end
- -------------------------------------------------------------------------------------------------------------------
- -- Utility functions specific to this job.
- -------------------------------------------------------------------------------------------------------------------
- function get_combat_form()
- if not (player.equipment.sub == "Genbu's Shield" or player.equipment.sub == 'empty') then
- return '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 == 'DNC' then
- set_macro_page(3, 8)
- else
- set_macro_page(3, 8)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement