Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----- Credit: Krystela of Asura | Last Update: 27 november 2016 ---->
- ---- .:: This was entirely created by me, it's not based off anyone's file ::. ---->
- ---- Always visit http://pastebin.com/u/KrystelaRose to look for possible updates ---->
- ---- .:: Please leave credit where it's due ::. ---->
- ---- .:: If you have any problem contact me via ffxiah: http://www.ffxiah.com/player/Asura/Krystela ::. ---->
- function get_sets()
- mote_include_version = 2
- -- Load and initialize the include file.
- include('Mote-Include.lua')
- end
- function user_setup()
- define_nuke_downgrades()
- end
- function define_nuke_downgrades()
- t1 = S{ 'Stone', 'Water', 'Aero', 'Fire', 'Blizzard', 'Thunder'}
- t2 = S{ 'Stone II', 'Water II', 'Aero II', 'Fire II', 'Blizzard II', 'Thunder II'}
- t3 = S{ 'Stone III', 'Water III', 'Aero III', 'Fire III', 'Blizzard III', 'Thunder III'}
- t4 = S{ 'Stone IV', 'Water IV', 'Aero IV', 'Fire IV', 'Blizzard IV', 'Thunder IV'}
- t5 = S{ 'Stone V', 'Water V', 'Aero V', 'Fire V', 'Blizzard V', 'Thunder V'}
- t6 = S{ 'Stone VI', 'Water VI', 'Aero VI', 'Fire VI', 'Blizzard VI', 'Thunder VI'}
- ra1 = S{ 'Stonera', 'Watera', 'Aera', 'Fira', 'Blizzara', 'Thundara'}
- ra2 = S{ 'Stonera II', 'Watera II', 'Aera II', 'Fira II', 'Blizzara II', 'Thundara II'}
- ra3 = S{ 'Stonera III', 'Watera III', 'Aera III', 'Fira III', 'Blizzara III', 'Thundara III'}
- no_down = S{ 'Quake', 'Flood', 'Tornado', 'Flare', 'Freeze', 'Burst',
- 'Quake II', 'Flood II', 'Tornado II', 'Flare II', 'Freeze II', 'Burst II',
- 'Stonega', 'Waterga', 'Aeroga', 'Firaga', 'Blizzaga', 'Thundaga',
- 'Stonega II', 'Waterga II', 'Aeroga II', 'Firaga II', 'Blizzaga II', 'Thundaga II',
- 'Stonega III', 'Waterga III', 'Aeroga III', 'Firaga III', 'Blizzaga III', 'Thundaga III',
- 'Stoneja', 'Waterja', 'Aeroja', 'Firaja', 'Blizzaja', 'Thundaja',
- 'Rasp', 'Drown', 'Choke', 'Burn', 'Frost', 'Shock',
- 'Geohelix', 'Hydrohelix', 'Anemohelix', 'Pyrohelix', 'Cryohelix', 'Ionohelix',
- 'Luminohelix', 'Noctohelix', 'Comet', 'Meteor', 'Impact'}
- aras = S{ 'Stonera', 'Watera', 'Aera', 'Fira', 'Blizzara', 'Thundara',
- 'Stonera II', 'Watera II', 'Aera II', 'Fira II', 'Blizzara II', 'Thundara II',
- 'Stonera III', 'Watera III', 'Aera III', 'Fira III', 'Blizzara III', 'Thundara III'}
- end
- function job_unload()
- send_command('unbind ^f1')
- send_command('unbind ^f2')
- send_command('unbind ^f3')
- send_command('unbind ^f9')
- send_command('unbind ^f10')
- send_command('unbind ^f11')
- send_command('unbind `')
- send_command('unbind !`')
- end
- function get_sets()
- -- Binds for modes
- send_command('bind ^f1 gs c C1')
- send_command('bind ^f9 gs c C9')
- send_command('bind ^f10 gs c C10')
- send_command('bind ^f11 gs c C11')
- -- Binds for Mana wall and Enmity Douse --
- send_command('bind ^f2 input /ja Mana wall <me>')
- send_command('bind ^f3 input /ja Enmity Douse <t>')
- send_command('bind ` input /ma Stun <t>; wait 0.5; input /p Casting STUN → «¶«<t>«¶«.')
- send_command('bind !` input /ja "Sublimation" <me>')
- send_command('bind !q input /ja "Klimaform" <me>')
- send_command('bind !e input /ja "Alacrity" <me>')
- send_command('@wait 5;input /lockstyleset 20')
- -- Auto Functions --
- AutoRemedy = 'OFF' -- Set to ON if you want to auto use remedies if silenced or Paralyzed, otherwise set to OFF --
- -- Modes --
- MagicIndex = 1
- MagicArray = {"Normal","Death","Magic Burst"} -- Press ctrl + F1 to circle through Magic modes --
- Defense = 'OFF' -- Press CTRL + F9 for Idle being set as Defense full time instead of refresh --
- WeaponLock = 'OFF' -- Press ctrl + F10 for Weapon/sub/Range Lock--
- Capacity = 'OFF' -- Press Ctrl +F11 to have Capacity cape locked on while Idle, Change the cape at line 26 --
- -- Gears --
- gear = {} -- Fill these --
- gear.Capacity_Cape = {name="Mecisto. Mantle"} -- The cape you use for capacity --
- gear.Manawall_Back = {name="Taranus's Cape"} -- Add Ambuscade Cape if you want to use it in idle/refresh when you have manawall on, it not leave {} empty --
- gear.Manawall_Feet = {} -- Add Empy Feet if you want to use it in Idle/refresh when you have manawall on, it not leave {} empty --
- gear.Refresh_Head = {name="Amalric Hood"} -- Add refresh effect + head if you want to use it, it not leave {} empty --
- gear.ElementalConvert_Body = {name="Spae. Coat +1"} -- Add AF Body if you want to nuke in it under 50% MP, it not leave {} empty --
- FC_Head = { name="Merlinic Hood", augments={'Mag. Acc.+11','"Fast Cast"+7','INT+9','"Mag.Atk.Bns."+13',}}
- FC_Hands = {name="Merlinic Dastanas", augments={'"Fast Cast"+6','VIT+4','Mag. Acc.+2',}}
- FC_Body= { name="Merlinic Jubbah", augments={'Accuracy+7','"Fast Cast"+7','"Mag.Atk.Bns."+12',}}
- FC_Feet= { name="Merlinic Crackows", augments={'"Mag.Atk.Bns."+17','"Fast Cast"+5','INT+4','Mag. Acc.+14',}}
- MBHead = { name="Merlinic Hood", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','Magic burst dmg.+8%','INT+6','Mag. Acc.+9','"Mag.Atk.Bns."+4',}}
- MBFeet= { name="Merlinic Crackows", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Magic burst dmg.+5%','INT+6','Mag. Acc.+5','"Mag.Atk.Bns."+15',}}
- MBBody= { name="Merlinic Jubbah", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','Magic burst dmg.+5%','INT+8','Mag. Acc.+15',}}
- MBLegs= { name="Merlinic Shalwar", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','Magic burst dmg.+9%',}}
- MBHands= { name="Amalric Gages +1", augments={'INT+12','Mag. Acc.+20','"Mag.Atk.Bns."+20',}}
- -- Set macro book/set --
- send_command('input /macro book 4;wait .1;input /macro set 1') -- set macro book/set here --
- -- Area mapping --
- Town = S{"Ru'Lude Gardens","Upper Jeuno","Lower Jeuno","Port Jeuno","Port Windurst","Windurst Waters","Windurst Woods","Windurst Walls","Heavens Tower",
- "Port San d'Oria","Northern San d'Oria","Southern San d'Oria","Port Bastok","Bastok Markets","Bastok Mines","Metalworks","Aht Urhgan Whitegate",
- "Tavnazian Safehold","Nashmau","Selbina","Mhaura","Norg","Eastern Adoulin","Western Adoulin","Kazham","Heavens Tower"}
- ---- Precast ----
- sets.precast = {}
- -- Base Set --
- sets.precast.FC = {
- ammo="Sapience Orb",
- head=FC_Head,
- neck="Baetyl Pendant",
- ear1="Loquac. Earring",
- ear2="Enchntr. Earring +1",
- body=FC_Body,
- hands=FC_Hands,
- ring1="Weatherspoon Ring",
- ring2="Kishar ring",
- back="Perimede Cape",
- waist="Witful Belt",
- legs="Psycloth Lappas",
- feet=FC_Feet}
- -- Healing Magic --
- sets.precast.Cure = set_combine(sets.precast.FC, {})
- -- Enhancing Magic --
- sets.precast.Enhancing = set_combine(sets.precast.FC, {})
- sets.precast['Stoneskin'] = set_combine(sets.precast.FC, {})
- -- Elemental Magic --
- sets.precast.Elemental = set_combine(sets.precast.FC, {})
- sets.precast['Impact'] = set_combine(sets.precast.FC, { -- Make sure to leave the head empty --
- head=empty,
- body="Twilight Cloak"})
- -- Death Toggle --
- sets.precast.FC.Toggle = { -- Keep your mp the same or higher than the midcast death set --
- ammo="Psilomene",
- head=FC_Head,
- neck="Baetyl Pendane",
- ear1="Loquac. Earring",
- ear2="Enchntr. Earring +1",
- body=FC_Body,
- hands=FC_Hands,
- ring1="Mephitas's Ring +1",
- ring2="Mephitas's Ring",
- back="Bane Cape",
- waist="Witful Sash",
- legs="Psycloth Lappas",
- feet=FC_Feet}
- -- Job Abilities --
- sets.JA = {}
- sets.JA['Manafont'] = {}
- -- Weaponskills --
- sets.WS = {}
- sets.WS['Myrkr'] = {
- ammo="Psilomene",
- head="Pixie Hairpin +1",
- neck="Dualism Collar +1",
- ear1="Gifted Earring",
- ear2="Etiolation Earring",
- body="Weather. Robe +1",
- hands="Otomi Gloves",
- ring1="Mephitas's Ring +1",
- ring2="Mephitas's Ring",
- back="Bane Cape",
- waist="Shinjutsu-no-Obi +1",
- legs="Amalric Slops",
- feet="Psycloth Boots"}
- ---- Midcast ----
- sets.midcast = {}
- -- Base Set --
- sets.midcast.Recast = {
- ammo="Sapience Orb",
- head="Amalric Coif",
- neck="Baetyl Pendan",
- ear1="Loquac. Earring",
- ear2="Enchntr. Earring +1",
- body={ name="Merlinic Jubbah", augments={'"Fast Cast"+6',}},
- hands={ name="Merlinic Dastanas", augments={'"Fast Cast"+6','DEX+10','Accuracy+19 Attack+19','Mag. Acc.+11 "Mag.Atk.Bns."+11',}},
- ring1="Weatherspoon Ring",
- back="Bane Cape",
- waist="Witful Belt",
- legs="Psycloth Lappas",
- feet="Merlinic crackows"}
- -- Healing Magic --
- sets.midcast.Cure = {
- head="Vanya Hood",
- neck="Incanter's Torque",
- ear1="Healing Earring",
- ear2="Beatific Earring",
- body="Heka's Kalasiris",
- hands="Vanya Cuffs",
- ring1="Sirona's Ring",
- ring2="Haoma's Ring",
- back="Tempered Cape +1",
- waist="Luminary Sash",
- legs="Vanya Slops",
- feet="Vanya Clogs"}
- sets.midcast.Cure.WeaponLock = set_combine(sets.midcast.Cure, {})
- -- Enhancing Magic --
- sets.midcast.Duration = set_combine(sets.midcast.Recast, { -- Duration for haste/Refresh --
- head="Telchine Cap",
- body="Telchine Chas.",
- hands="Telchine Gloves",
- legs="Telchine Braconi",
- feet="Telchine Pigaches"})
- sets.midcast['Phalanx'] = set_combine(sets.midcast.Duration, { -- As much skill as possible for Phalanx --
- head="Befouled Crown",
- neck="Incanter's Torque",
- ear1="Andoaa Earring",
- ear2="Augmenting Earring",
- body="Telchine Chasuble",
- ring1="Stikini Ring +1",
- ring2="Stikini Ring +1",
- back="Perimede Cape",
- feet="Regal Pumps +1"})
- sets.midcast['Stoneskin'] = set_combine(sets.midcast.Duration, {})
- sets.midcast['Aquaveil'] = set_combine(sets.midcast.Duration, {head="Amalric Coif"})
- -- Death Toggle --
- sets.midcast.Duration.Toggle = set_combine(sets.midcast.Recast, { -- Duration for Haste/Refresh in Death mode, so keep your MP High --
- ammo="Psilomene",
- head="Telchine Cap",
- ear2="Enchntr. Earring +1",
- body="Telchine Chasuble",
- hands="Telchine Gloves",
- ring1="Mephitas's Ring +1",
- ring2="Mephitas's Ring",
- back="Bane Cape",
- waist="Shinjutsu-no-Obi",
- legs="Telchine Braconi",
- feet="Telchine Pigaches"})
- -- Enfeebling Magic --
- sets.midcast.Enfeebling = { -- Full skill set for frazzle/distract/Poison --
- main="Grioavolr",
- --main={ name="Grioavolr", augments={'"Conserve MP"+1','INT+2','Mag. Acc.+30',}},
- sub="Clerisy Strap +1",
- ammo="Pemphredo Tathlum",
- head="Amalric Coif",
- neck="Incanter's Torque",
- ear1="Dignitary's Earring",
- ear2="Gwati Earring",
- body={ name="Merlinic Jubbah", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','Mag. Acc.+15',}},
- hands="Jhakri Cuffs +1",
- ring1="Stikini Ring +1",
- ring2="Stikini Ring +1",
- back="Nantosuelta's Cape",
- waist="Luminary Sash",
- legs="Psycloth Lappas",
- feet="Skaoi Boots"}
- sets.midcast.Enfeebling.Macc = set_combine(sets.midcast.Enfeebling, {}) -- For Silence/Dispel/Sleep/Break/Gravity that arent affect by full enfeeb set or effect + gears --
- sets.midcast.Enfeebling.MND = set_combine(sets.midcast.Enfeebling, {}) -- For Paralyze/Slow who's potency/macc is enhanced by MND --
- sets.midcast.Enfeebling.INT = set_combine(sets.midcast.Enfeebling, {}) -- For Blind/Bind who's Macc is enhanced by INT --
- -- Dark Magic --
- sets.midcast.Bio = set_combine(sets.midcast.Recast, { -- For Bio, you want a full Dark magic skill set for potency --
- neck="Incanter's Torque",
- body="Vanya Robe",
- ring1="Stikini Ring +1",
- ring2="Stikini Ring +1",
- back="Bane Cape"})
- sets.midcast.Dark = set_combine(sets.midcast.Recast, { -- For Aspir/Drain --
- head="Pixie Hairpin +1",
- neck="Incanter's Torque",
- body="Vanya Robe",
- ring1="Evanescence Ring",
- ring2="Stikini Ring +1",
- waist="Fucho-no-obi",
- back="Bane Cape",
- legs="Merlinic Shalwar",
- feet="Merlinic Crackows"})
- sets.midcast['Stun'] = set_combine(sets.midcast.Recast, {
- neck="Erra pendant",
- ring1="Stikini Ring +1",
- ring2="Stikini Ring +1"})
- sets.midcast.Death = { -- Normal Nuke --
- ammo="Psilomene",
- head="Pixie Hairpin +1",
- neck="Mizukage-no-kubikazari",
- ear1="Barkarole Earring",
- ear2="Static Earring",
- body="Amalric Doublet",
- hands=MBHands,
- ring1="Mephitas's Ring +1",
- ring2="Archon Ring",
- back={ name="Taranus's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}},
- waist="Refoccilation Stone",
- legs="Amalric Slops",
- feet="Amalric Nails"}
- sets.midcast.Death.MB = set_combine(sets.midcast.Death, { -- For when MB mode is turned on --
- ear2="Static Earring",
- ring1="Mujin Band"})
- sets.midcast.Death.Weather = set_combine(sets.midcast.Death, { -- For when weather/day is on, normal mode --
- --back="Twilight Cape",
- waist="Hachirin-no-Obi"})
- sets.midcast.Death.MB.Weather = set_combine(sets.midcast.Death.MB, { -- For when MB mode is turned on and weather/day is on --
- ring1="Locus Ring",
- waist="Hachirin-no-Obi"})
- --back="Twilight Cape",
- -- Death Toggle --
- sets.midcast.Dark.Toggle = {
- ammo="psilomene",
- head="Amalric Coif",
- neck="Baetyl Pendan",
- ear1="Loquac. Earring",
- ear2="Etiolation Earring",
- body="Vanya Robe",
- hands=MBHands,
- ring1="Stikini Ring +1",
- ring2="Mephitas's Ring +1",
- back="Bane Cape",
- waist="Shinjutsu-no-Obi",
- legs="Merlinic Shalwar",
- feet="Merlinic Crackows"}
- sets.midcast.Death.Toggle = { -- Put MB% gears in here --
- ammo="Psilomene",
- head="Pixie Hairpin +1",
- neck="Mizukage-no-kubikazari",
- ear1="Barkarole Earring",
- ear2="Friomisi Earring",
- body="Amalric Doublet",
- hands=MBHands,
- ring1="Mephitas's Ring +1",
- ring2="Archon Ring",
- back="Bane Cape",
- waist="Refoccilation Stone",
- legs="Amalric Slops",
- feet="Amalric Nails"}
- sets.midcast.Death.Weather.Toggle = set_combine(sets.midcast.Death.Toggle, { -- For when weather is on --
- waist="Hachirin-no-Obi"})
- -- Elemental Magic --
- sets.midcast.Elemental = { -- Normal Nukes --
- main="Lathi",
- ammo="Pemphredo Tathlum",
- sub="Enki Strap",
- ammo="Pemphredo Tathlum",
- head=MBHead,
- body=MBBody,
- legs=MBLegs,
- hands=MBHands,
- feet=MBFeet,
- neck="Mizu. Kubikazari",
- waist="Yamabuki-no-Obi",
- left_ear="Barkarole Earring",
- right_ear="Friomisi Earring",
- ring1="Stikini ring +1",
- ring2="Shiva Ring +1",
- back={ name="Taranus's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}}}
- sets.midcast.Elemental.MB = set_combine(sets.midcast.Elemental, { -- For when MB mode is turned on --
- --ring1="Locus Ring",
- ring1="Mujin Band"})
- sets.midcast.Elemental.Weather = set_combine(sets.midcast.Elemental, { -- For normal nukes with weather on/appropriate day --
- back="Twilight Cape",
- waist="Hachirin-no-Obi"})
- sets.midcast.Elemental.MB.Weather = set_combine(sets.midcast.Elemental.MB, { -- For MB nukes with weather on/appropriate day --
- ear2="Static Earring",
- back="Twilight Cape",
- waist="Hachirin-no-Obi"})
- sets.midcast['Impact'] = set_combine(sets.midcast.Elemental, { -- Make sure to leave the head empty --
- head=empty,
- body="Twilight Cloak"})
- sets.midcast.Comet = { -- This is normal Comet --
- ammo="Pemphredro Tatlhum",
- head="Pixie Hairpin +1",
- neck="Mizukage-no-Kubikazari",
- ear1="Barkarole Earring",
- ear2="Friomisi Earring",
- body={ name="Merlinic Jubbah", augments={'"Mag.Atk.Bns."+29','Magic burst mdg.+11%','INT+7',}},
- hands=MBHands,
- ring1="Stikini Ring +1",
- ring2="Archon Ring",
- back={ name="Taranus's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}},
- waist="Refoccilation",
- legs="Merlinic Shalwar",
- feet={ name="Merlinic Crackows", augments={'"Mag.Atk.Bns."+27','Magic burst mdg.+9%',}}}
- sets.midcast.Comet.MB = set_combine(sets.midcast.Comet, {
- ear2="Static Earring",
- ring1="Mujin Band"})
- sets.midcast.Comet.Weather = set_combine(sets.midcast.Comet, {
- back="Twilight Cape",
- waist="Hachirin-no-Obi"})
- sets.midcast.Comet.MB.Weather = set_combine(sets.midcast.Comet.MB, {
- ring1="Locus Ring",
- back="Twilight Cape",
- waist="Hachirin-no-Obi"})
- -- Death Toggle --
- sets.midcast.Comet.Toggle = { -- This is death toggle Comet, keep the MP high --
- ammo="Psilomene",
- head="Pixie Hairpin +1",
- neck="Mizukage-no-kubikazari",
- ear1="Barkarole Earring",
- ear2="Static Earring",
- body=MBBody,
- hands=MBHands,
- ring1="Mephitas's Ring +1",
- ring2="Archon Ring",
- back={ name="Taranus's Cape", augments={'MP+60','Mag. Acc+20 /Mag. Dmg.+20','MP+12','"Mag.Atk.Bns."+10',}},
- waist="Refoccilation Stone",
- legs="Amalric Slops",
- feet="Amalric Nails"}
- sets.midcast.Comet.Weather.Toggle = set_combine(sets.midcast.Comet.Toggle, { -- This is death toggle Comet when weather/day is on , keep the MP high --
- waist="Hachirin-no-Obi"})
- sets.midcast['Apururu (UC)'] = set_combine(sets.midcast.FastRecast, {body="Apururu Unity Shirt"})
- ---- Aftercast ----
- sets.aftercast = {}
- sets.aftercast.Idle = { -- Your movement speed goes here, mix of PDT/Refresh --
- ammo="Staunch Tathlum +1",
- head="Befouled Crown",
- neck="Loricate Torque +1",
- ear1="Etiolation Earring",
- ear2="Genmei Earring",
- body="Jhakri Robe +2",
- hands=MBHands,
- left_ring="Defending Ring",
- right_ring="Mephitas's ring +1",
- back={ name="Taranus's Cape", augments={'MP+60','Mag. Acc+20 /Mag. Dmg.+20','MP+12','"Mag.Atk.Bns."+10',}},
- waist="Slipor Sash",
- legs="Assid. Pants +1",
- feet="Herald's Gaiters"}
- sets.aftercast.Refresh = set_combine(sets.aftercast.Idle, { -- Refresh gears goes here --
- ear1="Moonshade Earring",
- ring1="Stikini Ring +1",
- ring2="Stikini Ring +1",
- feet="Serpentes Sabots"})
- sets.aftercast.Latent = {waist="Fucho-no-obi"}
- sets.aftercast.Defense = set_combine(sets.aftercast.Idle, { -- For when you want you idle as full time PDT --
- ear1="Etiolation Earring",
- feet="Merlinic Crackows"})
- sets.aftercast.Town = {
- main={ name="Lathi", augments={'MP+80','INT+20','"Mag.Atk.Bns."+20',}},
- sub="Enki Strap",
- ammo="Psilomene",
- head={ name="Merlinic Hood", augments={'Mag. Acc.+19 "Mag.Atk.Bns."+19','Magic burst dmg.+8%','INT+6','Mag. Acc.+9','"Mag.Atk.Bns."+4',}},
- body={ name="Merlinic Jubbah", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','Magic burst dmg.+5%','INT+8','Mag. Acc.+15',}},
- hands={ name="Amalric Gages +1", augments={'INT+12','Mag. Acc.+20','"Mag.Atk.Bns."+20',}},
- legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','Magic burst dmg.+9%',}},
- feet="Herald's Gaiters",
- neck="Mizu. Kubikazari",
- waist="Yamabuki-no-Obi",
- left_ear="Barkaro. Earring",
- right_ear="Static Earring",
- left_ring="Shiva Ring +1",
- right_ring="Mujin Band",
- back={ name="Taranus's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','"Mag.Atk.Bns."+10',}}}
- -- Death Toggle --
- sets.aftercast.Idle.Death = { -- Same MP as your death set with refresh/pdt gears --
- ammo="Psilomene",
- head="Befouled Crown",
- neck="Dualism Collar +1",
- ear1="Moonshade Earring",
- ear2="Etiolation Earring",
- body="Jhakri Robe +2",
- hands=MBHands,
- ring1="Mephitas's Ring +1",
- ring2="Mephitas's Ring",
- back="Bane Cape",
- waist="Fucho-no-obi",
- legs="Assid. Pants +1",
- feet="Amalric Nails"}
- sets.resting = set_combine(sets.aftercast.Refresh, {})
- ---- Melee ----
- sets.engaged = {}
- end
- ---- .::Pretarget Functions::. ---->
- function pretarget(spell,action)
- -- Auto Remedy --
- if AutoRemedy == 'ON' then
- if buffactive['Silence'] or buffactive['Paralysis'] then
- if spell.action_type == 'Magic' or spell.type == 'JobAbility' then
- cancel_spell()
- send_command('input /item "Remedy" <me>')
- end
- end
- end
- end
- ---- .::Precast Functions::. ---->
- function precast(spell)
- if spell.action_type == 'Magic' then
- -- Death Toggle --
- if MagicArray[MagicIndex] == 'Death' then
- equip(sets.precast.FC.Toggle)
- -- Healing Magic --
- elseif string.find(spell.english, 'Cure') or string.find(spell.english, 'Cura') then
- equip(sets.precast.Cure)
- -- Enhancing Magic --
- elseif spell.skill == 'Enhancing Magic' then
- equip(sets.precast.Enhancing)
- -- Elemental Magic --
- elseif spell.skill == 'Elemental Magic' then
- if spell.english == 'Impact' then
- equip(sets.precast[spell.english])
- else
- equip(sets.precast.Elemental)
- end
- -- Everything that have a specific name set --
- elseif sets.precast[spell.english] then
- equip(sets.precast[spell.english])
- -- Everything else that doesn't have a specific set for it --
- else
- equip(sets.precast.FC)
- end
- -- Job Abilities --
- elseif spell.type == 'JobAbility' then
- equip(sets.JA[spell.english])
- -- Weaponskills --
- elseif spell.type == 'WeaponSkill' then
- if sets.WS[spell.english] then
- equip(sets.WS[spell.english])
- else
- equip(sets.WS)
- end
- end
- end
- function job_precast(spell, action, spellMap, eventArgs)
- refine_nukes(spell, action, spellMap, eventArgs)
- refine_various_spells(spell, action, spellMap, eventArgs)
- end
- function refine_various_spells(spell, action, spellMap, eventArgs)
- aspirs = S{'Aspir','Aspir II','Aspir III'}
- sleeps = S{'Sleep','Sleep II'}
- sleepgas = S{'Sleepga','Sleepga II'}
- if not sleepgas:contains(spell.english) and not sleeps:contains(spell.english) and not aspirs:contains(spell.english) then
- return
- end
- local newSpell = spell.english
- local spell_recasts = windower.ffxi.get_spell_recasts()
- local cancelling = 'All '..spell.english..' spells are on cooldown. Cancelling spell casting.'
- if spell_recasts[spell.recast_id] > 0 then
- if aspirs:contains(spell.english) then
- if spell.english == 'Aspir' then
- add_to_chat(122,cancelling)
- eventArgs.cancel = true
- return
- elseif spell.english == 'Aspir II' then newSpell = 'Aspir'
- elseif spell.english == 'Aspir III' then newSpell = 'Aspir II'
- end
- elseif sleeps:contains(spell.english) then
- if spell.english == 'Sleep' then
- add_to_chat(122,cancelling)
- eventArgs.cancel = true
- return
- elseif spell.english == 'Sleep II' then newSpell = 'Sleep'
- end
- elseif sleepgas:contains(spell.english) then
- if spell.english == 'Sleepga' then
- add_to_chat(122,cancelling)
- eventArgs.cancel = true
- return
- elseif spell.english == 'Sleepga II' then newSpell = 'Sleepga'
- end
- end
- end
- if newSpell ~= spell.english then
- send_command('@input /ma "'..newSpell..'" '..tostring(spell.target.raw))
- eventArgs.cancel = true
- return
- end
- end
- ---- .::Midcast Functions::. ---->
- function midcast(spell)
- if spell.action_type == 'Magic' then
- -- Healing Magic --
- if string.find(spell.english, 'Cure') or string.find(spell.english, 'Cura') then
- if WeaponLock == 'ON' then
- equip(sets.midcast.Cure.WeaponLock)
- else
- equip(sets.midcast.Cure)
- end
- -- Enhancing Magic --
- elseif string.find(spell.english, 'Haste') then
- if MagicArray[MagicIndex] == 'Death' then
- equip(sets.midcast.Duration.Toggle)
- else
- equip(sets.midcast.Duration)
- end
- elseif string.find(spell.english, 'Refresh') then
- if MagicArray[MagicIndex] == 'Death' then
- equip(sets.midcast.Duration.Toggle)
- else
- equip(sets.midcast.Duration, {head=gear.Refresh_Head})
- end
- -- Enfeebling Magic --
- elseif string.find(spell.english, 'Frazzle') or string.find(spell.english, 'Distract') or string.find(spell.english, 'Poison') then
- equip(sets.midcast.Enfeebling)
- elseif string.find(spell.english, 'Dispel') or string.find(spell.english, 'Silence') or string.find(spell.english, 'Sleep') or string.find(spell.english, 'Break') or string.find(spell.english, 'Gravity') then
- equip(sets.midcast.Enfeebling.Macc)
- elseif string.find(spell.english, 'Paralyze') or string.find(spell.english, 'Slow') or string.find(spell.english, 'Addle') then
- equip(sets.midcast.Enfeebling.MND)
- elseif string.find(spell.english, 'Blind') or spell.english == 'Bind' then
- equip(sets.midcast.Enfeebling.INT)
- -- Dark Magic --
- elseif string.find(spell.english, 'Bio') then
- equip(sets.midcast.Bio)
- elseif string.find(spell.english, 'Aspir') or string.find(spell.english, 'Drain') then
- if MagicArray[MagicIndex] == 'Death' then
- equip(sets.midcast.Dark.Toggle)
- else
- equip(sets.midcast.Dark)
- end
- elseif spell.english == 'Death' then
- if MagicArray[MagicIndex] == 'Death' then
- if spell.english == 'Death' then
- if world.weather_element == "Dark" or world.day_element == "Darksday" then
- equip(sets.midcast.Death.Weather.Toggle)
- else
- equip(sets.midcast.Death.Toggle)
- end
- end
- elseif MagicArray[MagicIndex] == 'Magic Burst' then
- if spell.english == 'Death' then
- if world.weather_element == "Dark" or world.day_element == "Darksday" then
- equip(sets.midcast.Death.MB.Weather)
- else
- equip(sets.midcast.Death.MB)
- end
- end
- elseif world.weather_element == "Dark" or world.day_element == "Darksday" then
- equip(sets.midcast.Death.Weather)
- else
- equip(sets.midcast.Death)
- end
- -- Elemental Magic --
- elseif spell.skill == 'Elemental Magic' then
- if spell.english == 'Impact' then
- equip(sets.midcast['Impact'])
- elseif MagicArray[MagicIndex] == 'Death' then
- if spell.english == 'Comet' then
- if spell.element == world.weather_element or spell.element == world.day_element then
- if player.mpp <50 then
- equip(sets.midcast.Comet.Weather.Toggle, {body=gear.ElementalConvert_Body})
- else
- equip(sets.midcast.Comet.Weather.Toggle)
- end
- else
- equip(sets.midcast.Comet.Toggle)
- end
- elseif spell.element == world.weather_element or spell.element == world.day_element then
- if player.mpp <50 then
- equip(sets.midcast.Elemental.MB.Weather, {body=gear.ElementalConvert_Body})
- else
- equip(sets.midcast.Elemental.MB.Weather)
- end
- else
- equip(sets.midcast.Elemental.MB)
- end
- elseif MagicArray[MagicIndex] == 'Magic Burst' then
- if spell.english == 'Comet' then
- if spell.element == world.weather_element or spell.element == world.day_element then
- if player.mpp <50 then
- equip(sets.midcast.Comet.MB.Weather, {body=gear.ElementalConvert_Body})
- else
- equip(sets.midcast.Comet.MB.Weather)
- end
- else
- equip(sets.midcast.Comet.MB)
- end
- elseif spell.element == world.weather_element or spell.element == world.day_element then
- if player.mpp <50 then
- equip(sets.midcast.Elemental.MB.Weather, {body=gear.ElementalConvert_Body})
- else
- equip(sets.midcast.Elemental.MB.Weather)
- end
- else
- equip(sets.midcast.Elemental.MB)
- end
- elseif spell.english == 'Comet' then
- if spell.element == world.weather_element or spell.element == world.day_element then
- if player.mpp <50 then
- equip(sets.midcast.Comet.Weather, {body=gear.ElementalConvert_Body})
- else
- equip(sets.midcast.Comet.Weather)
- end
- else
- equip(sets.midcast.Comet)
- end
- elseif spell.element == world.weather_element or spell.element == world.day_element then
- if player.mpp <50 then
- equip(sets.midcast.Elemental.Weather, {body=gear.ElementalConvert_Body})
- else
- equip(sets.midcast.Elemental.Weather)
- end
- else
- equip(sets.midcast.Elemental)
- end
- -- Everything that have a specific name set --
- elseif sets.midcast[spell.english] then
- equip(sets.midcast[spell.english])
- -- Everything else that doesn't have a specific set for it --
- else
- equip(sets.midcast.Recast)
- end
- end
- end
- function job_aftercast(spell, action, spellMap, eventArgs)
- if not spell.interrupted then
- if spell.english:startswith('Indi') then
- if not classes.CustomIdleGroups:contains('Indi') then
- classes.CustomIdleGroups:append('Indi')
- end
- send_command('@timers d "'..indi_timer..'"')
- indi_timer = spell.english
- send_command('@timers c "'..indi_timer..'" '..indi_duration..' down spells/00136.png')
- elseif spell.english == 'Sleep' or spell.english == 'Sleepga' then
- send_command('@timers c "'..spell.english..' ['..spell.target.name..']" 60 down spells/00220.png')
- elseif spell.english == 'Sleep II' or spell.english == 'Sleepga II' then
- send_command('@timers c "'..spell.english..' ['..spell.target.name..']" 90 down spells/00220.png')
- end
- elseif not player.indi then
- classes.CustomIdleGroups:clear()
- end
- end
- ---- .::Aftercast Functions::. ---->
- function aftercast(spell,action)
- status_change(player.status)
- end
- ---- .::Status Changes Functions::. ---->
- function status_change(new,tab,old)
- -- Idle --
- if new == 'Idle' then
- if MagicArray[MagicIndex] == 'Death' then
- equip(sets.aftercast.Idle.Death)
- elseif buffactive[437] then
- equip(sets.aftercast.Refresh, {back=gear.Manawall_Back, feet=gear.Manawall_Feet})
- elseif Defense == 'ON' then
- equip(sets.aftercast.Defense)
- elseif Town:contains(world.zone) then
- equip(sets.aftercast.Town)
- elseif player.mpp <70 then
- equip(sets.aftercast.Refresh)
- elseif player.mpp < 51 then
- equip(sets.aftercast.Latent)
- else
- equip(sets.aftercast.Idle)
- end
- -- Resting --
- elseif new == 'Resting' then
- equip(sets.Resting)
- -- Engaged --
- elseif new == 'Engaged' then
- equip(sets.engaged)
- end
- end
- --- ..:: Modes functions ::.. --->
- function self_command(command)
- status_change(player.status)
- -- Magic --
- if command == 'C1' then
- MagicIndex = (MagicIndex % #MagicArray) + 1
- add_to_chat(158,'Magic Set: ' .. MagicArray[MagicIndex])
- -- Defense --
- elseif command == 'C9' then
- if Defense == 'ON' then
- Defense = 'OFF'
- add_to_chat(123,'Defense Idle Set: [OFF]')
- else
- Defense = 'ON'
- equip(sets.aftercast.Defense)
- add_to_chat(158,'Defense Idle Set: [ON]')
- end
- -- Weapon Lock --
- elseif command == 'C10' then
- if WeaponLock == 'ON' then
- WeaponLock = 'OFF'
- enable('main', 'sub' ,'range')
- add_to_chat(123,'Weapon Lock Set: [OFF]')
- else
- WeaponLock = 'ON'
- disable('main', 'sub' ,'range')
- add_to_chat(158,'Weapon Lock Set: [ON]')
- end
- -- Capacity --
- elseif command == 'C11' then
- if Capacity == 'ON' then
- Capacity = 'OFF'
- enable('back')
- add_to_chat(123,'Capacity Cape Set: [OFF]')
- else
- Capacity = 'ON'
- equip({back=gear.Capacity_Cape})
- disable('back')
- add_to_chat(158,'Capacity Cape Set: [ON]')
- end
- end
- end
- -- Automatically changes Idle gears if you zone in or out of town --
- windower.register_event('zone change', function()
- status_change(player.status)
- if Town:contains(world.zone) then
- equip(sets.aftercast.Town)
- else
- equip(sets.aftercast.Idle)
- end
- end)
- -- Will make gears change the seconds you use Manawall --
- function buff_change(buff,gain)
- if midaction() then
- return
- else
- status_change(player.status)
- end
- end
- function refine_nukes(spell, action, spellMap, eventArgs)
- local nuke_mp_cost = { ['Stone'] = 4, ['Stone II'] = 16, ['Stone III'] = 46, ['Stone IV'] = 88, ['Stone V'] = 135, ['Stone VI'] = 237,
- ['Water'] = 5, ['Water II'] = 19, ['Water III'] = 46, ['Water IV'] = 99, ['Water V'] = 175, ['Water VI'] = 266,
- ['Aero'] = 6, ['Aero II'] = 22, ['Aero III'] = 54, ['Aero IV'] = 115, ['Aero V'] = 198, ['Aero VI'] = 299,
- ['Fire'] = 7, ['Fire II'] = 26, ['Fire III'] = 63, ['Fire IV'] = 135, ['Fire V'] = 228, ['Fire VI'] = 339,
- ['Blizzard'] = 8, ['Blizzard II'] = 31, ['Blizzard III'] = 75, ['Blizzard IV'] = 162, ['Blizzard V'] = 267, ['Blizzard VI'] = 386,
- ['Thunder'] = 9, ['Thunder II'] = 37, ['Thunder III'] = 91, ['Thunder IV'] = 195, ['Thunder V'] = 306, ['Thunder VI'] = 437,
- ['Stonera'] = 54, ['Stonera II'] = 143, ['Stonera III'] = 276,
- ['Watera'] = 66, ['Watera II'] = 163, ['Watera III'] = 312,
- ['Aera'] = 79, ['Aera II'] = 184, ['Aera III'] = 350,
- ['Fira'] = 93, ['Fira II'] = 206, ['Fira III'] = 390,
- ['Blizzara'] = 108, ['Blizzara II'] = 229, ['Blizzara III'] = 432,
- ['Thundara'] = 123, ['Thundara II'] = 253, ['Thundara III'] = 476,}
- if spell.skill ~= 'Elemental Magic' or no_down:contains(spell.english) then
- return
- end
- local elementType
- if spell.element == 'Earth' then elementType = 'Stone'
- elseif spell.element == 'Water' then elementType = 'Water'
- elseif spell.element == 'Wind' then elementType = 'Aero'
- elseif spell.element == 'Fire' then elementType = 'Fire'
- elseif spell.element == 'Ice' then elementType = 'Blizzard'
- elseif spell.element == 'Lightning' then elementType = 'Thunder'
- end
- local newAra
- if aras:contains(spell.english)then
- if elementType == 'Stone' then newAra = 'Stonera'
- elseif elementType == 'Water' then newAra = 'Watera'
- elseif elementType == 'Aero' then newAra = 'Aera'
- elseif elementType == 'Fire' then newAra = 'Fira'
- elseif elementType == 'Blizzard' then newAra = 'Blizzara'
- elseif elementType == 'Thunder' then newAra = 'Thundara'
- end
- end
- local newNuke = spell.english
- local nukeMpCost = nuke_mp_cost[newNuke]
- if buffactive['Dark Arts'] or buffactive['Addendum: Black'] then
- nukeMpCost = math.floor(nukeMpCost * 0.9)
- elseif buffactive['Light Arts'] or buffactive['Addendum: White'] then
- nukeMpCost = math.ceil(nukeMpCost * 1.2)
- end
- local downgrade
- -- Downgrade the spell to what we can actually afford
- if player.mp < nukeMpCost and not buffactive['Mana Well'] then
- if spell.element == 'Earth' then
- if aras:contains(spell.english) then
- if player.mp < 54 then
- add_to_chat(122, 'Insufficient MP ['..tostring(player.mp)..']. Cancelling.')
- eventArgs.cancel = true
- return
- elseif player.mp < 143 then newNuke = ''..newAra..''
- elseif player.mp < 276 then newNuke = ''..newAra..' II'
- end
- elseif not aras:contains(spell.english) then
- if player.mp < 4 then
- add_to_chat(122, 'Insufficient MP ['..tostring(player.mp)..']. Cancelling.')
- eventArgs.cancel = true
- return
- elseif player.mp < 16 then newNuke = 'Stone'
- elseif player.mp < 40 then newNuke = 'Stone II'
- elseif player.mp < 88 then newNuke = 'Stone III'
- elseif player.mp < 156 then newNuke = 'Stone IV'
- elseif player.mp < 237 then newNuke = 'Stone V'
- end
- end
- elseif spell.element == 'Water' then
- if aras:contains(spell.english) then
- if player.mp < 66 then
- add_to_chat(122, 'Insufficient MP ['..tostring(player.mp)..']. Cancelling.')
- eventArgs.cancel = true
- return
- elseif player.mp < 163 then newNuke = ''..newAra..''
- elseif player.mp < 312 then newNuke = ''..newAra..' II'
- end
- elseif not aras:contains(spell.english) then
- if player.mp < 5 then
- add_to_chat(122, 'Insufficient MP ['..tostring(player.mp)..']. Cancelling.')
- eventArgs.cancel = true
- return
- elseif player.mp < 19 then newNuke = 'Water'
- elseif player.mp < 46 then newNuke = 'Water II'
- elseif player.mp < 99 then newNuke = 'Water III'
- elseif player.mp < 175 then newNuke = 'Water IV'
- elseif player.mp < 266 then newNuke = 'Water V'
- end
- end
- elseif spell.element == 'Wind' then
- if aras:contains(spell.english) then
- if player.mp < 79 then
- add_to_chat(122, 'Insufficient MP ['..tostring(player.mp)..']. Cancelling.')
- eventArgs.cancel = true
- return
- elseif player.mp < 184 then newNuke = ''..newAra..''
- elseif player.mp < 350 then newNuke = ''..newAra..' II'
- end
- elseif not aras:contains(spell.english) then
- if player.mp < 6 then
- add_to_chat(122, 'Insufficient MP ['..tostring(player.mp)..']. Cancelling.')
- eventArgs.cancel = true
- return
- elseif player.mp < 22 then newNuke = 'Aero'
- elseif player.mp < 54 then newNuke = 'Aero II'
- elseif player.mp < 115 then newNuke = 'Aero III'
- elseif player.mp < 198 then newNuke = 'Aero IV'
- elseif player.mp < 299 then newNuke = 'Aero V'
- end
- end
- elseif spell.element == 'Fire' then
- if aras:contains(spell.english) then
- if player.mp < 93 then
- add_to_chat(122, 'Insufficient MP ['..tostring(player.mp)..']. Cancelling.')
- eventArgs.cancel = true
- return
- elseif player.mp < 206 then newNuke = ''..newAra..''
- elseif player.mp < 390 then newNuke = ''..newAra..' II'
- end
- elseif not aras:contains(spell.english) then
- if player.mp < 7 then
- add_to_chat(122, 'Insufficient MP ['..tostring(player.mp)..']. Cancelling.')
- eventArgs.cancel = true
- return
- elseif player.mp < 26 then newNuke = 'Fire'
- elseif player.mp < 63 then newNuke = 'Fire II'
- elseif player.mp < 135 then newNuke = 'Fire III'
- elseif player.mp < 228 then newNuke = 'Fire IV'
- elseif player.mp < 339 then newNuke = 'Fire V'
- end
- end
- elseif spell.element == 'Ice' then
- if aras:contains(spell.english) then
- if player.mp < 108 then
- add_to_chat(122, 'Insufficient MP ['..tostring(player.mp)..']. Cancelling.')
- eventArgs.cancel = true
- return
- elseif player.mp < 229 then newNuke = ''..newAra..''
- elseif player.mp < 432 then newNuke = ''..newAra..' II'
- end
- elseif not aras:contains(spell.english) then
- if player.mp < 8 then
- add_to_chat(122, 'Insufficient MP ['..tostring(player.mp)..']. Cancelling.')
- eventArgs.cancel = true
- return
- elseif player.mp < 31 then newNuke = 'Blizzard'
- elseif player.mp < 75 then newNuke = 'Blizzard II'
- elseif player.mp < 162 then newNuke = 'Blizzard III'
- elseif player.mp < 267 then newNuke = 'Blizzard IV'
- elseif player.mp < 386 then newNuke = 'Blizzard V'
- end
- end
- elseif spell.element == 'Lightning' then
- if aras:contains(spell.english) then
- if player.mp < 123 then
- add_to_chat(122, 'Insufficient MP ['..tostring(player.mp)..']. Cancelling.')
- eventArgs.cancel = true
- return
- elseif player.mp < 253 then newNuke = ''..newAra..''
- elseif player.mp < 476 then newNuke = ''..newAra..' II'
- end
- elseif not aras:contains(spell.english) then
- if player.mp < 9 then
- add_to_chat(122, 'Insufficient MP ['..tostring(player.mp)..']. Cancelling.')
- eventArgs.cancel = true
- return
- elseif player.mp < 37 then newNuke = 'Thunder'
- elseif player.mp < 91 then newNuke = 'Thunder II'
- elseif player.mp < 195 then newNuke = 'Thunder III'
- elseif player.mp < 306 then newNuke = 'Thunder IV'
- elseif player.mp < 437 then newNuke = 'Thunder V'
- end
- end
- end
- downgrade = 'Insufficient MP ['..tostring(player.mp)..'] to cast '..spell.english..'. Changing spell to '..newNuke..'.'
- end
- -- Downgrade the spell to what we can actually cast
- local spell_recasts = windower.ffxi.get_spell_recasts()
- if spell_recasts[spell.recast_id] > 0 then
- if t1:contains(spell.english) then
- add_to_chat(122, ''..spell.english..' is on cooldown. Cancelling.')
- eventArgs.cancel = true
- return
- elseif t2:contains(spell.english) then newNuke = ''..elementType..''
- elseif t3:contains(spell.english) then newNuke = ''..elementType..' II'
- elseif t4:contains(spell.english) then newNuke = ''..elementType..' III'
- elseif t5:contains(spell.english) then newNuke = ''..elementType..' IV'
- elseif t6:contains(spell.english) then newNuke = ''..elementType..' V'
- elseif ra2:contains(spell.english) then newNuke = ''..newAra..''
- elseif ra3:contains(spell.english) then newNuke = ''..newAra..' II'
- end
- downgrade = '***'..spell.english..'*** is on cooldown. Downgrading spell to ***'..newNuke..'***.'
- end
- if newNuke ~= spell.english then
- send_command('@input /ma "'..newNuke..'" '..tostring(spell.target.raw))
- if downgrade then
- add_to_chat(122, downgrade)
- end
- eventArgs.cancel = true
- return
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement