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 (and it's supplementary files) to go with this.
- -- Also, you'll need the Shortcuts addon to handle the auto-targetting of the custom pact commands.
- --[[
- Custom commands:
- gs c petweather
- Automatically casts the storm appropriate for the current avatar, if possible.
- gs c siphon
- Automatically run the process to: dismiss the current avatar; cast appropriate
- weather; summon the appropriate spirit; Elemental Siphon; release the spirit;d
- and re-summon the avatar.
- Will not cast weather you do not have access to.
- Will not re-summon the avatar if one was not out in the first place.
- Will not release the spirit if it was out before the command was issued.
- gs c pact [PactType]
- Attempts to use the indicated pact type for the current avatar.
- PactType can be one of:
- cure
- curaga
- buffOffense
- buffDefense
- buffSpecial
- debuff1
- debuff2
- sleep
- nuke2
- nuke4
- bp70
- bp75 (merits and lvl 75-80 pacts)
- astralflow
- --]]
- -- Initialization function for this job file.
- function get_sets()
- -- Load and initialize the include file.
- include('Mote-Include.lua')
- include('organizer-lib')
- end
- organizer_items = {
- }
- -- Setup vars that are user-independent.
- function job_setup()
- state.Buff["Avatar's Favor"] = buffactive["Avatar's Favor"] or false
- debuffs = S{"Dia","Dia II","Bio","Bio II","Distract", "Frazzle", "Dispel", "Silence", "Slow", "Paralyze", "Sleep", "Sleep II", "Gravity", "Diaga", "Poison II", "Poison", "Blind", "Bind"}
- debuffs_acc = S{"Sleep", "Sleep II", "Bind", "Dispel", "Silence", "Gravity"}
- spirits = S{"LightSpirit", "DarkSpirit", "FireSpirit", "EarthSpirit", "WaterSpirit", "AirSpirit", "IceSpirit", "ThunderSpirit"}
- avatars = S{"Carbuncle", "Fenrir", "Diabolos", "Ifrit", "Titan", "Leviathan", "Garuda", "Shiva", "Ramuh", "Odin", "Alexander", "Cait Sith"}
- meritPacts = S{'Meteor Strike','Heavenly Strike','Wind Blade','Geocrush','Grand Fall','Thunderstorm'}
- magicalRagePacts = S{
- 'Inferno','Earthen Fury','Tidal Wave','Aerial Blast','Diamond Dust','Judgment Bolt','Searing Light','Howling Moon','Ruinous Omen',
- 'Fire II','Stone II','Water II','Aero II','Blizzard II','Thunder II',
- 'Fire IV','Stone IV','Water IV','Aero IV','Blizzard IV','Thunder IV',
- 'Thunderspark','Burning Strike','Meteorite','Nether Blast','Flaming Crush',
- 'Meteor Strike','Heavenly Strike','Wind Blade','Geocrush','Grand Fall','Thunderstorm',
- 'Holy Mist','Lunar Bay','Night Terror','Level ? Holy','Conflag Strike','Impact','Tornado II'}
- astralRagePacts = S{
- 'Inferno','Earthen Fury','Tidal Wave','Aerial Blast','Diamond Dust','Judgment Bolt','Searing Light','Howling Moon','Ruinous Omen'}
- pacts = {}
- pacts.cure = {['Carbuncle']='Healing Ruby'}
- pacts.curaga = {['Carbuncle']='Healing Ruby II', ['Garuda']='Whispering Wind', ['Leviathan']='Spring Water'}
- pacts.buffoffense = {['Carbuncle']='Glittering Ruby', ['Ifrit']='Crimson Howl', ['Garuda']='Hastega', ['Ramuh']='Rolling Thunder',
- ['Fenrir']='Ecliptic Growl'}
- pacts.buffdefense = {['Carbuncle']='Shining Ruby', ['Shiva']='Frost Armor', ['Garuda']='Aerial Armor', ['Titan']='Earthen Ward',
- ['Ramuh']='Lightning Armor', ['Fenrir']='Ecliptic Howl', ['Diabolos']='Noctoshield', ['Cait Sith']='Reraise II'}
- pacts.buffspecial = {['Ifrit']='Inferno Howl', ['Garuda']='Fleet Wind', ['Titan']='Earthen Armor', ['Diabolos']='Dream Shroud',
- ['Carbuncle']='Soothing Ruby', ['Fenrir']='Heavenward Howl', ['Cait Sith']='Raise II'}
- pacts.debuff1 = {['Shiva']='Diamond Storm', ['Ramuh']='Shock Squall', ['Leviathan']='Tidal Roar', ['Fenrir']='Lunar Cry',
- ['Diabolos']='Pavor Nocturnus', ['Cait Sith']='Eerie Eye'}
- pacts.debuff2 = {['Shiva']='Sleepga', ['Leviathan']='Slowga', ['Fenrir']='Lunar Roar', ['Diabolos']='Somnolence'}
- pacts.sleep = {['Shiva']='Sleepga', ['Diabolos']='Nightmare', ['Cait Sith']='Mewing Lullaby'}
- pacts.nuke2 = {['Ifrit']='Fire II', ['Shiva']='Blizzard II', ['Garuda']='Aero II', ['Titan']='Stone II',
- ['Ramuh']='Thunder II', ['Leviathan']='Water II'}
- pacts.nuke4 = {['Ifrit']='Fire IV', ['Shiva']='Blizzard IV', ['Garuda']='Aero IV', ['Titan']='Stone IV',
- ['Ramuh']='Thunder IV', ['Leviathan']='Water IV'}
- pacts.bp70 = {['Ifrit']='Flaming Crush', ['Shiva']='Rush', ['Garuda']='Predator Claws', ['Titan']='Mountain Buster',
- ['Ramuh']='Volt Strike', ['Leviathan']='Spinning Dive', ['Carbuncle']='Meteorite', ['Fenrir']='Eclipse Bite',
- ['Diabolos']='Blindside',['Cait Sith']='Regal Gash',['Siren']='Hysteric Assault'}
- pacts.bp75 = {['Ifrit']='Meteor Strike', ['Shiva']='Heavenly Strike', ['Garuda']='Wind Blade', ['Titan']='Geocrush',
- ['Ramuh']='Thunderstorm', ['Leviathan']='Grand Fall', ['Carbuncle']='Holy Mist', ['Fenrir']='Impact',
- ['Diabolos']='Night Terror', ['Cait Sith']='Level ? Holy',['Siren']='Tornado II'}
- pacts.astralflow = {['Ifrit']='Inferno', ['Shiva']='Diamond Dust', ['Garuda']='Aerial Blast', ['Titan']='Earthen Fury',
- ['Ramuh']='Judgment Bolt', ['Leviathan']='Tidal Wave', ['Carbuncle']='Searing Light', ['Fenrir']='Howling Moon',
- ['Diabolos']='Ruinous Omen', ['Cait Sith']="Altana's Favor"}
- -- Wards table for creating custom timers
- wards = {}
- -- Base duration for ward pacts.
- wards.durations = {
- ['Crimson Howl'] = 60, ['Earthen Armor'] = 60, ['Inferno Howl'] = 60, ['Heavenward Howl'] = 60,
- ['Rolling Thunder'] = 120, ['Fleet Wind'] = 120,
- ['Shining Ruby'] = 180, ['Frost Armor'] = 180, ['Lightning Armor'] = 180, ['Ecliptic Growl'] = 180,
- ['Glittering Ruby'] = 180, ['Hastega'] = 180, ['Noctoshield'] = 180, ['Ecliptic Howl'] = 180,
- ['Dream Shroud'] = 180, ['Hastega II'] = 180, ['Crystal Blessing'] = 180, ['Soothing Current'] = 180
- }
- -- Icons to use when creating the custom timer.
- wards.icons = {
- ['Earthen Armor'] = 'spells/00299.png', -- 00299 for Titan
- ['Shining Ruby'] = 'spells/00043.png', -- 00043 for Protect
- ['Dream Shroud'] = 'spells/00304.png', -- 00304 for Diabolos
- ['Noctoshield'] = 'spells/00106.png', -- 00106 for Phalanx
- ['Crimson Howl'] = 'spells/00298.png', -- 00298 for Ifrit
- ['Inferno Howl'] = 'spells/00298.png', -- 00298 for Ifrit
- ['Soothing Current'] = 'spells/00169.png', -- 00169 for Water Icon
- ['Crystal Blessing'] = 'spells/00269.png', -- 00169 for Water Icon
- ['Hastega'] = 'spells/00358.png', -- 00358 for Hastega
- ['Hastega II'] = 'spells/00358.png', -- 00358 for Hastega
- ['Rolling Thunder'] = 'spells/00104.png', -- 00358 for Enthunder
- ['Frost Armor'] = 'spells/00250.png', -- 00250 for Ice Spikes
- ['Lightning Armor'] = 'spells/00251.png', -- 00251 for Shock Spikes
- ['Reraise II'] = 'spells/00135.png', -- 00135 for Reraise
- ['Fleet Wind'] = 'abilities/00074.png', --
- }
- -- Flags for code to get around the issue of slow skill updates.
- wards.flag = false
- wards.spell = ''
- 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'}
- options.DefenseModes = {'Normal', 'Pet DT'}
- options.WeaponskillModes = {'Normal', 'Overdrive'}
- options.CastingModes = {'Normal', 'Resistant'}
- options.IdleModes = {'Normal','PDT','Kite'}
- options.RestingModes = {'Normal'}
- options.PhysicalDefenseModes = {}
- options.MagicalDefenseModes = {}
- state.Defense.PhysicalMode = 'PDT'
- select_default_macro_book()
- lock_weapon = 0;
- send_command('bind f10 gs c weapon_lock_toggle')
- send_command('bind f11 gs c fix_gear')
- windower.raw_register_event('zone change', adoulin_body)
- end
- -- Define sets and vars used by this job file.
- function init_gear_sets()
- sets.style = {body="Shomonjijoe +1",head="Carbie Cap"}
- Lehbrailg_MACC = {name="Lehbrailg +2", augments={'DMG:+14','INT+6','Mag. Acc.+22'}}
- Lehbrailg_FC = {name="Lehbrailg +2", augments={'DMG:+9','MND+5','"Fast Cast"+2'}}
- Grioavolr_TH = {name="Grioavolr", augments={'"Cure" spellcasting time -3%','AGI+1','"Treasure Hunter"+2','Magic Damage +1',}}
- Grioavolr_PMATK = {name="Grioavolr", augments={'Blood Pact Dmg.+8','Pet: VIT+9','Pet: Mag. Acc.+18','Pet: "Mag.Atk.Bns."+27',}}
- Griovolr_Nuke = {name="Grioavolr", augments={'Rng.Atk.+14','"Mag.Atk.Bns."+30','Accuracy+8','Magic Damage +5',}}
- Espiritus_MATK = {name="Espiritus", augments={'Enmity-6','Pet: "Mag.Atk.Bns."+30','Pet: Damage taken -4%',}}
- Espiritus_MACC = {name="Espiritus", augments={'Summoning magic skill +15','Pet: Mag. Acc.+30','Pet: Damage taken -4%',}}
- TelchineHat_Siphon = {name="Telchine Cap", augments={'"Elemental Siphon"+35','Pet: Damage taken -4%'}}
- TelchineHat_Enhance = {name="Telchine Cap", augments={'Enh. Mag. eff. dur. +10',}}
- TelchineHat_Regen = {name="Telchine Cap", augments={'"Regen" potency+3',}}
- TelchineBody_Siphon = {name="Telchine Chas.", augments={'Pet: Accuracy+15 Pet: Rng. Acc.+15','"Elemental Siphon"+35','Pet: Damage taken -3%'}}
- TelchineBody_Regen = {name="Telchine Chas.", augments={'"Regen" potency+3',}}
- TelchineBody_Enhance = {name="Telchine Chas.", augments={'Enh. Mag. eff. dur. +9',}}
- TelchineGloves_Siphon = {name="Telchine Gloves", augments={'Pet: Accuracy+16 Pet: Rng. Acc.+16','"Elemental Siphon"+30','Pet: Damage taken -3%'}}
- TelchineGloves_Enhance = {name="Telchine Gloves", augments={'Enh. Mag. eff. dur. +8',}}
- TelchineGloves_Regen = {name="Telchine Gloves", augments={'"Regen" potency+3',}}
- TelchineLegs_Siphon = {name="Telchine Braconi", augments={'Pet: Attack+17 Pet: Rng.Atk.+17','"Elemental Siphon"+35','Pet: Damage taken -4%'}}
- TelchineLegs_Enhance = {name="Telchine Braconi", augments={'Enh. Mag. eff. dur. +8',}}
- TelchineLegs_Regen = {name="Telchine Braconi", augments={'"Regen" potency+3',}}
- TelchineBoots_PDT = {name="Telchine Pigaches", augments={'Pet: Attack+14 Pet: Rng.Atk.+14','Pet: "Regen"+3','Pet: Damage taken -4%'}}
- TelchineBoots_Enhance = {name="Telchine Pigaches", augments={'Enh. Mag. eff. dur. +9',}}
- TelchineBoots_Regen = {name="Telchine Pigaches", augments={'"Regen" potency+3',}}
- Campestres_EVA = {name="Campestres's Cape", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20','Eva.+20 /Mag. Eva.+20','Pet: Accuracy+10 Pet: Rng. Acc.+10','Pet: Haste+10','Pet: Damage taken -5%'}}
- Campestres_PMACC = {name="Campestres's Cape", augments={'Pet: M.Acc.+20 Pet: M.Dmg.+20','Pet: Mag. Acc.+10','Pet: "Regen"+10','Pet: Damage taken -5%',}}
- Campestres_FC = {name="Campestres's Cape", augments={'Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}}
- HeliosHat_PMATK = {name="Helios Band", augments={'Pet: "Mag.Atk.Bns."+27','Pet: Crit.hit rate +4','Blood Pact Dmg.+7'}}
- HeliosBody_PMATK = {name="Helios Jacket", augments={'Pet: "Mag.Atk.Bns."+28','Pet: Crit.hit rate +4','Blood Pact Dmg.+6'}}
- HeliosGloves_PMATK = {name="Helios Gloves", augments={'Pet: "Mag.Atk.Bns."+29','Pet: Crit.hit rate +4','Blood Pact Dmg.+7'}}
- HeliosPants_PMATK = {name="Helios Spats", augments={'Pet: "Mag.Atk.Bns."+29','Pet: Crit.hit rate +4','Blood Pact Dmg.+7'}}
- HeliosBoots_PMATK = {name="Helios Boots", augments={'Pet: "Mag.Atk.Bns."+26','Pet: Crit.hit rate +4','Blood Pact Dmg.+7'}}
- HeliosHat_PMACC = {name="Helios Band", augments={'Pet: Mag. Acc.+28','"Blood Boon"+7'}}
- HeliosBody_PMACC = {name="Helios Jacket", augments={'Pet: Mag. Acc.+27','"Blood Boon"+6','Summoning magic skill +4'}}
- HeliosHands_PMACC = {name="Helios Gloves", augments={'Pet: Mag. Acc.+29','"Blood Boon"+7'}}
- HeliosPants_PMACC = {name="Helios Spats", augments={'Pet: Mag. Acc.+30','Blood Pact Dmg.+2'}}
- HeliosBoots_PMACC = {name="Helios Boots", augments={'Pet: Mag. Acc.+27','"Blood Boon"+7','Summoning magic skill +4'}}
- HeliosHat_PATK = {name="Helios Band", augments={'Pet: Attack+30 Pet: Rng.Atk.+30','Pet: "Dbl. Atk."+8','Blood Pact Dmg.+7',}}
- HeliosPants_PMelee = {name="Helios Spats", augments={'Pet: Attack+25 Pet: Rng.Atk.+25','Pet: "Dbl. Atk."+7','Blood Pact Dmg.+4'}}
- HeliosBoots_PMelee = {name="Helios Boots", augments={'Pet: Attack+30 Pet: Rng.Atk.+30','Pet: "Dbl. Atk."+8','Blood Pact Dmg.+7',}}
- leftDarkRing = {name="Dark Ring",augments={"Phys. dmg. taken -5%","Magic dmg. taken -3%"}}
- rightDarkRing = {name="Dark Ring",augments={"Magic dmg. taken -4%","Breath dmg. taken -5%","Phys. dmg. taken -5%"}}
- HagondesBoots_MACC = {name="Hagondes Sabots",augments={"Mag. Acc.+21","Phys. dmg. taken -4%"}}
- HagondesBoots_MATK = {name="Hagondes Sabots",augments={"Mag.Atk.Bns.+16","Phys. dmg. taken -2%"}}
- HagondesBoots_PMACC = {name="Hagondes Sabots",augments={"Phys. dmg. taken -3%","Pet: Mag. Acc.+20"}}
- HagondesBoots_PMATK = {name="Hagondes Sabots",augments={"Phys. dmg. taken -3%","Pet:Mag.Atk.Bns+20"}}
- --HagondesGloves_MACC = {name="Hagondes Cuffs",augments={"Mag. Acc.+26","Phys. dmg. taken -4%"}}
- HagondesGloves_MATK = {name="Hagondes Cuffs",augments={"Mag.Atk.Bns.+29","Phys. dmg. taken -4%"}}
- HagondesGloves_PMATK = {name="Hagondes Cuffs",augments={"Phys. dmg. taken -1%","Pet: Mag.Atk.Bns.+9"}}
- HagondesGloves_PMACC = {name="Hagondes Cuffs",augments={"Phys. dmg. taken -3%","Pet: Mag. Acc.+20"}}
- HagondesHat_PMACC = {name="Hagondes Hat",augments={"Phys. dmg. taken -4%","Pet: Mag. Acc.+22"}}
- HagondesHat_MACC = {name="Hagondes Hat",augments={"Mag. Acc.+24","Phys. dmg. taken -3%"}}
- HagondesHat_MATK = {name="Hagondes Hat",augments={"Mag.Atk.Bns.+29","Phys. dmg. taken -3%"}}
- HagondesHat_PATK = {name="Hagondes Hat",augments={'Phys. dmg. taken -3%','Pet: Attack+23 Pet: Rng.Atk.+23'}}
- HagondesHat_PACC = {name="Hagondes Hat",augments={'Phys. dmg. taken -3%','Pet: Accuracy+23 Pet: Rng.Acc.+23'}}
- HagondesHat_PMATK = {name="Hagondes Hat",augments={"Phys. dmg. taken -4%","Pet: Mag.Atk.Bns.+20"}}
- HagondesGloves_FC = {name="Hagondes Cuffs",augments={"Fast Cast+4","Phys. dmg. taken -3%"}}
- HagondesPants_PATK = {name="Hagondes Pants",augments={'Phys. dmg. taken -3%','Pet: Attack+25 Pet: Rng.Atk.+25'}}
- HagondesGloves_Perp = {name="Hagondes Cuffs", augments={'Phys. dmg. taken -3%','"Avatar perpetuation cost" -5'}}
- MerlinicHead_FC = {name="Merlinic Hood", augments={'"Fast Cast"+6','CHR+2',}}
- MerlinicHead_Refresh = {name="Merlinic Hood", augments={'"Waltz" potency +3%','Pet: DEX+9','"Refresh"+1','Accuracy+12 Attack+12',}}
- MerlinicHead_MATK = {name="Merlinic Hood", augments={'Mag. Acc.+23 "Mag.Atk.Bns."+23','INT+5','Mag. Acc.+14','"Mag.Atk.Bns."+14',}}
- MerlinicGloves_Refresh = {name="Merlinic Dastanas", augments={'"Waltz" potency +8%','CHR+5','"Refresh"+1','Accuracy+5 Attack+5',}}
- MerlinicGloves_TH = {name="Merlinic Dastanas", augments={'Pet: Accuracy+6 Pet: Rng. Acc.+6','Crit.hit rate+2','"Treasure Hunter"+1',}}
- MerlinicGloves_BPDmg = {name="Merlinic Dastanas", augments={'Pet: "Mag.Atk.Bns."+17','Blood Pact Dmg.+10','Pet: Mag. Acc.+8',}}
- MerlinicGloves_Drain = {name="Merlinic Dastanas", augments={'STR+6','"Drain" and "Aspir" potency +10','Mag. Acc.+8 "Mag.Atk.Bns."+8',}}
- MerlinicGloves_PATK = {name="Merlinic Dastanas", augments={'Pet: Attack+28 Pet: Rng.Atk.+28','Blood Pact Dmg.+9','Pet: DEX+4','Pet: Mag. Acc.+15',}}
- MerlinicLegs_Phalanx = {name="Merlinic Shalwar", augments={'Rng.Atk.+28','Pet: "Store TP"+3','Phalanx +5','Mag. Acc.+16 "Mag.Atk.Bns."+16',}}
- MerlinicLegs_Burst = {name="Merlinic Shalwar", augments={'Mag. Acc.+23 "Mag.Atk.Bns."+23','Magic burst dmg.+10%','MND+3','"Mag.Atk.Bns."+5',}}
- MerlinicBoots_Refresh = {name="Merlinic Crackows", augments={'Pet: DEX+5','Magic dmg. taken -1%','"Refresh"+2',}}
- MerlinicBoots_FC = {name="Merlinic Crackows", augments={'Mag. Acc.+29','"Fast Cast"+6','MND+2','"Mag.Atk.Bns."+11',}}
- MerlinicBoots_MATK = {name="Merlinic Crackows", augments={'Mag. Acc.+15 "Mag.Atk.Bns."+15','"Occult Acumen"+3','INT+1','Mag. Acc.+15','"Mag.Atk.Bns."+11',}}
- ApogeeBoots_PMATK = {name="Apogee Pumps +1", augments={'MP+80','Pet: "Mag.Atk.Bns."+35','Blood Pact Dmg.+8',}}
- ApogeeBoots_PATK = {name="Apogee Pumps +1", augments={'MP+80','Pet: Attack+35','Blood Pact Dmg.+8',}}
- Keraunos_MATK = {name="Keraunos",augments={'Pet: "Mag.Atk.Bns."+18','"Conserve MP"+6'}}
- Keraunos_MACC = {name="Keraunos", augments={'Pet: Mag. Acc.+17','"Fast Cast"+3'}}
- Keraunos_FC = {name="Keraunos", augments={'"Fast Cast"+4'}}
- Keraunos_Siphon = {name="Keraunos", augments={'"Elemental Siphon"+25','MP+22'}}
- --gear.ElementalRing = "Angha Ring"
- ConveyanceCape_Skill = {name="Conveyance Cape", augments={'Summoning magic skill +5','Pet: Enmity+10','Blood Pact Dmg.+1'}}
- ConveyanceCape_Delay = {name="Conveyance Cape", augments={'Summoning magic skill +2','Pet: Enmity+6','Blood Pact Dmg.+2','Blood Pact ab. del. II -3'}}
- ConveyanceCape_BPDMG = {name="Conveyance Cape", augments={'Summoning magic skill +3','Pet: Enmity+15','Blood Pact Dmg.+5'}}
- sets.nirvanalock = {main="Nirvana",sub="Elan Strap +1"}
- sets.dontputmeaway = {neck="Stoicheion Medal",feet="Herald's Gaiters",legs="Enticer's Pants"}
- --------------------------------------
- -- Precast Sets
- --------------------------------------
- -- Precast sets to enhance JAs
- sets.precast.JA['Astral Flow'] = {head="Glyphic Horn +1"}
- -- todo, chatoyant script weather day thing
- sets.precast.JA['Elemental Siphon'] = {ammo="Esper Stone +1",head=TelchineHat_Siphon,main=Keraunos_Siphon,neck="Hoxne Torque",body=TelchineBody_Siphon,
- legs=TelchineLegs_Siphon,feet="Beckoner's Pigaches +1",sub="Vox Grip",hands="Lamassu Mitts +1",back=ConveyanceCape_Skill,
- ring1="Evoker's Ring",ring2="Globidonta Ring",ear1="Andoaa Earring",ear2="Lodurr Earring",waist="Lucidity Sash"}
- sets.precast.JA['Mana Cede'] = {hands="Caller's Bracers +2"}
- -- Pact delay reduction gear
- -- Fast cast sets for spells
- sets.precast.FC = {main="Pandit's Staff",sub="Clerisy Strap",head=MerlinicHead_FC,body="Inyanga Jubbah +2",
- hands=HagondesGloves_FC,legs="Psycloth Lappas",feet=MerlinicBoots_FC,back="Perimede Cape",waist="Witful Belt",
- ring1="Lebeche Ring",ring2="Veneficium Ring",neck="Voltsurge Torque",ear1="Malignance Earring",ear2="Loquac. Earring"}
- sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC,{})
- sets.precast.FC['Healing Magic'] = set_combine(sets.precast.FC,{main="Vadose Rod",sub="Genbu's Shield"})
- sets.precast.FC.Cure = set_combine(sets.precast.FC,{main="Vadose Rod",sub={ name="Genbu's Shield", augments={'"Cure" potency +2%','"Cure" spellcasting time -7%'} },legs="Nabu's Shalwar"})
- sets.precast.FC.Stoneskin = set_combine(sets.precast.FC,{head="Umuthi Hat",hands="Carapacho Cuffs",waist="Siegel Sash"})
- sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC,{waist="Siegel Sash"})
- sets.precast.FC['Summoning Magic'] = set_combine(sets.precast.FC,{hands="Carbuncle's Cuffs"})
- -- Weaponskill sets
- -- Default set for any weaponskill that isn't any more specifically defined
- sets.precast.WS = {}
- -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
- sets.precast.WS['Myrkr'] = {}
- --------------------------------------
- -- Midcast sets
- --------------------------------------
- sets.midcast["Apururu (UC)"] = {body="Apururu Unity shirt"}
- sets.midcast.FastRecast = {ammo="Impatiens",head="Nahtirah Hat",body="Inyanga Jubbah +2",
- hands="Regimen Mittens",legs=MerlinicLegs_Burst,feet="WN Clomps +1",back=Campestres_FC,waist="Klouskap Sash",
- ring2="Prolix Ring",neck="Voltsurge Torque",ear1="Loquac. Earring",ear2="Gifted Earring"}
- -- 59% cure potencySp
- sets.midcast.Cure = {main="Pandit's Staff",sub="Achaq Grip",back="Solemnity Cape",body="Inyanga Jubbah +2",
- hands="Inyan. Dastanas +2",ring1="Stikini Ring +1",ring2="Stikini Ring +1",
- legs="Vanya Slops",head="Vanya Hood",feet="Vanya Clogs",
- neck="Hoxne Torque",ear1="Novia Earring",ear2="Domes. Earring",waist="Channeler's Stone"}
- sets.midcast.Curaga = sets.midcast.Cure
- sets.midcast.CureSelf = set_combine(sets.midcast.Cure,{waist="Gishdubar Sash",neck="Phalaina Locket",ring1="Kunaji Ring",ring2="Asklepian Ring"})
- -- boon
- sets.boon = {head=HeliosHat_PMACC,body=HeliosBody_PMACC,hands=HeliosHands_PMACC,neck="Consummation Torque",
- legs="Beckoner's Spats +1",feet=HeliosBoots_PMACC,waist="Lucidty Sash",ear2="Gifted Earring"}
- sets.midcast['Enhancing Magic'] = {main="Gada",sub="Culminus",body=TelchineBody_Enhance,waist="Embla Sash",ear2="Domes. Earring",
- head=TelchineHat_Enhance,hands=TelchineGloves_Enhance,legs=TelchineLegs_Enhance,feet=TelchineBoots_Enhance}
- sets.midcast.Haste = sets.midcast['Enhancing Magic']
- sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'],{head="Nahtirah Hat",body="Inyanga Jubbah +2",legs="Shedir Seraweels",neck="Nodens Gorget",
- waist="Siegel Sash",ear1="Earthcry Earring",ring1="Stikini Ring +1",ring2="Stikini Ring +1"})
- sets.midcast.Blink = set_combine(sets.midcast['Enhancing Magic'],{head="Nahtirah Hat"})
- sets.midcast.Refresh = set_combine(sets.midcast['Enhancing Magic'],{head="Amalric Coif +1",waist="Gishdubar Sash",back="Grapevine Cape",feet="Inspirited Boots"})
- sets.midcast.Protect = set_combine(sets.midcast['Enhancing Magic'],{ring2="Sheltered Ring"})
- sets.midcast.Shell = set_combine(sets.midcast['Enhancing Magic'],{ring2="Sheltered Ring"})
- sets.midcast.Phalanx = set_combine(sets.midcast['Enhancing Magic'],{main="Gada",sub="Genmei Shield",legs=MerlinicLegs_Phalanx,body="Anhur Robe",
- hands="Inyanga Dastanas +2",neck="Hoxne Torque",head="Umuthi Hat",ear1="Andoaa Earring",ring1="Stikini Ring +1",ring2="Stikini Ring +1",
- back="Perimede Cape",feet="Regal Pumps +1"})
- sets.midcast.Aquaveil = set_combine(sets.midcast['Phalanx'],{main="Vadose Rod",sub="Genmei Shield",head="Amalric Coif +1",waist="Emphatikos Rope",legs="Shedir Seraweels"})
- sets.midcast.Regen = set_combine(sets.midcast['Enhancing Magic'],{main="Bolelabunga",sub="Genmei Shield",head=TelchineHat_Regen,
- body=TelchineBody_Regen,hands=TelchineGloves_Regen,legs=TelchineLegs_Regen,feet=TelchineBoots_Regen})
- sets.midcast.Sneak = set_combine(sets.midcast['Enhancing Magic'],{back="Skulker's Cape"})
- sets.midcast.Invisible = sets.midcast.Sneak
- --sets.conserve = {ear2="Gifted Earring",feet="Umbani Boots"}
- sets.midcast.debuff = {main="Maxentius",head="Beckoner's Horn +2",body="Vanya Robe",ammo="Hydrocera",
- ear1="Malignance Earring",ear2="Gwati Earring",back="Null Shawl",legs=MerlinicLegs_Burst,
- waist="Ovate Rope",neck="Hoxne Torque",ring1="Stikini Ring +1",
- ring2="Stikini Ring +1",sub="Culminus",hands="Inyanga Dastanas +2",feet="WN Clomps +1"}
- sets.precast.WS['Garland of Bliss'] = {main="Nirvana",sub="Khonsu",body="Merlinic Jubbah",ammo="Hydrocera",
- head=MerlinicHead_MATK,ear1="Malignance Earring",ear2="Gwati Earring",back="Ogapepo Cape",
- waist="Refoccilation Stone",neck="Eddy Necklace",legs=MerlinicLegs_Burst,ring1="Stikini Ring +1",ring2="Stikini Ring +1",
- hands="Inyanga Dastanas +2",sub="Khonsu",feet="Tali'ah Crackows +2"}
- sets.midcast.debuff.Resistant = {}
- --sets.midcast.debuff.Evasion = {
- sets.midcast.debuff.int = {head="Amalric Coif +1"}
- sets.midcast.debuff.mnd = {main="Daybreak",sub="Culminus"}
- sets.midcast.Dia = {main=Grioavolr_TH,waist="Chaac Belt",head="White Rarab Cap +1"}
- sets.midcast['Dia II'] = sets.midcast.Dia
- sets.midcast.Diaga = sets.midcast.Dia
- sets.midcast.Stonega = sets.midcast.Dia
- sets.midcast.Bio = sets.midcast.Dia
- sets.midcast['Bio II'] = sets.midcast.Dia
- sets.midcast['Elemental Magic'] = {main="Maxentius",body="Merlinic Jubbah",ammo="Hydrocera",
- head=MerlinicHead_MATK,ear1="Malignance Earring",ear2="Friomisi Earring",back=gear.ElementalCape,
- waist="Refoccilation Stone",neck="Hoxne Torque",legs=MerlinicLegs_Burst,ring1="Stikini Ring +1",ring2=gear.ElementalRing,
- hands="WN Mittens +1",sub="Culminus",feet="WN Clomps +1"}
- sets.midcast['Elemental Magic'].Resistant = {main="Maxentius",body="Merlinic Jubbah",ammo="Hydrocera",
- head=MerlinicHead_MATK,ear1="Malignance Earring",ear2="Gwati Earring",back="Toro Cape",
- waist="Refoccilation Stone",neck="Hoxne Torque",legs=MerlinicLegs_Burst,ring1="Stikini Ring +1",ring2="Stikini Ring +1",
- hands="Inyanga Dastanas +2",sub="Culminus",feet="Tali'ah Crackows +2"}
- --sets.midcast['Aero II'] = set_combine(sets.midcast['Elemental Magic'],{main="Marin Staff",sub="Khonsu"})
- --sets.midcast['Aero II'].Resistant = set_combine(sets.midcast['Elemental Magic'].Resistant,{})
- sets.midcast['Water II'] = set_combine(sets.midcast['Elemental Magic'],{})
- sets.midcast['Water II'].Resistant = set_combine(sets.midcast['Elemental Magic'].Resistant,{})
- sets.midcast['Stone II'] = set_combine(sets.midcast['Elemental Magic'],{})
- sets.midcast['Stone II'].Resistant = set_combine(sets.midcast['Elemental Magic'].Resistant,{})
- sets.midcast['Summoning Magic'] = {ammo="Sancus Sachet +1",body="Baayami Robe"}
- sets.midcast['Atomos'] = set_combine(sets.midcast.FastRecast,{ammo="Sancus Sachet +1"})
- sets.precast.FC['Impact'] = set_combine(sets.precast.FC,{head=empty,body="Twilight Cloak"})
- sets.midcast['Impact'] = set_combine(sets.midcast.debuff,{head=empty,body="Twilight Cloak"})
- sets.precast.FC['Dispelga'] = set_combine(sets.precast.FC,{main="Daybreak",sub="Culminus"})
- sets.midcast['Dispelga'] = set_combine(sets.midcast.debuff,{main="Daybreak",sub="Culminus"})
- --sets.midcast['Fire Spirit'] = set_combine(sets.precast.JA['Elemental Siphon'],{ammo="Sancus Sachet +1"})
- --sets.midcast.IceSpirit = set_combine(sets.precast.JA['Elemental Siphon'],{ammo="Sancus Sachet +1"})
- --sets.midcast.AirSpirit = set_combine(sets.precast.JA['Elemental Siphon'],{ammo="Sancus Sachet +1"})
- --sets.midcast.EarthSpirit = set_combine(sets.precast.JA['Elemental Siphon'],{ammo="Sancus Sachet +1"})
- --sets.midcast.ThunderSpirit = set_combine(sets.precast.JA['Elemental Siphon'],{ammo="Sancus Sachet +1"})
- --sets.midcast.WaterSpirit = set_combine(sets.precast.JA['Elemental Siphon'],{ammo="Sancus Sachet +1"})
- --sets.midcast['Light Spirit'] = set_combine(sets.precast.JA['Elemental Siphon'],{ammo="Sancus Sachet +1"})
- --sets.midcast.DarkSpirit = set_combine(sets.precast.JA['Elemental Siphon'],{ammo="Sancus Sachet +1"})
- sets.Seraphicaller = {ammo="Sancus Sachet +1"}
- -- Avatar pact sets. All pacts are Ability type.
- sets.midcast.Pet.BloodPactWard = {main=Espiritus_MACC,body="Baayami Robe",back=ConveyanceCape_Skill,
- legs="Baayami Slops",head="Baayami Hat",feet="Baayami Sabots +1",
- sub="Vox Grip",ring1="Evoker's Ring",ring2="Stikini Ring +1",hands="Baayami Cuffs",
- waist="Lucidity Sash",ear1="Andoaa Earring",ear2="Lodurr Earring",neck="Hoxne Torque"}
- sets.precast.BloodPactWard = set_combine(sets.midcast.Pet.BloodPactWard, {main=Espiritus_MACC,back=ConveyanceCape_Delay,
- head="Beckoner's Horn +2",hands="Baayami Cuffs",legs="Baayami Slops",body="Baayami Robe",
- feet="Glyphic Pigaches +1",ammo="Sancus Sachet +1",ear1="Evans Earring"})
- sets.precast.BloodPactRage = sets.precast.BloodPactWard
- sets.midcast.Pet.DebuffBloodPactWard = set_combine(sets.midcast.Pet.BloodPactWard, {body="Convoker's Doublet +4",head="Heckoner's Horn +2",back=Campestres_PMACC,
- feet="Tali'ah Crackows +2",legs=HeliosPants_PMACC,hands="Tali'ah Gages +2",neck="Smn. Collar +2",waist="Incarnation Sash",main="Nirvana",ring1="Stikini Ring +1",
- ear1="Lugalbanda Earring",ear2="Beck. Earring"})
- --old debuff - 5/21/26
- --{ammo="Sancus Sachet +1",main=Espiritus_MACC,neck="Incanter's Torque",back=ConveyanceCape_Skill,body="Baayami Robe",
- -- legs=HeliosPants_PMACC,feet=HeliosBoots_PMACC,head=HeliosHat_PMACC,
- --sub="Vox Grip",ring1="Evoker's Ring",ring2="Globidonta Ring",hands=HeliosHands_PMACC,waist="Lucidity Sash",
- --ear1="Andoaa Earring",ear2="Lodurr Earring"}
- sets.midcast.Pet.DebuffBloodPactWard.Acc = sets.midcast.Pet.DebuffBloodPactWard
- sets.midcast.Pet.BloodPactSleep = sets.midcast.Pet.DebuffBloodPactWard
- --old sleep, dindon't know why I made a different one - 5/21/26
- --{ammo="Sancus Sachet +1",main=Espiritus_MACC,neck="Incanter's Torque",back=ConveyanceCape_Skill,body="Baayami Robe",
- -- legs=HeliosPants_PMACC,feet=HeliosBoots_PMACC,head=HeliosHat_PMACC,
- -- sub="Vox Grip",ring1="Evoker's Ring",ring2="Globidonta Ring",hands=HeliosHands_PMACC,waist="Lucidity Sash",
- -- ear1="Andoaa Earring",ear2="Lodurr Earring"}
- sets.midcast.Pet.PhysicalBloodPactRage = {ammo="Sancus Sachet +1",main="Nirvana",legs="Apogee Slacks +1",body="Con. Doublet +4",neck="Smn. Collar +2",
- waist="Incarnation Sash",head=HeliosHat_PATK,ring1="Varar Ring +1",ring2="C. Palug Ring",sub="Elan Strap +1",hands=MerlinicGloves_PATK,back=Campestres_EVA,
- feet=HeliosBoots_PMelee,ear2="Sroda Earring",ear1="Lugalbanda Earring"}
- --glyphic doublet +3 if accuracy is fine and AM3 isn't up...
- sets.midcast.Pet.PhysicalBloodPactRage.Acc = set_combine(sets.midcast.Pet.PhysicalBloodPactRage,{body="Glyphic Doublet +3"})
- sets.midcast.Pet.MagicalBloodPactRage = {ammo="Sancus Sachet +1",main=Grioavolr_PMATK,feet=ApogeeBoots_PMATK,back=Campestres_PMACC,
- body="Apogee Dalmatica +1",neck="Smn. Collar +2",head="Apogee Crown +1",ring1="Varar Ring +1",
- ring2="Varar Ring +1",sub="Elan Strap +1",hands=MerlinicGloves_BPDmg,waist="Incarnation Sash",ear1="Lugalbanda Earring",ear2="Beck. Earring"}
- sets.midcast.Pet.MagicalBloodPactRage.Acc = set_combine(sets.midcast.Pet.MagicalBloodPactRage,{})
- sets.midcast.Pet.FlamingCrush = {ammo="Sancus Sachet +1",main="Nirvana",back=Campestres_PMACC,body="Apogee Dalmatica +1",
- neck="Smn. Collar +2",legs="Apogee Slacks +1",head="Apogee Crown +1",ring1="Varar Ring +1",
- ring2="Varar Ring +1",sub="Elan Strap +1",hands=MerlinicGloves_BPDmg,waist="Incarnation Sash",feet=ApogeeBoots_PMATK,ear2="Beck. Earring",ear1="Lugalbanda Earring"}
- sets.midcast.Pet.FlamingCrush.Acc = set_combine(sets.midcast.Pet.FlamingCrush,{})
- sets.midcast.Pet.Impact = sets.midcast.Pet.DebuffBloodPactWard
- sets.midcast.Pet['Crag Throw'] = sets.midcast.Pet.DebuffBloodPactWard
- sets.midcast.Pet['Moonlit Charge'] = sets.midcast.Pet.DebuffBloodPactWard
- sets.midcast.Pet['Crescent Fang'] = sets.midcast.Pet.DebuffBloodPactWard
- sets.midcast.Pet['Crag Throw'] = sets.midcast.Pet.DebuffBloodPactWard
- sets.midcast.Pet['Tail Whip'] = sets.midcast.Pet.DebuffBloodPactWard
- sets.midcast.Pet['Earthen Ward'] = set_combine(sets.midcast.Pet.BloodPactWard,set_combine(sets.boon,{legs="Shedir Seraweels"}))
- sets.midcast.Pet['Aerial Armor'] = set_combine(sets.midcast.Pet.BloodPactWard,sets.boon)
- sets.midcast.Pet['Reraise II'] = set_combine(sets.midcast.Pet.BloodPactWard,sets.boon)
- sets.midcast.Pet['Raise II'] = set_combine(sets.midcast.Pet.BloodPactWard,sets.boon)
- --hurting myself with apogee to heal more makes no sense
- --sets.midcast.Pet['Whispering Wind'] = set_combine(sets.midcast.Pet.BloodPactWard,{main="Nirvana",head="Apogee Crown +1",body="Apo. Dalmatica +1",feet="Apogee Pumps +1",
- --legs="Apogee Slacks +1",ear2="Beckoner's Earring",back=Campestres_EVA})
- sets.midcast.Pet['Whispering Wind'] = set_combine(sets.midcast.Pet.BloodPactWard,{main="Nirvana",ear2="Beckoner's Earring",back=Campestres_EVA})
- sets.midcast.Pet['Healing Ruby'] = sets.midcast.Pet['Whispering Wind']
- sets.midcast.Pet['Healing Ruby II'] = sets.midcast.Pet['Whispering Wind']
- sets.midcast.Pet['Spring Waterw'] = sets.midcast.Pet['Whispering Wind']
- -- Spirits cast magic spells, which can be identified in standard ways.
- sets.midcast.Pet.WhiteMagic = set_combine(sets.precast.JA['Elemental Siphon'],{ring2="Sheltered Ring",legs="Summoner's Spats"})
- sets.midcast.Pet['Elemental Magic'] = set_combine(sets.midcast.Pet.MagicalBloodPactRage, {legs="Summoner's Spats"})
- sets.midcast.Pet['Enfeebling Magic'] = sets.midcast.Pet.BloodPactSleep
- --sets.midcast.Pet['Elemental Magic'].Resistant = {}
- --------------------------------------
- -- Idle/resting/defense/etc sets
- --------------------------------------
- -- Resting sets
- sets.resting = {main="Chatoyant Staff",neck="Eidolon Pendant +1"}
- -- Idle sets
- sets.idle = {main="Pandit's Staff",sub="Oneiros Grip",ammo="Sancus Sachet +1",
- head="Beckoner's Horn +2",neck="Loricate Torque +1",
- body="Apogee Dalmatica +1",hands="Asteria Mitts +1",ring1="Stikini Ring +1",ring2="Stikini Ring +1",
- waist="Slipor Sash",legs="Assiduity Pants +1",feet="Baayami Sabots +1",back="Null Shawl",ear1="Moonshade Earring",
- ear2="Beck. Earring"}
- sets.idle.PDT = set_combine(sets.idle,{head="Con. Horn +1",neck="Loricate Torque +1",main="Malignance Pole",ammo="Sihirik",
- sub="Khonsu",body="WN Kaftan +1",hands="WN Mittens +1",legs="WN Braccae +1",feet="WN Clomps +1",ring1="Murky Ring",ring2="C. Palug Ring"})
- sets.idle.Kite = set_combine(sets.idle,{feet="Herald's Gaiters"})
- -- Latent Idle Set --
- sets.latent_refresh = {waist="Fucho-no-obi"}
- sets.Councilor = {main="Nirvana",sub="Vox Grip",body="Councilor's Garb"}
- -- perp costs:
- -- spirits: 7
- -- carby: 11 (5 with mitts)
- -- fenrir: 13
- -- others: 15
- -- avatar's favor: -4/tick
- -- Max useful -perp gear is 1 less than the perp cost (can't be reduced below 1)
- -- Aim for -14 perp, and refresh in other slots.
- sets.idle.Avatar = {main="Nirvana",sub="Oneiros Grip",ammo="Sancus Sachet +1",
- head="Beckoner's Horn +2",neck="Caller's Pendant",
- body="Apogee Dalmatica +1",hands="Asteria Mitts +1",ring1="Stikini Ring +1",ring2="Stikini Ring +1",
- waist="Lucidity Sash",legs="Assiduity Pants +1",feet="Baayami Sabots +1",back="Null Shawl",ear1="Evans Earring",
- ear2="Beck. Earring"}
- -- sets.serpentesjuggle_night = {hands="Serpentes Cuffs",feet="Convoker's Pigaches +1"}
- -- sets.serpentesjuggle_day = {hands=HagondesGloves_Perp,feet="Serpentes Sabots"}
- sets.idle.PDT.Avatar = set_combine(sets.idle.Avatar,{head="Beckoner's Horn +2",neck="Loricate Torque +1",ammo="Sancus Sachet +1",
- sub="Khonsu",body="WN Kaftan +1",hands="WN Mittens +1",legs="WN Braccae +1",feet="WN Clomps +1",back="Null Shawl",ring1="Murky Ring",ring2=rightDarkRing})
- sets.idle.Kite.Avatar = sets.idle.Avatar
- sets.idle.Spirit = set_combine(sets.midcast.Pet.BloodPactWard,{main="Nirvana",ammo="Sancus Sachet +1",legs="Summoner's Spats",waist="Lucidity Sash"})
- sets.idle.PDT.Spirit = sets.idle.PDT.Avatar
- sets.idle.Town = set_combine(sets.idle,{main="Nirvana",sub="Oneiros Grip",feet="Herald's Gaiters"})
- sets.idle.PDT.Town = sets.idle.PDT
- --sets.idle.Avatar.Favor = sets.idle.Avatar.Favor = set_combine(sets.midcast.Pet.BloodPactWard,{head="Beckoner's Horn"})
- sets.idle.Avatar.Favor = {head="Beckoner's Horn"}
- --sets.idle.Avatar.Favor.Melee = sets.idle.Avatar.Favor
- sets.idle.Avatar.Melee = {ammo="Sancus Sachet +1",hands="Regimen Mittens",back="Argochampsa Mantle",waist="Moepapa Stone",
- ear1="Rimeice Earring",ring2="Thurandaut Ring"}
- sets.idle.Avatar.Melee.Acc = sets.idle.Avatar.Melee
- sets.idle.Avatar.Melee.Overdrive = {head="Selenian Cap",ear2="Domesticator's Earring",legs=HeliosPants_PMelee,feet=HeliosBoots_PMelee,ring1="Evoker's Ring",body="Hagondes Coat"}
- sets.idle.Avatar.Melee.PDT = {head="Selenian Cap",body=TelchineBody_Siphon,hands=HagondesGloves_Perp,legs=TelchineLegs_Siphon,feet=TelchineBoots_PDT,
- waist="Isa Belt",ear1="Handler's Earring +1",ear2="Handler's Earring",ring1="Evoker's Ring",ring2="Thurandaut Ring",back=Campestres_PMACC}
- --sets.idle.PDT.Avatar.Melee = set_combine(sets.idle.Avatar.Melee,{head="Beckoner's Horn +2",ring1=leftDarkRing,ring2=rightDarkRing,neck="Smn. Collar +2",back="Umbra Cape",legs=HagondesPants_PATK})
- --to be done
- --sets.AvatarPDT = {waist="Isa Belt"}
- sets.perp = {}
- -- Caller's Bracer's halve the perp cost after other costs are accounted for.
- -- Using -10 (Gridavor, ring, Conv.feet), standard avatars would then cost 5, halved to 2.
- -- We can then use Hagondes Coat and end up with the same net MP cost, but significantly better defense.
- -- Weather is the same, but we can also use the latent on the pendant to negate the last point lost.
- --sets.perp.Day = {hands="Caller's Bracers +2"}
- --sets.perp.Weather = {neck="Caller's Pendant",hands="Caller's Bracers +2"}
- -- Carby: Mitts+Conv.feet = 1/tick perp. Everything else should be +refresh
- --sets.perp.Carbuncle = {hands="Carbuncle Mitts"}
- -- Diabolos's Rope doesn't gain us anything at this time
- --sets.perp.Diabolos = {waist="Diabolos's Rope"}
- sets.perp.Alexander = sets.midcast.Pet.BloodPactWard
- sets.perp.Atomos = sets.midcast.Pet.BloodPactSleep
- sets.perp.Odin = sets.midcast.Pet.MagicalBloodPactRage.Acc
- sets.midcast.Pet.PerfectDefense = sets.midcast.Pet.BloodPactWard
- --sets.perp.Spirit = set_combine(sets.midcast.Pet.BloodPactWard,{legs="Summoner's Spats"})
- -- Defense sets
- sets.defense.PDT = {}
- sets.defense.MDT = {}
- sets.Kiting = {}
- --------------------------------------
- -- Engaged sets
- --------------------------------------
- -- Normal melee group
- sets.engaged = set_combine(sets.idle, {back="Null Shawl"})
- 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 (spell.type == 'BloodPactRage' or spell.type == 'BloodPactWard') and buffactive['Astral Conduit'] or buffactive['Apogee'] then
- -- eventArgs.handled = true
- --end
- if state.Buff[spell.english] ~= nil then
- state.Buff[spell.english] = true
- end
- if spell.name == 'Sneak' and buffactive.Sneak and spell.target.type == 'SELF' then
- windower.ffxi.cancel_buff(71)
- cast_delay(0.3)
- elseif spell.name == 'Stoneskin' and buffactive.Stoneskin and spell.target.type == 'SELF' then
- windower.ffxi.cancel_buff(37)
- cast_delay(0.3)
- end
- if (not pet.isvalid) and (spell.action_type == 'Magic') then
- equip({ammo="Impatiens"})
- end
- if spell.english == "Impact" and spell.action_type == "Ability" then
- equip(sets.precast.BloodPactWard)
- eventArgs.handled = true
- end
- end
- function job_midcast(spell, action, spellMap, eventArgs)
- if (not string.find(spell.type,'BloodPact') and pet.isvalid) then
- equip(get_idle_set(petStatus))
- end
- --if (not pet.isvalid) and (spell.action_type == 'Magic') then
- --equip(sets.conserve)
- --end
- if spell.skill=="ElementalMagic" and state.CastingMode == options.CastingModes[2] then
- equip(sets.midcast['Elemental Magic'].Resistant)
- end
- if debuffs:contains(spell.english) then
- equip(sets.midcast.debuff)
- if debuffs_acc:contains(spell.english) or state.CastingMode == options.CastingModes[2] then
- equip(sets.midcast.debuff.Resistant)
- end
- if (spell.type=='BlackMagic' and not (spell.english == 'Distract' or spell.english=='Frazzle')) then
- equip(sets.midcast.debuff.int)
- elseif (spell.type=='WhiteMagic' and not (spell.english == 'Dia' or spell.english=='Dia II')
- or spell.english == 'Distract' or spell.english=='Frazzle') then
- equip(sets.midcast.debuff.mnd)
- end
- elseif (spell.english=='Mana Cede') then
- equip(sets.precast.JA['Mana Cede'])
- elseif (spell.english=='Elemental Siphon') then
- equip(sets.precast.JA['Elemental Siphon'])
- --elseif spell.action_type == 'Magic' then
- --equip(get_idle_set())
- elseif (spell.english=='Astral Flow') then
- equip(sets.precast.JA['Astral Flow'])
- elseif spell.type=='BlackMagic' then
- if (spell.element == world.day_element) then
- --sets.midcast['Elemental Magic'] = set_combine(sets.midcast['Elemental Magic'], sets.day)
- gear.ElementalRing.name = "Zodiac Ring"
- gear.ElementalCape.name = "Twilight Cape"
- else
- gear.ElementalRing.name = "Stikini Ring +1"
- gear.ElementalCape.name = "Toro Cape"
- end
- elseif spell.english:wcmatch("Bar*") then
- equip(sets.midcast.Phalanx)
- end
- if spell.english == "Impact" and spell.action_type == "Ability" then
- equip(sets.precast.BloodPactWard)
- eventArgs.handled = true
- end
- end
- function job_post_midcast(spell, action, spellMap, eventArgs)
- if spellMap == 'Cure' then
- if spell.target.type == 'SELF' then
- equip(sets.midcast.CureSelf)
- 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)
- --sets.midcast['Elemental Magic'] = sets.nuke
- --gear.debuffBoots = "Uk'uxkaj Boots"
- sets.engaged = get_idle_set(pet.status)
- if state.Buff[spell.english] ~= nil then
- state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
- end
- if spell.type == 'SummonerPact' then
- send_command("gs equip sets.Seraphicaller; gs disable ammo; wait 2; gs enable ammo")
- end
- end
- function job_pet_midcast(spell, action, spellMap, eventArgs)
- --if pet.status == 'Idle' and spell.type == 'BloodPactWard' and spellMap ~= 'DebuffBloodPactWard' then
- -- equip({ammo="Esper Stone +1"})
- -- end
- if (magicalRagePacts:contains(spell.english)) then
- if ((spell.english == "Meteor Strike" and pet.tp <= 105) or (spell.english ~= "Meteor Strike" and pet.tp<=265 and pet.name ~= "Carbuncle" and pet.name~="Diabolos" and not astralRagePacts:contains(spell.english))) then
- equip({legs="Enticer's Pants"}) -- fix for no astral flow pacts
- else
- equip({legs=HeliosPants_PMATK})
- end
- end
- --not working, needs more debug
- if (spell.english == "Predator Claws" or spell.english == "Volt Strike" or spell.english == "Hysteric Assault") then
- if buffactive['Aftermath: Lv.3'] then
- equip({ring2="Varar Ring +1"})
- end
- end
- end
- -- Runs when pet completes an action.
- function job_pet_aftercast(spell, action, spellMap, eventArgs)
- if not spell.interrupted and spell.type == 'BloodPactWard' and spellMap ~= 'DebuffBloodPactWard' then
- wards.flag = true
- wards.spell = spell.english
- send_command('wait 4; gs c reset_ward_flag')
- end
- if (spell.english=="Ecliptic Howl") then
- if (world.moon_pct>89) then
- add_to_chat(104,"[Ecliptic Howl] Accuracy 25 - Evasion 1")
- elseif (world.moon_pct>74) then
- add_to_chat(104,"[Ecliptic Howl] Accuracy 21 - Evasion 5")
- elseif (world.moon_pct>59) then
- add_to_chat(104,"[Ecliptic Howl] Accuracy 17 - Evasion 9")
- elseif (world.moon_pct>39) then
- add_to_chat(104,"[Ecliptic Howl] Accuracy 13 - Evasion 13")
- elseif (world.moon_pct>24) then
- add_to_chat(104,"[Ecliptic Howl] Accuracy 9 - Evasion 17")
- elseif (world.moon_pct>9) then
- add_to_chat(104,"[Ecliptic Howl] Accuracy 5 - Evasion 21")
- else
- add_to_chat(104,"[Ecliptic Howl] Accuracy 1 - Evasion 25")
- end
- end
- if (spell.english=="Ecliptic Growl") then
- if (world.moon_pct>89) then
- add_to_chat(104,"[Ecliptic Growl] STR/DEX/VIT 7 - INT/MND/CHR/AGI 1")
- elseif (world.moon_pct>74) then
- add_to_chat(104,"[Ecliptic Growl] STR/DEX/VIT 6 - INT/MND/CHR/AGI 2")
- elseif (world.moon_pct>59) then
- add_to_chat(104,"[Ecliptic Growl] STR/DEX/VIT 5 - INT/MND/CHR/AGI 3")
- elseif (world.moon_pct>39) then
- add_to_chat(104,"[Ecliptic Growl] STR/DEX/VIT 4 - INT/MND/CHR/AGI 4")
- elseif (world.moon_pct>24) then
- add_to_chat(104,"[Ecliptic Growl] STR/DEX/VIT 3 - INT/MND/CHR/AGI 5")
- elseif (world.moon_pct>9) then
- add_to_chat(104,"[Ecliptic Growl] STR/DEX/VIT 2 - INT/MND/CHR/AGI 6")
- else
- add_to_chat(104,"[Ecliptic Growl] STR/DEX/VIT 1 - INT/MND/CHR/AGI 7")
- end
- end
- if (spell.english=="Lunar Cry") then
- if (world.moon_pct>89) then
- add_to_chat(104,"[Lunar Cry] Enemy Acc Down 31 - Enemy Eva Down 1")
- elseif (world.moon_pct>74) then
- add_to_chat(104,"[Lunar Cry] Enemy Acc Down 26 - Enemy Eva Down 6")
- elseif (world.moon_pct>59) then
- add_to_chat(104,"[Lunar Cry] Enemy Acc Down 21 - Enemy Eva Down 11")
- elseif (world.moon_pct>39) then
- add_to_chat(104,"[Lunar Cry] Enemy Acc Down 16 - Enemy Eva Down 16")
- elseif (world.moon_pct>24) then
- add_to_chat(104,"[Lunar Cry] Enemy Acc Down 11 - Enemy Eva Down 21")
- elseif (world.moon_pct>9) then
- add_to_chat(104,"[Lunar Cry] Enemy Acc Down 6 - Enemy Eva Down 26")
- else
- add_to_chat(104,"[Lunar Cry] Enemy Acc Down 1 - Enemy Eva Down 31")
- end
- end
- if (spell.english=="Dream Shroud") then
- if (world.time >= 0 and world.time < 1*60) then
- add_to_chat(104,"[Dream Shroud] MAB 13 - MDB 1")
- elseif (world.time >= 1*60 and world.time < 2*60) or (world.time >= 23*60 and world.time <= 23*60+59) then
- add_to_chat(104,"[Dream Shroud] MAB 12 - MDB 2")
- elseif (world.time >= 2*60 and world.time < 3*60) or (world.time >= 22*60 and world.time < 23*60) then
- add_to_chat(104,"[Dream Shroud] MAB 11 - MDB 3")
- elseif (world.time >= 3*60 and world.time < 4*60) or (world.time >= 21*60 and world.time < 22*60) then
- add_to_chat(104,"[Dream Shroud] MAB 10 - MDB 4")
- elseif (world.time >= 4*60 and world.time < 5*60) or (world.time >= 20*60 and world.time < 21*60) then
- add_to_chat(104,"[Dream Shroud] MAB 9 - MDB 5")
- elseif (world.time >= 5*60 and world.time < 6*60) or (world.time >= 19*60 and world.time < 20*60) then
- add_to_chat(104,"[Dream Shroud] MAB 8 - MDB 6")
- elseif (world.time >= 6*60 and world.time < 7*60) or (world.time >= 18*60 and world.time < 19*60) then
- add_to_chat(104,"[Dream Shroud] MAB 7 - MDB 7")
- elseif (world.time >= 7*60 and world.time < 8*60) or (world.time >= 17*60 and world.time < 18*60) then
- add_to_chat(104,"[Dream Shroud] MAB 6 - MDB 8")
- elseif (world.time >= 8*60 and world.time < 9*60) or (world.time >= 16*60 and world.time < 17*60) then
- add_to_chat(104,"[Dream Shroud] MAB 5 - MDB 9")
- elseif (world.time >= 9*60 and world.time < 10*60) or (world.time >= 15*60 and world.time < 16*60) then
- add_to_chat(104,"[Dream Shroud] MAB 4 - MDB 10")
- elseif (world.time >= 10*60 and world.time < 11*60) or (world.time >= 14*60 and world.time < 15*60) then
- add_to_chat(104,"[Dream Shroud] MAB 3 - MDB 11")
- elseif (world.time >= 11*60 and world.time < 12*60) or (world.time >= 13*60 and world.time < 14*60) then
- add_to_chat(104,"[Dream Shroud] MAB 2 - MDB 12")
- else
- add_to_chat(104,"[Dream Shroud] MAB 1 - MDB 13")
- end
- end
- end
- -------------------------------------------------------------------------------------------------------------------
- -- Customization hooks for idle and melee sets, after they've been automatically constructed.
- -------------------------------------------------------------------------------------------------------------------
- -- Modify the default idle set after it was constructed.
- function customize_idle_set(idleSet)
- if pet.isvalid then
- if pet.element == world.day_element then
- idleSet = set_combine(idleSet, sets.perp.Day)
- end
- if pet.element == world.weather_element then
- idleSet = set_combine(idleSet, sets.perp.Weather)
- end
- if sets.perp[pet.name] then
- idleSet = set_combine(idleSet, sets.perp[pet.name])
- end
- if sets.perp[pet.name] then
- idleSet = set_combine(idleSet, sets.perp[pet.name])
- end
- if spirits:contains(pet.name) then
- idleSet = set_combine(idleSet, sets.idle.Spirit)
- end
- local perp_staff = elements.perpetuance_staff_of[pet.element]
- if perp_staff and (player.inventory[perp_staff] or player.wardrobe[perp_staff]) then
- idleSet = set_combine(idleSet, {main=perp_staff,sub="Achaq Grip"})
- end
- --if state.Buff["Avatar's Favor"] and avatars:contains(pet.name) then
- --idleSet = set_combine(idleSet, sets.idle.Avatar.Favor)
- --end
- -- if (world.time >= 17*60 or world.time < 7*60) and pet.status == 'Idle' and pet.name ~= 'Atomos' and pet.name ~= 'Odin' and pet.name ~= 'Alexander'
- --and state.IdleMode ~= options.IdleModes[3] then
- -- idleSet = set_combine(idleSet, sets.serpentesjuggle_night)
- --elseif pet.status == 'Idle' and pet.name ~= 'Atomos' and pet.name ~= 'Odin' and pet.name ~= 'Alexander' and state.IdleMode ~= options.IdleModes[3] then
- -- idleSet = set_combine(idleSet, sets.serpentesjuggle_day)
- if pet.status == 'Idle' and pet.name ~= 'Atomos' and pet.name ~= 'Odin' and pet.name ~= 'Alexander' and state.IdleMode == options.IdleModes[3] then
- idleSet = set_combine(idleSet, {feet="Herald's Gaiters"})
- end
- if state.DefenseMode == options.DefenseModes[2] then
- idleSet = set_combine(idleSet, sets.idle.Avatar.Melee.PDT)
- end
- if pet.status == 'Engaged' and not spirits:contains(pet.name) then
- --idleSet = set_combine(idleSet, sets.idle.Avatar.Melee)
- if state.WeaponskillMode == options.WeaponskillModes[2] then
- idleSet = set_combine(idleSet, sets.idle.Avatar.Melee.Overdrive)
- end
- if state.DefenseMode == options.DefenseModes[2] then
- idleSet = set_combine(idleSet, sets.idle.Avatar.Melee.PDT)
- end
- if state.OffenseMode == options.OffenseModes[2] and state.WeaponskillMode == options.WeaponskillModes[2] then
- idleSet = set_combine(idleSet, sets.idle.Avatar.Melee.Acc)
- end
- end
- end
- if player.mpp < 51 then
- if(state.WeaponskillMode == options.WeaponskillModes[1] or (state.WeaponskillMode == options.WeaponskillModes[2] and pet.status == 'Idle')) then
- idleSet = set_combine(idleSet, sets.latent_refresh)
- end
- end
- if (world.zone_id==256 or world.zone_id==257) then
- idleSet = set_combine (idleSet, sets.Councilor)
- end
- sets.engaged = idleSet
- 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
- handle_equipping_gear(player.status)
- elseif storms:contains(buff) then
- handle_equipping_gear(player.status)
- end
- end
- -- Called when the player's pet's status changes.
- -- This is also called after pet_change after a pet is released. Check for pet validity.
- function job_pet_status_change(newStatus, oldStatus, eventArgs)
- if pet.isvalid and not midaction() and not pet_midaction() and (newStatus == 'Engaged' or oldStatus == 'Engaged') then
- handle_equipping_gear(player.status, newStatus)
- end
- end
- -- Called when a player gains or loses a pet.
- -- pet == pet structure
- -- gain == true if the pet was gained, false if it was lost.
- function job_pet_change(petparam, gain)
- classes.CustomIdleGroups:clear()
- if gain then
- --if avatars:contains(pet.name) then
- classes.CustomIdleGroups:append('Avatar')
- --elseif spirits:contains(pet.name) then
- -- classes.CustomIdleGroups:append('Spirit')
- --end
- end
- end
- -------------------------------------------------------------------------------------------------------------------
- -- User code that supplements self-commands.
- -------------------------------------------------------------------------------------------------------------------
- -- Called for custom player commands.
- function job_self_command(cmdParams, eventArgs)
- if cmdParams[1]:lower() == 'petweather' then
- handle_petweather()
- eventArgs.handled = true
- elseif cmdParams[1]:lower() == 'siphon' then
- handle_siphoning()
- eventArgs.handled = true
- elseif cmdParams[1]:lower() == 'pact' then
- handle_pacts(cmdParams)
- eventArgs.handled = true
- elseif cmdParams[1] == 'reset_ward_flag' then
- wards.flag = false
- wards.spell = ''
- eventArgs.handled = true
- elseif cmdParams[1] == 'weapon_lock_toggle' then
- weapon_lock_toggle()
- eventArgs.handled = true
- elseif cmdParams[1] == 'fix_gear' then
- fix_gear()
- eventArgs.handled = true
- end
- end
- -- Called by the 'update' self-command, for common needs.
- -- Set eventArgs.handled to true if we don't want automatic equipping of gear.
- function job_update(cmdParams, eventArgs)
- classes.CustomIdleGroups:clear()
- if pet.isvalid then
- if avatars:contains(pet.name) then
- classes.CustomIdleGroups:append('Avatar')
- elseif spirits:contains(pet.name) then
- classes.CustomIdleGroups:append('Spirit')
- end
- end
- end
- -- Set eventArgs.handled to true if we don't want the automatic display to be run.
- function display_current_job_state(eventArgs)
- end
- -------------------------------------------------------------------------------------------------------------------
- -- Utility functions specific to this job.
- -------------------------------------------------------------------------------------------------------------------
- -- Custom spell mapping.
- function job_get_spell_map(spell)
- if spell.english == 'Perfect Defense' then
- return 'PerfectDefense'
- elseif spell.type == 'BloodPactRage' then
- if spell.english == 'Flaming Crush' then
- return 'FlamingCrush'
- elseif magicalRagePacts:contains(spell.english) then
- return 'MagicalBloodPactRage'
- else
- return 'PhysicalBloodPactRage'
- end
- elseif spell.type == 'BloodPactWard' and spell.target.type == 'MONSTER' then
- if spell.english == "Sleepga" or spell.english == "Mewing Lullaby" then
- return 'BloodPactSleep'
- -- elseif spell.english == "Earthen Ward" then
- --return 'EarthenWard'
- --elseif spell.english == 'Aerial Armor' or spell.english == 'Reraise II' or spell.english == 'Raise' then
- -- return 'AerialArmor'
- else
- return 'DebuffBloodPactWard'
- end
- end
- end
- -- Cast the appropriate storm for the currently summoned avatar, if possible.
- function handle_petweather()
- if player.sub_job ~= 'SCH' then
- add_to_chat(122, "You can not cast storm spells")
- return
- end
- if not pet.isvalid then
- add_to_chat(122, "You do not have an active avatar.")
- return
- end
- local element = pet.element
- if element == 'Thunder' then
- element = 'Lightning'
- end
- if S{'Light','Dark','Lightning'}:contains(element) then
- add_to_chat(122, 'You do not have access to '..elements.storm_of[element]..'.')
- return
- end
- local storm = elements.storm_of[element]
- if storm then
- send_command('@input /ma "'..elements.storm_of[element]..'" <me>')
- else
- add_to_chat(123, 'Error: Unknown element ('..tostring(element)..')')
- end
- end
- -- Custom uber-handling of Elemental Siphon
- function handle_siphoning()
- if areas.Cities:contains(world.area) then
- add_to_chat(122, 'Cannot use Elemental Siphon in a city area.')
- return
- end
- local siphonElement
- local stormElementToUse
- local releasedAvatar
- local dontRelease
- -- If we already have a spirit out, just use that.
- if pet.isvalid and spirits:contains(pet.name) then
- siphonElement = pet.element
- dontRelease = true
- -- If current weather doesn't match the spirit, but the spirit matches the day, try to cast the storm.
- if player.sub_job == 'SCH' and pet.element == world.day_element and pet.element ~= world.weather_element then
- if not S{'Light','Dark','Lightning'}:contains(pet.element) then
- stormElementToUse = pet.element
- end
- end
- -- If we're subbing /sch, there are some conditions where we want to make sure specific weather is up.
- -- If current (single) weather is opposed by the current day, we want to change the weather to match
- -- the current day, if possible.
- elseif player.sub_job == 'SCH' and world.weather_element ~= 'None' then
- -- We can override single-intensity weather; leave double weather alone, since even if
- -- it's partially countered by the day, it's not worth changing.
- if get_weather_intensity() == 1 then
- -- If current weather is weak to the current day, it cancels the benefits for
- -- siphon. Change it to the day's weather if possible (+0 to +20%), or any non-weak
- -- weather if not.
- -- If the current weather matches the current avatar's element (being used to reduce
- -- perpetuation), don't change it; just accept the penalty on Siphon.
- if world.weather_element == elements.weak_to[world.day_element] and
- (not pet.isvalid or world.weather_element ~= pet.element) then
- -- We can't cast lightning/dark/light weather, so use a neutral element
- if S{'Light','Dark','Lightning'}:contains(world.day_element) then
- stormElementToUse = 'Wind'
- else
- stormElementToUse = world.day_element
- end
- end
- end
- end
- -- If we decided to use a storm, set that as the spirit element to cast.
- if stormElementToUse then
- siphonElement = stormElementToUse
- elseif world.weather_element ~= 'None' and (get_weather_intensity() == 2 or world.weather_element ~= elements.weak_to[world.day_element]) then
- siphonElement = world.weather_element
- else
- siphonElement = world.day_element
- end
- local command = ''
- local releaseWait = 0
- if pet.isvalid and avatars:contains(pet.name) then
- command = command..'input /pet "Release" <me>;wait 1.1;'
- releasedAvatar = pet.name
- releaseWait = 10
- end
- if stormElementToUse then
- command = command..'input /ma "'..elements.storm_of[stormElementToUse]..'" <me>;wait 4;'
- releaseWait = releaseWait - 4
- end
- if not (pet.isvalid and spirits:contains(pet.name)) then
- command = command..'input /ma "'..elements.spirit_of[siphonElement]..'" <me>;wait 4;'
- releaseWait = releaseWait - 4
- end
- command = command..'input /ja "Elemental Siphon" <me>;'
- releaseWait = releaseWait - 1
- releaseWait = releaseWait + 0.1
- if not dontRelease then
- if releaseWait > 0 then
- command = command..'wait '..tostring(releaseWait)..';'
- else
- command = command..'wait 1.1;'
- end
- command = command..'input /pet "Release" <me>;'
- end
- if releasedAvatar then
- command = command..'wait 1.1;input /ma "'..releasedAvatar..'" <me>'
- end
- send_command(command)
- end
- -- Handles executing blood pacts in a generic, avatar-agnostic way.
- -- cmdParams is the split of the self-command.
- -- gs c [pact] [pacttype]
- function handle_pacts(cmdParams)
- if areas.Cities:contains(world.area) then
- add_to_chat(122, 'You cannot use pacts in town.')
- return
- end
- if not pet.isvalid then
- add_to_chat(122,'No avatar currently available. Returning to default macro set.')
- select_default_macro_book('reset')
- return
- end
- if spirits:contains(pet.name) then
- add_to_chat(122,'Cannot use pacts with spirits.')
- return
- end
- if not cmdParams[2] then
- add_to_chat(123,'No pact type given.')
- return
- end
- local pact = cmdParams[2]:lower()
- if not pacts[pact] then
- add_to_chat(123,'Unknown pact type: '..tostring(pact))
- return
- end
- if pacts[pact][pet.name] then
- if pact == 'astralflow' and not buffactive['astral flow'] then
- add_to_chat(122,'Cannot use Astral Flow pacts at this time.')
- return
- end
- -- Leave out target; let Shortcuts auto-determine it.
- send_command('@input /pet "'..pacts[pact][pet.name]..'"')
- else
- add_to_chat(122,pet.name..' does not have a pact of type ['..pact..'].')
- end
- end
- -- Handles executing blood pacts in a generic, avatar-agnostic way.
- -- cmdParams is the split of the self-command.
- -- gs c [pact] [pacttype]
- function handle_pacts(cmdParams)
- if areas.Cities:contains(world.area) then
- add_to_chat(122, 'You cannot use pacts in town.')
- return
- end
- if not pet.isvalid then
- add_to_chat(122,'No avatar currently available. Returning to macro set 1.')
- set_macro_page(1)
- return
- end
- if spirits:contains(pet.name) then
- add_to_chat(122,'Cannot use pacts with spirits.')
- return
- end
- if not cmdParams[2] then
- add_to_chat(123,'No pact type given.')
- return
- end
- local pact = cmdParams[2]:lower()
- if not pacts[pact] then
- add_to_chat(123,'Unknown pact type: '..tostring(pact))
- return
- end
- if pacts[pact][pet.name] then
- if pact == 'astralflow' and not buffactive['astral flow'] then
- add_to_chat(122,'Cannot use Astral Flow pacts without 2hr active.')
- return
- end
- -- Leave out target; let Shortcuts auto-determine it.
- send_command('@input /pet "'..pacts[pact][pet.name]..'"')
- else
- add_to_chat(122,pet.name..' does not have a pact of type ['..pact..'].')
- end
- end
- -- Event handler for updates to player skill, since we can't rely on skill being
- -- correct at pet_aftercast for the creation of custom timers.
- windower.raw_register_event('incoming chunk',
- function (id)
- if id == 0x62 then
- if wards.flag then
- create_pact_timer(wards.spell)
- wards.flag = false
- wards.spell = ''
- end
- end
- end)
- -- Function to create custom timers using the Timers addon. Calculates ward duration
- -- based on player skill and base pact duration (defined in job_setup).
- function create_pact_timer(spell_name)
- -- Create custom timers for ward pacts.
- if wards.durations[spell_name] then
- local ward_duration = wards.durations[spell_name]
- if ward_duration < 181 then
- local skill = player.skills.summoning_magic
- if skill > 300 then
- skill = skill - 300
- --if skill > 200 then skill = 200 end
- ward_duration = ward_duration + skill
- if buffactive['Astral Conduit'] then
- ward_duration = ward_duration + ward_duration * 0.2
- end
- end
- end
- local timer_cmd = 'timers c "'..spell_name..'" '..tostring(ward_duration)..' down'
- if wards.icons[spell_name] then
- timer_cmd = timer_cmd..' '..wards.icons[spell_name]
- end
- send_command(timer_cmd)
- end
- end
- -- Select default macro book on initial load or subjob change.
- function select_default_macro_book()
- -- Default macro set/book
- set_macro_page(1, 1)
- send_command('console_displayactivity 0')
- send_command('blinkmenot all all on')
- end
- function adoulin_body(new_zone_id, old_zone_id)
- if ((new_zone_id==256 or new_zone_id==257)) then
- equip(customize_idle_set(sets.idle.Town))
- send_command("wait 2; gs equip sets.Councilor")
- elseif (old_zone_id==256 or old_zone_id==257) then
- send_command("wait 2; gs equip sets.idle")
- end
- end
- function weapon_lock_toggle()
- if lock_weapon == 0 then
- send_command("gs disable main")
- send_command("gs disable sub")
- equip(sets.nirvanalock)
- lock_weapon = 1
- add_to_chat(4,"Weapon lock enabled.")
- else
- send_command("gs enable main")
- send_command("gs enable sub")
- -- if (pet.isvalid) then
- --equip(customize_idle_set(sets.idle.Avatar))
- --else
- -- equip(customize_idle_set(sets.idle))
- --end
- lock_weapon = 0
- add_to_chat(4,"Weapon lock disabled.")
- end
- end
- function fix_gear()
- if (pet.isvalid) then
- equip(customize_idle_set(sets.idle.Avatar))
- elseif areas.Cities:contains(world.zone) then
- equip(customize_idle_set(sets.idle.Town))
- else
- equip(customize_idle_set(sets.idle))
- end
- add_to_chat(4,"Fixing gear.")
- end
Add Comment
Please, Sign In to add comment