Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- load bem utils!
- include('bem-utils.lua')
- --adding spell groupings for groupiness sake
- naSpells = S{"Paralyna","Silena","Viruna","Stona","Blindna","Poisona"}
- resSpells = S{"Barstonra","Barwatera","Baraera","Barfira","Barblizzara","Barthundra","Barstone","Barwater","Baraero","Barfire","Barblizzard","Barthunder"}
- fastspells = S{"Haste","Refresh","Teleport-Mea","Teleport-Holla","Teleport-Dem","Teleport-Vazhl",
- "Teleport-Yhoat","Teleport-Altep","Recall-Pashh","Warp","Warp II","Recall-Jugner","Recall-Meriph","Sneak","Invisible"}
- -- define gear sets
- function get_sets()
- -- core sets: used as base sets to be combined together in more specific conditions
- sets.idle = {
- ammo="Impatiens",
- head="Gendewitha Caubeen",
- neck="Twilight Torque",
- ear1="Lifestorm Earring",
- ear2="Moonshade Earring",
- body="Gendewitha Bliaut",
- hands="Serpentes Cuffs",
- ring1="Jelly Ring",--ahmagad NEED DARK RINGS JEBUS
- ring2="Mediator's Ring",
- back="Cheviot Cape",
- legs="Theophany Pantaloons",
- feet="Serpentes Sabots"
- }
- sets.resting = set_combine(sets.idle,{
- main="Chatoyant Staff",
- ear1="Antivenom Earring",
- ear2="Relaxing Earring",
- waist="Hierarch Belt",
- back="Vita Cape"})
- sets.dt = {
- ammo="Demonry Stone",
- neck="Twilight Torque",
- ring1="Dark Ring",
- ring2="Dark Ring",
- hands="Theophany Mitts +1",
- feet="Piety Duckbills +1"
- }
- sets.haste = {
- head="Xux Hat",--replace with Nahtirah (also 10%FC)
- waist="Swift Belt",
- body="Artsieq Jubbah"--will get soon
- }
- -- combine dt and haste with fastcast for less ouch and decent recasts
- --FC caps at 80%? bg wiki confuses me. current set has 21% and 3 instacast items.
- sets.fastcast = set_combine(sets.dt,sets.haste,{
- ammo="Impatiens",--insta
- ear1="Loquacious Earring",--FC 2%
- hands="Gendewitha Gages",--FC 7, CCT 2%
- back="Ogapepo Cape",--insta
- legs="Orvail Pants",--FC 5%
- waist="Witful Belt",--FC 3% and insta
- feet="Chelona Boots",--FC 4%
- ring1="Prolix Ring",--do not have, 2%
- neck="Orinmula's Torque"--do not have, meebles saur boss, 5%
- })
- --fastcast specific to cures, cure cast down stacks w/fastcast additively
- --/sch 10%, merits 20% sch: 94 lol, rdm 84.
- sets.curefast = set_combine(sets.fastcast,{
- back="Pahtli Cape",--CCT 8%
- body="Nefer Kalasiris",--CCT 10%
- feet="Cure Clogs", --CCT 15% (sell these once i get prolix and nahtirah)
- head="Theophany Cap +1",--CCT 5%
- legs="Orison Pantaloons +2"})--12%
- sets.healingfast = set_combine(sets.fastcast,{
- legs="Orison Pantaloons +2"})
- sets.travel = set_combine(sets.idle,{
- legs="Tatsumaki sitagoromo"})
- --for spells where potency isnt important
- sets.conserve = set_combine(sets.fastcast,{
- ear1="Magnetic Earring",
- ear2="Gifted Earring",
- ammo="Clarus Stone",
- back="Vita Cape",--do not have
- head="Artsieq Hat",--do not have
- main="Seveneyes"--do not have
- })
- -- cure potency gear (50%, 61 heal, enm -31, cMP 8)
- sets.cure_potency = {
- main="Tamaxchi", --cure pot 22
- sub="Genbu's Shield", --not augmented
- ammo="Clarus Stone",
- head="Gendewitha Caubeen",-- cure pot 18, enm -8
- neck="Colossus's Torque",--7 heal
- body="Orison Bliaud +2",--20 heal
- hands="Theophany Mitts +1",--17 heal, enm -5
- ring1="Ephedra Ring",--7 heal
- ring2="Sirona's Ring",--10 heal
- ear1="Magnetic Earring",
- ear2="Novia Earring",--enm -7
- back="Mending Cape", --enm -6
- legs="Orison Pantaloons +2",
- waist="Pythia Sash", --do not have
- feet="Piety Duckbills +1" --cure pot 10, enm -5
- }
- --healing skill meh on curaga and no bliaud bonus, focusing on -enmity (-44 with set combine)
- sets.curaga = set_combine(sets.cure_potency,{
- body="Gendewitha bliaut",
- neck="Lasaia Pendant",--enm -8
- ring1="Mediator's Ring"})--enm -5
- sets.erasenas = set_combine(sets.fastcast,{
- head="Orison Cap +2",
- legs="Orison Pantaloons +2"})
- sets.doom = set_combine(sets.cure_potency,{
- legs="Theophany Pantaloons",
- feet="Gendewitha Galoshes", --by the way, galoshes is almost as awesome a word as pantaloons
- head="Orison Cap +2"})
- -- enhancing magic skill
- sets.enhancing = {
- head="Orison Cap +2",
- neck="Colossus's Torque",
- grip="Fulcio Grip",
- back="Merciful Cape",
- waist="Olympus Sash",
- legs="Piety Pantaloons",
- feet="Orison Duckbills +2",
- head="Nabu's Tiara",
- main="Beneficus"
- }
- -- regen, not like i cast it on whm because the duration makes me weep but hey
- sets.regen = set_combine(sets.enhancing,{
- hands="Orison Mitts +2",
- legs="Theophany Pantaloons",
- body="Cleric's Bliault"})
- sets.protshell = set_combine(sets.conserve,{
- feet="Piety Duckbills +1",
- legs="Piety Pantaloons"
- })
- sets.bar = set_combine(sets.enhancing,{
- body="Orison Bliaud +2",
- hands="Orison Mitts +2"})
- -- stoneskin potency gear
- sets.ss_potency = {
- neck="Stone Gorget",
- ear2="Earthcry Earring",
- legs="Haven Hose"
- }
- -- generic enfeebling/m.acc gear 276 macc, 29 enf
- sets.enfeeb = {
- main="Lehbrailg +2",--macc 228
- ear1="Lifestorm Earring",--macc 12 mnd 4
- ear2="Psystorm Earring",
- head="Buremte Hat",--macc 15 mnd 24
- neck="Weike Torque",--macc 2 enf 7
- body="Gendewitha Bliaut",--artsieq base is 10, 30 upgraded
- hands="Piety Mitts",--enfeeb 20
- ring1="Mediator's Ring", --macc 4
- ring2="Balrahn's Ring",--macc 4
- waist="Ovate Rope",--don't have yet
- legs="Orvail Pants", --artsieq hose
- feet="Piety Duckbills +1",--enf 17 mnd 19
- back="Ogapepo Cape",--macc 10
- grip="Mephitis Grip",--macc 5 enf 5
- ammo="Kalboron Stone"--macc 4, dont have
- }
- -- generic mab gear
- sets.mab = {
- main="Lehbrailg +2",
- sub="Zuuxowu Grip",
- ammo="Dosis Tathlum",
- head="Buremte Hat",
- neck="Stoicheion Medal",
- ear1="Hecate's Earring",
- ear2="Friomisi Earring",
- hands="Otomi Gloves",
- ring1="Icesoul Ring",
- ring2="Icesoul Ring",
- back="Toro Cape",
- waist="Aswang Sash",
- }
- --divine gear, should prob look into mnd and not set combine
- sets.divine = set_combine(sets.mab,{
- hands="Piety Mitts",
- legs="Theophany Pantaloons"
- })
- --should update at some point for aspir/drain
- sets.dark = {}
- -- sets only used for precast
- sets.precast = {}
- -- weapon skills
- --i'll work on this eventually. but probably getting rid of realmrazr.
- --ahhh the days of randomly meritting crap because otherwise they were wasted
- sets.precast['Realmrazr'] = {
- head="Buremte Hat",
- neck="Soil Gorget",
- ear1="Brutal Earring",
- ear2="Ethereal Earring",
- body="Hagondes Coat",
- hands="Otomi Gloves",
- ring1="Icesoul Ring",
- ring2="Icesoul Ring",
- back="Romanus Cape",
- waist="Cognition Belt",
- legs="Hagondes Pants",
- feet="Hagondes Sabots"
- }
- sets.Obi = {}
- sets.Obi.Fire = {waist='Karin Obi',back='Twilight Cape',lring='Zodiac Ring'}
- sets.Obi.Earth = {waist='Dorin Obi',back='Twilight Cape',lring='Zodiac Ring'}
- sets.Obi.Water = {waist='Suirin Obi',back='Twilight Cape',lring='Zodiac Ring'}
- sets.Obi.Wind = {waist='Furin Obi',back='Twilight Cape',lring='Zodiac Ring'}
- sets.Obi.Ice = {waist='Hyorin Obi',back='Twilight Cape',lring='Zodiac Ring'}
- sets.Obi.Thunder = {waist='Rairin Obi',back='Twilight Cape',lring='Zodiac Ring'}
- sets.Obi.Light = {waist='Korin Obi',back='Twilight Cape',lring='Zodiac Ring'}
- sets.Obi.Dark = {waist='Anrin Obi',back='Twilight Cape',lring='Zodiac Ring'}
- sets.precast.enhancing = set_combine(sets.fastcast,{waist="Siegel Sash"})
- sets.precast.utsu = set_combine(sets.fastcast,{neck="Magoraga Beads"})
- sets.precast['Stoneskin'] = set_combine(sets.precast.enhancing,{hands="Carapacho Cuffs",waist="Siegel Sash"})
- -- sets only used for midcast
- -- use fastcast base for all magic sets in case precast phase is somehow missed
- sets.midcast = {}
- sets.midcast.Stoneskin = sets.ss_potency
- sets.midcast.cure = set_combine(sets.curefast,sets.cure_potency)
- sets.midcast.Curaga = set_combine(sets.curefast,sets.curaga)
- sets.midcast.enhancing = set_combine(sets.fastcast,sets.enhancing)
- sets.midcast.nuke = set_combine(sets.fastcast,sets.mab)
- sets.midcast.enfeeb = set_combine(sets.fastcast,sets.enfeeb)
- sets.midcast.doom = set_combine(sets.healingfast,sets.doom)
- sets.midcast.divine = set_combine(sets.fastcast,sets.divine)
- sets.midcast.erasenas = set_combine(sets.healingfast,sets.erasenas)
- -- tp sets
- sets.tp = {}
- sets.tp.dd = set_combine(sets.haste, {
- ammo="Jukukik Feather",
- body="Gendewitha Bliaut",
- ring1="Rajas Ring",
- legs="Theophany Pantaloons",
- back="Atheling Mantle"
- })
- sets.tp.dt = set_combine(sets.tp.dd,sets.dt)
- sets.aftercast = {}
- sets.aftercast.tp = sets.tp.dd
- sets.aftercast.idle = sets.idle
- send_command('input /macro book 4;wait .1;input /macro set 1')
- end
- function precast(spell,abil)
- --anti macro button spam rule. invalidates up to three additional button presses
- --i don't get some of it but the echo tells me it's working so yay?
- if midaction() then
- midaction_counter = midaction_counter + 1
- send_command('@Input /echo HAAAY STOP SPAMMING ME')
- if midaction_counter > 3 then
- midaction(false)
- midaction_counter = 0
- else
- return
- end
- else
- midaction_counter = 0
- end
- if sets.precast[spell.english] then
- equip(sets.precast[spell.english])
- elseif spell.action_type=="Magic" then
- if spell.skill == "Enhancing Magic" then
- equip(sets.precast.enhancing)
- if spell.english == "Erase" then
- equip(sets.fastcast)
- end
- elseif spell.skill== "Healing Magic" then
- if string.find(spell.english,'Cure') then
- equip(sets.curefast)
- cure_check(spell)
- elseif string.find(spell.english,'Cura') then
- equip(sets.curefast)
- elseif (naSpells:contains(spell.english) or spell.english == "Cursna") then
- equip(sets.healingfast)
- else
- equip(sets.fastcast)
- end
- elseif spell.skill== "Enfeebling Magic" then
- --distance warning
- bemsays.am_i_safe(spell)
- equip(sets.fastcast)
- else
- equip(sets.fastcast)
- end
- elseif spell.type=="WeaponSkill" then
- equip(sets.precast.ws)
- end
- end
- function midcast(spell)
- -- cancel buffs first in case of instacast
- if spell.english == 'Stoneskin' then
- send_command('cancel 37')
- elseif spell.target.type == 'SELF' and spell.english == 'Sneak' then
- send_command('cancel 71')
- end
- if spell.type == 'JobAbility' or spell.type == 'WeaponSkill' then
- --midcast doesn't exist for JA or WS so cancel the processing of this function
- return
- end
- -- look for action/spell specific sets
- if sets.midcast[spell.english] then
- equip(sets.midcast[spell.english])
- elseif string.find(spell.english,'na') then
- if spell.english == 'Cursna' then
- equip(sets.midcast.doom)
- else
- equip(sets.midcast.erasenas)
- end
- if buffactive['Divine Caress'] then
- equip({hands="Orison Mitts +2",back="Mending Cape"})
- end
- --cure rules
- elseif spell.skill == "Healing Magic" then
- if string.find(spell.english,'Cure') then
- equip(sets.midcast.cure)
- elseif string.find(spell.english,'Cura') then
- equip(sets.midcast.Curaga)
- else
- equip(sets.conserve)
- end
- --below used more on sch. but if curing on lightsday, yay supercure
- --need to apply only to cures, need to move under cure rules
- if (spell.element == world.weather_element or spell.element == world.day_element) then
- equip(sets.Obi[spell.element])
- end
- elseif spell.skill == "Enhancing Magic" then
- --defined resSpells table at top of this code
- if resSpells:contains(spell.english) then
- equip(sets.bar)
- elseif (string.find(spell.english,'Prot') or string.find(spell.english,'Shell')) then
- equip(sets.protshell)
- --defined fast spells at top
- elseif fastspells:contains(spell.english) then
- equip(sets.conserve)
- elseif spell.english == 'Erase' then
- equip(sets.midcast.erasenas)
- elseif string.find(spell.english,'Regen') then
- equip(sets.regen)
- else
- equip(sets.midcast.enhancing)
- end
- elseif spell.skill == "Enfeebling Magic" then
- equip(sets.midcast.enfeeb)
- elseif spell.skill== "Elemental Magic" then
- equip(sets.midcast.nuke)
- elseif spell.skill== "Divine Magic" then
- equip(sets.midcast.divine)
- end
- end
- function aftercast(spell)
- if player.status =='Engaged' then
- equip(sets.aftercast.tp)
- else
- equip(sets.aftercast.idle)
- end
- end
- --lock my weapon when fighting so it doesnt change when i cure people and such, so i dont lose tp
- --unfortunately it equips the last weapon i SHOULD have cast in as soon as i disengage, which is weird.
- function status_change(new,old)
- if player.status == 'Idle' then
- enable('main')
- enable('sub')
- equip(sets.aftercast.idle)
- elseif player.status == 'Engaged' then
- disable('main')
- disable('sub')
- equip(sets.aftercast.tp)
- elseif player.status == 'Resting' then
- equip(sets.resting)
- end
- end
- --using this to remind myself to freaking recharge sub/cast refresh
- --and for auto echo drops functionality
- function buff_change(buff,gain_or_loss)
- if player.sub_job == "SCH" then
- if (buff=="Sublimation: Complete" or buff=="Sublimation: Activated") and not gain_or_loss then
- windower.send_command('wait 30;input /echo ****BEM USE YOUR SUBLIMATION JANKS YO****')
- end
- elseif player.sub_job == "RDM" then
- if buff=="Refresh" and not gain_or_loss then
- windower.send_command('wait 10;input /echo ***BEM REFRESH YOSELF FFS***')
- end
- end
- if buff == "silence" and gain_or_loss then
- bemsays.echodrops()
- end
- end
- --stealing mote's refinewaltz code for cure purposes, should move to bemutils
- function cure_check(spell)
- newcure = spell.english
- downgrade = ""
- --if buffactive['Light Arts'] and buffactive.Penury then (will work on this later)
- --standard functionality below works.
- if player.mp < 46 then
- newcure = 'Cure II'
- elseif player.mp < 88 then
- newcure = 'Cure III'
- elseif player.mp < 135 then
- newcure = 'Cure IV'
- end
- downgrade = 'Short on MP. Downgrading to '..newcure..'.'
- if newcure ~= spell.english then
- cancel_spell()
- send_command('@input /ma "'..newcure..'" '..tostring(spell.target.raw))
- add_to_chat(122, downgrade)
- end
- end
- --equip different idle sets depending on what im doing. max refresh is standard idle.
- --can put these in ingame macros as /console gs c dton i just have travel one macroed since
- --it gets most use. if not macroed just type //gs c dton or whatever set you want listed here
- function self_command(command)
- if command == 'dton' then
- sets.aftercast.idle = sets.dt
- equip(sets.aftercast.idle)
- elseif command == 'dtoff' then
- sets.aftercast.idle = sets.idle
- equip(sets.aftercast.idle)
- elseif command == 'run' then
- sets.aftercast.idle = sets.travel
- equip(sets.aftercast.idle)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement