|
Gearswap Support Thread
Ragnarok.Martel
サーバ: Ragnarok
Game: FFXI
Posts: 2973
By Ragnarok.Martel 2014-09-23 17:23:30
Sorry, I don't use Motenten's lua's. So I can't help you much there. As far as I can tell, there's nothing wrong with your cmd. But I also dunno anything about function job_self_command(command)
VIP
サーバ: Fenrir
Game: FFXI
Posts: 764
By Fenrir.Motenten 2014-09-24 13:22:07
1. Trying to learn my way around Mote's lua files, and tried adding a simple self command yesterday. I added the code below to the bottom of RDM.lua, reloaded GS, and then typed //gs c C1 in-game, but nothing happened. What am I doing wrong? Do I need to set eventArgs.handled = true?
Code
function job_self_command(command)
if command == 'C1' then
add_to_chat(158,'Test Command')
end
end
The parameter given to job_self_command is an array of strings, not a simple string. In the above case, command[1] == 'C1' would work.
This is an issue with needing to break the command up as words. For example, [gs c cycle OffenseMode] and [gs c cycle HybridMode] both need to use the 'cycle' code, but with different values for which state variable is being changed. There are other commands where there might be an optional third parameter as well.
That makes it pretty much completely impractical to just pass the unmodified raw string through, so it gets broken up and placed into a table.
Also, the function signature is: Code
function job_self_command(cmdParams, eventArgs)
end
cmdParams should be more obviously an indication of a table, and eventArgs is used to notify the main library that you handled the command, and that the library can ignore it after that. (eventArgs.handled = true, if so)
2. Can anyone give a quick run-down of sidecar files? Like where I put them, what I can name them, etc? Seems clear that I'd put init_gear_sets() in <charactername>_<job>_gear.lua with all my gear sets, but do I also put stuff like job_self_command(), job_midcast(), etc for custom functionality in the same file, or do I create multiple files (if so, is there a naming convention?)?
Check the Files section of the wiki. And yes, you can override any function that would go in the normal job file (except get_sets) in the sidecar file. No additional files are needed.
[+]
Quetzalcoatl.Dab
サーバ: Quetzalcoatl
Game: FFXI
Posts: 35
By Quetzalcoatl.Dab 2014-09-24 17:13:16
Got a few question.
1) How to I change my TP sets? Like Lowacc lightacc acc.
2) When i load my .lua I get a "Job file is out of date" went to the website had no idea what I was looking at...
3) Oneiros ring I need this to equip and unequip based on MP
Here is the lua I'm using
Code -------------------------------------------------------------------------------------------------------------------
-- Initialization function that defines sets and variables to be used.
-------------------------------------------------------------------------------------------------------------------
-- Windower 4 should download all the necessary Include files to the Libs folder when GearSwap is installed
--If not, they can be found here: https://github.com/Kinematics/Mote-libs
-- 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()
state.Buff['Sneak Attack'] = buffactive['sneak attack'] or false
state.Buff['Trick Attack'] = buffactive['trick attack'] or false
state.Buff['Feint'] = buffactive['feint'] or false
include('Mote-TreasureHunter')
-- For th_action_check():
-- JA IDs for actions that always have TH: Provoke, Animated Flourish
info.default_ja_ids = S{35, 204}
-- Unblinkable JA IDs for actions that always have TH: Quick/Box/Stutter Step, Desperate/Violent Flourish
info.default_u_ja_ids = S{201, 202, 203, 205, 207}
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', 'LightAcc', 'Acc', 'Mod'} -- Mod for trivially weak mobs
options.DefenseModes = {'Normal', 'Evasion', 'PDT'}
options.RangedModes = {'Normal', 'Acc'}
options.WeaponskillModes = {'Normal', 'Acc', 'Mod'}
options.IdleModes = {'Town', 'Normal'}
options.RestingModes = {'Normal'}
options.PhysicalDefenseModes = {'Evasion', 'PDT'}
options.MagicalDefenseModes = {'MDT'}
state.RangedMode = 'Normal'
state.Defense.PhysicalMode = 'Evasion'
gear.default.weaponskill_neck = "Asperity Necklace"
gear.default.weaponskill_waist = "Caudata Belt"
gear.AugQuiahuiz = {name="Quiahuiz Trousers", augments={'Haste+2','"Snapshot"+2','DEX+8'}}
-- Additional local binds
--send_command('bind ^` input /ja "Flee" <me>')
--send_command('bind ^= gs c cycle treasuremode')
--send_command('bind !- gs c cycle targetmode')
select_default_macro_book()
end
-- Called when this job file is unloaded (eg: job change)
function job_file_unload()
--send_command('unbind ^`')
--send_command('unbind !-')
end
-- Define sets and vars used by this job file.
function init_gear_sets()
--------------------------------------
-- Special sets (required by rules)
--------------------------------------
sets.TreasureHunter = {hands="Plunderer's Armlets +1", waist="Chaac Belt", feet="Raider's Poulaines +2"}
sets.ExtraRegen = {head="Ocelomeh Headpiece +1", back="Scuta Cape"}
sets.ExtraRefresh = {head="Wivre Hairpin"}
sets.Kiting = {feet="Fajin Boots"}
sets.Slept = {head="Frenzy Sallet"}
sets.buff['Sneak Attack'] = {
range="Raider's Bmrng.",
head="Pillager's Bonnet +1",
neck="Asperity Necklace",
ear1="Dudgeon Earring",
ear2="Heartseeker Earring",
body="Pillager's Vest +1",
hands="Pillager's Armlets +1",
ring1="Rajas Ring",
ring2="Epona's Ring",
back="Atheling Mantle",
waist="Patentia Sash",
legs="Pill. Culottes +1",
feet="Plunderer's Poulaines +1"}
sets.buff['Trick Attack'] = {
range="Raider's Bmrng.",
head="Pillager's Bonnet +1",
neck="Asperity Necklace",
ear1="Dudgeon Earring",
ear2="Heartseeker Earring",
body="Pillager's Vest +1",
hands="Pillager's Armlets +1",
ring1="Stormsoul Ring",
ring2="Epona's Ring",
back="Atheling Mantle",
waist="Patentia Sash",
legs="Pill. Culottes +1",
feet="Plunderer's Poulaines +1"}
-- Actions we want to use to tag TH.
sets.precast.Step = sets.TreasureHunter
sets.precast.Flourish1 = sets.TreasureHunter
sets.precast.JA.Provoke = sets.TreasureHunter
--------------------------------------
-- Precast sets
--------------------------------------
-- Precast sets to enhance JAs
sets.precast.JA['Collaborator'] = {head="Raider's Bonnet +2"}
sets.precast.JA['Accomplice'] = {head="Raider's Bonnet +2"}
sets.precast.JA['Flee'] = {feet="Pillager's Poulaines +1"}
sets.precast.JA['Hide'] = {body="Pillager's Vest +1"}
sets.precast.JA['Conspirator'] = {} -- {body="Raider's Vest +2"}
sets.precast.JA['Steal'] = {head="Plunderer's Bonnet",hands="Pillager's Armlets +1",legs="Pill. Culottes +1",feet="Pillager's Poulaines +1"}
sets.precast.JA['Despoil'] = {legs="Raider's Culottes +2",feet="Raider's Poulaines +2"}
sets.precast.JA['Perfect Dodge'] = {hands="Plunderer's Armlets +1"}
sets.precast.JA['Feint'] = {legs="Plun. Culottes +1"}
sets.precast.JA['Sneak Attack'] = sets.buff['Sneak Attack']
sets.precast.JA['Trick Attack'] = sets.buff['Trick Attack']
-- Waltz set (chr and vit)
sets.precast.Waltz = {
ammo="Sonia's Plectrum",
head="Whirlpool Mask",
body="Pillager's Vest +1",
hands="Pillager's Armlets +1",
ring1="Asklepian Ring",
back="Iximulew Cape",
waist="Caudata Belt",
legs="Pill. Culottes +1",
feet="Plunderer's Poulaines +1"}
-- Don't need any special gear for Healing Waltz.
sets.precast.Waltz['Healing Waltz'] = {}
-- Fast cast sets for spells
sets.precast.FC = {
head="Haruspex Hat",
ear2="Loquacious Earring",
hands="Thaumas Gloves",
ring1="Prolix Ring",
legs="Enif Cosciales"}
sets.precast.FC.Utsusemi = set_combine(sets.precast.FC, {neck="Magoraga Beads"})
-- Ranged snapshot gear
sets.precast.RA = {
head="Aurore Beret",
hands="Iuitl Wristbands",
legs="Nahtirah Trousers",
feet="Wurrukatte Boots"}
-- Weaponskill sets
-- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = {
range="Raider's Bmrng.",
head="Whirlpool Mask",
neck=gear.ElementalGorget,
ear1="Bladeborn Earring",
ear2="Steelflash Earring",
body="Pillager's Vest +1",
hands="Pill. Armlets +1",
ring1="Rajas Ring",
ring2="Epona's Ring",
back="Atheling Mantle",
waist="Caudata Belt",
legs="Pill. Culottes +1",
feet="Plun. Poulaines +1"}
sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Honed Tathlum", back="Letalis Mantle"})
-- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
sets.precast.WS['Exenterator'] = set_combine(sets.precast.WS, {ring1="Stormsoul Ring",legs="Nahtirah Trousers"})
sets.precast.WS['Exenterator'].Acc = set_combine(sets.precast.WS['Exenterator'], {back="Letalis Mantle"})
sets.precast.WS['Exenterator'].Mod = set_combine(sets.precast.WS['Exenterator'], {head="Felistris Mask"})
sets.precast.WS['Exenterator'].SA = set_combine(sets.precast.WS['Exenterator'].Mod, {})
sets.precast.WS['Exenterator'].TA = set_combine(sets.precast.WS['Exenterator'].Mod, {})
sets.precast.WS['Exenterator'].SATA = set_combine(sets.precast.WS['Exenterator'].Mod, {})
sets.precast.WS['Dancing Edge'] = set_combine(sets.precast.WS, {})
sets.precast.WS['Dancing Edge'].Acc = set_combine(sets.precast.WS['Dancing Edge'], {back="Letalis Mantle"})
sets.precast.WS['Dancing Edge'].Mod = set_combine(sets.precast.WS['Dancing Edge'], {})
sets.precast.WS['Dancing Edge'].SA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {})
sets.precast.WS['Dancing Edge'].TA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {})
sets.precast.WS['Dancing Edge'].SATA = set_combine(sets.precast.WS['Dancing Edge'].Mod, {})
sets.precast.WS['Evisceration'] = set_combine(sets.precast.WS, {
head="Uk'uxkaj Cap",
range="Yetshila",
neck="Nefarious collar",
ear1="Brutal Earring",
ear2="Moonshade Earring",
body="Pillager's Vest +1",
hands="Pill. Armlets +1",
ring1="Epona's Ring",
ring2="Rajas Ring",
back="Rancorous Mantle",
waist="Anguinus Belt",
legs="Pill. Culottes +1",
feet="Iuitl Gaiters"})
sets.precast.WS['Evisceration'].Acc = set_combine(sets.precast.WS['Evisceration'], {back="Letalis Mantle"})
sets.precast.WS['Evisceration'].Mod = set_combine(sets.precast.WS['Evisceration'], {
head="Uk'uxkaj cap",
neck="Rancor Collar",
ear1="Brutal Earring",
ear2="Pixie Earring",
body="Plunderer's Vest +1",
ring1="Thundersoul Ring",
ring2="Thundersoul Ring",
back="Kayapa Cape",
waist="Artful Belt"})
sets.precast.WS['Evisceration'].SA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
sets.precast.WS['Evisceration'].TA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
sets.precast.WS['Evisceration'].SATA = set_combine(sets.precast.WS['Evisceration'].Mod, {})
sets.precast.WS["Rudra's Storm"] = set_combine(sets.precast.WS, {
head="Uk'uxkaj cap",
neck="Snow Gorget",
ear1="Brutal Earring",
ear2="Pixie Earring",
body="Plunderer's Vest +1",
ring1="Thundersoul Ring",
ring2="Thundersoul Ring",
back="Cavaros Mantle",
waist="Artful Belt"})
sets.precast.WS["Rudra's Storm"].Acc = set_combine(sets.precast.WS["Rudra's Storm"], {back="Letalis Mantle"})
sets.precast.WS["Rudra's Storm"].Mod = set_combine(sets.precast.WS["Rudra's Storm"], {
range="Raider's Bmrng.",
head="Pillager's Bonnet +1",
neck="Snow Gorget",
ear1="Brutal Earring",
ear2="Pixie Earring",
body="Pillager's Vest +1",
ring1="Thundersoul Ring",
ring2="Thundersoul Ring",
back="Cavaros Mantle",
waist="Artful Belt",
legs="Pill. Culottes +1"})
sets.precast.WS["Rudra's Storm"].SA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {})
sets.precast.WS["Rudra's Storm"].TA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {})
sets.precast.WS["Rudra's Storm"].SATA = set_combine(sets.precast.WS["Rudra's Storm"].Mod, {})
sets.precast.WS["Shark Bite"] = set_combine(sets.precast.WS, {head="Pillager's Bonnet +1",ear1="Brutal Earring",ear2="Moonshade Earring"})
sets.precast.WS['Shark Bite'].Acc = set_combine(sets.precast.WS['Shark Bite'], {back="Letalis Mantle"})
sets.precast.WS['Shark Bite'].Mod = set_combine(sets.precast.WS['Shark Bite'], {back="Kayapa Cape",waist=gear.ElementalBelt})
sets.precast.WS['Shark Bite'].SA = set_combine(sets.precast.WS['Shark Bite'].Mod, {body="Pillager's Vest +1",legs="Pill. Culottes +1"})
sets.precast.WS['Shark Bite'].TA = set_combine(sets.precast.WS['Shark Bite'].Mod, {body="Pillager's Vest +1",legs="Pill. Culottes +1"})
sets.precast.WS['Shark Bite'].SATA = set_combine(sets.precast.WS['Shark Bite'].Mod, {body="Pillager's Vest +1",legs="Pill. Culottes +1"})
sets.precast.WS['Mandalic Stab'] = set_combine(sets.precast.WS, {head="Pillager's Bonnet +1",ear1="Brutal Earring",ear2="Moonshade Earring"})
sets.precast.WS['Mandalic Stab'].Acc = set_combine(sets.precast.WS['Mandalic Stab'], {ammo="Honed Tathlum", back="Letalis Mantle"})
sets.precast.WS['Mandalic Stab'].Mod = set_combine(sets.precast.WS['Mandalic Stab'], {back="Kayapa Cape",waist=gear.ElementalBelt})
sets.precast.WS['Mandalic Stab'].SA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {body="Pillager's Vest +1",legs="Pill. Culottes +1"})
sets.precast.WS['Mandalic Stab'].TA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {body="Pillager's Vest +1",legs="Pill. Culottes +1"})
sets.precast.WS['Mandalic Stab'].SATA = set_combine(sets.precast.WS['Mandalic Stab'].Mod, {body="Pillager's Vest +1",legs="Pill. Culottes +1"})
sets.precast.WS['Aeolian Edge'] = {
ammo="Jukukik Feather",
head="Wayfarer Circlet",
neck="Stoicheion Medal",
ear1="Friomisi Earring",
ear2="Moonshade Earring",
body="Wayfarer Robe",
hands="Pillager's Armlets +1",
ring1="Acumen Ring",
ring2="Demon's Ring",
back="Toro Cape",
waist=gear.ElementalBelt,
legs="Shneddick Tights +1",
feet="Wayfarer Clogs"}
sets.precast.WS['Aeolian Edge'].TH = set_combine(sets.precast.WS['Aeolian Edge'], sets.TreasureHunter)
--------------------------------------
-- Midcast sets
--------------------------------------
sets.midcast.FastRecast = {
head="Whirlpool Mask",ear2="Loquacious Earring",
body="Pillager's Vest +1",hands="Pillager's Armlets +1",
back="Canny Cape",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
-- Specific spells
sets.midcast.Utsusemi = {
head="Whirlpool Mask",neck="Ej Necklace",ear2="Loquacious Earring",
body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Beeline Ring",
back="Canny Cape",legs="Kaabnax Trousers",feet="Iuitl Gaiters +1"}
-- Ranged gear
sets.midcast.RA = {
head="Whirlpool Mask",neck="Ej Necklace",ear1="Clearview Earring",ear2="Volley Earring",
body="Iuitl Vest",hands="Iuitl Wristbands",ring1="Beeline Ring",ring2="Hajduk Ring",
back="Libeccio Mantle",waist="Aquiline Belt",legs="Nahtirah Trousers",feet="Iuitl Gaiters +1"}
sets.midcast.RA.Acc = {
head="Pillager's Bonnet +1",neck="Ej Necklace",ear1="Clearview Earring",ear2="Volley Earring",
body="Iuitl Vest",hands="Buremte Gloves",ring1="Beeline Ring",ring2="Hajduk Ring",
back="Libeccio Mantle",waist="Aquiline Belt",legs="Thurandaut Tights +1",feet="Pillager's Poulaines +1"}
--------------------------------------
-- Idle/resting/defense sets
--------------------------------------
-- Resting sets
sets.resting = {head="Ocelomeh Headpiece +1",neck="Wiglen Gorget",
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 = {
head="Felistris Mask",
neck="Asperity Necklace",
ear1="Dudgeon Earring",
ear2="Heartseeker Earring",
body="Dread Jupon",
hands="Plun. Armlets +1",
ring1="Paguroidea ring",
ring2="Sheltered Ring",
back="Shadow Mantle",
waist="Patentia Sash",
legs="Plun. Culottes +1",
feet="Plun. Poulaines +1"}
sets.idle.Town = {
main="Mandau",
sub="Izhiikoh",
head="Felistris Mask",
neck="Asperity Necklace",
ear1="Dudgeon Earring",
ear2="Heartseeker Earring",
body="Dread Jupon",
hands="Plun. Armlets +1",
ring1="Paguroidea ring",
ring2="Sheltered Ring",
back="Shadow Mantle",
waist="Patentia Sash",
legs="Plun. Culottes +1",
feet="Plun. Poulaines +1"}
sets.idle.Weak = {range="Raider's Bmrng.",
head="Pillager's Bonnet +1",neck="Wiglen Gorget",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Sheltered Ring",ring2="Paguroidea Ring",
back="Shadow Mantle",waist="Flume Belt",legs="Pill. Culottes +1",feet="Skadi's Jambeaux +1"}
-- Defense sets
sets.defense.Evasion = {
head="Pillager's Bonnet +1",
neck="Ej Necklace",
body="Pillager's Vest +1",
hands="Pillager's Armlets +1",
ring1="Defending Ring",
ring2="Beeline Ring",
back="Canny Cape",
waist="Flume Belt",
legs="Kaabnax Trousers",
feet="Iuitl Gaiters +1"}
sets.defense.PDT = {
ammo="Iron Gobbet",
head="Pillager's Bonnet +1",
neck="Twilight Torque",
body="Iuitl Vest",
hands="Pillager's Armlets +1",
ring1="Defending Ring",
ring2=gear.DarkRing.physical,
back="Iximulew Cape",
waist="Flume Belt",
legs="Pill. Culottes +1",
feet="Iuitl Gaiters +1"}
sets.defense.MDT = {
ammo="Demonry Stone",
head="Pillager's Bonnet +1",
neck="Twilight Torque",
body="Pillager's Vest +1",
hands="Pillager's Armlets +1",
ring1="Defending Ring",
ring2="Shadow Ring",
back="Engulfer Cape",
waist="Flume Belt",
legs="Pill. Culottes +1",
feet="Iuitl Gaiters +1"}
--------------------------------------
-- Melee sets
--------------------------------------
-- Normal melee group
sets.engaged = {
range="Raider's Bmrng.",
head="Felistris Mask",
neck="Asperity Necklace",
ear1="Dudgeon Earring",
ear2="Heartseeker Earring",
body="Qaaxo Harness",
hands="Qaaxo Mitaines",
ring1="Epona's Ring",
ring2="Oneiros Ring",
back="Canny cape",
waist="Patentia Sash",
legs="Quiahuiz Trousers",
feet="Plun. Poulaines +1"}
sets.engaged.LightAcc = {
range="Raider's Bmrng.",
head="Felistris Mask",
neck="Iqabi Necklace",
ear1="Dudgeon Earring",
ear2="Heartseeker Earring",
body="Dread Jupon",
hands="Qaaxo Mitaines",
ring1="Epona's Ring",
ring2="Rajas Ring",
back="Canny cape",
waist="Patentia Sash",
legs="Plun. Culottes +1",
feet="Plun. Poulaines +1"}
sets.engaged.Acc = {
range="Raider's Bmrng.",
head="Whirlpool Mask",
neck="Iqabi Necklace",
ear1="Dudgeon Earring",
ear2="Heartseeker Earring",
body="Dread Jupon",
hands="Qaaxo Mitaines",
ring1="Mars Ring",
ring2="Rajas Ring",
back="Canny cape",
waist="Anguinus Belt",
legs="Plun. Culottes +1",
feet="Plun. Poulaines +1"}
-- Mod set for trivial mobs (Skadi+1)
sets.engaged.Mod = {
range="Raider's Bmrng.",
head="Felistris Mask",
neck="Asperity Necklace",
ear1="Dudgeon Earring",
ear2="Heartseeker Earring",
body="Skadi's cuirie +1",
hands="Pillager's Armlets +1",
ring1="Rajas Ring",
ring2="Epona's Ring",
back="Canny cape",
waist="Patentia Sash",
legs="Quiahuiz trousers",
feet="Plunderer's Poulaines +1"}
-- Mod set for trivial mobs (Thaumas)
sets.engaged.Mod2 = {
range="Raider's Bmrng.",
head="Felistris Mask",
neck="Asperity Necklace",
ear1="Dudgeon Earring",
ear2="Heartseeker Earring",
body="Thaumas Coat",
hands="Pillager's Armlets +1",
ring1="Rajas Ring",
ring2="Epona's Ring",
back="Canny cape",
waist="Patentia Sash",
legs="Quiahuiz trousers",
feet="Plunderer's Poulaines +1"}
sets.engaged.Evasion = {range="Raider's Bmrng.",
head="Felistris Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Qaaxo Harness",hands="Pillager's Armlets +1",ring1="Beeline Ring",ring2="Epona's Ring",
back="Canny Cape",waist="Patentia Sash",legs="Kaabnax Trousers",feet="Qaaxo Leggings"}
sets.engaged.Acc.Evasion = {range="Raider's Bmrng.",
head="Whirlpool Mask",neck="Ej Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Pillager's Vest +1",hands="Pillager's Armlets +1",ring1="Beeline Ring",ring2="Epona's Ring",
back="Canny Cape",waist="Hurch'lan Sash",legs="Kaabnax Trousers",feet="Qaaxo Leggings"}
sets.engaged.PDT = {range="Raider's Bmrng.",
head="Felistris Mask",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Iuitl Vest",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2="Epona's Ring",
back="Iximulew Cape",waist="Patentia Sash",legs="Iuitl Tights",feet="Qaaxo Leggings"}
sets.engaged.Acc.PDT = {range="Raider's Bmrng.",
head="Whirlpool Mask",neck="Twilight Torque",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Iuitl Vest",hands="Pillager's Armlets +1",ring1="Defending Ring",ring2="Epona's Ring",
back="Canny Cape",waist="Hurch'lan Sash",legs="Iuitl Tights",feet="Qaaxo Leggings"}
end
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks that are called to process player actions at specific points in time.
-------------------------------------------------------------------------------------------------------------------
function job_precast(spell, action, spellMap, eventArgs)
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = true
end
end
-- Run after the general precast() is done.
function job_post_precast(spell, action, spellMap, eventArgs)
if spell.english == 'Aeolian Edge' and state.TreasureMode ~= 'None' then
equip(sets.TreasureHunter)
elseif spell.english=='Sneak Attack' or spell.english=='Trick Attack' or spell.type == 'WeaponSkill' then
if state.TreasureMode == 'SATA' or state.TreasureMode == 'Fulltime' then
equip(sets.TreasureHunter)
end
end
end
-- Run after the general midcast() set is constructed.
function job_post_midcast(spell, action, spellMap, eventArgs)
if state.TreasureMode ~= 'None' and spell.action_type == 'Ranged Attack' then
equip(sets.TreasureHunter)
end
end
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
if state.Buff[spell.english] ~= nil then
state.Buff[spell.english] = not spell.interrupted or buffactive[spell.english]
end
-- Weaponskills wipe SATA/Feint. Turn those state vars off before default gearing is attempted.
if spell.type == 'WeaponSkill' and not spell.interrupted then
state.Buff['Sneak Attack'] = false
state.Buff['Trick Attack'] = false
state.Buff['Feint'] = false
end
end
-- Called after the default aftercast handling is complete.
function job_post_aftercast(spell, action, spellMap, eventArgs)
-- If Feint is active, put that gear set on on top of regular gear.
-- This includes overlaying SATA gear.
check_buff('Feint', eventArgs)
end
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks.
-------------------------------------------------------------------------------------------------------------------
function get_custom_wsmode(spell, spellMap, defaut_wsmode)
local wsmode
if state.Buff['Sneak Attack'] then
wsmode = 'SA'
end
if state.Buff['Trick Attack'] then
wsmode = (wsmode or '') .. 'TA'
end
return wsmode
end
-- Called any time we attempt to handle automatic gear equips (ie: engaged or idle gear).
function job_handle_equipping_gear(playerStatus, eventArgs)
-- Check that ranged slot is locked, if necessary
check_range_lock()
-- Check for SATA when equipping gear. If either is active, equip
-- that gear specifically, and block equipping default gear.
check_buff('Sneak Attack', eventArgs)
check_buff('Trick Attack', eventArgs)
end
function customize_idle_set(idleSet)
if player.hpp < 80 then
idleSet = set_combine(idleSet, sets.ExtraRegen)
end
if player.mp < 100 then --If MP gets below 100 & Idle it will equip refresh set (For Oneiros Ring latent)
idleSet = sets.ExtraRefresh
end
return idleSet
end
function customize_melee_set(meleeSet)
if state.TreasureMode == 'Fulltime' then
meleeSet = set_combine(meleeSet, sets.TreasureHunter)
end
return meleeSet
end
-------------------------------------------------------------------------------------------------------------------
-- General hooks for change events.
-------------------------------------------------------------------------------------------------------------------
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
if state.Buff[buff] ~= nil then
state.Buff[buff] = gain
if not midaction() then
handle_equipping_gear(player.status)
end
end
if buff == 'sleep' then
if gain then
equip(sets.Slept)
add_to_chat(39,'You are slept... [Equipping Frenzy Sallet]')
else
send_command('gs c update')
add_to_chat(200,'You are awake... [Removing Frenzy Sallet]')
end
end
end
-------------------------------------------------------------------------------------------------------------------
-- Various update events.
-------------------------------------------------------------------------------------------------------------------
-- Called by the 'update' self-command.
function job_update(cmdParams, eventArgs)
th_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(eventArgs)
local defenseString = ''
if state.Defense.Active then
local defMode = state.Defense.PhysicalMode
if state.Defense.Type == 'Magical' then
defMode = state.Defense.MagicalMode
end
defenseString = 'Defense: '..state.Defense.Type..' '..defMode..' '
end
add_to_chat(122,'Melee: '..state.OffenseMode..'/'..state.DefenseMode..' WS: '..state.WeaponskillMode..' '..
defenseString..'Kiting: '..on_off_names[state.Kiting]..' TH: '..state.TreasureMode)
eventArgs.handled = true
end
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
-- State buff checks that will equip buff gear and mark the event as handled.
function check_buff(buff_name, eventArgs)
if state.Buff[buff_name] then
equip(sets.buff[buff_name] or {})
if state.TreasureMode == 'SATA' or state.TreasureMode == 'Fulltime' then
equip(sets.TreasureHunter)
end
eventArgs.handled = true
end
end
-- Check for various actions that we've specified in user code as being used with TH gear.
-- This will only ever be called if TreasureMode is not 'None'.
-- Category and Param are as specified in the action event packet.
function th_action_check(category, param)
if category == 2 or -- any ranged attack
--category == 4 or -- any magic action
(category == 3 and param == 30) or -- Aeolian Edge
(category == 6 and info.default_ja_ids:contains(param)) or -- Provoke, Animated Flourish
(category == 14 and info.default_u_ja_ids:contains(param)) -- Quick/Box/Stutter Step, Desperate/Violent Flourish
then return true
end
end
-- Function to lock the ranged slot if we have a ranged weapon equipped.
function check_range_lock()
if player.equipment.range ~= 'empty' then
disable('range', 'ammo')
else
enable('range', 'ammo')
end
end
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
-- Default macro set/book
if player.sub_job == 'DNC' then
set_macro_page(1, 6)
elseif player.sub_job == 'WAR' then
set_macro_page(2, 6)
elseif player.sub_job == 'NIN' then
set_macro_page(3, 6)
else
set_macro_page(3, 13)
end
end
Cerberus.Tidis
サーバ: Cerberus
Game: FFXI
Posts: 3927
By Cerberus.Tidis 2014-09-25 05:39:55
I have only just realised I have nothing set up for feint in my thf gearswap so I was wondering if the following would get the job done:
if buffactive.Feint then
equip({legs="Plunderer's Culottes"})
Leviathan.Arcon
VIP
サーバ: Leviathan
Game: FFXI
Posts: 666
By Leviathan.Arcon 2014-09-25 05:58:45
I have only just realised I have nothing set up for feint in my thf gearswap so I was wondering if the following would get the job done:
if buffactive.Feint then
equip({legs="Plunderer's Culottes"})
That will work assuming you don't overwrite it again later. Also, remember to add an "end" there.
Cerberus.Tidis
サーバ: Cerberus
Game: FFXI
Posts: 3927
By Cerberus.Tidis 2014-09-25 06:00:47
I have only just realised I have nothing set up for feint in my thf gearswap so I was wondering if the following would get the job done:
if buffactive.Feint then
equip({legs="Plunderer's Culottes"})
That will work assuming you don't overwrite it again later. Also, remember to add an "end" there. Cool, was just thinking it out while I'm at work, I shouldn't have a problem with overwriting it as I hit feint, wait for the applying hit before doing anything.
Cerberus.Tidis
サーバ: Cerberus
Game: FFXI
Posts: 3927
By Cerberus.Tidis 2014-09-25 16:24:24
Hmm having problems getting these legs equipped with Feint, where in my file would I have to place what I previously wrote to get it to equip?
EDIT: Here is my shitty THF.lua in all it's horribleness if it helps.
Code function get_sets()
TP_Index = 1
Idle_Index = 1
sets.weapons = {}
sets.weapons[1] = {main="Izhiikoh"}
sets.weapons[2]={main="Sandnung"}
sets.JA = {}
sets.JA.Conspirator = {body="Raider's Vest +2"}
sets.JA.Accomplice = {head="Raid. Bonnet +2"}
sets.JA.Collaborator = {head="Raid. Bonnet +2"}
sets.JA['Perfect Dodge'] = {hands="Plun. Armlets +1"}
sets.JA.Steal = {head="Plun. Bonnet",neck="Rabbit Charm",hands="Thief's Kote",
waist="Key Ring Belt",legs="Pill. Culottes +1",feet="Pillager's Poulaines"}
sets.JA.Flee = {feet="Pillager's Poulaines"}
sets.JA.Despoil = {legs="Raid. Culottes +2",feet="Raid. Poulaines +2"}
sets.JA.Mug = {head="Plun. Bonnet"}
sets.JA["Assassin's Charge"] = {feet="Plun. Poulaines +1"}
sets.JA.Hide = {body="Pillager's Vest"}
sets.WS = {}
sets.WS.SA = {}
sets.WS.TA = {}
sets.WS.SATA = {}
sets.WS.AC = {}
sets.WS.Evisceration = {head="Felistris Mask",neck="Rancor Collar",ear1="Moonshade Earring",ear2="Brutal Earring",
body="Plunderer's Vest",hands="Pill. Armlets +1",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Wanion Belt",legs="Pill. Culottes +1",feet="Plun. Poulaines +1"}
sets.WS["Aeolian Edge"] = set_combine(sets.WS.Evisceration,{head="Thaumas Hat",legs="Raid. Culottes +2",neck="Stoicheion Medal",
ear1="Novio Earring",ear2="Hecate's Earring",waist="Breeze Belt"})
sets.WS.SA.Evisceration = {head="Pillager's Bonnet",neck="Rancor Collar",ear1="Moonshade Earring",ear2="Brutal Earring",
body="Plunderer's Vest",hands="Raid. Armlets +2",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Wanion Belt",legs="Pill. Culottes +1",feet="Plun. Poulaines +1"}
sets.WS.TA.Evisceration = {head="Pillager's Bonnet",neck="Rancor Collar",ear1="Moonshade Earring",ear2="Brutal Earring",
body="Plunderer's Vest",hands="Raid. Armlets +2",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Wanion Belt",legs="Pill. Culottes +1",feet="Plun. Poulaines +1"}
TP_Set_Names = {"Normal","TH","Evasion"}
sets.TP = {}
sets.TP['Normal'] = {range="Raider's Bmrng.",head="Felistris Mask",neck="Asperity Necklace",
ear1="Dudgeon Earring",ear2="Heartseeker Earring",body="Thaumas Coat",hands="Pill. Armlets +1",
ring1="Rajas Ring",ring2="Epona's Ring",back="Atheling Mantle",waist="Nusku's Sash",
legs="Pill. Culottes +1",feet="Plun. Poulaines +1"}
sets.TP['TH'] = {range="Raider's Bmrng.",head="Felistris Mask",neck="Asperity Necklace",
ear1="Dudgeon Earring",ear2="Heartseeker Earring",body="Thaumas Coat",hands="Plun. Armlets +1",
ring1="Rajas Ring",ring2="Epona's Ring",back="Atheling Mantle",waist="Nusku's Sash",
legs="Pill. Culottes +1",feet="Raid. Poulaines +2"}
sets.TP.Evasion = {head="Espial Cap",body="Espial Gambison",hands="Espial Bracers",legs="Espial Hose",feet="Espial Socks",
ear1="Ethereal Earring",ear2="Elusive Earring",ring1="Heed Ring",neck="Torero Torque",back="Boxer's Mantle"}
Idle_Set_Names = {'Normal','MDT'}
sets.Idle = {}
sets.Idle.Normal = {head="Felistris Mask",neck="Asperity Necklace",ear1="Dudgeon Earring",ear2="Heartseeker Earring",
body="Thaumas Coat",hands="Pill. Armlets +1",ring1="Rajas Ring",ring2="Epona's Ring",
back="Atheling Mantle",waist="Nusku's Sash",legs="Pill. Culottes +1",feet="Skd. Jambeaux +1"}
sets.Idle.MDT = {head="Espial Cap",neck="Twilight Torque",ear1="Merman's Earring",ear2="Merman's Earring",
body="Avalon Breastplate",hands="Merman's Mittens",ring1="Minerva's Ring",ring2="Shadow Ring",legs="Espial Hose",
feet="Espial Socks"}
sets.midcast = {}
sets.midcast.Ranged = {head="Umbani Cap",body="Skadi's Cuirie +1",hands="Buremte Gloves",legs="Thur. Tights +1",feet="Pillager's Poulaines",
neck="Ej Necklace",waist="Elanid Belt",ear1="Clearview Earring",ear2="Volley Earring",ring1="Hajduk Ring",ring2="Hajduk Ring",
back="Jaeger Mantle"}
end
function precast(spell)
if sets.JA[spell.english] then
equip(sets.JA[spell.english])
elseif spell.type=="WeaponSkill" then
if sets.WS[spell.english] then equip(sets.WS[spell.english]) end
if buffactive['sneak attack'] and buffactive['trick attack'] and sets.WS.SATA[spell.english] then equip(sets.WS.SA[spell.english])
elseif buffactive['sneak attack'] and sets.WS.SA[spell.english] then equip(sets.WS.SA[spell.english])
elseif buffactive['trick attack'] and sets.WS.TA[spell.english] then equip(sets.WS.TA[spell.english]) end
end
end
function midcast(spell)
if spell.name=="Ranged" then
equip(sets.midcast.Ranged)
end
end
function aftercast(spell)
if player.status=='Engaged' then
equip(sets.TP[TP_Set_Names[TP_Index]])
else
equip(sets.Idle[Idle_Set_Names[Idle_Index]])
end
end
function status_change(new,old)
if T{'Idle','Resting'}:contains(new) then
equip(sets.Idle[Idle_Set_Names[Idle_Index]])
elseif new == 'Engaged' then
equip(sets.TP[TP_Set_Names[TP_Index]])
end
end
function buff_change(buff,gain_or_loss)
if buff=="Sneak Attack" then
soloSA = gain_or_loss
elseif buff=="Trick Attack" then
soloTA = gain_or_loss
end
end
function self_command(command)
if command == 'toggle TP set' then
TP_Index = TP_Index +1
if TP_Index > #TP_Set_Names then TP_Index = 1 end
send_command('@input /echo ----- TP Set changed to '..TP_Set_Names[TP_Index]..' -----')
equip(sets.TP[TP_Set_Names[TP_Index]])
elseif command == 'toggle Idle set' then
Idle_Index = Idle_Index +1
if Idle_Index > #Idle_Set_Names then Idle_Index = 1 end
send_command('@input /echo ----- Idle Set changed to '..Idle_Set_Names[Idle_Index]..' -----')
equip(sets.Idle[Idle_Set_Names[Idle_Index]])
end
end
By kithaofcerb 2014-09-27 00:09:55
Hello folks
I'm still fairly new to gearswap, so I decided to just take Bokura's DRK lua and edit it to my own gear, but it doesn't seem to be understanding the command "equipSet". How can I fix this?
I'm not sure how to get code to appear yet either, because noob. As soon as I figure that out I can post it and maybe that will help.
Thanks in advance
Edit: I think I've got it (posting my lua)
Code
current_mote_include_version = 2
function init_include()
Include('Mote-Globals.lua')
Include('Mote-Include.lua')
Include('Mote-SelfCommands.lua')
Include('Mote-Mappings.lua')
end
function get_sets()
equipSet = equipSet
AccIndex = 1
AccArray = {"LowACC","MidACC","HighACC"} -- 3 Levels Of Accuracy Sets For TP/WS/Hybrid/Stun. First Set Is LowACC. Add More ACC Sets If Needed Then Create Your New ACC Below. Most of These Sets Are Empty So You Need To Edit Them On Your Own. Remember To Check What The Combined Set Is For Each Sets. --
WeaponIndex = 1
WeaponArray = {"Apocalypse", "Senbaak Nagan"} -- Default Main Weapon Is Liberator. Can Delete Any Weapons/Sets That You Don't Need Or Replace/Add The New Weapons That You Want To Use. --
Armor = 'None'
Twilight = 'None'
Mekira = 'ON' -- Set Default Mekira ON or OFF Here --
target_distance = 5 -- Set Default Distance Here --
sets.Twilight = {head="Twilight Helm",body="Twilight Mail"}
-- TP Base Set --
sets.TP = {}
-- Senbaak Nagan TP set --
sets.TP.Ragnarok = {
main="Senbaak Nagan",
sub="Pole Grip",
ammo="Hagneia Stone",
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Trux Earring",
ear2="Brutal Earring",
body="Xaddi Mail",
hands="Cizin Mufflers +1",
ring1="K'ayres Ring",
ring2="Rajas Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Cizin Breeches +1",
feet="Mikinaak Greaves"}
sets.TP.Ragnarok.MidACC = set_combine(sets.TP.Ragnarok,{
head="Yaoyotl Helm",
neck="Iqabi Necklace",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
hands="Xaddi Gauntlets",
legs="Xaddi Cuisses"})
sets.TP.Ragnarok.HighACC = set_combine(sets.TP.Ragnarok.MidACC,{
waist="Anguinus Belt",
feet="Xaddi Boots"})
-- Apocalypse(AM Down) TP Sets --
sets.TP.Apocalypse = {
main="Apocalypse",
sub="Pole Grip",
ammo="Hagneia Stone",
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Trux Earring",
ear2="Brutal Earring",
body="Xaddi Mail",
hands="Cizin Mufflers +1",
ring1="K'ayres Ring",
ring2="Rajas Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Cizin Breeches +1",
feet="Mikinaak Greaves"}
sets.TP.Apocalypse.MidACC = set_combine(sets.TP.Apocalypse,{
head="Yaoyotl Helm",
neck="Iqabi Necklace",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
hands="Xaddi Gauntlets",
legs="Xaddi Cuisses"})
sets.TP.Apocalypse.HighACC = set_combine(sets.TP.Apocalypse.MidACC,{
waist="Anguinus Belt",
feet="Xaddi Boots"})
-- PDT/MDT Sets --
sets.PDT = {
head="Yaoyotl Helm",
neck="Twilight Torque",
body="Cizin Mail",
hands="Cizin Mufflers +1",
ring1="Dark Ring",
ring2="Dark Ring",
back="Repulse Mantle",
waist="Windbuffet Belt",
legs="Cizin Breeches +1",
feet="Cizin Greaves"}
sets.MDT = set_combine(sets.PDT,{
ammo="Demonry Stone",
head="Laeradr Helm",
ear1="Merman's Earring",
ear2="Sanare Earring",
body="Nocturnus Mail",
ring1="Shadow Ring",
back="Engulfer Cape",
waist="Resolute Belt"})
-- Hybrid Set --
sets.TP.Hybrid = set_combine(sets.PDT,{
head="Yaoyotl Helm",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
body="Xaddi Mail",
waist="Windbuffet Belt",
feet="Whirlpool Greaves"})
sets.TP.Hybrid.MidACC = set_combine(sets.TP.Hybrid,{neck="Iqabi Necklace"})
sets.TP.Hybrid.HighACC = set_combine(sets.TP.Hybrid.MidACC,{})
-- WS Base Set --
sets.WS = {}
-- Resolution Sets --
sets.WS.Resolution = {
ammo="Aqreqaq Bomblet",
head="Otomi Helm",
neck="Soil Gorget",
ear1="Trux Earring",
ear2="Brutal Earring",
body="Igno. Cuirass +1",
hands="Miki. Gauntlets",
ring1="K'ayres Ring",
ring2="Rajas Ring",
back="Atheling Mantle",
waist="Soil Belt",
legs="Igno. Flan. +1",
feet="Mikinaak Greaves"}
sets.WS.Resolution.MidACC = set_combine(sets.WS.Resolution,{
head="Yaoyotl Helm",
feet="Whirlpool Greaves"})
sets.WS.Resolution.HighACC = set_combine(sets.WS.Resolution.MidACC,{
legs="Xaddi Cuisses"})
-- Catastrophe Sets --
sets.WS.Catastrophe = {
ammo="Bomb Core",
head="Otomi Helm",
neck="Soil Gorget",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
body="Phorcys Korazin",
hands="Miki. Gauntlets",
ring1="Spiral Ring",
ring2="Rajas Ring",
back="Atheling Mantle",
waist="Soil Belt",
legs="Igno. Flan. +1",
feet="Mikinaak Greaves"}
sets.WS.Catastrophe.MidACC = set_combine(sets.WS.Catastrophe,{
head="Yaoyotl Helm",
feet="Whirlpool Greaves"})
sets.WS.Catastrophe.HighACC = sets.WS.Catastrophe.MidACC
-- Entropy Sets --
sets.WS.Entropy = {
ammo="Aqreqaq bomblet",
head="Otomi Helm",
neck="Soil Gorget",
ear1="Trux Earring",
ear2="Brutal Earring",
body="Igno. Cuirass +1",
hands="Miki. Gauntlets",
ring1="Spiral Ring",
ring2="Rajas Ring",
back="Atheling Mantle",
waist="Soil Belt",
legs="Igno. Flan. +1",
feet="Mikinaak Greaves"}
sets.WS.Entropy.MidACC = set_combine(sets.WS.Entropy,{
head="Yaoyotl Helm",
body="Mes. Haubergeon",
feet="Whirlpool Greaves"})
sets.WS.Entropy.HighACC = set_combine(sets.WS.Entropy.MidACC,{
body="Xaddi Body",
legs="Xaddi Cuisses"})
-- JA Sets --
sets.JA = {}
sets.JA["Blood Weapon"] = {body="Fallen's Cuirass"}
sets.JA["Diabolic Eye"] = {hands="Fall. Fin. Gaunt. +1"}
sets.JA["Nether Void"] = {legs="Bale Flanchard +2"}
sets.JA["Arcane Circle"] = {feet="Igno. Sollerets +1"}
sets.JA["Last Resort"] = {feet="Fall. Sollerets +1"}
sets.Precast = {}
-- Fastcast Set --
sets.Precast.FastCast = {
ammo="Impatiens",
ear1="Loquac. Earring",
ring1="Prolix Ring"}
-- Precast Dark Magic --
sets.Precast['Dark Magic'] = set_combine(sets.Precast.FastCast,{head="Fall. Burgeonet"})
-- Midcast Base Set --
sets.Midcast = {}
-- Magic Haste Set --
sets.Midcast.Haste = set_combine(sets.PDT,{})
-- Dark Magic Set --
sets.Midcast['Dark Magic'] = {
head="Igno. Burgeonet",
neck="Dark Torque",
ear1="Lifestorm Earring",
ear2="Psystorm Earring",
hands="Fall. Fin. Gauntlets",
ring1="Prolix Ring",
ring2="Perception Ring",
legs="Bale Flanchard +2",
feet="Scamp's Sollerets"}
-- Stun Sets --
sets.Midcast.Stun = set_combine(sets.Midcast['Dark Magic'],{})
-- Enfeebling Magic Set --
sets.Midcast['Enfeebling Magic'] = {body="Igno. Cuirass +1"}
-- Dread Spikes Set --
sets.Midcast['Dread Spikes'] = {
ammo="Egoist's Tathlum",
head="Ganesha's Mask",
neck="Dualism Collar",
ear1="Bloodgem Earring",
ear2="Cassie Earring",
body="Bale Cuirass +2",
hands="Ares' Gauntlets +1",
ring1="Bomb Queen Ring",
ring="Meridian Ring",
back="Strendu Mantle",
waist="Oneiros Belt",
legs="Osmium Cuisses",
feet="Llwyd's Clogs"}
end
function pretarget(spell,action)
if spell.action_type == 'Magic' and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
cancel_spell()
send_command('input /item "Echo Drops" <me>')
elseif spell.english == "Berserk" and buffactive.Berserk then -- Change Berserk To Aggressor If Berserk Is On --
cancel_spell()
send_command('Aggressor')
elseif spell.english == "Seigan" and buffactive.Seigan then -- Change Seigan To Third Eye If Seigan Is On --
cancel_spell()
send_command('ThirdEye')
elseif spell.english == "Meditate" and player.tp > 290 then -- Cancel Meditate If TP Is Above 290 --
cancel_spell()
add_to_chat(123, spell.name .. ' Canceled: ['..player.tp..' TP]')
elseif spell.type == "WeaponSkill" and spell.target.distance > target_distance and player.status == 'Engaged' then -- Cancel WS If You Are Out Of Range --
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Out of Range]')
return
end
end
function precast(spell,action)
if spell.type == "WeaponSkill" then
equipSet = sets.WS
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if Attack == 'ON' then
equipSet = equipSet["ATT"]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if spell.english == "Catastrophe" and (world.day_element == 'Dark' or world.day_element == 'Earth') and Mekira == 'ON' then
equipSet = set_combine(equipSet,{head="Mekira-oto"})
end
if spell.english == "Resolution" or spell.english == "Entropy" then
if spell.english == "Resolution" and (world.day_element == 'Thunder' or world.day_element == 'Wind' or world.day_element == 'Earth') and Mekira == 'ON' then
equipSet = set_combine(equipSet,{head="Mekira-oto"})
elseif spell.english == "Entropy" and (world.day_element == 'Dark' or world.day_element == 'Earth' or world.day_element == 'Water') and Mekira == 'ON' then
equipSet = set_combine(equipSet,{head="Mekira-oto"})
end
equip(equipSet)
if spell.type == "JobAbility" then
if sets.JA[spell.english] then
equip(sets.JA[spell.english])
end
if spell.action_type == 'Magic' then
if buffactive.silence or spell.target.distance > 16+target_distance then
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Silenced or Out of Casting Range]')
return
else
if spell.english == "Stun" then
if buffactive.Hasso or buffactive.Seigan then -- Cancel Hasso or Seigan When You Use Stun --
cast_delay(0.2)
send_command('cancel Hasso,Seigan')
end
equip(sets.Precast.FastCast)
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.name .. ' 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.english == 'Spectral Jig' and buffactive.Sneak then
cast_delay(0.2)
send_command('cancel Sneak')
end
if Twilight == 'Twilight' then
equip(sets.Twilight)
end
end
function midcast(spell,action)
equipSet = {}
if spell.type:endswith('Magic') or spell.type == 'Ninjutsu' then
equipSet = sets.Midcast
if string.find(spell.english,'Absorb') then
if buffactive["Dark Seal"] then -- Equip Aug'd Abs. Burgeonet +2 When You Have Dark Seal Up --
equipSet = set_combine(equipSet,{head="Abs. Burgeonet +2"})
end
elseif string.find(spell.english,'Drain') or string.find(spell.english,'Aspir') or string.find(spell.english,'Bio') then
if world.day == "Darksday" or world.weather_element == "Dark" then -- Equip Anrin Obi On Darksday or Dark Weather --
equipSet = set_combine(equipSet,{waist="Anrin Obi"})
end
elseif spell.english == "Stoneskin" then
if buffactive.Stoneskin then
send_command('@wait 1.7;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[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if equipSet[spell.skill] then
equipSet = equipSet[spell.skill]
end
if equipSet[spell.type] then
equipSet = equipSet[spell.type]
end
end
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
equip(equipSet)
end
function aftercast(spell,action)
if not spell.interrupted then
if spell.type == "WeaponSkill" then
send_command('wait 0.2;gs c TP')
elseif 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" then -- Sleep 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.]')
end
end
status_change(player.status)
end
function status_change(new,old)
if Armor == 'PDT' then
equip(sets.PDT)
elseif Armor == 'MDT' then
equip(sets.MDT)
elseif new == 'Engaged' then
equipSet = sets.TP
if Armor == 'Hybrid' and equipSet["Hybrid"] then
equipSet = equipSet["Hybrid"]
end
if equipSet[WeaponArray[WeaponIndex]] then
equipSet = equipSet[WeaponArray[WeaponIndex]]
end
if equipSet[player.sub_job] then
equipSet = equipSet[player.sub_job]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if equipSet[WeaponArray[WeaponIndex]] then
equipSet = equipSet[WeaponArray[WeaponIndex]]
end
equip(equipSet)
end
if Twilight == 'Twilight' then
equip(sets.Twilight)
end
end
-- In Game: //gs c (command), Macro: /console gs c (command), Bind: gs c (command) --
function self_command(command)
if command == 'C1' then -- Accuracy Level Toggle --
AccIndex = (AccIndex % #AccArray) + 1
status_change(player.status)
add_to_chat(158,'Accuracy Level: '..AccArray[AccIndex])
elseif command == 'C17' then -- Main Weapon Toggle --
WeaponIndex = (WeaponIndex % #WeaponArray) + 1
add_to_chat(158,'Main Weapon: '..WeaponArray[WeaponIndex])
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 == 'C2' then -- Hybrid Toggle --
if Armor == 'Hybrid' then
Armor = 'None'
add_to_chat(123,'Hybrid Set: [Unlocked]')
else
Armor = 'Hybrid'
add_to_chat(158,'Hybrid Set: '..AccArray[AccIndex])
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 == 'C15' then -- MDT Toggle --
if Armor == 'MDT' then
Armor = 'None'
add_to_chat(123,'MDT Set: [Unlocked]')
else
Armor = 'MDT'
add_to_chat(158,'MDT Set: [Locked]')
end
status_change(player.status)
elseif command == 'C10' then -- Mekira Toggle --
if Mekira == 'ON' then
Mekira = 'OFF'
add_to_chat(123,'Mekira: [OFF]')
else
Mekira = 'ON'
add_to_chat(158,'Mekira: [ON]')
end
status_change(player.status)
elseif command == 'C3' then -- Twilight Toggle --
if Twilight == 'Twilight' then
Twilight = 'None'
add_to_chat(123,'Twilight Set: [Unlocked]')
else
Twilight = 'Twilight'
add_to_chat(158,'Twilight Set: [locked]')
end
end
end
end
end
Edit2: Okay so I'm no longer getting the flow.lua error of not recognizing equipSet, but I'm also not getting any gear swapping happening at all. What am I doing wrong here ;(
Bismarck.Inference
サーバ: Bismarck
Game: FFXI
Posts: 417
By Bismarck.Inference 2014-09-28 23:27:15
Looking at buffs library "Aftermath: Lv.1" should work, replacing 1 with 2 and 3 as desired.
Timers would look something like this: Code
send_command('timers c "'..buff..'" 180 down')
Or incase my quotes are somewhat misplaced you could remove ..buff.. and just type Aftermath or something to make it more idiot proof:
Code
send_command('timers c "Aftermath" 180 down')
Assuming you're only looking for AM3 and not tossing around AM2 for mage jobs, second option would work fine.
Ragnarok.Flippant
サーバ: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2014-09-29 00:37:07
@Tidis
When does Feint need to be equipped, when you use it or when you hit it? I assume when you use it, in which case you'd only need to make a set called sets.JA.Feint = {legs="blahblah"}.
But to be safe, we can add it to your dd set too. You should put your engaged/idle rules into one place that is called from both aftercast and status_change, then add the if buffactive rule there. This saves on redundancy.
Code function aftercast(spell)
status_gear()
end
function status_change(new,old)
status_gear()
end
function status_gear()
if T{'Idle','Resting'}:contains(player.status) then
equip(sets.Idle[Idle_Set_Names[Idle_Index]])
elseif player.status == 'Engaged' then
equip(sets.TP[TP_Set_Names[TP_Index]])
if buffactive.Feint then
equip(sets.JA.Feint)
end
end
end
Now, be aware buffactive table seems to take more time to update than GS does to call these functions. You probably won't end up in your Feint gear after this. So, doing it without making an extra variable, you could do this instead:
Code function aftercast(spell)
if spell.english == "Feint" and not spell.interrupted then
return
else
status_gear()
end
end
function status_change(new,old)
status_gear()
end
function status_gear()
if T{'Idle','Resting'}:contains(player.status) then
equip(sets.Idle[Idle_Set_Names[Idle_Index]])
elseif player.status == 'Engaged' then
equip(sets.TP[TP_Set_Names[TP_Index]])
if buffactive.Feint then
equip(sets.JA.Feint)
end
end
end
function buff_change(buff,gain)
if buff=="Sneak Attack" then
soloSA = gain
elseif buff=="Trick Attack" then
soloTA = gain
elseif buff=="Feint" and not gain then
status_gear()
end
end
This will make it so your gear isn't automatically changed immediately after you use Feint, giving you a chance to be still wearing your pants for the hit (or time for buffactive to kick in right if you don't connect the hit until later). It will call the function again after you lose Feint so that you don't get stuck in those legs.
@kithaofcerb
A little confused about what you're trying to do, but you can't just combine Mote's templates with Bokura's. Use one or the other. Your copy and pasting around has resulted in what looks to be broken code.
By kithaofcerb 2014-09-29 16:39:57
Bumping for my post, very frustrating not being able to figure it out :(
Where is equipSet defined and why is my lua not recognizing it?
Ragnarok.Flippant
サーバ: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2014-09-29 17:19:19
Bumping for my post, very frustrating not being able to figure it out :(
Where is equipSet defined and why is my lua not recognizing it?
Again, your code is butchered. You're going to have to recopy either Mote's or Bokura's templates (not both into one file), and paste your sets back in.
If you want to understand your issue specifically, you've edited the original control flow of the precast function by changing a whole bunch of ifs to elseifs and vice versa. The starting point of this:
Code function precast(spell,action)
if spell.type == "WeaponSkill" then
equipSet = sets.WS
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
[...]
end
end
This code is saying if the spell is a WeaponSkill, then set the variable equipSet = sets.WS. If it is not a WeaponSkill, it will try to index equipSet, which is nil at this point. And since line 4 was changed to an elseif, every statement that follows has been disrupted (nevermind the fact that they have also been edited).
Recopy his file again ( http://pastebin.com/bG3yZh61), put your sets back in, and then if you still have an issue, post again.
By kithaofcerb 2014-09-29 18:40:31
Ragnarok.Flippant said: »Bumping for my post, very frustrating not being able to figure it out :(
Where is equipSet defined and why is my lua not recognizing it?
Again, your code is butchered. You're going to have to recopy either Mote's or Bokura's templates (not both into one file), and paste your sets back in.
If you want to understand your issue specifically, you've edited the original control flow of the precast function by changing a whole bunch of ifs to elseifs and vice versa. The starting point of this:
Code function precast(spell,action)
if spell.type == "WeaponSkill" then
equipSet = sets.WS
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
[...]
end
end
This code is saying if the spell is a WeaponSkill, then set the variable equipSet = sets.WS. If it is not a WeaponSkill, it will try to index equipSet, which is nil at this point. And since line 4 was changed to an elseif, every statement that follows has been disrupted (nevermind the fact that they have also been edited).
Recopy his file again ( http://pastebin.com/bG3yZh61), put your sets back in, and then if you still have an issue, post again.
Okay I think I understand it
I'm in class at the moment, so I just quickly put something together that if I'm understanding correctly, will fix my problem.
Code
function job_precast(spell, action, spellMap, eventArgs)
if spell.action_type == 'Magic' then
equip(sets.precast.DarkMagic)
elseif spell.type == 'Weaponskill' then
equipSet = sets.precast.WS
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
end
Thank you for your quick response
Edit: I realize I did EXACTLY what you told me I did wrong, and have now changed my lua. Will post again once I get home/get a chance to test it.
サーバ: Sylph
Game: FFXI
Posts: 17
By Sylph.Balthamos 2014-10-03 07:40:53
Hello all!
I've run into a bit of a problem, I am using Mote's BST.lua and I'm looking for a way to throw a pet at a mob and not engage. I have added...
Code -- Custom pet modes for engaged gear
state.PetMode = M{['description']='Pet Mode', 'Normal', 'PetTank'}
send_command('bind f8 gs c cycle PetMode')
and...
Code Send_command('unbind f8')
and my intended gear which i've put in the engaged sets section and looks like...
Code sets.engaged.PetTank = {main="Astolfo",ammo="Demonry Core",
head="Anwig Salade",neck="Ferine Necklace",ear1="Steelflash Earring",ear2="Bladeborn Earring",
body="Ankusa Jackcoat +1",hands="Totemic Gloves +1",ring1="Rajas Ring",ring2="Cho'j Band",
back="Ferine Mantle",waist="Primal Belt",legs="Ferine Quijotes +2",feet="Ankusa Gaiters +1",sub="Astolfo"}
and I can't seem to get it to work (I've got it set to Pet Tank via F8) anything i'm missing? O_o;
Cerberus.Ryger
サーバ: Cerberus
Game: FFXI
Posts: 22
By Cerberus.Ryger 2014-10-03 22:08:14
i'm not sure if its been posted alrdy but i'm having problems with something on whm.
i "was" able to use gearswap with marcos but idk what changed on it.
i use marcos for na spells, such as para stona ect. but they dont work anymore. Along with manually typing /ma "Stona" <t> doesnt work. hes my script if anyone can figure my problem out.
-- *** Credit goes to Flippant for helping me with Gearswap *** --
-- ** I Use Some Of Motenten's Functions ** --
-- Last Updated: 05/05/14 12:00 AM ** --
function get_sets()
IdleIndex = 1
IdleArray = {"Movement","Refresh"} -- Default Idle Set Is Movement --
Armor = 'None'
canceled = false
DC = false
Main = 'OFF' -- Set Default Main Weapon ON or OFF Here --
Enmity = 'OFF' -- Set Default Enmity Set ON or OFF Here --
Kiting = 'ON' -- Set Default Sublimation Kiting ON or OFF Here --
ElementalStaff = 'ON' -- Set Default Precast Elemental Staff 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 V","Cure VI"} -- Cure Degradation --
Curaga_Spells = {"Curaga","Curaga II","Curaga III","Curaga IV","Curaga V"} -- Curaga Degradation --
Na_Spells = S{"Paralyna","Cursna","Silena","Poisona","Blindna","Viruna","Stona","Erase"} -- For Yagrush --
sc_map = {SC1 = "LightArts", SC2 = "Celerity", SC3 = "Accession"} -- 3 Additional Binds. Can Change Whatever JA/WS/Spells You Like Here. Remember Not To Use Spaces. --
end
function pretarget(spell,action)
if midaction() then
add_to_chat(123, '****** ['..spell.name..' CANCELED] ******')
canceled = true
return
elseif spell.action_type == 'Magic' 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 Na_Spells:contains(spell.english) then -- Auto Divine Caress --
if windower.ffxi.get_ability_recasts()[32] < 1 and (spell.target.type == 'PLAYER' or spell.target.name == player.name) and not buffactive.amnesia and not buffactive.charm and spell.english ~= "Erase" then
cancel_spell()
send_command('DivineCaress;wait 1.7;input /ma "'..spell.english..'" '..spell.target.name)
end
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 canceled then
return
elseif spell.action_type == 'Magic' 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 == "Stoneskin" then
equip(sets.Precast[spell.english])
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.name .. ' 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 == "JobAbility" then
if sets.JA[spell.english] then
equip(sets.JA[spell.english])
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
else
if sets.WS[spell.english] then
equip(sets.WS[spell.english])
end
end
elseif spell.english == 'Spectral Jig' and buffactive.Sneak then
cast_delay(0.2)
send_command('cancel Sneak')
end
if sets.Precast[spell.element] and not Na_Spells:contains(spell.english) and ElementalStaff == 'ON' then
equip(sets.Precast[spell.element])
end
if Main == 'ON' then
equip(sets.MainWeapon)
end
end
function midcast(spell,action)
equipSet = {}
if spell.type:endswith('Magic') or spell.type == 'Ninjutsu' then
equipSet = sets.Midcast
if Na_Spells:contains(spell.english) then
equipSet = equipSet.Na
add_to_chat(158, '************* ['..spell.name..'] ************')
if DC then
equipSet = set_combine(equipSet,sets['Divine Caress'])
end
elseif string.find(spell.english,'Cur') and spell.english ~= "Cursna" then
if string.find(spell.english,'Cure') then
if Enmity == 'ON' then
equipSet = equipSet.Cure.Enmity
else
equipSet = equipSet.Cure
end
elseif string.find(spell.english,'Cura') then
if Enmity == 'ON' then
equipSet = equipSet.Curaga.Enmity
else
equipSet = equipSet.Curaga
end
end
if world.day_element == spell.element or world.weather_element == spell.element then
equipSet = set_combine(equipSet,{back="Twilight Cape",waist="Korin Obi"})
end
elseif spell.english == "Protectra V" then
equipSet = set_combine(equipSet,{feet="Piety Duckbills +1"})
elseif spell.english == "Shellra V" then
equipSet = set_combine(equipSet,{legs="Clr. Pantaln. +2"})
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,'Bar') then
equipSet = equipSet.Bar
elseif string.find(spell.english,'Regen') then
equipSet = equipSet.Regen
elseif string.find(spell.english,'Banish') then
equipSet = set_combine(equipSet,{hands="Clr. Mitts +2",ring1="Fenian Ring"})
elseif string.find(spell.english,'Reraise') then
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[spell.type] then
equipSet = equipSet[spell.type]
end
end
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
equip(equipSet)
if Main == 'ON' then
equip(sets.MainWeapon)
end
end
function aftercast(spell,action)
if canceled then
canceled = false
return
else
if not spell.interrupted then
if spell.type == "WeaponSkill" then
send_command('wait 0.2;gs c TP')
elseif (spell.english == "Repose" or spell.english == "Sleep II") then -- Repose & 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 III" then -- Banish III Countdown --
send_command('wait 35;input /echo Banish Effect: [WEARING OFF IN 10 SEC.]')
end
end
status_change(player.status)
end
end
function status_change(new,old)
if Armor == 'PDT' then
equip(sets.PDT)
elseif buffactive["Sublimation: Activated"] then
equip(sets.Sublimation)
if Kiting == 'ON' then
equip({feet="Herald's Gaiters"})
end
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 Main == 'ON' then
equip(sets.MainWeapon)
end
end
function buff_change(buff,gain)
buff = string.lower(buff)
if buff == "aftermath: lv.3" then -- AM3 Timer --
if gain then
send_command('timers create "Aftermath: Lv.3" 180 down AM3.png;wait 120;input /echo Aftermath: Lv.3 [WEARING OFF IN 60 SEC.];wait 30;input /echo Aftermath: Lv.3 [WEARING OFF IN 30 SEC.];wait 20;input /echo Aftermath: Lv.3 [WEARING OFF IN 10 SEC.]')
else
send_command('timers delete "Aftermath: Lv.3"')
add_to_chat(123,'AM3: [OFF]')
end
elseif buff == 'divine caress' then
DC = gain
elseif 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 -- Enmity Toggle --
if Enmity == 'ON' then
Enmity = 'OFF'
add_to_chat(123,'Enmity Set: [OFF]')
else
Enmity = 'ON'
add_to_chat(158,'Enmity Set: [ON]')
end
status_change(player.status)
elseif command == 'C2' then -- Follow Toggle --
send_command('input /ta Bokura;input /lockon;wait .3;setkey numpad8 down;wait .3;setkey numpad7 down;wait .3;setkey numpad7 up;wait .3;setkey numpad8 up')
elseif command == 'C3' then -- Kiting Toggle --
if Kiting == 'ON' then
Kiting = 'OFF'
add_to_chat(123,'Kiting Set: [Unlocked]')
else
Kiting = 'ON'
add_to_chat(158,'Kiting 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 == 'C7' then
if Armor == 'PDT' then -- PDT Toggle --
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 == 'C17' then -- Main Weapon Toggle --
if Main == 'ON' then
Main = 'OFF'
add_to_chat(123,'Main Weapon: [Unlocked]')
else
Main = 'ON'
add_to_chat(158,'Main Weapon: [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 == 'TP' then
add_to_chat(158,'TP Return: '..tostring(player.tp))
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"] or buffactive["Addendum: White"] then
return originalCost*.9
elseif buffactive["Dark Arts"] or buffactive["Addendum: Black"] then
return originalCost*1.1
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 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 == 'SCH' then
set_macro_page(1, 1)
elseif player.sub_job == 'BLM' then
set_macro_page(1, 1)
elseif player.sub_job == 'RDM' then
set_macro_page(1, 1)
elseif player.sub_job == 'DNC' then
set_macro_page(10, 18)
elseif player.sub_job == 'NIN' then
set_macro_page(5, 18)
else
set_macro_page(1, 18)
end
end
Sylph.Aeo
サーバ: Sylph
Game: FFXI
Posts: 22
By Sylph.Aeo 2014-10-04 22:40:48
This one is killing me...
http://pastebin.com/G295cmEf
My whole precast function doesn't seem to be kicking in at all, I've tried it a bunch of different ways, but it's basically a copy of the one I have for RNG which works just fine. I'm assuming it's some other part of my code where I made a dumb mistake that's causing this part not to work, but I'm very lost. Here's just the precast part:
http://pastebin.com/0uuZLXan
Thanks in advance~
Bismarck.Inference
サーバ: Bismarck
Game: FFXI
Posts: 417
By Bismarck.Inference 2014-10-04 22:47:44
I believe functions are case sensitive(?), trying changing it to function precast(spell) instead of function Precast.
Sylph.Aeo
サーバ: Sylph
Game: FFXI
Posts: 22
By Sylph.Aeo 2014-10-05 01:16:47
Bismarck.Inference said: »I believe functions are case sensitive(?), trying changing it to function precast(spell) instead of function Precast.
This totally fixed it. Which I don't get, because my RNG one works with the capital P... I haven't used it in a while though, maybe it changed or something.
Either way, thanks for the help!
Leviathan.Arcon
VIP
サーバ: Leviathan
Game: FFXI
Posts: 666
By Leviathan.Arcon 2014-10-05 02:08:28
It didn't change, not just function names, but variable names as well. The only things that aren't case sensitive are certain in-game names (buff names, item names, things like that), although possibly not all. Case-sensitivity is a typical Lua thing, Byrth and Motenten have to work around the language in all the places that are case-insensitive.
By kithaofcerb 2014-10-06 12:16:33
Hello folks
I'm using Bokura's DRK.lua with all my gearsets in it. It's stable, but changing accuracy tiers doesn't work, as well as the mekira swaps.
Here is the lua
Code
-- *** Credit goes to Flippant for helping me with Gearswap *** --
-- ** I Use Some of Motenten's Functions ** --
-- Last Updated: 05/05/14 12:00 AM ** --
function get_sets()
AccIndex = 1
AccArray = {"LowACC","MidACC","HighACC"} -- 3 Levels Of Accuracy Sets For TP/WS/Hybrid/Stun. First Set Is LowACC. Add More ACC Sets If Needed Then Create Your New ACC Below. Most of These Sets Are Empty So You Need To Edit Them On Your Own. Remember To Check What The Combined Set Is For Each Sets. --
WeaponIndex = 1
WeaponArray = {"Apocalypse", "Senbaak"}
IdleIndex = 1
IdleArray = {"Movement","Regen"}
Armor = 'None'
Twilight = 'None'
Attack = 'OFF' -- Set Default Attack Set ON or OFF Here --
Rancor = 'OFF' -- Set Default Rancor ON or OFF Here --
Mekira = 'ON' -- Set Default Mekira ON or OFF Here --
Samurai_Roll = 'OFF' -- Set Default SAM Roll ON or OFF Here --
target_distance = 5 -- Set Default Distance Here --
sc_map = {SC1="Resolution", SC2="LastResort", SC3="Souleater"} -- 3 Additional Binds. Can Change Whatever JA/WS/Spells You Like Here. Remember Not To Use Spaces. --
sets.Idle = {}
-- Idle/Town Sets --
sets.Idle.Regen = {
ammo="Hagneia Stone",
head="Twilight Helm",
neck="Wiglen Gorget",
ear1="Black Earring",
ear2="Dawn Earring",
body="Kumarbi's Akar",
hands="Cizin Mufflers +1",
ring1="Sheltered Ring",
ring2="Paguroidea Ring",
back="Repulse Mantle",
waist="Lycopodium Sash",
legs="Blood Cuisses",
feet="Huginn Gambieras"}
sets.Idle.Regen.Senbaak = set_combine(sets.Idle.Regen,{
main="Senbaak",
sub="Pole Grip"})
sets.Idle.Regen.Apocalypse = set_combine(sets.Idle.Regen,{
main="Apocalypse",
sub="Pole Grip"})
sets.Idle.Movement = set_combine(sets.Idle.Regen,{
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
body="Pak Corselet +1",
ring1="Patricius Ring",
ring2="Defending Ring",
waist="Goading Belt"})
sets.Idle.Movement.Senbaak = set_combine(sets.Idle.Movement,{
main="Senbaak",
sub="Pole Grip"})
sets.Idle.Movement.Apocalypse = set_combine(sets.Idle.Movement,{
main="Apocalypse",
sub="Pole Grip"})
sets.Idle.Refresh = set_combine(sets.Idle.Regen,{
head="Wivre Hairpin",
body="Twilight Mail",})
sets.Idle.Refresh.Senbaak = set_combine(sets.Idle.Refresh,{
main="Senbaak",
sub="Pole Grip"})
sets.Idle.Refresh.Apocalypse = set_combine(sets.Idle.Refresh,{
main="Apocalypse",
sub="Pole Grip"})
sets.Twilight = {head="Twilight Helm",body="Twilight Mail"}
end
-- TP Base Set --
sets.TP = {}
sets.TP = {
ammo="Hagneia stone",
head="Otomi helm",
neck="Asperity necklace",
ear1="Trux earring",
ear2="Brutal earring",
body="Xaddi mail",
hands="Cizin mufflers +1",
ring1="Rajas Ring",
ring2="K'ayres ring",
back="Atheling mantle",
waist="Windbuffet belt",
legs="Cizin breeches +1",
feet="Xaddi boots"}
-- Senbaak Nagan TP Sets --
sets.TP.Senbaak = {
main="Senbaak Nagan",
sub="Pole Grip",
ammo="Hagneia Stone",
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Trux Earring",
ear2="Brutal Earring",
body="Pak Corselet +1",
hands="Cizin Mufflers +1",
ring1="K'ayres Ring",
ring2="Rajas Ring",
back="Atheling Mantle",
waist="Goading Belt",
legs="Ares' Flanchard +1",
feet="Mikinaak Greaves"}
sets.TP.Senbaak.MidACC = set_combine(sets.TP.Senbaak,{
head="Yaoyotl Helm",
neck="Ziel Charm",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
body="Xaddi Mail",
hands="Xaddi Gauntlets",
back="Letalis Mantle",
legs="Xaddi Cuisses"})
sets.TP.Senbaak.HighACC = set_combine(sets.TP.Senbaak.MidACC,{
body="Mes. Haubergeon",
ring1="Mars's Ring",
waist="Dynamic Belt +1",
feet="Xaddi Boots"})
-- Senbaak(High Haste) TP Sets --
sets.TP.Senbaak.HighHaste = set_combine(sets.TP.Senbaak,{})
sets.TP.Senbaak.MidACC.HighHaste = set_combine(sets.TP.Senbaak.HighHaste,{})
sets.TP.Senbaak.HighACC.HighHaste = set_combine(sets.TP.Senbaak.MidACC.HighHaste,{})
-- Senbaak(Ionis) TP Sets --
sets.TP.Senbaak.Ionis = set_combine(sets.TP.Senbaak,{})
sets.TP.Senbaak.MidACC.Ionis = set_combine(sets.TP.Senbaak.Ionis,{})
sets.TP.Senbaak.HighACC.Ionis = set_combine(sets.TP.Senbaak.MidACC.Ionis,{})
-- Senbaak(High Haste + Ionis) TP Sets --
sets.TP.Senbaak.HighHaste.Ionis = set_combine(sets.TP.Senbaak.HighHaste,{})
sets.TP.Senbaak.MidACC.HighHaste.Ionis = set_combine(sets.TP.Senbaak.HighHaste.Ionis,{})
sets.TP.Senbaak.HighACC.HighHaste.Ionis = set_combine(sets.TP.Senbaak.MidACC.HighHaste.Ionis,{})
-- Senbaak(SAM Roll) TP Sets --
sets.TP.Senbaak.STP = set_combine(sets.TP.Senbaak,{})
sets.TP.Senbaak.MidACC.STP = set_combine(sets.TP.Senbaak.MidACC,{})
sets.TP.Senbaak.HighACC.STP = set_combine(sets.TP.Senbaak.HighACC,{})
-- Senbaak(High Haste + SAM Roll) TP Sets --
sets.TP.Senbaak.HighHaste.STP = set_combine(sets.TP.Senbaak.HighHaste,{})
sets.TP.Senbaak.MidACC.HighHaste.STP = set_combine(sets.TP.Senbaak.MidACC.HighHaste,{})
sets.TP.Senbaak.HighACC.HighHaste.STP = set_combine(sets.TP.Senbaak.HighACC.HighHaste,{})
-- Senbaak(Ionis + SAM Roll) TP Sets --
sets.TP.Senbaak.Ionis.STP = set_combine(sets.TP.Senbaak.Ionis,{})
sets.TP.Senbaak.MidACC.Ionis.STP = set_combine(sets.TP.Senbaak.MidACC.Ionis,{})
sets.TP.Senbaak.HighACC.Ionis.STP = set_combine(sets.TP.Senbaak.HighACC.Ionis,{})
-- Senbaak(High Haste + Ionis + SAM Roll) TP Sets --
sets.TP.Senbaak.HighHaste.Ionis.STP = set_combine(sets.TP.Senbaak.HighHaste,{})
sets.TP.Senbaak.MidACC.HighHaste.Ionis.STP = set_combine(sets.TP.Senbaak.MidACC.HighHaste,{})
sets.TP.Senbaak.HighACC.HighHaste.Ionis.STP = set_combine(sets.TP.Senbaak.HighACC.HighHaste,{})
-- Apocalypse(AM Down) TP Sets --
sets.TP.Apocalypse = {
main="Apocalypse",
sub="Pole Grip",
ammo="Hagneia Stone",
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Trux Earring",
ear2="Brutal Earring",
body="Pak Corselet +1",
hands="Cizin Mufflers +1",
ring1="K'ayres Ring",
ring2="Rajas Ring",
back="Atheling Mantle",
waist="Goading Belt",
legs="Ares' Flanchard +1",
feet="Mikinaak Greaves"}
sets.TP.Apocalypse.MidACC = set_combine(sets.TP.Apocalypse,{
head="Yaoyotl Helm",
neck="Ziel Charm",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
body="Xaddi Mail",
hands="Xaddi Gauntlets",
back="Letalis Mantle",
legs="Xaddi Cuisses"})
sets.TP.Apocalypse.HighACC = set_combine(sets.TP.Apocalypse.MidACC,{
body="Mes. Haubergeon",
ring1="Mars's Ring",
waist="Dynamic Belt +1",
feet="Xaddi Boots"})
-- Apocalypse(AM Up) TP Sets --
sets.TP.Apocalypse.AM = set_combine(sets.TP.Apocalypse,{})
sets.TP.Apocalypse.MidACC.AM = set_combine(sets.TP.Apocalypse.AM,{})
sets.TP.Apocalypse.HighACC.AM = set_combine(sets.TP.Apocalypse.MidACC.AM,{})
-- Apocalypse(AM Down: High Haste) TP Sets --
sets.TP.Apocalypse.HighHaste = set_combine(sets.TP.Apocalypse,{})
sets.TP.Apocalypse.MidACC.HighHaste = set_combine(sets.TP.Apocalypse.HighHaste,{})
sets.TP.Apocalypse.HighACC.HighHaste = set_combine(sets.TP.Apocalypse.MidACC.HighHaste,{})
-- Apocalypse(AM Up: High Haste) TP Sets --
sets.TP.Apocalypse.AM.HighHaste = set_combine(sets.TP.Apocalypse.AM,{})
sets.TP.Apocalypse.MidACC.AM.HighHaste = set_combine(sets.TP.Apocalypse.AM.HighHaste,{})
sets.TP.Apocalypse.HighACC.AM.HighHaste = set_combine(sets.TP.Apocalypse.MidACC.AM.HighHaste,{})
-- Apocalypse(AM Down: Ionis) TP Sets --
sets.TP.Apocalypse.Ionis = set_combine(sets.TP.Apocalypse,{})
sets.TP.Apocalypse.MidACC.Ionis = set_combine(sets.TP.Apocalypse.Ionis,{})
sets.TP.Apocalypse.HighACC.Ionis = set_combine(sets.TP.Apocalypse.MidACC.Ionis,{})
-- Apocalypse(AM Up: Ionis) TP Sets --
sets.TP.Apocalypse.AM.Ionis = set_combine(sets.TP.Apocalypse.AM,{})
sets.TP.Apocalypse.MidACC.AM.Ionis = set_combine(sets.TP.Apocalypse.AM.Ionis,{})
sets.TP.Apocalypse.HighACC.AM.Ionis= set_combine(sets.TP.Apocalypse.MidACC.AM.Ionis,{})
-- Apocalypse(AM Down: High Haste + Ionis) TP Sets --
sets.TP.Apocalypse.HighHaste.Ionis = set_combine(sets.TP.Apocalypse.HighHaste,{})
sets.TP.Apocalypse.MidACC.HighHaste.Ionis = set_combine(sets.TP.Apocalypse.HighHaste.Ionis,{})
sets.TP.Apocalypse.HighACC.HighHaste.Ionis = set_combine(sets.TP.Apocalypse.MidACC.HighHaste.Ionis,{})
-- Apocalypse(AM Up: High Haste + Ionis) TP Sets --
sets.TP.Apocalypse.AM.HighHaste.Ionis = set_combine(sets.TP.Apocalypse.AM.HighHaste,{})
sets.TP.Apocalypse.MidACC.AM.HighHaste.Ionis = set_combine(sets.TP.Apocalypse.AM.HighHaste.Ionis,{})
sets.TP.Apocalypse.HighACC.AM.HighHaste.Ionis = set_combine(sets.TP.Apocalypse.MidACC.AM.HighHaste.Ionis,{})
-- Apocalypse(AM Down: SAM Roll) TP Sets --
sets.TP.Apocalypse.STP = set_combine(sets.TP.Apocalypse,{})
sets.TP.Apocalypse.MidACC.STP = set_combine(sets.TP.Apocalypse.MidACC,{})
sets.TP.Apocalypse.HighACC.STP = set_combine(sets.TP.Apocalypse.HighACC,{})
-- Apocalypse(AM Up: SAM Roll) TP Sets --
sets.TP.Apocalypse.AM.STP = set_combine(sets.TP.Apocalypse.AM,{})
sets.TP.Apocalypse.MidACC.AM.STP = set_combine(sets.TP.Apocalypse.MidACC.AM,{})
sets.TP.Apocalypse.HighACC.AM.STP = set_combine(sets.TP.Apocalypse.HighACC.AM,{})
-- Apocalypse(AM Down: High Haste + SAM Roll) TP Sets --
sets.TP.Apocalypse.HighHaste.STP = set_combine(sets.TP.Apocalypse.HighHaste,{})
sets.TP.Apocalypse.MidACC.HighHaste.STP = set_combine(sets.TP.Apocalypse.MidACC.HighHaste,{})
sets.TP.Apocalypse.HighACC.HighHaste.STP = set_combine(sets.TP.Apocalypse.HighACC.HighHaste,{})
-- Apocalypse(AM Up: High Haste + SAM Roll) TP Sets --
sets.TP.Apocalypse.AM.HighHaste.STP = set_combine(sets.TP.Apocalypse.HighHaste,{})
sets.TP.Apocalypse.MidACC.AM.HighHaste.STP = set_combine(sets.TP.Apocalypse.MidACC.HighHaste,{})
sets.TP.Apocalypse.HighACC.AM.HighHaste.STP = set_combine(sets.TP.Apocalypse.HighACC.HighHaste,{})
-- Apocalypse(AM Down: Ionis + SAM Roll) TP Sets --
sets.TP.Apocalypse.Ionis.STP = set_combine(sets.TP.Apocalypse.Ionis,{})
sets.TP.Apocalypse.MidACC.Ionis.STP = set_combine(sets.TP.Apocalypse.MidACC.Ionis,{})
sets.TP.Apocalypse.HighACC.Ionis.STP = set_combine(sets.TP.Apocalypse.HighACC.Ionis,{})
-- Apocalypse(AM Up: Ionis + SAM Roll) TP Sets --
sets.TP.Apocalypse.AM.Ionis.STP = set_combine(sets.TP.Apocalypse.AM,{})
sets.TP.Apocalypse.MidACC.AM.Ionis.STP = set_combine(sets.TP.Apocalypse.MidACC.AM,{})
sets.TP.Apocalypse.HighACC.AM.Ionis.STP = set_combine(sets.TP.Apocalypse.HighACC.AM,{})
-- Apocalypse(AM Down: High Haste + Ionis + SAM Roll) TP Sets --
sets.TP.Apocalypse.HighHaste.Ionis.STP = set_combine(sets.TP.Apocalypse.HighHaste,{})
sets.TP.Apocalypse.MidACC.HighHaste.Ionis.STP = set_combine(sets.TP.Apocalypse.MidACC.HighHaste,{})
sets.TP.Apocalypse.HighACC.HighHaste.Ionis.STP = set_combine(sets.TP.Apocalypse.HighACC.HighHaste,{})
-- Apocalypse(AM Up: High Haste + Ionis + SAM Roll) TP Sets --
sets.TP.Apocalypse.AM.HighHaste.Ionis.STP = set_combine(sets.TP.Apocalypse.HighHaste,{})
sets.TP.Apocalypse.MidACC.AM.HighHaste.Ionis.STP = set_combine(sets.TP.Apocalypse.MidACC.HighHaste,{})
sets.TP.Apocalypse.HighACC.AM.HighHaste.Ionis.STP = set_combine(sets.TP.Apocalypse.HighACC.HighHaste,{})
sets.TP.Apocalypse.AM.LastResort = set_combine(sets.TP.Apocalypse,{feet="Fallen's Sollerets"})
sets.TP.Apocalypse.AM.LastResort.MidACC = set_combine(sets.TP.Apocalypse.MidACC,{feet="Fallen's Sollerets"})
sets.TP.Apocalypse.AM.LastResort.HighACC = set_combine(sets.TP.Apocalypse.HighACC,{feet="Fallen's Sollerets"})
-- Senbaak /SAM TP Sets --
sets.TP.Senbaak.SAM = {
main="Senbaak",
sub="Pole Grip",
ammo="Hagneia Stone",
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Trux Earring",
ear2="Brutal Earring",
body="Xaddi Mail",
hands="Cizin Mufflers +1",
ring1="K'ayres Ring",
ring2="Rajas Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Cizin Breeches +1",
feet="Mikinaak Greaves"}
sets.TP.Senbaak.SAM.MidACC = set_combine(sets.TP.Senbaak.SAM,{
head="Yaoyotl Helm",
neck="Iqabi necklace",
feet="Xaddi boots",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
hands="Xaddi Gauntlets",
back="Letalis Mantle",
legs="Xaddi Cuisses"})
sets.TP.Senbaak.SAM.HighACC = set_combine(sets.TP.Senbaak.SAM.MidACC,{
waist="Anguinus Belt"})
-- Senbaak(High Haste) /SAM TP Sets --
sets.TP.Senbaak.SAM.HighHaste = set_combine(sets.TP.Senbaak.SAM,{})
sets.TP.Senbaak.SAM.MidACC.HighHaste = set_combine(sets.TP.Senbaak.SAM.HighHaste,{})
sets.TP.Senbaak.SAM.HighACC.HighHaste = set_combine(sets.TP.Senbaak.SAM.MidACC.HighHaste,{})
-- Senbaak(Ionis) /SAM TP Sets --
sets.TP.Senbaak.SAM.Ionis = set_combine(sets.TP.Senbaak.SAM,{})
sets.TP.Senbaak.SAM.MidACC.Ionis = set_combine(sets.TP.Senbaak.SAM.Ionis,{})
sets.TP.Senbaak.SAM.HighACC.Ionis = set_combine(sets.TP.Senbaak.SAM.MidACC.Ionis,{})
-- Senbaak(High Haste + Ionis) /SAM TP Sets --
sets.TP.Senbaak.SAM.HighHaste.Ionis = set_combine(sets.TP.Senbaak.SAM.HighHaste,{})
sets.TP.Senbaak.SAM.MidACC.HighHaste.Ionis = set_combine(sets.TP.Senbaak.SAM.HighHaste.Ionis,{})
sets.TP.Senbaak.SAM.HighACC.HighHaste.Ionis = set_combine(sets.TP.Senbaak.SAM.MidACC.HighHaste.Ionis,{})
-- Senbaak(SAM Roll) /SAM TP Sets --
sets.TP.Senbaak.SAM.STP = set_combine(sets.TP.Senbaak.SAM,{})
sets.TP.Senbaak.SAM.MidACC.STP = set_combine(sets.TP.Senbaak.SAM.MidACC,{})
sets.TP.Senbaak.SAM.HighACC.STP = set_combine(sets.TP.Senbaak.SAM.HighACC,{})
-- Senbaak(High Haste + SAM Roll) /SAM TP Sets --
sets.TP.Senbaak.SAM.HighHaste.STP = set_combine(sets.TP.Senbaak.SAM.HighHaste,{})
sets.TP.Senbaak.SAM.MidACC.HighHaste.STP = set_combine(sets.TP.Senbaak.SAM.MidACC.HighHaste,{})
sets.TP.Senbaak.SAM.HighACC.HighHaste.STP = set_combine(sets.TP.Senbaak.SAM.HighACC.HighHaste,{})
-- Senbaak(Ionis + SAM Roll) /SAM TP Sets --
sets.TP.Senbaak.SAM.Ionis.STP = set_combine(sets.TP.Senbaak.SAM.Ionis,{})
sets.TP.Senbaak.SAM.MidACC.Ionis.STP = set_combine(sets.TP.Senbaak.SAM.MidACC.Ionis,{})
sets.TP.Senbaak.SAM.HighACC.Ionis.STP = set_combine(sets.TP.Senbaak.SAM.HighACC.Ionis,{})
-- Senbaak(High Haste + Ionis + SAM Roll) /SAM TP Sets --
sets.TP.Senbaak.SAM.HighHaste.Ionis.STP = set_combine(sets.TP.Senbaak.SAM.HighHaste,{})
sets.TP.Senbaak.SAM.MidACC.HighHaste.Ionis.STP = set_combine(sets.TP.Senbaak.SAM.MidACC.HighHaste,{})
sets.TP.Senbaak.SAM.HighACC.HighHaste.Ionis.STP = set_combine(sets.TP.Senbaak.SAM.HighACC.HighHaste,{})
sets.TP.Senbaak.SAM.LastResort = set_combine(sets.TP.Senbaak.SAM,{feet="Fallen's Sollerets"})
sets.TP.Senbaak.SAM.LastResort.MidACC = set_combine(sets.TP.Senbaak.SAM.MidACC,{feet="Fallen's Sollerets"})
sets.TP.Senbaak.SAM.LastResort.HighACC = set_combine(sets.TP.Senbaak.SAM.HighACC,{feet="Fallen's Sollerets"})
-- Apocalypse(AM Down) /SAM TP Sets --
sets.TP.Apocalypse.SAM = {
main="Apocalypse",
sub="Pole Grip",
ammo="Hagneia Stone",
head="Otomi Helm",
neck="Asperity Necklace",
ear1="Trux Earring",
ear2="Brutal Earring",
body="Xaddi Mail",
hands="Cizin Mufflers +1",
ring1="K'ayres Ring",
ring2="Rajas Ring",
back="Atheling Mantle",
waist="Windbuffet Belt",
legs="Cizin Breeches +1",
feet="Mikinaak Greaves"}
sets.TP.Apocalypse.SAM.MidACC = set_combine(sets.TP.Apocalypse.SAM,{
head="Yaoyotl Helm",
neck="Iqabi Necklace",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
hands="Xaddi Gauntlets",
back="Letalis Mantle",
legs="Xaddi Cuisses",
feet="Xaddi Boots"})
sets.TP.Apocalypse.SAM.HighACC = set_combine(sets.TP.Apocalypse.SAM.MidACC,{
body="Mes. Haubergeon",
ring1="Mars's Ring",
waist="Anguinus Belt"})
-- Apocalypse(AM Up) /SAM TP Sets --
sets.TP.Apocalypse.SAM.AM = set_combine(sets.TP.Apocalypse.SAM,{})
sets.TP.Apocalypse.SAM.MidACC.AM = set_combine(sets.TP.Apocalypse.SAM.AM,{})
sets.TP.Apocalypse.SAM.HighACC.AM = set_combine(sets.TP.Apocalypse.SAM.MidACC.AM,{})
-- Apocalypse(AM Down: High Haste) /SAM TP Sets --
sets.TP.Apocalypse.SAM.HighHaste = set_combine(sets.TP.Apocalypse.SAM,{})
sets.TP.Apocalypse.SAM.MidACC.HighHaste = set_combine(sets.TP.Apocalypse.SAM.HighHaste,{})
sets.TP.Apocalypse.SAM.HighACC.HighHaste = set_combine(sets.TP.Apocalypse.SAM.MidACC.HighHaste,{})
-- Apocalypse(AM Up: High Haste) /SAM TP Sets --
sets.TP.Apocalypse.SAM.AM.HighHaste = set_combine(sets.TP.Apocalypse.SAM.AM,{})
sets.TP.Apocalypse.SAM.MidACC.AM.HighHaste = set_combine(sets.TP.Apocalypse.SAM.AM.HighHaste,{})
sets.TP.Apocalypse.SAM.HighACC.AM.HighHaste = set_combine(sets.TP.Apocalypse.SAM.MidACC.AM.HighHaste,{})
-- Apocalypse(AM Down: Ionis) /SAM TP Sets --
sets.TP.Apocalypse.SAM.Ionis = set_combine(sets.TP.Apocalypse.SAM,{})
sets.TP.Apocalypse.SAM.MidACC.Ionis = set_combine(sets.TP.Apocalypse.SAM.Ionis,{})
sets.TP.Apocalypse.SAM.HighACC.Ionis = set_combine(sets.TP.Apocalypse.SAM.MidACC.Ionis,{})
-- Apocalypse(AM Up: Ionis) /SAM TP Sets --
sets.TP.Apocalypse.SAM.AM.Ionis = set_combine(sets.TP.Apocalypse.SAM.AM,{})
sets.TP.Apocalypse.SAM.MidACC.AM.Ionis = set_combine(sets.TP.Apocalypse.SAM.AM.Ionis,{})
sets.TP.Apocalypse.SAM.HighACC.AM.Ionis = set_combine(sets.TP.Apocalypse.SAM.MidACC.AM.Ionis,{})
-- Apocalypse(AM Down: High Haste + Ionis) /SAM TP Sets --
sets.TP.Apocalypse.SAM.HighHaste.Ionis = set_combine(sets.TP.Apocalypse.SAM.HighHaste,{})
sets.TP.Apocalypse.SAM.MidACC.HighHaste.Ionis = set_combine(sets.TP.Apocalypse.SAM.HighHaste.Ionis,{})
sets.TP.Apocalypse.SAM.HighACC.HighHaste.Ionis = set_combine(sets.TP.Apocalypse.SAM.MidACC.HighHaste.Ionis,{})
-- Apocalypse(AM Up: High Haste + Ionis) /SAM TP Sets --
sets.TP.Apocalypse.SAM.AM.HighHaste.Ionis = set_combine(sets.TP.Apocalypse.SAM.AM.HighHaste,{})
sets.TP.Apocalypse.SAM.MidACC.AM.HighHaste.Ionis = set_combine(sets.TP.Apocalypse.SAM.AM.HighHaste.Ionis,{})
sets.TP.Apocalypse.SAM.HighACC.AM.HighHaste.Ionis = set_combine(sets.TP.Apocalypse.SAM.MidACC.AM.HighHaste.Ionis,{})
-- Apocalypse(AM Down: SAM Roll) /SAM TP Sets --
sets.TP.Apocalypse.SAM.STP = set_combine(sets.TP.Apocalypse.SAM,{})
sets.TP.Apocalypse.SAM.MidACC.STP = set_combine(sets.TP.Apocalypse.SAM.MidACC,{})
sets.TP.Apocalypse.SAM.HighACC.STP = set_combine(sets.TP.Apocalypse.SAM.HighACC,{})
-- Apocalypse(AM Up: SAM Roll) /SAM TP Sets --
sets.TP.Apocalypse.SAM.AM.STP = set_combine(sets.TP.Apocalypse.SAM.AM,{})
sets.TP.Apocalypse.SAM.MidACC.AM.STP = set_combine(sets.TP.Apocalypse.SAM.MidACC.AM,{})
sets.TP.Apocalypse.SAM.HighACC.AM.STP = set_combine(sets.TP.Apocalypse.SAM.HighACC.AM,{})
-- Apocalypse(AM Down: High Haste + SAM Roll) /SAM TP Sets --
sets.TP.Apocalypse.SAM.HighHaste.STP = set_combine(sets.TP.Apocalypse.SAM.HighHaste,{})
sets.TP.Apocalypse.SAM.MidACC.HighHaste.STP = set_combine(sets.TP.Apocalypse.SAM.MidACC.HighHaste,{})
sets.TP.Apocalypse.SAM.HighACC.HighHaste.STP = set_combine(sets.TP.Apocalypse.SAM.HighACC.HighHaste,{})
-- Apocalypse(AM Up: High Haste + SAM Roll) /SAM TP Sets --
sets.TP.Apocalypse.SAM.AM.HighHaste.STP = set_combine(sets.TP.Apocalypse.SAM.HighHaste,{})
sets.TP.Apocalypse.SAM.MidACC.AM.HighHaste.STP = set_combine(sets.TP.Apocalypse.SAM.MidACC.HighHaste,{})
sets.TP.Apocalypse.SAM.HighACC.AM.HighHaste.STP = set_combine(sets.TP.Apocalypse.SAM.HighACC.HighHaste,{})
-- Apocalypse(AM Down: Ionis + SAM Roll) /SAM TP Sets --
sets.TP.Apocalypse.SAM.Ionis.STP = set_combine(sets.TP.Apocalypse.SAM.Ionis,{})
sets.TP.Apocalypse.SAM.MidACC.Ionis.STP = set_combine(sets.TP.Apocalypse.SAM.MidACC.Ionis,{})
sets.TP.Apocalypse.SAM.HighACC.Ionis.STP = set_combine(sets.TP.Apocalypse.SAM.HighACC.Ionis,{})
-- Apocalypse(AM Up: Ionis + SAM Roll) /SAM TP Sets --
sets.TP.Apocalypse.SAM.AM.Ionis.STP = set_combine(sets.TP.Apocalypse.SAM.AM,{})
sets.TP.Apocalypse.SAM.MidACC.AM.Ionis.STP = set_combine(sets.TP.Apocalypse.SAM.MidACC.AM,{})
sets.TP.Apocalypse.SAM.HighACC.AM.Ionis.STP = set_combine(sets.TP.Apocalypse.SAM.HighACC.AM,{})
-- Apocalypse(AM Down: High Haste + Ionis + SAM Roll) /SAM TP Sets --
sets.TP.Apocalypse.SAM.HighHaste.Ionis.STP = set_combine(sets.TP.Apocalypse.SAM.HighHaste,{})
sets.TP.Apocalypse.SAM.MidACC.HighHaste.Ionis.STP = set_combine(sets.TP.Apocalypse.SAM.MidACC.HighHaste,{})
sets.TP.Apocalypse.SAM.HighACC.HighHaste.Ionis.STP = set_combine(sets.TP.Apocalypse.SAM.HighACC.HighHaste,{})
-- Apocalypse(AM Up: High Haste + Ionis + SAM Roll) /SAM TP Sets --
sets.TP.Apocalypse.SAM.AM.HighHaste.Ionis.STP = set_combine(sets.TP.Apocalypse.SAM.HighHaste,{})
sets.TP.Apocalypse.SAM.MidACC.AM.HighHaste.Ionis.STP = set_combine(sets.TP.Apocalypse.SAM.MidACC.HighHaste,{})
sets.TP.Apocalypse.SAM.HighACC.AM.HighHaste.Ionis.STP = set_combine(sets.TP.Apocalypse.SAM.HighACC.HighHaste,{})
sets.TP.Apocalypse.SAM.LastResort = set_combine(sets.TP.Apocalypse.SAM,{feet="Fallen's Sollerets"})
sets.TP.Apocalypse.SAM.LastResort.MidACC = set_combine(sets.TP.Apocalypse.SAM,{feet="Fallen's Sollerets"})
sets.TP.Apocalypse.SAM.LastResort.HighACC = set_combine(sets.TP.Apocalypse.SAM,{feet="Fallen's Sollerets"})
-- AM3 Rancor ON Mantle --
sets.TP.Rancor = {back="Rancorous Mantle"}
-- PDT/MDT Sets --
sets.PDT = {
head="Cizin helm",
neck="Twilight torque",
ear1="Bladeborn earring",
ear2="Steelflash earring",
body="Cizin mail",
hands="Cizin mufflers +1",
ring1="Dark ring",
ring2="Dark ring",
back="Repulse mantle",
waist="Windbuffet belt",
legs="Cizin breeches +1",
feet="Cizin greaves"}
sets.MDT = set_combine(sets.PDT,{
ammo="Demonry Stone",
head="Laeradr Helm",
ear1="Merman's Earring",
ear2="Sanare Earring",
body="Nocturnus Mail",
ring1="Shadow Ring",
back="Engulfer Cape",
waist="Resolute Belt"})
-- Hybrid Set --
sets.TP.Hybrid = set_combine(sets.PDT,{
head="Yaoyotl Helm",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
body="Pak Corselet +1",
waist="Goading Belt",
feet="Whirlpool Greaves"})
sets.TP.Hybrid.MidACC = set_combine(sets.TP.Hybrid,{})
sets.TP.Hybrid.HighACC = set_combine(sets.TP.Hybrid.MidACC,{})
-- WS Base Set --
sets.WS = {}
sets.WS = {
ammo = "Aqreaq bomblet",
head = "Yaoyotl helm",
neck = "Iqabi necklace",
ear1 = "Trux Earring",
ear2 = "Brutal Earring",
body = "Ignominy Cuirass +1",
hands = "Ignominy Gauntlets",
ring1 = "Rajas Ring",
ring2 = "K'ayres Ring",
back = "Atheling Mantle",
waist = "Windbuffet belt",
legs = "Ignominy Flanchard +1",
feet = "Fallen's Sollerets"}
-- Resolution Sets --
sets.WS.Resolution = {
ammo="Aqreqaq Bomblet",
head="Otomi Helm",
neck="Soil Gorget",
ear1="Moonshade Earring",
ear2="Brutal Earring",
body="Igno. Cuirass +1",
hands="Miki. Gauntlets",
ring1="Pyrosoul Ring",
ring2="Pyrosoul Ring",
back="Atheling Mantle",
waist="Soil Belt",
legs="Igno. Flan. +1",
feet="Mikinaak Greaves"}
sets.WS.Resolution.MidACC = set_combine(sets.WS.Resolution,{
head="Yaoyotl Helm",
feet="Whirlpool Greaves"})
sets.WS.Resolution.HighACC = set_combine(sets.WS.Resolution.MidACC,{
legs="Miki. Cuisses"})
-- Resolution(Attack) Set --
sets.WS.Resolution.ATT = set_combine(sets.WS.Resolution,{})
-- Catastrophe Sets --
sets.WS.Catastrophe = {
ammo="Bomb Core",
head="Otomi Helm",
neck="Soil Gorget",
ear1="Steelflash Earring",
ear2="Bladeborn Earring",
body="Phorcys Korazin",
hands="Miki. Gauntlets",
ring1="Spiral Ring",
ring2="Rajas Ring",
back="Atheling Mantle",
waist="Soil Belt",
legs="Igno. Flan. +1",
feet="Fallen's Sollerets"}
sets.WS.Catastrophe.MidACC = set_combine(sets.WS.Catastrophe,{
head="Yaoyotl Helm",
feet="Whirlpool Greaves"})
sets.WS.Catastrophe.HighACC = set_combine(sets.WS.Catastrophe.MidACC,{
body="Ignominy Cuirass +1",
back="Letalis Mantle"})
-- Catastrophe(Attack) Set --
sets.WS.Catastrophe.ATT = set_combine(sets.WS.Catastrophe,{})
-- Entropy Sets --
sets.WS.Entropy = {
ammo="Bomb Core",
head="Otomi Helm",
neck="Soil Gorget",
ear1="Trux Earring",
ear2="Brutal Earring",
body="Igno. Cuirass +1",
hands="Miki. Gauntlets",
ring1="Spiral Ring",
ring2="Rajas Ring",
back="Atheling Mantle",
waist="Soil Belt",
legs="Igno. Flan. +1",
feet="Mikinaak Greaves"}
sets.WS.Entropy.MidACC = set_combine(sets.WS.Entropy,{
head="Yaoyotl Helm",
feet="Whirlpool Greaves"})
sets.WS.Entropy.HighACC = set_combine(sets.WS.Entropy.MidACC,{body="Xaddi Mail",ear1="Steelflash Earring",ear2="Bladeborn Earring",back="Letalis Mantle"})
-- Entropy(Attack) Set --
sets.WS.Entropy.ATT = set_combine(sets.WS.Entropy,{})
-- JA Sets --
sets.JA = {}
sets.JA["Blood Weapon"] = {body="Fallen's Cuirass"}
sets.JA["Diabolic Eye"] = {hands="Fall. Fin. Gaunt."}
sets.JA["Nether Void"] = {legs="Bale Flanchard +2"}
sets.JA["Arcane Circle"] = {feet="Igno. Sollerets +1"}
sets.JA["Last Resort"] = {feet="Fall. Sollerets"}
sets.Precast = {}
-- Fastcast Set --
sets.Precast.FastCast = {
ammo="Impatiens",
neck="Orunmila's Torque",
ear1="Loquac. Earring",
ring1="Prolix Ring"}
-- Precast Dark Magic --
sets.Precast['Dark Magic'] = set_combine(sets.Precast.FastCast,{head="Fall. Burgeonet"})
-- Midcast Base Set --
sets.Midcast = {}
-- Magic Haste Set --
sets.Midcast.Haste = set_combine(sets.PDT,{})
-- Dark Magic Set --
sets.Midcast['Dark Magic'] = {
head="Igno. Burgeonet",
neck="Dark Torque",
ear1="Pensee Earring",
ear2="Dark Earring",
body="Demon's Harness",
hands="Fall. Fin. Gaunt.",
ring1="Archon Ring",
ring2="Sangoma Ring",
back="Merciful Cape",
waist="Casso Sash",
legs="Bale Flanchard +2",
feet="Scamp's Sollerets"}
-- Stun Sets --
sets.Midcast.Stun = set_combine(sets.Midcast['Dark Magic'],{})
sets.Midcast.Stun.MidACC = set_combine(sets.Midcast.Stun,{})
sets.Midcast.Stun.HighACC = set_combine(sets.Midcast.Stun.MidACC,{})
-- Endark Set --
sets.Midcast.Endark = set_combine(sets.Midcast['Dark Magic'],{})
-- Enfeebling Magic Set --
sets.Midcast['Enfeebling Magic'] = {body="Igno. Cuirass +1"}
-- Elemental Magic Set --
sets.Midcast['Elemental Magic'] = {}
-- Dread Spikes Set --
sets.Midcast['Dread Spikes'] = {
ammo="Aqreaq bomblet",
head="Ganesha's Mask",
body="Bale Cuirass +2",
hands="Cizin Mufflers +1",
ring1="Rajas Ring",
ring2="K'ayres Ring",
legs="Cizin breeches +1",
feet="Xaddi Boots"}
function pretarget(spell,action)
if spell.action_type == 'Magic' and buffactive.silence then -- Auto Use Echo Drops If You Are Silenced --
cancel_spell()
send_command('input /item "Echo Drops" <me>')
elseif spell.english == "Berserk" and buffactive.Berserk then -- Change Berserk To Aggressor If Berserk Is On --
cancel_spell()
send_command('Aggressor')
elseif spell.english == "Seigan" and buffactive.Seigan then -- Change Seigan To Third Eye If Seigan Is On --
cancel_spell()
send_command('ThirdEye')
elseif spell.english == "Meditate" and player.tp > 290 then -- Cancel Meditate If TP Is Above 290 --
cancel_spell()
add_to_chat(123, spell.name .. ' Canceled: ['..player.tp..' TP]')
elseif spell.type == "WeaponSkill" and spell.target.distance > target_distance and player.status == 'Engaged' then -- Cancel WS If You Are Out Of Range --
cancel_spell()
add_to_chat(123, spell.name..' Canceled: [Out of Range]')
return
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 == "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
else
equipSet = sets.WS
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if Attack == 'ON' then
equipSet = equipSet["ATT"]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if spell.english == "Catastrophe" and (world.day_element == 'Dark' or world.day_element == 'Earth') and Mekira == 'ON' then -- Equip Mekira-oto +1 On Darksday or Earthsday --
equipSet = set_combine(equipSet,{head="Mekira-oto +1"})
end
if spell.english == "Resolution" or spell.english == "Entropy" then
if spell.english == "Resolution" and (world.day_element == 'Thunder' or world.day_element == 'Wind' or world.day_element == 'Earth') and Mekira == 'ON' then -- Equip Mekira-oto +1 On Lightningday or Windsday or Earthsday --
equipSet = set_combine(equipSet,{head="Mekira-oto +1"})
elseif spell.english == "Entropy" and (world.day_element == 'Dark' or world.day_element == 'Earth' or world.day_element == 'Water') and Mekira == 'ON' then -- Equip Mekira-oto +1 On Darksday or Earthsday or Watersday --
equipSet = set_combine(equipSet,{head="Mekira-oto +1"})
end
if player.tp > 299 or buffactive.Sekkanoki then -- Equip Bale Earring When You Have 300 TP or Sekkanoki --
equipSet = set_combine(equipSet,{ear1="Bale Earring"})
end
end
equip(equipSet)
end
elseif spell.type == "JobAbility" then
if sets.JA[spell.english] then
equip(sets.JA[spell.english])
end
elseif spell.action_type == 'Magic' 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 spell.english == "Stun" then
if buffactive.Hasso or buffactive.Seigan then -- Cancel Hasso or Seigan When You Use Stun --
cast_delay(0.2)
send_command('cancel Hasso,Seigan')
end
equip(sets.Precast.FastCast)
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.name .. ' 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.english == 'Spectral Jig' and buffactive.Sneak then
cast_delay(0.2)
send_command('cancel Sneak')
end
if Twilight == 'Twilight' then
equip(sets.Twilight)
end
end
function midcast(spell,action)
equipSet = {}
if spell.type:endswith('Magic') or spell.type == 'Ninjutsu' then
equipSet = sets.Midcast
if string.find(spell.english,'Absorb') then
if buffactive["Dark Seal"] then -- Equip Aug'd Abs. Burgeonet +2 When You Have Dark Seal Up --
equipSet = set_combine(equipSet,{head="Abs. Burgeonet +2"})
end
elseif string.find(spell.english,'Drain') or string.find(spell.english,'Aspir') or string.find(spell.english,'Bio') then
if world.day == "Darksday" or world.weather_element == "Dark" then -- Equip Anrin Obi On Darksday or Dark Weather --
equipSet = set_combine(equipSet,{waist="Anrin Obi"})
end
elseif spell.english == "Stoneskin" then
if buffactive.Stoneskin then
send_command('@wait 1.7;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[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if equipSet[spell.skill] then
equipSet = equipSet[spell.skill]
end
if equipSet[spell.type] then
equipSet = equipSet[spell.type]
end
end
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
equip(equipSet)
end
function aftercast(spell,action)
if not spell.interrupted then
if spell.type == "WeaponSkill" then
send_command('wait 0.2;gs c TP')
elseif spell.english == "Arcane Circle" then -- Arcane Circle Countdown --
send_command('wait 260;input /echo '..spell.name..': [WEARING OFF IN 10 SEC.];wait 10;input /echo '..spell.name..': [OFF]')
elseif 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" then -- Sleep 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.]')
end
end
status_change(player.status)
end
function status_change(new,old)
if Armor == 'PDT' then
equip(sets.PDT)
elseif Armor == 'MDT' then
equip(sets.MDT)
elseif new == 'Engaged' then
equipSet = sets.TP
if Armor == 'Hybrid' and equipSet["Hybrid"] then
equipSet = equipSet["Hybrid"]
end
if equipSet[WeaponArray[WeaponIndex]] then
equipSet = equipSet[WeaponArray[WeaponIndex]]
end
if equipSet[player.sub_job] then
equipSet = equipSet[player.sub_job]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if buffactive["Aftermath: Lv.3"] and equipSet["AM3"] then
if Rancor == 'ON' then -- Default Rancor Toggle Is Rancorous Mantle --
equipSet = set_combine(equipSet["AM3"],sets.TP.Rancor)
else -- Use Rancor Toggle For Atheling Mantle --
equipSet = equipSet["AM3"]
end
end
if buffactive["Last Resort"] then
equipSet = equipSet['LastResort']
end
if buffactive.Aftermath and equipSet["AM"] then
equipSet = equipSet["AM"]
end
if buffactive["Last Resort"] and buffactive.March == 2 and (buffactive.Haste or buffactive.Embrava) and equipSet["HighHaste"] then
equipSet = equipSet["HighHaste"]
end
if buffactive.Ionis and equipSet["Ionis"] then
equipSet = equipSet["Ionis"]
end
equip(equipSet)
else
equipSet = sets.Idle
if equipSet[IdleArray[IdleIndex]] then
equipSet = equipSet[IdleArray[IdleIndex]]
end
if equipSet[WeaponArray[WeaponIndex]] then
equipSet = equipSet[WeaponArray[WeaponIndex]]
end
equip(equipSet)
end
if Twilight == 'Twilight' then
equip(sets.Twilight)
end
end
-- In Game: //gs c (command), Macro: /console gs c (command), Bind: gs c (command) --
function self_command(command)
if command == 'ACC' then -- Accuracy Level Toggle --
AccIndex = (AccIndex % #AccArray) + 1
status_change(player.status)
add_to_chat(158,'Accuracy Level: '..AccArray[AccIndex])
elseif command == 'WEP' then -- Main Weapon Toggle --
WeaponIndex = (WeaponIndex % #WeaponArray) + 1
add_to_chat(158,'Main Weapon: '..WeaponArray[WeaponIndex])
status_change(player.status)
elseif command == 'Update' then -- Auto Update Gear Toggle --
status_change(player.status)
add_to_chat(158,'Auto Update Gear')
elseif command == 'Hybrid' then -- Hybrid Toggle --
if Armor == 'Hybrid' then
Armor = 'None'
add_to_chat(123,'Hybrid Set: [Unlocked]')
else
Armor = 'Hybrid'
add_to_chat(158,'Hybrid Set: '..AccArray[AccIndex])
end
status_change(player.status)
elseif command == 'PDT' 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 == 'MDT' then -- MDT Toggle --
if Armor == 'MDT' then
Armor = 'None'
add_to_chat(123,'MDT Set: [Unlocked]')
else
Armor = 'MDT'
add_to_chat(158,'MDT Set: [Locked]')
end
status_change(player.status)
elseif command == 'Rancor' then -- Rancor Toggle --
if Rancor == 'ON' then
Rancor = 'OFF'
add_to_chat(123,'Rancor: [OFF]')
else
Rancor = 'ON'
add_to_chat(158,'Rancor: [ON]')
end
status_change(player.status)
elseif command == 'ATK' then -- Attack Toggle --
if Attack == 'ON' then
Attack = 'OFF'
add_to_chat(123,'Attack: [OFF]')
else
Attack = 'On'
add_to_chat(158,'Attack: [ON]')
end
status_change(player.status)
elseif command == 'Mekira' then -- Mekira Toggle --
if Mekira == 'ON' then
Mekira = 'OFF'
add_to_chat(123,'Mekira: [OFF]')
else
Mekira = 'ON'
add_to_chat(158,'Mekira: [ON]')
end
status_change(player.status)
elseif command == 'Twilight' then -- Twilight Toggle --
if Twilight == 'Twilight' then
Twilight = 'None'
add_to_chat(123,'Twilight Set: [Unlocked]')
else
Twilight = 'Twilight'
add_to_chat(158,'Twilight 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 == 'Idle' then -- Idle Toggle --
IdleIndex = (IdleIndex % #IdleArray) + 1
status_change(player.status)
add_to_chat(158,'Idle Set: '..IdleArray[IdleIndex])
elseif command == 'TP' then
add_to_chat(158,'TP Return: ['..tostring(player.tp)..']')
elseif command:match('^SC%d$') then
send_command('//' .. sc_map[command])
end
end
edit: How can I make it actually change acc/weapon tiers for me, and how can I get mekira to swap in when needed?
edit2:So I'm quite confused now. It tells me "Accuracy Level:X" but doesn't actually change any gear. Does the same thing with Mekira, in that it tells me its going to switch it in but doesn't actually change the WS set. Anybody have ideas as to why this isn't working?
サーバ: Cerberus
Game: FFXI
Posts: 4
By Cerberus.Abrogative 2014-10-07 14:38:55
Hey, I wanted to ask some questions about augments. Last couple weeks I have been acclimating myself to GearSwap and learning to get away from Spellcast. So far it works wonderfully and I love the improved midcast timing - truly a marked difference. But for augments I am still not able to get consistent results in my own testing. I use "//gs showswaps" to verify which swaps are taking place and I use "//gs export" to get the exact names/characters to paste into my file. I am not getting any errors, either. But I guess I am not sure what behavior to look for. Here is what I have, and then my questions.
On BLM on my mule I have 2 sets of Hagendes. One is all MAB and one is all MACC. I want to specify the MAB set for elemental magic in one casting mode, and the MACC set in another casting mode. I use Motenten's base files and I am pretty sure it is all set up correctly. However, showswaps does not list the augments of swapped pieces and I can't see what I was wearing in midcast after casting. I do know that if I intend to equip the MAB body, but I store it, the macro will equip the MACC body even though that body is not specified in the code.
So, is it just equipping the first Hagondes coat it finds or is it putting on the MACC one ONLY because the correct one is not there? Is there a way I can verify that I am getting the right piece equipped every single time? Thanks for any light you can shed on this.
I posted this in the wrong place initially, and reposted it here. Here is my MAB set as well:
sets.midcast['Elemental Magic'] = {main="Atinian staff",
sub="Zuuxowu Grip",
ammo="Dosis Tathlum",
head={ name="Hagondes Hat", augments={'Phys. dmg. taken -3%','"Mag.Atk.Bns."+21',}},
body={ name="Hagondes Coat", augments={'Phys. dmg. taken -4%','"Mag.Atk.Bns."+24',}},
hands={ name="Hagondes Cuffs", augments={'Phys. dmg. taken -3%','"Mag.Atk.Bns."+21',}},
legs={ name="Hagondes Pants", augments={'Phys. dmg. taken -4%','"Mag.Atk.Bns."+23',}},
feet={ name="Hagondes Sabots", augments={'Phys. dmg. taken -3%','"Mag.Atk.Bns."+20',}},
neck="Stoicheion medal",
ear1="Hecate's Earring",
ear2="Friomisi Earring",
ring1="Shiva Ring",
ring2="Acumen Ring",
back="Seshaw Cape",
waist="Aswang sash"}
By kithaofcerb 2014-10-07 22:12:42
So I have since got my entire DRK.Lua working, except for Accuracy tier changes responding and actually changing gear and getting Mekira to swap in when necessary.
Everything involving Accindex is unchanged from Bokura's Lua, only the sets have been changed to have my items in them. Is there something I'm missing? Here is the all the lines of code that I believe apply to what I'm talking about Code
function precast(spell,action)
if 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
else
equipSet = sets.WS
if equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
if Attack == 'ON' then
equipSet = equipSet["ATT"]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if spell.english == "Catastrophe" and (world.day_element == 'Dark' or world.day_element == 'Earth') and Mekira == 'ON' then -- Equip Mekira-oto +1 On Darksday or Earthsday --
equipSet = set_combine(equipSet,{head="Mekira-oto +1"})
end
if spell.english == "Resolution" or spell.english == "Entropy" then
if spell.english == "Resolution" and (world.day_element == 'Thunder' or world.day_element == 'Wind' or world.day_element == 'Earth') and Mekira == 'ON' then -- Equip Mekira-oto +1 On Lightningday or Windsday or Earthsday --
equipSet = set_combine(equipSet,{head="Mekira-oto +1"})
elseif spell.english == "Entropy" and (world.day_element == 'Dark' or world.day_element == 'Earth' or world.day_element == 'Water') and Mekira == 'ON' then -- Equip Mekira-oto +1 On Darksday or Earthsday or Watersday --
equipSet = set_combine(equipSet,{head="Mekira-oto +1"})
end
if player.tp > 299 or buffactive.Sekkanoki then -- Equip Bale Earring When You Have 300 TP or Sekkanoki --
equipSet = set_combine(equipSet,{ear1="Bale Earring"})
end
end
equip(equipSet)
end
elseif spell.type == "JobAbility" then
if sets.JA[spell.english] then
equip(sets.JA[spell.english])
end
elseif spell.action_type == 'Magic' 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 spell.english == "Stun" then
if buffactive.Hasso or buffactive.Seigan then -- Cancel Hasso or Seigan When You Use Stun --
cast_delay(0.2)
send_command('cancel Hasso,Seigan')
end
equip(sets.Precast.FastCast)
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.name .. ' 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 == "Waltz" then
refine_waltz(spell,action)
equip(sets.Waltz)
elseif spell.english == 'Spectral Jig' and buffactive.Sneak then
cast_delay(0.2)
send_command('cancel Sneak')
end
if Twilight == 'Twilight' then
equip(sets.Twilight)
end
end
function midcast(spell,action)
equipSet = {}
if spell.type:endswith('Magic') or spell.type == 'Ninjutsu' then
equipSet = sets.Midcast
if string.find(spell.english,'Absorb') then
if buffactive["Dark Seal"] then -- Equip Aug'd Abs. Burgeonet +2 When You Have Dark Seal Up --
equipSet = set_combine(equipSet,{head="Abs. Burgeonet +2"})
end
elseif string.find(spell.english,'Drain') or string.find(spell.english,'Aspir') or string.find(spell.english,'Bio') then
if world.day == "Darksday" or world.weather_element == "Dark" then -- Equip Anrin Obi On Darksday or Dark Weather --
equipSet = set_combine(equipSet,{waist="Anrin Obi"})
end
elseif spell.english == "Stoneskin" then
if buffactive.Stoneskin then
send_command('@wait 1.7;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[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if equipSet[spell.skill] then
equipSet = equipSet[spell.skill]
end
if equipSet[spell.type] then
equipSet = equipSet[spell.type]
end
end
elseif equipSet[spell.english] then
equipSet = equipSet[spell.english]
end
equip(equipSet)
end
function status_change(new,old)
if Armor == 'PDT' then
equip(sets.PDT)
elseif Armor == 'MDT' then
equip(sets.MDT)
elseif new == 'Engaged' then
equipSet = sets.TP
if Armor == 'Hybrid' and equipSet["Hybrid"] then
equipSet = equipSet["Hybrid"]
end
if equipSet[WeaponArray[WeaponIndex]] then
equipSet = equipSet[WeaponArray[WeaponIndex]]
end
if equipSet[player.sub_job] then
equipSet = equipSet[player.sub_job]
end
if equipSet[AccArray[AccIndex]] then
equipSet = equipSet[AccArray[AccIndex]]
end
if buffactive["Aftermath: Lv.3"] and equipSet["AM3"] then
if Rancor == 'ON' then -- Default Rancor Toggle Is Rancorous Mantle --
equipSet = set_combine(equipSet["AM3"],sets.TP.Rancor)
else -- Use Rancor Toggle For Atheling Mantle --
equipSet = equipSet["AM3"]
end
end
if buffactive.Aftermath and equipSet["AM"] then
equipSet = equipSet["AM"]
end
if buffactive["Last Resort"] and buffactive.March == 2 and (buffactive.Haste or buffactive.Embrava) and equipSet["HighHaste"] then
equipSet = equipSet["HighHaste"]
end
if buffactive.Ionis and equipSet["Ionis"] then
equipSet = equipSet["Ionis"]
end
if buffactive["Samurai Roll"] and equipSet["STP"] and Samurai_Roll == 'ON' then
equipSet = equipSet["STP"]
end
equip(equipSet)
else
equipSet = sets.Idle
if equipSet[IdleArray[IdleIndex]] then
equipSet = equipSet[IdleArray[IdleIndex]]
end
if equipSet[WeaponArray[WeaponIndex]] then
equipSet = equipSet[WeaponArray[WeaponIndex]]
end
equip(equipSet)
end
if Twilight == 'Twilight' then
equip(sets.Twilight)
end
end
サーバ: Cerberus
Game: FFXI
Posts: 4
By Cerberus.Abrogative 2014-10-07 22:54:29
That just looks like declaring a variable at the top, storing the augmented piece in it then calling it in sets. Which is the same thing essentially. Is there a reason that it has to be stored in a variable instead of how I have it?
Ragnarok.Flippant
サーバ: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2014-10-07 22:59:55
So I have since got my entire DRK.Lua working, except for Accuracy tier changes responding and actually changing gear and getting Mekira to swap in when necessary.
Everything involving Accindex is unchanged from Bokura's Lua, only the sets have been changed to have my items in them. Is there something I'm missing?
You cut off your get_sets() function early. Move the end from line 77 to line 648.
Cerberus.Abrogative said: »Hey, I wanted to ask some questions about augments. Last couple weeks I have been acclimating myself to GearSwap and learning to get away from Spellcast. So far it works wonderfully and I love the improved midcast timing - truly a marked difference. But for augments I am still not able to get consistent results in my own testing. I use "//gs showswaps" to verify which swaps are taking place and I use "//gs export" to get the exact names/characters to paste into my file. I am not getting any errors, either. But I guess I am not sure what behavior to look for. Here is what I have, and then my questions.
On BLM on my mule I have 2 sets of Hagendes. One is all MAB and one is all MACC. I want to specify the MAB set for elemental magic in one casting mode, and the MACC set in another casting mode. I use Motenten's base files and I am pretty sure it is all set up correctly. However, showswaps does not list the augments of swapped pieces and I can't see what I was wearing in midcast after casting. I do know that if I intend to equip the MAB body, but I store it, the macro will equip the MACC body even though that body is not specified in the code.
So, is it just equipping the first Hagondes coat it finds or is it putting on the MACC one ONLY because the correct one is not there? Is there a way I can verify that I am getting the right piece equipped every single time? Thanks for any light you can shed on this.
I posted this in the wrong place initially, and reposted it here. Here is my MAB set as well:
sets.midcast['Elemental Magic'] = {main="Atinian staff",
sub="Zuuxowu Grip",
ammo="Dosis Tathlum",
head={ name="Hagondes Hat", augments={'Phys. dmg. taken -3%','"Mag.Atk.Bns."+21',}},
body={ name="Hagondes Coat", augments={'Phys. dmg. taken -4%','"Mag.Atk.Bns."+24',}},
hands={ name="Hagondes Cuffs", augments={'Phys. dmg. taken -3%','"Mag.Atk.Bns."+21',}},
legs={ name="Hagondes Pants", augments={'Phys. dmg. taken -4%','"Mag.Atk.Bns."+23',}},
feet={ name="Hagondes Sabots", augments={'Phys. dmg. taken -3%','"Mag.Atk.Bns."+20',}},
neck="Stoicheion medal",
ear1="Hecate's Earring",
ear2="Friomisi Earring",
ring1="Shiva Ring",
ring2="Acumen Ring",
back="Seshaw Cape",
waist="Aswang sash"}
If you want to test if it's working properly, use them in idle/resting sets and change out a couple times. Personally, I go with the bag="wardrobe" or bag="inventory" route just to not have to bother with it.
can anyone make this AM3 timer work (mote's gearswap) plz :<
Code -- AM3 Timer
function job_buff_change(buff, gain)
if buff == 'aftermath' then
if gain then
send_command('timers create "Aftermath: Lv.3" 180 down')
add_to_chat(122, 'AFTERMATH ACHIEVED;wait 160;AFTERMATH DOWN IN 20;wait 10;AFTERMATH DOWN IN 10')
else
send_command('timers delete "Aftermath: Lv.3"')
add_to_chat(122, 'AFTERMATH DOWN')
end
end
end
Aftermath buff is for relic AM, Mythic's AM3 is "aftermath: lv.3"
Edit:
Cerberus.Abrogative said: »That just looks like declaring a variable at the top, storing the augmented piece in it then calling it in sets. Which is the same thing essentially. Is there a reason that it has to be stored in a variable instead of how I have it?
No, but it's useful if you want to use them in multiple spots.
[+]
Ragnarok.Flippant
サーバ: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2014-10-07 23:57:07
I'm not sure how Mote handles the buff string--if he hasn't done anything to it, then it needs to be "Aftermath: Lv.3", but if that still doesn't work, you can put print(buff) in there and see what it says in console when you activate AM3.
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.
|
|