|
All Jobs Damage Simulator and Gear Sets
Asura.Sechs
サーバ: Asura
Game: FFXI
Posts: 10135
By Asura.Sechs 2023-09-04 00:59:10
Gain-STAT spells assume +30 from RDM Relic+3 hands for a minimum value of +35 STAT. Minimum of +35 (assuming Relic+3) in the scenario of 0 enha skill, am I reading this right?
If so, ok.
Sorry I didn't read the fact that you already addressed Temper1/2 a few posts above mine.
Still I'm a bit puzzled, +35% TA sounds like a pretty respectable value and in this scenario items with low values of DA and no other benefits should be inferior to items with STP, because in theory DA should be avoided granted how it takes priority in the Game's calculations and we don't want a DA to potentially proc and prevent a TA to proc, right?
So I was confused by how the tool was suggesting a few items with DA above others with no DA and STP (Bunzi Hands R0 vs Malignance Hands, if I recall one of the examples) and this led me to believe that the tool wasn't accounting for TemperII
Guess I was wrong, but I still find it strange Bunzi Hands R0 produces so much better results than Malignance, hmmmmm
And there were a couple of other slots with results that surprised me.
サーバ: Valefor
Game: FFXI
Posts: 19647
By Valefor.Prothescar 2023-09-04 01:16:44
because in theory DA should be avoided granted how it takes priority in the Game's calculations
? This isn't true. QA > TA > DA > OAx > Zanshin
[+]
By Lili 2023-09-04 02:00:57
DA should be avoided granted how it takes priority in the Game's calculations and we don't want a DA to potentially proc and prevent a TA to proc, right?
As Proth said, TA procs before DA can, so it absolutely doesn't hurt.
(Bunzi Hands R0 vs Malignance Hands, if I recall one of the examples)
Remember that the calculator optimizes for time to WS and nothing else. With that metric, the only thing that matters is that your x-th swing gets you to 1000 TP or above. If that very same hits gets to 1020 TP with malignance hands and with 1001 TP with Bunzi's Gloves, then the latter is better because it gives you an chance of getting there one round earlier. Considering enspells and TP overflow and other things, that's not always the best for DPS as we all know, but when you're only taking time to WS into account then it is.
By Izanami 2023-09-04 08:59:48
Gain-STAT spells assume +30 from RDM Relic+3 hands for a minimum value of +35 STAT. Minimum of +35 (assuming Relic+3) in the scenario of 0 enha skill, am I reading this right?
If so, ok. Yes. The equation on BG suggests that Gain/Boost spells provide +5 STAT below 300 skill with an additional +1 STAT for every 10 skill levels, up to a cap at 500 skill for a total of +25 STAT. RDM relic+3 gloves provide an additional 30 across this range. So Gain spells provide +35 to +55 STAT while Boost spells provide +5 to +25 STAT.
So I was confused by how the tool was suggesting a few items with DA above others with no DA and STP (Bunzi Hands R0 vs Malignance Hands, if I recall one of the examples) and this led me to believe that the tool wasn't accounting for TemperII
Guess I was wrong, but I still find it strange Bunzi Hands R0 produces so much better results than Malignance, hmmmmm
And there were a couple of other slots with results that surprised me. What set specifically are you checking? I remember building a RDM/NIN TP set a while back and always saw Malignance Gloves beat Bunzi Gloves. Even now I still see Malignance beat Bunzi. I only see Bunzi Gloves beat Malignance Gloves with Temper2 disabled, and Bunzi only wins by 1% (~20 ms) in this situation.
Carbuncle.Maletaru
サーバ: Carbuncle
Game: FFXI
Posts: 2676
By Carbuncle.Maletaru 2023-09-04 09:15:11
Still I'm a bit puzzled, +35% TA sounds like a pretty respectable value and in this scenario items with low values of DA and no other benefits should be inferior to items with STP, because in theory DA should be avoided granted how it takes priority in the Game's calculations and we don't want a DA to potentially proc and prevent a TA to proc, right?
I find people mix this up regularly, you have it in reverse. You're right to say that as your TA% goes up, DA gear becomes less valuable, but it's not because DA blocks TA, but because TA blocks DA. This means that your 8% DA is not really 8% because 35% of the time, it has a 0% chance to proc.
This is why people prioritize STP gear in high QA or TA builds, because STP counts on all hits, whether you proc'd a TA or not, whereas DA only provides a benefit if you didn't QA or TA.
The other similar scenario is with mythic AM3 or KC, where DA can actually block your other multi-hits. DA is checked before these are checked, which means any DA proc is blocking.
[+]
Asura.Sechs
サーバ: Asura
Game: FFXI
Posts: 10135
By Asura.Sechs 2023-09-04 13:30:32
What set specifically are you checking? I remember building a RDM/NIN TP set a while back and always saw Malignance Gloves beat Bunzi Gloves. Even now I still see Malignance beat Bunzi. I only see Bunzi Gloves beat Malignance Gloves with Temper2 disabled, and Bunzi only wins by 1% (~20 ms) in this situation. Yes, that's what I was expecting as well, I was really surprised to see Bunzi there and they were more than 1% ahead of Malignance because Malignance didn't appear as secondary option in the suggested list at the end of the set.
I was testing melee with song+9 Honor, Minu, Minu, Minu then Haste2, Dia3, Sam Roll, Chaos Roll.
Some +DA options suggested over mine I was sorta expecting.
Like R30 Coiste over Aurgerlmir+1, like Sherida earring.
I was a bit puzzled on DA+10 over STP+10 in the cape slot, but not incredibly surprised.
I was sorta expecting R25 Bunzi head to win over Malignance.
But Bunzi Hands more than 1% ahead of Malignance gloves was really something I couldn't explain.
By Izanami 2023-09-04 14:47:01
I was testing melee with song+9 Honor, Minu, Minu, Minu then Haste2, Dia3, Sam Roll, Chaos Roll.
I think I'll need more details on what type of set you're having the code build, with things like specific buffs, locked weapons, subjob, and excluded gear, to explain the preference for DA with Temper2 enabled. You may be testing a very niche situation or testing a situation that enables a typo in the code to manifest in the output. All of the situations I've checked for RDM/NIN return Bunzi Hat with Malignance Gloves.
Since the code tests slots+gear in random order and only swaps two items at a time, I see the code occasionally settle on two different sets for the typical buffed RDM/NIN Naegling+Thibron build, but they're essentially the same result:
DW Cape, Dedition Earring, Windbuffet Belt (1.490 seconds per 1000 TP)
STP Cape, Eabani Earring, Reiki Yotai (1.499 seconds per 1000 TP)
I never saw Malignance Hat, Bunzi Gloves, or DA cape show up, even if trying single-wield sets or other standard RDM weapon combinations.
By Lili 2023-09-04 20:39:21
Uuuhhhh
https://www.bg-wiki.com/ffxi/All_Jobs_Gear_Sets/Bard
Pretty sure Linos cannot get WSD+10 nor STR+30 lol
[+]
By Izanami 2023-09-04 23:07:18
Oops. I have a code to convert the FFXIAH itemset notation to BG Wiki notation that I used to move the sets over, but I didn't modify it to adjust the values on Linos and had it format Linos augments as Ambuscade cape augments. The stats are correct, but the values are clearly incorrect. It should just say STR+WSD.
For reference, the code uses WSD+3% STR+6, Attack/Accuracy+15, rather than capped augments, similar to how it treats JSE earring augments and UNM "Unity Rank" stats.
I'll update the BRD page on BG Wiki to fix this.
[+]
Fenrir.Jinxs
サーバ: Fenrir
Game: FFXI
Posts: 541
By Fenrir.Jinxs 2023-09-06 09:27:06
Everytime I use this I have to set all my choices again. Is there a way to save configurations?
The save defaults is greyed out
By Izanami 2023-09-06 10:03:56
Been playing with this more and more and wanted to ask about the enemy section. Is there a good enough "catch all" enemy i can pick and use for most things? I have been looking at the sets it spits out for "Apex Bats" Thanks.
I don't think so. I'd say just pick the enemy with the Evasion value closest to the enemy you plan on fighting and maybe modify it manually if necessary. You can ignore the Defense value for the most part as long as its reasonable given the enemy level since nearly all "below attack cap" sets for individual weapon skills are identical anyway. I usually pick Apex Bat or Lugcrawler Hunter for my generic sets.
Everytime I use this I have to set all my choices again. Is there a way to save configurations?
The save defaults is greyed out
Saving your configurations is a feature only in the updated beta GUI. This can not be added easily to the old GUI since they are written in different ways.
The only major issue with the beta GUI that I'm aware of is the interface scaling issues when using custom Windows DPI scaling. As long as this doesn't affect you, then I recommend using the beta GUI anyway since it also has many other features and small fixes that the old code does not.
By Lili 2023-09-11 02:29:09
Been having this issue for a while now, anytime I try to calculate a TP set on any job. Is this a known issue?
Code Exception in Tkinter callback
Traceback (most recent call last):
File "tkinter\__init__.py", line 1892, in __call__
File "gui_wsdist.py", line 1984, in <lambda>
self.run_tp = tk.Button(self.run_frame,text="Optimize TP",image=self.dim_image,compound=tk.CENTER,width=100,height=30,command=lambda: self.run_optimize("run tp"))
File "gui_wsdist.py", line 5058, in run_optimize
self.best_player, self.best_output = build_set(self.mainjob.get().lower(), self.subjob.get().lower(), self.masterlevel.get(), buffs, abilities, enemy, ws_name, spell_name, "attack round", self.tp0.get(), self.tp1.get(), self.tp2.get(), check_gear, gearset, conditions.get("PDT",100), conditions.get("MDT",100), self.tpmetric.get(), print_swaps, next_best_percent, )
File "wsdist.py", line 416, in build_set
print(f"Avg WS Time = {best_metric**invert:<{nondecimals}.{decimals}f} s")
UnboundLocalError: local variable 'invert' referenced before assignment
Ramuh.Austar
サーバ: Ramuh
Game: FFXI
Posts: 10481
By Ramuh.Austar 2023-09-11 07:30:19
invert doesn't have anything assigned before being printed it looks like. i don't have the code on my computer to look myself atm but i can later if you still don't have an answer
just looking at the error itself, something with one of the buttons i have to guess
[+]
Bismarck.Nekhekh
サーバ: Bismarck
Game: FFXI
Posts: 55
By Bismarck.Nekhekh 2023-09-11 08:48:32
I haven't been on this page in a minute. Can you or have you added new mobs since we have now added apex imp and the like? Also some different foods.
By Izanami 2023-09-11 09:22:51
Been having this issue for a while now, anytime I try to calculate a TP set on any job. Is this a known issue?
Yes and no. I've never seen an error complain about "invert", but there is an open issue on GitHub complaining about "best_output" on the following line when calculating TP sets. Your issue seems more restrictive since it appears to affect all jobs, but that probably just means that your settings found the true cause of the issue.
I believe both issues are caused by the code filtering ALL sets as invalid, so it never even tests a set to determine what the "best" is. For example, it checks that you are not dual wielding without the DW trait, or that you aren't using an arrow with a gun.
I've finally had some time recently to work on the code again so I'll look into these issues this week. I have a few ideas for what could cause the issue and how to fix it. The user on GitHub provided their settings which cause the issue, so I can at least recreate it consistently as I try to fix it.
I haven't been on this page in a minute. Can you or have you added new mobs since we have now added apex imp and the like? Also some different foods. I'm not sure when you last checked, but the code has eight in-game enemies based on their level, including levels 129, 132, 135, 138, 140, 142, 145, and 147. This should cover just about any situation, or provide an idea of what stats to enter manually for a custom enemy.
The code also has 12 food options, including both NQ and HQ versions. This is part of the gear.py file, which means you can manually add any food option you want to this file, giving any stat bonuses you want.
[+]
By Izanami 2023-09-11 11:28:07
I've fixed an issue in the code which appears to be the cause of the issue on GitHub, and likely your issue as well. I'm not sure if this is completely fixed since I never ran into the issue naturally myself and can't check any other situations that might throw the error, but my understanding of the issue suggests that it has been fixed. The code on GitHub has been updated.
Let me know if you still have any issues with it.
Essentially: I told the code to unequip an item if the user didn't select it and if the user selected other items in its slot. The problem was that I was telling the code to compare the item name string to the full item dictionary to determine if the item was selected, which would never match. This meant that the code almost always unequipped everything before building sets. This can be seen in the output as the code equips items, which always start with [Empty -> <item name>].
I actually like this behavior since it lets the code "start fresh" for each set and not always be biased towards the currently-equipped items. For example: the code building towards a Crit set because it already has decent starting Crit stats despite a WSD build being better, which is what happened with my posted DRG Stardiver set previously.
I looked into the issue a bit more and found that since the code starts with a completely empty set, it has floored hit rate (20%), which means it takes ages to reach the desired TP value. I told the code that the default "best" set reaches the desired TP value within 100 seconds (default best_metric=0.01, which is inverted for "Time to WS" TP sets), but depending on your required "Min. TP" value, it may take longer than 100 seconds to reach with 20% hit rate. Since the code never found a set better than 100 seconds per WS, it never equipped anything or saved a "best_output" or "invert" value and threw an error.
This also explains why the GitHub issue disappears when COR buffs are selected; SAM roll increased TP gain enough with a floored hit rate set to beat the default 100 second "best" value.
My solution is to keep the code unequipping everything in slots you want to test items in, but increase the default "Time to WS" to 10000 seconds (default best_metric=0.0001).
In other news:
I updated the code yesterday to include damage distributions again, which was the reason I started this project to begin with.
I've also added DPS simulations to a new Simulations tab. These simulations use a fixed TP set and a single fixed WS set to simulate spamming one weapon skill every time the "Min. TP" value is reached. This is still a work in progress, but the very basic functionality appears to be working now. The values seem reasonable, but I need to do more testing to make sure nothing is broken. The sets shown in the Simulations tab are saved/loaded in the defaults.txt file. You'll need to click the "Save Defaults" button again to update your defaults.txt file with your sets.
The simulations do not include reapplying abilities and have I have no plans to include that at the moment. If you have the buff selected in the inputs tab, then the simulation will simply full-time it at the moment. Pretty much just be careful with SA/TA/Flourishes which would apply to all WSs in the simulation right now. There is still a ton of room for the simulations tab to improve.
I'll add skillchain damage to the simulations soon and have plans to also increase the number of WS steps to up to 5 (with 5 different WS sets) to simulate multi-step skillchains. I'm not sure what the skillchain timing window is, though. I have a good feel for it in game, but I have no idea what the exact timing is between each WS to continue a multi-step skillchain. I'll likely input 10-n seconds for n-step skillchains for now and update it later when I find the true values.
Edit:
I should also mention that the "Player Stats" tab actually shows values now. The Enemy stats are still printed to the terminal for now.
Ramuh.Austar
サーバ: Ramuh
Game: FFXI
Posts: 10481
By Ramuh.Austar 2023-09-11 13:27:33
I'll dm you when I get home if you want some SC help. I have working skillchain and proper skill chain wjndow on my simulations
Bahamut.Leonof
サーバ: Bahamut
Game: FFXI
Posts: 32
By Bahamut.Leonof 2023-09-12 22:22:46
it doesnt seem to be detecting the store tp from ryuo somen +1 path C.
also i dont think raging rush ftp replicates
[+]
By Izanami 2023-09-12 22:40:04
it doesnt seem to be detecting the store tp from ryuo somen +1 path C.
also i dont think raging rush ftp replicates
Ryuo Somen had "Store TP" defined twice, once as +7, and the other as 0+5, so the code was only seeing +5, rather than +12.
Raging Rush was probably just a typo. I've updated the Raging Rush sets on the BG Wiki page since Fotia is no longer worth as much without the FTP transfer on a 3-hit FTP=1.0 weapon skill, which causes some equipment swaps in other slots.
These have been fixed.
[+]
Bahamut.Leonof
サーバ: Bahamut
Game: FFXI
Posts: 32
By Bahamut.Leonof 2023-09-12 22:42:21
how do you remove gear from the gear list file? because when i comment out the line or delete the line, the simulator just crashes on start up
By Izanami 2023-09-12 22:51:40
how do you remove gear from the gear list file? because when i comment out the line or delete the line, the simulator just crashes on start up
Find the list for the slot you want to remove the item from, then delete the item name from that list. Do not remove the item from the gear.py file itself, or the code won't know what that item is when it sees it in the list, which causes it to crash.
For example, removing Epaminondas means finding the "rings" and "rings2" lists and removing the "Epaminondas_Ring" from them. You could also just search for "Epami" and remove the two instances that are not defining the stats.
Code
# The ring stats are defined here. Leave this line alone.
Epaminondas_Ring = {"Name": "Epaminondas's Ring", "Weapon Skill Damage":5, "Store TP":-10,"Jobs":all_jobs}
# Lists containing all of the rings that the code sees in each ring slot (delete the ring name from these lists):
rings = [Ragelise_ring,Medada_ring,Lehko_Habhoka_ring,Gurebu_ring,Fickblix_ring,Ephramad_ring,Cornelia_ring,Vocane_Ring, Mallquis_Ring,Beithir_Ring0,Moonlight_Ring1,Moonlight_Ring2,Chirich_Ring2,Gelatinous_Ring,Defending_Ring,Karieyh_Ring,Garuda_Ring1,Titan_Ring1,Carbuncle_Ring1,Ifrit_Ring1,Fenrir_Ring1,Cacoethic_Ring,Ramuh_Ring1,Ayanmo_Ring,Apate_Ring,Archon_Ring,Begrudging_Ring,Beithir_Ring30,Beithir_Ring25,Beithir_Ring20,Beithir_Ring15,Chirich_Ring,Crepuscular_Ring,Dingir_Ring,Epaminondas_Ring,Epona_Ring,Flamma_Ring,Gere_Ring,Hetairoi_Ring,Ilabrat_Ring,Locus_Ring,Metamorph_Ring,Mujin_Band,Mummu_Ring,Niqmaddu_Ring,Petrov_Ring,Regal_Ring,Rufescent_Ring,Shiva_Ring1,Shukuyu_Ring,Sroda_Ring,Weatherspoon_Ring,Freke_Ring,]
rings2 = [Ragelise_ring,Medada_ring,Lehko_Habhoka_ring,Gurebu_ring,Fickblix_ring,Ephramad_ring,Cornelia_ring,Vocane_Ring, Mallquis_Ring,Beithir_Ring0,Moonlight_Ring1,Moonlight_Ring2,Chirich_Ring2,Gelatinous_Ring,Defending_Ring,Karieyh_Ring,Garuda_Ring1,Titan_Ring1,Carbuncle_Ring1,Ifrit_Ring1,Fenrir_Ring1,Cacoethic_Ring,Ramuh_Ring1,Ayanmo_Ring,Apate_Ring,Archon_Ring,Begrudging_Ring,Beithir_Ring30,Beithir_Ring25,Beithir_Ring20,Beithir_Ring15,Chirich_Ring,Crepuscular_Ring,Dingir_Ring,Epaminondas_Ring,Epona_Ring,Flamma_Ring,Gere_Ring,Hetairoi_Ring,Ilabrat_Ring,Locus_Ring,Metamorph_Ring,Mujin_Band,Mummu_Ring,Niqmaddu_Ring,Petrov_Ring,Regal_Ring,Rufescent_Ring,Shiva_Ring1,Shukuyu_Ring,Sroda_Ring,Weatherspoon_Ring,Freke_Ring,]
[+]
サーバ: Cerberus
Game: FFXI
Posts: 1809
By Cerberus.Shadowmeld 2023-09-14 09:10:15
How weird is it that for seraph blade, it's saying my best neck option for RDM crocea is Fotia Gorget instead of say Baeytl Pendant or Duelist's Torque +2?
By Izanami 2023-09-14 09:25:31
Cerberus.Shadowmeld said: »How weird is it that for seraph blade, it's saying my best neck option for RDM crocea is Fotia Gorget instead of say Baeytl Pendant or Duelist's Torque +2?
Seraph Blade has low FTP at low TP values, so it depends on how much TP you have when using Seraph Blade.
At 1000 TP, Fotia is worth +8.7% damage by itself, and at 1250 TP (1000 plus Moonshade), Fotia is worth +6.5% damage by itself. These are large increases for a single slot. At 2250 TP (1000 with Thibron and Moonshade), Fotia is worth "only" +3.3% damage.
Realistically, you should also consider magic accuracy for magic damage sets. The code assumes 100% magic hit rate unless you specify some enemy magic evasion. I have no idea what magic evasion value to use for enemies, which is why I leave it as 0 by default in the code. But ~800 magic evasion seems like a reasonable value and JSE+2 with 4/5 Empy+3 pulls ahead in this case.
I recommend using JSE+2 if fighting decently high-level enemies since it is a good damage option (about 2.5% behind Fotia at 1300 effective TP) and it has a lot of magic accuracy. If you're also using Thibron TP Bonus off-hand, then fotia will not win anyway.
サーバ: Cerberus
Game: FFXI
Posts: 1809
By Cerberus.Shadowmeld 2023-09-14 09:34:59
I left the default 1500 1800 WS window. It was just weird to me.
By drakefs 2023-09-14 10:36:32
I cannot find where the elemental bonus of the Crocea Mors is being applied in the code. I am trying to add the Vitiation Sword.
サーバ: Cerberus
Game: FFXI
Posts: 1809
By Cerberus.Shadowmeld 2023-09-14 11:00:25
I cannot find where the elemental bonus of the Crocea Mors is being applied in the code. I am trying to add the Vitiation Sword.
I see this on line 758-759 of the wsdist.py file, but I have no idea how actually applies the 100% bonus.
Code
crocea = True if gearset.gear["main"]["Name2"] == "Crocea Mors R25C" else False
magical_damage = int(((152 + int((weapon_level-99)*2.45)+wsc)*ftp)*(1+crocea) + ws_dINT + player_magic_damage)
Edit: meant 100% WS damage
[+]
By Izanami 2023-09-14 11:12:28
I cannot find where the elemental bonus of the Crocea Mors is being applied in the code. I am trying to add the Vitiation Sword.
I haven't added Enspells yet actually. Line 1552 of actions.py adds the +100% elemental WS damage, though. This is the same as line 758 in the old wsdist.py in the original GUI.
I'll try to redo how Crocea is handled later today by adding two new stats with names like "Enspell Damage" and "Elemental WS Damage". This will allow me to properly handle EnSpells with the DPS simulation and let users easily copy/paste Crocea in the gear.py file and just change the numbers for Vitiation.
Cerberus.Shadowmeld said: »I see this on line 758-759 of the wsdist.py file, but I have no idea how actually applies the 100% bonus.
In the code, the variable "crocea" is just True or False (1 or 0) if the user is or is not using an item named "Crocea Mors R25C" in the main-hand slot. The damage calculation uses a (1+crocea) multiplier, which is (1+1)=2 if crocea is equipped, or (1+0)=1 if crocea is not equipped.
[+]
サーバ: Cerberus
Game: FFXI
Posts: 1809
By Cerberus.Shadowmeld 2023-09-14 11:26:50
I cannot find where the elemental bonus of the Crocea Mors is being applied in the code. I am trying to add the Vitiation Sword.
I haven't added Enspells yet actually. Line 1552 of actions.py adds the +100% elemental WS damage, though. This is the same as line 758 in the old wsdist.py in the original GUI.
I'll try to redo how Crocea is handled later today by adding two new stats with names like "Enspell Damage" and "Elemental WS Damage". This will allow me to properly handle EnSpells with the DPS simulation and let users easily copy/paste Crocea in the gear.py file and just change the numbers for Vitiation.
Cerberus.Shadowmeld said: »I see this on line 758-759 of the wsdist.py file, but I have no idea how actually applies the 100% bonus.
In the code, the variable "crocea" is just True or False (1 or 0) if the user is or is not using an item named "Crocea Mors R25C" in the main-hand slot. The damage calculation uses a (1+crocea) multiplier, which is (1+1)=2 if crocea is equipped, or (1+0)=1 if crocea is not equipped.
That makes sense. I am not very familiar with python, so didn't know that.
|
|