Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add abyss / invasion damage and resist profiles #2067

Closed
DarkFenX opened this issue Oct 29, 2019 · 34 comments
Closed

Add abyss / invasion damage and resist profiles #2067

DarkFenX opened this issue Oct 29, 2019 · 34 comments
Labels
done This task is done! \o/ enhancement This is a feature request, or an idea to enhancement a current feature

Comments

@DarkFenX
Copy link
Member

According to russian forums, stats of these rats are now exposed to the client. Fuzzwork makes use of them: https://www.fuzzwork.co.uk/info/?typeid=52183

Lists of ships might be available per group, at least for invasion NPC ships: https://zkillboard.com/group/4028/

@DarkFenX DarkFenX added enhancement This is a feature request, or an idea to enhancement a current feature help wanted Looking for a pet project, or something to sink your teeth into? Check out our "help wanted" issues! labels Oct 29, 2019
@Neugeniko
Copy link
Contributor

I got a sheet where i display damage profiles for invasion ships and a bunch of invasion info that may help. the profiles are for half spooled up turrets.
https://docs.google.com/spreadsheets/d/1Nj_SlLzc8Rz4iW7iSqZ4ZZMgr1w0FkOYb3SS-BwQVSA/edit?usp=sharing

@DarkFenX
Copy link
Member Author

DarkFenX commented Dec 4, 2019

Oh, so they spool up... maybe we could add 0%, 50%, and 100% spool up then? Or such detailed info not available?

To be fair, adding this info is trivial: https://github.com/pyfa-org/Pyfa/blob/master/eos/db/saveddata/loadDefaultDatabaseValues.py#L96

If someone else could do it for Pyfa and submit PR or modified file - i would be grateful. I'd rather keep working on some features which are still WIP and struggle to be released due to limited time on my side.

@Neugeniko
Copy link
Contributor

How would u like me to calculate the profile? Take the average profile of all npc in a group?

So I just fill in this?

["[NPC][Invasion] Invading Precursor Entities (0% Spool-up)", x.xx, x.xx, x.x, x.xx],
["[NPC][Invasion] Invading Precursor Entities (50% Spool-up)", x.xx, x.xx, x.x, x.xx],
["[NPC][Invasion] Invading Precursor Entities (100% Spool-up)", x.xx, x.xx, x.x, x.xx],
["[NPC][Invasion] Retaliating Amarr Entities", x.xx, x.xx, x.x, x.xx],
["[NPC][Invasion] Retaliating Caldari Entities", x.xx, x.xx, x.x, x.xx],
["[NPC][Invasion] Retaliating Gallente Entities", x.xx, x.xx, x.x, x.xx],
["[NPC][Invasion] Retaliating Minmatar Entities", x.xx, x.xx, x.x, x.xx],

@DarkFenX
Copy link
Member Author

DarkFenX commented Dec 4, 2019

How would u like me to calculate the profile? Take the average profile of all npc in a group?

It's entirely up to you. I have never run these sites, so have no understanding on how people would use the info.

Regarding format - yes, fairly close, just without space after last closing square bracket.

But I think I will have to rework some code to avoid making NPC menu huge. Currently it nests 1 level (just [NPC] creates submenu, then dumps every child entry into it), but i think i will change it so that all entries in square brackets create submenus, so keep it in mind when building the list. For example, alternative to your format would be:

["[NPC][Invasion][Invading Precursor Entities]0% spool up", x.xx, x.xx, x.x, x.xx],
["[NPC][Invasion][Invading Precursor Entities]50% spool up", x.xx, x.xx, x.x, x.xx],
["[NPC][Invasion][Invading Precursor Entities]100% spool up", x.xx, x.xx, x.x, x.xx],
["[NPC][Invasion]Retaliating Amarr Entities", x.xx, x.xx, x.x, x.xx],
["[NPC][Invasion]Retaliating Caldari Entities", x.xx, x.xx, x.x, x.xx],
["[NPC][Invasion]Retaliating Gallente Entities", x.xx, x.xx, x.x, x.xx],
["[NPC][Invasion]Retaliating Minmatar Entities", x.xx, x.xx, x.x, x.xx],

It would create NPC submenu, then Invasion submenu, then Invading Precursos Entities submenu, and there three entries with 0-50-100% spoolup.

@DarkFenX
Copy link
Member Author

DarkFenX commented Dec 4, 2019

In scope of this issue I will also get rid of this dumb legacy system where to update profiles you have to reimport them.

@Neugeniko
Copy link
Contributor

Done. If anyone complains about the profile tell em to see me ><. Add this to the damageProfileList.

["[NPC][Invasion][Invading Precursor Entities]0% spool up", 31, 29, 24, 16],
["[NPC][Invasion][Invading Precursor Entities]50% spool up", 29, 37, 15, 19],
["[NPC][Invasion][Invading Precursor Entities]100% spool up", 28, 41, 11, 20],
["[NPC][Invasion]Retaliating Amarr Entities", 58, 42, 0, 0],
["[NPC][Invasion]Retaliating Caldari Entities", 30, 43, 2, 25],
["[NPC][Invasion]Retaliating Gallente Entities", 0, 42, 58, 0],
["[NPC][Invasion]Retaliating Minmatar Entities", 17, 8, 44, 31],

And this to targetProfileList

["[NPC][Invasion]Invading Precursor Entities", 0.46, 0.39, 0.48, 0.42],
["[NPC][Invasion]Retaliating Amarr Entities", 0.36, 0.31, 0.44, 0.60],
["[NPC][Invasion]Retaliating Caldari Entities", 0.28, 0.61, 0.48, 0.39],
["[NPC][Invasion]Retaliating Gallente Entities", 0.36, 0.39, 0.56, 0.50],
["[NPC][Invasion]Retaliating Minmatar Entities", 0.62, 0.42, 0.35, 0.40],




@DarkFenX
Copy link
Member Author

DarkFenX commented Dec 6, 2019

I reworked backend to have two changes:

  • all context menus related to incoming damage profiles and target resists/target profiles are now multi-level. So far every entry in [] will result in level, but I will add a way to escape it with backslash, so that actual names can also have square brackets.
  • now pyfa doesn't store builtin incoming damage profiles and target profiles in database, but hardcodes them in the app itself. It has two consequences: 1) users are unable to edit default profiles now (but they can call them the same and user profile will take priority in menus) 2) whenever we update builtin profiles, users will receive them without clicking "reimport database defaults" in preferences (this button is now gone as well).

Branch is called pattern_builtins, will make pull request with all the changes later.

@DarkFenX
Copy link
Member Author

DarkFenX commented Dec 6, 2019

Added info in 0063d29.

Going to merge this branch. Menus might be funky under linux/wayland for some reason I am yet to investigate. Also did not test under windows, will do on monday.

@DarkFenX DarkFenX added done This task is done! \o/ and removed help wanted Looking for a pet project, or something to sink your teeth into? Check out our "help wanted" issues! labels Dec 6, 2019
@DarkFenX DarkFenX closed this as completed Dec 6, 2019
@DarkFenX
Copy link
Member Author

DarkFenX commented Dec 7, 2019

Tested under windows, seems to work fine. The issue on wayland is most likely due to incorrectly set menu parent in some cases (in Windows parent is set differently).

@Neugeniko
Copy link
Contributor

Notes on how there figures were calculated.
The damage profiles were calculated as if you were taking dps from the entire 'groupname' (Invading Precursor Entities, Retaliating etc...)
For the target profiles I selected a common target (typeid) as the representative resist
profile.

Invading Precursor Entities, type id 52183 (Liminal Vedmak)
Retaliating Amarr Entities, type id 52964 (Imperial Navy Revelation)
Retaliating Caldari Entities, type id 52965 (State Navy Phoenix)
Retaliating Gallente Entities, type id 52966 (Federal Navy Moros)
Retaliating Minmatar Entities, type id 52967 (Republic Fleet Naglfar)

Do you think I should recalculate the target profiles to be, as if you were attacking the whole group?...ie for em resistance = 1 - sum(hp of all layers of all ships in group)/sum(ehp against em of all layers of all ships in group). This could provide a consistent method going forward
.

@Neugeniko
Copy link
Contributor

I've bit the bullet and re did the target profiles. I will put in a pull request once i work out how to do it again.

Going forward ill do everything like this.

The damage profiles will be calculated as if you were taking dps from the entire 'groupname' (Invading Precursor Entities, Retaliating etc...) and normalized to a sum of 1000.

The target profiles as if you were attacking the entire 'group name' and will be to 3 significant figures.

@Neugeniko
Copy link
Contributor

Also abyss profiles need to be done. But not sure how to do this properly because there is 13 resistance/hp based environment effects that effect npcs and 6 rough groups of npcs = 78 target profiles, ppl will want the rough npc groups due to a desire to ammo swap optimally. 6 damage profiles. You cant have abyssal environment effects effect target profiles because u need to know the hp and resistance of each layer for that to work. I have a spreadsheet to calculate most things already it justs a bit of work, maybe closer to next weekend.

@DarkFenX
Copy link
Member Author

DarkFenX commented Dec 9, 2019

The damage profiles were calculated as if you were taking dps from the entire 'groupname' (Invading Precursor Entities, Retaliating etc...)

From my perspective, there are several questions to this approach.

  • How did you aggregate damage of whole group? Did you just sum their DPS' and then normalized to 1000? Or did you compose proportions of all NPCs and then averaged them out? Those two result in different profiles.
  • If profile of different NPC stats is different, you can opt for several ways to show them:
    • Show damage/resist profile for every NPC type separately (sometimes it might make sense to expose the same NPC as several entries if it has several weapon types, i.e. in cases you can dodge the guns but cannot dodge the missiles)
    • Group up NPCs which have the same or very similar profiles, give some sensible names to groups and list them along with separate NPCs which cannot be joined into those groups
    • Calculate averages per site/room and expose them per site/room type

Regarding abyssal NPCs - I think it's better to create separate ticket for that.

@Neugeniko
Copy link
Contributor

I summed up each of their em,therm,kin,exp dps for each groupname(Invading Precursor Entities, Retaliating etc...) for invasion npcs. Showing for every npc seperately would make the list too big i think and average per rooms/spawn is too variable for abyss and invasion content. So the 'Group up NPCs which have the same or very similar profiles, give some sensible names to groups and list them along with separate NPCs which cannot be joined into those groups' is the best option for invasion/abyss content. Forget the invasion profiles for now Ill have to redo.

@Neugeniko
Copy link
Contributor

For target profiles i summed up the em therm etc ehp and worked out the resists from there. all ships in the groupname have very similar target profiles so they should be ok.

@DarkFenX
Copy link
Member Author

Ok, thanks for your effort! I will shelve your pull request for now. Update it with changes when you have them ready and post here. Will reopen ticket for now.

@DarkFenX DarkFenX reopened this Dec 12, 2019
@DarkFenX DarkFenX removed the done This task is done! \o/ label Dec 12, 2019
@DarkFenX
Copy link
Member Author

Also, just realized that abyss NPCs are actually part of this issue... so maybe better to have them here. But the same principles should apply to the abyss rats.

@Neugeniko
Copy link
Contributor

Looks like ccp is still fixing inconsistancys in npcs damage profiles for invasions, which they fixed wrong anyway. ill bug report it and the inconsistancy with some npcs resist profiles.

@DarkFenX
Copy link
Member Author

@Neugeniko, how is it going? If you think it will take long time to do it "properly", can we take some version of profiles as acceptable for now? Will it be what we have in master, or what's in your pull request?

@Neugeniko
Copy link
Contributor

I will put on a new pull request. So far ive done a little different grouping and it should be ok to use.

@DarkFenX
Copy link
Member Author

Thanks! I am curious how you generated those stats - just manual work? Could you describe any details so that it can be redone later, if CCP changes rat stats?

@Neugeniko
Copy link
Contributor

Do you have a google account so I can share the spreadsheets use to calculate the profiles?

@DarkFenX
Copy link
Member Author

Yes. fluorescent.flux gmail.

@DarkFenX DarkFenX added the done This task is done! \o/ label Dec 29, 2019
@Neugeniko
Copy link
Contributor

Ok ive shared the two sheets, Abyssal and Invasion. Relavent calculations are at the bottom of the 'Enemy DPS, Tank & EW Summary' subsheets, you will need to scroll across to see all. The Raw Enemy Stats and Raw Missile Stats subsheets are the data that needs to be imported and formatted if npc stats change.

@DarkFenX
Copy link
Member Author

Do not see them. Maybe i should've been more clear - fluorescent.flux@gmail.com.

@Neugeniko
Copy link
Contributor

Ive sent you notifications the link should be there. It is currently comment only.

@Neugeniko
Copy link
Contributor

I would really like to get the spreadsheets coding into a program/website, maybe even a npc target browser in pyfa or something.

@DarkFenX
Copy link
Member Author

DarkFenX commented Dec 29, 2019

I will check the spreadsheets in details a bit later. They are quite complex and I do not have that much time during vacation preps.

As for pyfa support - I guess pyfa already supports target profiles in graphs window. Will it be sufficient? You would need to fill 2-3 extra fields on top of resists.

Damage patterns would be quite different. I imagine we could add "attacker profiles" and add them to the graph's window left list (much like target profiles could be added to the right list), it should be doable, but needs some coding.

@Neugeniko
Copy link
Contributor

Also doing a little testing with the new master, shows that builtin damage profiles id are being saved to saveddata.db fits table, but are never being loaded after restarting pyfa .

@DarkFenX
Copy link
Member Author

This has always been like that (except for there were no builtin profiles, it was just with regular profiles). And i am unsure if it needs to be changed. I added support of saving builtin IDs for consistency with normal profile system.

@Neugeniko
Copy link
Contributor

Testing normal profiles, they are being loaded after a pyfa restart.

@Neugeniko
Copy link
Contributor

Also I had problems deleting custom profiles that were the same name as built in profiles.

@Neugeniko
Copy link
Contributor

Im having problems reproducing this last problem.

@DarkFenX
Copy link
Member Author

DarkFenX commented Dec 29, 2019

Testing normal profiles, they are being loaded after a pyfa restart.

ok, will look into it

Also I had problems deleting custom profiles that were the same name as built in profiles.

Will look into it too. Could you give some example of such name?

How I handled migration from pyfa side:

  • all profiles in user DB which had names exactly like old builtin profiles were removed
  • new builtin profiles are stored in pyfa code
  • fit refers to builtin profiles via separate attribute (separate from user-defined profiles)
  • there are "general" fit methods which handle both user and builtin profiles (both reading/writing)

Theoretically pyfa should be using those methods everywhere. Maybe it does not and it leads to built-in profiles being not saved.

Also, if they will be saved, in future (after the next release) we should not alter builtin profile IDs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
done This task is done! \o/ enhancement This is a feature request, or an idea to enhancement a current feature
Projects
None yet
Development

No branches or pull requests

2 participants