Random Question Thread (FFXI Related)

Language: JP EN DE FR
New Items
2023-11-19
users online
Forum » FFXI » General » Random Question thread (FFXI related)
Random Question thread (FFXI related)
First Page 2 3 ... 453 454 455 ... 836 837 838
 Sylph.Jeanpaul
MSPaint Champion
Offline
Server: Sylph
Game: FFXI
user: JeanPaul
Posts: 2623
By Sylph.Jeanpaul 2016-08-09 14:42:20
Link | Quote | Reply
 
Siren.Dilandu said: »
I read awhile back about being able to recurse your equipment. How do I do this? I want to make a hecatomb legging +1 into a cursed legging -1.
Synergy, the recipe depending on whether the piece is NQ or HQ:
- Cursed/Hexed NQ piece + Original Abjuration + Colossal Skull
- Cursed/Hexed HQ piece + Original Abjuration + Umbral Marrow

Note that you have to remove the augments from the piece first, if they have any. This is done by doing Synergy on just the piece itself. Also note that Synergy failures never lead to breaks or losses, and you are always going to get the same level of quality as the base piece (ie: HQing the Synergy on NQ wouldn't give you a HQ piece).
 Siren.Dilandu
Offline
Server: Siren
Game: FFXI
user: Dilandu
Posts: 306
By Siren.Dilandu 2016-08-09 16:22:08
Link | Quote | Reply
 
Sylph.Jeanpaul said: »
Synergy, the recipe depending on whether the piece is NQ or HQ:
- Cursed/Hexed NQ piece + Original Abjuration + Colossal Skull
- Cursed/Hexed HQ piece + Original Abjuration + Umbral Marrow

Note that you have to remove the augments from the piece first, if they have any. This is done by doing Synergy on just the piece itself. Also note that Synergy failures never lead to breaks or losses, and you are always going to get the same level of quality as the base piece (ie: HQing the Synergy on NQ wouldn't give you a HQ piece).

Thank you for the additional info.

Edit: I just made a Voodoo Legging 1/2! I regret tossing out all the abjurations during the login campaign. :(
 Phoenix.Demonjustin
Offline
Server: Phoenix
Game: FFXI
Posts: 661
By Phoenix.Demonjustin 2016-08-11 13:49:32
Link | Quote | Reply
 
In my gearswap I have...
Code
	if spell.skill == 'Enhancing Magic' then
		if buffactive.composure and spell.target.type ~= 'PLAYER' then
			equip(sets.buff.ComposureOther)
		end
	end


However, when casting Temper II it puts me in Composure gear as though I'm targeting someone else. Is there a solution to this issue?
 Sylph.Taruranto
Offline
Server: Sylph
Game: FFXI
user: Tarlant
Posts: 19
By Sylph.Taruranto 2016-08-12 03:07:16
Link | Quote | Reply
 
Is The Ygnas Directive the only quest they added in the last 1-2 months?

And I need to rank a bunch of coalitions to start that? :(
 Ragnarok.Flippant
Offline
Server: Ragnarok
Game: FFXI
user: Enceladus
Posts: 658
By Ragnarok.Flippant 2016-08-12 06:18:33
Link | Quote | Reply
 
Phoenix.Demonjustin said: »
In my gearswap I have...
Code
	if spell.skill == 'Enhancing Magic' then
		if buffactive.composure and spell.target.type ~= 'PLAYER' then
			equip(sets.buff.ComposureOther)
		end
	end


However, when casting Temper II it puts me in Composure gear as though I'm targeting someone else. Is there a solution to this issue?
That rule is specifically selecting enhancing spells that are not cast on other playable characters (i.e. it's targeting you or an NPC). Should be == instead of ~= if you only want to wear it when targeting other characters.
 Sylph.Jeanpaul
MSPaint Champion
Offline
Server: Sylph
Game: FFXI
user: JeanPaul
Posts: 2623
By Sylph.Jeanpaul 2016-08-12 06:42:09
Link | Quote | Reply
 
Sylph.Taruranto said: »
Is The Ygnas Directive the only quest they added in the last 1-2 months?

And I need to rank a bunch of coalitions to start that? :(
1) Yes
2) Not only do you have to rank all coalitions, you have to complete every single coalition assignment (except the ones where you build bivouacs/frontier stations), and every single Adoulin quest (including Mog Garden, but excluding RUN/GEO quests beyond unlocking them).
Offline
Posts: 12397
By Pantafernando 2016-08-12 09:00:04
Link | Quote | Reply
 
Sylph.Jeanpaul said: »
Sylph.Taruranto said: »
Is The Ygnas Directive the only quest they added in the last 1-2 months?

And I need to rank a bunch of coalitions to start that? :(
1) Yes
2) Not only do you have to rank all coalitions, you have to complete every single coalition assignment (except the ones where you build bivouacs/frontier stations), and every single Adoulin quest (including Mog Garden, but excluding RUN/GEO quests beyond unlocking them).

Im ok in doing the SoA quests, but the MG quests are terrible as they demand a fixed amount of days to complete them.

But what are the current rewards from those new quests?
Offline
Posts: 12397
By Pantafernando 2016-08-12 11:19:45
Link | Quote | Reply
 
Hi.

Working in few reisen drops. Atm struggling with Dazzing Dolores and its Vampiric Lash. I have mule for Vex/Atunnement, and trust tank cant hold hate for long so i end tanking half fight. What can i do reduce Vampiric Lash dmg? Maybe Fend/Fade?

Thanks in advance.
 Fenrir.Nightfyre
Offline
Server: Fenrir
Game: FFXI
user: Nightfyre
Posts: 11680
By Fenrir.Nightfyre 2016-08-12 11:35:54
Link | Quote | Reply
 
Phoenix.Demonjustin said: »
In my gearswap I have...
Code
	if spell.skill == 'Enhancing Magic' then
		if buffactive.composure and spell.target.type ~= 'PLAYER' then
			equip(sets.buff.ComposureOther)
		end
	end


However, when casting Temper II it puts me in Composure gear as though I'm targeting someone else. Is there a solution to this issue?
Should be spell.target.type ~= 'SELF'
 Sylph.Jeanpaul
MSPaint Champion
Offline
Server: Sylph
Game: FFXI
user: JeanPaul
Posts: 2623
By Sylph.Jeanpaul 2016-08-12 13:48:24
Link | Quote | Reply
 
Pantafernando said: »
Sylph.Jeanpaul said: »
Sylph.Taruranto said: »
Is The Ygnas Directive the only quest they added in the last 1-2 months?

And I need to rank a bunch of coalitions to start that? :(
1) Yes
2) Not only do you have to rank all coalitions, you have to complete every single coalition assignment (except the ones where you build bivouacs/frontier stations), and every single Adoulin quest (including Mog Garden, but excluding RUN/GEO quests beyond unlocking them).

Im ok in doing the SoA quests, but the MG quests are terrible as they demand a fixed amount of days to complete them.

But what are the current rewards from those new quests?
So far, just exp/sparks and the Delegate's Cuffs and Garb (palette swapped Councilor's). The starter NPC seems to indicate that there will be more quests coming out, though, which is good since the cutscenes, rewards, and difficulty haven't really matched up to the pre-reqs.
[+]
 Bismarck.Snprphnx
Offline
Server: Bismarck
Game: FFXI
user: Snprphnx
Posts: 2691
By Bismarck.Snprphnx 2016-08-12 16:07:30
Link | Quote | Reply
 
What's the fastest/easiest way to get ranked up in Campaigns? How many fights/notes do I need per evaluation?
Offline
Posts: 12397
By Pantafernando 2016-08-12 16:19:50
Link | Quote | Reply
 
Bismarck.Snprphnx said: »
What's the fastest/easiest way to get ranked up in Campaigns? How many fights/notes do I need per evaluation?

Unless SE changed something with campaign, there is no "fastest" way to rank up as you just rank up after the 5 days interval. Considering there are 20 medals, thats 100 days till you can max out campaign rank from the start.

Personally, what i did was to spam my op credits near the deadline. If i was missing enough effort to rank up, the npc will ask if i want to keep going, so i can spam any campaign battle till she gives me the option to rank up.
 Leviathan.Comeatmebro
Offline
Server: Leviathan
Game: FFXI
user: Rairin
Posts: 6052
By Leviathan.Comeatmebro 2016-08-12 16:56:11
Link | Quote | Reply
 
one of the rhapsodies made ranks much faster
 Phoenix.Demonjustin
Offline
Server: Phoenix
Game: FFXI
Posts: 661
By Phoenix.Demonjustin 2016-08-12 17:10:32
Link | Quote | Reply
 
Ragnarok.Flippant said: »
Phoenix.Demonjustin said: »
In my gearswap I have...
Code
	if spell.skill == 'Enhancing Magic' then
		if buffactive.composure and spell.target.type ~= 'PLAYER' then
			equip(sets.buff.ComposureOther)
		end
	end


However, when casting Temper II it puts me in Composure gear as though I'm targeting someone else. Is there a solution to this issue?
That rule is specifically selecting enhancing spells that are not cast on other playable characters (i.e. it's targeting you or an NPC). Should be == instead of ~= if you only want to wear it when targeting other characters.
Fenrir.Nightfyre said: »
Phoenix.Demonjustin said: »
In my gearswap I have...
Code
	if spell.skill == 'Enhancing Magic' then
		if buffactive.composure and spell.target.type ~= 'PLAYER' then
			equip(sets.buff.ComposureOther)
		end
	end


However, when casting Temper II it puts me in Composure gear as though I'm targeting someone else. Is there a solution to this issue?
Should be spell.target.type ~= 'SELF'
The problem only seems to exist for Refresh III & Temper II. The rest of what I have works fine for what I've needed. Casting Temper I for instance, I use enhancing skill/duration gear as I should, but when I cast Temper II it puts on full Composure(Empyrean) gear for some reason. Also Night I think you misunderstood, I do want it to be using that set only when I am targeting other players, not for targeting myself. ;x
 Phoenix.Demonjustin
Offline
Server: Phoenix
Game: FFXI
Posts: 661
By Phoenix.Demonjustin 2016-08-12 17:13:34
Link | Quote | Reply
 
Also another question, unrelated.

Can anyone explain to me how I might run FFXI through a VPN & if there's a free one I might be able to use for that purpose? The only way I can get on right now is free wifi & the place I'm at currently doesn't seem to allow Playonline to run through. :/
 Ragnarok.Flippant
Offline
Server: Ragnarok
Game: FFXI
user: Enceladus
Posts: 658
By Ragnarok.Flippant 2016-08-12 18:16:31
Link | Quote | Reply
 
Phoenix.Demonjustin said: »
The problem only seems to exist for Refresh III & Temper II. The rest of what I have works fine for what I've needed. Casting Temper I for instance, I use enhancing skill/duration gear as I should, but when I cast Temper II it puts on full Composure(Empyrean) gear for some reason. Also Night I think you misunderstood, I do want it to be using that set only when I am targeting other players, not for targeting myself. ;x

~= means "not equal" in Lua. == means equal.

As for the first part, it's impossible to tell you what's happening just from that bit of code. There could be various other places that are handling a similar function, especially if you are using Mote's includes.
 Phoenix.Demonjustin
Offline
Server: Phoenix
Game: FFXI
Posts: 661
By Phoenix.Demonjustin 2016-08-12 18:31:22
Link | Quote | Reply
 
Ragnarok.Flippant said: »
Phoenix.Demonjustin said: »
The problem only seems to exist for Refresh III & Temper II. The rest of what I have works fine for what I've needed. Casting Temper I for instance, I use enhancing skill/duration gear as I should, but when I cast Temper II it puts on full Composure(Empyrean) gear for some reason. Also Night I think you misunderstood, I do want it to be using that set only when I am targeting other players, not for targeting myself. ;x

~= means "not equal" in Lua. == means equal.

As for the first part, it's impossible to tell you what's happening just from that bit of code. There could be various other places that are handling a similar function, especially if you are using Mote's includes.
I do use Mote's includes. The thing in full is...

I did make the change you suggested however. I simply can't check to see if that fixed the issue or not due to my inability to log in. ;x
 Odin.Lygre
Offline
Server: Odin
Game: FFXI
user: Dylaudid
Posts: 89
By Odin.Lygre 2016-08-12 19:20:21
Link | Quote | Reply
 
You don't have a set defined for sets.buff.ComposureOther, which your job_post_midcast is trying to find. The default handler caught sets.midcast['Enhancing Magic'] and it stayed in that since there was no sets.buff.ComposureOther.
Code
-------------------------------------------------------------------------------------------------------------------
-- Initialization function that defines sets and variables to be used.
-------------------------------------------------------------------------------------------------------------------
 
-- Initialization function for this job file.
function get_sets()
    mote_include_version = 2
 
    -- Load and initialize the include file.
    include('Mote-Include.lua')
end
 
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
    state.Buff.Saboteur = buffactive.saboteur or false
 
    --event_list = L{}
    --event_list:append()
    windower.register_event('time change', time_change)
 
    include('Mote-TreasureHunter.lua')
    state.TreasureMode:set('Tag')
 
    -- 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}
 
    determine_haste_group()
end
 
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
    state.OffenseMode:options('None', 'Normal', 'Acc')
    state.HybridMode:options('Normal', 'DT')
    state.WeaponskillMode:options('Normal', 'Acc')
    state.CastingMode:options('Normal', 'Acc', 'MB', 'MBAcc')
    state.PhysicalDefenseMode:options('PDT', 'RefreshPDT')
 
    MNDPotencySpells = S{'Paralyze', 'Paralyze II', 'Slow', 'Slow II', 'Addle', 'Distract', 'Distract II', 'Frazzle', 'Frazzle II'}
    INTAccuracySpells = S{'Sleep', 'Sleep II', 'Sleepga', 'Sleepga II', 'Break', 'Breakga', 'Bind', 'Dispel', 'Gravity', 'Gravity II'}
    EarthSpells = S{'Stone', 'Stone II', 'Stone III', 'Stone IV', 'Stone V', 'Stonega', 'Stonega II', 'Stonega III', 'Stoneja', 'Stonera', 'Stonera II', 'Geohelix'}
    IceSpells = S{'Blizzard', 'Blizzard II', 'Blizzard III', 'Blizzard IV', 'Blizzard V', 'Blizzaga', 'Blizzaga II', 'Blizzaga III', 'Blizzaja', 'Blizzara', 'Blizzara II', 'Cryohelix'}
    Shields = S{"Genbu's Shield"}
    SkillSpells = S{'Temper','Temper II'}
    update_combat_form()
    select_default_macro_book()
end
 
-- Called when this job file is unloaded (eg: job change)
function file_unload()
    --event_list:map(unregister_event)
end
 
-- Define sets and vars used by this job file.
function init_gear_sets()
 
    --------------------------------------
    -- Augmented Gear
    --------------------------------------
 
    gear.HagCuffs = {}
    gear.HagCuffs.MAcc = {name="Hagondes Cuffs +1",augments={'Phys. dmg. taken -3%','Mag. Acc.+26'}}
    gear.RDMCape = {}
    gear.RDMCape.TP = {name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Haste+10',}}
    gear.RDMCape.WS = {name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}
    gear.RDMCape.MND = {name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}}
    gear.RDMCape.INT = {name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','"Mag.Atk.Bns."+10',}}
    gear.RDMCape.INTWS = {name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%',}}
 
    --------------------------------------
    -- Idle
    --------------------------------------
 
    sets.idle.Town = {main="Bolelabunga",sub="Beatific Shield +1",ammo="Homiliary",
        head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
        body="Councilor's Garb",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shneddick Ring",
        back="Kumbira Cape",waist="Fucho-no-Obi",legs="Nares Trews",feet="Serpentes Sabots"}
 
    sets.idle.Field = {main="Bolelabunga",sub="Beatific Shield +1",ammo="Homiliary",
        head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
        body="Jhakri Robe +1",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shneddick Ring",
        back="Kumbira Cape",waist="Fucho-no-Obi",legs="Nares Trews",feet="Serpentes Sabots"}
 
    sets.idle.Weak = {main="Bolelabunga",sub="Beatific Shield +1",ammo="Homiliary",
        head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
        body="Jhakri Robe +1",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shneddick Ring",
        back="Kumbira Cape",waist="Fucho-no-Obi",legs="Nares Trews",feet="Serpentes Sabots"}
 
    --------------------------------------
    -- Defense
    --------------------------------------
 
    sets.defense.PDT = {main="Shikargar",sub="Genbu's Shield",ammo="Homiliary",
        head="Lithelimb Cap",neck="Twilight Torque",ear1="Brutal Earring",ear2="Ethereal Earring",
        body="Karmesin Vest",hands="Umuthi Gloves",ring1="Defending Ring",ring2="Shneddick Ring",
        back="Shadow Mantle",waist="Fucho-no-Obi",legs="Osmium Cuisses",feet="Battlecast Gaiters"}
 
    sets.defense.RefreshPDT = {main="Shikargar",sub="Genbu's Shield",ammo="Homiliary",
        head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Brutal Earring",ear2="Ethereal Earring",
        body="Lethargy Sayon +1",hands="Umuthi Gloves",ring1="Defending Ring",ring2="Shneddick Ring",
        back="Shadow Mantle",waist="Fucho-no-Obi",legs="Osmium Cuisses",feet="Battlecast Gaiters"}
 
    sets.defense.MDT = {main="Shikargar",sub="Beatific Shield +1",ammo="Homiliary",
        head="Atrophy Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
        body="Lethargy Sayon +1",hands="Vitivation Gloves +1",ring1="Defending Ring",ring2="Shadow Ring",
        back=gear.RDMCape.INT,waist="Channeler's Stone",legs="Atrophy Tights +1",feet="Merlinic Crackows"}
 
    --------------------------------------
    -- Resting
    --------------------------------------
 
    sets.resting = {main="Bolelabunga",sub="Genbu's Shield",ammo="Homiliary",
        head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
        body="Lethargy Sayon +1",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shadow Ring",
        back="Shadow Mantle",waist="Fucho-no-obi",legs="Nares Trews",feet="Serpentes Sabots"}
 
    --------------------------------------
    -- Engaged
    --------------------------------------
 
    sets.engaged = {main="Excalibur", sub="Beatific Shield +1",ammo="Paeapua",
        head="Jhakri Coronal +1",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
        body="Karmesin Vest",hands="Chironic Gloves",ring1="K'ayres Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Windbuffet Belt",legs="Carmine Cuisses +1",feet="Jhakri Pigaches +1"}
 
    sets.engaged.Acc = set_combine(sets.engaged, {ammo="Jukukik Feather",neck="Iqabi Necklace"})
 
    sets.engaged.Acc.Daytime = set_combine(sets.engaged.Acc, {ammo="Tengu-no-Hane"})
 
    sets.engaged.DW = set_combine(sets.engaged, {ear1="Dudgeon Earring",ear2="Heartseeker Earring",waist="Shetal Stone",feet="Taeon Boots"})
 
    sets.engaged.DW.Acc = set_combine(sets.engaged.Acc, {ear1="Dudgeon Earring",ear2="Heartseeker Earring",waist="Shetal Stone",feet="Taeon Boots"})
 
    sets.engaged.DW.Acc.Daytime = set_combine(sets.engaged.Acc.Daytime, {ear1="Dudgeon Earring",ear2="Heartseeker Earring",waist="Shetal Stone",feet="Taeon Boots"})
 
    -- Defensive melee group
 
    sets.engaged.DT = set_combine(sets.engaged, {head="Lithelimb Cap",neck="Twilight Torque",
        hands="Umuthi Gloves",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
 
    sets.engaged.Acc.DT = set_combine(sets.engaged.Acc, {head="Lithelimb Cap",neck="Twilight Torque",
        hands="Umuthi Gloves",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
 
    sets.engaged.Acc.DT.Daytime = set_combine(sets.engaged.Acc.Daytime, {head="Lithelimb Cap",neck="Twilight Torque",
        hands="Umuthi Gloves",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
 
    sets.engaged.DW.DT = set_combine(sets.engaged.DW, {head="Lithelimb Cap",neck="Twilight Torque",
        hands="Umuthi Gloves",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
 
    sets.engaged.DW.Acc.DT = set_combine(sets.engaged.DW.Acc, {head="Lithelimb Cap",neck="Twilight Torque",
        hands="Umuthi Gloves",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
 
    sets.engaged.DW.Acc.DT.Daytime = set_combine(sets.engaged.DW.Acc.Daytime, {head="Lithelimb Cap",neck="Twilight Torque",
        hands="Umuthi Gloves",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
 
    -- Sets for MaxHaste with less DW.
 
    sets.engaged.MaxHaste = set_combine(sets.engaged, {})
    sets.engaged.Acc.MaxHaste = set_combine(sets.engaged.Acc, {})
    sets.engaged.Acc.Daytime.MaxHaste = set_combine(sets.engaged.Acc.Daytime, {})
    sets.engaged.DW.MaxHaste = set_combine(sets.engaged.DW, {ear1="Brutal Earring",ear2="Suppanomimi",waist="Windbuffet Belt",feet="Jhakri Pigaches +1"})
    sets.engaged.DW.Acc.MaxHaste = set_combine(sets.engaged.DW.Acc, {ear1="Brutal Earring",ear2="Suppanomimi",waist="Windbuffet Belt",feet="Jhakri Pigaches +1"})
    sets.engaged.DW.Acc.Daytime.MaxHaste = set_combine(sets.engaged.DW.Acc.Daytime, {ear1="Brutal Earring",ear2="Suppanomimi",waist="Windbuffet Belt",feet="Jhakri Pigaches +1"})
 
    sets.FrontlineWeapons = {main="Excalibur", sub="Beatific Shield +1"}
    sets.FrontlineWeapons.DW = {main="Excalibur", sub="Demersal Degen"}
 
    --------------------------------------
    -- Job Abilities
    --------------------------------------
 
    -- Precast sets to enhance JAs
    sets.precast.JA['Chainspell'] = {body="Vitivation Tabard"}
 
    if player.sub_job == 'DNC' then
        -- Waltz set (chr and vit)
        sets.precast.Waltz = {ammo="Homiliary",
            head="Lethargy Chappel +1",neck="Twilight Torque",ear1="Brutal Earring",ear2="Ethereal Earring",
            body="Lethargy Sayon +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Asklepian Ring",
            back="Kumbira Cape",waist="Fucho-no-Obi",legs="Atrophy Tights +1",feet="Jhakri Pigaches +1"}
 
        sets.precast.Waltz['Healing Waltz'] = {}
    end
 
    --------------------------------------
    -- Weaponskills
    --------------------------------------
 
    sets.precast.WS = {ammo="Cheruski Needle",
        head="Jhakri Coronal +1",neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Aqua Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Fotia Belt",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
    sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Jukukik Feather"})
    sets.precast.WS.DaytimeAcc = set_combine(sets.precast.WS.Acc, {ammo="Tengu-no-Hane"})
 
    -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
    sets.precast.WS['Savage Blade'] = {ammo="Cheruski Needle",
        head="Jhakri Coronal +1",neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Aqua Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Fotia Belt",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
    sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'], {ammo="Jukukik Feather"})
    sets.precast.WS['Savage Blade'].DaytimeAcc = set_combine(sets.precast.WS['Savage Blade'].Acc, {ammo="Tengu-no-Hane"})
 
    sets.precast.WS['Requiescat'] = {ammo="Oreiad's Tathlum",
        head="Jhakri Coronal +1",neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Aqua Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Fotia Belt",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
    sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS['Requiescat'], {ammo="Jukukik Feather"})
    sets.precast.WS['Requiescat'].DaytimeAcc = set_combine(sets.precast.WS['Requiescat'].Acc, {ammo="Tengu-no-Hane"})
 
    sets.precast.WS['Knights of Round'] = {ammo="Cheruski Needle",
        head="Jhakri Coronal +1",neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Aqua Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Fotia Belt",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
    sets.precast.WS['Knights of Round'].Acc = set_combine(sets.precast.WS['Knights of Round'], {ammo="Jukukik Feather"})
    sets.precast.WS['Knights of Round'].DaytimeAcc = set_combine(sets.precast.WS['Knights of Round'].Acc, {ammo="Tengu-no-Hane"})
 
    sets.precast.WS['Death Blossom'] = {ammo="Cheruski Needle",
        head="Jhakri Coronal +1",neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Aqua Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Fotia Belt",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
    sets.precast.WS['Death Blossom'].Acc = set_combine(sets.precast.WS['Death Blossom'], {ammo="Jukukik Feather"})
    sets.precast.WS['Death Blossom'].DaytimeAcc = set_combine(sets.precast.WS['Death Blossom'].Acc, {ammo="Tengu-no-Hane"})
 
    sets.precast.WS['Chant du Cygne'] = {ammo="Yetshila",
        head="Jhakri Coronal +1",neck="Fotia Gorget",ear1="Brutal Earring",ear2="Moonshade Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Thundersoul Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Fotia Belt",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
    sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS['Chant du Cygne'], {ammo="Jukukik Feather"})
    sets.precast.WS['Chant du Cygne'].DaytimeAcc = set_combine(sets.precast.WS['Chant du Cygne'].Acc, {ammo="Tengu-no-Hane"})
 
    sets.precast.WS['Sanguine Blade'] = {ammo="Witchstone",
        head="Jhakri Coronal +1",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Crematio Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Archon Ring",ring2="Diamond Ring",
        back=gear.RDMCape.INTWS,waist="Channeler's Stone",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
 
    sets.precast.WS['Seraph Blade'] = set_combine(sets.precast.WS['Sanguine Blade'], {waist="Chaac Belt"})
    sets.precast.WS['Aeolian Edge'] = set_combine(sets.precast.WS['Sanguine Blade'], {waist="Chaac Belt"})
    sets.precast.WS['Cyclone'] = sets.precast.WS['Aeolian Edge']
    sets.precast.WS['Evisceration'] = sets.precast.WS['Chant du Cygne']
    sets.precast.WS['Evisceration'].Acc = sets.precast.WS['Chant du Cygne'].Acc
    sets.precast.WS['Evisceration'].DaytimeAcc = sets.precast.WS['Chant du Cygne'].DaytimeAcc
    sets.precast.WS['True Strike'] = {ammo="Yetshila",
        head="Jhakri Coronal +1",neck="Fotia Gorget",ear1="Brutal Earring",ear2="Moonshade Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Spiral Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Fotia Belt",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
    sets.precast.WS['True Strike'].Acc = set_combine(sets.precast.WS['Chant du Cygne'], {ammo="Jukukik Feather"})
    sets.precast.WS['True Strike'].DaytimeAcc = set_combine(sets.precast.WS['True Strike'].Acc, {ammo="Tengu-no-Hane"})
 
    --------------------------------------
    -- Fast Cast
    --------------------------------------
 
    -- 80% Fast Cast (including trait) for all spells, plus 5% quick cast. No other FC sets necessary.
    sets.precast.FC = {ammo="Impatiens",
        head="Atro. Chapeau +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Enchntr. Earring +1",
        body="Vitivation Tabard",hands="Gende. Gages +1",ring1="Prolix Ring",ring2="Shneddick Ring",
        back="Ogapepo Cape +1",waist="Witful Belt",legs="Psycloth Lappas",feet="Battlecast Gaiters"}
 
    sets.precast.FC.Impact = set_combine(sets.precast.FC, {head=empty,body="Twilight Cloak"})
 
    --------------------------------------
    -- Midcast
    --------------------------------------
 
    sets.midcast.FastRecast = {
        head="Atro. Chapeau +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Ethereal Earring",
        body="Vitivation Tabard",hands="Umuthi Gloves",ring1="Prolix Ring",ring2="Shneddick Ring",
        back="Shadow Mantle",waist="Pya'ekue Belt",legs="Psycloth Lappas",feet="Battlecast Gaiters"}
 
    sets.midcast.Flash = set_combine(sets.midcast.FastRecast, {ammo="Paeapua",
        ear1="Friomisi Earring"})
 
    --------------------------------------
    -- Dark magic
    --------------------------------------
 
    sets.midcast['Dark Magic'] = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
        head="Lethargy Chappel +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
        body="Jhakri Robe +1",hands=gear.HagCuffs.MAcc,ring1="Sangoma Ring",ring2="Archon Ring",
        back=gear.RDMCape.INT,waist="Channeler's Stone",legs="Psycloth Lappas",feet="Jhakri Pigaches +1"}
 
    sets.midcast.Stun = {main="Twebuliij",sub="Mephitis Grip",ammo="Impatiens",
        head="Atro. Chapeau +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Enchntr. Earring +1",
        body="Vitivation Tabard",hands="Gende. Gages +1",ring1="Prolix Ring",ring2="Archon Ring",
        back=gear.RDMCape.INT,waist="Witful Belt",legs="Psycloth Lappas",feet="Battlecast Gaiters"}
 
    sets.midcast['Drain'] = set_combine(sets.midcast.INTAccuracy, {belt="Fucho-no-Obi",feet="Merlinic Crackows"})
    sets.midcast['Aspir'] = sets.midcast['Drain']
 
    --------------------------------------
    -- Elemental magic
    --------------------------------------
 
    sets.midcast['Elemental Magic'] = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Witchstone",
        head="Jhakri Coronal +1",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Crematio Earring",
        body="Seidr Cotehardie",hands="Amalric Gages",ring1="Acumen Ring",ring2="Diamond Ring",
        back=gear.RDMCape.INT,waist="Channeler's Stone",legs="Merlinic Shalwar",feet="Merlinic Crackows"}
 
    sets.midcast['Elemental Magic'].Acc = set_combine(sets.midcast['Elemental Magic'], {ammo="Kalboron Stone",
        head="Jhakri Coronal +1",neck="Imbodla Necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
        body="Seidr Cotehardie",ring1="Sangoma Ring",
        back=gear.RDMCape.INT,waist="Channeler's Stone"})
 
    sets.midcast['Elemental Magic'].MB = set_combine(sets.midcast['Elemental Magic'], {
        ring2="Mujin Band",back="Seshaw Cape",legs="Merlinic Shalwar",feet="Merlinic Crackows"})
 
    sets.midcast['Elemental Magic'].MBAcc = set_combine(sets.midcast['Elemental Magic'].Acc, {
        ring2="Mujin Band",back="Seshaw Cape",legs="Merlinic Shalwar",feet="Merlinic Crackows"})
 
    sets.midcast.Stone = set_combine(sets.midcast['Elemental Magic'], {neck="Quanpur Necklace"})
    sets.midcast.Stone.Acc = set_combine(sets.midcast['Elemental Magic'].Acc, {neck="Quanpur Necklace"})
    sets.midcast.Blizzard = set_combine(sets.midcast['Elemental Magic'], {main="Ngqoqwanb"})
    sets.midcast.Blizzard.Acc = set_combine(sets.midcast['Elemental Magic'].Acc, {main="Ngqoqwanb"})
 
    sets.midcast.ElementalEnfeeble = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
        head="Jhakri Coronal +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Sangoma Ring",ring2="Perception Ring",
        back=gear.RDMCape.INT,waist="Channeler's Stone",legs="Psycloth Lappas",feet="Jhakri Pigaches +1"}
 
    sets.midcast.Impact = set_combine(sets.midcast['ElementalEnfeeble'], {head=empty,body="Twilight Cloak"})
 
    --------------------------------------
    -- Enfeebling magic
    --------------------------------------
 
    sets.midcast['Enfeebling Magic'] = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
        head="Befouled Crown",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
        body="Jhakri Robe +1",hands="Lethargy Gantherots +1",ring1="Sangoma Ring",ring2="Perception Ring",
        back=gear.RDMCape.MND,waist="Porous Rope",legs="Psycloth Lappas",feet="Jhakri Pigaches +1"}
 
    sets.midcast['Break'] = sets.midcast['Enfeebling Magic']
 
    sets.midcast['Dia III'] = set_combine(sets.midcast.FastRecast, {head="Viti. Chapeau +1", waist="Chaac Belt"})
 
    sets.midcast['Diaga'] = set_combine(sets.midcast.FastRecast, {waist="Chaac Belt"})
 
    sets.midcast.MNDAccuracy = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
        head="Befouled Crown",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
        body="Jhakri Robe +1",hands="Lethargy Gantherots +1",ring1="Sangoma Ring",ring2="Perception Ring",
        back=gear.RDMCape.MND,waist="Rumination Sash",legs="Psycloth Lappas",feet="Jhakri Pigaches +1"}
 
    sets.midcast.MNDPotency = {main="Twebuliij",sub="Mephitis Grip",ammo="Oreiad's Tathlum",
        head="Befouled Crown",neck="Phalaina Locket",ear1="Lifestorm Earring",ear2="Psystorm Earring",
        body="Lethargy Sayon +1",hands="Lethargy Gantherots +1",ring1="Aqua Ring",ring2="Sirona's Ring",
        back=gear.RDMCape.MND,waist="Porous Rope",legs="Psycloth Lappas",feet="Uk'uxkaj Boots"}
 
    sets.midcast.MNDPotency.Acc = set_combine(sets.midcast.MNDAccuracy, {body="Lethargy Sayon +1",feet="Uk'uxkaj Boots"})
 
    sets.midcast.INTAccuracy = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
        head="Jhakri Coronal +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Enchntr. Earring +1",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Prolix Ring",ring2="Perception Ring",
        back=gear.RDMCape.INT,waist="Witful Belt",legs="Psycloth Lappas",feet="Jhakri Pigaches +1"}
 
    sets.midcast.INTPotency = {main="Twebuliij",sub="Mephitis Grip",ammo="Oreiad's Tathlum",
        head="Jhakri Coronal +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
        body="Lethargy Sayon +1",hands="Jhakri Cuffs +1",ring1="Spiral Ring",ring2="Diamond Ring",
        back=gear.RDMCape.MND,waist="Channeler's Stone",legs="Psycloth Lappas",feet="Uk'uxkaj Boots"}
 
    sets.midcast.INTPotency.Acc = set_combine(sets.midcast.INTAccuracy, {body="Lethargy Sayon +1",feet="Uk'uxkaj Boots"})
 
    --------------------------------------
    -- Enhancing magic
    --------------------------------------
    --Set for casting on others with composure up
    sets.midcast.EnhancingDuration = {ammo="Homiliary",
        head="Lethargy Chappel",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Ethereal Earring",
        body="Lethargy Sayon +1",hands="Atrophy Gloves +1",ring1="Prolix Ring",ring2="Defending Ring",
        back=gear.RDMCape.MND,waist="Pya'ekue Belt",legs="Lethargy Fuseau +1",feet="Lethargy Houseaux +1"}

  --Enhancing Skill set for spells like temper. to add spells to this list see the list in user_setup
    sets.midcast.EnhancingSkill = {ammo="Homiliary",
        head="Umuthi Hat",neck="Colossus's Torque",ear1="Estq. Earring",ear2="Andoaa Earring",
        body="Vitivation Tabard",hands="Atrophy Gloves +1",ring1="Prolix Ring",ring2="Defending Ring",
        back=gear.RDMCape.MND,waist="Pya'ekue Belt",legs="Atrophy Tights +1",feet="Lethargy Houseaux +1"}

    --Base duration set for spells cast on self that don't require skill
    sets.midcast['Enhancing Magic'] = set_combine(sets.midcast.EnhancingDuration, {--[['Telchine with enhancing duration, etc.']]})

    sets.midcast.Aquaveil = set_combine(sets.midcast.EnhancingDuration, {waist="Emphatikos Rope",legs="Shedir Seraweels"})
 
    sets.midcast.BarElement = sets.midcast.EnhancingSkill
    sets.midcast.Enspell = sets.midcast.EnhancingSkill
    sets.midcast.Gain = sets.midcast.EnhancingSkill
    sets.midcast.Phalanx = sets.midcast.EnhancingSkill
 
    sets.midcast.Refresh = set_combine(sets.midcast.EnhancingDuration, {legs="Lethargy Fuseau +1"})
 
    sets.midcast.Regen = set_combine(sets.midcast.EnhancingDuration, {main="Bolelabunga",
        body="Telchine Chasuble"})
 
    sets.midcast.Stoneskin = set_combine(sets.midcast.EnhancingDuration, {
        neck="Stone Gorget",ear2="Earthcry Earring",waist="Siegel Sash",legs="Shedir Seraweels"})
 
    sets.ComposureOther = {head="Lethargy Chappel",
        body="Lethargy Sayon +1",hands="Lethargy Gantherots +1",
        back=gear.RDMCape.MND,legs="Lethargy Fuseau +1",feet="Lethargy Houseaux +1"}
 
    --------------------------------------
    -- Healing magic
    --------------------------------------
 
    sets.midcast.FrontlineCure = {ammo="Oreiad's Tathlum",
        head="Gende. Caubeen +1",neck="Phalaina Locket",ear1="Estq. Earring",ear2="Ethereal Earring",
        body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Asklepian Ring",
        back=gear.RDMCape.MND,waist="Pya'ekue Belt",legs="Atrophy Tights +1",feet="Lethargy Houseaux +1"}
 
    sets.midcast.BacklineCure = {main="Tamaxchi",sub="Genbu's Shield",ammo="Oreiad's Tathlum",
        head="Gende. Caubeen +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Novia Earring",
        body="Heka's Kalasiris",hands="Gende. Gages +1",ring1="Prolix Ring",ring2="Sirona's Ring",
        back=gear.RDMCape.MND,waist="Pya'ekue Belt",legs="Atrophy Tights +1",feet="Lethargy Houseaux +1"}
 
    sets.midcast.StatusRemoval = sets.midcast.FastRecast
 
    --------------------------------------
    -- Active Buffs
    --------------------------------------
 
    sets.buff.Saboteur = {hands="Lethargy Gantherots +1"}
 
end
 
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks that are called to process player actions at specific points in time.
-------------------------------------------------------------------------------------------------------------------
 
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_midcast(spell, action, spellMap, eventArgs)
    if spell.action_type == 'Magic' then
        -- Default base equipment layer of fast recast.
        equip(sets.midcast.FastRecast)
    end
end
 
-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
    if spell.skill == 'Enfeebling Magic' and state.Buff.Saboteur then
        equip(sets.buff.Saboteur)
    elseif spell.element == world.weather_element or spell_element == world.day_element then
        if spell.skill == 'Healing Magic' then
            equip({main="Chatoyant Staff",back="Twilight Cape",waist="Hachirin-no-Obi"})
        else
            equip({back="Twilight Cape",waist="Hachirin-no-Obi"})
        end
    elseif spell.skill == 'Enhancing Magic' then
        if buffactive.composure and spell.target.type ~= 'SELF' then
            equip(sets.buff.EnhancingDuration)
        end
    end
end
 
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
    if not spell.interrupted then
        if state.Buff[spell.english] ~= nil then
            state.Buff[spell.english] = true
        end
    end
end
 
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
 
function determine_haste_group()
    --RDM can cap delay reduction with nothing more than Haste II provided it has /NIN & +31% Dual Wield.
    --With capped Magic Haste, meaning Haste II & 1 other form of Magic Haste, you need only +11%.
    --Optimally, engaged should have +31 DW, MaxHaste should have +11.
 
    classes.CustomMeleeGroups:clear()
 
    if buffactive.embrava then
        classes.CustomMeleeGroups:append('MaxHaste')
    elseif buffactive.march == 2 then
        classes.CustomMeleeGroups:append('MaxHaste')
    elseif buffactive[580] then
        classes.CustomMeleeGroups:append('MaxHaste')
    elseif buffactive[604] then
        classes.CustomMeleeGroups:append('MaxHaste')
    end
end
 
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
    if spell.action_type == 'Magic' then
        if (default_spell_map == 'Cure' or default_spell_map == 'Curaga') then
            if state.OffenseMode == 'None' then
                return "BacklineCure"
            else
                return "FrontlineCure"
            end
        elseif MNDPotencySpells:contains(spell.english) then
            return 'MNDPotency'
        elseif spell.english == 'Silence' then
            return 'MNDAccuracy'
        elseif spell.english == 'Blind' then
            return 'INTPotency'
        elseif INTAccuracySpells:contains(spell.english) then
            return 'INTAccuracy'
        elseif spell.english:startswith('En') then
            return 'Enspell'
        elseif spell.english:startswith('Gain') then
            return 'Gain'
        elseif EarthSpells:contains(spell.english) then
            return 'Stone'
        elseif IceSpells:contains(spell.english) then
            return 'Blizzard'
        elseif SkillSpells:contains(spell.english) then
            return 'EnhancingSkill'
        end
    end
end
 
-------------------------------------------------------------------------------------------------------------------
-- General hooks for other events.
-------------------------------------------------------------------------------------------------------------------
 
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
    if S{'haste','march','embrava','haste samba'}:contains(buff:lower()) then
        determine_haste_group()
        handle_equipping_gear(player.status)
    elseif state.Buff[buff] ~= nil then
        handle_equipping_gear(player.status)
    end
end
 
function get_custom_wsmode(spell, action, spellMap, default_wsmode)
    if default_wsmode == 'Acc' and classes.Daytime then
        return 'DaytimeAcc'
    end
end
 
function job_time_change(new_time, old_time)
    classes.CustomMeleeGroups:clear()
    if classes.Daytime then
        classes.CustomMeleeGroups:append('Daytime')
    end
    handle_equipping_gear(player.status)
end
 
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
 
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)
    update_combat_form()
    determine_haste_group()
    th_update(cmdParams, eventArgs)
end
 
function job_state_change(stateField, newValue, oldValue)
    if stateField == 'Offense Mode' then
        if newValue == 'None' then
            enable('main','sub','range')
        else
            if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
                equip(sets.FrontlineWeapons.DW)
            else
                equip(sets.FrontlineWeapons)
            end
            disable('main','sub','range')
        end
    end
end
 
-- Set eventArgs.handled to true if we don't want the automatic display to be run.
function display_current_job_state(eventArgs)
    local msg = 'Melee'
 
    if state.CombatForm.has_value then
        msg = msg .. ' (' .. state.CombatForm.value .. ')'
    end
 
    msg = msg .. ': '
 
    msg = msg .. state.OffenseMode.value
    if state.HybridMode.value ~= 'Normal' then
        msg = msg .. '/' .. state.HybridMode.value
    end
    msg = msg .. ', WS: ' .. state.WeaponskillMode.value
 
    if state.DefenseMode.value ~= 'None' then
        msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
    end
 
    if state.Kiting.value == true then
        msg = msg .. ', Kiting'
    end
 
    if state.PCTargetMode.value ~= 'default' then
        msg = msg .. ', Target PC: '..state.PCTargetMode.value
    end
 
    if state.SelectNPCTargets.value == true then
        msg = msg .. ', Target NPCs'
    end
 
    msg = msg .. ', TH: ' .. state.TreasureMode.value
 
    add_to_chat(122, msg)
 
    eventArgs.handled = true
end
 
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
 
-- Select DW combat form as appropriate
function update_combat_form()
    if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
        if player.equipment.sub == 'empty' or Shields:contains(player.equipment.sub) then
            state.CombatForm:reset()
        else
            state.CombatForm:set('DW')
        end
    else
        state.CombatForm:reset()
    end
end
 
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
    if player.sub_job == 'BLM' then
        set_macro_page(2, 5)
    elseif player.sub_job == 'NIN' then
        set_macro_page(4, 5)
    elseif player.sub_job == 'DNC' then
        set_macro_page(5, 5)
    elseif player.sub_job == 'DRK' then
        set_macro_page(7, 5)
    elseif player.sub_job == 'PLD' then
        set_macro_page(8, 5)
    else
        set_macro_page(1, 5)
    end
end

Try this
 Phoenix.Demonjustin
Offline
Server: Phoenix
Game: FFXI
Posts: 661
By Phoenix.Demonjustin 2016-08-12 19:34:55
Link | Quote | Reply
 
Ok, I fixed that. All the same, that doesn't seem to address the issue with Temper II. I'm not sure why that spell doesn't use my "sets.midcast.EnhancingSkill" set, as opposed to "sets.midcast.EnhancingDuration".
 Odin.Lygre
Offline
Server: Odin
Game: FFXI
user: Dylaudid
Posts: 89
By Odin.Lygre 2016-08-12 20:02:00
Link | Quote | Reply
 
Code
-------------------------------------------------------------------------------------------------------------------
-- Initialization function that defines sets and variables to be used.
-------------------------------------------------------------------------------------------------------------------
 
-- Initialization function for this job file.
function get_sets()
    mote_include_version = 2
 
    -- Load and initialize the include file.
    include('Mote-Include.lua')
end
 
-- Setup vars that are user-independent. state.Buff vars initialized here will automatically be tracked.
function job_setup()
    state.Buff.Saboteur = buffactive.saboteur or false
 
    --event_list = L{}
    --event_list:append()
    windower.register_event('time change', time_change)
 
    include('Mote-TreasureHunter.lua')
    state.TreasureMode:set('Tag')
 
    -- 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}
 
    determine_haste_group()
end
 
-- Setup vars that are user-dependent. Can override this function in a sidecar file.
function user_setup()
    state.OffenseMode:options('None', 'Normal', 'Acc')
    state.HybridMode:options('Normal', 'DT')
    state.WeaponskillMode:options('Normal', 'Acc')
    state.CastingMode:options('Normal', 'Acc', 'MB', 'MBAcc')
    state.PhysicalDefenseMode:options('PDT', 'RefreshPDT')
 
    MNDPotencySpells = S{'Paralyze', 'Paralyze II', 'Slow', 'Slow II', 'Addle', 'Distract', 'Distract II', 'Frazzle', 'Frazzle II'}
    INTAccuracySpells = S{'Sleep', 'Sleep II', 'Sleepga', 'Sleepga II', 'Break', 'Breakga', 'Bind', 'Dispel', 'Gravity', 'Gravity II'}
    EarthSpells = S{'Stone', 'Stone II', 'Stone III', 'Stone IV', 'Stone V', 'Stonega', 'Stonega II', 'Stonega III', 'Stoneja', 'Stonera', 'Stonera II', 'Geohelix'}
    IceSpells = S{'Blizzard', 'Blizzard II', 'Blizzard III', 'Blizzard IV', 'Blizzard V', 'Blizzaga', 'Blizzaga II', 'Blizzaga III', 'Blizzaja', 'Blizzara', 'Blizzara II', 'Cryohelix'}
    Shields = S{"Genbu's Shield"}
    SkillSpells = S{'Temper','Temper II'}
    update_combat_form()
    select_default_macro_book()
end
 
-- Called when this job file is unloaded (eg: job change)
function file_unload()
    --event_list:map(unregister_event)
end
 
-- Define sets and vars used by this job file.
function init_gear_sets()
 
    --------------------------------------
    -- Augmented Gear
    --------------------------------------
 
    gear.HagCuffs = {}
    gear.HagCuffs.MAcc = {name="Hagondes Cuffs +1",augments={'Phys. dmg. taken -3%','Mag. Acc.+26'}}
    gear.RDMCape = {}
    gear.RDMCape.TP = {name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Haste+10',}}
    gear.RDMCape.WS = {name="Sucellos's Cape", augments={'DEX+20','Accuracy+20 Attack+20','DEX+10','Weapon skill damage +10%',}}
    gear.RDMCape.MND = {name="Sucellos's Cape", augments={'MND+20','Mag. Acc+20 /Mag. Dmg.+20','"Fast Cast"+10',}}
    gear.RDMCape.INT = {name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','"Mag.Atk.Bns."+10',}}
    gear.RDMCape.INTWS = {name="Sucellos's Cape", augments={'INT+20','Mag. Acc+20 /Mag. Dmg.+20','INT+10','Weapon skill damage +10%',}}
 
    --------------------------------------
    -- Idle
    --------------------------------------
 
    sets.idle.Town = {main="Bolelabunga",sub="Beatific Shield +1",ammo="Homiliary",
        head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
        body="Councilor's Garb",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shneddick Ring",
        back="Kumbira Cape",waist="Fucho-no-Obi",legs="Nares Trews",feet="Serpentes Sabots"}
 
    sets.idle.Field = {main="Bolelabunga",sub="Beatific Shield +1",ammo="Homiliary",
        head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
        body="Jhakri Robe +1",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shneddick Ring",
        back="Kumbira Cape",waist="Fucho-no-Obi",legs="Nares Trews",feet="Serpentes Sabots"}
 
    sets.idle.Weak = {main="Bolelabunga",sub="Beatific Shield +1",ammo="Homiliary",
        head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
        body="Jhakri Robe +1",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shneddick Ring",
        back="Kumbira Cape",waist="Fucho-no-Obi",legs="Nares Trews",feet="Serpentes Sabots"}
 
    --------------------------------------
    -- Defense
    --------------------------------------
 
    sets.defense.PDT = {main="Shikargar",sub="Genbu's Shield",ammo="Homiliary",
        head="Lithelimb Cap",neck="Twilight Torque",ear1="Brutal Earring",ear2="Ethereal Earring",
        body="Karmesin Vest",hands="Umuthi Gloves",ring1="Defending Ring",ring2="Shneddick Ring",
        back="Shadow Mantle",waist="Fucho-no-Obi",legs="Osmium Cuisses",feet="Battlecast Gaiters"}
 
    sets.defense.RefreshPDT = {main="Shikargar",sub="Genbu's Shield",ammo="Homiliary",
        head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Brutal Earring",ear2="Ethereal Earring",
        body="Lethargy Sayon +1",hands="Umuthi Gloves",ring1="Defending Ring",ring2="Shneddick Ring",
        back="Shadow Mantle",waist="Fucho-no-Obi",legs="Osmium Cuisses",feet="Battlecast Gaiters"}
 
    sets.defense.MDT = {main="Shikargar",sub="Beatific Shield +1",ammo="Homiliary",
        head="Atrophy Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
        body="Lethargy Sayon +1",hands="Vitivation Gloves +1",ring1="Defending Ring",ring2="Shadow Ring",
        back=gear.RDMCape.INT,waist="Channeler's Stone",legs="Atrophy Tights +1",feet="Merlinic Crackows"}
 
    --------------------------------------
    -- Resting
    --------------------------------------
 
    sets.resting = {main="Bolelabunga",sub="Genbu's Shield",ammo="Homiliary",
        head="Viti. Chapeau +1",neck="Twilight Torque",ear1="Novia Earring",ear2="Ethereal Earring",
        body="Lethargy Sayon +1",hands="Serpentes Cuffs",ring1="Defending Ring",ring2="Shadow Ring",
        back="Shadow Mantle",waist="Fucho-no-obi",legs="Nares Trews",feet="Serpentes Sabots"}
 
    --------------------------------------
    -- Engaged
    --------------------------------------
 
    sets.engaged = {main="Excalibur", sub="Beatific Shield +1",ammo="Paeapua",
        head="Jhakri Coronal +1",neck="Asperity Necklace",ear1="Bladeborn Earring",ear2="Steelflash Earring",
        body="Karmesin Vest",hands="Chironic Gloves",ring1="K'ayres Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Windbuffet Belt",legs="Carmine Cuisses +1",feet="Jhakri Pigaches +1"}
 
    sets.engaged.Acc = set_combine(sets.engaged, {ammo="Jukukik Feather",neck="Iqabi Necklace"})
 
    sets.engaged.Acc.Daytime = set_combine(sets.engaged.Acc, {ammo="Tengu-no-Hane"})
 
    sets.engaged.DW = set_combine(sets.engaged, {ear1="Dudgeon Earring",ear2="Heartseeker Earring",waist="Shetal Stone",feet="Taeon Boots"})
 
    sets.engaged.DW.Acc = set_combine(sets.engaged.Acc, {ear1="Dudgeon Earring",ear2="Heartseeker Earring",waist="Shetal Stone",feet="Taeon Boots"})
 
    sets.engaged.DW.Acc.Daytime = set_combine(sets.engaged.Acc.Daytime, {ear1="Dudgeon Earring",ear2="Heartseeker Earring",waist="Shetal Stone",feet="Taeon Boots"})
 
    -- Defensive melee group
 
    sets.engaged.DT = set_combine(sets.engaged, {head="Lithelimb Cap",neck="Twilight Torque",
        hands="Umuthi Gloves",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
 
    sets.engaged.Acc.DT = set_combine(sets.engaged.Acc, {head="Lithelimb Cap",neck="Twilight Torque",
        hands="Umuthi Gloves",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
 
    sets.engaged.Acc.DT.Daytime = set_combine(sets.engaged.Acc.Daytime, {head="Lithelimb Cap",neck="Twilight Torque",
        hands="Umuthi Gloves",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
 
    sets.engaged.DW.DT = set_combine(sets.engaged.DW, {head="Lithelimb Cap",neck="Twilight Torque",
        hands="Umuthi Gloves",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
 
    sets.engaged.DW.Acc.DT = set_combine(sets.engaged.DW.Acc, {head="Lithelimb Cap",neck="Twilight Torque",
        hands="Umuthi Gloves",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
 
    sets.engaged.DW.Acc.DT.Daytime = set_combine(sets.engaged.DW.Acc.Daytime, {head="Lithelimb Cap",neck="Twilight Torque",
        hands="Umuthi Gloves",ring2="Defending Ring",legs="Osmium Cuisses",feet="Battlecast Gaiters"})
 
    -- Sets for MaxHaste with less DW.
 
    sets.engaged.MaxHaste = set_combine(sets.engaged, {})
    sets.engaged.Acc.MaxHaste = set_combine(sets.engaged.Acc, {})
    sets.engaged.Acc.Daytime.MaxHaste = set_combine(sets.engaged.Acc.Daytime, {})
    sets.engaged.DW.MaxHaste = set_combine(sets.engaged.DW, {ear1="Brutal Earring",ear2="Suppanomimi",waist="Windbuffet Belt",feet="Jhakri Pigaches +1"})
    sets.engaged.DW.Acc.MaxHaste = set_combine(sets.engaged.DW.Acc, {ear1="Brutal Earring",ear2="Suppanomimi",waist="Windbuffet Belt",feet="Jhakri Pigaches +1"})
    sets.engaged.DW.Acc.Daytime.MaxHaste = set_combine(sets.engaged.DW.Acc.Daytime, {ear1="Brutal Earring",ear2="Suppanomimi",waist="Windbuffet Belt",feet="Jhakri Pigaches +1"})
 
    sets.FrontlineWeapons = {main="Excalibur", sub="Beatific Shield +1"}
    sets.FrontlineWeapons.DW = {main="Excalibur", sub="Demersal Degen"}
 
    --------------------------------------
    -- Job Abilities
    --------------------------------------
 
    -- Precast sets to enhance JAs
    sets.precast.JA['Chainspell'] = {body="Vitivation Tabard"}
 
    if player.sub_job == 'DNC' then
        -- Waltz set (chr and vit)
        sets.precast.Waltz = {ammo="Homiliary",
            head="Lethargy Chappel +1",neck="Twilight Torque",ear1="Brutal Earring",ear2="Ethereal Earring",
            body="Lethargy Sayon +1",hands="Viti. Gloves +1",ring1="Aqua Ring",ring2="Asklepian Ring",
            back="Kumbira Cape",waist="Fucho-no-Obi",legs="Atrophy Tights +1",feet="Jhakri Pigaches +1"}
 
        sets.precast.Waltz['Healing Waltz'] = {}
    end
 
    --------------------------------------
    -- Weaponskills
    --------------------------------------
 
    sets.precast.WS = {ammo="Cheruski Needle",
        head="Jhakri Coronal +1",neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Aqua Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Fotia Belt",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
    sets.precast.WS.Acc = set_combine(sets.precast.WS, {ammo="Jukukik Feather"})
    sets.precast.WS.DaytimeAcc = set_combine(sets.precast.WS.Acc, {ammo="Tengu-no-Hane"})
 
    -- Specific weaponskill sets. Uses the base set if an appropriate WSMod version isn't found.
    sets.precast.WS['Savage Blade'] = {ammo="Cheruski Needle",
        head="Jhakri Coronal +1",neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Aqua Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Fotia Belt",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
    sets.precast.WS['Savage Blade'].Acc = set_combine(sets.precast.WS['Savage Blade'], {ammo="Jukukik Feather"})
    sets.precast.WS['Savage Blade'].DaytimeAcc = set_combine(sets.precast.WS['Savage Blade'].Acc, {ammo="Tengu-no-Hane"})
 
    sets.precast.WS['Requiescat'] = {ammo="Oreiad's Tathlum",
        head="Jhakri Coronal +1",neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Aqua Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Fotia Belt",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
    sets.precast.WS['Requiescat'].Acc = set_combine(sets.precast.WS['Requiescat'], {ammo="Jukukik Feather"})
    sets.precast.WS['Requiescat'].DaytimeAcc = set_combine(sets.precast.WS['Requiescat'].Acc, {ammo="Tengu-no-Hane"})
 
    sets.precast.WS['Knights of Round'] = {ammo="Cheruski Needle",
        head="Jhakri Coronal +1",neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Aqua Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Fotia Belt",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
    sets.precast.WS['Knights of Round'].Acc = set_combine(sets.precast.WS['Knights of Round'], {ammo="Jukukik Feather"})
    sets.precast.WS['Knights of Round'].DaytimeAcc = set_combine(sets.precast.WS['Knights of Round'].Acc, {ammo="Tengu-no-Hane"})
 
    sets.precast.WS['Death Blossom'] = {ammo="Cheruski Needle",
        head="Jhakri Coronal +1",neck="Fotia Gorget",ear1="Bladeborn Earring",ear2="Steelflash Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Aqua Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Fotia Belt",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
    sets.precast.WS['Death Blossom'].Acc = set_combine(sets.precast.WS['Death Blossom'], {ammo="Jukukik Feather"})
    sets.precast.WS['Death Blossom'].DaytimeAcc = set_combine(sets.precast.WS['Death Blossom'].Acc, {ammo="Tengu-no-Hane"})
 
    sets.precast.WS['Chant du Cygne'] = {ammo="Yetshila",
        head="Jhakri Coronal +1",neck="Fotia Gorget",ear1="Brutal Earring",ear2="Moonshade Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Thundersoul Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Fotia Belt",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
    sets.precast.WS['Chant du Cygne'].Acc = set_combine(sets.precast.WS['Chant du Cygne'], {ammo="Jukukik Feather"})
    sets.precast.WS['Chant du Cygne'].DaytimeAcc = set_combine(sets.precast.WS['Chant du Cygne'].Acc, {ammo="Tengu-no-Hane"})
 
    sets.precast.WS['Sanguine Blade'] = {ammo="Witchstone",
        head="Jhakri Coronal +1",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Crematio Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Archon Ring",ring2="Diamond Ring",
        back=gear.RDMCape.INTWS,waist="Channeler's Stone",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
 
    sets.precast.WS['Seraph Blade'] = set_combine(sets.precast.WS['Sanguine Blade'], {waist="Chaac Belt"})
    sets.precast.WS['Aeolian Edge'] = set_combine(sets.precast.WS['Sanguine Blade'], {waist="Chaac Belt"})
    sets.precast.WS['Cyclone'] = sets.precast.WS['Aeolian Edge']
    sets.precast.WS['Evisceration'] = sets.precast.WS['Chant du Cygne']
    sets.precast.WS['Evisceration'].Acc = sets.precast.WS['Chant du Cygne'].Acc
    sets.precast.WS['Evisceration'].DaytimeAcc = sets.precast.WS['Chant du Cygne'].DaytimeAcc
    sets.precast.WS['True Strike'] = {ammo="Yetshila",
        head="Jhakri Coronal +1",neck="Fotia Gorget",ear1="Brutal Earring",ear2="Moonshade Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Spiral Ring",ring2="Rajas Ring",
        back=gear.RDMCape.TP,waist="Fotia Belt",legs="Jhakri Slops +1",feet="Jhakri Pigaches +1"}
    sets.precast.WS['True Strike'].Acc = set_combine(sets.precast.WS['Chant du Cygne'], {ammo="Jukukik Feather"})
    sets.precast.WS['True Strike'].DaytimeAcc = set_combine(sets.precast.WS['True Strike'].Acc, {ammo="Tengu-no-Hane"})
 
    --------------------------------------
    -- Fast Cast
    --------------------------------------
 
    -- 80% Fast Cast (including trait) for all spells, plus 5% quick cast. No other FC sets necessary.
    sets.precast.FC = {ammo="Impatiens",
        head="Atro. Chapeau +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Enchntr. Earring +1",
        body="Vitivation Tabard",hands="Gende. Gages +1",ring1="Prolix Ring",ring2="Shneddick Ring",
        back="Ogapepo Cape +1",waist="Witful Belt",legs="Psycloth Lappas",feet="Battlecast Gaiters"}
 
    sets.precast.FC.Impact = set_combine(sets.precast.FC, {head=empty,body="Twilight Cloak"})
 
    --------------------------------------
    -- Midcast
    --------------------------------------
 
    sets.midcast.FastRecast = {
        head="Atro. Chapeau +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Ethereal Earring",
        body="Vitivation Tabard",hands="Umuthi Gloves",ring1="Prolix Ring",ring2="Shneddick Ring",
        back="Shadow Mantle",waist="Pya'ekue Belt",legs="Psycloth Lappas",feet="Battlecast Gaiters"}
 
    sets.midcast.Flash = set_combine(sets.midcast.FastRecast, {ammo="Paeapua",
        ear1="Friomisi Earring"})
 
    --------------------------------------
    -- Dark magic
    --------------------------------------
 
    sets.midcast['Dark Magic'] = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
        head="Lethargy Chappel +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
        body="Jhakri Robe +1",hands=gear.HagCuffs.MAcc,ring1="Sangoma Ring",ring2="Archon Ring",
        back=gear.RDMCape.INT,waist="Channeler's Stone",legs="Psycloth Lappas",feet="Jhakri Pigaches +1"}
 
    sets.midcast.Stun = {main="Twebuliij",sub="Mephitis Grip",ammo="Impatiens",
        head="Atro. Chapeau +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Enchntr. Earring +1",
        body="Vitivation Tabard",hands="Gende. Gages +1",ring1="Prolix Ring",ring2="Archon Ring",
        back=gear.RDMCape.INT,waist="Witful Belt",legs="Psycloth Lappas",feet="Battlecast Gaiters"}
 
    sets.midcast['Drain'] = set_combine(sets.midcast.INTAccuracy, {belt="Fucho-no-Obi",feet="Merlinic Crackows"})
    sets.midcast['Aspir'] = sets.midcast['Drain']
 
    --------------------------------------
    -- Elemental magic
    --------------------------------------
 
    sets.midcast['Elemental Magic'] = {main="Lehbrailg +2",sub="Mephitis Grip",ammo="Witchstone",
        head="Jhakri Coronal +1",neck="Eddy Necklace",ear1="Friomisi Earring",ear2="Crematio Earring",
        body="Seidr Cotehardie",hands="Amalric Gages",ring1="Acumen Ring",ring2="Diamond Ring",
        back=gear.RDMCape.INT,waist="Channeler's Stone",legs="Merlinic Shalwar",feet="Merlinic Crackows"}
 
    sets.midcast['Elemental Magic'].Acc = set_combine(sets.midcast['Elemental Magic'], {ammo="Kalboron Stone",
        head="Jhakri Coronal +1",neck="Imbodla Necklace",ear1="Lifestorm Earring",ear2="Psystorm Earring",
        body="Seidr Cotehardie",ring1="Sangoma Ring",
        back=gear.RDMCape.INT,waist="Channeler's Stone"})
 
    sets.midcast['Elemental Magic'].MB = set_combine(sets.midcast['Elemental Magic'], {
        ring2="Mujin Band",back="Seshaw Cape",legs="Merlinic Shalwar",feet="Merlinic Crackows"})
 
    sets.midcast['Elemental Magic'].MBAcc = set_combine(sets.midcast['Elemental Magic'].Acc, {
        ring2="Mujin Band",back="Seshaw Cape",legs="Merlinic Shalwar",feet="Merlinic Crackows"})
 
    sets.midcast.Stone = set_combine(sets.midcast['Elemental Magic'], {neck="Quanpur Necklace"})
    sets.midcast.Stone.Acc = set_combine(sets.midcast['Elemental Magic'].Acc, {neck="Quanpur Necklace"})
    sets.midcast.Blizzard = set_combine(sets.midcast['Elemental Magic'], {main="Ngqoqwanb"})
    sets.midcast.Blizzard.Acc = set_combine(sets.midcast['Elemental Magic'].Acc, {main="Ngqoqwanb"})
 
    sets.midcast.ElementalEnfeeble = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
        head="Jhakri Coronal +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Sangoma Ring",ring2="Perception Ring",
        back=gear.RDMCape.INT,waist="Channeler's Stone",legs="Psycloth Lappas",feet="Jhakri Pigaches +1"}
 
    sets.midcast.Impact = set_combine(sets.midcast['ElementalEnfeeble'], {head=empty,body="Twilight Cloak"})
 
    --------------------------------------
    -- Enfeebling magic
    --------------------------------------
 
    sets.midcast['Enfeebling Magic'] = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
        head="Befouled Crown",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
        body="Jhakri Robe +1",hands="Lethargy Gantherots +1",ring1="Sangoma Ring",ring2="Perception Ring",
        back=gear.RDMCape.MND,waist="Porous Rope",legs="Psycloth Lappas",feet="Jhakri Pigaches +1"}
 
    sets.midcast['Break'] = sets.midcast['Enfeebling Magic']
 
    sets.midcast['Dia III'] = set_combine(sets.midcast.FastRecast, {head="Viti. Chapeau +1", waist="Chaac Belt"})
 
    sets.midcast['Diaga'] = set_combine(sets.midcast.FastRecast, {waist="Chaac Belt"})
 
    sets.midcast.MNDAccuracy = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
        head="Befouled Crown",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
        body="Jhakri Robe +1",hands="Lethargy Gantherots +1",ring1="Sangoma Ring",ring2="Perception Ring",
        back=gear.RDMCape.MND,waist="Rumination Sash",legs="Psycloth Lappas",feet="Jhakri Pigaches +1"}
 
    sets.midcast.MNDPotency = {main="Twebuliij",sub="Mephitis Grip",ammo="Oreiad's Tathlum",
        head="Befouled Crown",neck="Phalaina Locket",ear1="Lifestorm Earring",ear2="Psystorm Earring",
        body="Lethargy Sayon +1",hands="Lethargy Gantherots +1",ring1="Aqua Ring",ring2="Sirona's Ring",
        back=gear.RDMCape.MND,waist="Porous Rope",legs="Psycloth Lappas",feet="Uk'uxkaj Boots"}
 
    sets.midcast.MNDPotency.Acc = set_combine(sets.midcast.MNDAccuracy, {body="Lethargy Sayon +1",feet="Uk'uxkaj Boots"})
 
    sets.midcast.INTAccuracy = {main="Twebuliij",sub="Mephitis Grip",ammo="Kalboron Stone",
        head="Jhakri Coronal +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Enchntr. Earring +1",
        body="Jhakri Robe +1",hands="Jhakri Cuffs +1",ring1="Prolix Ring",ring2="Perception Ring",
        back=gear.RDMCape.INT,waist="Witful Belt",legs="Psycloth Lappas",feet="Jhakri Pigaches +1"}
 
    sets.midcast.INTPotency = {main="Twebuliij",sub="Mephitis Grip",ammo="Oreiad's Tathlum",
        head="Jhakri Coronal +1",neck="Weike Torque",ear1="Lifestorm Earring",ear2="Psystorm Earring",
        body="Lethargy Sayon +1",hands="Jhakri Cuffs +1",ring1="Spiral Ring",ring2="Diamond Ring",
        back=gear.RDMCape.MND,waist="Channeler's Stone",legs="Psycloth Lappas",feet="Uk'uxkaj Boots"}
 
    sets.midcast.INTPotency.Acc = set_combine(sets.midcast.INTAccuracy, {body="Lethargy Sayon +1",feet="Uk'uxkaj Boots"})
 
    --------------------------------------
    -- Enhancing magic
    --------------------------------------
    --Set for casting on others with composure up
    sets.midcast.EnhancingDuration = {ammo="Homiliary",
        head="Lethargy Chappel",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Ethereal Earring",
        body="Lethargy Sayon +1",hands="Atrophy Gloves +1",ring1="Prolix Ring",ring2="Defending Ring",
        back=gear.RDMCape.MND,waist="Pya'ekue Belt",legs="Lethargy Fuseau +1",feet="Lethargy Houseaux +1"}

  --Enhancing Skill set for spells like temper. to add spells to this list see the list in user_setup
    sets.midcast.EnhancingSkill = {ammo="Homiliary",
        head="Umuthi Hat",neck="Colossus's Torque",ear1="Estq. Earring",ear2="Andoaa Earring",
        body="Vitivation Tabard",hands="Atrophy Gloves +1",ring1="Prolix Ring",ring2="Defending Ring",
        back=gear.RDMCape.MND,waist="Pya'ekue Belt",legs="Atrophy Tights +1",feet="Lethargy Houseaux +1"}

    --Base duration set for spells cast on self that don't require skill
    sets.midcast['Enhancing Magic'] = set_combine(sets.midcast.EnhancingDuration, {--[['Telchine with enhancing duration, etc.']]})

    sets.midcast.Aquaveil = set_combine(sets.midcast.EnhancingDuration, {waist="Emphatikos Rope",legs="Shedir Seraweels"})
 
    sets.midcast.BarElement = sets.midcast.EnhancingSkill
    sets.midcast.Enspell = sets.midcast.EnhancingSkill
    sets.midcast.Gain = sets.midcast.EnhancingSkill
    sets.midcast.Phalanx = sets.midcast.EnhancingSkill
 
    sets.midcast.Refresh = set_combine(sets.midcast.EnhancingDuration, {legs="Lethargy Fuseau +1"})
 
    sets.midcast.Regen = set_combine(sets.midcast.EnhancingDuration, {main="Bolelabunga",
        body="Telchine Chasuble"})
 
    sets.midcast.Stoneskin = set_combine(sets.midcast.EnhancingDuration, {
        neck="Stone Gorget",ear2="Earthcry Earring",waist="Siegel Sash",legs="Shedir Seraweels"})
 
    sets.ComposureOther = {head="Lethargy Chappel",
        body="Lethargy Sayon +1",hands="Lethargy Gantherots +1",
        back=gear.RDMCape.MND,legs="Lethargy Fuseau +1",feet="Lethargy Houseaux +1"}
 
    --------------------------------------
    -- Healing magic
    --------------------------------------
 
    sets.midcast.FrontlineCure = {ammo="Oreiad's Tathlum",
        head="Gende. Caubeen +1",neck="Phalaina Locket",ear1="Estq. Earring",ear2="Ethereal Earring",
        body="Heka's Kalasiris",hands="Bokwus Gloves",ring1="Prolix Ring",ring2="Asklepian Ring",
        back=gear.RDMCape.MND,waist="Pya'ekue Belt",legs="Atrophy Tights +1",feet="Lethargy Houseaux +1"}
 
    sets.midcast.BacklineCure = {main="Tamaxchi",sub="Genbu's Shield",ammo="Oreiad's Tathlum",
        head="Gende. Caubeen +1",neck="Orunmila's Torque",ear1="Estq. Earring",ear2="Novia Earring",
        body="Heka's Kalasiris",hands="Gende. Gages +1",ring1="Prolix Ring",ring2="Sirona's Ring",
        back=gear.RDMCape.MND,waist="Pya'ekue Belt",legs="Atrophy Tights +1",feet="Lethargy Houseaux +1"}
 
    sets.midcast.StatusRemoval = sets.midcast.FastRecast
 
    --------------------------------------
    -- Active Buffs
    --------------------------------------
 
    sets.buff.Saboteur = {hands="Lethargy Gantherots +1"}
 
end
 
-------------------------------------------------------------------------------------------------------------------
-- Job-specific hooks that are called to process player actions at specific points in time.
-------------------------------------------------------------------------------------------------------------------
 
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_midcast(spell, action, spellMap, eventArgs)
    if spell.action_type == 'Magic' then
        -- Default base equipment layer of fast recast.
        equip(sets.midcast.FastRecast)
    end
end
 
-- Run after the default midcast() is done.
-- eventArgs is the same one used in job_midcast, in case information needs to be persisted.
function job_post_midcast(spell, action, spellMap, eventArgs)
    if spell.skill == 'Enfeebling Magic' and state.Buff.Saboteur then
        equip(sets.buff.Saboteur)
    elseif spell.element == world.weather_element or spell_element == world.day_element then
        if spell.skill == 'Healing Magic' then
            equip({main="Chatoyant Staff",back="Twilight Cape",waist="Hachirin-no-Obi"})
        else
            equip({back="Twilight Cape",waist="Hachirin-no-Obi"})
        end
    elseif spell.skill == 'Enhancing Magic' then
        if buffactive.composure and spell.target.type ~= 'SELF' then
            equip(sets.midcast.EnhancingDuration)
        end
    end
end
 
-- Set eventArgs.handled to true if we don't want any automatic gear equipping to be done.
function job_aftercast(spell, action, spellMap, eventArgs)
    if not spell.interrupted then
        if state.Buff[spell.english] ~= nil then
            state.Buff[spell.english] = true
        end
    end
end
 
-------------------------------------------------------------------------------------------------------------------
-- Customization hooks for idle and melee sets, after they've been automatically constructed.
-------------------------------------------------------------------------------------------------------------------
 
function determine_haste_group()
    --RDM can cap delay reduction with nothing more than Haste II provided it has /NIN & +31% Dual Wield.
    --With capped Magic Haste, meaning Haste II & 1 other form of Magic Haste, you need only +11%.
    --Optimally, engaged should have +31 DW, MaxHaste should have +11.
 
    classes.CustomMeleeGroups:clear()
 
    if buffactive.embrava then
        classes.CustomMeleeGroups:append('MaxHaste')
    elseif buffactive.march == 2 then
        classes.CustomMeleeGroups:append('MaxHaste')
    elseif buffactive[580] then
        classes.CustomMeleeGroups:append('MaxHaste')
    elseif buffactive[604] then
        classes.CustomMeleeGroups:append('MaxHaste')
    end
end
 
-- Custom spell mapping.
function job_get_spell_map(spell, default_spell_map)
    if spell.action_type == 'Magic' then
        if (default_spell_map == 'Cure' or default_spell_map == 'Curaga') then
            if state.OffenseMode == 'None' then
                return "BacklineCure"
            else
                return "FrontlineCure"
            end
        elseif MNDPotencySpells:contains(spell.english) then
            return 'MNDPotency'
        elseif spell.english == 'Silence' then
            return 'MNDAccuracy'
        elseif spell.english == 'Blind' then
            return 'INTPotency'
        elseif INTAccuracySpells:contains(spell.english) then
            return 'INTAccuracy'
        elseif spell.english:startswith('En') then
            return 'Enspell'
        elseif spell.english:startswith('Gain') then
            return 'Gain'
        elseif EarthSpells:contains(spell.english) then
            return 'Stone'
        elseif IceSpells:contains(spell.english) then
            return 'Blizzard'
        elseif SkillSpells:contains(spell.english) then
            return 'EnhancingSkill'
        end
    end
end
 
-------------------------------------------------------------------------------------------------------------------
-- General hooks for other events.
-------------------------------------------------------------------------------------------------------------------
 
-- Called when a player gains or loses a buff.
-- buff == buff gained or lost
-- gain == true if the buff was gained, false if it was lost.
function job_buff_change(buff, gain)
    if S{'haste','march','embrava','haste samba'}:contains(buff:lower()) then
        determine_haste_group()
        handle_equipping_gear(player.status)
    elseif state.Buff[buff] ~= nil then
        handle_equipping_gear(player.status)
    end
end
 
function get_custom_wsmode(spell, action, spellMap, default_wsmode)
    if default_wsmode == 'Acc' and classes.Daytime then
        return 'DaytimeAcc'
    end
end
 
function job_time_change(new_time, old_time)
    classes.CustomMeleeGroups:clear()
    if classes.Daytime then
        classes.CustomMeleeGroups:append('Daytime')
    end
    handle_equipping_gear(player.status)
end
 
-------------------------------------------------------------------------------------------------------------------
-- User code that supplements self-commands.
-------------------------------------------------------------------------------------------------------------------
 
-- Called by the 'update' self-command, for common needs.
-- Set eventArgs.handled to true if we don't want automatic equipping of gear.
function job_update(cmdParams, eventArgs)
    update_combat_form()
    determine_haste_group()
    th_update(cmdParams, eventArgs)
end
 
function job_state_change(stateField, newValue, oldValue)
    if stateField == 'Offense Mode' then
        if newValue == 'None' then
            enable('main','sub','range')
        else
            if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
                equip(sets.FrontlineWeapons.DW)
            else
                equip(sets.FrontlineWeapons)
            end
            disable('main','sub','range')
        end
    end
end
 
-- Set eventArgs.handled to true if we don't want the automatic display to be run.
function display_current_job_state(eventArgs)
    local msg = 'Melee'
 
    if state.CombatForm.has_value then
        msg = msg .. ' (' .. state.CombatForm.value .. ')'
    end
 
    msg = msg .. ': '
 
    msg = msg .. state.OffenseMode.value
    if state.HybridMode.value ~= 'Normal' then
        msg = msg .. '/' .. state.HybridMode.value
    end
    msg = msg .. ', WS: ' .. state.WeaponskillMode.value
 
    if state.DefenseMode.value ~= 'None' then
        msg = msg .. ', ' .. 'Defense: ' .. state.DefenseMode.value .. ' (' .. state[state.DefenseMode.value .. 'DefenseMode'].value .. ')'
    end
 
    if state.Kiting.value == true then
        msg = msg .. ', Kiting'
    end
 
    if state.PCTargetMode.value ~= 'default' then
        msg = msg .. ', Target PC: '..state.PCTargetMode.value
    end
 
    if state.SelectNPCTargets.value == true then
        msg = msg .. ', Target NPCs'
    end
 
    msg = msg .. ', TH: ' .. state.TreasureMode.value
 
    add_to_chat(122, msg)
 
    eventArgs.handled = true
end
 
-------------------------------------------------------------------------------------------------------------------
-- Utility functions specific to this job.
-------------------------------------------------------------------------------------------------------------------
 
-- Select DW combat form as appropriate
function update_combat_form()
    if player.sub_job == 'NIN' or player.sub_job == 'DNC' then
        if player.equipment.sub == 'empty' or Shields:contains(player.equipment.sub) then
            state.CombatForm:reset()
        else
            state.CombatForm:set('DW')
        end
    else
        state.CombatForm:reset()
    end
end
 
-- Select default macro book on initial load or subjob change.
function select_default_macro_book()
    if player.sub_job == 'BLM' then
        set_macro_page(2, 5)
    elseif player.sub_job == 'NIN' then
        set_macro_page(4, 5)
    elseif player.sub_job == 'DNC' then
        set_macro_page(5, 5)
    elseif player.sub_job == 'DRK' then
        set_macro_page(7, 5)
    elseif player.sub_job == 'PLD' then
        set_macro_page(8, 5)
    else
        set_macro_page(1, 5)
    end
end

Had to make a couple of changes, but if that doesn't work, I don't know.
 Bismarck.Snprphnx
Offline
Server: Bismarck
Game: FFXI
user: Snprphnx
Posts: 2691
By Bismarck.Snprphnx 2016-08-12 20:08:28
Link | Quote | Reply
 
Pantafernando said: »
Bismarck.Snprphnx said: »
What's the fastest/easiest way to get ranked up in Campaigns? How many fights/notes do I need per evaluation?

Unless SE changed something with campaign, there is no "fastest" way to rank up as you just rank up after the 5 days interval. Considering there are 20 medals, thats 100 days till you can max out campaign rank from the start.

Personally, what i did was to spam my op credits near the deadline. If i was missing enough effort to rank up, the npc will ask if i want to keep going, so i can spam any campaign battle till she gives me the option to rank up.

Rhapsody in Muave changes the evaluation period to 1 Earth Hour. I was just wondering how many battles/notes/XP I needed per rank up.
 Sylph.Jeanpaul
MSPaint Champion
Offline
Server: Sylph
Game: FFXI
user: JeanPaul
Posts: 2623
By Sylph.Jeanpaul 2016-08-12 20:16:56
Link | Quote | Reply
 
Bismarck.Snprphnx said: »
Rhapsody in Muave changes the evaluation period to 1 Earth Hour. I was just wondering how many battles/notes/XP I needed per rank up.
I usually get rank ups from cleaving a few armies, though it seems to require more at higher ranks. Last time I did this, at Wings tier, I think I'd get a rank up for killing off 5 armies.
 Phoenix.Demonjustin
Offline
Server: Phoenix
Game: FFXI
Posts: 661
By Phoenix.Demonjustin 2016-08-12 20:20:59
Link | Quote | Reply
 
Sylph.Jeanpaul said: »
Bismarck.Snprphnx said: »
Rhapsody in Muave changes the evaluation period to 1 Earth Hour. I was just wondering how many battles/notes/XP I needed per rank up.
I usually get rank ups from cleaving a few armies, though it seems to require more at higher ranks. Last time I did this, at Wings tier, I think I'd get a rank up for killing off 5 armies.
Isn't it kinda sad that nowadays we can just slaughter entire armies by ourselves? I mean... that war is so lopsided at this point. XD
Offline
Posts: 8073
By Afania 2016-08-12 23:51:23
Link | Quote | Reply
 
What's a good way to get prelate key for sandy mission 8.2? I read the wiki and the mob that drops it seems to be behind prelate key doors :(
 Siren.Lordgrim
Offline
Server: Siren
Game: FFXI
user: Lordgrim
Posts: 2020
By Siren.Lordgrim 2016-08-13 02:01:07
Link | Quote | Reply
 
isnt there a goblin or curio moggle that sells mission KI's ? i think the goblin is in lower jeuno near the AH

Afania said: »
What's a good way to get prelate key for sandy mission 8.2? I read the wiki and the mob that drops it seems to be behind prelate key doors :(
Offline
Posts: 12397
By Pantafernando 2016-08-13 04:21:53
Link | Quote | Reply
 
Afania said: »
What's a good way to get prelate key for sandy mission 8.2? I read the wiki and the mob that drops it seems to be behind prelate key doors :(

There are some prelates in the room before the password entrance, and more 3 or 4 before the door you should open. There arent many and the respawn time is big so you can take some time there.

I advise going thf. If yuo have a mule, you can drop one char in the room before the password entrance and the other after the password drop, and kill both camp of prelates.
[+]
Offline
Posts: 8073
By Afania 2016-08-13 04:48:27
Link | Quote | Reply
 
Thanks for the replies. In the end someone came and helped me open the door by aggroing mob behind the door.
 Odin.Godofgods
Offline
Server: Odin
Game: FFXI
Posts: 3995
By Odin.Godofgods 2016-08-13 16:45:22
Link | Quote | Reply
 
did they change the bylad rewards for coalition assignments? The table on bg said the one i did at 3 imps was 4800. But i continuously got 10,200 for it.
 Odin.Lygre
Offline
Server: Odin
Game: FFXI
user: Dylaudid
Posts: 89
By Odin.Lygre 2016-08-13 18:51:19
Link | Quote | Reply
 
Odin.Godofgods said: »
did they change the bylad rewards for coalition assignments? The table on bg said the one i did at 3 imps was 4800. But i continuously got 10,200 for it.
Yeah. A couple of times, I think.
 Odin.Llewelyn
Offline
Server: Odin
Game: FFXI
user: Llewelyn
Posts: 2254
By Odin.Llewelyn 2016-08-14 16:59:29
Link | Quote | Reply
 
Not a question, but there isn't really a "random facts" thread on this forum, so I guess I can share it here for people that may not have known. I wasn't aware of this until yesterday, so figured there would be others that would like this information.

While CPing on WAR I learned that you can perform a 3-step Radiance with AM1 prior to the final closing WS if the Radiance WS is used at over 2000 TP. For example, 1000TP Upheaval > Frag WS (Light) > 2000TP Upheaval (Radiance). You'll get an "AM2/3 effects wears off" after closing, so I guess the SC requirement part of the aftermath is applied before the WS like the SC damage portion. Pretty convenient if coordinating SCs between 2 people as you're more than likely to end up with over 2000 TP while waiting for your partner to close the middle WS. Makes Aeonics a tad more attractive than they seemed to me originally.
[+]
First Page 2 3 ... 453 454 455 ... 836 837 838
Log in to post.