|
Random Question thread (FFXI related)
Server: Sylph
Game: FFXI
Posts: 2623
By Sylph.Jeanpaul 2016-08-09 14:42:20
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).
Server: Siren
Game: FFXI
Posts: 306
By Siren.Dilandu 2016-08-09 16:22:08
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. :(
Server: Phoenix
Game: FFXI
Posts: 661
By Phoenix.Demonjustin 2016-08-11 13:49:32
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?
Server: Sylph
Game: FFXI
Posts: 19
By Sylph.Taruranto 2016-08-12 03:07:16
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
Server: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-08-12 06:18:33
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.
Server: Sylph
Game: FFXI
Posts: 2623
By Sylph.Jeanpaul 2016-08-12 06:42:09
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).
By Pantafernando 2016-08-12 09:00:04
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?
By Pantafernando 2016-08-12 11:19:45
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.
Server: Fenrir
Game: FFXI
Posts: 11681
By Fenrir.Nightfyre 2016-08-12 11:35:54
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'
Server: Sylph
Game: FFXI
Posts: 2623
By Sylph.Jeanpaul 2016-08-12 13:48:24
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
Server: Bismarck
Game: FFXI
Posts: 2707
By Bismarck.Snprphnx 2016-08-12 16:07:30
What's the fastest/easiest way to get ranked up in Campaigns? How many fights/notes do I need per evaluation?
By Pantafernando 2016-08-12 16:19:50
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.
Server: Leviathan
Game: FFXI
Posts: 6052
By Leviathan.Comeatmebro 2016-08-12 16:56:11
one of the rhapsodies made ranks much faster
Server: Phoenix
Game: FFXI
Posts: 661
By Phoenix.Demonjustin 2016-08-12 17:10:32
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. 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
Server: Phoenix
Game: FFXI
Posts: 661
By Phoenix.Demonjustin 2016-08-12 17:13:34
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
Server: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2016-08-12 18:16:31
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.
Server: Phoenix
Game: FFXI
Posts: 661
By Phoenix.Demonjustin 2016-08-12 18:31:22
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... 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"}
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
--------------------------------------
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"}
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"}
-- Default set is duration, since most enhancing spells don't actually use skill.
sets.midcast['Enhancing Magic'] = sets.midcast.EnhancingDuration
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 == 'PLAYER' then
equip(sets.buff.ComposureOther)
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'
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
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
Server: Odin
Game: FFXI
Posts: 89
By Odin.Lygre 2016-08-12 19:20:21
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
Server: Phoenix
Game: FFXI
Posts: 661
By Phoenix.Demonjustin 2016-08-12 19:34:55
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
Server: Odin
Game: FFXI
Posts: 89
By Odin.Lygre 2016-08-12 20:02:00
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
Server: Bismarck
Game: FFXI
Posts: 2707
By Bismarck.Snprphnx 2016-08-12 20:08:28
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.
Server: Sylph
Game: FFXI
Posts: 2623
By Sylph.Jeanpaul 2016-08-12 20:16:56
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.
Server: Phoenix
Game: FFXI
Posts: 661
By Phoenix.Demonjustin 2016-08-12 20:20:59
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
By Afania 2016-08-12 23:51:23
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 :(
Server: Siren
Game: FFXI
Posts: 2020
By Siren.Lordgrim 2016-08-13 02:01:07
isnt there a goblin or curio moggle that sells mission KI's ? i think the goblin is in lower jeuno near the AH
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 :(
By Pantafernando 2016-08-13 04:21:53
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.
[+]
By Afania 2016-08-13 04:48:27
Thanks for the replies. In the end someone came and helped me open the door by aggroing mob behind the door.
Server: Odin
Game: FFXI
Posts: 4013
By Odin.Godofgods 2016-08-13 16:45:22
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
Server: Odin
Game: FFXI
Posts: 89
By Odin.Lygre 2016-08-13 18:51:19
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.
Server: Odin
Game: FFXI
Posts: 2255
By Odin.Llewelyn 2016-08-14 16:59:29
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.
[+]
For those of you that visit Bg you already know the premise of this thread but for those that don't, it's simple.
Quote: This thread is for off-the-cuff questions that don't merit a full topic to answer. 'What should I wear for my level 65 pup?' 'What's the best way to learn the Qutrub Blu spell?'
General Guidelines.
Any questions goes be it FFXI related or not this community has a plethora of people surely one will be able to assist you.
Please don't bash people for asking questions hating someone for seeking knowledge even if you deem it a stupid thing to ask makes you look like an even bigger tool.
If your answer is on the large side either providing a link or spoilering the answer might be a good idea to help reduce the thread size.
Have fun!
|
|