|
Gearswap Support Thread
サーバ: Ragnarok
Game: FFXI
Posts: 82
By Ragnarok.Worldslost 2014-12-08 09:01:49
Not sure what you mean by if I'm calling this or is in more includes but the gearswap it's self is from mote and the added function I took from a mote utility lua, hope that's what you were asking and second is yes both plugin and addon are enabled and loaded
Ragnarok.Flippant
サーバ: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2014-12-08 18:57:47
Mote-Utility is already included by Mote-Include--you do not need to, nor should you, copy and paste that function into your job-specific file. If he updates these functions in the future, you will be constantly overwriting them with your own now-obsolete versions.
A function is just a definition of rules. You have to "call" (basically meaning "use") it in order for it to execute those rules. You'd call this function by typing Code cancel_conflicting_buffs(spell, action, spellMap, eventArgs)
where it is appropriate (in this case, within your job_precast function). Same with any other function that is within that file (I see from the other thread that you copied a few other functions from there as well).
I already linked Mote's wiki in the previous page, but here is his page specifically about using the Utility functions that he provides: https://github.com/Kinematics/GearSwap-Jobs/wiki/Utility
Second, you should not have both Cancel addon and plugin loaded, only one or the other--plugins and addons that complete the same task may interfere with each other, and there just is no reason to have the plugin version loaded anymore (the addon covers both canceling by name and ID).
Carbuncle.Calout
サーバ: Carbuncle
Game: FFXI
Posts: 14
By Carbuncle.Calout 2014-12-08 23:48:26
Looking for an example of how to use Augmented items in gearswap. Like Double Augmented Dark Rings and Delve Augmented Items.
Ragnarok.Flippant
サーバ: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2014-12-09 00:06:14
From Byrth's instructions
Quote: -- Augments --
There are a lot of different augments, many/all of which have been mapped in the extdata library.
This system will use the first item it finds in your inventory that matches the name/augment
combination that you provide. If you provide an ambiguous set of conditions, the resulting equipped
item will be ambiguous (could vary based on the pairs iterator).
In order to specify an item by augment, you must write the augment exactly as it appears on your equipment:
sets.aftercast_Idle = {ring1={name="Dark Ring",augments={"Phys. Damage Taken -6%"}},
ring2={name="Dark Ring",augments={"Breath Damage Taken -6%","{Phys. Damage Taken -5%"}}}
If it pleases you, you can store your augmented items in variables:
lefty = {name="Dark Ring",augments={"Phys. Damage Taken -6%"}}
righty = {name="Dark Ring",augments={"Breath Damage Taken -6%","Phys. Damage Taken -5%"}}
sets.aftercast_Idle = {ring1=lefty,ring2=righty}
This will save you a little work when you are dealing with using the same augmented item in multiple sets.
If you are having trouble getting GearSwap to recognize your augment, equip the gear and use //gs export.
This will create a Lua file in ../windower/addons/gearswap/data/export that includes a properly formatted table.
alternatively,
Quote: -- Specifying a bag --
With the introduction of Mog Wardrobe, it is now possible to equip items from either Inventory or Wardrobe:
sets.wardrobe_feet = {feet={name="Bokwus Boots",bag="wardrobe"}}
There is really no reason to do this 99% of the time, but it has been included as a failsafe to let people
still specify at least two augments in case the augment system stops working in the future.
サーバ: Asura
Game: FFXI
Posts: 363
By Asura.Vafruvant 2014-12-09 01:08:13
This may have been answered before and I missed it, however...
Awhile back, I had been trying to re-work the downgrade function of Curing Waltz included in Mote's libs into a downgrading Cure function. I came up with the following, but it doesn't change anything about any cures. It doesn't throw any errors, but it won't put any messages in the chat log, won't downgrade based on HP and won't downgrade based on MP. Effectively, it does nothing and seems like it isn't being triggered to begin with. I've probably taken something out of the Waltz function that is just breaking the entire thing, but I'm not sure what it's missing. Any help would be appreciated! Here's the paste:
http://pastebin.com/MErxfsQJ
Thank you all.
So, with the tip from Flippant, and some heavy re-tooling, I got it working!
http://pastebin.com/MErxfsQJ
Certain parts might be able to get cleaned up, like repeating the snippet to cancel a cure on yourself with less than 40 HP for every job/sub. There was one last thing that might prove useful but is generally less important... I had a section to recognize Light Arts or Dark Arts and adjust MP costs accordingly, however it completely bricks the downgrade functionality. What I had looked like this: Code if buffactive['Light Arts'] or buffactive['Addendum: White'] then
mpCost = math.floor(mpCost * 0.9)
elseif buffactive['Dark Arts'] or buffactive['Addendum: Black'] then
mpCost = math.floor(mpCost * 1.1)
else
return
end
Maybe Mote could include this in the next update of the Mote-Utility? I think it could be incredibly useful, much like the DNC Waltz function.
Ragnarok.Flippant
サーバ: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2014-12-09 02:30:06
I'm not sure what you mean by "bricks," but if that's what you had written in before, I totally missed the "return" statement. Return will end a function, so if you were in the case that you didn't have Light Arts or Dark Arts, it would stop the function prematurely.
Can get it to work by just removing the else part (and don't forget to check for Penury before checking for Light Arts).
If, for whatever reason, you wanted a generic MP cost function:
Code function actual_cost(spell)
local cost = spell.mp_cost
if spell.type=="WhiteMage" then
if buffactive["Penury"] then
return cost*.5
elseif buffactive["Light Arts"] or buffactive["Addendum: White"] then
return cost*.9
elseif buffactive["Dark Arts"] or buffactive["Addendum: Black"] then
return cost*1.1
end
elseif spell.type=="BlackMagic" then
if buffactive["Parsimony"] then
return cost*.5
elseif buffactive["Dark Arts"] or buffactive["Addendum: Black"] then
return cost*.9
elseif buffactive["Light Arts"] or buffactive["Addendum: White"] then
return cost*1.1
end
end
return cost
end
You'd have to pass a spell table to the function though, and since at this moment you don't have the proper spell table to pass, you can use the resources and make a function to obtain the table using name (probably a function that can do this already, but it's faster to just make it than look for it).
Code function get_spell_by_name(s_name)
local res = require('resources')
for __,s_table in pairs (res.spells) do
if s_table.en == s_name then
return s_table
end
end
return false
end
and finally, you'd get the MP by calling
Code mpCost = actual_cost(get_spell_by_name(newCure))
Don't need your cure_mp_cost table in that case. It's a lot more code, I just try to avoid hard-coding things in case I find a new purpose for them later and thought I'd share what I use to downgrade cures (for low MP or if cure is on timer).
As for cleaning up the less than 40 HP part, you can take that out of all the job cases and just put it as the first condition to catch instead of if player.main_job=="WHM", since, as you say, it's the same regardless of job. Also, just something to think about, but you may want to consider not refining by HP if it causes a downgrade in the Cure if Solace is on (can use the above function to extract ID--get_spell_by_name(newCure)[id]--and determine if it is lower than current spell.id).
Last but not least, you're using both "newCure" and "preferredCure" for what I assume should be referring to the same variable.
Cerberus.Conagh
サーバ: Cerberus
Game: FFXI
Posts: 3189
By Cerberus.Conagh 2014-12-09 18:34:08
Looking for an example of how to use Augmented items in gearswap. Like Double Augmented Dark Rings and Delve Augmented Items.
Equip the ring you want.
//gs export lua
This gives you the ring and the Augments on those specified rings.
Easiest way
Quetzalcoatl.Valli
サーバ: Quetzalcoatl
Game: FFXI
Posts: 1420
By Quetzalcoatl.Valli 2014-12-09 20:22:31
Need help with something right quick, wiki says Rudra's doesn't count Soil belt as it's element.
But mont's GS equips soil belt in it's rule instead of shadow. How do I overwrite it to use shadow instead of soil?
Cerberus.Conagh
サーバ: Cerberus
Game: FFXI
Posts: 3189
By Cerberus.Conagh 2014-12-09 20:35:23
Quetzalcoatl.Valli said: »Need help with something right quick, wiki says Rudra's doesn't count Soil belt as it's element.
But mont's GS equips soil belt in it's rule instead of shadow. How do I overwrite it to use shadow instead of soil?
Can you paste the Gearswap?
I don't use Motes but I can sort it for ya
Quetzalcoatl.Valli
サーバ: Quetzalcoatl
Game: FFXI
Posts: 1420
By Quetzalcoatl.Valli 2014-12-09 21:03:35
Code -- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = neck=gear.ElementalGorget,waist=gear.ElementalBelt,
Code -------------------------------------------------------------------------------------------------------------------
-- Mappings, lists and sets to describe game relationships that aren't easily determinable otherwise.
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
-- Elemental mappings for element relationships and certain types of spells and gear.
-------------------------------------------------------------------------------------------------------------------
-- Basic elements
elements = {}
elements.list = S{'Light','Dark','Fire','Ice','Wind','Earth','Lightning','Water'}
elements.weak_to = {['Light']='Dark', ['Dark']='Light', ['Fire']='Ice', ['Ice']='Wind', ['Wind']='Earth', ['Earth']='Lightning',
['Lightning']='Water', ['Water']='Fire'}
elements.strong_to = {['Light']='Dark', ['Dark']='Light', ['Fire']='Water', ['Ice']='Fire', ['Wind']='Ice', ['Earth']='Wind',
['Lightning']='Earth', ['Water']='Lightning'}
storms = S{"Aurorastorm", "Voidstorm", "Firestorm", "Sandstorm", "Rainstorm", "Windstorm", "Hailstorm", "Thunderstorm"}
elements.storm_of = {['Light']="Aurorastorm", ['Dark']="Voidstorm", ['Fire']="Firestorm", ['Earth']="Sandstorm",
['Water']="Rainstorm", ['Wind']="Windstorm", ['Ice']="Hailstorm", ['Lightning']="Thunderstorm"}
spirits = S{"LightSpirit", "DarkSpirit", "FireSpirit", "EarthSpirit", "WaterSpirit", "AirSpirit", "IceSpirit", "ThunderSpirit"}
elements.spirit_of = {['Light']="Light Spirit", ['Dark']="Dark Spirit", ['Fire']="Fire Spirit", ['Earth']="Earth Spirit",
['Water']="Water Spirit", ['Wind']="Air Spirit", ['Ice']="Ice Spirit", ['Lightning']="Thunder Spirit"}
runes = S{'Lux', 'Tenebrae', 'Ignis', 'Gelus', 'Flabra', 'Tellus', 'Sulpor', 'Unda'}
elements.rune_of = {['Light']='Lux', ['Dark']='Tenebrae', ['Fire']='Ignis', ['Ice']='Gelus', ['Wind']='Flabra',
['Earth']='Tellus', ['Lightning']='Sulpor', ['Water']='Unda'}
elements.obi_of = {['Light']='Korin Obi', ['Dark']='Anrin Obi', ['Fire']='Karin Obi', ['Ice']='Hyorin Obi', ['Wind']='Furin Obi',
['Earth']='Dorin Obi', ['Lightning']='Rairin Obi', ['Water']='Suirin Obi'}
elements.gorget_of = {['Light']='Light Gorget', ['Dark']='Shadow Gorget', ['Fire']='Flame Gorget', ['Ice']='Snow Gorget',
['Wind']='Breeze Gorget', ['Earth']='Soil Gorget', ['Lightning']='Thunder Gorget', ['Water']='Aqua Gorget'}
elements.belt_of = {['Light']='Light Belt', ['Dark']='Shadow Belt', ['Fire']='Flame Belt', ['Ice']='Snow Belt',
['Wind']='Breeze Belt', ['Earth']='Soil Belt', ['Lightning']='Thunder Belt', ['Water']='Aqua Belt'}
elements.fastcast_staff_of = {['Light']='Arka I', ['Dark']='Xsaeta I', ['Fire']='Atar I', ['Ice']='Vourukasha I',
['Wind']='Vayuvata I', ['Earth']='Vishrava I', ['Lightning']='Apamajas I', ['Water']='Haoma I', ['Thunder']='Apamajas I'}
elements.recast_staff_of = {['Light']='Arka II', ['Dark']='Xsaeta II', ['Fire']='Atar II', ['Ice']='Vourukasha II',
['Wind']='Vayuvata II', ['Earth']='Vishrava II', ['Lightning']='Apamajas II', ['Water']='Haoma II', ['Thunder']='Apamajas II'}
elements.perpetuance_staff_of = {['Light']='Arka III', ['Dark']='Xsaeta III', ['Fire']='Atar III', ['Ice']='Vourukasha III',
['Wind']='Vayuvata III', ['Earth']='Vishrava III', ['Lightning']='Apamajas III', ['Water']='Haoma III', ['Thunder']='Apamajas III'}
-- Elements for skillchain names
skillchain_elements = {}
skillchain_elements.Light = S{'Light','Fire','Wind','Lightning'}
skillchain_elements.Darkness = S{'Dark','Ice','Earth','Water'}
skillchain_elements.Fusion = S{'Light','Fire'}
skillchain_elements.Fragmentation = S{'Wind','Lightning'}
skillchain_elements.Distortion = S{'Ice','Water'}
skillchain_elements.Gravitation = S{'Dark','Earth'}
skillchain_elements.Transfixion = S{'Light'}
skillchain_elements.Compression = S{'Dark'}
skillchain_elements.Liquification = S{'Fire'}
skillchain_elements.Induration = S{'Ice'}
skillchain_elements.Detonation = S{'Wind'}
skillchain_elements.Scission = S{'Earth'}
skillchain_elements.Impaction = S{'Lightning'}
skillchain_elements.Reverberation = S{'Water'}
-------------------------------------------------------------------------------------------------------------------
-- Mappings for weaponskills
-------------------------------------------------------------------------------------------------------------------
-- REM weapons and their corresponding weaponskills
data = {}
data.weaponskills = {}
data.weaponskills.relic = {
["Spharai"] = "Final Heaven",
["Mandau"] = "Mercy Stroke",
["Excalibur"] = "Knights of Round",
["Ragnarok"] = "Scourge",
["Guttler"] = "Onslaught",
["Bravura"] = "Metatron Torment",
["Apocalypse"] = "Catastrophe",
["Gungnir"] = "Gierskogul",
["Kikoku"] = "Blade: Metsu",
["Amanomurakumo"] = "Tachi: Kaiten",
["Mjollnir"] = "Randgrith",
["Claustrum"] = "Gates of Tartarus",
["Annihilator"] = "Coronach",
["Yoichinoyumi"] = "Namas Arrow"}
data.weaponskills.mythic = {
["Conqueror"] = "King's Justice",
["Glanzfaust"] = "Ascetic's Fury",
["Yagrush"] = "Mystic Boon",
["Laevateinn"] = "Vidohunir",
["Murgleis"] = "Death Blossom",
["Vajra"] = "Mandalic Stab",
["Burtgang"] = "Atonement",
["Liberator"] = "Insurgency",
["Aymur"] = "Primal Rend",
["Carnwenhan"] = "Mordant Rime",
["Gastraphetes"] = "Trueflight",
["Kogarasumaru"] = "Tachi: Rana",
["Nagi"] = "Blade: Kamu",
["Ryunohige"] = "Drakesbane",
["Nirvana"] = "Garland of Bliss",
["Tizona"] = "Expiacion",
["Death Penalty"] = "Leaden Salute",
["Kenkonken"] = "Stringing Pummel",
["Terpsichore"] = "Pyrrhic Kleos",
["Tupsimati"] = "Omniscience",
["Idris"] = "Exudation",
["Epeolatry"] = "Dimidiation"}
data.weaponskills.empyrean = {
["Verethragna"] = "Victory Smite",
["Twashtar"] = "Rudra's Storm",
["Almace"] = "Chant du Cygne",
["Caladbolg"] = "Torcleaver",
["Farsha"] = "Cloudsplitter",
["Ukonvasara"] = "Ukko's Fury",
["Redemption"] = "Quietus",
["Rhongomiant"] = "Camlann's Torment",
["Kannagi"] = "Blade: Hi",
["Masamune"] = "Tachi: Fudo",
["Gambanteinn"] = "Dagann",
["Hvergelmir"] = "Myrkr",
["Gandiva"] = "Jishnu's Radiance",
["Armageddon"] = "Wildfire"}
-- Weaponskills that can be used at range.
data.weaponskills.ranged = S{"Flaming Arrow", "Piercing Arrow", "Dulling Arrow", "Sidewinder", "Arching Arrow",
"Empyreal Arrow", "Refulgent Arrow", "Apex Arrow", "Namas Arrow", "Jishnu's Radiance",
"Hot Shot", "Split Shot", "Sniper Shot", "Slug Shot", "Heavy Shot", "Detonator", "Last Stand",
"Coronach", "Trueflight", "Leaden Salute", "Wildfire",
"Myrkr"}
ranged_weaponskills = data.weaponskills.ranged
-------------------------------------------------------------------------------------------------------------------
-- Spell mappings allow defining a general category or description that each of sets of related
-- spells all fall under.
-------------------------------------------------------------------------------------------------------------------
spell_maps = {
['Cure']='Cure',['Cure II']='Cure',['Cure III']='Cure',['Cure IV']='Cure',['Cure V']='Cure',['Cure VI']='Cure',
['Cura']='Curaga',['Cura II']='Curaga',['Cura III']='Curaga',
['Curaga']='Curaga',['Curaga II']='Curaga',['Curaga III']='Curaga',['Curaga IV']='Curaga',['Curaga V']='Curaga',
-- Status Removal doesn't include Esuna or Sacrifice, since they work differently than the rest
['Poisona']='StatusRemoval',['Paralyna']='StatusRemoval',['Silena']='StatusRemoval',['Blindna']='StatusRemoval',['Cursna']='StatusRemoval',
['Stona']='StatusRemoval',['Viruna']='StatusRemoval',['Erase']='StatusRemoval',
['Barfire']='BarElement',['Barstone']='BarElement',['Barwater']='BarElement',['Baraero']='BarElement',['Barblizzard']='BarElement',['Barthunder']='BarElement',
['Barfira']='BarElement',['Barstonra']='BarElement',['Barwatera']='BarElement',['Baraera']='BarElement',['Barblizzara']='BarElement',['Barthundra']='BarElement',
['Raise']='Raise',['Raise II']='Raise',['Raise III']='Raise',['Arise']='Raise',
['Reraise']='Reraise',['Reraise II']='Reraise',['Reraise III']='Reraise',
['Protect']='Protect',['Protect II']='Protect',['Protect III']='Protect',['Protect IV']='Protect',['Protect V']='Protect',
['Shell']='Shell',['Shell II']='Shell',['Shell III']='Shell',['Shell IV']='Shell',['Shell V']='Shell',
['Protectra']='Protectra',['Protectra II']='Protectra',['Protectra III']='Protectra',['Protectra IV']='Protectra',['Protectra V']='Protectra',
['Shellra']='Shellra',['Shellra II']='Shellra',['Shellra III']='Shellra',['Shellra IV']='Shellra',['Shellra V']='Shellra',
['Regen']='Regen',['Regen II']='Regen',['Regen III']='Regen',['Regen IV']='Regen',['Regen V']='Regen',
['Refresh']='Refresh',['Refresh II']='Refresh',
['Teleport-Holla']='Teleport',['Teleport-Dem']='Teleport',['Teleport-Mea']='Teleport',['Teleport-Altep']='Teleport',['Teleport-Yhoat']='Teleport',
['Teleport-Vahzl']='Teleport',['Recall-Pashh']='Teleport',['Recall-Meriph']='Teleport',['Recall-Jugner']='Teleport',
['Valor Minuet']='Minuet',['Valor Minuet II']='Minuet',['Valor Minuet III']='Minuet',['Valor Minuet IV']='Minuet',['Valor Minuet V']='Minuet',
["Knight's Minne"]='Minne',["Knight's Minne II"]='Minne',["Knight's Minne III"]='Minne',["Knight's Minne IV"]='Minne',["Knight's Minne V"]='Minne',
['Advancing March']='March',['Victory March']='March',
['Sword Madrigal']='Madrigal',['Blade Madrigal']='Madrigal',
["Hunter's Prelude"]='Prelude',["Archer's Prelude"]='Prelude',
['Sheepfoe Mambo']='Mambo',['Dragonfoe Mambo']='Mambo',
['Raptor Mazurka']='Mazurka',['Chocobo Mazurka']='Mazurka',
['Sinewy Etude']='Etude',['Dextrous Etude']='Etude',['Vivacious Etude']='Etude',['Quick Etude']='Etude',['Learned Etude']='Etude',['Spirited Etude']='Etude',['Enchanting Etude']='Etude',
['Herculean Etude']='Etude',['Uncanny Etude']='Etude',['Vital Etude']='Etude',['Swift Etude']='Etude',['Sage Etude']='Etude',['Logical Etude']='Etude',['Bewitching Etude']='Etude',
["Mage's Ballad"]='Ballad',["Mage's Ballad II"]='Ballad',["Mage's Ballad III"]='Ballad',
["Army's Paeon"]='Paeon',["Army's Paeon II"]='Paeon',["Army's Paeon III"]='Paeon',["Army's Paeon IV"]='Paeon',["Army's Paeon V"]='Paeon',["Army's Paeon VI"]='Paeon',
['Fire Carol']='Carol',['Ice Carol']='Carol',['Wind Carol']='Carol',['Earth Carol']='Carol',['Lightning Carol']='Carol',['Water Carol']='Carol',['Light Carol']='Carol',['Dark Carol']='Carol',
['Fire Carol II']='Carol',['Ice Carol II']='Carol',['Wind Carol II']='Carol',['Earth Carol II']='Carol',['Lightning Carol II']='Carol',['Water Carol II']='Carol',['Light Carol II']='Carol',['Dark Carol II']='Carol',
['Foe Lullaby']='Lullaby',['Foe Lullaby II']='Lullaby',['Horde Lullaby']='Lullaby',['Horde Lullaby II']='Lullaby',
['Fire Threnody']='Threnody',['Ice Threnody']='Threnody',['Wind Threnody']='Threnody',['Earth Threnody']='Threnody',['Lightning Threnody']='Threnody',['Water Threnody']='Threnody',['Light Threnody']='Threnody',['Dark Threnody']='Threnody',
['Battlefield Elegy']='Elegy',['Carnage Elegy']='Elegy',
['Foe Requiem']='Requiem',['Foe Requiem II']='Requiem',['Foe Requiem III']='Requiem',['Foe Requiem IV']='Requiem',['Foe Requiem V']='Requiem',['Foe Requiem VI']='Requiem',['Foe Requiem VII']='Requiem',
['Utsusemi: Ichi']='Utsusemi',['Utsusemi: Ni']='Utsusemi',
['Katon: Ichi'] = 'ElementalNinjutsu',['Suiton: Ichi'] = 'ElementalNinjutsu',['Raiton: Ichi'] = 'ElementalNinjutsu',
['Doton: Ichi'] = 'ElementalNinjutsu',['Huton: Ichi'] = 'ElementalNinjutsu',['Hyoton: Ichi'] = 'ElementalNinjutsu',
['Katon: Ni'] = 'ElementalNinjutsu',['Suiton: Ni'] = 'ElementalNinjutsu',['Raiton: Ni'] = 'ElementalNinjutsu',
['Doton: Ni'] = 'ElementalNinjutsu',['Huton: Ni'] = 'ElementalNinjutsu',['Hyoton: Ni'] = 'ElementalNinjutsu',
['Katon: San'] = 'ElementalNinjutsu',['Suiton: San'] = 'ElementalNinjutsu',['Raiton: San'] = 'ElementalNinjutsu',
['Doton: San'] = 'ElementalNinjutsu',['Huton: San'] = 'ElementalNinjutsu',['Hyoton: San'] = 'ElementalNinjutsu',
['Banish']='Banish',['Banish II']='Banish',['Banish III']='Banish',['Banishga']='Banish',['Banishga II']='Banish',
['Holy']='Holy',['Holy II']='Holy',['Drain']='Drain',['Drain II']='Drain',['Aspir']='Aspir',['Aspir II']='Aspir',
['Absorb-Str']='Absorb',['Absorb-Dex']='Absorb',['Absorb-Vit']='Absorb',['Absorb-Agi']='Absorb',['Absorb-Int']='Absorb',['Absorb-Mnd']='Absorb',['Absorb-Chr']='Absorb',
['Absorb-Acc']='Absorb',['Absorb-TP']='Absorb',['Absorb-Attri']='Absorb',
['Burn']='ElementalEnfeeble',['Frost']='ElementalEnfeeble',['Choke']='ElementalEnfeeble',['Rasp']='ElementalEnfeeble',['Shock']='ElementalEnfeeble',['Drown']='ElementalEnfeeble',
['Pyrohelix']='Helix',['Cryohelix']='Helix',['Anemohelix']='Helix',['Geohelix']='Helix',['Ionohelix']='Helix',['Hydrohelix']='Helix',['Luminohelix']='Helix',['Noctohelix']='Helix',
['Firestorm']='Storm',['Hailstorm']='Storm',['Windstorm']='Storm',['Sandstorm']='Storm',['Thunderstorm']='Storm',['Rainstorm']='Storm',['Aurorastorm']='Storm',['Voidstorm']='Storm',
['Fire Maneuver']='Maneuver',['Ice Maneuver']='Maneuver',['Wind Maneuver']='Maneuver',['Earth Maneuver']='Maneuver',['Thunder Maneuver']='Maneuver',
['Water Maneuver']='Maneuver',['Light Maneuver']='Maneuver',['Dark Maneuver']='Maneuver',
}
no_skill_spells_list = S{'Haste', 'Refresh', 'Regen', 'Protect', 'Protectra', 'Shell', 'Shellra',
'Raise', 'Reraise', 'Sneak', 'Invisible', 'Deodorize'}
-------------------------------------------------------------------------------------------------------------------
-- Tables to specify general area groupings. Creates the 'areas' table to be referenced in job files.
-- Zone names provided by world.area/world.zone are currently in all-caps, so defining the same way here.
-------------------------------------------------------------------------------------------------------------------
areas = {}
-- City areas for town gear and behavior.
areas.Cities = S{
"Ru'Lude Gardens",
"Upper Jeuno",
"Lower Jeuno",
"Port Jeuno",
"Port Windurst",
"Windurst Waters",
"Windurst Woods",
"Windurst Walls",
"Heavens Tower",
"Port San d'Oria",
"Northern San d'Oria",
"Southern San d'Oria",
"Port Bastok",
"Bastok Markets",
"Bastok Mines",
"Metalworks",
"Aht Urhgan Whitegate",
"Tavanazian Safehold",
"Nashmau",
"Selbina",
"Mhaura",
"Norg",
"Eastern Adoulin",
"Western Adoulin",
"Kazham"
}
-- Adoulin areas, where Ionis will grant special stat bonuses.
areas.Adoulin = S{
"Yahse Hunting Grounds",
"Ceizak Battlegrounds",
"Foret de Hennetiel",
"Morimar Basalt Fields",
"Yorcia Weald",
"Yorcia Weald [U]",
"Cirdas Caverns",
"Cirdas Caverns [U]",
"Marjami Ravine",
"Kamihr Drifts",
"Sih Gates",
"Moh Gates",
"Dho Gates",
"Woh Gates",
"Rala Waterways",
"Rala Waterways [U]",
"Outer Ra'Kaznar",
"Outer Ra'Kaznar [U]"
}
-------------------------------------------------------------------------------------------------------------------
-- Lists of certain NPCs.
-------------------------------------------------------------------------------------------------------------------
npcs = {}
npcs.Trust = S{'Ajido-Marujido','Aldo','Ayame','Cherukiki','Curilla','D.Shantotto','Elivira','Excenmille',
'Fablinix','FerreousCoffin','Gadalar','Gessho','Ingrid','IronEater','Joachim','Klara','Kupipi',
'LehkoHabhoka','LhuMhakaracca','Lion','Luzaf','Maat','MihliAliapoh','Mnejing','Moogle','Mumor',
'NajaSalaheem','Najelith','Naji','NanaaMihgo','Nashmeira','Noillurie','Ovjang','Prishe','Rainemard',
'RomaaMihgo','Sakura','Shantotto','StarSibyl','Tenzen','Trion','UkaTotlihn','Ulmia','Valaineral',
'Volker','Zazarg','Zeid'}
Code -- Set the name field of the predefined gear vars for gorgets and belts, for the specified weaponskill.
function set_elemental_gorget_belt(spell)
if spell.type ~= 'WeaponSkill' then
return
end
-- Get the union of all the skillchain elements for the weaponskill
local weaponskill_elements = S{}:
union(skillchain_elements[spell.skillchain_a]):
union(skillchain_elements[spell.skillchain_b]):
union(skillchain_elements[spell.skillchain_c])
gear.ElementalGorget.name = get_elemental_item_name("gorget", weaponskill_elements) or gear.default.weaponskill_neck or ""
gear.ElementalBelt.name = get_elemental_item_name("belt", weaponskill_elements) or gear.default.weaponskill_waist or ""
end
Cerberus.Conagh
サーバ: Cerberus
Game: FFXI
Posts: 3189
By Cerberus.Conagh 2014-12-09 21:37:35
Quetzalcoatl.Valli said: »Code -- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = neck=gear.ElementalGorget,waist=gear.ElementalBelt,
Code -------------------------------------------------------------------------------------------------------------------
-- Mappings, lists and sets to describe game relationships that aren't easily determinable otherwise.
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
-- Elemental mappings for element relationships and certain types of spells and gear.
-------------------------------------------------------------------------------------------------------------------
-- Basic elements
elements = {}
elements.list = S{'Light','Dark','Fire','Ice','Wind','Earth','Lightning','Water'}
elements.weak_to = {['Light']='Dark', ['Dark']='Light', ['Fire']='Ice', ['Ice']='Wind', ['Wind']='Earth', ['Earth']='Lightning',
['Lightning']='Water', ['Water']='Fire'}
elements.strong_to = {['Light']='Dark', ['Dark']='Light', ['Fire']='Water', ['Ice']='Fire', ['Wind']='Ice', ['Earth']='Wind',
['Lightning']='Earth', ['Water']='Lightning'}
storms = S{"Aurorastorm", "Voidstorm", "Firestorm", "Sandstorm", "Rainstorm", "Windstorm", "Hailstorm", "Thunderstorm"}
elements.storm_of = {['Light']="Aurorastorm", ['Dark']="Voidstorm", ['Fire']="Firestorm", ['Earth']="Sandstorm",
['Water']="Rainstorm", ['Wind']="Windstorm", ['Ice']="Hailstorm", ['Lightning']="Thunderstorm"}
spirits = S{"LightSpirit", "DarkSpirit", "FireSpirit", "EarthSpirit", "WaterSpirit", "AirSpirit", "IceSpirit", "ThunderSpirit"}
elements.spirit_of = {['Light']="Light Spirit", ['Dark']="Dark Spirit", ['Fire']="Fire Spirit", ['Earth']="Earth Spirit",
['Water']="Water Spirit", ['Wind']="Air Spirit", ['Ice']="Ice Spirit", ['Lightning']="Thunder Spirit"}
runes = S{'Lux', 'Tenebrae', 'Ignis', 'Gelus', 'Flabra', 'Tellus', 'Sulpor', 'Unda'}
elements.rune_of = {['Light']='Lux', ['Dark']='Tenebrae', ['Fire']='Ignis', ['Ice']='Gelus', ['Wind']='Flabra',
['Earth']='Tellus', ['Lightning']='Sulpor', ['Water']='Unda'}
elements.obi_of = {['Light']='Korin Obi', ['Dark']='Anrin Obi', ['Fire']='Karin Obi', ['Ice']='Hyorin Obi', ['Wind']='Furin Obi',
['Earth']='Dorin Obi', ['Lightning']='Rairin Obi', ['Water']='Suirin Obi'}
elements.gorget_of = {['Light']='Light Gorget', ['Dark']='Shadow Gorget', ['Fire']='Flame Gorget', ['Ice']='Snow Gorget',
['Wind']='Breeze Gorget', ['Earth']='Soil Gorget', ['Lightning']='Thunder Gorget', ['Water']='Aqua Gorget'}
elements.belt_of = {['Light']='Light Belt', ['Dark']='Shadow Belt', ['Fire']='Flame Belt', ['Ice']='Snow Belt',
['Wind']='Breeze Belt', ['Earth']='Soil Belt', ['Lightning']='Thunder Belt', ['Water']='Aqua Belt'}
elements.fastcast_staff_of = {['Light']='Arka I', ['Dark']='Xsaeta I', ['Fire']='Atar I', ['Ice']='Vourukasha I',
['Wind']='Vayuvata I', ['Earth']='Vishrava I', ['Lightning']='Apamajas I', ['Water']='Haoma I', ['Thunder']='Apamajas I'}
elements.recast_staff_of = {['Light']='Arka II', ['Dark']='Xsaeta II', ['Fire']='Atar II', ['Ice']='Vourukasha II',
['Wind']='Vayuvata II', ['Earth']='Vishrava II', ['Lightning']='Apamajas II', ['Water']='Haoma II', ['Thunder']='Apamajas II'}
elements.perpetuance_staff_of = {['Light']='Arka III', ['Dark']='Xsaeta III', ['Fire']='Atar III', ['Ice']='Vourukasha III',
['Wind']='Vayuvata III', ['Earth']='Vishrava III', ['Lightning']='Apamajas III', ['Water']='Haoma III', ['Thunder']='Apamajas III'}
-- Elements for skillchain names
skillchain_elements = {}
skillchain_elements.Light = S{'Light','Fire','Wind','Lightning'}
skillchain_elements.Darkness = S{'Dark','Ice','Earth','Water'}
skillchain_elements.Fusion = S{'Light','Fire'}
skillchain_elements.Fragmentation = S{'Wind','Lightning'}
skillchain_elements.Distortion = S{'Ice','Water'}
skillchain_elements.Gravitation = S{'Dark','Earth'}
skillchain_elements.Transfixion = S{'Light'}
skillchain_elements.Compression = S{'Dark'}
skillchain_elements.Liquification = S{'Fire'}
skillchain_elements.Induration = S{'Ice'}
skillchain_elements.Detonation = S{'Wind'}
skillchain_elements.Scission = S{'Earth'}
skillchain_elements.Impaction = S{'Lightning'}
skillchain_elements.Reverberation = S{'Water'}
-------------------------------------------------------------------------------------------------------------------
-- Mappings for weaponskills
-------------------------------------------------------------------------------------------------------------------
-- REM weapons and their corresponding weaponskills
data = {}
data.weaponskills = {}
data.weaponskills.relic = {
["Spharai"] = "Final Heaven",
["Mandau"] = "Mercy Stroke",
["Excalibur"] = "Knights of Round",
["Ragnarok"] = "Scourge",
["Guttler"] = "Onslaught",
["Bravura"] = "Metatron Torment",
["Apocalypse"] = "Catastrophe",
["Gungnir"] = "Gierskogul",
["Kikoku"] = "Blade: Metsu",
["Amanomurakumo"] = "Tachi: Kaiten",
["Mjollnir"] = "Randgrith",
["Claustrum"] = "Gates of Tartarus",
["Annihilator"] = "Coronach",
["Yoichinoyumi"] = "Namas Arrow"}
data.weaponskills.mythic = {
["Conqueror"] = "King's Justice",
["Glanzfaust"] = "Ascetic's Fury",
["Yagrush"] = "Mystic Boon",
["Laevateinn"] = "Vidohunir",
["Murgleis"] = "Death Blossom",
["Vajra"] = "Mandalic Stab",
["Burtgang"] = "Atonement",
["Liberator"] = "Insurgency",
["Aymur"] = "Primal Rend",
["Carnwenhan"] = "Mordant Rime",
["Gastraphetes"] = "Trueflight",
["Kogarasumaru"] = "Tachi: Rana",
["Nagi"] = "Blade: Kamu",
["Ryunohige"] = "Drakesbane",
["Nirvana"] = "Garland of Bliss",
["Tizona"] = "Expiacion",
["Death Penalty"] = "Leaden Salute",
["Kenkonken"] = "Stringing Pummel",
["Terpsichore"] = "Pyrrhic Kleos",
["Tupsimati"] = "Omniscience",
["Idris"] = "Exudation",
["Epeolatry"] = "Dimidiation"}
data.weaponskills.empyrean = {
["Verethragna"] = "Victory Smite",
["Twashtar"] = "Rudra's Storm",
["Almace"] = "Chant du Cygne",
["Caladbolg"] = "Torcleaver",
["Farsha"] = "Cloudsplitter",
["Ukonvasara"] = "Ukko's Fury",
["Redemption"] = "Quietus",
["Rhongomiant"] = "Camlann's Torment",
["Kannagi"] = "Blade: Hi",
["Masamune"] = "Tachi: Fudo",
["Gambanteinn"] = "Dagann",
["Hvergelmir"] = "Myrkr",
["Gandiva"] = "Jishnu's Radiance",
["Armageddon"] = "Wildfire"}
-- Weaponskills that can be used at range.
data.weaponskills.ranged = S{"Flaming Arrow", "Piercing Arrow", "Dulling Arrow", "Sidewinder", "Arching Arrow",
"Empyreal Arrow", "Refulgent Arrow", "Apex Arrow", "Namas Arrow", "Jishnu's Radiance",
"Hot Shot", "Split Shot", "Sniper Shot", "Slug Shot", "Heavy Shot", "Detonator", "Last Stand",
"Coronach", "Trueflight", "Leaden Salute", "Wildfire",
"Myrkr"}
ranged_weaponskills = data.weaponskills.ranged
-------------------------------------------------------------------------------------------------------------------
-- Spell mappings allow defining a general category or description that each of sets of related
-- spells all fall under.
-------------------------------------------------------------------------------------------------------------------
spell_maps = {
['Cure']='Cure',['Cure II']='Cure',['Cure III']='Cure',['Cure IV']='Cure',['Cure V']='Cure',['Cure VI']='Cure',
['Cura']='Curaga',['Cura II']='Curaga',['Cura III']='Curaga',
['Curaga']='Curaga',['Curaga II']='Curaga',['Curaga III']='Curaga',['Curaga IV']='Curaga',['Curaga V']='Curaga',
-- Status Removal doesn't include Esuna or Sacrifice, since they work differently than the rest
['Poisona']='StatusRemoval',['Paralyna']='StatusRemoval',['Silena']='StatusRemoval',['Blindna']='StatusRemoval',['Cursna']='StatusRemoval',
['Stona']='StatusRemoval',['Viruna']='StatusRemoval',['Erase']='StatusRemoval',
['Barfire']='BarElement',['Barstone']='BarElement',['Barwater']='BarElement',['Baraero']='BarElement',['Barblizzard']='BarElement',['Barthunder']='BarElement',
['Barfira']='BarElement',['Barstonra']='BarElement',['Barwatera']='BarElement',['Baraera']='BarElement',['Barblizzara']='BarElement',['Barthundra']='BarElement',
['Raise']='Raise',['Raise II']='Raise',['Raise III']='Raise',['Arise']='Raise',
['Reraise']='Reraise',['Reraise II']='Reraise',['Reraise III']='Reraise',
['Protect']='Protect',['Protect II']='Protect',['Protect III']='Protect',['Protect IV']='Protect',['Protect V']='Protect',
['Shell']='Shell',['Shell II']='Shell',['Shell III']='Shell',['Shell IV']='Shell',['Shell V']='Shell',
['Protectra']='Protectra',['Protectra II']='Protectra',['Protectra III']='Protectra',['Protectra IV']='Protectra',['Protectra V']='Protectra',
['Shellra']='Shellra',['Shellra II']='Shellra',['Shellra III']='Shellra',['Shellra IV']='Shellra',['Shellra V']='Shellra',
['Regen']='Regen',['Regen II']='Regen',['Regen III']='Regen',['Regen IV']='Regen',['Regen V']='Regen',
['Refresh']='Refresh',['Refresh II']='Refresh',
['Teleport-Holla']='Teleport',['Teleport-Dem']='Teleport',['Teleport-Mea']='Teleport',['Teleport-Altep']='Teleport',['Teleport-Yhoat']='Teleport',
['Teleport-Vahzl']='Teleport',['Recall-Pashh']='Teleport',['Recall-Meriph']='Teleport',['Recall-Jugner']='Teleport',
['Valor Minuet']='Minuet',['Valor Minuet II']='Minuet',['Valor Minuet III']='Minuet',['Valor Minuet IV']='Minuet',['Valor Minuet V']='Minuet',
["Knight's Minne"]='Minne',["Knight's Minne II"]='Minne',["Knight's Minne III"]='Minne',["Knight's Minne IV"]='Minne',["Knight's Minne V"]='Minne',
['Advancing March']='March',['Victory March']='March',
['Sword Madrigal']='Madrigal',['Blade Madrigal']='Madrigal',
["Hunter's Prelude"]='Prelude',["Archer's Prelude"]='Prelude',
['Sheepfoe Mambo']='Mambo',['Dragonfoe Mambo']='Mambo',
['Raptor Mazurka']='Mazurka',['Chocobo Mazurka']='Mazurka',
['Sinewy Etude']='Etude',['Dextrous Etude']='Etude',['Vivacious Etude']='Etude',['Quick Etude']='Etude',['Learned Etude']='Etude',['Spirited Etude']='Etude',['Enchanting Etude']='Etude',
['Herculean Etude']='Etude',['Uncanny Etude']='Etude',['Vital Etude']='Etude',['Swift Etude']='Etude',['Sage Etude']='Etude',['Logical Etude']='Etude',['Bewitching Etude']='Etude',
["Mage's Ballad"]='Ballad',["Mage's Ballad II"]='Ballad',["Mage's Ballad III"]='Ballad',
["Army's Paeon"]='Paeon',["Army's Paeon II"]='Paeon',["Army's Paeon III"]='Paeon',["Army's Paeon IV"]='Paeon',["Army's Paeon V"]='Paeon',["Army's Paeon VI"]='Paeon',
['Fire Carol']='Carol',['Ice Carol']='Carol',['Wind Carol']='Carol',['Earth Carol']='Carol',['Lightning Carol']='Carol',['Water Carol']='Carol',['Light Carol']='Carol',['Dark Carol']='Carol',
['Fire Carol II']='Carol',['Ice Carol II']='Carol',['Wind Carol II']='Carol',['Earth Carol II']='Carol',['Lightning Carol II']='Carol',['Water Carol II']='Carol',['Light Carol II']='Carol',['Dark Carol II']='Carol',
['Foe Lullaby']='Lullaby',['Foe Lullaby II']='Lullaby',['Horde Lullaby']='Lullaby',['Horde Lullaby II']='Lullaby',
['Fire Threnody']='Threnody',['Ice Threnody']='Threnody',['Wind Threnody']='Threnody',['Earth Threnody']='Threnody',['Lightning Threnody']='Threnody',['Water Threnody']='Threnody',['Light Threnody']='Threnody',['Dark Threnody']='Threnody',
['Battlefield Elegy']='Elegy',['Carnage Elegy']='Elegy',
['Foe Requiem']='Requiem',['Foe Requiem II']='Requiem',['Foe Requiem III']='Requiem',['Foe Requiem IV']='Requiem',['Foe Requiem V']='Requiem',['Foe Requiem VI']='Requiem',['Foe Requiem VII']='Requiem',
['Utsusemi: Ichi']='Utsusemi',['Utsusemi: Ni']='Utsusemi',
['Katon: Ichi'] = 'ElementalNinjutsu',['Suiton: Ichi'] = 'ElementalNinjutsu',['Raiton: Ichi'] = 'ElementalNinjutsu',
['Doton: Ichi'] = 'ElementalNinjutsu',['Huton: Ichi'] = 'ElementalNinjutsu',['Hyoton: Ichi'] = 'ElementalNinjutsu',
['Katon: Ni'] = 'ElementalNinjutsu',['Suiton: Ni'] = 'ElementalNinjutsu',['Raiton: Ni'] = 'ElementalNinjutsu',
['Doton: Ni'] = 'ElementalNinjutsu',['Huton: Ni'] = 'ElementalNinjutsu',['Hyoton: Ni'] = 'ElementalNinjutsu',
['Katon: San'] = 'ElementalNinjutsu',['Suiton: San'] = 'ElementalNinjutsu',['Raiton: San'] = 'ElementalNinjutsu',
['Doton: San'] = 'ElementalNinjutsu',['Huton: San'] = 'ElementalNinjutsu',['Hyoton: San'] = 'ElementalNinjutsu',
['Banish']='Banish',['Banish II']='Banish',['Banish III']='Banish',['Banishga']='Banish',['Banishga II']='Banish',
['Holy']='Holy',['Holy II']='Holy',['Drain']='Drain',['Drain II']='Drain',['Aspir']='Aspir',['Aspir II']='Aspir',
['Absorb-Str']='Absorb',['Absorb-Dex']='Absorb',['Absorb-Vit']='Absorb',['Absorb-Agi']='Absorb',['Absorb-Int']='Absorb',['Absorb-Mnd']='Absorb',['Absorb-Chr']='Absorb',
['Absorb-Acc']='Absorb',['Absorb-TP']='Absorb',['Absorb-Attri']='Absorb',
['Burn']='ElementalEnfeeble',['Frost']='ElementalEnfeeble',['Choke']='ElementalEnfeeble',['Rasp']='ElementalEnfeeble',['Shock']='ElementalEnfeeble',['Drown']='ElementalEnfeeble',
['Pyrohelix']='Helix',['Cryohelix']='Helix',['Anemohelix']='Helix',['Geohelix']='Helix',['Ionohelix']='Helix',['Hydrohelix']='Helix',['Luminohelix']='Helix',['Noctohelix']='Helix',
['Firestorm']='Storm',['Hailstorm']='Storm',['Windstorm']='Storm',['Sandstorm']='Storm',['Thunderstorm']='Storm',['Rainstorm']='Storm',['Aurorastorm']='Storm',['Voidstorm']='Storm',
['Fire Maneuver']='Maneuver',['Ice Maneuver']='Maneuver',['Wind Maneuver']='Maneuver',['Earth Maneuver']='Maneuver',['Thunder Maneuver']='Maneuver',
['Water Maneuver']='Maneuver',['Light Maneuver']='Maneuver',['Dark Maneuver']='Maneuver',
}
no_skill_spells_list = S{'Haste', 'Refresh', 'Regen', 'Protect', 'Protectra', 'Shell', 'Shellra',
'Raise', 'Reraise', 'Sneak', 'Invisible', 'Deodorize'}
-------------------------------------------------------------------------------------------------------------------
-- Tables to specify general area groupings. Creates the 'areas' table to be referenced in job files.
-- Zone names provided by world.area/world.zone are currently in all-caps, so defining the same way here.
-------------------------------------------------------------------------------------------------------------------
areas = {}
-- City areas for town gear and behavior.
areas.Cities = S{
"Ru'Lude Gardens",
"Upper Jeuno",
"Lower Jeuno",
"Port Jeuno",
"Port Windurst",
"Windurst Waters",
"Windurst Woods",
"Windurst Walls",
"Heavens Tower",
"Port San d'Oria",
"Northern San d'Oria",
"Southern San d'Oria",
"Port Bastok",
"Bastok Markets",
"Bastok Mines",
"Metalworks",
"Aht Urhgan Whitegate",
"Tavanazian Safehold",
"Nashmau",
"Selbina",
"Mhaura",
"Norg",
"Eastern Adoulin",
"Western Adoulin",
"Kazham"
}
-- Adoulin areas, where Ionis will grant special stat bonuses.
areas.Adoulin = S{
"Yahse Hunting Grounds",
"Ceizak Battlegrounds",
"Foret de Hennetiel",
"Morimar Basalt Fields",
"Yorcia Weald",
"Yorcia Weald [U]",
"Cirdas Caverns",
"Cirdas Caverns [U]",
"Marjami Ravine",
"Kamihr Drifts",
"Sih Gates",
"Moh Gates",
"Dho Gates",
"Woh Gates",
"Rala Waterways",
"Rala Waterways [U]",
"Outer Ra'Kaznar",
"Outer Ra'Kaznar [U]"
}
-------------------------------------------------------------------------------------------------------------------
-- Lists of certain NPCs.
-------------------------------------------------------------------------------------------------------------------
npcs = {}
npcs.Trust = S{'Ajido-Marujido','Aldo','Ayame','Cherukiki','Curilla','D.Shantotto','Elivira','Excenmille',
'Fablinix','FerreousCoffin','Gadalar','Gessho','Ingrid','IronEater','Joachim','Klara','Kupipi',
'LehkoHabhoka','LhuMhakaracca','Lion','Luzaf','Maat','MihliAliapoh','Mnejing','Moogle','Mumor',
'NajaSalaheem','Najelith','Naji','NanaaMihgo','Nashmeira','Noillurie','Ovjang','Prishe','Rainemard',
'RomaaMihgo','Sakura','Shantotto','StarSibyl','Tenzen','Trion','UkaTotlihn','Ulmia','Valaineral',
'Volker','Zazarg','Zeid'}
Code -- Set the name field of the predefined gear vars for gorgets and belts, for the specified weaponskill.
function set_elemental_gorget_belt(spell)
if spell.type ~= 'WeaponSkill' then
return
end
-- Get the union of all the skillchain elements for the weaponskill
local weaponskill_elements = S{}:
union(skillchain_elements[spell.skillchain_a]):
union(skillchain_elements[spell.skillchain_b]):
union(skillchain_elements[spell.skillchain_c])
gear.ElementalGorget.name = get_elemental_item_name("gorget", weaponskill_elements) or gear.default.weaponskill_neck or ""
gear.ElementalBelt.name = get_elemental_item_name("belt", weaponskill_elements) or gear.default.weaponskill_waist or ""
end
Specifically defining the set ignores that ***
So
Code -- Default set for any weaponskill that isn't any more specifically defined
sets.precast.WS = neck=gear.ElementalGorget,waist=gear.ElementalBelt,
Suggest if you did
sets.precast.ws['Rudra's Storm']
and added the gear you wanted it would just equip that gear and ignore the rule here.
Post the THF file (I assume thf) and I'll double check it works
Quetzalcoatl.Valli
サーバ: Quetzalcoatl
Game: FFXI
Posts: 1420
By Quetzalcoatl.Valli 2014-12-09 22:01:51
I mean that obviously works for that one ws. I want the rule to work. Not to have to do it to each ws.
I just happened to notice it's incorrect on rudras, it may or may not be incorrect on a thousand other ws's.
All I want to know is why does it equip a soil gorget when soil is not a property of the weaponskill.
If it's wrong for rudra, how many other ws are wrong too.
Ragnarok.Flippant
サーバ: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2014-12-09 22:52:37
It's deconstructing Darkness down. I don't know where the testing is exactly that shows that gorgets work that way (same way Gavialis Helm does), but BG wiki lists the other elements/gorgets/belts as applying http://www.bg-wiki.com/bg/Darkness
If you're really convinced and want to edit it yourself, it'd entail removing the other elements from
Code skillchain_elements.Light = S{'Light','Fire','Wind','Lightning'}
skillchain_elements.Darkness = S{'Dark','Ice','Earth','Water'}
Quetzalcoatl.Valli
サーバ: Quetzalcoatl
Game: FFXI
Posts: 1420
By Quetzalcoatl.Valli 2014-12-09 23:00:05
I was going by this it doesn't list soil
But, that's what I was looking for I can delete ice/water/earth from the darkness and automatically always use shadow for anything that would call dark. right?
Wildfire does NOT work with aqua/snow yet it has darkness property.
Ragnarok.Flippant
サーバ: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2014-12-09 23:03:57
Well, or water/ice because the WS is also Distortion, but yes, it would exclude earth.
Quetzalcoatl.Valli
サーバ: Quetzalcoatl
Game: FFXI
Posts: 1420
By Quetzalcoatl.Valli 2014-12-09 23:04:18
So why the *** is gearswap using soil?
By the way, Coronach also chooses Soil > Shadow with only those 2 in inventory.
This is incorrect.
Shadow should be chosen before soil, or soil not at all. Because the properties exclude soil, yet GS picks soil again.
By Nyruul 2014-12-09 23:26:33
Mote needs to update Mote-Mappings.lua @line 54+55
skillchain_elements.Light = S{'Light'}
skillchain_elements.Darkness = S{'Dark'}
Any darkness/not-gravitation WS will equip soil. Tested using coro with only soil and shadow neck in inventory/wardrobe.
Ragnarok.Flippant
サーバ: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2014-12-09 23:32:47
Quetzalcoatl.Valli said: »So why the *** is gearswap using soil?
By the way, Coronach also chooses Soil > Shadow with only those 2 in inventory.
This is incorrect.
Shadow should be chosen before soil, or soil not at all. Because the properties exclude soil, yet GS picks soil again.
Even after you removed those elements from that table?
For the general conclusion that dark/light does not deconstruct, may need to post on BG to get Mote's attention.
Quetzalcoatl.Valli
サーバ: Quetzalcoatl
Game: FFXI
Posts: 1420
By Quetzalcoatl.Valli 2014-12-09 23:39:21
No, I had not made the correction myself, I assume it's safe to change.
The note about coronach was just in the example, to counter the "well just change rudra".
More than just Rudra are calling the wrong elements, if it is indeed true that it does not deconstruct.
Which being that wildfire is the only ws you can really test it for 100% sure with (and cloudsplitter). i have to say that if aqua/snow don't work on wildfire, having a darkness property, then it does not deconstruct, and people have been using the wrong gorgets in gearswap for who knows how long.
Cerberus.Rabies
サーバ: Cerberus
Game: FFXI
Posts: 57
By Cerberus.Rabies 2014-12-10 00:42:20
First patch since I've started using GS, Everything seemed to work perfectly until I was midrun in delve I noticed my F9 key to toggle to ACC set wasn't working. Is this normal after update? Does windower auto update to fix this or will I have to search for Motes updated files and redo them?
By amadis 2014-12-10 08:12:10
Hello now that BLU can get Dual Wield IV i would like to add a weapon array to my BLU lua so that i can change my sets based on the amount of Dual Wield I have (Single Wielding, DW2, DW3 & DW4) I use heavily modified/updated versions of Bokura's lua files that I have been improving myself. I copied and pasted weapon array code from Bokura's DRK lua into my BLU lua but i cant seem to get the weapon array working and when i engage a enemy I stay in idle gear.
This is my current working lua with no weapon array:
http://pastebin.com/yDS5D1Vu
And this is the lua with the changes I am trying to make:
http://pastebin.com/e89HwFi1
Thanks for any help in advance, I'm sure I've just left out something simple.
Ragnarok.Flippant
サーバ: Ragnarok
Game: FFXI
Posts: 660
By Ragnarok.Flippant 2014-12-10 08:20:58
First patch since I've started using GS, Everything seemed to work perfectly until I was midrun in delve I noticed my F9 key to toggle to ACC set wasn't working. Is this normal after update? Does windower auto update to fix this or will I have to search for Motes updated files and redo them?
You sure the equip isn't changing, or you're just not getting notification in the chat? Printing to chatlog isn't working atm (well it may have been fixed by now, haven't been logged on).
Hello now that BLU can get Dual Wield IV i would like to add a weapon array to my BLU lua so that i can change my sets based on the amount of Dual Wield I have (Single Wielding, DW2, DW3 & DW4) I use heavily modified/updated versions of Bokura's lua files that I have been improving myself. I copied and pasted weapon array code from Bokura's DRK lua into my BLU lua but i cant seem to get the weapon array working and when i engage a enemy I stay in idle gear.
This is my current working lua with no weapon array:
http://pastebin.com/yDS5D1Vu
And this is the lua with the changes I am trying to make:
http://pastebin.com/e89HwFi1
Thanks for any help in advance, I'm sure I've just left out something simple.
Quick look, need this after line 1137:
Code if equipSet[WeaponArray[WeaponIndex]] then
equipSet = equipSet[WeaponArray[WeaponIndex]]
end
Let me know if that doesn't work.
By amadis 2014-12-10 11:58:25
seems to be working fine now, thanks
By Crevox 2014-12-10 16:34:39
My job_pet_aftercast doesn't work after the latest Windower update. Whhenever my pet finishes executing something, my gear does not swap back to idle, and nothing that would trigger after my pet casting a spell (including stuff not in that function) doesn't happen.
Help? I can't do anything because this is broken... my job file is basically the same as Mote's.
Cerberus.Conagh
サーバ: Cerberus
Game: FFXI
Posts: 3189
By Cerberus.Conagh 2014-12-10 19:49:00
My job_pet_aftercast doesn't work after the latest Windower update. Whhenever my pet finishes executing something, my gear does not swap back to idle, and nothing that would trigger after my pet casting a spell (including stuff not in that function) doesn't happen.
Help? I can't do anything because this is broken... my job file is basically the same as Mote's.
Its a known bug Pet aftercast events are not being picked up.
I know they added an event termination after 10 seconds rule for MidAction() issue however this doesn't fix the original issue with that either. probably better off just removing the midaction() until a work around can be made...
I'm not sure if they're related but pet_aftercast is an event so if it's being cancelled or not updating correctly it "could" be linked in some roundabout manner.
In any respect it's not just you
Cerberus.Conagh
サーバ: Cerberus
Game: FFXI
Posts: 3189
By Cerberus.Conagh 2014-12-10 20:41:30
Ok!
So I'm trying to do something a little bit differen't that's a tad "out there".
I have worked o the maths on my end and know the theory behid what I want, what I don't know tho is how do you get say the Value you do in game~ Damage you Deal to a Target as a Melee hit and not as a Weaponskill in gearswap?
I know you can check a Players HP Deficit because you know their HP, but is there a way to see "Player deals 540 damage to target" to pull the damage number from chat for say ~ 10 instances and get an approximated value? I honestly have no idea how to extrapolate Damage dealt in chat log, to Gearswap.
Any idea's are greatly appreciated.
I got this so far to check if it's a Melee hit but I don't know how to define the paramters to search the damage dealt by number..
Code windower.register_event('action',function (act)
local actor = act.actor_id
local category = act.category
local param = act.param
local player = windower.ffxi.get_player()
if ((actor == (player.id or player.index))) then
if category == 1 then
add_to_chat(167,'test')
end
end
end
end)
By Iryoku 2014-12-11 05:33:42
You're on the right track; act.param is pretty useless for melee hits though. You'll need to dig into the targets and actions tables to find what you're looking for.
The target of the attack is Code
local target = act.targets[1].id
The number of hits is Code
local hits = act.targets[1].action_count
The damage for each hit is Code
local damage_1 = act.targets[1].action[1].param
local damage_2 = act.targets[1].action[2].param
local damage_3 = act.targets[1].action[3].param
...
and so on for each hit (this should normally be done in a loop).
You can also assign hits to main hand/off hand/kicks, track evades/parries/blocks, critical hits, added effects, spike damage, etc., by looking at the other fields in these tables.
Lakshmi.Byrth
VIP
サーバ: Lakshmi
Game: FFXI
Posts: 6184
By Lakshmi.Byrth 2014-12-11 06:03:10
There's an Actions library that probably has some bugs but is generally complete, if you feel like using it. This code should report damage per hit: Code ActionPacket = require 'actions'
ActionPacket.open_listener(function (act)
local actionpacket = ActionPacket.new(act)
for target in actionpacket:get_targets() do
for action in target:get_actions() do
local event = action:get_basic_info()
if event.type == 'damage' then
windower.add_to_chat(8,'Damage: '..tostring(event.value))
end
end
end
end)
Cerberus.Conagh
サーバ: Cerberus
Game: FFXI
Posts: 3189
By Cerberus.Conagh 2014-12-11 07:52:53
There's an Actions library that probably has some bugs but is generally complete, if you feel like using it. This code should report damage per hit: Code ActionPacket = require 'actions'
ActionPacket.open_listener(function (act)
local actionpacket = ActionPacket.new(act)
for target in actionpacket:get_targets() do
for action in target:get_actions() do
local event = action:get_basic_info()
if event.type == 'damage' then
windower.add_to_chat(8,'Damage: '..tostring(event.value))
end
end
end
end)
hmm thanks, i had managed to get a print for the damage but obev really help quantify your hits and come to an average.
using this i should be able to implement a pDif calculation into gearswap files usi g a local rule to amend gearsets using equipSet ie if pDif < 1.75 then equip waist prosilio etc to make damage sets more buff and stat specific rather than genralised sets.
I have the code and maths working now, will bug test to ensure it works and quantifies the last 5 hits only.(1 tp phase for Heavy handers) Trying this instead of depending on player attack instead of relying on assuming dia and frailty are on etc and in case we get angon or some Tachi Ageha or bilgestorm procs I don't need to make specified sets i can just make it work based of a pDif value that caps at 2.25
Cerberus.Conagh
サーバ: Cerberus
Game: FFXI
Posts: 3189
By Cerberus.Conagh 2014-12-11 08:04:22
You're on the right track; act.param is pretty useless for melee hits though. You'll need to dig into the targets and actions tables to find what you're looking for.
The target of the attack is Code
local target = act.targets[1].id
The number of hits is Code
local hits = act.targets[1].action_count
The damage for each hit is Code
local damage_1 = act.targets[1].action[1].param
local damage_2 = act.targets[1].action[2].param
local damage_3 = act.targets[1].action[3].param
...
and so on for each hit (this should normally be done in a loop).
You can also assign hits to main hand/off hand/kicks, track evades/parries/blocks, critical hits, added effects, spike damage, etc., by looking at the other fields in these tables.
ah! I missed the target[1] in my code hence the issue with the action param!! Thanks, silly oversight
Just looking for someone to explain this addon a bit for me. It looks like it is an alternative to Spellcast.
Is it going to be replacing Spellcast? In which ways is it better or worse. I don't know any programming but I've slowly learned more and more about spellcast and the 'language' used in gearswap is confusing to me.
It says it uses packets so it potentially could be more detectable? but does that also eliminate any lag that spellcast may encounter?
I plan on redoing my PUP xml to include pet casting sets thanks to the new addon petschool. I'm just not sure if it's worth it to just wait until gearswap gets more popular or to go ahead and do it in spellcast.
If anyone could give me more info I'd greatly appreciate it.
|
|