|
Gearswap Support Thread
By Faelar 2016-04-14 11:51:23
Ragnarok.Flippant said: »spell.prefix will return the full prefix to the action, like 'magic' instead of 'ma'.
It will also never be 'Cur' or 'Cure' because those are in the name of the spell, not the prefix (the prefix for these is still 'magic'). Instead, you want to know if the name of the spell contains those letters. One option is to use the find method.
Code function midcast(spell)
if string.find(spell.english,"Cur") and spell.english ~= "Cursna" then
-- Magic Usage
equip(sets.Cure)
end
end
Note that you don't also have to look for "Cure" because "Cur" is a part of "Cure" already. The second part, "spell.english ~= "Cursna"" means if the name of the spell is NOT Cursna, since you don't want to equip your cure sets for that. Alternatively, you can search for "Cure" or "Cura", which would include cures, curas, and curagas, and exclude Cursna.
Also, you have no closing brace for your sets.Idle set.
I'm completely new to this xD
I thought it would cover any spell with Cur in it, such as Cure, Cura, and Curaga. I didn't think of Cursna. I could just do Cure and Curaga and it'll cover all of those, right?
Something like this:
Code function midcast(spell)
if string.find(spell.english,"Cure" or "Curaga" or "Cura") then
-- Magic Usage
equip(sets.Cure)
end
end
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-04-14 12:09:56
You can, but the syntax isn't correct. Unfortunately, you'd have to write it out:
Code if string.find(spell.english,"Cure") or string.find(spell.english,"Cura") then
Again, you don't need to look for "Curaga" because "Cura" is already in there.
[+]
By Faelar 2016-04-14 12:12:32
Ragnarok.Flippant said: »You can, but the syntax isn't correct. Unfortunately, you'd have to write it out:
Code if string.find(spell.english,"Cure") or string.find(spell.english,"Cura") then
Again, you don't need to look for "Curaga" because "Cura" is already in there.
Ah, right. Again, didn't think of that.
So for a VERY basic file, this is what I have (with yours and Bryth's help):
Code function get_sets()
-- This set will be equipped when idle
sets.Idle = {
main="Owleyes",
sub="Genbu's Shield",
ammo="Incantor Stone",
head="Orison Cap +2",
body="Orison Bliaud +2",
hands="Serpentes Cuffs",
legs="Orsn. Pantaln. +2",
feet="Serpentes Sabots",
waist="Cleric's Belt",
neck="Twilight Torque",
left_ear="Loquac. Earring",
right_ear="Orison Earring",
left_ring="Omega Ring",
right_ring="Sirona's Ring",
}
-- This set will be equipped before magic is cast
sets.FastCast = {
ammo="Incantor Stone",
head="Walahra Turban",
body="Goliard Saio",
hands="Blessed Mitts",
legs="Blessed Trousers",
feet="Orsn. Duckbills +2",
waist="Austerity Belt",
neck="Orison Locket",
left_ear="Loquac. Earring",
right_ear="Orison Earring",
left_ring="Omega Ring",
right_ring="Sirona's Ring",
}
-- This set will be equipped before healing magic is cast
sets.Cure = {
main="Tefnut Wand",
sub="Genbu's Shield",
ammo="Incantor Stone",
head="Orison Cap +2",
body="Facio Bliaut",
hands="Augur's Gloves",
legs="Orsn. Pantaln. +2",
feet="Orsn. Duckbills +2",
waist="Austerity Belt",
neck="Orison Locket",
left_ear="Loquac. Earring",
right_ear="Orison Earring",
left_ring="Omega Ring",
right_ring="Sirona's Ring",
}
end
function precast(spell)
if spell.prefix == '/ma' then
-- Magic precast
equip(sets.FastCast)
end
end
function midcast(spell)
if string.find(spell.english,"Cure") or string.find(spell.english,"Cura") then
-- Magic Usage
equip(sets.Cure)
end
end
function aftercast(spell)
if player.status=='Idle' then
equip(sets.Idle)
end
end
Look good? Will it work?
Serveur: Asura
Game: FFXI
Posts: 2507
By Asura.Calatilla 2016-04-14 12:38:37
Wow, you got a wally turban in fastcast, brings back memories lol
By Faelar 2016-04-14 12:39:58
Wow, you got a wally turban in fastcast, brings back memories lol
I mentioned it was very old gear, just returned to the game after 5 years.
Where do I place the lua file for it to be recognized in-game?
Serveur: Asura
Game: FFXI
Posts: 2507
By Asura.Calatilla 2016-04-14 12:43:53
I wasn't picking on you lol, just haven't seem one of those in awhile. Also I have no idea, I'm as lost as you where gearswap is concerned.
[+]
By Faelar 2016-04-14 12:58:48
I got it working! Idle works, and Cure works (can't tell if the pre-cast set goes on them or not), and Pre-cast doesnt work on all my other spells. Seems to be my only problem here.
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-04-14 13:34:03
The precast line needs to be
Quote: if spell.prefix == '/magic' then
Also, to check gear, you can type "//gs showswaps" in game and it will tell you what is swapping out.
[+]
By Faelar 2016-04-14 13:37:48
Ragnarok.Flippant said: »The precast line needs to be
Quote: if spell.prefix == '/magic' then
Also, to check gear, you can type "//gs showswaps" in game and it will tell you what is swapping out.
Thanks!
Is there a way to force update the lua while in-game?
And it's not doing the pre-cast set for Cures. :/
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-04-14 16:36:53
"//gs r" will reload your job lua file.
If it's using the precast for any other spell, it should be using them for cures too (assuming you haven't added more rules). Are you using //gs showswaps to see if you are equipping your precast gear? Because, unlike Spellcast, you really won't get the chance to see it visually from the equipment menu.
[+]
By Faelar 2016-04-14 18:28:50
Ragnarok.Flippant said: »"//gs r" will reload your job lua file.
If it's using the precast for any other spell, it should be using them for cures too (assuming you haven't added more rules). Are you using //gs showswaps to see if you are equipping your precast gear? Because, unlike Spellcast, you really won't get the chance to see it visually from the equipment menu.
Yeah, thats how I noticed it didnt put precast on during cures.
It isnt putting precast on for anything else either. Its just putting on curr set and switching to idle after.
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-04-14 20:15:37
Did you change the '/ma' to '/magic'? Also, if you're ever having a problem with a variable, or testing your statements, you can use the add_to_chat function to find out what's happening. For example, Code function precast(spell)
add_to_chat(140,spell.prefix)
if spell.prefix == '/magic' then
-- Magic precast
add_to_chat(140,'equipping magic precast')
equip(sets.FastCast)
end
end
The first one will print the prefix to your chat screen at the beginning of every action you take. The second one will only print if you have met the condition.
[+]
By Faelar 2016-04-14 23:16:18
Ragnarok.Flippant said: »Did you change the '/ma' to '/magic'? Also, if you're ever having a problem with a variable, or testing your statements, you can use the add_to_chat function to find out what's happening. For example, Code function precast(spell)
add_to_chat(140,spell.prefix)
if spell.prefix == '/magic' then
-- Magic precast
add_to_chat(140,'equipping magic precast')
equip(sets.FastCast)
end
end
The first one will print the prefix to your chat screen at the beginning of every action you take. The second one will only print if you have met the condition.
Works perfectly now, thank you!
Now to adapt this to DD jobs, to equip a TP set when engaged, WS set, and an Idle set when disengaged....
Shiva.Hiep
Serveur: Shiva
Game: FFXI
Posts: 669
By Shiva.Hiep 2016-04-15 08:42:18
Has anyone had this problem lately? Since the update, I've been having issues using items like remedy when I use a keybind for it. It usually works the first time I use the bind, but then doesn't work for 1-2 minutes.
Lakshmi.Byrth
VIP
Serveur: Lakshmi
Game: FFXI
Posts: 6184
By Lakshmi.Byrth 2016-04-15 08:48:41
This is caused by a problem in hook. There's a fixed version of hook on -dev, but we're testing it to make sure nothing else broke.
[+]
Serveur: Cerberus
Game: FFXI
Posts: 1786
By Cerberus.Shadowmeld 2016-04-15 09:53:08
Ragnarok.Flippant said: »Did you change the '/ma' to '/magic'? Also, if you're ever having a problem with a variable, or testing your statements, you can use the add_to_chat function to find out what's happening. For example, Code function precast(spell)
add_to_chat(140,spell.prefix)
if spell.prefix == '/magic' then
-- Magic precast
add_to_chat(140,'equipping magic precast')
equip(sets.FastCast)
end
end
The first one will print the prefix to your chat screen at the beginning of every action you take. The second one will only print if you have met the condition.
Works perfectly now, thank you!
Now to adapt this to DD jobs, to equip a TP set when engaged, WS set, and an Idle set when disengaged....
I do this myself by instead of naming my engaged sets TP, naming them Engaged.
minimalist example is in aftercast I just have it do this:
Code
-- In get sets
sets.Engaged = {"gear"}
sets.Idle = {"gear"}
sets.Resting = {"gear"}
function aftercast(spell)
equip(sets[player.status])
end
function change_status(new, old)
equip(sets[new])
end
Carbuncle.Daddykal
Serveur: Carbuncle
Game: FFXI
Posts: 2
By Carbuncle.Daddykal 2016-04-15 16:51:27
Ok, i'm attempting to add to the mote lua file for sch. I have tried many different things, and i'm afraid i have some left over unusable code still in place. It will not crash the script but is not being used currently. I'll add the script below, but first this is my goal. I want to eventually make a popup similar to the one that shows recast of all abilities. However, i only want it to show my Strategem count in a box. I will settle for a macro that shows it in my chat log atm though lol. Essentially, i would like something like this. Code
Send_command('bind ^s **activate Post_Strats_to_Chat()')
Where the function is something like this. Code
local strat = true
function Post_Strats_to_Chat()
if strat == true then
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
strat = false
end
end
I can use /recast Rapture or something to accomplish the same thing really. However, my purpose in the long run, is to understand how to BIND a self command or function. And Eventually create a script or addon that allows me to have a draggable box showing little information that i would like to reference quickly. (Acc, Macc, DPS, Strategem count, Enemies killed or something like that) But i would like to be able to toggle the function on and off with a keybind so starting simple. Figuring out how to use keybinds properly.
So, Here is an excerpt of some of the code i'm using. Code -- General handling of strategems in an Arts-agnostic way.
-- Format: gs c scholar <strategem>
function handle_strategems(cmdParams)
if not cmdParams[2] then
add_to_chat(123,'Error: No strategem command given.')
return
end
local currentStrats = get_current_strategem_count()
local newStratCount = currentStrats - 1
if currentStrats > 0 then
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
else
add_to_chat(122, '***Out of strategems! Canceling...***')
return
end
local strategem = cmdParams[2]:lower()
if strategem == 'light' then
if buffactive['light arts'] then
send_command('input /ja "Addendum: White" <me>')
elseif buffactive['addendum: white'] then
add_to_chat(122,'Error: Addendum: White is already active.')
else
send_command('input /ja "Light Arts" <me>')
end
elseif strategem == 'dark' then
if buffactive['dark arts'] then
send_command('input /ja "Addendum: Black" <me>')
elseif buffactive['addendum: black'] then
add_to_chat(122,'Error: Addendum: Black is already active.')
else
send_command('input /ja "Dark Arts" <me>')
end
elseif buffactive['light arts'] or buffactive['addendum: white'] then
if strategem == 'cost' then
send_command('@input /ja Penury <me>')
elseif strategem == 'speed' then
send_command('@input /ja Celerity <me>')
elseif strategem == 'aoe' then
send_command('@input /ja Accession <me>')
elseif strategem == 'power' then
send_command('@input /ja Rapture <me>')
elseif strategem == 'duration' then
send_command('@input /ja Perpetuance <me>')
elseif strategem == 'accuracy' then
send_command('@input /ja Altruism <me>')
elseif strategem == 'enmity' then
send_command('@input /ja Tranquility <me>')
elseif strategem == 'skillchain' then
add_to_chat(122,'Error: Light Arts does not have a skillchain strategem.')
elseif strategem == 'addendum' then
send_command('@input /ja "Addendum: White" <me>')
else
add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
end
elseif buffactive['dark arts'] or buffactive['addendum: black'] then
if strategem == 'cost' then
send_command('@input /ja Parsimony <me>')
elseif strategem == 'speed' then
send_command('@input /ja Alacrity <me>')
elseif strategem == 'aoe' then
send_command('@input /ja Manifestation <me>')
elseif strategem == 'power' then
send_command('@input /ja Ebullience <me>')
elseif strategem == 'duration' then
add_to_chat(122,'Error: Dark Arts does not have a duration strategem.')
elseif strategem == 'accuracy' then
send_command('@input /ja Focalization <me>')
elseif strategem == 'enmity' then
send_command('@input /ja Equanimity <me>')
elseif strategem == 'skillchain' then
send_command('@input /ja Immanence <me>')
elseif strategem == 'addendum' then
send_command('@input /ja "Addendum: Black" <me>')
else
add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
end
else
add_to_chat(123,'No arts has been activated yet.')
end
end
-- Gets the current number of available strategems based on the recast remaining
-- and the level of the sch.
function get_current_strategem_count()
-- returns recast in seconds.
local allRecasts = windower.ffxi.get_ability_recasts()
local stratsRecast = allRecasts[231]
local maxStrategems = (player.main_job_level + 10) / 20
local fullRechargeTime = 4*60
local currentCharges = math.floor(maxStrategems - maxStrategems * stratsRecast / fullRechargeTime)
return currentCharges
end
And the full code. -------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
--[[
Custom commands:
Shorthand versions for each strategem type that uses the version appropriate for
the current Arts.
Light Arts Dark Arts
gs c scholar light Light Arts/Addendum
gs c scholar dark Dark Arts/Addendum
gs c scholar cost Penury Parsimony
gs c scholar speed Celerity Alacrity
gs c scholar aoe Accession Manifestation
gs c scholar power Rapture Ebullience
gs c scholar duration Perpetuance
gs c scholar accuracy Altruism Focalization
gs c scholar enmity Tranquility Equanimity
gs c scholar skillchain Immanence
gs c scholar addendum Addendum: White Addendum: Black
--]]
-- 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()
state.MagicBurst = M(false, 'Magic Burst')
info.addendumNukes = S{"Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",
"Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
send_command('bind ^s strat = true')
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')
info.low_nukes = S{"Stone", "Water", "Aero", "Fire", "Blizzard", "Thunder"}
info.mid_nukes = S{"Stone II", "Water II", "Aero II", "Fire II", "Blizzard II", "Thunder II",
"Stone III", "Water III", "Aero III", "Fire III", "Blizzard III", "Thunder III",
"Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",}
info.high_nukes = S{"Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
gear.macc_hagondes = {name="Hagondes Cuffs", augments={'Phys. dmg. taken -3%','Mag. Acc.+29'}}
send_command('bind ^` input /ma "stun" <t>')
send_command('bind ^b gs c toggle MagicBurst')
select_default_macro_book()
function user_unload()
send_command('unbind ^`')
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['Tabula Rasa'] = {legs="Pedagogy Pants"}
-- Fast cast sets for spells
sets.precast.FC = {ammo="Impatiens",
head="Nahtirah Hat",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",
back="Swith Cape +1",waist="Witful Belt",legs="Orvail Pants +1",feet="Academic's Loafers"}
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {neck="Stoicheion Medal"})
sets.precast.FC.Cure = set_combine(sets.precast.FC, {body="Heka's Kalasiris",back="Pahtli Cape"})
sets.precast.FC.Curaga = sets.precast.FC.Cure
sets.precast.FC.Impact = set_combine(sets.precast.FC['Elemental Magic'], {head=empty,body="Twilight Cloak"})
-- Midcast Sets
sets.midcast.FastRecast = {ammo="Incantor Stone",
head="Nahtirah Hat",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",
back="Swith Cape +1",waist="Goading Belt",legs="",feet="Academic's Loafers"}
sets.midcast.Cure = {main="Tamaxchi",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Colossus's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Sirona's Ring",
back="Swith Cape +1",waist="Goading Belt",legs="Orvail Pants +1",feet="Academic's Loafers"}
sets.midcast.CureWithLightWeather = {main="Chatoyant Staff",sub="Achaq Grip",ammo="Incantor Stone",
head="Gendewitha Caubeen",neck="Colossus's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Sirona's Ring",
back="Twilight Cape",waist="Korin Obi",legs="Nares Trews",feet="Academic's Loafers"}
sets.midcast.Curaga = sets.midcast.Cure
sets.midcast.Regen = {main="Bolelabunga",head="Savant's Bonnet +2"}
sets.midcast.Cursna = {
neck="Malison Medallion",
hands="Hieros Mittens",ring1="Ephedra Ring",
feet="Gendewitha Galoshes"}
sets.midcast['Enhancing Magic'] = {ammo="Savant's Treatise",
head="Savant's Bonnet +2",neck="Colossus's Torque",
body="Manasa Chasuble",hands="Ayao's Gages",
waist="Olympus Sash",legs="Portent Pants"}
sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
sets.midcast.Storm = set_combine(sets.midcast['Enhancing Magic'], {feet="Pedagogy Loafers"})
sets.midcast.Protect = {ring1="Sheltered Ring"}
sets.midcast.Protectra = sets.midcast.Protect
sets.midcast.Shell = {ring1="Sheltered Ring"}
sets.midcast.Shellra = sets.midcast.Shell
-- Custom spell classes
sets.midcast.MndEnfeebles = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Sturm's Report",
head="Nahtirah Hat",neck="Weike Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Manasa Chasuble",hands="Yaoyotl Gloves",ring1="Aquasoul Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Demonry Sash",legs="Bokwus Slops",feet="Bokwus Boots"}
sets.midcast.IntEnfeebles = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Sturm's Report",
head="Nahtirah Hat",neck="Weike Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Manasa Chasuble",hands="Yaoyotl Gloves",ring1="Icesoul Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Demonry Sash",legs="Bokwus Slops",feet="Bokwus Boots"}
sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
sets.midcast['Dark Magic'] = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Goading Belt",legs="Bokwus Slops",feet="Bokwus Boots"}
sets.midcast.Kaustra = {main="Lehbrailg +2",sub="Wizzan Grip",ammo="Witchstone",
head="Hagondes Hat",neck="Eddy Necklace",ear1="Hecate's Earring",ear2="Friomisi Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Icesoul Ring",ring2="Strendu Ring",
back="Toro Cape",waist="Cognition Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
sets.midcast.Drain = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Excelsis Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Goading Belt",legs="Pedagogy Pants",feet="Academic's Loafers"}
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Stun = {main="Apamajas II",sub="Mephitis Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Witful Belt",legs="Pedagogy Pants",feet="Academic's Loafers"}
sets.midcast.Stun.Resistant = set_combine(sets.midcast.Stun, {main="Lehbrailg +2"})
-- Elemental Magic sets are default for handling low-tier nukes.
sets.midcast['Elemental Magic'] = {main="Lehbrailg +2",sub="Zuuxowu Grip",ammo="Dosis Tathlum",
head="Hagondes Hat",neck="Eddy Necklace",ear1="Hecate's Earring",ear2="Friomisi Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Icesoul Ring",ring2="Acumen Ring",
back="Toro Cape",waist=gear.ElementalObi,legs="Hagondes Pants",feet="Hagondes Sabots"}
sets.midcast['Elemental Magic'].Resistant = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Dosis Tathlum",
head="Hagondes Hat",neck="Eddy Necklace",ear1="Hecate's Earring",ear2="Friomisi Earring",
body="Vanir Cotehardie",hands=gear.macc_hagondes,ring1="Icesoul Ring",ring2="Acumen Ring",
back="Toro Cape",waist=gear.ElementalObi,legs="Hagondes Pants",feet="Bokwus Boots"}
-- Custom refinements for certain nuke tiers
sets.midcast['Elemental Magic'].HighTierNuke = set_combine(sets.midcast['Elemental Magic'], {sub="Wizzan Grip"})
sets.midcast['Elemental Magic'].HighTierNuke.Resistant = set_combine(sets.midcast['Elemental Magic'].Resistant, {sub="Wizzan Grip"})
sets.midcast.Impact = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Dosis Tathlum",
head=empty,neck="Eddy Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Twilight Cloak",hands=gear.macc_hagondes,ring1="Icesoul Ring",ring2="Sangoma Ring",
back="Toro Cape",waist="Demonry Sash",legs="Hagondes Pants",feet="Bokwus Boots"}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {main="Chatoyant Staff",sub="Mephitis Grip",
head="Nefer Khat +1",neck="Wiglen Gorget",
body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
waist="Austerity Belt",legs="Nares Trews",feet="Serpentes Sabots"}
-- 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",ammo="Incantor Stone",
head="Savant's Bonnet +2",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Savant's Gown +2",hands="Savant's Bracers +2",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Savant's Pants +2",feet="Herald's Gaiters"}
sets.idle.Field = {main="Bolelabunga",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nefer Khat +1",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Nares Trews",feet="Herald's Gaiters"}
sets.idle.Field.PDT = {main=gear.Staff.PDT,sub="Achaq Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Paguroidea Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Nares Trews",feet="Herald's Gaiters"}
sets.idle.Field.Stun = {main="Apamajas II",sub="Mephitis Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",ring2="Sangoma Ring",
back="Swith Cape +1",waist="Goading Belt",legs="Bokwus Slops",feet="Academic's Loafers"}
sets.idle.Weak = {main="Bolelabunga",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Sheltered Ring",ring2="Meridian Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Nares Trews",feet="Herald's Gaiters"}
-- Defense sets
sets.defense.PDT = {main=gear.Staff.PDT,sub="Achaq Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Umbra Cape",waist="Hierarch Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
sets.defense.MDT = {main=gear.Staff.PDT,sub="Achaq Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Shadow Ring",
back="Tuilha Cape",waist="Hierarch Belt",legs="Bokwus Slops",feet="Hagondes Sabots"}
sets.Kiting = {feet="Herald's Gaiters"}
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 = {
head="Zelus Tiara",
body="Vanir Cotehardie",hands="Bokwus Gloves",ring1="Rajas Ring",
waist="Goading Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Ebullience'] = {head="Savant's Bonnet +2"}
sets.buff['Rapture'] = {head="Savant's Bonnet +2"}
sets.buff['Perpetuance'] = {hands="Savant's Bracers +2"}
sets.buff['Immanence'] = {hands="Savant's Bracers +2"}
sets.buff['Penury'] = {legs="Savant's Pants +2"}
sets.buff['Parsimony'] = {legs="Savant's Pants +2"}
sets.buff['Celerity'] = {feet="Pedagogy Loafers"}
sets.buff['Alacrity'] = {feet="Pedagogy Loafers"}
sets.buff['Klimaform'] = {feet="Savant's Loafers +2"}
sets.buff.FullSublimation = {head="Academic's Mortarboard",ear1="Savant's Earring",body="Pedagogy Gown"}
sets.buff.PDTSublimation = {head="Academic's Mortarboard",ear1="Savant's Earring"}
--sets.buff['Sandstorm'] = {feet="Desert Boots"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Run after the general midcast() is done.
function job_post_midcast(spell, action, spellMap, eventArgs)
if spell.action_type == 'Magic' then
apply_grimoire_bonuses(spell, action, spellMap, eventArgs)
end
if spell.skill == 'Elemental Magic' and default_spell_map ~= 'ElementalEnfeeble' then
if state.MagicBurst.value then equip(sets.MagicBurst) end
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 buff == "Sublimation: Activated" then
handle_equipping_gear(player.status)
end
end
-- Handle notifications of general user state change.
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.
-------------------------------------------------------------------------------------------------------------------
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
if spell.action_type == 'Magic' then
if default_spell_map == 'Cure' or default_spell_map == 'Curaga' then
if world.weather_element == 'Light' then
return 'CureWithLightWeather'
end
elseif spell.skill == 'Enfeebling Magic' then
if spell.type == 'WhiteMagic' then
return 'MndEnfeebles'
else
return 'IntEnfeebles'
end
elseif spell.skill == 'Elemental Magic' then
if info.low_nukes:contains(spell.english) then
return 'LowTierNuke'
elseif info.mid_nukes:contains(spell.english) then
return 'MidTierNuke'
elseif info.high_nukes:contains(spell.english) then
return 'HighTierNuke'
end
end
end
end
function customize_idle_set(idleSet)
if state.Buff['Sublimation: Activated'] then
if state.IdleMode.value == 'Normal' then
idleSet = set_combine(idleSet, sets.buff.FullSublimation)
elseif state.IdleMode.value == 'PDT' then
idleSet = set_combine(idleSet, sets.buff.PDTSublimation)
end
end
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)
if cmdParams[1] == 'user' and not (buffactive['light arts'] or buffactive['dark arts'] or
buffactive['addendum: white'] or buffactive['addendum: black']) then
if state.IdleMode.value == 'Stun' then
send_command('@input /ja "Dark Arts" <me>')
else
send_command('@input /ja "Light Arts" <me>')
end
end
update_active_strategems()
update_sublimation()
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(eventArgs)
display_current_caster_state()
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called for direct player commands.
function job_self_command(cmdParams, eventArgs)
if cmdParams[1]:lower() == 'scholar' then
handle_strategems(cmdParams)
eventArgs.handled = true
end
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- Reset the state vars tracking strategems.
function update_active_strategems()
state.Buff['Ebullience'] = buffactive['Ebullience'] or false
state.Buff['Rapture'] = buffactive['Rapture'] or false
state.Buff['Perpetuance'] = buffactive['Perpetuance'] or false
state.Buff['Immanence'] = buffactive['Immanence'] or false
state.Buff['Penury'] = buffactive['Penury'] or false
state.Buff['Parsimony'] = buffactive['Parsimony'] or false
state.Buff['Celerity'] = buffactive['Celerity'] or false
state.Buff['Alacrity'] = buffactive['Alacrity'] or false
state.Buff['Klimaform'] = buffactive['Klimaform'] or false
end
function update_sublimation()
state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
end
-- Equip sets appropriate to the active buffs, relative to the spell being cast.
function apply_grimoire_bonuses(spell, action, spellMap)
if state.Buff.Perpetuance and spell.type =='WhiteMagic' and spell.skill == 'Enhancing Magic' then
equip(sets.buff['Perpetuance'])
end
if state.Buff.Rapture and (spellMap == 'Cure' or spellMap == 'Curaga') then
equip(sets.buff['Rapture'])
end
if spell.skill == 'Elemental Magic' and spellMap ~= 'ElementalEnfeeble' then
if state.Buff.Ebullience and spell.english ~= 'Impact' then
equip(sets.buff['Ebullience'])
end
if state.Buff.Immanence then
equip(sets.buff['Immanence'])
end
if state.Buff.Klimaform and spell.element == world.weather_element then
equip(sets.buff['Klimaform'])
end
end
if state.Buff.Penury then equip(sets.buff['Penury']) end
if state.Buff.Parsimony then equip(sets.buff['Parsimony']) end
if state.Buff.Celerity then equip(sets.buff['Celerity']) end
if state.Buff.Alacrity then equip(sets.buff['Alacrity']) end
end
-- General handling of strategems in an Arts-agnostic way.
-- Format: gs c scholar <strategem>
function handle_strategems(cmdParams)
if not cmdParams[2] then
add_to_chat(123,'Error: No strategem command given.')
return
end
local currentStrats = get_current_strategem_count()
local newStratCount = currentStrats - 1
if currentStrats > 0 then
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
else
add_to_chat(122, '***Out of strategems! Canceling...***')
return
end
local strategem = cmdParams[2]:lower()
if strategem == 'light' then
if buffactive['light arts'] then
send_command('input /ja "Addendum: White" <me>')
elseif buffactive['addendum: white'] then
add_to_chat(122,'Error: Addendum: White is already active.')
else
send_command('input /ja "Light Arts" <me>')
end
elseif strategem == 'dark' then
if buffactive['dark arts'] then
send_command('input /ja "Addendum: Black" <me>')
elseif buffactive['addendum: black'] then
add_to_chat(122,'Error: Addendum: Black is already active.')
else
send_command('input /ja "Dark Arts" <me>')
end
elseif buffactive['light arts'] or buffactive['addendum: white'] then
if strategem == 'cost' then
send_command('@input /ja Penury <me>')
elseif strategem == 'speed' then
send_command('@input /ja Celerity <me>')
elseif strategem == 'aoe' then
send_command('@input /ja Accession <me>')
elseif strategem == 'power' then
send_command('@input /ja Rapture <me>')
elseif strategem == 'duration' then
send_command('@input /ja Perpetuance <me>')
elseif strategem == 'accuracy' then
send_command('@input /ja Altruism <me>')
elseif strategem == 'enmity' then
send_command('@input /ja Tranquility <me>')
elseif strategem == 'skillchain' then
add_to_chat(122,'Error: Light Arts does not have a skillchain strategem.')
elseif strategem == 'addendum' then
send_command('@input /ja "Addendum: White" <me>')
else
add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
end
elseif buffactive['dark arts'] or buffactive['addendum: black'] then
if strategem == 'cost' then
send_command('@input /ja Parsimony <me>')
elseif strategem == 'speed' then
send_command('@input /ja Alacrity <me>')
elseif strategem == 'aoe' then
send_command('@input /ja Manifestation <me>')
elseif strategem == 'power' then
send_command('@input /ja Ebullience <me>')
elseif strategem == 'duration' then
add_to_chat(122,'Error: Dark Arts does not have a duration strategem.')
elseif strategem == 'accuracy' then
send_command('@input /ja Focalization <me>')
elseif strategem == 'enmity' then
send_command('@input /ja Equanimity <me>')
elseif strategem == 'skillchain' then
send_command('@input /ja Immanence <me>')
elseif strategem == 'addendum' then
send_command('@input /ja "Addendum: Black" <me>')
else
add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
end
else
add_to_chat(123,'No arts has been activated yet.')
end
end
-- Gets the current number of available strategems based on the recast remaining
-- and the level of the sch.
function get_current_strategem_count()
-- returns recast in seconds.
local allRecasts = windower.ffxi.get_ability_recasts()
local stratsRecast = allRecasts[231]
local maxStrategems = (player.main_job_level + 10) / 20
local fullRechargeTime = 4*60
local currentCharges = math.floor(maxStrategems - maxStrategems * stratsRecast / fullRechargeTime)
return currentCharges
end
local strat = true
function Post_Strats_to_Chat()
if strat == true then
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
strat = false
end
end
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
set_macro_page(1,10)
end
end
Lastly... since i started tinkering... i can no longer load my default macro book.... I didn't change it until i had the problem... now i've tinkered a bit, but put it back as i remember it and still not loading, but no errors.
EDIT: I did not create this code, i have copy / pasted and added new from many different sources, primarily mote's.
By Faelar 2016-04-15 21:18:49
So would it be like:
Code
function change_status
if player.status=='Engaged' then
equip(sets.TP)
end
function change_status
if player.status=='Disengaged then
equip(sets.Idle)
end
Not sure how to setup the most basic Engage/WS/Disengage lua for a DD. I get the syntaxs for spells and sets now, but statuses and weapons skills/job abilities I haven't figured out yet.
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-04-15 21:55:56
You can only have one function of the same name. If you were to list both, the last in the list would overwrite the previous.
Further, a function must always have parentheses after the name, even if you don't want or expect any arguments (the variables that are sent to a function).
Also, you need to make sure to end all of your strings (anything that goes inside single or double quotes). You also need an "end" to finish each and every function and if statement.
Lastly, for GS event functions, you must use precisely the name of the function that Gearswap has mapped to game events. In this case, the name of the function should be status_change, which is sent two arguments: new (the current status) and old (the previous status). You don't have to use these if you don't want to.
Code function status_change(new,old)
if player.status=='Engaged' then
equip(sets.TP)
elseif player.status=='Idle' then
equip(sets.Idle)
end
end
"Disengaged" is not a possible status; you're looking for "Idle". As far as I know, there's not any complete documentation of the possible values for GS variables, but remember that you can always use add_to_chat to test a variable.
If you are determined to write your own file from scratch, it may be better for you to study basic programming and Lua first. The one Byrth posted is just about as bare as a person should have if they care about efficiency, so I'd recommend that you learn enough to be able to read and understand it.
[+]
By Faelar 2016-04-15 22:09:26
Thank you SO much for your help!
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-04-15 22:22:55
Carbuncle.Daddykal said: »Ok, i'm attempting to add to the mote lua file for sch. I have tried many different things, and i'm afraid i have some left over unusable code still in place. It will not crash the script but is not being used currently. I'll add the script below, but first this is my goal. I want to eventually make a popup similar to the one that shows recast of all abilities. However, i only want it to show my Strategem count in a box. I will settle for a macro that shows it in my chat log atm though lol. Essentially, i would like something like this. Code
Send_command('bind ^s **activate Post_Strats_to_Chat()')
Where the function is something like this. Code
local strat = true
function Post_Strats_to_Chat()
if strat == true then
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
strat = false
end
end
I can use /recast Rapture or something to accomplish the same thing really. However, my purpose in the long run, is to understand how to BIND a self command or function. And Eventually create a script or addon that allows me to have a draggable box showing little information that i would like to reference quickly. (Acc, Macc, DPS, Strategem count, Enemies killed or something like that) But i would like to be able to toggle the function on and off with a keybind so starting simple. Figuring out how to use keybinds properly.
So, Here is an excerpt of some of the code i'm using. Code -- General handling of strategems in an Arts-agnostic way.
-- Format: gs c scholar <strategem>
function handle_strategems(cmdParams)
if not cmdParams[2] then
add_to_chat(123,'Error: No strategem command given.')
return
end
local currentStrats = get_current_strategem_count()
local newStratCount = currentStrats - 1
if currentStrats > 0 then
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
else
add_to_chat(122, '***Out of strategems! Canceling...***')
return
end
local strategem = cmdParams[2]:lower()
if strategem == 'light' then
if buffactive['light arts'] then
send_command('input /ja "Addendum: White" <me>')
elseif buffactive['addendum: white'] then
add_to_chat(122,'Error: Addendum: White is already active.')
else
send_command('input /ja "Light Arts" <me>')
end
elseif strategem == 'dark' then
if buffactive['dark arts'] then
send_command('input /ja "Addendum: Black" <me>')
elseif buffactive['addendum: black'] then
add_to_chat(122,'Error: Addendum: Black is already active.')
else
send_command('input /ja "Dark Arts" <me>')
end
elseif buffactive['light arts'] or buffactive['addendum: white'] then
if strategem == 'cost' then
send_command('@input /ja Penury <me>')
elseif strategem == 'speed' then
send_command('@input /ja Celerity <me>')
elseif strategem == 'aoe' then
send_command('@input /ja Accession <me>')
elseif strategem == 'power' then
send_command('@input /ja Rapture <me>')
elseif strategem == 'duration' then
send_command('@input /ja Perpetuance <me>')
elseif strategem == 'accuracy' then
send_command('@input /ja Altruism <me>')
elseif strategem == 'enmity' then
send_command('@input /ja Tranquility <me>')
elseif strategem == 'skillchain' then
add_to_chat(122,'Error: Light Arts does not have a skillchain strategem.')
elseif strategem == 'addendum' then
send_command('@input /ja "Addendum: White" <me>')
else
add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
end
elseif buffactive['dark arts'] or buffactive['addendum: black'] then
if strategem == 'cost' then
send_command('@input /ja Parsimony <me>')
elseif strategem == 'speed' then
send_command('@input /ja Alacrity <me>')
elseif strategem == 'aoe' then
send_command('@input /ja Manifestation <me>')
elseif strategem == 'power' then
send_command('@input /ja Ebullience <me>')
elseif strategem == 'duration' then
add_to_chat(122,'Error: Dark Arts does not have a duration strategem.')
elseif strategem == 'accuracy' then
send_command('@input /ja Focalization <me>')
elseif strategem == 'enmity' then
send_command('@input /ja Equanimity <me>')
elseif strategem == 'skillchain' then
send_command('@input /ja Immanence <me>')
elseif strategem == 'addendum' then
send_command('@input /ja "Addendum: Black" <me>')
else
add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
end
else
add_to_chat(123,'No arts has been activated yet.')
end
end
-- Gets the current number of available strategems based on the recast remaining
-- and the level of the sch.
function get_current_strategem_count()
-- returns recast in seconds.
local allRecasts = windower.ffxi.get_ability_recasts()
local stratsRecast = allRecasts[231]
local maxStrategems = (player.main_job_level + 10) / 20
local fullRechargeTime = 4*60
local currentCharges = math.floor(maxStrategems - maxStrategems * stratsRecast / fullRechargeTime)
return currentCharges
end
Lastly... since i started tinkering... i can no longer load my default macro book.... I didn't change it until i had the problem... now i've tinkered a bit, but put it back as i remember it and still not loading, but no errors.
EDIT: I did not create this code, i have copy / pasted and added new from many different sources, primarily mote's.
Not sure if I understood 100%, but let's start with the bind and chat command:
You can't bind a function. The bind will be sent to the Windower console, so you want to write some sort of console command. To give you an idea, whenever you type '//' in the chat, that's actually sending the rest of the string to the console. So what you want to bind is 'gs c someCommandName' and then pick up that command inside of the self_command() function (in the case of Mote's files, job_self_command()).
Also, your function won't work. The variable "newStratCount" is a local variable inside of the handle_strategems() function. This means that it only exists within that function.
But, the get_current_strategem_count() function returns exactly what you're looking for. So, to print your current count to chat, it should be something like this:
Code function job_self_command(commandArgs, eventArgs)
if commandArgs[1]=='someCommandName' then
add_to_chat(122, '***Current Charges Available: ['..get_current_strategem_count()..']***')
end
end
Edit: I forgot to ask, but I'm not sure what the "strat" variable you put there is for. As it is, it just makes it so that you can only use that function once per load.
By floydtrey1 2016-04-17 00:48:08
Got it working!! Thank you so much :) I understand a bit more about how to start working on my own now instead of mooching off others haha!
So i added this code in the job_self_command portion. Code function job_self_command(cmdParams, commandArgs, eventArgs)
if cmdParams[1]:lower() == 'scholar' then
handle_strategems(cmdParams)
eventArgs.handled = true
end
if cmdParams[1]=='stratcount' then
local stratty = get_current_strategem_count()
add_to_chat(122, 'There are currently -- ['..stratty..'] -- Strategems available!')
end
end
I had to change commandArgs to cmdParams but that was really the only variation from what you said.
I used the same format u mention above to create the bind: Code send_command('bind ^q gs c stratcount') Placed in user_setup, and placed Code send_command('bind ^s gs c stratcount') in Job setup to determine which it needed to be in. At first it didn't want to work... i tweaked it like 5 different ways and finally ended up with a working portion. not sure where the error was as i changed quite a bit before testing again.
HOWEVER now i seem to have made another error lol. I figured it out and fixed it already. Not sure how, but i copy'd Code select_default_macro_book() and had it in my SCH_gear.lua file. Thus creating an error saying it was nil. once i deleted it. it removed the error. Now i just have to figure out how to make it load the proper book.
Full SCH.lua below. -------------------------------------------------------------------------------------------------------------------
-- Setup functions for this job. Generally should not be modified.
-------------------------------------------------------------------------------------------------------------------
--[[
Custom commands:
Shorthand versions for each strategem type that uses the version appropriate for
the current Arts.
Light Arts Dark Arts
gs c scholar light Light Arts/Addendum
gs c scholar dark Dark Arts/Addendum
gs c scholar cost Penury Parsimony
gs c scholar speed Celerity Alacrity
gs c scholar aoe Accession Manifestation
gs c scholar power Rapture Ebullience
gs c scholar duration Perpetuance
gs c scholar accuracy Altruism Focalization
gs c scholar enmity Tranquility Equanimity
gs c scholar skillchain Immanence
gs c scholar addendum Addendum: White Addendum: Black
--]]
-- 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()
state.MagicBurst = M(false, 'Magic Burst')
info.addendumNukes = S{"Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",
"Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
send_command('bind ^s gs c stratcount')
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')
info.low_nukes = S{"Stone", "Water", "Aero", "Fire", "Blizzard", "Thunder"}
info.mid_nukes = S{"Stone II", "Water II", "Aero II", "Fire II", "Blizzard II", "Thunder II",
"Stone III", "Water III", "Aero III", "Fire III", "Blizzard III", "Thunder III",
"Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",}
info.high_nukes = S{"Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
gear.macc_hagondes = {name="Hagondes Cuffs", augments={'Phys. dmg. taken -3%','Mag. Acc.+29'}}
send_command('bind ^` input /ma "stun" <t>')
send_command('bind ^b gs c toggle MagicBurst')
send_command('bind ^q gs c stratcount')
select_default_macro_book()
end
function user_unload()
send_command('unbind ^`')
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['Tabula Rasa'] = {legs="Pedagogy Pants"}
-- Fast cast sets for spells
sets.precast.FC = {ammo="Impatiens",
head="Nahtirah Hat",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",
back="Swith Cape +1",waist="Witful Belt",legs="Orvail Pants +1",feet="Academic's Loafers"}
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {neck="Stoicheion Medal"})
sets.precast.FC.Cure = set_combine(sets.precast.FC, {body="Heka's Kalasiris",back="Pahtli Cape"})
sets.precast.FC.Curaga = sets.precast.FC.Cure
sets.precast.FC.Impact = set_combine(sets.precast.FC['Elemental Magic'], {head=empty,body="Twilight Cloak"})
-- Midcast Sets
sets.midcast.FastRecast = {ammo="Incantor Stone",
head="Nahtirah Hat",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",
back="Swith Cape +1",waist="Goading Belt",legs="",feet="Academic's Loafers"}
sets.midcast.Cure = {main="Tamaxchi",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Colossus's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Sirona's Ring",
back="Swith Cape +1",waist="Goading Belt",legs="Orvail Pants +1",feet="Academic's Loafers"}
sets.midcast.CureWithLightWeather = {main="Chatoyant Staff",sub="Achaq Grip",ammo="Incantor Stone",
head="Gendewitha Caubeen",neck="Colossus's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Sirona's Ring",
back="Twilight Cape",waist="Korin Obi",legs="Nares Trews",feet="Academic's Loafers"}
sets.midcast.Curaga = sets.midcast.Cure
sets.midcast.Regen = {main="Bolelabunga",head="Savant's Bonnet +2"}
sets.midcast.Cursna = {
neck="Malison Medallion",
hands="Hieros Mittens",ring1="Ephedra Ring",
feet="Gendewitha Galoshes"}
sets.midcast['Enhancing Magic'] = {ammo="Savant's Treatise",
head="Savant's Bonnet +2",neck="Colossus's Torque",
body="Manasa Chasuble",hands="Ayao's Gages",
waist="Olympus Sash",legs="Portent Pants"}
sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
sets.midcast.Storm = set_combine(sets.midcast['Enhancing Magic'], {feet="Pedagogy Loafers"})
sets.midcast.Protect = {ring1="Sheltered Ring"}
sets.midcast.Protectra = sets.midcast.Protect
sets.midcast.Shell = {ring1="Sheltered Ring"}
sets.midcast.Shellra = sets.midcast.Shell
-- Custom spell classes
sets.midcast.MndEnfeebles = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Sturm's Report",
head="Nahtirah Hat",neck="Weike Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Manasa Chasuble",hands="Yaoyotl Gloves",ring1="Aquasoul Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Demonry Sash",legs="Bokwus Slops",feet="Bokwus Boots"}
sets.midcast.IntEnfeebles = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Sturm's Report",
head="Nahtirah Hat",neck="Weike Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Manasa Chasuble",hands="Yaoyotl Gloves",ring1="Icesoul Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Demonry Sash",legs="Bokwus Slops",feet="Bokwus Boots"}
sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
sets.midcast['Dark Magic'] = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Strendu Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Goading Belt",legs="Bokwus Slops",feet="Bokwus Boots"}
sets.midcast.Kaustra = {main="Lehbrailg +2",sub="Wizzan Grip",ammo="Witchstone",
head="Hagondes Hat",neck="Eddy Necklace",ear1="Hecate's Earring",ear2="Friomisi Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Icesoul Ring",ring2="Strendu Ring",
back="Toro Cape",waist="Cognition Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
sets.midcast.Drain = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Excelsis Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Goading Belt",legs="Pedagogy Pants",feet="Academic's Loafers"}
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Stun = {main="Apamajas II",sub="Mephitis Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Witful Belt",legs="Pedagogy Pants",feet="Academic's Loafers"}
sets.midcast.Stun.Resistant = set_combine(sets.midcast.Stun, {main="Lehbrailg +2"})
-- Elemental Magic sets are default for handling low-tier nukes.
sets.midcast['Elemental Magic'] = {main="Lehbrailg +2",sub="Zuuxowu Grip",ammo="Dosis Tathlum",
head="Hagondes Hat",neck="Eddy Necklace",ear1="Hecate's Earring",ear2="Friomisi Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Icesoul Ring",ring2="Acumen Ring",
back="Toro Cape",waist=gear.ElementalObi,legs="Hagondes Pants",feet="Hagondes Sabots"}
sets.midcast['Elemental Magic'].Resistant = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Dosis Tathlum",
head="Hagondes Hat",neck="Eddy Necklace",ear1="Hecate's Earring",ear2="Friomisi Earring",
body="Vanir Cotehardie",hands=gear.macc_hagondes,ring1="Icesoul Ring",ring2="Acumen Ring",
back="Toro Cape",waist=gear.ElementalObi,legs="Hagondes Pants",feet="Bokwus Boots"}
-- Custom refinements for certain nuke tiers
sets.midcast['Elemental Magic'].HighTierNuke = set_combine(sets.midcast['Elemental Magic'], {sub="Wizzan Grip"})
sets.midcast['Elemental Magic'].HighTierNuke.Resistant = set_combine(sets.midcast['Elemental Magic'].Resistant, {sub="Wizzan Grip"})
sets.midcast.Impact = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Dosis Tathlum",
head=empty,neck="Eddy Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Twilight Cloak",hands=gear.macc_hagondes,ring1="Icesoul Ring",ring2="Sangoma Ring",
back="Toro Cape",waist="Demonry Sash",legs="Hagondes Pants",feet="Bokwus Boots"}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {main="Chatoyant Staff",sub="Mephitis Grip",
head="Nefer Khat +1",neck="Wiglen Gorget",
body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
waist="Austerity Belt",legs="Nares Trews",feet="Serpentes Sabots"}
-- 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",ammo="Incantor Stone",
head="Savant's Bonnet +2",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Savant's Gown +2",hands="Savant's Bracers +2",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Savant's Pants +2",feet="Herald's Gaiters"}
sets.idle.Field = {main="Bolelabunga",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nefer Khat +1",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Nares Trews",feet="Herald's Gaiters"}
sets.idle.Field.PDT = {main=gear.Staff.PDT,sub="Achaq Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Paguroidea Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Nares Trews",feet="Herald's Gaiters"}
sets.idle.Field.Stun = {main="Apamajas II",sub="Mephitis Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",ring2="Sangoma Ring",
back="Swith Cape +1",waist="Goading Belt",legs="Bokwus Slops",feet="Academic's Loafers"}
sets.idle.Weak = {main="Bolelabunga",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Sheltered Ring",ring2="Meridian Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Nares Trews",feet="Herald's Gaiters"}
-- Defense sets
sets.defense.PDT = {main=gear.Staff.PDT,sub="Achaq Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2=gear.DarkRing.physical,
back="Umbra Cape",waist="Hierarch Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
sets.defense.MDT = {main=gear.Staff.PDT,sub="Achaq Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Shadow Ring",
back="Tuilha Cape",waist="Hierarch Belt",legs="Bokwus Slops",feet="Hagondes Sabots"}
sets.Kiting = {feet="Herald's Gaiters"}
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 = {
head="Zelus Tiara",
body="Vanir Cotehardie",hands="Bokwus Gloves",ring1="Rajas Ring",
waist="Goading Belt",legs="Hagondes Pants",feet="Hagondes Sabots"}
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Ebullience'] = {head="Savant's Bonnet +2"}
sets.buff['Rapture'] = {head="Savant's Bonnet +2"}
sets.buff['Perpetuance'] = {hands="Savant's Bracers +2"}
sets.buff['Immanence'] = {hands="Savant's Bracers +2"}
sets.buff['Penury'] = {legs="Savant's Pants +2"}
sets.buff['Parsimony'] = {legs="Savant's Pants +2"}
sets.buff['Celerity'] = {feet="Pedagogy Loafers"}
sets.buff['Alacrity'] = {feet="Pedagogy Loafers"}
sets.buff['Klimaform'] = {feet="Savant's Loafers +2"}
sets.buff.FullSublimation = {head="Academic's Mortarboard",ear1="Savant's Earring",body="Pedagogy Gown"}
sets.buff.PDTSublimation = {head="Academic's Mortarboard",ear1="Savant's Earring"}
--sets.buff['Sandstorm'] = {feet="Desert Boots"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks for standard casting events.
-------------------------------------------------------------------------------------------------------------------
-- Run after the general midcast() is done.
function job_post_midcast(spell, action, spellMap, eventArgs)
if spell.action_type == 'Magic' then
apply_grimoire_bonuses(spell, action, spellMap, eventArgs)
end
if spell.skill == 'Elemental Magic' and default_spell_map ~= 'ElementalEnfeeble' then
if state.MagicBurst.value then equip(sets.MagicBurst) end
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 buff == "Sublimation: Activated" then
handle_equipping_gear(player.status)
end
end
-- Handle notifications of general user state change.
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.
-------------------------------------------------------------------------------------------------------------------
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
if spell.action_type == 'Magic' then
if default_spell_map == 'Cure' or default_spell_map == 'Curaga' then
if world.weather_element == 'Light' then
return 'CureWithLightWeather'
end
elseif spell.skill == 'Enfeebling Magic' then
if spell.type == 'WhiteMagic' then
return 'MndEnfeebles'
else
return 'IntEnfeebles'
end
elseif spell.skill == 'Elemental Magic' then
if info.low_nukes:contains(spell.english) then
return 'LowTierNuke'
elseif info.mid_nukes:contains(spell.english) then
return 'MidTierNuke'
elseif info.high_nukes:contains(spell.english) then
return 'HighTierNuke'
end
end
end
end
function customize_idle_set(idleSet)
if state.Buff['Sublimation: Activated'] then
if state.IdleMode.value == 'Normal' then
idleSet = set_combine(idleSet, sets.buff.FullSublimation)
elseif state.IdleMode.value == 'PDT' then
idleSet = set_combine(idleSet, sets.buff.PDTSublimation)
end
end
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)
if cmdParams[1] == 'user' and not (buffactive['light arts'] or buffactive['dark arts'] or
buffactive['addendum: white'] or buffactive['addendum: black']) then
if state.IdleMode.value == 'Stun' then
send_command('@input /ja "Dark Arts" <me>')
else
send_command('@input /ja "Light Arts" <me>')
end
end
update_active_strategems()
update_sublimation()
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(eventArgs)
display_current_caster_state()
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
-- Called for direct player commands.
function job_self_command(cmdParams, commandArgs, eventArgs)
if cmdParams[1]:lower() == 'scholar' then
handle_strategems(cmdParams)
eventArgs.handled = true
end
if cmdParams[1]=='stratcount' then
local stratty = get_current_strategem_count()
add_to_chat(122, 'There are currently -- ['..stratty..'] -- Strategems available!')
end
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- Reset the state vars tracking strategems.
function update_active_strategems()
state.Buff['Ebullience'] = buffactive['Ebullience'] or false
state.Buff['Rapture'] = buffactive['Rapture'] or false
state.Buff['Perpetuance'] = buffactive['Perpetuance'] or false
state.Buff['Immanence'] = buffactive['Immanence'] or false
state.Buff['Penury'] = buffactive['Penury'] or false
state.Buff['Parsimony'] = buffactive['Parsimony'] or false
state.Buff['Celerity'] = buffactive['Celerity'] or false
state.Buff['Alacrity'] = buffactive['Alacrity'] or false
state.Buff['Klimaform'] = buffactive['Klimaform'] or false
end
function update_sublimation()
state.Buff['Sublimation: Activated'] = buffactive['Sublimation: Activated'] or false
end
-- Equip sets appropriate to the active buffs, relative to the spell being cast.
function apply_grimoire_bonuses(spell, action, spellMap)
if state.Buff.Perpetuance and spell.type =='WhiteMagic' and spell.skill == 'Enhancing Magic' then
equip(sets.buff['Perpetuance'])
end
if state.Buff.Rapture and (spellMap == 'Cure' or spellMap == 'Curaga') then
equip(sets.buff['Rapture'])
end
if spell.skill == 'Elemental Magic' and spellMap ~= 'ElementalEnfeeble' then
if state.Buff.Ebullience and spell.english ~= 'Impact' then
equip(sets.buff['Ebullience'])
end
if state.Buff.Immanence then
equip(sets.buff['Immanence'])
end
if state.Buff.Klimaform and spell.element == world.weather_element then
equip(sets.buff['Klimaform'])
end
end
if state.Buff.Penury then equip(sets.buff['Penury']) end
if state.Buff.Parsimony then equip(sets.buff['Parsimony']) end
if state.Buff.Celerity then equip(sets.buff['Celerity']) end
if state.Buff.Alacrity then equip(sets.buff['Alacrity']) end
end
-- General handling of strategems in an Arts-agnostic way.
-- Format: gs c scholar <strategem>
function handle_strategems(cmdParams)
if not cmdParams[2] then
add_to_chat(123,'Error: No strategem command given.')
return
end
local currentStrats = get_current_strategem_count()
local newStratCount = currentStrats - 1
if currentStrats > 0 then
add_to_chat(122, '***Current Charges Available: ['..newStratCount..']***')
else
add_to_chat(122, '***Out of strategems! Canceling...***')
return
end
local strategem = cmdParams[2]:lower()
if strategem == 'light' then
if buffactive['light arts'] then
send_command('input /ja "Addendum: White" <me>')
elseif buffactive['addendum: white'] then
add_to_chat(122,'Error: Addendum: White is already active.')
else
send_command('input /ja "Light Arts" <me>')
end
elseif strategem == 'dark' then
if buffactive['dark arts'] then
send_command('input /ja "Addendum: Black" <me>')
elseif buffactive['addendum: black'] then
add_to_chat(122,'Error: Addendum: Black is already active.')
else
send_command('input /ja "Dark Arts" <me>')
end
elseif buffactive['light arts'] or buffactive['addendum: white'] then
if strategem == 'cost' then
send_command('@input /ja Penury <me>')
elseif strategem == 'speed' then
send_command('@input /ja Celerity <me>')
elseif strategem == 'aoe' then
send_command('@input /ja Accession <me>')
elseif strategem == 'power' then
send_command('@input /ja Rapture <me>')
elseif strategem == 'duration' then
send_command('@input /ja Perpetuance <me>')
elseif strategem == 'accuracy' then
send_command('@input /ja Altruism <me>')
elseif strategem == 'enmity' then
send_command('@input /ja Tranquility <me>')
elseif strategem == 'skillchain' then
add_to_chat(122,'Error: Light Arts does not have a skillchain strategem.')
elseif strategem == 'addendum' then
send_command('@input /ja "Addendum: White" <me>')
else
add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
end
elseif buffactive['dark arts'] or buffactive['addendum: black'] then
if strategem == 'cost' then
send_command('@input /ja Parsimony <me>')
elseif strategem == 'speed' then
send_command('@input /ja Alacrity <me>')
elseif strategem == 'aoe' then
send_command('@input /ja Manifestation <me>')
elseif strategem == 'power' then
send_command('@input /ja Ebullience <me>')
elseif strategem == 'duration' then
add_to_chat(122,'Error: Dark Arts does not have a duration strategem.')
elseif strategem == 'accuracy' then
send_command('@input /ja Focalization <me>')
elseif strategem == 'enmity' then
send_command('@input /ja Equanimity <me>')
elseif strategem == 'skillchain' then
send_command('@input /ja Immanence <me>')
elseif strategem == 'addendum' then
send_command('@input /ja "Addendum: Black" <me>')
else
add_to_chat(123,'Error: Unknown strategem ['..strategem..']')
end
else
add_to_chat(123,'No arts has been activated yet.')
end
end
-- Gets the current number of available strategems based on the recast remaining
-- and the level of the sch.
function get_current_strategem_count()
-- returns recast in seconds.
local allRecasts = windower.ffxi.get_ability_recasts()
local stratsRecast = allRecasts[231]
local maxStrategems = (player.main_job_level + 10) / 20
local fullRechargeTime = 4*60
local currentCharges = math.floor(maxStrategems - maxStrategems * stratsRecast / fullRechargeTime)
return currentCharges
end
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
set_macro_page(1,10)
end
Will add the Gear file in 2nd post... reached limit with this one ... I talk a lot?
By floydtrey1 2016-04-17 00:53:31
SCH_gear.lua file below.
function user_setup()
state.OffenseMode:options('None', 'Normal')
state.CastingMode:options('Normal', 'Resistant')
state.IdleMode:options('Normal', 'PDT')
state.MagicBurst = M(false, 'Magic Burst')
info.low_nukes = S{"Stone", "Water", "Aero", "Fire", "Blizzard", "Thunder"}
info.mid_nukes = S{"Stone II", "Water II", "Aero II", "Fire II", "Blizzard II", "Thunder II",
"Stone III", "Water III", "Aero III", "Fire III", "Blizzard III", "Thunder III",
"Stone IV", "Water IV", "Aero IV", "Fire IV", "Blizzard IV", "Thunder IV",}
info.high_nukes = S{"Stone V", "Water V", "Aero V", "Fire V", "Blizzard V", "Thunder V"}
gear.macc_hagondes = {name="Hagondes Cuffs", augments={'Phys. dmg. taken -3%','Mag. Acc.+29'}}
send_command('bind ^` input /ma Stun <t>')
send_command('bind ^b gs c toggle MagicBurst')
end
function user_unload()
send_command('unbind ^`')
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['Tabula Rasa'] = {legs="Pedagogy Pants"}
-- Fast cast sets for spells
sets.precast.FC = {
main="Akademos",
sub="Niobid Strap",
ammo="Ghastly Tathlum",
head="Merlinic Hood",
body="Shango Robe",
hands="Merlinic Dastanas",
legs="Psycloth Lappas",
feet="Merlinic Crackows",
neck="Eddy Necklace",
waist="Witful Belt",
left_ear="Lifestorm Earring",
right_ear="Psystorm Earring",
left_ring="Thurandaut Ring",
right_ring="Prolix Ring",
back={ name="Mecisto. Mantle", augments={'Cap. Point+41%','MP+19','Mag. Acc.+2','DEF+9',}},
}
sets.precast.FC['Enhancing Magic'] = set_combine(sets.precast.FC, {waist="Siegel Sash"})
sets.precast.FC['Elemental Magic'] = set_combine(sets.precast.FC, {neck="Stoicheion Medal"})
sets.precast.FC.Cure = set_combine(sets.precast.FC, {body="Heka's Kalasiris",back="Pahtli Cape"})
sets.precast.FC.Curaga = sets.precast.FC.Cure
sets.precast.FC.Impact = set_combine(sets.precast.FC['Elemental Magic'], {head=empty,body="Twilight Cloak"})
-- Midcast Sets
sets.midcast.FastRecast = {ammo="Incantor Stone",
head="Nahtirah Hat",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",
back="Swith Cape +1",waist="Goading Belt",legs="",feet="Academic's Loafers"}
sets.midcast.Cure = {main="Akademos",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Colossus's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Telchine Gloves",ring1="Prolix Ring",ring2="Sirona's Ring",
back="Swith Cape +1",waist="Goading Belt",legs="Orvail Pants +1",feet="Academic's Loafers"}
sets.midcast.CureWithLightWeather = {main="Akademos",sub="Achaq Grip",ammo="Incantor Stone",
head="Gendewitha Caubeen",neck="Colossus's Torque",ear1="Lifestorm Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Telchine Gloves",ring1="Prolix Ring",ring2="Sirona's Ring",
back="Twilight Cape",waist="Korin Obi",legs="Nares Trews",feet="Academic's Loafers"}
sets.midcast.Curaga = sets.midcast.Cure
sets.midcast.Regen = {main="Bolelabunga",head="Savant's Bonnet +2",back="lugh's Cape"}
sets.midcast.Cursna = {
neck="Malison Medallion",
hands="Hieros Mittens",ring1="Ephedra Ring",
feet="Gendewitha Galoshes"}
sets.midcast['Enhancing Magic'] = {ammo="Savant's Treatise",
head="Savant's Bonnet +2",neck="Colossus's Torque",
body="Manasa Chasuble",hands="Ayao's Gages",
waist="Olympus Sash",legs="Portent Pants"}
sets.midcast.Stoneskin = set_combine(sets.midcast['Enhancing Magic'], {waist="Siegel Sash"})
sets.midcast.Storm = set_combine(sets.midcast['Enhancing Magic'], {feet="Pedagogy Loafers"})
sets.midcast.Protect = {ring1="Sheltered Ring"}
sets.midcast.Protectra = sets.midcast.Protect
sets.midcast.Shell = {ring1="Sheltered Ring"}
sets.midcast.Shellra = sets.midcast.Shell
-- Custom spell classes
sets.midcast.MndEnfeebles = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Sturm's Report",
head="Nahtirah Hat",neck="Weike Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Manasa Chasuble",hands="Yaoyotl Gloves",ring1="Aquasoul Ring",ring2="Sangoma Ring",
back="Refraction Cape",waist="Demonry Sash",legs="Bokwus Slops",feet="Bokwus Boots"}
sets.midcast.IntEnfeebles = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Sturm's Report",
head="Nahtirah Hat",neck="Weike Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Manasa Chasuble",hands="Yaoyotl Gloves",ring1="Icesoul Ring",ring2="Sangoma Ring",
back="Bookworm's Cape",waist="Demonry Sash",legs="Bokwus Slops",feet="Bokwus Boots"}
sets.midcast.ElementalEnfeeble = sets.midcast.IntEnfeebles
sets.midcast['Dark Magic'] = {
main="Akademos",
sub="Niobid Strap",
ammo="Kalboron Stone",
head={ name="Merlinic Hood", augments={'Magic burst mdg.+10%','CHR+3','"Mag.Atk.Bns."+4',}},
body="Helios Jacket",
hands="Merlinic Dastanas",
legs={ name="Psycloth Lappas", augments={'MP+70','Mag. Acc.+13','"Fast Cast"+6',}},
feet={ name="Merlinic Crackows", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','"Drain" and "Aspir" potency +10','CHR+5','Mag. Acc.+3','"Mag.Atk.Bns."+9',}},
neck="Eddy Necklace",
waist="Refoccilation Stone",
left_ear="Lifestorm Earring",
right_ear="Psystorm Earring",
left_ring="Evanescence Ring",
right_ring="Aquilo's Ring",
back="Twilight Cape",
}
sets.midcast.Kaustra = {
main="Akademos",
sub="Willpower Grip",
ammo="Kalboron Stone",
head={ name="Merlinic Hood", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Mag. Acc.+10','"Mag.Atk.Bns."+5',}},
body={ name="Amalric Doublet", augments={'MP+60','"Mag.Atk.Bns."+20','"Fast Cast"+3',}},
hands="Merlinic Dastanas",
legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','Enmity-4','VIT+10','"Mag.Atk.Bns."+12',}},
feet={ name="Merlinic Crackows", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','"Drain" and "Aspir" potency +10','CHR+5','Mag. Acc.+3','"Mag.Atk.Bns."+9',}},
neck="Twilight Torque",
waist="Refoccilation Stone",
left_ear="Lifestorm Earring",
right_ear="Psystorm Earring",
left_ring={ name="Dark Ring", augments={'Phys. dmg. taken -3%','Magic dmg. taken -3%',}},
right_ring={ name="Dark Ring", augments={'Breath dmg. taken -3%','Phys. dmg. taken -3%',}},
back={ name="Mecisto. Mantle", augments={'Cap. Point+41%','MP+19','Mag. Acc.+2','DEF+9',}},
}
sets.midcast.Drain = {
main="Akademos",
sub="Niobid Strap",
ammo="Kalboron Stone",
head={ name="Merlinic Hood", augments={'Magic burst mdg.+10%','CHR+3','"Mag.Atk.Bns."+4',}},
body="Helios Jacket",
hands="Merlinic Dastanas",
legs={ name="Psycloth Lappas", augments={'MP+70','Mag. Acc.+13','"Fast Cast"+6',}},
feet={ name="Merlinic Crackows", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','"Drain" and "Aspir" potency +10','CHR+5','Mag. Acc.+3','"Mag.Atk.Bns."+9',}},
neck="Eddy Necklace",
waist="Refoccilation Stone",
left_ear="Lifestorm Earring",
right_ear="Psystorm Earring",
left_ring="Evanescence Ring",
right_ring="Aquilo's Ring",
back="Bookworm's Cape",
}
sets.midcast.Aspir = sets.midcast.Drain
sets.midcast.Stun = {
main="Akademos",
main="Akademos",
sub="Niobid Strap",
ammo="Kalboron Stone",
head={ name="Merlinic Hood", augments={'Mag. Acc.+20 "Mag.Atk.Bns."+20','Mag. Acc.+10','"Mag.Atk.Bns."+5',}},
body={ name="Amalric Doublet", augments={'MP+60','"Mag.Atk.Bns."+20','"Fast Cast"+3',}},
hands="Merlinic Dastanas",
legs={ name="Merlinic Shalwar", augments={'Mag. Acc.+25 "Mag.Atk.Bns."+25','Enmity-4','VIT+10','"Mag.Atk.Bns."+12',}},
feet={ name="Merlinic Crackows", augments={'Mag. Acc.+24 "Mag.Atk.Bns."+24','"Drain" and "Aspir" potency +10','CHR+5','Mag. Acc.+3','"Mag.Atk.Bns."+9',}},
neck="Twilight Torque",
waist="Refoccilation Stone",
left_ear="Lifestorm Earring",
right_ear="Psystorm Earring",
left_ring={ name="Dark Ring", augments={'Phys. dmg. taken -3%','Magic dmg. taken -3%',}},
right_ring={ name="Dark Ring", augments={'Breath dmg. taken -3%','Phys. dmg. taken -3%',}},
back={ name="Mecisto. Mantle", augments={'Cap. Point+41%','MP+19','Mag. Acc.+2','DEF+9',}},
}
sets.midcast.Stun.Resistant = set_combine(sets.midcast.Stun, {main="Lehbrailg +2"})
-- Elemental Magic sets are default for handling low-tier nukes.
sets.midcast['Elemental Magic'] = {
main="Akademos",
sub="Niobid Strap",
ammo="Kalboron Stone",
head={ name="Merlwinic Hood"},
body={ name="Amalric Doublet", augments={'MP+60','"Mag.Atk.Bns."+20','"Fast Cast"+3',}},
hands="Merlinic Dastanas",
legs={ name="Merlinic Shalwar"},
feet={ name="Merlinic Crackows"},
neck="Eddy Necklace",
waist="Refoccilation Stone",
left_ear="Lifestorm Earring",
right_ear="Psystorm Earring",
left_ring="Acumen Ring",
right_ring="Aquilo's Ring",
back="Lugh's Cape",
}
sets.midcast['Elemental Magic'].Resistant = {
main="Akademos",
sub="Niobid Strap",
ammo="Kalboron Stone",
head={ name="Merlwinic Hood"},
body={ name="Amalric Doublet", augments={'MP+60','"Mag.Atk.Bns."+20','"Fast Cast"+3',}},
hands="Merlinic Dastanas",
legs={ name="Merlinic Shalwar"},
feet={ name="Merlinic Crackows"},
neck="Eddy Necklace",
waist="Refoccilation Stone",
left_ear="Barkarole Earring",
right_ear="Friomisi Earring",
left_ring="Acumen Ring",
right_ring="Aquilo's Ring",
back="Lugh's Cape",
}
sets.MagicBurst = {
main="Akademos",
sub="Niobid Strap",
ammo="Kalboron Stone",
head="Merlinic Hood",
body="Wretched Coat",
hands="Merlinic Dastanas",
legs="Merlinic Shalwar",
feet="Merlinic Crackows",
neck="Eddy Necklace",
waist="Refoccilation Stone",
left_ear="Barkarole Earring",
right_ear="Friomisi Earring",
left_ring="Mujin Band",
right_ring="Locus Ring",
back="Seshaw cape",
}
-- Custom refinements for certain nuke tiers
sets.midcast['Elemental Magic'].HighTierNuke = set_combine(sets.midcast['Elemental Magic'], {sub="Wizzan Grip"})
sets.midcast['Elemental Magic'].HighTierNuke.Resistant = set_combine(sets.midcast['Elemental Magic'].Resistant, {sub="Wizzan Grip"})
sets.midcast.Impact = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Dosis Tathlum",
head=empty,neck="Eddy Necklace",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Twilight Cloak",hands=gear.macc_hagondes,ring1="Icesoul Ring",ring2="Sangoma Ring",
back="Toro Cape",waist="Demonry Sash",legs="Hagondes Pants",feet="Bokwus Boots"}
-- Sets to return to when not performing an action.
-- Resting sets
sets.resting = {main="Chatoyant Staff",sub="Niobid Strap",
head="Nefer Khat +1",neck="Wiglen Gorget",
body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
waist="Austerity Belt",legs="Nares Trews",feet="Serpentes Sabots"}
-- 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",ammo="Incantor Stone",
head="Savant's Bonnet +2",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Savant's Gown +2",hands="Savant's Bracers +2",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Savant's Pants +2",feet="Herald's Gaiters"}
sets.idle.Field = {main="Bolelabunga",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nefer Khat +1",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Heka's Kalasiris",hands="Serpentes Cuffs",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Mecisto. Mantle",waist="Hierarch Belt",legs="Nares Trews",feet="Herald's Gaiters"}
sets.idle.Field.PDT = {
main="Akademos",
sub="Niobid Strap",
ammo="Kalboron Stone",
head={ name="Merlinic Hood"},
body={ name="Amalric Doublet"},
hands={ name="Merlinic Dastanas"},
legs={ name="Merlinic Shalwar"},
feet={ name="Merlinic Crackows"},
neck="Twilight Torque",
waist="Refoccilation Stone",
left_ear="Lifestorm Earring",
right_ear="Psystorm Earring",
left_ring={ name="Dark Ring"},
right_ring={ name="Dark Ring"},
back={ name="Mecisto. Mantle"},
}
sets.idle.Field.Stun = {main="Apamajas II",sub="Mephitis Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Aesir Torque",ear1="Psystorm Earring",ear2="Lifestorm Earring",
body="Vanir Cotehardie",hands="Gendewitha Gages",ring1="Prolix Ring",ring2="Sangoma Ring",
back="Swith Cape +1",waist="Goading Belt",legs="Bokwus Slops",feet="Academic's Loafers"}
sets.idle.Weak = {main="Bolelabunga",sub="Genbu's Shield",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Wiglen Gorget",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Hagondes Coat",hands="Yaoyotl Gloves",ring1="Sheltered Ring",ring2="Meridian Ring",
back="Umbra Cape",waist="Hierarch Belt",legs="Nares Trews",feet="Herald's Gaiters"}
-- Defense sets
sets.defense.PDT = {
main="Akademos",
sub="Niobid Strap",
ammo="Kalboron Stone",
head={ name="Merlinic Hood"},
body={ name="Amalric Doublet"},
hands={ name="Merlinic Dastanas"},
legs={ name="Merlinic Shalwar"},
feet={ name="Merlinic Crackows"},
neck="Twilight Torque",
waist="Refoccilation Stone",
left_ear="Lifestorm Earring",
right_ear="Psystorm Earring",
left_ring={ name="Dark Ring"},
right_ring={ name="Dark Ring"},
back={ name="Mecisto. Mantle"},
}
sets.defense.MDT = {main=gear.Staff.PDT,sub="Achaq Grip",ammo="Incantor Stone",
head="Nahtirah Hat",neck="Twilight Torque",ear1="Bloodgem Earring",ear2="Loquacious Earring",
body="Vanir Cotehardie",hands="Yaoyotl Gloves",ring1="Defending Ring",ring2="Shadow Ring",
back="Tuilha Cape",waist="Hierarch Belt",legs="Bokwus Slops",feet="Hagondes Sabots"}
sets.Kiting = {feet="Herald's Gaiters"}
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 = {
head="Zelus Tiara",
body="Vanir Cotehardie",hands="Bokwus Gloves",ring1="Rajas Ring",
waist="Goading Belt",legs="Hagondes Pants",feet="Hagondes Sabots",back="Mecisto. Mantle"}
-- Buff sets: Gear that needs to be worn to actively enhance a current player buff.
sets.buff['Ebullience'] = {head="Savant's Bonnet +2"}
sets.buff['Rapture'] = {head="Savant's Bonnet +2"}
sets.buff['Perpetuance'] = {hands="Savant's Bracers +2"}
sets.buff['Immanence'] = {hands="Savant's Bracers +2"}
sets.buff['Penury'] = {legs="Savant's Pants +2"}
sets.buff['Parsimony'] = {legs="Savant's Pants +2"}
sets.buff['Celerity'] = {feet="Pedagogy Loafers"}
sets.buff['Alacrity'] = {feet="Pedagogy Loafers"}
sets.buff['Klimaform'] = {feet="Savant's Loafers +2"}
sets.buff.FullSublimation = {head="Academic's Mortarboard",ear1="Savant's Earring",body="Pedagogy Gown"}
sets.buff.PDTSublimation = {head="Academic's Mortarboard",ear1="Savant's Earring"}
--sets.buff['Sandstorm'] = {feet="Desert Boots"}
end
I dont do much weapon swapping due to loss of TP for Mykr.
Also I left a bunch of gear that i dont have in place. If i have no gear to replace it with. it will do nothing if the gear being called isn't found :).
With this setup I can MB darkness on apex crabs for an average of 35-40k. Blizzard5. Earthsday.
Ragnarok.Flippant
Serveur: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-04-17 00:58:22
Sounds like you were trying to call the function before it existed, which is a common mistake when you're working with include files.
Do you mean to say book 1 set 10 is not the correct macro set you want to load?
Edit: Nevermind, I see that you're overwriting the function that is calling it.
Try copying the macro function into your gear file.
By mrpresident 2016-04-22 13:57:39
Hey guys, looking for help with some targeting issues I'm having with some key binds. Martel has been my go-to for help on everything gear swap related, but I'm worried I might be exhausting him with all my questions lately so I thought I would give him a break and post this one here haha.
Basically, I'm using the "Send" add-on in some key binds to control my dual box from my main. I can get everything to work with <stnpc> & <stpc> but would really like to use <stpt> and <stal> for my cure and buff macros. I'm currently using some self-commands to do this, here is basically what I am using now that does work:
Code
send_command('bind F1 gs c DBcast1')
DBspell_1 = "Cure IV"
dualBox = "" --My dual-box char. name here
function DB_command(command)
if command == 'DBcast_clear' then
enter_remapped = False
send_command('unbind enter')
send_command('unbind escape')
add_to_chat(123,'Canceled Dual-Box command')
elseif command == 'DBcast1' then
send_command('input /ta <stpc>')
current_spell = DBspell_1
enter_remapped = True
send_command('bind enter gs c DBcast_ex')
send_command('bind escape gs c DBcast_clear')
elseif command == 'DBcast_ex' then
send_command('send '..dualBox..' '..current_spell..' '..player.subtarget.id)
enter_remapped = False
send_command('unbind enter')
send_command('unbind escape')
end
Ok so, this works in 2 parts; First I initiate the target selection, set the spell I want to cast, set one key bind on "enter" to execute the command, and one to "escape" back out or cancel. When I use the execute key bind, it sends the command to my dual-box and then clears the temporary key binds.
When I try to use this with <stpt> I have to change the target in the send_command to "player.last_subtarget.id" because of the way the sub-target gets registered. But the problem is, with <stpt> the sub-target doesn't get registered until you hit "enter" or select the name from the party list. Since I am binding "enter" to execute the command, the sub target never gets registered and the spell is cast on the wrong person. So I need a way to register the sub-target in-between these two steps, if I could have "enter" function normally, but then also send the command to my dual-box after it would work, but I'm not sure how to do it. I've done some other testing, but in a nut shell, this is where I am at.
If there is an entirely new approach that works, I am completely open to that. Any and all help is welcome and appreciated. Thanks guys
By Trashboat 2016-04-23 09:12:46
Code windower.register_event('incoming text',function(original)
if string.find(original,'Trashboat defeats Orthrus Seether') then
send_command('input /p boop')
end
end)
Anyway I can get something like this to work with battlemod? Works fine without but for some reason it doesn't read battlemods filters correctly.
Asura.Ramsy
Serveur: Asura
Game: FFXI
Posts: 281
By Asura.Ramsy 2016-04-25 00:21:40
Wondering if anyone could give me a step by step guide to setting up gear swap? I've spent the last 2 hours trying to set it up and all that shows when I try to load it is file name can't be found. Pretty sure I must be missing/doing something wrong :(
By lurchingbushpig 2016-04-25 08:50:26
Wondering if anyone could give me a step by step guide to setting up gear swap? I've spent the last 2 hours trying to set it up and all that shows when I try to load it is file name can't be found. Pretty sure I must be missing/doing something wrong :(
Ramsy, I'm pretty sure you just have to change the file type. "Save as" .txt file. I had that same issue and it took me HOURS to figure that notepad++ was just saving the file as a default file type that Gearswap doesn't like.
Lakshmi.Byrth
VIP
Serveur: Lakshmi
Game: FFXI
Posts: 6184
By Lakshmi.Byrth 2016-04-25 12:11:32
You want to "Save as..." Lua.
Just looking for someone to explain this addon a bit for me. It looks like it is an alternative to Spellcast.
Is it going to be replacing Spellcast? In which ways is it better or worse. I don't know any programming but I've slowly learned more and more about spellcast and the 'language' used in gearswap is confusing to me.
It says it uses packets so it potentially could be more detectable? but does that also eliminate any lag that spellcast may encounter?
I plan on redoing my PUP xml to include pet casting sets thanks to the new addon petschool. I'm just not sure if it's worth it to just wait until gearswap gets more popular or to go ahead and do it in spellcast.
If anyone could give me more info I'd greatly appreciate it.
|
|