pyfa-org / Pyfa

Python fitting assistant, cross-platform fitting tool for EVE Online
GNU General Public License v3.0
1.61k stars 409 forks source link

[Request] Allow the Reactive Armor Hardner to have its resist phasing manually set #2244

Open Gennel opened 4 years ago

Gennel commented 4 years ago

Currently the reactive armor hardener can only be phased by incoming damage types automatically.

A system similar to the mutaplastid interface to manually force a phasing would be amazing.

blitzmann commented 4 years ago

For reference, here's the implementation of the RAH effect as of right now: https://gist.github.com/blitzmann/7ae5d19e2d1a42b34cb6754bacb585b2

@Gennel , it's been a hot minute since I looked at the RAH code, and the bulk of it was actually written by a contributor back in the day. I may be a bit fuzzy on the details of how it's implemented.

From what I understand you wish to have a system where you give it incoming em/therm/kin/exp damage manually. There is a work around for this from what I remember: if you set up a damage pattern, you can then select it here: image

This will give you the ability to manually adjust the damage pattern to match what you're looking for.

The caveats of it would be:

We could decouple the RAH from the incoming damage profile to allow folks to use a different set of values specifically for the RAH... but then I wonder if that would cause confusion. Say that you set the RAH to something that's not the incoming damage pattern and forget. Well, not the RAH is calculating things based on something that is different than the rest of the incoming damage.

I like the idea, but at the same time I don't like the idea. I feel like a better solution would be to somehow give you the ability to simply change the incoming pattern manually and immediately (kind of like temp values that are applied and go away unless they are saved) without having to open the pattern editor.

Gennel commented 4 years ago

Ya I'm looking to have it not keyed to the incoming damage but ether its neutral setting or somewhere along the way.

The solution EFT used back in the day was having two selectable mods one was automatic the other was manual.

I was hoping a system closer to the mutaplastid where you select the base mode on the fit then in a right click menu convert it to a manual one.

blitzmann commented 4 years ago

I think I understand. So, the current RAH will do a simulation to attempt to lock on to whatever it will eventually end up with, and adjust the overall resits based on that. But you're wanting to manually enter them. So instead of 20%/40%/0/0 (the end result), you want to set this to something completely outside the norm?

I guess my next question would be why? Simply curious what your use case is for that.

It's something we could do, but would take some work. Specifically, we would need schema built out for it in the database, which is kind of a huge PITA, but doable. Just want to better understand your needs on this.

Also, can you give me like a small example of what you might enter and what you would expect to happen with the resists, just for clarity's sake?

Gennel commented 4 years ago

The First and biggest thing is seeing the effects of the mod in the neutral 15/15/15/15 state on the ships EHP.

Then after the alpha strike seeing what the ships resists would be on a 1-2 shift RAH array would be great for smaller fights where ships live threw the first shot but might die on the second or third shot.

Lastly a Rapidly shifting incoming damage type can be the death of RAH users. Being able to see what your resists are vs off damage types can be highly valuable.

Example: My RAH ships EHP vs OMNI wile the RAH is in its neutral state is 100. The incoming damage is KIN THERM so I set the RAH to 7.5/22.5/22.5/7.5 to simulate the first shift giving it an EHP of 110 vs kin/thermal. But the ship takes EM damage from another source after the first shift so I switch the EHP calculation from kin/thermal to EM where we now have 90 EHP. Then to calculate the EHP vs Kintherm after the second shift which pushed us to EM tank, I set the RAH to 22.5/17.5/17.5/2.5 giving me 102 EHP vs kin/therm.

Something that can cause that scenario in-game would be getting shot by a railgun then EM bombed followed by getting shot by a railgun again with a RAH cycle between each hit.

blitzmann commented 4 years ago

Thanks for the info! Was helpful to understand.

15/15/15/15 for omni incoming damage is already doable in the settings. Preferences > Fitting Engine image

But other than that, yeah, everything is automated and not really tweakable unless you tweak the incoming damage.

Like I said, it's possible to do manual enforce manual values, but there's some work involved with it. Can't commit to it right now as both @DarkFenX and myself are pretty busy IRL atm.

As a slightly more advanced feature idea, I also wonder if this might be a good application for a graph. @DarkFenX you overhauled the graphs a while back, how feasible do you think that would be? A line chart with four lines representing resists RAH, x-axis being time / RAH cycle, and maybe another line representing EHP at that point of time. Would probably require an overhaul of the RAH effect code to save it's simulated values somewhere that the graph can access them. But that would show you, overtime, where these values come from.

In the future we may also be able to support injecting different damage patterns at certain cycles. That would support your use-case of a sudden change of incoming damage in the middle of a fight. But that comes with it's own complications, changing overall damage type would maybe require a full fit recalc and not just a RAH simulation, so that the other resists of the ship are taken into consideration when calculating the EHP of the new incoming damage type.