|
Using Python3 to estimate BIS gear sets for Ninja.
Server: Cerberus
Game: FFXI
Posts: 1799
By Cerberus.Shadowmeld 2023-01-04 11:33:04
I was playing around with this, and it's got some very odd results. I was trying to see what some decent options were for Shining One Impulse drive, and some custom "hypothetical" stats.
Ended up with higher maximum/minimum (same set) when I untick blaze of glory fury, vs. having it ticked. Shows the same attack value for both in the distrobution graphs.
Can't remember how to store pics... lol
https://imgur.com/a/i5bEqGr
By Izanami 2023-01-04 11:49:08
Since this is a new page, I'll use this post to remind users that my most recent update to the code was posted 2023 January 03. The details of the update can be found on the previous page here.
Cerberus.Shadowmeld said: »I was playing around with this, and it's got some very odd results. I was trying to see what some decent options were for Shining One Impulse drive, and some custom "hypothetical" stats.
Ended up with higher maximum/minimum (same set) when I untick blaze of glory fury, vs. having it ticked. Shows the same attack value for both in the distrobution graphs.
It looks like you're only running 100 simulations. You'll need to run 10,000 to get "decently accurate" statistics. I recommend running 50,000 simulations, though.
I'll look into what BoG is (or isn't) doing in a bit.
Edit: Blaze of Glory is working as intended. Your Geo-Frailty bubble is getting BoG (+50% potency), but the Indi-Fury is not. BoG only applies to Geo-Spells in game, so I have it only apply to the Geo-Spell in the code too.
I do similar things for Marcato and Crooked Cards. Only the first roll/song get these bonuses.
Server: Cerberus
Game: FFXI
Posts: 1799
By Cerberus.Shadowmeld 2023-01-04 12:40:00
Oh, that was a dumb on my part, I had removed the geo bubble entirely, and just had indi. I meant to make it geo-fury
By zixxer 2023-01-04 14:33:11
Love the program! Would you be able to do this same thing for optimizing TP?
Happy new year!
Server: Cerberus
Game: FFXI
Posts: 1799
By Cerberus.Shadowmeld 2023-01-04 15:19:21
Has anyone done any significant work to get a good idea of what Odyssey Boss stats are at. I just put in random of 2000 defense ~350 VIT but the numbers this is giving me still seems really high.
By Izanami 2023-01-04 23:54:58
I've fixed a bug in the code that caused Shining One's Crit Rate to not take effect. The code was technically calculating the crit rate, but it was not applying it to any weapon skills. The code on the GitHub page has been updated.
See below for the "best" (R30 Odyssey) sets for Warrior Impulse Drive after applying the fix for Shining One. I do not play Warrior, so let me know if there is anything else that feels "off" about these sets and I'll look into potential issues related to it. I should note that I only looked into a potential issue with Shining One because somebody noticed that the Empyrean +3 feet (crit damage +13%) were not showing up in the original sets.
There hasn't been time to do much else to the code since I just posted the bigger update yesterday, but I've made the following changes in addition to the fix for Shining One.
As always: keep letting me know if you come across any issues. These could be typos in gear, gearsets that don't feel right, or general errors the code shouldn't be throwing at you.
Love the program! Would you be able to do this same thing for optimizing TP? Yes. I'm working on this now, but I'm currently stuck on how to efficiently find the highest damage set that also has, for example, -50 DT and +50 Subtle Blow.
If anyone has ideas for how to programmatically handle this, let me know. As far as I can tell, there are too many combinations of gear that would satisfy any defensive criteria to efficiently check each while maximizing damage dealt.
I'll likely first post the basic TP set finder and let the user manually make adjustments for things like DT, Magic Evasion, and Subtle Blow. The more advanced TP set finder will take much longer to create unless I can quickly solve the current issue.
Cerberus.Shadowmeld said: »Has anyone done any significant work to get a good idea of what Odyssey Boss stats are at. I just put in random of 2000 defense ~350 VIT but the numbers this is giving me still seems really high.
I haven't found a source for Defense and VIT for Odyssey Gaol bosses. Hopefully somebody has done some testing and can provide rough estimates. I imagine defense would be at least 4000~6000 for v25s.
Ramuh.Austar
Server: Ramuh
Game: FFXI
Posts: 10481
By Ramuh.Austar 2023-01-05 01:38:17
If anyone has ideas for how to programmatically handle this, let me know. The best way I can think of would be a full re-write of most of the code, since your program swaps items one a time to find upgrades.
By SimonSes 2023-01-05 03:51:03
I haven't found a source for Defense and VIT for Odyssey Gaol bosses. Hopefully somebody has done some testing and can provide rough estimates. I imagine defense would be at least 4000~6000 for v25s.
I think they just have some DT and it's not a problem of cRatio. Someone needs to go with BRD RNG GEO DNC RDM COR to maybe Arebati and check if you cap attack on RNG (same DMG with each shot) with bolster frailty, dia III and box step and all the attack buffs possible. If attack will be capped, check how much damage you do and compere to how much you should be doing.
By Zannakun 2023-01-05 07:47:36
If anyone has ideas for how to programmatically handle this, let me know. As far as I can tell, there are too many combinations of gear that would satisfy any defensive criteria to efficiently check each while maximizing damage dealt.
I think you'd have to brute force the calculations. If that ends up being the case, then I'd go with multi-threading processing of sets.
Also, would need to have a point priority system. For example, let's say each point of DT prior to 50% is worth 10 points (configurable), Store TP worth (25 *((4/HitsToWS) + 1) ) points, and damage dealt worth (DMG Dealt / 1000) points.
By Izanami 2023-01-05 09:21:53
I think you'd have to brute force the calculations. If that ends up being the case, then I'd go with multi-threading processing of sets.
I typically jump straight into the "brute force" method as a first-step for programming, then move to efficiency after I have a working version of whatever I'm working on. However, in this case, I've noticed that brute force will not be feasible. GPU acceleration at a high-performance computing center might work (something like 200,000+ cores available per partition), but the standard 2~32 CPU cores that most users would have access to will not be nearly sufficient.
My first idea was to create a list of all combinations of gear that could satisfy some criteria, such as DT<-40 and Subtle Blow>50. I would run the main code for each of these sets and return the one set with the highest damage (or lowest time to TP). This method would definitely work for finding the "best" set given some conditions. The number of sets changes per job since each job has access to different gear, but taking MNK for example:
If I require that the best set ONLY has at least "25 Subtle Blow" and "25 Subtle Blow II", then I'm seeing 142,848 valid gear sets that satisfy the criteria. This is ignoring all slots that do not have any Subtle Blow or Subtle Blow II options. I would then need to run the main code (while ignoring the slots with Subtle Blow) for each of these sets to find the one with the highest damage.
If I also wanted the set to have -50% PDT and -20% MDT, then the number of valid combinations is too high for my computer to find within the 10 minutes before I killed the process. The is because the code must first create all possible combinations of gear with SB, SB2, PDT, MDT, PDT2, and DT, then filter it based on the criteria to find the valid sets.
Also, would need to have a point priority system. For example, let's say each point of DT prior to 50% is worth 10 points (configurable), Store TP worth (25 *((4/HitsToWS) + 1) ) points, and damage dealt worth (DMG Dealt / 1000) points.
I feel like a point-based priority/weight system would break down with varying buffs. It would also not guarantee that the final set satisfies whatever criteria the user provides, given that such a set exists in the first place.
The best way I can think of would be a full re-write of most of the code, since your program swaps items one a time to find upgrades.
What did you have in mind? The automated part of the code is just a triple for-loop for swapping up to three pieces of equipment simultaneously. The end of the loop simply builds the set and runs an average damage test on it. It only looks complicated because I included so many conditions to remove invalid sets (two Gere Rings equipped at the same time, for example). This is probably the only part of the code that would need to be rewritten and it wouldn't be a problem at all.
My current idea is to run the main code once to find the best set ignoring the user's conditions, then rerun the code multiple times more while slowly increasing the requirements on the conditions.
For example, if we wanted to find the best set with 50 Subtle Blow:
Find the best set with no conditions. Record how much Subtle Blow it already has.
Reset best set damage (because it will certainly be decreasing with defensive swaps).
Require that the new best set has at least "+X" more Subtle Blow than the original/previous best set, rejecting all sets that do not.
Repeat steps 2 and 3 until the best set satisfies the user's conditions.
Break out of the loop if there are no more available Subtle Blow swaps.
This method requires that X be small enough that 1~2 pieces of gear together can cover the difference (otherwise the code won't see gear with smaller bonuses as an option), but large enough that we will not have to run the code 10+ times to build up to the required conditions. If the first best set has 0 Subtle Blow (no traits either), then if we simply use X=5, then the code may have to run up to 10 times to build up to +50 Subtle Blow.
This would likely increase the code's runtime from ~30s per set to maybe 3~5 min per set, which is annoying, but workable. The runtime would not necessarily increase 10x if the code needed to run 10 times since the code would reject most sets for failing the conditional check before testing them. This would also only involve adding a fourth for-loop and an if-statement to reject sets that do not satisfy the criteria.
Ramuh.Austar
Server: Ramuh
Game: FFXI
Posts: 10481
By Ramuh.Austar 2023-01-05 10:06:12
What did you have in mind? well, since you're just going to use the average in every step like the spreadsheet would, you'd make functions to get all of those averages together. and once you have that, you can set it up in a way similar to my set optimizer programs with conditions using list comprehension and lambda. it already works for stuff like finding spell sets for tanks that require x HP, x PDT, and maximizing fast cast stat from there, only you'd just change the maximize fast cast stat to maximize damage.
Asura.Cluste
Server: Asura
Game: FFXI
Posts: 15
By Asura.Cluste 2023-01-05 12:51:11
Could Tachi: Kagero be added to the List?
Playing with some more SAM Sets, what i find interesting. With Magic Buffs and Tachi: Jinpu. The Fotia Gorget (by alot) and Acc/Att/WSD Back is winning over Neck+2 and Macc/Mad/WSD Back.
Guess i have to make now a High/Mid Buffed Jinpu Set :D
Bc when you change some of the Magic Buffs to Attack Buffs it changes to Neck+2 and MAD Back.
Thanks again for your work! Looking forward to the TP Section.
By Izanami 2023-01-05 22:25:55
What did you have in mind? well, since you're just going to use the average in every step like the spreadsheet would, you'd make functions to get all of those averages together. and once you have that, you can set it up in a way similar to my set optimizer programs with conditions using list comprehension and lambda. it already works for stuff like finding spell sets for tanks that require x HP, x PDT, and maximizing fast cast stat from there, only you'd just change the maximize fast cast stat to maximize damage. I must not understand what you're saying because it sounds like you described the brute force method I mentioned before. If I'm going to create a list of average damage for each valid set just to find the best, then the first step is to create all possible valid sets that satisfy the conditions. How many sets does your optimizer consider? I'm seeing an unreasonable amount for Subtle Blow alone.
For MNK wanting only "Subtle Blow >= 50" and "Subtle Blow II >= 25", I'm seeing 1,548,288 combinations of gear with subtle blow or subtle blow II and 141,096 valid sets that satisfy the conditions (ignoring slots without any subtle blow options). Each of these valid sets needs to be run through the automated set finder to fill in the non-subtle blow slots and maximize damage. Even assuming that each valid set only takes 1 second to find the best damage through the automated set finder, it'll still take 141,096/86,400 = 1.6 days to find the one best set.
The total number of sets grows exponentially as I add more stats to check. If I wanted all combinations of Subtle Blow/II and PDT/MDT/DT, then the code finds 1.3 trillion combinations, and even waiting 3.5 hours while I was away from home wasn't enough to find the number of sets that satisfied the conditions; it was still checking somewhere between the 9th and 10th billionth set. It probably would've taken another ~19 days to just find the valid sets from these.
Could Tachi: Kagero be added to the List?
It looks like I added Kagero a long time ago, but never made it selectable in the drop down list. I've added the following weapon skills to the code:
Katana: Retsu, Jin, Teki, To
Great Katana: Koki, Goten, Kagero, Enpi, Yukikaze
Dagger: Viper Bite
Sword: Circle Blade, Swift Blade, Fast Blade, Burning Blade, Fast Blade II
Scythe: Slice, Spinning Scythe
Great Sword: Shockwave, Sickle Moon, Spinning Slash, Hard Slash
Club: Shining Strike, True Strike, Mystic Boon
Polearm: Double Thrust
Staff: Full Swing, Sunburst, Starburst, Heavy Swing, Gate of Tartarus, Rock Crusher
Great Axe: Steel Cyclone, Iron Tempest
Axe: Spinning Axe, Raging Axe
Archery: Sidewinder, Blast Arrow, Piercing Arrow
Marksmanship: Blast Shot, Slug Shot, Split Shot
Hand-to-Hand: Spinning Attack, Combo, One Inch Punch
I've also added a few of the su2 weapons which grant access to some of these weapon skills.
Code
ws_dict = {"Katana": ["Blade: Chi", "Blade: Hi", "Blade: Kamu", "Blade: Metsu", "Blade: Shun", "Blade: Ten", "Blade: Ku", "Blade: Ei", "Blade: Yu", "Blade: Retsu","Blade: Jin","Blade: Teki", "Blade: To"],
"Great Katana": ["Tachi: Rana", "Tachi: Fudo", "Tachi: Kaiten", "Tachi: Shoha", "Tachi: Kasha", "Tachi: Gekko", "Tachi: Jinpu", "Tachi: Koki", "Tachi: Goten", "Tachi: Kagero","Tachi: Enpi","Tachi: Yukikaze"],
"Dagger": ["Evisceration", "Exenterator", "Mercy Stroke", "Aeolian Edge", "Rudra's Storm", "Shark Bite", "Dancing Edge", "Mordant Rime","Mandalic Stab","Pyrrhic Kleos", "Viper Bite"],
"Sword": ["Savage Blade", "Expiacion", "Death Blossom", "Chant du Cygne", "Knights of Round", "Sanguine Blade", "Seraph Blade","Red Lotus Blade","Requiescat","Circle Blade","Swift Blade","Fast Blade","Burning Blade","Fast Blade II"],
"Scythe": ["Insurgency", "Cross Reaper", "Entropy", "Quietus", "Catastrophe","Infernal Scythe","Shadow of Death","Dark Harvest","Spiral Hell","Slice","Spinning Scythe"],
"Great Sword":["Torcleaver","Scourge","Resolution","Freezebite", "Herculean Slash","Ground Strike","Dimidiation","Shockwave","Sickle Moon","Spinning Slash","Hard Slash"],
"Club":["Hexa Strike","Realmrazer","Seraph Strike","Randgrith","Black Halo","Judgment","Exudation","Shining Strike","True Strike","Mystic Boon"],
"Polearm":["Stardiver", "Impulse Drive", "Penta Thrust", "Geirskogul", "Drakesbane", "Camlann's Torment","Raiden Thrust","Thunder Thrust","Wheeling Thrust", "Sonic Thrust","Double Thrust"],
"Staff":["Cataclysm","Shattersoul","Earth Crusher","Vidohunir","Retribution","Full Swing","Sunburst","Heavy Swing","Starburst","Gate of Tartarus","Rock Crusher"],
"Great Axe":["Ukko's Fury", "Upheaval", "Metatron Torment", "King's Justice","Raging Rush","Fell Cleave","Steel Cyclone","Iron Tempest"],
"Axe":["Cloudsplitter","Ruinator","Decimation","Rampage","Primal Rend","Mistral Axe","Onslaught","Calamity","Bora Axe","Spinning Axe","Raging Axe"],
"Archery":["Empyreal Arrow", "Flaming Arrow", "Namas Arrow","Jishnu's Radiance","Apex Arrow","Refulgent Arrow","Sidewinder","Blast Arrow","Piercing Arrow"],
"Marksmanship":["Last Stand","Hot Shot","Leaden Salute","Wildfire","Coronach","Trueflight", "Detonator","Blast Shot","Slug Shot","Split Shot"],
"Hand-to-Hand":["Raging Fists","Howling Fist","Dragon Kick","Asuran Fists","Tornado Kick","Shijin Spiral","Final Heaven","Victory Smite","Ascetic's Fury","Stringing Pummel","Spinning Attack","Combo","One Inch Punch"]}
Ramuh.Austar
Server: Ramuh
Game: FFXI
Posts: 10481
By Ramuh.Austar 2023-01-05 22:33:31
For MNK wanting only "Subtle Blow >= 50" and "Subtle Blow II >= 25", I'm seeing 1,548,288 combinations of gear with subtle blow or subtle blow II and 141,096 valid sets that satisfy the conditions (ignoring slots without any subtle blow options). Each of these valid sets needs to be run through the automated set finder to fill in the non-subtle blow slots and maximize damage. Even assuming that each valid set only takes 1 second to find the best damage through the automated set finder, it'll still take 141,096/86,400 = 1.6 days to find the one best set. My old *** 2011 PC just ran 144018 sets in less than a second from one of my optimizers, and I only print the 'valid' total, that's not counting every combination that it checks to find the 'valid' amounts.
[+]
By Izanami 2023-01-06 00:21:25
For MNK wanting only "Subtle Blow >= 50" and "Subtle Blow II >= 25", I'm seeing 1,548,288 combinations of gear with subtle blow or subtle blow II and 141,096 valid sets that satisfy the conditions (ignoring slots without any subtle blow options). Each of these valid sets needs to be run through the automated set finder to fill in the non-subtle blow slots and maximize damage. Even assuming that each valid set only takes 1 second to find the best damage through the automated set finder, it'll still take 141,096/86,400 = 1.6 days to find the one best set. My old *** 2011 PC just ran 144018 sets in less than a second from one of my optimizers, and I only print the 'valid' total, that's not counting every combination that it checks to find the 'valid' amounts.
Unless I'm missing some incredibly useful Python tools, then I think we're talking about different things. I'm hoping that I'm just missing something due to my inexperience with Python, because whatever you're doing sounds incredibly useful.
If I use itertools to build the combinations of all possible sets with some level of subtle blow, dt, pdt, and mdt, then the code starts storing sets on disk because my 16GB of RAM is not enough to store 1.3 trillion sets worth of data. I'm not sure how much memory it would take to store 1.3 trillion gear set dictionaries, but numpy.zeros() wants 9.4 TiB for 1.3 trillion float64 zeros, or 4.7 TiB for int32 zeros. I can get around this memory issue by running a for loop, but it would take about 19 days to finish.
Code
numpy.core._exceptions.MemoryError: Unable to allocate 9.46 TiB for an array with shape (1300000000000,) and data type float64
numpy.core._exceptions.MemoryError: Unable to allocate 4.73 TiB for an array with shape (1300000000000,) and data type int32
Finding a "best" Blade: Ten weapon skill set, for example, typically takes the GUI/code 20~30 seconds on my computer when checking all 16 slots. If I lock half of these slots to account for the fixed part of the set that stores Subtle Blow (and/or DT, Meva, etc), then the runtime drops to 4~6 seconds. That's still ~8 days to find the best set for each combination of Subtle Blow gear that satisfies the conditions. It's only after these 8 days that I could find the true best set out of the 140,000 possibilities.
I have a hard time believing that your computer can find all 140,000 best sets and return the true best set in less than one second. What method are you using exactly to even create the 1 trillion possible combinations so quickly?
Ramuh.Austar
Server: Ramuh
Game: FFXI
Posts: 10481
By Ramuh.Austar 2023-01-06 01:02:52
Unless I'm missing some incredibly useful Python tools, then I think we're talking about different things. I'm hoping that I'm just missing something due to my inexperience with Python, because whatever you're doing sounds incredibly useful. I just use list comprehension and lambda.
I set a condition in my Snapshot optimizer, turned on all pieces of gear and set the condition to >= Snapshot, so it would find every combination. It ran 544320 sets in 1.74 seconds. And my computer has 4G of RAM for reference, it's ***.
Ideally, you'd be able to turn off pieces of gear you have no use for or are redundant, you wouldn't need Rajas Ring on MNK to cap Subtle Blow, for example, so don't consider it.
By Izanami 2023-01-06 08:55:38
Unless I'm missing some incredibly useful Python tools, then I think we're talking about different things. I'm hoping that I'm just missing something due to my inexperience with Python, because whatever you're doing sounds incredibly useful. I just use list comprehension and lambda.
I set a condition in my Snapshot optimizer, turned on all pieces of gear and set the condition to >= Snapshot, so it would find every combination. It ran 544320 sets in 1.74 seconds. And my computer has 4G of RAM for reference, it's ***. This is part of our misunderstanding. The scales of our problems are vastly different, so methods that work well for you will not necessarily work well in the situation I mentioned. If I consider Subtle Blow I/II, PDT, MDT, and DT, then I have 2.4 million times more sets to consider, which would take ~47 days to go through at 1.74 seconds per 540,000. You addressed this in your next comment, but I was convinced you were saying you went through 1 trillion sets in one second earlier...
Ideally, you'd be able to turn off pieces of gear you have no use for or are redundant, you wouldn't need Rajas Ring on MNK to cap Subtle Blow, for example, so don't consider it. You're right. Since the problem scales so quickly, removing options will quickly reduce the number of sets to check, which may allow the brute force method to work. I'm sure I could reduce this down to only have to check less than 1 billion. Further situational reduction would bring this down even more to a reasonable level.
The other part of our misunderstanding is that, even after finding however many sets that satisfy the given conditions, each set needs a few seconds to optimize for DPS on top of the conditional requirements on Subtle Blow, etc. This won't be a problem with only a few hundred sets to check, though.
Thanks, I'll look into this further. Reducing the amount of gear to check in each slot is definitely the best way to go if I wanted to use the brute force method over the iterative method.
Server: Siren
Game: FFXI
Posts: 228
By Siren.Noxzema 2023-01-06 11:59:57
So I ran Combo and it's showing to be the best ws for MNK lol. Though it isn't matching with what my Spreadsheet says dmg should be (26k, which is still not bad for Combo lol)
TP=[1500,2000] Min 44530 | Mean 91458 | Median 91218 | Max 124847
Ramuh.Austar
Server: Ramuh
Game: FFXI
Posts: 10481
By Ramuh.Austar 2023-01-06 12:03:46
photobucket, really?
By Izanami 2023-01-06 12:12:20
So I ran Combo and it's showing to be the best ws for MNK lol. Though it isn't matching with what my Spreadsheet says dmg should be (26k, which is still not bad for Combo lol)
TP=[1500,2000] Min 44530 | Mean 91458 | Median 91218 | Max 124847
This is partially because I made Combo a 5-hit weapon skill instead of a 3-hit weapon skill on accident.
The rest looks correct, but damage doesn't drop to 26k with just this correction. I can't view the image you linked because it requires an account, so I can't check details about this issue. Could you try imgur or something else that doesn't require an account?
I use the FTP values from Motenten's testing in 2007 2014 linked on BG Wiki since BG wiki does not provide FTP on the Combo page directly.
Code
elif ws_name == "Combo":
base_ftp = [1.0, 3.75, 5.5]
ftp = np.interp(tp, base_tp, base_ftp)
ftp_rep = True
wsc = 0.3*(player_str + player_dex) + dStat[1]*gearset.playerstats[dStat[0]]
nhits = 3
Server: Siren
Game: FFXI
Posts: 228
By Siren.Noxzema 2023-01-06 12:12:52
Lol, I'm still stuck in 2015 I forgot all about Imgur, fixed it.
Ramuh.Austar
Server: Ramuh
Game: FFXI
Posts: 10481
By Ramuh.Austar 2023-01-06 12:18:27
wsc = 0.3*(player_str + player_dex) + dStat[1]*gearset.playerstats[dStat[0]]
it looks like you're not multiplying the gear stats by 0.3, just base stats here
By SimonSes 2023-01-06 12:20:07
So I ran Combo and it's showing to be the best ws for MNK lol. Though it isn't matching with what my Spreadsheet says dmg should be (26k, which is still not bad for Combo lol)
TP=[1500,2000] Min 44530 | Mean 91458 | Median 91218 | Max 124847
This is partially because I made Combo a 5-hit weapon skill instead of a 3-hit weapon skill on accident.
The rest looks correct, but damage doesn't drop to 26k with just this correction. I can't view the image you linked because it requires an account, so I can't check details about this issue. Could you try imgur or something else that doesn't require an account?
I use the FTP values from Motenten's testing in 2007 linked on BG Wiki since BG wiki does not provide FTP on the Combo page directly.
Code
elif ws_name == "Combo":
base_ftp = [1.0, 3.75, 5.5]
ftp = np.interp(tp, base_tp, base_ftp)
ftp_rep = True
wsc = 0.3*(player_str + player_dex) + dStat[1]*gearset.playerstats[dStat[0]]
nhits = 3
You have Combo parameters from before h2h update. It's now
1.00 2.40 3.40
[+]
Server: Siren
Game: FFXI
Posts: 228
By Siren.Noxzema 2023-01-06 12:30:10
With those 2 changes (3 hit and Ftp)
By Izanami 2023-01-06 12:43:43
You have Combo parameters from before h2h update. It's now
1.00 2.40 3.40
Thanks. Is this the updated FTP list for H2H weapon skills? BG Wiki should really be updated for these FTP values. The MNK spreadsheet (09-2020) that I used for extra reference also shows the old Combo FTP values, despite being named in a way to suggest that it was updated after you found the new values.
BG claims Shijin is 1.5, but your 2019 post says 1.375. Should I also update my Shijin to 1.375? The values for the other weapon skills you tested back in 2019 seem roughly correct in my code.
With those 2 changes (3 hit and Ftp)
I can't recreate this. I'm seeing half of that damage with nhits=3, and ftp=[1.0, 2.4, 3.4]. Your plot only shows 4 main peaks. These likely correspond to 5-hits, 6-hits, 7-hits, 8-hits. Are you sure you decreased nhits to 3? Your damage is also way higher for these peaks. There is something else going on in your code.
Either way, my damage is still way over 26k that your spreadsheet is seeing.
Notice my plot shows 6 main peaks: 3-hits, 4-hits (DA), 5-hits (TA), 6-hits (TA+DA), 7-hits (TA+TA), 8-hits (TA+QA).
wsc = 0.3*(player_str + player_dex) + dStat[1]*gearset.playerstats[dStat[0]]
it looks like you're not multiplying the gear stats by 0.3, just base stats here
At this point in the code, the player stats are the sum of base+gear+buffs, so that bit should be correct.
By SimonSes 2023-01-06 12:53:05
Thanks. Is this the updated FTP list for H2H weapon skills? BG Wiki should really be updated for these FTP values. The MNK spreadsheet (09-2020) that I used for extra reference also shows the old Combo FTP values.
BG claims Shijin is 1.5, but your 2019 post says 1.375. Should I also update my Shijin to 1.375? The values for the other weapon skills you tested back in 2019 seem roughly correct in my code.
This was first day tests and could have small errors. I would use http://wiki.ffo.jp/html/25607.html for highest accuracy probably. bg wiki copied most from JP wiki too, not sure why they left out things like Combo.
The values for the other weapon skills you tested back in 2019 seem roughly correct in my code.
If its sheet updated by me, then combo probably doesn't have "Updated" description on the right, which means its pre-updated values.
[+]
Ramuh.Austar
Server: Ramuh
Game: FFXI
Posts: 10481
By Ramuh.Austar 2023-01-06 12:55:13
BG claims Shijin is 1.5, but your 2019 post says 1.375. Should I also update my Shijin to 1.375? The values for the other weapon skills you tested back in 2019 seem roughly correct in my code. BG is correct
at least for shijin, smite, the kicks, and raging since I did double check those for my simulations
[+]
Server: Siren
Game: FFXI
Posts: 228
By Siren.Noxzema 2023-01-06 13:09:02
Are you sure you decreased nhits to 3?
elif ws_name == "Combo":
base_ftp = [1.0, 2.4, 3.4]
ftp = np.interp(tp, base_tp, base_ftp)
ftp_rep = True
wsc = 0.3*(player_str + player_dex) + dStat[1]*gearset.playerstats[dStat[0]]
nhits = 3
By Izanami 2023-01-06 13:18:28
Are you sure you decreased nhits to 3?
elif ws_name == "Combo":
base_ftp = [1.0, 2.4, 3.4]
ftp = np.interp(tp, base_tp, base_ftp)
ftp_rep = True
wsc = 0.3*(player_str + player_dex) + dStat[1]*gearset.playerstats[dStat[0]]
nhits = 3
Please triple check that you have one copy of the code and you've saved the weaponskill_scaling.py file after making the changes. I can recreate exactly what you're seeing only if I use nhits=5 and base_ftp = [1.0, 3.75, 5.5].
Server: Siren
Game: FFXI
Posts: 228
By Siren.Noxzema 2023-01-06 13:31:12
Yep, only 1 copy, and it's saved. Tried reloading and running it a few times, and still getting roughly the same.
Edit: Changed it back to the 1.0, 3.75, 5.5 and it's still the same.
Node 456
Updated: 2022 January 28:
ML20 NIN99/WAR53 & R25 Odyssey.
Slightly updated code for easier reading (see Github link below).
While a simple average is nice and convenient for DPS spreadsheets, it does not tell the whole story for most weapon skills. To know exactly how your weapon skill damage will be distributed, you need detailed information about your stats, the enemy you're fighting, and the mechanics of weapon skill damage. As a side-project to learn a bit of basic Python3 programming and about the FFXI damage formulae, I've written a Python3 code to simulate weapon skills and obtain distributions of the damage being dealt given a set of gear and an enemy.
I'm not very familiar with GitHub, but I've put the code on my newly-created GitHub page ( https://github.com/IzaKastra/wsdist_v2).
The code is not meant to replace DPS spreadsheets, but the gear sets provided here should agree with the spreadsheets reasonably well. I believe the sets presented here are the best in slot sets currently available, but you may find marginally better sets for specific enemies. I therefore encourage you to play around with these sets using the spreadsheets to try to find potentially better or worse options that fit within your gear budget.
In addition to finding the best katana weapon skill sets, the code has the added benefit of working with all jobs and all physical and hybrid weapon skills (after minor modifications to adjust for different player race/job stats). This allowed me to also check the best Evisceration, Savage Blade, and Tachi: Jinpu/Koki/Kagero/Goten/Kasha sets for Ninja. I have a version of the code that works for SAM and nearly works for DRK. I "simply" need to work out the DRK Smite trait before it's finished. This is technically the second of three parts of a Python3-based DPS simulator. It currently has everything it needs to be a full DPS simulator, including real-world time between attacks, TP return, and auto-attack/WS damage, but it seems appropriate to stop where I am for now.
I've tested the code's output against SimonSes' NIN Hybrid WS spreadsheet for Blade: Chi and find the difference to be within 0.5%-2% depending on the TP range and buffs used. For physical weapon skills, I tested the results against the Ninja DPS spreadsheet and found that Blade: Shun, Kamu, Hi, and Ku all agree within 5% or better, while Blade: Metsu shows 10% differences due to incorrect Aftermath: Attack+10% handling in the spreadsheet (see the spoiler below). This of course does not mean that I've done everything perfectly.
The spreadsheet is applying Kikoku's aftermath only to the Ninja's base attack (Lv99+STR+Skill), not including BRD songs, attack traits from /WAR, or the +70 attack from job gifts. My in-game testing has shown that Kikoku's AM is applied additively with the other percentage-based boosts like Fury, Chaos, and Berserk; Attack = (Base+BRD)*(1+Berserk+Chaos+Fury+Kikoku_AM)+Food. The image below shows my observed and calculated Attack values with different buffs up.
I've modified the code to automatically adjust a given gearset until it finds the "best" piece in each slot for a specified weapon skill. I then ran the code for 3 different buff states and 3 different TP ranges that I consider to be typical low/mid/high buffs for content in-game:
Low Buffs: Only Grape Daifuku and Dia2, not even trust buffs (but we know you'd end up with March, Paeon, and Evoker's Roll anyway)
Standard Buffs: Grape Daifuku, Dia2, Minuet5, Minuet4, Honor March, Victory March, Lucky Chaos Roll (Songs+7, Rolls+7, HonorMarch+4)
High Buffs: Grape Daifuku, Dia2, Minuet5, Minuet4, Honor March, Victory March, Lucky Chaos Roll, Fury, Frailty (Songs+7, Rolls+7, Geomancy+6, HonorMarch+4)
High Buffs (Hybrid): Grape Daifuku, Dia2, Minuet5, Minuet4, Honor March, Victory March, Lucky Chaos Roll, Fury, Malaise (Songs+7, Rolls+7, Geomancy+6, HonorMarch+4) -- Only used for Blade:Chi
tp = [1000,1300]
tp = [1500,1800]
tp = [2000,2300]
I use max skill-potency geomancy bubbles and songs with 5/5 Minuet merits and 20/20 Minuet job gifts. I did not use any buff-enhancing abilities such as Crooked Cards, Marcato, Blaze of Glory, etc.
My earlier testing suggested that Hitaki is by far the best off-hand weapon for "damage varies with TP" weapon skills. However, it also only showed ~30-70% off-hand hit rate on the Apex Toad target that I'm simulating against (Evasion:1103~1163, Lv131-133), which would likely translate to significantly reduced TP gain and thus significantly reduced WS frequency. Because of this, I removed Hitaki and reran my simulations without it being an option. If you are able to make up for the significantly reduced accuracy and auto attack damage, then Hitaki should probably be your go-to for "damage varies with TP" weapon skills.
I did not test any Herculean gear since I believed it would be a waste of time given the accessibility of Nyame R10+ and the random nature of obtaining "good" augments behind multiple layers of RNG. I encourage you to input the sets I present here into the spreadsheets and see how your Herculean gear compares, though.
It should be noted that these sets are based raw weapon skill damage values. Stats such as Skillchain Bonus (see Nyame) have no effect as a result until I finish the code to be a proper DPS simulator with auto-attacks, TP rounds, auto-WS, and SCs. Swapping some pieces listed in these sets with Nyame will lower weapon skill damage, but the skillchain bonus stat will likely result in larger overall damage.
The details of the code's algorithm are explained in a bit of detail below, but the process is likely very well known to most of you. For now, here is the list of "best average" gear sets for each buff state for a few of Ninja's available weapon skills at specific TP ranges. Each one contains an imgur link to the simulated distributions, which display the gear used and basic player stats for all tests run on that specific weapon skill. A representative image is also presented in each section. The list of all sets can also be found on my FFXIAH item sets page. The comments within each gear set may provide swaps for varying TP ranges.
Note that these gearsets are for a Master Level 20 Lv.NIN99/WAR53, R25 Odyssey gear, and R15 UNM gear.
Blade: Chi
ItemSet 380757
To nobody's surprise, with the release of augmented Nyame gear, the "best average damage" gearset for Blade: Chi is incredibly easy to predict. Blade: Teki and Blade: To likely use an identical weapon skill set, but I did not test them. I would not be surprised if To/Teki used Fotia Belt, though. Since both of them are single-hit weapon skills.
Note that these tests were done on a neutral monster with 100 Magic Defense and no Magic Evasion. I believe many relevant enemies have something like 150 Magic Defense or an SDT value that would guarantee at least a 50% magic damage resist.
Blade: Hi
ItemSet 380758
ItemSet 380759
ItemSet 380760
Kannagi (R15) was locked into the main hand.
Andartia Mantle AGI+Crit Rate for low buffs
Andartia Mantle AGI+WSD for standard/high buffs
Critical hit weapon skill damage varies wildly based on the AGI stat of your target. This is because up to 15% of your Crit Rate comes from dDEX. Unfortunately, Blade: Hi has an 80% AGI modifier, which is essentially useless for meleeing. I'm still convinced the developers accidentally swapped the modifiers for Jishnu's Radiance (80% DEX) and Blade: Hi (80% AGI) and refuse to admit it.
Since Apex Toads do not have a published AGI value to calculate dDEX from, I ended up performing about 2 hours worth of auto-attacks in various sets to estimate it myself (AGI ~ 354-358). Either way, I don't necessarily recommend the Blade: Hi sets presented here. I don't think Blade: Hi is a good weapon skill in general compared to the other Katana options. The conditions required for critical hit weapon skills to perform well are too variable to simply stick with a single set based on a spreadsheet or code. You should do your own research based on exactly what you plan to use the weapon skill on and build your set around that.
Blade: Kamu
Blade: Ku
ItemSet 380763
ItemSet 380764
ItemSet 380765
Blade: Ku is surprisingly powerful when compared to Blade: Shun. The +60% damage on Gokotai, 1.25 FTP, and 30% STR+DEX modifier put in a lot of work to boost the damage. Unfortunately the skillchain properties are not great compared to Blade: Shun with Heishi.
Blade: Metsu
ItemSet 380766
ItemSet 380768
These sets are a good example of not using a lot of Nyame where Nyame would likely win. Blade: Metsu has excellent skillchain properties so I expect at least 4/5 Nyame with Relic legs to win in most cases considering they provide +24% skillchain damage.
With the release of R25 Nyame, most of these sets actually use Nyame for maximum physical damage. The skillchain damage stat on Nyame is just a bonus on top now.
Blade: Shun
Blade: Ten
Savage Blade
ItemSet 380771
ItemSet 380772
ItemSet 380773
For Naegling's "Weaponskill: Attack bonus based on number of upgrades" stat, I assumed the player had at least eight buffs up (protect, shell, haste, utsusemi, kakka, yonin, food, signet) for all sets. Standard buffs added 4 songs and 2 rolls for 14 total buffs, and high buffs added a single GEO bubble for 15 total buffs. The player's base attack then received +1% per buff present. This bonus attack was added to the player's base attack before any other buffs were added.
Evisceration
ItemSet 380942
ItemSet 380770
ItemSet 380943
Tauret was locked into the main hand.
Ryuo Tekko Path A or D
Andartia Mantle DEX+Crit Rate
Kendatsuba Samue +1 or Mpaca Doublet R25 are generally the go-to body slots for Evisceration.
Similar to Blade: Hi, critical hit weapon skill damage will vary wildly depending on the AGI of your target. Your dDEX provides as much as 15% critical hit rate that you're potentially missing on high AGI targets unless you stack more DEX. Luckily, Evisceration has a 50% DEX modifier, so this is not likely to be a problem. I still recommend finding your own set that works well on the content you plan to use Evisceration on (Odyssey Lamia/Aquans or that one Master Trial) instead of just sticking with this set or one from the spreadsheet.
Tachi: Goten
ItemSet 383500
Tachi: Goten is the Lightning-elemental hybrid weapon skill. The Donar Gun would likely be fantastic for this weapon skill, but it would require that you never unequip the gun since you would lose TP to swap to Shuriken for TPing.
Be sure to weaponskill above 2000 TP.
You may want to use Samurai subjob for Hasso/Zanshin in order to increase your TP gain rate when relying on the Great Katana weapon skills.
Tachi: Jinpu
ItemSet 383497
Nyame Path B
Andartia Mantle STR+WSD
Ninja Nodowa +2 when attack capped and TP>2000.
Fotia Belt > Orpheus's Sash when below 1500 TP. You should always weapon skill above 2000 effective TP, though.
Tachi: Jinpu is a powerful tool for a Ninja to have available against Earth-based enemies weak to magic and slashing damage. This is essentially the Great Katana version of Blade: Chi, so you'll want to WS above 2000 effective TP.
You may want to use Samurai subjob for Hasso/Zanshin in order to increase your TP gain rate when relying on the Great Katana weapon skills.
The best part of Tachi: Jinpu is that it creates and endless skillchain loop with itself. When fully buffed, you are able to simply spam Tachi: Jinpu and create powerful skillchains with every use. It's unfortunate that the developers did not allow Blade: Chi to self-skillchain endlessly as well.
Tachi: Kagero
ItemSet 383499
Tachi: Kagero is the Fire-elemental hybrid weapon skill. Tachi: Kagero is especially potent on a few enemies in Odyssey C, such as Puks and Bomb Clusters. Be sure to weaponskill above 2000 TP.
You may want to use Samurai subjob for Hasso/Zanshin in order to increase your TP gain rate when relying on the Great Katana weapon skills.
Tachi: Kasha
ItemSet 383491
ItemSet 383492
Nyame Path B
Andartia Mantle STR+WSD
I don't expect anyone to use Tachi: Kasha on Ninja, but it is a pretty weapon skill.
You may want to use Samurai subjob for Hasso/Zanshin in order to increase your TP gain rate when relying on the Great Katana weapon skills.
Tachi: Kasha is the Great Katana version of Blade: Retsu, since it can Paralyze the enemy. I'm not sure if it is as potent as Blade: Retsu, though.
Tachi: Koki
ItemSet 383498
Nyame Path B
Andartia Mantle STR+WSD
Tachi: Koki is a single-hit weaponskill. Ninja Nodowa +2 will likely not beat Fotia Gorget unless you hold until 3000 TP for some reason.
Epaminondas's Ring can replace Gere Ring when near attack cap, but you lose those rare triple attack procs.
Tachi: Koki is the light-elemental hybrid weapon skill, which means it benefits greatly from Weatherspoon Ring (SoA final reward option). Despite the boost in power from Weatherspoon Ring, I don't see Koki getting much use.
You may want to use Samurai subjob for Hasso/Zanshin in order to increase your TP gain rate when relying on the Great Katana weapon skills.
As a side note: Blade: Ei is a Darkness-based magical Katana weapon skill. There is no Darkness-based hybrid weapon skill. This is unfortunate because it would likely be very powerful with Archon Ring and Pixie Hairpin +1
Based on the sets listed above, we can make a short list of gear priority for a newer Ninja to reference.
Odin: Gere Ring
UNM: Lugra Earring +1 (Aug) > Sailfi Belt +1 (Aug) >= Seething Bomblet +1 (Aug) > Blistering Sallet +1 (Aug)
Lilith: Malignance Gloves > Malignance Tabard > Malignance Boots > Malignance Tights >= Malignance Chapeau
Bumba: Nyame Mail > Nyame Sollerets > Nyame Gauntlets > Nyame Flanchard >= Nyame Helm
Arebeti: Mpaca Cap > Mpaca Hose > Mpaca Doublet > Mpaca Gloves >= > Mpaca Boots
Ngai: Gleti's Knife
Xevioso: Kunimitsu
Relic: Legs > Head > Hands >= Feet > Body(TP low haste)
AF: Head
Adhemar: Head(A) > Body(B) > Hands(B) > Feet(A)
However, just because an item didn't show up here doesn't mean it doesn't hold a best-in-slot position in some situation. The 2021 Ninja Gearsets thread provides excellent gear to use for many weapon skills without considering Odyssey gear. Many of these sets are well within uncertainty of my "best average" sets presented here.
Here I give a "brief," but relatively detailed, description of how the damage was calculated within the code. Let me know if there are any mistakes or inaccuracies that need to be corrected. I'm confident in the algorithm, but I may have done a poor job explaining in some places.
The simulations were based on Apex Toads with three sets of possible stats, excluding their innate -25% MDT. This can be thought of as having three unfortunate Apex Toads in a room and each weapon skill hit one of them randomly. Taken directly from my code, the stats used were:
Code
e_mdef = 0-malaise*(15+3*nbubble) if 0-malaise*(15+3*nbubble) > -50 else -50
apex_toad = {'Level': [131, 132, 133],
'Defense': [1206*(1-dia[dia_potency]-frailty*(0.148+0.027*nbubble)), 1239*(1-dia[dia_potency]-frailty*(0.148+0.027*nbubble)), 1272*(1-dia[dia_potency]-frailty*(0.148+0.027*nbubble))],
'Evasion': [1103, 1133, 1163],
'VIT': [264, 270, 276],
'AGI': [354, 356, 358], # AGI roughly measured using Scoreboard on two different toads.
'MND': [218, 224, 228],
'INT': [285, 293, 299],
'CHR': [270, 277, 284],
'Magic Defense': [e_mdef, e_mdef, e_mdef]} # Enemy Magic Defense has a floor of 50
For Physical weapon skills, I used the standard BG-wiki formula to calculate damage: Due to the random nature of PDIF, a new value is calculated for each hit individually.
Additional hits after the first main-hand hit, whether they be from multi-hit weapon skills or multi-attacks, were performed in the order suggested by the testing of Austar. In the case of multi-attack procs on weapon skills, testing by Saevel and Austar show that there can be no more than two multi-attack checks of any kind per weapon skill and that the off-hand weapon will always get one of these two checks if you have an off-hand weapon equipped, otherwise the main-hand will get both checks only if the weapon skill has at least two natural hits.
In addition to the testing of Saevel and Austar, I tested this by using 404 Blade: Retsu while dual-wielding (2+1 hits) with 29% DA and 31% TA on Apex Toads. The observed TP return distribution from 404 Blade: Retsu closely matches the expected distribution assuming that only the first two hits (the first main hit and the one sub hit in this case) can multi-attack. Any assumptions that all weapon skill hits can multi-attack (6 chances for Blade: Shun for example) quickly cause the expected distribution to diverge from the observed.
For Hybrid weapon skills, I used the equation provided by Bahadir's Blade: Chi testing, Jakey's YouTube video, and SimonSes' NIN Hybrid Damage calculator, which splits the weapon skill damage into two parts
Hybrid = Physical + Magical
The physical damage is calculated using the exact same method as mentioned previously for purely physical weapon skills, with the important change that FTP is 1.0 and non-replicating for the physical portion of Hybrid weapon skills (see Bahadir's testing). The magical damage is calculated using the physical damage and the player's "Magic Damage" stat as a base:
In addition to the basic formula for damage, it is important to explicitly mention the following special cases that are included in the damage calculations:
Unlike the first main-hand hit, the first off-hand hit does not gain the bonus from the standard weapon skill damage stat.
Certain "weapon skill damage" stats on weapons apply to all hits. Examples of this include Naegling Savage Blade Damage +15%, augmented REMA weapons, and the hidden weapon skill damage bonus on Mythics and Relics.
Weapon skills gain a hidden ~+100 accuracy to their first hit. My testing of 1745 unbuffed (Brygid+KuyinHathdenna+YoranUC) Blade: Chi on Apex toads heavily suggests that this bonus applies to the first off-hand hit as well.
Buffs to player Attack are applied in a specific order:
Attack = (8+Gear+Traits+Gifts+Skill+STR+STR(food)+STR(buffs)+BRD)*(1+COR+GEO+Kikoku10%+Berserk)+Attack(food)
The player's secondary/auxiliary/off-hand attack is calculated using only half of their STR stat (see BG-wiki: "Attack")
STR from food is immediately used to calculate base attack, but "Attack+" from food is not applied until all other buffs have taken effect.
Before running the code, I manually selected equipment for each equipment slot that I wanted to test. This allowed me to exclude testing items like Mummu Kecks for Blade: Chi, which would obviously be a waste of time. To allow the output of my code be easily compared to the spreadsheets, the code uses a distribution's average damage to determine which piece of gear is "better" than another. It should be noted that the average is not a good summary statistic for multi-peaked distributions, though. The algorithm itself is simple:
(Edit 2021-08-23: I've adjusted the code's algorithm to use averages for intermediate steps, and 50,000 simulations as the last step. The process for finding best sets is now identical to manually selecting gear in a spreadsheet and checking the DPS value. The advantage is that this code is automated and provides expected damage distributions at the end for further analysis.)
1) For each item slot (or for each pair of two item slots simultaneously), cycle through all selected equipment and calculate the average weapon skill damage from that test gear set.
2) If the average damage is higher than the previous highest, then keep that item equipped, otherwise ignore it and try another combination of gear.
3) After all slots (or all combination of two slots simultaneously) have been tested and the best item in each slot determined, restart from the beginning with the previous best set as the starting place, checking each slot (or combination of two slots simultaneously) again, up to 20 times until. This allows for some gear to change based on changes to already tested slots.
4) Stop early if gear changes result in an average damage increase less than 0.5%, or if no changes are made within two consecutive iterations. This is the convergence criterion and it usually triggered before iteration 7.
With the above algorithm, the code's runtime is ~3 seconds to find a best set while swapping only one slot at a time, or ~180 seconds if changing two slots simultaneously. An additional 10 seconds is required to build a distribution of 50,000 simulations for the fancy output plots.
The list of gear tested in each slot is presented here. All weapon skills used the same pool of gear. All UNM gear is R15. All Odyssey gear is R25. Code
mains = [Heishi, Kannagi, Kikoku, Nagi, Gokotai]
subs = [Ternion, Kunimitsu, Gleti_Knife, Tauret, Gokotai, Crepuscular_Knife]
grips = [Alber_Strap]
ammos = [Yetshila, Seething_Bomblet, Cath_Palug_Stone, Aurgelmir_Orb, Pemphredo_Tathlum, Ghastly_Tathlum, Crepuscular_Pebble]
heads = [Adhemar_Bonnet_A, Adhemar_Bonnet_B, Hachiya_Hatsuburi, Mochizuki_Hatsuburi, Malignance_Chapeau, Kendatsuba_Jinpachi, Mummu_Bonnet, Nyame_Helm, Mpaca_Cap, Blistering_Sallet]
necks = [Ninja_Nodowa, Fotia_Gorget, Caro_Necklace, Baetyl_Pendant]
ears = [Ishvara_Earring, Lugra_Earring_Aug, Moonshade_Earring, Brutal_Earring, Friomisi_Earring, Crematio_Earring, Balder_Earring, Mache_Earring1, Mache_Earring2, Odr_Earring, Crepuscular_Earring]
ears2 = [Ishvara_Earring, Lugra_Earring_Aug, Moonshade_Earring, Brutal_Earring, Friomisi_Earring, Crematio_Earring, Balder_Earring, Mache_Earring1, Mache_Earring2, Odr_Earring, Crepuscular_Earring]
bodies = [Kendatsuba_Samue, Adhemar_Jacket_A, Adhemar_Jacket_B, Malignance_Tabard, Nyame_Mail, Samnuha_Coat, Gyve_Doublet, Abnoba_Kaftan, Mpaca_Doublet, Tatenashi_Haramaki, Ryuo_Domaru_A, Agony_Jerkin]
hands = [Adhemar_Wristbands_A, Adhemar_Wristbands_B, Mochizuki_Tekko, Mummu_Wrists, Malignance_Gloves, Kendatsuba_Tekko, Nyame_Gauntlets, Mpaca_Gloves, Tatenashi_Gote, Ryuo_Tekko_A, Ryuo_Tekko_D]
rings = [Gere_Ring, Hetairoi_Ring, Shukuyu_Ring, Apate_Ring, Ilabrat_Ring, Regal_Ring, Epona_Ring, Petrov_Ring, Rufescent_Ring, Begrudging_Ring, Epaminondas_Ring, Mummu_Ring, Beithir_Ring, Dingir_Ring, Metamorph_Ring, Shiva_Ring1, Shiva_Ring2, Weatherspoon_Ring]
rings2 = [Gere_Ring, Hetairoi_Ring, Shukuyu_Ring, Apate_Ring, Ilabrat_Ring, Regal_Ring, Epona_Ring, Petrov_Ring, Rufescent_Ring, Begrudging_Ring, Epaminondas_Ring, Mummu_Ring, Beithir_Ring, Dingir_Ring, Metamorph_Ring, Shiva_Ring1, Shiva_Ring2, Weatherspoon_Ring]
capes = [Andartia_DAdex, Andartia_DAstr, Andartia_DAagi, Andartia_Critagi, Andartia_Critdex, Andartia_WSDstr, Andartia_WSDdex, Andartia_WSDagi, Andartia_Nuke]
belts = [Windbuffet_Belt, Fotia_Belt, Grunfeld_Rope, Kentarch_Belt, Sailfi_Belt, Orpheus_Sash]
legs = [Kendatsuba_Hakama, Adhemar_Kecks_A, Adhemar_Kecks_B, Mochizuki_Hakama, Samnuha_Tights, Jokushu_Haidate, Malignance_Tights, Mummu_Kecks, Gyve_Trousers, Hizamaru_Hizayoroi, Nyame_Flanchard, Mpaca_Hose, Tatenashi_Haidate, Ryuo_Hakama_A, Rao_Haidate_B]
feet = [Mochizuki_Kyahan, Adhemar_Gamashes_A, Adhemar_Gamashes_B, Malignance_Boots, Mummu_Gamashes, Kendatsuba_Sune_Ate, Nyame_Sollerets, Mpaca_Boots, Tatenashi_SuneAte, Ryuo_SuneAte_D, Rao_SuneAte_D]
Finally, since this post is already pretty long, I may as well link my official forum post from last year. This post details my requested Ninja job adjustments. Feel free to give it a like/comment.
https://forum.square-enix.com/ffxi/threads/57263-2020-2021-Ninja-Job-Adjustment-and-Feedback?s=66c8aaed6a12e3a576c9ee8f403e1174
|
|