|
geomancer lua
By gargurty 2014-06-14 14:47:33
anyone got good geo lua for me. The one i use now doesnt have a macc, enhancing or stoneskin inserted and i dont know how to make it myself.
Necro Bump Detected!
[32 days between previous and next post]
Server: Asura
Game: FFXI
Posts: 4307
By Asura.Ackeronll 2014-07-16 11:23:59
Month old bump but something I'm looking for too. Just got this Lv99 looking for a good gearswap for it.
Ragnarok.Drewbles
Server: Ragnarok
Game: FFXI
Posts: 138
By Ragnarok.Drewbles 2014-07-16 11:27:54
Give me a week or so and I'll post mine here for my mule. I just need to finish it. I'll post a version without gear before I start putting it in.
By gargurty 2014-07-23 13:40:24
that would be cool. Could u also add in elemental obis :) cos i have no clu on how to add em :/
I use motenten's geo lua btw
Hades.Triet
Server: Hades
Game: FFXI
Posts: 1615
By Hades.Triet 2014-07-23 23:55:45
It's nothing fancy, but here is what I have
Code
-------------------------------------------------------------------------------------------------------------------
-- Initialization function that defines sets and variables to be used.
-------------------------------------------------------------------------------------------------------------------
-- IMPORTANT: Make sure to also get the Mote-Include.lua file (and its supplementary files) to go with this.
-- Initialization function for this job file.
function get_sets()
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent.
function job_setup()
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'}
options.DefenseModes = {'Normal'}
options.WeaponskillModes = {'Normal'}
options.IdleModes = {'Normal', 'PDT'}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'PDT'}
options.MagicalDefenseModes = {'MDT'}
state.Defense.PhysicalMode = 'PDT'
-- Default macro set/book
set_macro_page(1, 13)
end
-- Called when this job file is unloaded (eg: job change)
function file_unload()
if binds_on_unload then
binds_on_unload()
end
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Start defining the sets
--------------------------------------
-- Precast Sets
-- Precast sets to enhance JAs
sets.precast.JA['Cardinal Chant'] = {head="Geomancy Galero"}
sets.precast.JA['Life Cycle'] = {body="Geomancy Tunic"}
sets.precast.JA['Full Circle'] = {hands="Bagua Mitaines"}
sets.precast.JA['Radial Arcana'] = {feet="Bagua Sandals"}
sets.precast.JA['Bolster'] = {body="Bagua Tunic"}
sets.precast.JA['Mending Halation'] = {legs="Bagua Pants"}
-- Fast cast sets for spells
sets.precast.FC = {
head="Nahtirah Hat",ear2="Loquacious Earring",
body="Anhur Robe",hands="Repartie Gloves",ring1="Prolix Ring",
back="Lifestream Cape",waist="Witful Belt",legs="Geomancy Pants",feet="Karasutengu Kogake"}
sets.precast.FC.Cure = {
head="Nahtirah Hat",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Repartie Gloves",ring1="Prolix Ring",
back="Pahtli Cape",waist="Witful Belt",legs="Geomancy Pants",feet="Karasutengu Kogake"}
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {hands="Bagua Mitaines"})
-- Weaponskill sets: Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Realmrazer'] = {
head="Espial Cap",neck="Light Gorget",ear1="Moonshade Earring",ear2="Brutal Earring",
body="Espial Gambison",hands="Yaoyotl Gloves",ring1="Aquasoul Ring",ring2="Mars's Ring",
back="Buquwik Cape",waist="Anguinus Belt",legs="Espial Hose",feet="Espial Socks"}
sets.precast.WS['Starlight'] = {ear2="Moonshade Earring"}
sets.precast.WS['Moonlight'] = {ear2="Moonshade Earring"}
sets.precast.WS['Flash Nova'] = {
head="Hagondes Hat",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Hecate's Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Acumen Ring",ring2="Demon's Ring",
back="Toro Cape",waist="Light Belt",legs="Hagondes Pants"}
-- Midcast Sets
sets.midcast.FastRecast = {
head="Nahtirah Hat",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Bokwus Gloves",ring1="Prolix Ring",
back="Lifestream Cape",waist="Goading Belt",legs="Hagondes Pants",feet="Karasutengu Kogake"}
sets.midcast.Geomancy = {range="Nepote Bell",
body="Bagua Tunic",hands="Geomancy Mitaines",ring1="Prolix Ring",
back="Lifestream Cape",waist="Witful Belt",legs="Geomancy Pants",feet="Karasutengu Kogake"}
sets.midcast.Cure = {
body="Heka's Kalasiris",hands="Serpentes Cuffs",
back="Lifestream Cape",legs="Praeco Slacks",feet="Serpentes Sabots"}
sets.midcast['Dark Magic'] = {
head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Geomancy Tunic",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Witful Belt",legs="Geomancy Pants",feet="Orvail Souliers +1"}
--main="Eminent Staff",sub="Mephitis Grip",
sets.midcast.Drain = {
head="Bagua Galero",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Geomancy Tunic",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Witful Belt",legs="Geomancy Pants",feet="Orvail Souliers +1"}
--main="Eminent Staff",sub="Mephitis Grip",
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast['Aspir II'] = sets.midcast.Drain
sets.midcast.Stun = {main="Eminent Staff",sub="Mephitis Grip",
head="Nahtirah Hat",neck="Eddy Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Anhur Robe",hands="Repartie Gloves",ring1="Prolix Ring",ring2="Sangoma Ring",
back="Lifestream Cape",waist="Witful Belt",legs="Geomancy Pants",feet="Academic's Loafers"}
sets.midcast['Elemental Magic'] = {ammo="Witchstone",
head="Hagondes Hat",neck="Eddy Necklace",ear1="Hecate's Earring",ear2="Friomisi Earring",
body="Bagua Tunic",hands="Yaoyotl Gloves",ring1="Acumen Ring",ring2="Strendu Ring",
back="Toro Cape",waist="Oneiros Sash",legs="Hagondes Pants",feet="Orvail Souliers +1"}
--main="Eminent Staff",sub="Wise Grip",
sets.midcast['Indi-*'] = {legs="Bagua Pants"}
sets.midcast.Protectra = {ring1="Sheltered Ring"}
sets.midcast.Shellra = {ring1="Sheltered Ring"}
-- Enfeebling Magic Sets
sets.midcast.MndEnfeebles = {
head="Kaabanax Hat",neck="Enfeebling Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Perception Ring",ring2="Sangoma Ring",
back="Lifestream Cape",waist="Witful Belt",legs="Hagondes Pants",feet="Bagua Sandals"}
-- main="Eminent Staff",sub="Mephitis Grip",
sets.midcast.IntEnfeebles = {
head="Kaabanax Hat",neck="Enfeebling Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Perception Ring",ring2="Sangoma Ring",
back="Lifestream Cape",waist="Witful Belt",legs="Hagondes Pants",feet="Bagua Sandals"}
--main="Eminent Staff",sub="Mephitis Grip",
sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {neck="Twilight Torque",
body="Heka's Kalasiris",ring1="Sheltered Ring",ring2="Paguroidea Ring"}
-- Idle sets (default idle set not needed since the other three are defined, but leaving for testing purposes)
sets.idle.Town = {main="Bolelabunga",sub="Genbu's Shield",range="Nepote Bell",
head="Nefer Khat",neck="Twilight Torque",ear1="Ethereal Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Bagua Mitaines",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Repulse Mantle",waist="Tarutaru Sash",legs="Hagondes Pants",feet="Geomancy Sandals"}
sets.idle.Field = {range="Nepote Bell",
head="Nefer Khat",neck="Twilight Torque",ear1="Ethereal Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Bagua Mitaines",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Repulse Mantle",waist="Witful Belt",legs="Hagondes Pants",feet="Geomancy Sandals"}
sets.idle.Field.PDT = {range="Nepote Bell",
head="Hagondes Hat",neck="Twilight Torque",ear1="Ethereal Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Bagua Mitaines",ring1="Dark Ring",ring2="Dark Ring",
back="Repulse Mantle",waist="Witful Belt",legs="Hagondes Pants",feet="Geomancy Sandals"}
sets.idle.Weak = {sub="Genbu's Shield",range="Nepote Bell",
head="Nefer Khat",neck="Twilight Torque",ear1="Ethereal Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Bagua Mitaines",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Shadow Mantle",waist="Witful Belt",legs="Hagondes Pants",feet="Geomancy Sandals"}
-- Defense sets
sets.defense.PDT = {sub="Genbu's Shield",range="Nepote Bell",
head="Hagondes Hat",neck="Twilight Torque",ear1="Ethereal Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Bagua Mitaines",ring1="Dark Ring",ring2="Dark Ring",
back="Shadow Mantle",waist="Goading Belt",legs="Hagondes Pants",feet="Geomancy Sandals"}
sets.defense.MDT = {sub="Genbu's Shield",range="Nepote Bell",
head="Nahtirah Hat",neck="Twilight Torque",ear1="Ethereal Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Bagua Mitaines",ring1="Merman's Ring",ring2="Merman's Ring",
back="Shadow Mantle",waist="Goading Belt",legs="Hagondes Pants",feet="Geomancy Sandals"}
sets.Kiting = {feet="Geomancy Sandals"}
-- Engaged sets
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Normal melee group
sets.engaged = {range="Nepote Bell",
head="Espial Cap",neck="Asperity Necklace",ear1="Steelflash Earring",ear2="Bladeborn Earring",
body="Espial Gambison",hands="Geomancy Mitaines",ring1="Enlivened Ring",ring2="K'ayres Ring",
back="Buquwik Cape",waist="Goading Belt",legs="Espial Hose",feet="Espial Socks"}
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)
end
-- Run after the general precast() is done.
function job_post_precast(spell, action, spellMap, eventArgs)
end
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_midcast(spell, action, spellMap, eventArgs)
if spell.action_type == 'Magic' then
-- Default base equipment layer of fast recast.
equip(sets.midcast.FastRecast)
end
end
-- Run after the general midcast() is done.
function job_post_midcast(spell, action, spellMap, eventArgs)
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)
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
function customize_idle_set(idleSet)
return idleSet
end
function customize_melee_set(meleeSet)
return meleeSet
end
-------------------------------------------------------------------------------------------------------------------
-- General hooks for other events.
-------------------------------------------------------------------------------------------------------------------
-- Called when the player's status changes.
function job_status_change(newStatus,oldStatus)
end
-- 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)
--handle_equipping_gear(player.status)
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called for custom player commands.
function job_self_command(cmdParams, eventArgs)
end
-- Called by the 'update' self-command.
function job_update(cmdParams, eventArgs)
end
-- Function to display the current relevant user state when doing an update.
-- Return true if display was handled, and you don't want the default info shown.
function display_current_job_state()
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
Bismarck.Inference
Server: Bismarck
Game: FFXI
Posts: 417
By Bismarck.Inference 2014-07-24 00:18:10
Mote has Obi's built into his, I'm just not entirely certain how to call them. Could have sworn he mentioned it on the support thread but couldn't find it in a quick skim of a recent-ish forum posts.
Regardless you should post on the GS support thread and get his attention if it's a concern, as it's generally not wise to just copy/paste other peoples rules into his files.
By gargurty 2014-07-24 02:12:36
true, i also made a post on bgwiki about it. Hope he will see it :)
By gargurty 2014-07-24 03:06:01
motenten added his comment and how to fix it. |onight i will try this wisdom :)
Quetzalcoatl.Guthrie
Server: Quetzalcoatl
Game: FFXI
Posts: 80
By Quetzalcoatl.Guthrie 2014-08-20 13:31:37
None of the GEO.luas that I'm finding are equipping PET: -PDT gear correctly if I have a Luopan. Does anyone have a gearswap that is correctly doing so? I use mote's includes and all that jazz.
EDIT: I haz good english...
By gargurty 2014-08-21 02:25:49
http://pastebin.com/HXqt0J5w
this is the one i use. IN idle field i have the luopon -pdt stuff.
Hope it helps a bit
[+]
Quetzalcoatl.Guthrie
Server: Quetzalcoatl
Game: FFXI
Posts: 80
By Quetzalcoatl.Guthrie 2014-08-21 07:29:48
Thanks! I was doing the same, but that potentially takes away from two refresh spots when luopans are not out :/. I could always just make another set and have to just use the F binds to change I suppose...
Necro Bump Detected!
[52 days between previous and next post]
By Darknightleo 2014-10-12 02:45:51
[link] this is the one i use. IN idle field i have the luopon -pdt stuff.
Hope it helps a bit Thanks so much for this, after some tweaking this has made my first foray into gearswap a breeze!
Quick question though. How do you activate your Fast-recast set?
Necro Bump Detected!
[83 days between previous and next post]
By gargurty 2015-01-03 09:59:44
Sorry for the late reply :)
No idea on how i activate it cos i mostly copy paste and add some stuff :)
Btw does anyone know how to add low and high cast tier magic, and maybe cure degration, cos i have no idea on how to copy paste that in my on lua lol.
By Darknightleo 2015-01-03 10:44:16
Sorry for the late reply :)
No idea on how i activate it cos i mostly copy paste and add some stuff :)
Btw does anyone know how to add low and high cast tier magic, and maybe cure degration, cos i have no idea on how to copy paste that in my on lua lol. I was a derp, it's just the base rcast set, with others being defined over it. I do have a question though. Using the modified version of your LUA. Loving it, but it's been out of date. And every time I try to update it I get weird errors. Were you able to successfully update your's?
By gargurty 2015-01-03 12:50:07
http://pastebin.com/GDAF0sG0
this is the one i use right now, but would like the low tier and high tier too work, and a cure degrade would be nice to :)
Cerberus.Conagh
Server: Cerberus
Game: FFXI
Posts: 3189
By Cerberus.Conagh 2015-01-03 13:02:32
Defining spell maps is easy in motes, his lua explains it well too too boot, and the GEO example he has shows it also, on Geomancy is shows returns 'name' this checks for a base set for Geomancy and then the returns checks for any defined midcast set that has geomancy.string
if the string matches so ~
returns Geo
and your set is Geomancy.Geo
it equips the Geo set.
if not it equips the Geomancy in it's stead ~
Below is the code I use (minus the elemtnal stuff but it does work for indi and Geo spells.)
Code sets.midcast['Elemental Magic'] = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Clarus Stone",
head="Hagondes Hat +1",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Psystorm Earring",
body="Bagua Tunic +1",hands="Yaoyotl Gloves",ring2="Sangoma Ring",
cape="Toro Cape",waist="Sekhmet Corset",legs="Hagondes Pants +1",feet="Umbani Boots"}
sets.midcast['Elemental Magic']['Low'] = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Clarus Stone",
head="Hagondes Hat +1",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Psystorm Earring",
body="Bagua Tunic +1",hands="Yaoyotl Gloves",ring2="Sangoma Ring",
cape="Toro Cape",waist="Sekhmet Corset",legs="Hagondes Pants +1",feet="Umbani Boots"}
To define your sets ~
Then you define what is a Low Tier Nuke
Rules (works on GEO not tested on Elemental but same principle)
Code function job_get_spell_map(spell, default_spell_map)
if spell.action_type == 'Magic' then
if spell.skill == 'Enfeebling Magic' then
if spell.type == 'WhiteMagic' then
return 'MndEnfeebles'
else
return 'IntEnfeebles'
end
elseif spell.skill == 'Geomancy' then
if spell.english:startswith('Indi') then
return 'Indi'
elseif spell.english:startswith('Geo') then
return 'Geo'
end
elseif spell.skill == 'Elemantal Magic' then
if LowNukes:contains(spell.name) then
return 'Low'
else
return
end
elseif spell.skill == 'Dark Magic' then
if spell.english:startswith('Stu') then
return 'Stun'
else
return
end
return
end
end
end
Full code here if needed ~
Code -------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
indi_timer = ''
indi_duration = 180
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('None', 'Normal')
state.CastingMode:options('Normal', 'Resistant')
state.IdleMode:options('Normal', 'PDT')
gear.default.weaponskill_waist = "Windbuffet Belt"
select_default_macro_book()
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Precast sets
--------------------------------------
-- Precast sets to enhance JAs
sets.precast.JA.Bolster = {body="Bagua Tunic +1"}
sets.precast.JA['Life Cycle'] = {body="Geomancy Tunic +1"}
-- Fast cast sets for spells
sets.precast.FC = {ammo="Impatiens",
head="Nahtirah Hat",ear2="Loquacious Earring",
body="Vanir Cotehardie",ring1="Prolix Ring",hands="Repartie Gloves",
back="Lifestream Cape",waist="Witful Belt",legs="Geomancy Pants +1",feet="Regal Pumps +1"}
sets.precast.FC.Cure = set_combine(sets.precast.FC, {main="Tefnut Wand",sub="Genbu's Shield",back="Pahtli Cape"})
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {neck="Stoicheion Medal",hands="Bagua Mitaines"})
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {
head="Nahtirah Hat",neck=gear.ElementalGorget,ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Rajas Ring",ring2="K'ayres Ring",
back="Refraction Cape",waist=gear.ElementalBelt,legs="Hagondes Pants +1",feet="Hagondes Sabots"}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Flash Nova'] = {ammo="Dosis Tathlum",
head="Hagondes Hat +1",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Crematio Earring",
body="Hagondes Coat +1",hands="Yaoyotl Gloves",ring1="Acumen Ring",ring2="Strendu Ring",
back="Toro Cape",waist="Snow Belt",legs="Hagondes Pants +1",feet="Hagondes Sabots"}
sets.precast.WS['Starlight'] = {ear2="Moonshade Earring"}
sets.precast.WS['Moonlight'] = {ear2="Moonshade Earring"}
--------------------------------------
-- Midcast sets
--------------------------------------
-- Base fast recast for spells
sets.midcast.FastRecast = {
head="Zelus Tiara",ear2="Loquacious Earring",
body="Hagondes Coat +1",hands="Bokwus Gloves",ring1="Prolix Ring",
back="Lifestream Cape",waist="Goading Belt",legs="Hagondes Pants +1",feet="Hagondes Sabots"}
sets.midcast['Enfeebling Magic'] = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Clarus Stone",
head="Artsieq Hat",neck="Imbodla Necklace",ear1="lifestream Earring",ear2="Psystorm Earring",
body="Hagondes Coat +1",hands="Hagondes Cuffs +1",ring2="Sangoma Ring",
cape="Lifestream Cape",waist="Demonry Sash",legs="Artsieq Hose",feet="Bagua Sandals"}
sets.midcast['Elemental Magic'] = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Clarus Stone",
head="Hagondes Hat +1",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Psystorm Earring",
body="Bagua Tunic +1",hands="Yaoyotl Gloves",ring2="Sangoma Ring",
cape="Toro Cape",waist="Sekhmet Corset",legs="Hagondes Pants +1",feet="Umbani Boots"}
sets.midcast['Elemental Magic']['Low'] = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Clarus Stone",
head="Hagondes Hat +1",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Psystorm Earring",
body="Bagua Tunic +1",hands="Yaoyotl Gloves",ring2="Sangoma Ring",
cape="Toro Cape",waist="Sekhmet Corset",legs="Hagondes Pants +1",feet="Umbani Boots"}
sets.midcast['Dark Magic'] = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Clarus Stone",
head="Hagondes Hat +1",neck="Imbodla Necklace",ear1="lifestream Earring",ear2="Psystorm Earring",
body="Hagondes Coat +1",hands="Yaoyotl Gloves",
cape="Toro Cape",waist="Demonry Sash",legs="Hagondes Pants +1",feet="Umbani Boots"}
sets.midcast['Dark Magic']['Stun'] = {main="Lehbrailg +2",sub="Mephitis Grip",
head="Nahtirah Hat",neck="Eddy Necklace",ear1="lifestream Earring",ear2="Loquacious Earring",
body="Bagua Tunic +1",hands="Hagondes Cuffs +1",ring1="Prolix Ring",Ring2="Sangoma Ring",
cape="Lifestream Cape",waist="Goading Belt",legs="Geomancy Pants +1",feet="Regal Pumps +1"}
sets.midcast.Geomancy = {range="Dunna",head="Laurel Wreath",legs="Bagua Pants",hands="Geomancy Mitaines",body="Bagua Tunic +1",
waist="Sekhmet Corset"}
sets.midcast.Geomancy.Geo = {range="Dunna",head="Laurel Wreath",legs="Theurgist's Slacks",hands="Geomancy Mitaines",body="Bagua Tunic +1",
waist="Sekhmet Corset"}
sets.midcast.Cure = {main="Tefnut Wand",sub="Genbu's Shield",
body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Haoma Ring",ring2="Sirona's Ring",
back="Oretania's Cape",legs="Nares Trews",feet="Regal Pumps +1"}
sets.midcast.Curaga = sets.midcast.Cure
sets.midcast.Protectra = {ring1="Sheltered Ring"}
sets.midcast.Shellra = {ring1="Sheltered Ring"}
--------------------------------------
-- Idle/resting/defense/etc sets
--------------------------------------
-- Resting sets
sets.resting = {main="Chatoyant Staff",neck="Wiglen Gorget",
body="Hagondes Coat +1",hands="Bagua Mitaines",ring1="Sheltered Ring",ring2="Paguroidea Ring",
waist="Austerity Belt",legs="Assiduity Pants",feet="Chelona Boots"}
-- Idle sets
sets.idle = {main="Bolelabunga",sub="Genbu's Shield",range="Dunna",
head="Artsieq Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat +1",hands="Bagua Mitaines",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Iximulew Cape",waist="Funcho-no-obi",legs="Assiduity Pants +1",feet="Geomancy Sandals"}
sets.idle.PDT = {main="Earth Staff",range="Dunna",
head="Hagondes Hat +1",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat +1",hands="Bagua Mitaines",ring1="Patricius Ring",ring2="Paguroidea Ring",
back="Iximulew Cape",waist="Funcho-no-obi",legs="Hagondes Pants +1",feet="Geomancy Sandals"}
-- .Pet sets are for when Luopan is present.
sets.idle.Pet = {main="Earth Staff",range="Dunna",
head="Hagondes Hat +1",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat +1",hands="Bagua Mitaines",ring1="Defending Ring",ring2="Paguroidea Ring",
back="Lifestream Cape",waist="Funcho-no-obi",legs="Assiduity Pants +1",feet="Bagua Sandals"}
sets.idle.PDT.Pet = {main="Earth Staff",range="Dunna",
head="Hagondes Hat +1",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat +1",hands="Geomancy Mitains",ring1="Patricius Ring",ring2="Paguroidea Ring",
back="Lifestream Cape",waist="Goading Belt",legs="Assiduity Pants +1",feet="Bagua Sandals"}
-- .Indi sets are for when an Indi-spell is active.
sets.idle.Town = {main="Bolelabunga",sub="Genbu's Shield",range="Dunna",
head="Artsieq Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Geomancy Tunic +1",hands="Bagua Mitaines",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Lifestream Cape",waist="Goading Belt",legs="Assiduity Pants +1",feet="Geomancy Sandals"}
sets.idle.Weak = {main="Bolelabunga",sub="Genbu's Shield",range="Dunna",
head="Nefer Khat +1",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat +1",hands="Bagua Mitaines",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Lifestream Cape",waist="Goading Belt",legs="Assiduity Pants +1",feet="Geomancy Sandals"}
-- Defense sets
sets.defense.PDT = {range="Dunna",main="Earth Staff",
head="Hagondes Hat +1",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat +1",hands="Geomancy Mitaines",ring1="Patricius Ring",ring2=gear.DarkRing.physical,
back="Lifestream Cape",waist="Slipor Sash",legs="Hagondes Pants +1",feet="Bagua Sandals"}
sets.defense.MDT = {range="Dunna",main="Earth Staff",
head="Hagondes Hat +1",neck="Nuna Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat +1",hands="Geomancy Mitaines",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Lifestream Cape",waist="Slipor Sash",legs="Hagondes Pants +1",feet="Bagua Sandals"}
sets.Kiting = {feet="Geomancy Sandals"}
sets.latent_refresh = {waist="Fucho-no-obi"}
--------------------------------------
-- Engaged sets
--------------------------------------
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Normal melee group
sets.engaged = {range="Dunna",
head="Zelus Tiara",neck="Peacock Charm",ear1="Bladeborn Earring",ear2="Steelflash Earring",
body="Vanir Cotehardie",hands="Bokwus Gloves",ring1="Rajas Ring",ring2="Paguroidea Ring",
back="Lifestream Cape",waist="Goading Belt",legs="Hagondes Pants +1",feet="Hagondes Sabots"}
--------------------------------------
-- Custom buff sets
--------------------------------------
end
LowNukes = S{'Stone'}
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
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
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
if player.indi and not classes.CustomIdleGroups:contains('Indi')then
classes.CustomIdleGroups:append('Indi')
handle_equipping_gear(player.status)
elseif classes.CustomIdleGroups:contains('Indi') and not player.indi then
classes.CustomIdleGroups:clear()
handle_equipping_gear(player.status)
end
end
function job_state_change(stateField, newValue, oldValue)
if stateField == 'Offense Mode' then
if newValue == 'Normal' then
disable('main','sub','range')
else
enable('main','sub','range')
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
function job_get_spell_map(spell, default_spell_map)
if spell.action_type == 'Magic' then
if spell.skill == 'Enfeebling Magic' then
if spell.type == 'WhiteMagic' then
return 'MndEnfeebles'
else
return 'IntEnfeebles'
end
elseif spell.skill == 'Geomancy' then
if spell.english:startswith('Indi') then
return 'Indi'
elseif spell.english:startswith('Geo') then
return 'Geo'
end
elseif spell.skill == 'Elemantal Magic' then
if LowNukes:contains(spell.name) then
return 'Low'
else
return
end
elseif spell.skill == 'Dark Magic' then
if spell.english:startswith('Stu') then
return 'Stun'
else
return
end
return
end
end
end
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
return idleSet
end
-- Called by the 'update' self-command.
function job_update(cmdParams, eventArgs)
classes.CustomIdleGroups:clear()
if player.indi then
classes.CustomIdleGroups:append('Indi')
end
end
-- Function to display the current relevant user state when doing an update.
function display_current_job_state(eventArgs)
display_current_caster_state()
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
set_macro_page(1, 7)
end
By gargurty 2015-01-03 15:16:55
thanks for the answer ill try it out :)
By gargurty 2015-01-04 02:26:39
would that also work if would make stone line to equip neck when casting stone spells?
Im also thinking to add that in it for the extra powa /grin.
think it would look like this:
elseif spell.skill == 'Stone' then
if spell.english:startswith('Ston') then return 'Elemental Magic'
else
return
end
sets.midcast['Stone'] = set.combine(sets.midcast['Elemental Magic'], {neck="forgot the name of the piece lol"})
am i correct on this?
Bismarck.Inference
Server: Bismarck
Game: FFXI
Posts: 417
By Bismarck.Inference 2015-01-04 02:45:59
You could go through the mapping process for that, similar to what he suggested for Low Tier, however it doesn't make too much sense to do it this way because we already have spell.element so its not like we have anymore information to tell the system.
You should already have job_post_midcast in your job-file, you can just brute force it into the default handling:
Code
function job_post_midcast
if spell.element == 'Earth' and spell.skill == 'Elemental Magic' then
if job_get_spell_map(spell,default_spell_map) == 'Low'
equip(set_combine(sets.midcast['Elemental Magic']['Low'],{neck="Quanpur Necklace"}))
else
equip(set_combine(sets.midcast['Elemental Magic'],{neck="Quanpur Necklace"}))
end
end
end
There's probably a more elegant way to write this if you're familiar with Mote files, but this should work fine anyways if you don't mind having a few ugly lines.
If you'd prefer to do it the spell map way: Code
function job_get_spell_map(spell,default_spell_map)
## Rest of function up here, which is why we use elseif, if this is
## the only rule you have in your function, use "if"
elseif spell.skill == 'Elemental Magic' then
if LowNukes:contians(spell.english) then
return 'Low'
elseif spell.element == "Earth" then
return 'Earth'
else
return
end
end
end
And you'd name your set as sets.midcast['Elemental Magic']['Earth']
Cerberus.Conagh
Server: Cerberus
Game: FFXI
Posts: 3189
By Cerberus.Conagh 2015-01-04 03:55:52
Bismarck.Inference said: »You could go through the mapping process for that, similar to what he suggested for Low Tier, however it doesn't make too much sense to do it this way because we already have spell.element so its not like we have anymore information to tell the system.
You should already have job_post_midcast in your job-file, you can just brute force it into the default handling:
Code
function job_post_midcast
if spell.element == 'Earth' and spell.skill == 'Elemental Magic' then
if job_get_spell_map(spell,default_spell_map) == 'Low'
equip(set_combine(sets.midcast['Elemental Magic']['Low'],{neck="Quanpur Necklace"}))
else
equip(set_combine(sets.midcast['Elemental Magic'],{neck="Quanpur Necklace"}))
end
end
end
There's probably a more elegant way to write this if you're familiar with Mote files, but this should work fine anyways if you don't mind having a few ugly lines.
If you'd prefer to do it the spell map way: Code
function job_get_spell_map(spell,default_spell_map)
## Rest of function up here, which is why we use elseif, if this is
## the only rule you have in your function, use "if"
elseif spell.skill == 'Elemental Magic' then
if LowNukes:contians(spell.english) then
return 'Low'
elseif spell.element == "Earth" then
return 'Earth'
else
return
end
end
end
And you'd name your set as sets.midcast['Elemental Magic']['Earth']
but then not differentiating between Low Tier on Earth spells on the bottom one, I agree the top version is better and cleaner.
By gargurty 2015-01-04 14:08:32
working like a charm now :) thanks for the tips.
btw anyone else having problem getting back in idle lately? Cos in some events my aftercast dont kick in after a spell.
Thinks its lag but just curious.
Bahamut.Malothar
Server: Bahamut
Game: FFXI
Posts: 396
By Bahamut.Malothar 2015-01-11 13:36:36
Been an issue I've been dealing with GS and Radial Arcana and Mending Halation. Both are more similar to pet abilities than they are just JAs, in that we use the JA, pet readies ability, then completes ability. GS doesn't delay things for this by itself unfortunately, and I'm having issues getting it coded correctly so that the JA enhancing gear stays equipped until the Luopan completes it's JA use.
I posted about it on the GS help thread awhile back and Byrth responded with using this:
Code function precast(spell)
if spell.name == "Mending Halation" then
equip({legs="Bagua Pants +1"})
disable('legs')
end
end
function pet_change(pet,gain_or_loss)
if not gain_or_loss then
enable('legs')
end
end
I've yet to be able to get this to work no matter where I put it. I've tried a few strings I've seen on Smn and Bst LUAs like
Code sets.aftercast = {}
sets.aftercast['Radial Arcana'] = {feet="Bagua Sandals +1"}
function aftercast(spell)
if spell.english:startswith('Radial') then
equip(sets.aftercast['Radial Arcana'])
else return
end
end
with no luck as well. Any suggestions, or perhaps just put it in *this section*? Kinda at my wits end getting this to work as I'd like. Missing out on 130+ MP from Radial is annoying.
By Selindrile 2015-01-12 10:05:38
Perhaps as simple as something to the tune of adding a wait after the disable and then an enable? instead of triggering it elsewhere?
And a check to make sure it's not on cooldown/amnesia so it doesn't lock without firing?
Will look into it more later.
Necro Bump Detected!
[38 days between previous and next post]
By gargurty 2015-02-19 12:58:25
i always like to reuse my posts, but anyone know how to add the new combined obi in motentens lua? Right now its not equiping and i have no clue on how to add or chanhge it? And i also noticed t5 spells are not in it too for geo :)
Necro Bump Detected!
[39 days between previous and next post]
By gargurty 2015-03-30 04:22:19
Bought me a pixie hairpin +1 last day and im wondering how i can equip it on dark enfeebles. Anyone got an idea. Tried the line above here and changed it too enfeenle magic but that didnt seem to work for me. SO right now i have it in my dark magic set but that want to work with dark enfeebles.
Ragnarok.Bepe
Server: Ragnarok
Game: FFXI
Posts: 200
By Ragnarok.Bepe 2015-04-01 17:35:41
On Mote's geo gs, does anyone know what the default bound key is for toggling through idle sets, i can't seem to find the appropriate key.
By Chimerawizard 2015-04-01 17:42:46
By ClaudeusXI 2015-04-20 03:43:25
Hello, can anyone please share with me how and where to implement the following. I posted this originally in gs support:
Hi, I'm basing this off of Bokura's GEO.lua, and I was wondering how to implement code that differentiates between low tier nukes (T1-2) and higher tier (T3+) so I can use different sets for this.
Also, how do I get it to differntiate between Geo- and Indicolure spells on midcast? I want to get those "indi-spell duration+" pieces in for those spells.
I was also having issues with staff/grip in midcast set; it won't equip them if I was wearing club/Shield. (staff/grip are removed in the version under).
Any comments about improvements (not related to gear) are also welcome.
Code function get_sets()
AccIndex = 1
AccArray = {"LowACC","MidACC","HighACC"} -- 3 Levels Of Accuracy Sets For Magic. Default ACC Set Is LowACC. Add More ACC Sets If Needed Then Create Your New ACC Below --
IdleIndex = 1
IdleArray = {"Movement","Refresh","Geomancy"} -- Default Idle Set Is Movement --
Armor = 'None'
define_geomancy_values()
Obi = 'OFF' -- Turn Default Obi ON or OFF Here --
Idris = 'ON' -- Set Idris ON or OFF Here --
target_distance = 5 -- Set Default Distance Here --
select_default_macro_book() -- Change Default Macro Book At The End --
Cure_Spells = {"Cure","Cure II","Cure III","Cure IV"} -- Cure Degradation --
Curaga_Spells = {"Curaga","Curaga II"} -- Curaga Degradation --
sc_map = {SC1 = "GeoTorpor", SC2 = "GeoLanguor", SC3 = "IndiFocus"} -- 3 Additional Binds. Can Change Whatever JA/WS/Spells You Like Here. Remember Not To Use Spaces. --
Non_Obi_Spells = S{
'Burn','Choke','Drown','Frost','Rasp','Shock','Impact','Anemohelix','Cryohelix',
'Geohelix','Hydrohelix','Ionohelix','Luminohelix','Noctohelix','Pyrohelix'}
Cities = 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","Nashmau","Tavanazian Safehold",
"Selbina","Mhaura","Norg","Eastern Adoulin","Western Adoulin","Kazham"}
-- Idle Sets --
sets.Idle = {}
sets.Idle.Refresh = {
main="Bolelabunga",
sub="Genbu's Shield",
range="Dunna",
head="Bagua Galero +1",
neck="Twilight Torque",
ear1="Ethereal Earring",
ear2="Loquac. Earring",
body="Geo. Tunic +1",
hands="Bagua Mitaines +1",
ring1="Defending Ring",
ring2="Patricius Ring",
back="Umbra Cape",
waist="Fucho-no-Obi",
legs="Assid. Pants +1",
feet="Geo. Sandals +1"}
sets.Idle.Movement = set_combine(sets.Idle.Refresh,{
})
sets.Idle.Geomancy = set_combine(sets.Idle.Refresh,{
main="Idris",
sub="Genbu's Shield",
head="Azimuth Hood",
neck="Twilight Torque",
hands="Geo. Mitaines +1",
ring1="Defending Ring",
back="Lifestream Cape",
feet="Bagua Sandals +1"})
sets.Resting = set_combine(sets.Idle.Movement,{})
-- PDT Set --
sets.PDT = {
main="Idris",
sub="Genbu's Shield",
range="Dunna",
head="Azimuth Hood",
neck="Twilight Torque",
ear1="Ethereal Earring",
ear2="Sanare Earring",
body="Geo. Tunic +1",
hands="Geo. Mitaines +1",
ring1="Defending Ring",
ring2="Patricus Ring",
back="Umbra Cape",
waist="Isa Belt",
legs="Hagondes Pants +1",
feet="Bagua Sandals +1"}
sets.Sublimation = {
main="Bolelabunga",
sub="Genbu's Shield",
head="Wivre Hairpin",
ear2="Loquac. Earring",
body="Geo. Tunic +1",
hands="Bagua Mitaines +1",
legs="Assid. Pants +1",
feet="Geo. Sandals +1"}
-- Precast Sets ---
sets.Precast = {}
-- FastCast Sets --
sets.Precast.FastCast = {
main="Idris",
sub="Genbu's Shield",
head="Nahtirah Hat",
neck="Jeweled Collar",
ear1="Andoaa Earring",
ear2="Loquac. Earring",
body="Anhur Robe",
hands="Otomi Gloves",
ring1="Weather. Ring",
ring2="Veneficium Ring",
back="Lifestream Cape",
waist="Witful Belt",
legs="Geo. Pants +1",
feet="Telchine Pigaches"}
-- Geomancy Precast --
sets.Precast.Geomancy = {
main="Idris",
sub="Genbu's Shield",
range="Dunna",
head="Nahtirah Hat",
neck="Jeweled Collar",
ear2="Loquac. Earring",
body="Anhur Robe",
hands="Geo. Mitaines +1",
ring1="Weather. Ring",
ring2="Veneficium Ring",
back="Lifestream Cape",
waist="Witful Belt",
legs="Geo. Pants +1",
feet="Telchine Pigaches"}
-- Elemental Staves --
sets.Precast.Thunder = {main='Idris'}
sets.Precast.Water = {main='Idris'}
sets.Precast.Fire = {main='Idris'}
sets.Precast.Ice = {main='Idris'}
sets.Precast.Wind = {main='Idris'}
sets.Precast.Earth = {main='Idris'}
sets.Precast.Light = {main='Idris'}
sets.Precast.Dark = {main='Idris'}
-- Precast Enhancing Magic --
sets.Precast['Enhancing Magic'] = set_combine(sets.Precast.FastCast,{
head="Umuthi Hat",
neck="Jeweled Collar",
waist="Siegel Sash"})
sets.Precast.Stoneskin = set_combine(sets.Precast['Enhancing Magic'],{hands="Carapacho Cuffs"})
-- Precast Elemental Magic --
sets.Precast['Elemental Magic'] = set_combine(sets.Precast.FastCast,{hands="Bagua Mitaines +1"})
-- Precast Cure Set --
sets.Precast.Cure = {
head="Nahtirah Hat",
neck="Jeweled Collar",
ear2="Loquac. Earring",
body="Heka's Kalasiris",
hands="Geo. Mitaines +1",
ring1="Weather. Ring",
ring2="Veneficium Ring",
back="Pahtli Cape",
waist="Witful Belt",
legs="Geo. Pants +1",
feet="Telchine Pigaches"}
-- Midcast Base Set --
sets.Midcast = {}
-- Cure Set --
sets.Midcast.Cure = {
main="Tamaxchi",
sub="Genbu's Shield",
head="Artsieq Hat",
neck="Nuna Gorget +1",
ear1="Lifestorm Earring",
ear2="Gifted Earring",
body="Heka's Kalasiris",
hands="Telchine Gloves",
ring1="Globidonta Ring",
ring2="Sangoma Ring",
back="Refraction Cape",
waist="Witful Belt",
legs="Assid. Pants +1",
feet="Telchine Pigaches"}
-- Curaga Set --
sets.Midcast.Curaga = {
main="Tamaxchi",
sub="Genbu's Shield",
head="Artsieq Hat",
neck="Nuna Gorget +1",
ear1="Lifestorm Earring",
ear2="Loquac. Earring",
body="Heka's Kalasiris",
hands="Telchine Gloves",
ring1="Aquasoul Ring",
ring2="Karka Ring",
back="Pahtli Cape",
waist="Pythia Sash +1",
legs="Geo. Pants +1",
feet="Geo. Sandals +1"}
-- Haste Set --
sets.Midcast.Haste = {
head="Nahtirah Hat",
neck="Jeweled Collar",
ear2="Loquac. Earring",
body="Azimuth Coat",
hands="Geo. Mitaines +1",
ring1="Weather. Ring",
ring2="Veneficium Ring",
back="Lifestream Cape",
waist="Witful Belt",
legs="Geo. Pants +1",
feet="Geo. Sandals +1"}
sets.Midcast['Enhancing Magic'] = {
head="Umuthi Hat",
neck="Jeweled Collar",
body="Anhur Robe",
hands="Telchine Gloves",
ring1="Weather. Ring",
ring2="Veneficium Ring",
waist="Sekhmet Corset",
feet="Umbani Boots"}
sets.Midcast.Stoneskin = set_combine(sets.Midcast['Enhancing Magic'],{
waist="Siegel Sash",
legs="Haven Hose"})
sets.Midcast.Cursna = set_combine(sets.Midcast.Haste,{
head="Nahtirah Hat",
ear2="Gifted Earring",
body="Bagua Tunic +1",
hands="Telchine Gloves",
ring1="Weather. Ring",
ring2="Sangoma Ring",
back="Refraction Cape",
waist="Witful Belt",
legs="Assid. Pants +1",
feet="Geo. Sandals +1"})
sets.Midcast.Stun = {
main="Idris",
sub="Genbu's Shield",
head="Nahtirah Hat",
neck="Twilight Torque",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="Artsieq Jubbah",
hands="Geo. Mitaines +1",
ring1="Weather. Ring",
ring2="Sangoma Ring",
back="Lifestream Cape",
waist="Witful Belt",
legs="Geo. Pants +1",
feet="Telchine Pigaches"}
sets.Midcast.Stun.MidACC = set_combine(sets.Midcast.Stun,{})
sets.Midcast.Stun.HighACC = set_combine(sets.Midcast.Stun.MidACC,{})
-- Dark Magic Sets --
sets.Midcast['Dark Magic'] = {
main="Idris",
sub="Genbu's Shield",
head="Bagua Galero +1",
neck="Eddy Necklace",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="Geo. Tunic +1",
hands="Azimuth Gloves",
ring1="Weather. Ring",
ring2="Sangoma Ring",
back="Refraction Cape",
waist="Fucho-no-Obi",
legs="Azimuth Tights",
feet="Helios Boots"}
sets.Midcast['Dark Magic'].MidACC = set_combine(sets.Midcast['Dark Magic'],{})
sets.Midcast['Dark Magic'].HighACC = set_combine(sets.Midcast['Dark Magic'].MidACC,{})
-- Elemental Sets --
sets.Midcast['Elemental Magic'] = {
main="Idris",
sub="Genbu's Shield",
head="Geo. Galero +1",
neck="Eddy Necklace",
ear1="Crematio Earring",
ear2="Psystorm Earring",
body="Bagua Tunic +1",
hands="Yaoyotl Gloves",
ring1="Weather. Ring",
ring2="Strendu Ring",
back="Refraction Cape",
waist="Yamabuki-no-Obi",
legs="Hagondes Pants +1",
feet="Umbani Boots"}
sets.Midcast['Elemental Magic'].MidACC = set_combine(sets.Midcast['Elemental Magic'],{})
sets.Midcast['Elemental Magic'].HighACC = set_combine(sets.Midcast['Elemental Magic'].MidACC,{})
-- Enfeebling Sets --
sets.Midcast['Enfeebling Magic'] = {
main="Idris",
sub="Genbu's Shield",
head="Artsieq Hat",
neck="Imbodla Necklace",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="Artsieq Jubbah",
hands="Azimuth Gloves",
ring1="Weather. Ring",
ring2="Globidonta Ring",
back="Refraction Cape",
waist="Tengu-no-Obi",
legs="Azimuth Tights",
feet="Bagua Sandals +1"}
sets.Midcast['Enfeebling Magic'].MidACC = set_combine(sets.Midcast['Enfeebling Magic'],{})
sets.Midcast['Enfeebling Magic'].HighACC = set_combine(sets.Midcast['Enfeebling Magic'].MidACC,{})
sets.Midcast.Impact = {
main="Idris",
sub="Genbu's Shield",
neck="Eddy Necklace",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
body="Twilight Cloak",
hands="Yaoyotl Gloves",
ring1="Weather. Ring",
ring2="Sangoma Ring",
back="Refraction Cape",
waist="Demonry Sash",
legs="Geo. Pants +1",
feet="Nares Clogs"}
-- Elemental Obi/Twilight Cape --
sets.Obi = {}
sets.Obi.Thunder = {back="Twilight Cape",waist='Rairin Obi'}
sets.Obi.Water = {back="Twilight Cape",waist='Suirin Obi'}
sets.Obi.Fire = {back="Twilight Cape",waist='Karin Obi'}
sets.Obi.Ice = {back="Twilight Cape",waist='Hyorin Obi'}
sets.Obi.Wind = {back="Twilight Cape",waist='Furin Obi'}
sets.Obi.Earth = {back="Twilight Cape",waist='Dorin Obi'}
sets.Obi.Light = {back="Twilight Cape",waist='Korin Obi'}
sets.Obi.Dark = {back="Twilight Cape",waist='Anrin Obi'}
-- JA Sets --
sets.JA = {}
sets.JA['Life Cycle'] = {body="Geo. Tunic +1"}
sets.JA.Bolster = {body="Bagua Tunic +1"}
sets.JA['Radial Arcana'] = {feet="Bagua Sandals +1"}
sets.JA['Full Circle'] = {
head="Azimuth Hood",
hands="Bagua Mitaines +1"}
-- Melee Set --
sets.Melee = set_combine(sets.Midcast.Haste,{
main="Idris",
sub="Genbu's Shield",
head="Bagua Galero +1",
neck="Asperity Necklace",
ear1="Ethereal Earring",
ear2="Brutal Earring",
body="Geo. Tunic +1",
hands="Bagua Mitaines +1",
ring1="Defending Ring",
ring2="Patricus Ring",
back="Mecisto. Mantle",
waist="Witful Belt",
legs="Assid. Pants +1",
feet="Bagua Sandals +1"})
-- WS Base Set --
sets.WS = {}
sets.WS["Hexa Strike"] = {}
sets.WS.Realmrazer = {}
sets.WS.Shattersoul = {}
end
function pretarget(spell,action)
if (string.find(spell.type,'Magic') or spell.type == "Ninjutsu" or spell.type == "Geomancy") and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
cancel_spell()
send_command('input /item "Echo Drops" <me>')
elseif spell.english:ifind("Cure") and player.mp<actualCost(spell.mp_cost) then
degrade_spell(spell,Cure_Spells)
elseif spell.english:ifind("Curaga") and player.mp<actualCost(spell.mp_cost) then
degrade_spell(spell,Curaga_Spells)
elseif string.find(spell.english,'Geo') and pet.isvalid then -- Change Any Geo Spells To Full Circle If You Have A Luopan Active --
cancel_spell()
send_command('input /ja "Full Circle" <me>')
elseif buffactive['Light Arts'] or buffactive['Addendum: White'] then
if spell.english == "Light Arts" and not buffactive['Addendum: White'] then
cancel_spell()
send_command('input /ja Addendum: White <me>')
elseif spell.english == "Manifestation" then
cancel_spell()
send_command('input /ja Accession <me>')
elseif spell.english == "Alacrity" then
cancel_spell()
send_command('input /ja Celerity <me>')
elseif spell.english == "Parsimony" then
cancel_spell()
send_command('input /ja Penury <me>')
end
elseif buffactive['Dark Arts'] or buffactive['Addendum: Black'] then
if spell.english == "Dark Arts" and not buffactive['Addendum: Black'] then
cancel_spell()
send_command('input /ja Addendum: Black <me>')
elseif spell.english == "Accession" then
cancel_spell()
send_command('input /ja Manifestation <me>')
elseif spell.english == "Celerity" then
cancel_spell()
send_command('input /ja Alacrity <me>')
elseif spell.english == "Penury" then
cancel_spell()
send_command('input /ja Parsimony <me>')
end
end
end
function precast(spell,action)
if spell.type:endswith('Magic') or spell.type == "Ninjutsu" then
if buffactive.silence or spell.target.distance > 16+target_distance then -- Cancel Magic or Ninjutsu If You Are Silenced or Out of Range --
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Silenced or Out of Casting Range]')
return
else
if string.find(spell.english,'Cur') and spell.english ~= "Cursna" then
equip(sets.Precast.Cure)
elseif spell.english == "Impact" then
equip(set_combine(sets.Precast.FastCast,{body="Twilight Cloak"}))
elseif string.find(spell.english,'Utsusemi') then
if buffactive['Copy Image (3)'] or buffactive['Copy Image (4)'] then
cancel_spell()
add_to_chat(123, spell.english .. ' Canceled: [3+ Images]')
return
else
equip(sets.Precast.FastCast)
end
elseif sets.Precast[spell.skill] then
equip(sets.Precast[spell.skill])
else
equip(sets.Precast.FastCast)
end
end
elseif spell.type == "WeaponSkill" then
if player.status ~= 'Engaged' then -- Cancel WS If You Are Not Engaged. Can Delete It If You Don't Need It --
cancel_spell()
add_to_chat(123,'Unable To Use WeaponSkill: [Disengaged]')
return
elseif sets.WS[spell.english] then
equip(sets.WS[spell.english])
end
elseif spell.type == "JobAbility" then
if sets.JA[spell.english] then
equip(sets.JA[spell.english])
end
elseif spell.type == "Geomancy" then
if Cities:contains(world.area) then
cancel_spell()
add_to_chat(123,'Unable To Use Geomancy In Town')
return
else
if buffactive.silence or spell.target.distance > 16+target_distance then -- Cancel Geomancy If You Are Silenced or Out of Range --
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Silenced or Out of Casting Range]')
return
else
display_geomancy_info(spell)
equip(sets.Precast.Geomancy)
end
end
elseif spell.english == 'Spectral Jig' and buffactive.Sneak then
cast_delay(0.2)
send_command('cancel Sneak')
end
if not spell.type == "Geomancy" and Idris == 'OFF' and sets.Precast[spell.element] then
equip(sets.Precast[spell.element])
end
if StunIndex == 1 then
equip(sets.Midcast.Stun)
end
end
function midcast(spell,action)
equipSet = {}
if spell.type:endswith('Magic') or spell.type == "Geomancy" or spell.type == 'Ninjutsu' then
equipSet = sets.Midcast
if string.find(spell.english,'Cure') then
equipSet = equipSet.Cure
elseif string.find(spell.english,'Cura') then
equipSet = equipSet.Curaga
elseif string.find(spell.english,'Banish') then
equipSet = set_combine(equipSet.Haste,{})
elseif spell.english == "Stoneskin" then
if buffactive.Stoneskin then
send_command('@wait 2.8;cancel stoneskin')
end
equipSet = equipSet.Stoneskin
elseif spell.english == "Sneak" then
if spell.target.name == player.name and buffactive['Sneak'] then
send_command('cancel sneak')
end
equipSet = equipSet.Haste
elseif string.find(spell.english,'Utsusemi') then
if spell.english == 'Utsusemi: Ichi' and (buffactive['Copy Image'] or buffactive['Copy Image (2)']) then
send_command('@wait 1.7;cancel Copy Image*')
end
equipSet = equipSet.Haste
elseif spell.english == 'Monomi: Ichi' then
if buffactive['Sneak'] then
send_command('@wait 1.7;cancel sneak')
end
equipSet = equipSet.Haste
else
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if equipSet[spell.skill] then
equipSet = equipSet[spell.skill]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if equipSet[spell.type] then
equipSet = equipSet[spell.type]
end
if (spell.skill == 'Elemental Magic' or string.find(spell.english,'Cur') or string.find(spell.english,'Bio') or string.find(spell.english,'Dia') or spell.english == 'Aspir' or spell.english == 'Drain') and not Non_Obi_Spells:contains(spell.english) and (world.day_element == spell.element or world.weather_element == spell.element) and sets.Obi[spell.element] and Obi == 'ON' and spell.english ~= "Cursna" then -- Use Obi Toggle To Equip Normal Waist Gear --
equipSet = set_combine(equipSet,sets.Obi[spell.element])
end
end
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
equip(equipSet)
if StunIndex == 1 then
equip(sets.Midcast.Stun)
end
end
function aftercast(spell,action)
if not spell.interrupted then
if spell.english == "Sleep II" then-- Sleep II Countdown --
send_command('wait 60;input /echo Sleep Effect: [WEARING OFF IN 30 SEC.];wait 15;input /echo Sleep Effect: [WEARING OFF IN 15 SEC.];wait 10;input /echo Sleep Effect: [WEARING OFF IN 5 SEC.]')
elseif spell.english == "Sleep" or spell.english == "Sleepga" then -- Sleep & Sleepga Countdown --
send_command('wait 30;input /echo Sleep Effect: [WEARING OFF IN 30 SEC.];wait 15;input /echo Sleep Effect: [WEARING OFF IN 15 SEC.];wait 10;input /echo Sleep Effect: [WEARING OFF IN 5 SEC.]')
elseif spell.english == "Banish II" then -- Banish II Countdown --
send_command('wait 20;input /echo Banish Effect: [WEARING OFF IN 10 SEC.]')
end
end
status_change(player.status)
end
function status_change(new,old)
if Armor == 'PDT' then
equip(sets.PDT)
elseif buffactive["Sublimation: Activated"] then
equip(sets.Sublimation)
elseif new == 'Engaged' then
equip(sets.Melee)
elseif new == 'Idle' then
equip(sets.Idle[IdleArray[IdleIndex]])
elseif new == 'Resting' then
equip(sets.Resting)
end
if StunIndex == 1 then
equip(sets.Midcast.Stun)
end
end
function buff_change(buff,gain)
buff = string.lower(buff)
if buff == 'weakness' then -- Weakness Timer --
if gain then
send_command('timers create "Weakness" 300 up')
else
send_command('timers delete "Weakness"')
end
end
if not midaction() then
status_change(player.status)
end
end
-- In Game: //gs c (command), Macro: /console gs c (command), Bind: gs c (command) --
function self_command(command)
if command == 'C1' then -- Magic Accuracy Toggle --
AccIndex = (AccIndex % #AccArray) + 1
add_to_chat(158,'Magic Accuracy Level: ' .. AccArray[AccIndex])
status_change(player.status)
elseif command == 'C2' then -- Stun Toggle --
if StunIndex == 1 then
StunIndex = 0
add_to_chat(123,'Stun Set: [Unlocked]')
else
StunIndex = 1
add_to_chat(158,'Stun Set: [Locked]')
end
status_change(player.status)
elseif command == 'C5' then -- Auto Update Gear Toggle --
status_change(player.status)
add_to_chat(158,'Auto Update Gear')
elseif command == 'C3' then -- Obi Toggle --
if Obi == 'ON' then
Obi = 'OFF'
add_to_chat(123,'Obi: [OFF]')
else
Obi = 'ON'
add_to_chat(158,'Obi: [ON]')
end
status_change(player.status)
elseif command == 'C7' then -- PDT Toggle --
if Armor == 'PDT' then
Armor = 'None'
add_to_chat(123,'PDT Set: [Unlocked]')
else
Armor = 'PDT'
add_to_chat(158,'PDT Set: [Locked]')
end
status_change(player.status)
elseif command == 'C8' then -- Distance Toggle --
if player.target.distance then
target_distance = math.floor(player.target.distance*10)/10
add_to_chat(158,'Distance: '..target_distance)
else
add_to_chat(123,'No Target Selected')
end
elseif command == 'C6' then -- Idle Toggle --
IdleIndex = (IdleIndex % #IdleArray) + 1
add_to_chat(158,'Idle Set: '..IdleArray[IdleIndex])
status_change(player.status)
elseif command:match('^SC%d$') then
send_command('//' .. sc_map[command])
end
end
function actualCost(originalCost)
if buffactive["Penury"] then
return originalCost*.5
elseif buffactive["Light Arts"] then
return originalCost*.9
else
return originalCost
end
end
function degrade_spell(spell,degrade_array)
spell_index = table.find(degrade_array,spell.name)
if spell_index > 1 then
new_spell = degrade_array[spell_index - 1]
change_spell(new_spell,spell.target.raw)
add_to_chat(8,spell.name..' Canceled: ['..player.mp..'/'..player.max_mp..'MP::'..player.mpp..'%] Casting '..new_spell..' instead.')
end
end
function change_spell(spell_name,target)
cancel_spell()
send_command('//'..spell_name..' '..target)
end
function define_geomancy_values()
geomancy = {
Frailty = {bonus="Defense Down"},
Torpor = {bonus="Evasion Down"},
Languor = {bonus="Magic Evasion Down"},
Focus = {bonus="Magic Accuracy"},
Malaise = {bonus="Magic Defense Down"},
Precision = {bonus="Accuracy"},
Refresh = {bonus="Refresh"},
Fade = {bonus="Magic Attack Down"},
Wilt = {bonus="Attack Down"},
Vex = {bonus="Magic Accuracy Down"},
Slip = {bonus="Accuracy Down"},
Acumen = {bonus="Magic Attack"},
Fend = {bonus="Magic Defense"},
Fury = {bonus="Attack"},
Attunement = {bonus="Magic Evasion"},
Voidance = {bonus="Evasion"},
Barrier = {bonus="Defense"}
}
end
function display_geomancy_info(spell)
geoType=nil
string.gsub(spell.english.."-","-(.-)-",function(geo) geoType=geo end)
geoInfo = geomancy[geoType]
if geoInfo then
add_to_chat(158, spell.english..' = '..tostring(geoInfo.bonus))
end
end
function sub_job_change(newSubjob, oldSubjob)
select_default_macro_book()
end
function set_macro_page(set,book)
if not tonumber(set) then
add_to_chat(123,'Error setting macro page: Set is not a valid number ('..tostring(set)..').')
return
end
if set < 1 or set > 10 then
add_to_chat(123,'Error setting macro page: Macro set ('..tostring(set)..') must be between 1 and 10.')
return
end
if book then
if not tonumber(book) then
add_to_chat(123,'Error setting macro page: book is not a valid number ('..tostring(book)..').')
return
end
if book < 1 or book > 20 then
add_to_chat(123,'Error setting macro page: Macro book ('..tostring(book)..') must be between 1 and 20.')
return
end
send_command('@input /macro book '..tostring(book)..';wait .1;input /macro set '..tostring(set))
else
send_command('@input /macro set '..tostring(set))
end
end
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'RDM' then
set_macro_page(1, 1)
elseif player.sub_job == 'BLM' then
set_macro_page(1, 1)
elseif player.sub_job == 'WHM' then
set_macro_page(1, 1)
else
set_macro_page(1, 1)
end
end
I didn't see any staff or grip in your lua so I can't help with that.
As for the low-tier nukes and Indi spells I'm sure you can work this into your lua somehow.
Code
lowTierNukes = S{'Stone', 'Water', 'Aero', 'Fire', 'Blizzard', 'Thunder',
'Stone II', 'Water II', 'Aero II', 'Fire II', 'Blizzard II', 'Thunder II',
'Stone III', 'Water III', 'Aero III', 'Fire III', 'Blizzard III', 'Thunder III',
'Stonega', 'Waterga', 'Aeroga', 'Firaga', 'Blizzaga', 'Thundaga',
'Stonega II', 'Waterga II', 'Aeroga II', 'Firaga II', 'Blizzaga II', 'Thundaga II'}
sets.Midcast['Elemental Magic'] = {} -- INT and MAB gear.
sets.Midcast.LowTierNuke = {} -- +Magic Damage gear.
sets.Midcast.Geomancy = {range="Nepote Bell"}
sets.Midcast.Geomancy.Indicolure = {range="Nepote Bell", legs="Bagua Pants"}
function midcast(spell,action)
if spell.skill == 'Elemental Magic' then
if lowTierNukes:contains(spell.english) then
equipSet = set_combine(equipSet, sets.Midcast.LowTierNuke)
else
equipSet = set_combine(equipSet, equipSet[spell.skill])
end
elseif spell.skill == 'Geomancy' then
if spell.english:startswith('Indi') then
equipSet = set_combine(equipSet, sets.Midcast.Geomancy.Indicolure)
else
equipSet = set_combine(equipSet, sets.Midcast.Geomancy)
end
end
end
The above response was posted, but I don't know how to insert it to fit in with the lua I am trying to use.
Also, is it possible that the staff/grip that was included didn't swap in due to lag? I was trying to use Marin Staff +1 and mephitis grip.
By gargurty 2015-04-20 09:33:49
This is my current geo lua: Code -------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
-- Initialization function for this job file.
function get_sets()
mote_include_version = 2
-- Load and initialize the include file.
include('Mote-Include.lua')
end
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
indi_timer = ''
indi_duration = 255
end
-------------------------------------------------------------------------------------------------------------------
-- User setup functions for this job. Recommend that these be overridden in a sidecar file.
-------------------------------------------------------------------------------------------------------------------
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
state.OffenseMode:options('None', 'Normal','Accuracy','Dual')
state.CastingMode:options('Normal','Accuracy')
state.IdleMode:options('Normal', 'PDT', 'MDT')
gear.default.obi_waist = "yamabuki-no-obi"
gear.default.obi_back = "Toro Cape"
gear.default.obi_ring = "Shiva Ring"
select_default_macro_book()
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Precast sets
--------------------------------------
-- Precast sets to enhance JAs
sets.precast.JA.Bolster = {body="Bagua Tunic +1"}
sets.precast.JA['Life cycle'] = {body="Geomancy Tunic +1",
head="Azimuth hood +1"
}
sets.precast.JA['Curative Recantation'] = {hands="Bagua Mitaines +1"}
sets.precast.JA['Mending Halation'] = {legs="Bagua Pants +1"}
sets.precast.JA['Radial Arcana'] = {feet="Bagua Sandals +1"}
sets.precast.JA['Primal Zeal'] = {head="Bagua galero +1"}
sets.precast.JA['Cardinal Chant'] = {head="geomancy galero +1"}
-- Fast cast sets for spells
sets.precast.FC = {
main="Marin staff +1",
sub="vivid strap",
head="Nahtirah Hat",
body="Vanir Cotehardie",
hands="Helios Gloves",
legs="Geo. Pants +1",
feet="Regal Pumps +1",
neck="Jeweled Collar",
waist="Witful Belt",
left_ear="Enchntr. Earring +1",
right_ear="Loquac. Earring",
left_ring="Prolix Ring",
right_ring="lebeche Ring",
back="Lifestream Cape",
}
sets.precast.FC.Cure = set_combine(sets.precast.FC, {
main="Vejovis Wand +1",
sub="Genbu's Shield",
body="Heka's Kalasiris",
waist="Acerbic Sash +1",
back="Pahtli Cape",
})
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {
head="Umuthi Hat",
hands="Carapacho Cuffs",
waist="Siegel Sash",
})
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {
main="Ngqoqwanb",
hands="Bagua Mitaines +1",
neck="Stoicheion Medal",
})
sets.precast.FC.Impact = set_combine(sets.precast.FC['Elemental Magic'], {head=empty,body="Twilight Cloak"})
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {
ammo="Hasty Pinion +1",
head="telchine cap",
body="helios jacket",
hands="telchine Gloves",
legs="telchine braconi",
feet="telchine pigaches",
neck="fotia Gorget",
waist="fotia Belt",
left_ear="Moonshade Earring",
right_ear="Brutal Earring",
left_ring="levia. Ring",
right_ring="levia. Ring",
back="Refraction Cape",
}
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Flash Nova'] = set_combine(sets.precast.WS,{
ammo="Memoria sachet",
head="Helios Bandt",
body="Azimuth Coat +1",
hands="Hagondes Cuffs +1",
legs="Hagondes Pants +1",
feet="helios Boots",
neck="Eddy Necklace",
waist="yamabuki-no-obi",
left_ear="Friomisi Earring",
right_ear="crematio Earring",
left_ring="Shiva Ring",
right_ring=gear.ElementalRing,
back=gear.ElementalCape,})
sets.precast.WS['Black Halo'] = sets.precast.WS['Flash Nova']
sets.precast.WS['Aeolian Edge'] = set_combine(sets.precast.WS['Flash Nova'],{back="Kaikias' cape",})
sets.precast.WS['Gust Slash'] =sets.precast.WS['Flash Nova']
sets.precast.WS['Starlight'] = sets.precast.WS['Flash Nova']
sets.precast.WS['Moonlight'] = sets.precast.WS['Flash Nova']
--------------------------------------
-- Midcast sets
--------------------------------------
-- Base fast recast for spells
sets.midcast.FastRecast =set_combine(sets.midcast.fastcast)
sets.midcast.Regen = set_combine(sets.midcast.fastcast, {
main="bolelabunga",
body="Telchine Chas."})
sets.midcast['Enhancing Magic']={
main="Kirin's Pole",
sub="Fulcio Grip",
head="Umuthi Hat",
hands="bagua mitaines +1",
body={ name="Telchine Chas.", augments={'Mag. Acc.+12 "Mag.Atk.Bns."+12','"Conserve MP"+4','Enh. Mag. eff. dur. +4',}},
legs="bagua Pants +1",
feet="helios Boots",
neck="Colossus's Torque",
waist="Cascade Belt",
left_ear="Andoaa Earring",
right_ear="Magnetic Earring",
back="Merciful Cape",
}
sets.midcast.Refresh = set_combine(sets.midcast['Enhancing Magic'], {
back="grapevine cape"})
sets.midcast.Aquaveil = set_combine(sets.midcast['Enhancing Magic'], {
waist="Emphatikos rope"})
sets.midcast.Geomancy ={
main="Venabulum",
sub="Wizzan Grip",
range="Dunna",
head="Azimuth hood +1",
body="Bagua Tunic +1",
hands="Geo. Mitaines +1",
legs="azimuth tights +1",
feet="azimuth gaiters +1",
waist="Austerity Belt +1",
left_ear="magnetic Earring",
right_ear="Gifted Earring",
right_ring="Renaye Ring",
back="Lifestream Cape",
}
sets.midcast.Geomancy.Indi =set_combine(sets.midcast.Geomancy, {legs="bagua pants +1"})
sets.midcast.Cure = {
main="Tamaxchi",
sub="Genbu's Shield",
head="Geomancy galero +1",
body="Heka's Kalasiris",
hands="telchine Gloves",
legs="Mes'yohi slacks",
feet="Regal Pumps +1",
neck="Colossus's Torque",
waist="Hachirin-No-Obi",
left_ear="Gifted Earring",
right_ear="Magnetic Earring",
left_ring="Sirona's Ring",
right_ring=gear.ElementalRing,
back=gear.ElementalCape,
}
sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {
neck="Stone Gorget",
waist="siegel sash",
right_ear="Earthcry Earring",
})
sets.midcast.Curaga = sets.midcast.Cure
sets.midcast.Protectra = {ring1="Sheltered Ring"}
sets.midcast.Shellra = {ring1="Sheltered Ring"}
-- Custom Spell Classes
sets.midcast['Enfeebling Magic'] = {
main="Marin staff +1",
sub="Mephitis Grip",
ammo="Memoria sachet",
head="Artsieq Hat",
body="Ischemia Chasu.",
hands="azimuth gloves +1",
legs="Mes'yohi slacks",
feet="bagua sandals +1",
neck="imbodla necklace",
waist="yamabuki-no-obi",
left_ear="Gwati Earring",
right_ear="Enchntr. Earring +1",
left_ring="Shiva Ring",
right_ring="Shiva Ring",
back="lifestream Cape",
}
sets.midcast.IntEnfeebles = set_combine(sets.midcast['Enfeebling Magic'], {
})
sets.midcast.ElementalEnfeeble = sets.midcast['Enfeebling Magic']
sets.midcast['Dark Magic'] = {
main="Marin staff +1",
sub="Caecus Grip",
ammo="Memoria sachet",
head="Pixie hairpin +1",
body="Geo. Tunic +1",
hands="azimuth gloves +1",
legs="Azimuth Tights +1",
feet="helios Boots",
neck="Aesir Torque",
waist="Yamabuki-no-Obi",
left_ear="Abyssal Earring",
right_ear="Gwati Earring",
left_ring="shiva Ring",
right_ring="sangoma Ring",
back="Merciful Cape",
}
sets.midcast.Drain = set_combine(sets.midcast['Dark Magic'], {
waist="Austerity Belt +1",
left_ear="Abyssal Earring",
right_ear="Hirudinea Earring",
right_ring="Excelsis Ring",
})
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Stun = sets.precast.FC
sets.midcast.Bolster = {body="Bagua Tunic +1"}
sets.midcast['Life Cycle'] = {body="Geo. Tunic +1",
head="Azimuth hood +1"}
sets.midcast['Mending Halation'] = {legs="Bagua Pants +1"}
sets.midcast['Radial Arcana'] = {feet="Bagua Sandals +1"}
sets.midcast.Bolster.Pet = {body="Bagua Tunic +1"}
sets.midcast['Life Cycle'].Pet = {body="Geo. Tunic +1",
head="Azimuth hood +1"}
sets.midcast['Mending Halation'].Pet = {legs="Bagua Pants +1"} sets.midcast.Bolster.Pet.Indi = {body="Bagua Tunic +1"}
sets.midcast['Life Cycle'].Pet.Indi = {body="Geo. Tunic +1",
head="Azimuth hood +1"}
sets.midcast['Mending Halation'].Pet.Indi = {legs="Bagua Pants +1"}
-- Elemental Magic sets
sets.midcast['Elemental Magic']= {
main="Marin Staff +1",
sub="elder's Grip +1",
ammo="ghastly tathlum",
head="Helios Band",
body="Azimuth Coat +1",
hands="Hagondes Cuffs +1",
legs="Hagondes Pants +1",
feet="Helios Boots",
neck="Eddy Necklace",
waist=gear.ElementalObi,
left_ear="Friomisi Earring",
right_ear="crematio Earring",
left_ring="shiva Ring",
right_ring=gear.ElementalRing,
back=gear.ElementalCape,
}
sets.midcast['Elemental Magic']['Accuracy']=set_combine(sets.midcast['Elemental Magic'], {
})
sets.midcast.Impact = {
main="Marin staff +1",
sub="Elder's Grip +1",
ammo="Memoria sachet",
head=empty,
body="Twilight Cloak",
hands="azimuth gloves +1",
legs="Azimuth Tights +1",
feet="Helios Boots",
neck="Eddy Necklace",
waist=gear.ElementalObi,
left_ear="Gwati Earring",
right_ear="Crematio Earring",
left_ring="Shiva Ring",
right_ring="Shiva Ring",
back="Toro Cape",
}
--------------------------------------
-- Idle/resting/defense/etc sets
--------------------------------------
-- Resting sets
sets.resting = {
main="Bolelabunga",
sub="Genbu's Shield",
range="Dunna",
body="Respite Cloak",
hands="Bagua Mitaines +1",
legs="Assid. Pants +1",
feet="Geo. Sandals +1",
neck="Twilight Torque",
waist="Fucho-no-Obi",
left_ear="Merman's Earring",
right_ear="Merman's Earring",
left_ring="Sheltered Ring",
right_ring="Renaye Ring",
back="Kumbira Cape",
}
-- Idle sets
sets.idle = sets.resting
sets.idle.PDT = {
main="Mafic cudgel",
sub="Genbu's Shield",
head="Hagondes Hat +1",
neck="Twilight Torque",
ear1="Merman's Earring",
ear2="Merman's Earring",
body="Hagondes Coat +1",
hands="hagondes cuffs +1",
ring1="shadow Ring",
ring2="dark Ring",
back="shadow mantle",
waist="Flax Sash",
legs="hagondes Pants +1",
feet="hagondes sabots +1"}
sets.idle.MDT = set_combine(sets.idle.PDT, {
main="marine staff +1",
sub="vallus grip",})
-- .Pet sets are for when Luopan is present.
sets.idle.Pet = set_combine(sets.resting, {main={ name="Nehushtan", augments={'Pet: DEF+13','Pet: "Regen"+3','STR+15 CHR+15',}},
sub="Genbu's Shield",
head="Azimuth hood +1",
body={ name="Telchine Chas.", augments={'Pet: Accuracy+18 Pet: Rng. Acc.+18','Pet: "Regen"+2',}},
legs="helios spats",
hands={ name="Helios Gloves", augments={'Pet: Accuracy+19 Pet: Rng. Acc.+19','Pet: "Regen"+3',}},
feet="Bagua Sandals +1",
waist="Isa Belt",
back="Lifestream Cape",
ear1="Handler's Earring +1",
})
sets.idle.PDT.Pet = set_combine(sets.idle.PDT, {main={ name="Nehushtan", augments={'Pet: DEF+13','Pet: "Regen"+3','STR+15 CHR+15',}},
sub="Genbu's Shield",
head="Azimuth hood +1",
body={ name="Telchine Chas.", augments={'Pet: Accuracy+18 Pet: Rng. Acc.+18','Pet: "Regen"+2',}},
hands={ name="Helios Gloves", augments={'Pet: Accuracy+19 Pet: Rng. Acc.+19','Pet: "Regen"+3',}},
legs="helios spats",
feet="Bagua Sandals +1",
waist="Isa Belt",
back="Lifestream Cape",
ear1="Handler's Earring +1",
})
sets.idle.MDT.Pet = set_combine(sets.idle.MDT, {main={ name="Nehushtan", augments={'Pet: DEF+13','Pet: "Regen"+3','STR+15 CHR+15',}},
sub="Genbu's Shield",
head="Azimuth hood +1",
body={ name="Telchine Chas.", augments={'Pet: Accuracy+18 Pet: Rng. Acc.+18','Pet: "Regen"+2',}},
hands={ name="Helios Gloves", augments={'Pet: Accuracy+19 Pet: Rng. Acc.+19','Pet: "Regen"+3',}},
legs="helios spats",
feet="Bagua Sandals +1",
waist="Isa Belt",
back="Lifestream Cape",
ear1="Handler's Earring +1",
})
-- .Indi sets are for when an Indi-spell is active.
sets.idle.Indi = sets.resting
sets.idle.PDT.Indi = sets.idle.PDT
sets.idle.MDT.Indi = sets.idle.MDT
sets.idle.PDT.Pet.Indi = sets.idle.PDT.Pet
sets.idle.MDT.Pet.Indi = sets.idle.MDT.Pet
sets.idle.Town = {
main="Nodal Wand",
sub="Genbu's Shield",
range="Dunna",
head="Azimuth Hood +1",
body="Azimuth Coat +1",
hands="Azimuth Gloves +1",
legs="Azimuth Tights +1",
feet="Azimuth Gaiters +1",
neck="Twilight Torque",
waist="Fucho-no-Obi",
left_ear="Merman's Earring",
right_ear="Merman's Earring",
left_ring="Sheltered Ring",
right_ring="Renaye Ring",
back="Lifestream Cape",
}
sets.idle.Weak = sets.resting
-- Defense sets
sets.defense.PDT = sets.idle.PDT
sets.defense.MDT = sets.idle.MDT
sets.Kiting = {feet="Geo. Sandals +1"}
sets.latent_refresh = {waist="Fucho-no-obi"}
--------------------------------------
-- Engaged sets
--------------------------------------
-- Variations for TP weapon and (optional) offense/defense modes. Code will fall back on previous
-- sets if more refined versions aren't defined.
-- If you create a set with both offense and defense modes, the offense mode should be first.
-- EG: sets.engaged.Dagger.Accuracy.Evasion
-- Normal melee group
sets.engaged = {
main={ name="Nehushtan", augments={'Accuracy+7 Attack+7','"Dbl.Atk."+3','DMG:+20',}},
sub="Genbu's Shield",
ammo="Hasty Pinion +1",
head="telchine cap",
body="helios jacket",
hands="telchine gloves",
legs="telchine braconi",
feet="telchine pigaches",
neck="Asperity Necklace",
waist="cetl Belt",
left_ear="Steelflash Earring",
right_ear="Bladeborn Earring",
left_ring="rajas Ring",
right_ring="k'ayres ring",
back="Kayapa Cape",
}
sets.engaged.Accuracy = set_combine(sets.engaged,{
neck="Iqabi Necklace",
right_ear="Zennaroi Earring",
waist="Olseni Belt",
left_ring="supershear EarRing",
right_ring="beeline ring",
} )
sets.engaged.Dual = set_combine(sets.engaged,{
sub="Tamaxchi",
left_ear="Heartseeker Earring",
right_ear="Dudgeon Earring",
waist="shetal stone",
} )
--------------------------------------
-- Custom buff sets
--------------------------------------
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
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
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for non-casting events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
if player.indi and not classes.CustomIdleGroups:contains('Indi')then
classes.CustomIdleGroups:append('Indi')
handle_equipping_gear(player.status)
elseif classes.CustomIdleGroups:contains('Indi') and not player.indi then
classes.CustomIdleGroups:clear()
handle_equipping_gear(player.status)
end
end
function job_state_change(stateField, newValue, oldValue)
if stateField == 'Offense Mode' then
if newValue == 'Dual' then
disable('main','sub','range')
else
enable('main','sub','range')
end
end
end
-- Run after the general midcast() is done.
function job_post_midcast(spell, action, spellMap, eventArgs)
if spell.skill == 'Elemental Magic' then
if spell.element == 'Earth' then
equip(sets.midcast['Elemental Magic'], {neck="Quanpur Necklace"})
elseif spell.element == 'Ice' then
equip(sets.midcast['Elemental Magic'], {main="Ngqoqwanb"})
elseif spell.element == 'Wind' then
equip(sets.midcast['Elemental Magic'], {Main="Marin Staff +1", Back="Kaikias' Cape"})
end
if spell.element == world.day_element or spell.element == world.weather_element then
equip(sets.midcast['Elemental Magic'], {waist="Hachirin-No-Obi"})
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements standard library decisions.
-------------------------------------------------------------------------------------------------------------------
function job_get_spell_map(spell, default_spell_map)
if spell.action_type == 'Magic' then
if spell.skill == 'Enfeebling Magic' then
if spell.type == 'WhiteMagic' then
return 'MndEnfeebles'
else
return 'IntEnfeebles'
end
elseif spell.skill == 'Geomancy' then
if spell.english:startswith('Indi') then
return 'Indi'
end
elseif spell.skill == 'Elemental Magic' then
end
end
end
function customize_idle_set(idleSet)
if player.mpp < 51 then
idleSet = set_combine(idleSet, sets.latent_refresh)
end
return idleSet
end
-- Called by the 'update' self-command.
function job_update(cmdParams, eventArgs)
classes.CustomIdleGroups:clear()
if player.indi then
classes.CustomIdleGroups:append('Indi')
end
end
-- Function to display the current relevant user state when doing an update.
function display_current_job_state(eventArgs)
display_current_caster_state()
eventArgs.handled = true
end
-- MAKE A MACRO : /tell <me> check
function open_coffer()
CofferType = "Velkk Coffer"
if player.inventory[CofferType] then
NCoffer = player.inventory[CofferType].count
bag = windower.ffxi.get_bag_info(0).count
max = windower.ffxi.get_bag_info(0).max
spots = max-bag
if spots > 0 then
add_to_chat(204, '*-*-*-*-*-*-*-*-* [ '..NCoffer..'x '..CofferType..' to open - Inventory('..bag..'/'..max..') ] *-*-*-*-*-*-*-*-*')
local nextcommand = ""
for i=1, spots do
nextcommand = nextcommand .. 'input /item "'..CofferType..'" <me>; wait 2;'
end
nextcommand = nextcommand .. 'input /tell '..player.name..' check'
send_command(nextcommand)
else
add_to_chat(204, '*-*-*-*-*-*-*-*-* [ Inventory('..bag..'/'..max..') ] *-*-*-*-*-*-*-*-*')
end
else
add_to_chat(204, '*-*-*-*-*-*-*-*-* [ No '..CofferType..' in inventory ] *-*-*-*-*-*-*-*-*')
end
end
windower.register_event('chat message', function(original, sender, mode, gm)
local match
if sender == player.name then
if original == "check" then
open_coffer()
end
end
return sender, mode, gm
end)
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
set_macro_page(1, 1)
end[table]
[/table]
Still needs a bit off work, to clean it up tho. Main layout os motenten, but it still needs a low tier high tier line, and no clue on how to add it. Also im looking to add a status in it. For when im poisoned i wanna nuke with mindmelter. But also for that i dont know how to add it in here.
Help would be welcom :)
anyone got good geo lua for me. The one i use now doesnt have a macc, enhancing or stoneskin inserted and i dont know how to make it myself.
|
|