Difference between revisions of "User:Cassiel Seraphim/ESI"

From EVE University Wiki
Jump to: navigation, search
m (Update {{TOClimit}} to {TOC|limit=}}.)
 
(9 intermediate revisions by 2 users not shown)
Line 1: Line 1:
This is just a page to help me document how to decipher the data available from CCP through the [https://esi.evetech.net/ui/ EVE Swagger Interface (ESI)], for example output for an [https://esi.evetech.net/latest/universe/types/52213/?datasource=tranquility&language=en-us Anchoring Kikimora] with specific focus to the ''dogma''-attributes.
+
The '''EVE Swagger Interface (ESI)''' is a public [https://en.wikipedia.org/wiki/Application_programming_interface Application Programming Interface (API)] that allows players and applications to pull data about various things in EVE. This article focuses on the [https://eveonline-third-party-documentation.readthedocs.io/en/latest/dogma/intro.html Dogma]-attributes for NPC stats, such as which EWAR-capabilities they have, their damage output, resists and effective hit points, speeds, orbit ranges and all the other intricate little details that helps us know our enemy and perfect our fits.
== Warp disruption and warp scrambling ==
+
 
{| class="wikitable" style="text-font:left;"
+
{{note|For more general information and other uses of ESI, see the [[EVE Swagger Interface]] page.}}
! style="background-color:#222222; text-align:left;" | AttributeID
+
{{TOC|limit=2}}
! style="background-color:#222222; text-align:left;" | AttributeName
+
= Working with EVE Swagger Interface (ESI) =
! style="background-color:#222222; text-align:left;" | Description
+
You can manually or through scripts pull information directly from CCP's servers with the following URL:
! style="background-color:#222222; text-align:left;" | CategoryName
+
{{code|https://esi.evetech.net/latest/universe/types/{{co|coral|52213}}/?datasource={{co|coral|tranquility}}&language={{co|coral|en-us}}}}
! style="background-color:#222222; color:wheat; text-align:left;" | My notes
+
 
|-
+
This would pull up the data of a specific NPC based off of the {{co|coral|typeID}}, in this case the [https://esi.evetech.net/latest/universe/types/52213/?datasource=tranquility&language=en-us Anchoring Kikimora]. You can adjust this information to pull data from the testserver with the {{co|coral|datasource}} or change the {{co|coral|language}} parameters for localization. See their own [https://esi.evetech.net/ui/ user interface] page for more information about the specific parameters and which languages are supported.
| 2506
 
| behaviorWarpScrambleDuration
 
|
 
| Behavior Attributes
 
| {{co|violet|New AI}} - Duration in miliseconds.
 
|-
 
| 2507
 
| behaviorWarpScrambleRange
 
|
 
| Behavior Attributes
 
| {{co|violet|New AI}} - Range in meters.
 
|-
 
| 2508
 
| behaviorWarpScrambleDischarge
 
|
 
| Behavior Attributes
 
| {{co|violet|New AI}} - Cap usage in GJ.
 
|-
 
| 2509
 
| behaviorWarpScrambleStrength
 
|
 
| Behavior Attributes
 
| {{co|violet|New AI}} - Warp scramble strength (so far always a real scram).
 
|-
 
| 103
 
| warpScrambleRange
 
| Maximum range objects can be warp scrambled from.
 
| EW - Warp Scrambling
 
| {{co|slateblue|Old AI}} - Range in meters.
 
|-
 
| 105
 
| warpScrambleStrength
 
| Amount to modify ships warp scramble status by.
 
| EW - Warp Scrambling
 
| {{co|slateblue|Old AI}} - Warp disrupt/scramble strength.
 
|-
 
| 504
 
| entityWarpScrambleChance
 
| Chance of entity warp scrambling it's target.
 
| EW - Warp Scrambling
 
| {{co|slateblue|Old AI}} - Some NPCs don't warp disrupt/scram every cycle.
 
|-
 
| 505
 
| warpScrambleDuration
 
| Duration
 
| EW - Warp Scrambling
 
| {{co|slateblue|Old AI}} - Duration in miliseconds (can be null).
 
|-
 
| 1350
 
| activationBlockedStrenght
 
|
 
| EW - Warp Scrambling
 
| {{co|slateblue|Old AI}} - Denotes warp scrambling effect (instead of just disruption).
 
|}
 
==== Distinguishing between a warp disruptor and a warp scrambler ====
 
In the good old day no NPC actually warp scrambled (shuts down microjump- and microwarpdrives), they all just warp disrupted at various strengths. With the introduction of the [[Burner Mission|Burner missions]] (2014), followed by diamond ♦-named NPCs and [[Forward Operating Base]]s (2017) as well as [[Triglavian Invasion]]s (2019) this changed. There are now two things to check to see if an NPC uses normal warp disruption or actual warp scrambling:
 
  
* {{co|slateblue|Old AI}} - An actual warp scrambler will have the attribute {{co|slateblue|1350}} (activationBlockedStrenght) set to 1.
+
For more serious work, you're often required to either build up a database of your own or download the [https://developers.eveonline.com/resource/resources Static Data Export (SDE)], alternatively work with spreadsheets. That way you can more easily manipulate and present the data in various ways, or just simply make it more readable with the elaborated attribute names and descriptions.
* {{co|violet|New AI}}  - All NPCs with the behavior-attribute of {{co|violet|2509}} (behaviorWarpScrambleStrength) use actual warp scramblers.
 
  
==== Consolidating and sanity checks ====
+
There are various sites that already do this, most notably [https://everef.net/ EVE Ref] (which has a convenient name-search function too), which is perfect for people who have no interest or don't feel the need to write their own program but would like to see the information. They also seem to be working on presenting the information in a more readily accessible manner too with grouped info-boxes, but haven't quite finished that. For example you don't see all the EWAR-capabilities that way and so far only turret damage is info-boxed leaving missile damage in the long list of attributes (which can be easy to miss).
So far there doesn't seem to be an overlap of identical types of data between the old and new AI, if it's a newer NPC using the new behavior-attributes it doesn't have the equivalent old attributes. This means that you can use things like coalesce in sql, or similar functions, because they will never both be set to non-null values for a single entity. There will also be entries with only some of the warp disrupt attributes, like the '''Renyn Meten''' that has a warp disrupt chance value in attribute 504 but no other attributes so it cannot actually warp disrupt.
 
  
* {{co|lightgreen|Warp scramble range}} is either attribute {{co|slateblue|103}} (old) or {{co|violet|2507}} (new).
+
== Attribute categories ==
* {{co|lightgreen|Warp scramble strength}} is either attribute {{co|slateblue|105}} (old) or {{co|violet|2509}} (new) and values above 1 doesn't necessarily mean it's a scram.
+
There's currently no endpoint to pull this data directly from ESI, so you'll either have to look it up and add it yourself to your sheets or get it from CCP's [https://developers.eveonline.com/resource/resources SDE] if you're using a database.
* {{co|lightgreen|Warp scramble duration}} is either attribute {{co|slateblue|505}} (old) or {{co|violet|2506}} (new) but can also be null.
 
* {{co|lightgreen|Warp scramble chance}} is attribute {{co|slateblue|504}} (old) or {{co|violet|null}} (new) and if '''null''' should be treated as 1 (100% chance).
 
* {{co|lightgreen|Warp scramble discharge}} is attribute {{co|violet|2508}} (new) but will be {{co|slateblue|null}} for old AI (doesn't simulate cap usage).
 
* {{co|lightgreen|Warp scrambling effect}} is true if either {{co|slateblue|1350}} (old) or {{co|violet|2509}} (new) is not null.
 
  
If you're writing a function or script to check for warp disruption capabilities, it's best to double-check that you have entries for both {{co|lightgreen|warp scramble strength}} and {{co|lightgreen|range}} (they should all have at least those two entries if they actually have warp disrupt capabilities), then if they do also adjust the {{co|lightgreen|warp scramble chance}} to 1 if it's null and check to see if it's the effect is that of a '''warp disruptor''' or a '''warp scrambler'''. The existence of {{co|lightgreen|warp scramble duration}} and {{co|lightgreen|discharge}} will then vary.
 
= Attribute categories =
 
 
Most attributes fall into a certain category for easy grouping. In theory, very useful, but sadly the new behavior-attributes are all lumped up into one and won't show up in the various EWAR-categories like the old attributes did and on top of that there's the odd stat that ends up under ''"Miscellaneous"'' or something. So while they help a little, it's always best to go through all attributes to make sure you're not missing an important attribute that isn't labelled correctly.
 
Most attributes fall into a certain category for easy grouping. In theory, very useful, but sadly the new behavior-attributes are all lumped up into one and won't show up in the various EWAR-categories like the old attributes did and on top of that there's the odd stat that ends up under ''"Miscellaneous"'' or something. So while they help a little, it's always best to go through all attributes to make sure you're not missing an important attribute that isn't labelled correctly.
  
 
Click the {{button|show}}-button to expand the list and show all the categories.
 
Click the {{button|show}}-button to expand the list and show all the categories.
 
{| class="wikitable collapsible collapsed" style="text-font:left;"
 
{| class="wikitable collapsible collapsed" style="text-font:left;"
! style="background-color:#222222; text-align:left;" | CategoryID 
+
! style="background-color:#222222; text-align:left;" | CategoryID
 
! style="background-color:#222222; text-align:left;" | CategoryName
 
! style="background-color:#222222; text-align:left;" | CategoryName
 
! style="background-color:#222222; text-align:left;" | CategoryDescription
 
! style="background-color:#222222; text-align:left;" | CategoryDescription
Line 159: Line 95:
 
|-
 
|-
 
|}
 
|}
 +
 +
= Examples =
 +
A lot of the information is pretty straight forward, but other times it's not immediately obvious if a value is supposed to be used straight up or manipulated into a proper modifier. For example, values for resists are shown as how much damage they take, like 0.3, so to convert that into what we commonly refer to as resists we'd have to take 1 - 0.3 = 0.7 so a 70% resists.
 +
 +
There are also various old data that hasn't been cleaned up, where it seems like a developer simply removed one or two attributes among many for a specific ability to disable it, leaving the rest to clutter up the code. This in combination with some attributes being optional, makes it a bit tricky sometimes to know, at first glance, if a ship actually have the ability to do it.
 +
 +
So below is a summary of various areas that may not be as straightforward as you'd like, so you can avoid misinterpreting the data.
 +
 +
== Energy neutralizing and energy nosferatu ==
 +
{| class="wikitable" style="text-font:left;"
 +
! style="background-color:#222222; text-align:left;" | AttributeID
 +
! style="background-color:#222222; text-align:left;" | AttributeName
 +
! style="background-color:#222222; text-align:left;" | Description
 +
! style="background-color:#222222; text-align:left;" | CategoryName
 +
! style="background-color:#222222; color:wheat; text-align:left;" | My notes
 +
|-
 +
| 90
 +
| powerTransferAmount
 +
| Amount of power to transfer.
 +
| EW - Energy Neutralizing
 +
| {{co|slateblue|Old AI}} - Neutralization amount in GJ (positive).
 +
|-
 +
| 97
 +
| energyNeutralizerAmount
 +
| An amount to modify the power of the target by.
 +
| EW - Energy Neutralizing
 +
| {{co|slateblue|Old AI}} - Nosferatu amount in GJ (positive).
 +
|-
 +
| 98
 +
| energyNeutralizerRangeOptimal
 +
| Optimal Range of Energy Neutralizer
 +
| EW - Energy Neutralizing
 +
| {{co|slateblue|Old AI}} - Optimal range in meters.
 +
|-
 +
| 931
 +
| energyNeutralizerEntityChance
 +
| Chance of NPC effect to be activated each duration
 +
| EW - Energy Neutralizing
 +
| {{co|slateblue|Old AI}} - Chance per cycle in decimals (can be null).
 +
|-
 +
| 942
 +
| energyNeutralizerDuration
 +
| Duration of NPC Energy Neutralizer effect
 +
| EW - Energy Neutralizing
 +
| {{co|slateblue|Old AI}} - Duration in miliseconds.
 +
|-
 +
| 2451
 +
| energyNeutralizerSignatureResolution
 +
| Signature Resolution of Energy Neutralizer
 +
| EW - Energy Neutralizing
 +
| {{co|slateblue|Old AI}} - Resolution in meters (can be null).
 +
|-
 +
| 2452
 +
| energyNeutralizerRangeFalloff
 +
| Falloff Range of Energy Neutralizer
 +
| EW - Energy Neutralizing
 +
| {{co|slateblue|Old AI}} - Falloff in meters (can be null).
 +
|-
 +
| 2519
 +
| behaviorEnergyNeutralizerDuration
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Neutralizer duration in miliseconds.
 +
|-
 +
| 2520
 +
| behaviorEnergyNeutralizerRange
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Neutralizer optimal range in meters.
 +
|-
 +
| 2521
 +
| behaviorEnergyNeutralizerFalloff
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Neutralizer falloff in meters (can be null).
 +
|-
 +
| 2522
 +
| behaviorEnergyNeutralizerDischarge
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Neutralizer cap usage in GJ (positive).
 +
|-
 +
| 2630
 +
| behaviorEnergyNosferatuDuration
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Nosferatu duration in miliseconds.
 +
|-
 +
| 2632
 +
| behaviorEnergyNosferatuRange
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Nosferatu optimal range in meters.
 +
|-
 +
| 2631
 +
| behaviorEnergyNosferatuFalloff
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Nosferatu falloff in meters (can be null).
 +
|-
 +
| 2629
 +
| behaviorEnergyNosferatuDischarge
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Nosferatu cap cost in GJ (negative).
 +
|-
 +
|}
 +
==== Distinguishing between an energy neutralizer or energy nosferatu ====
 +
Both the old and new AI distinguish between the two:
 +
 +
* {{co|slateblue|Old AI}} - Attribute {{co|slateblue|97}} (''energyNeutralizerAmount'') shows neutralization amount and {{co|slateblue|90}} (''powerTransferAmount'') shows nosferatu amount.
 +
* {{co|violet|New AI}} - The '''behavior'''-attribute series in {{co|violet|2519 - 2522}} (''behaviorEnergyNeutralizationX'') means neutralizing and in {{co|violet|2629 - 2632}} (''behaviorEnergyNosferatuX'') means nosferatu.
 +
 +
==== Consolidation and sanity checks ====
 +
So far there doesn't seem to be an overlap of identical types of data between the old and new AI, so you can use things like coalesce in sql, or similar functions, because they will never both be set to non-null values for a single entity. In some cases, you do a triple check by picking either the old or either of the two new and exclusive attributes.
 +
 +
None of them seem to utilize attribute {{co|slateblue|2451}} (''energyNeutralizerSignatureResolution'') for signature checks, so it doesn't seem NPCs adhere to the same rules of relative size and signature resolution as players do. There are also entities with too few attributes, like the '''Blood Clone Soldier Trainer''' that only has the attribute {{co|slateblue|90}} but no other attributes so it cannot actually nos you.
 +
 +
* {{co|lightgreen|Energy neutralization optimal range}} is either attribute {{co|slateblue|98}} (old) or one of {{co|violet|2520}} or {{co|violet|2632}} (new).
 +
* {{co|lightgreen|Energy neutralization falloff range}} is either attribute {{co|slateblue|2452}} (old) or one of {{co|violet|2521}} or {{co|violet|2631}} (new) but can also be '''null'''.
 +
* {{co|lightgreen|Energy neutralization amount}} is either {{co|slateblue|97}} (''energy neutralization'') or {{co|slateblue|90}} (''energy nosferatu'').
 +
* {{co|lightgreen|Energy neutralization signature}} is attribute {{co|slateblue|2451}} (old) but can also be '''null'''.
 +
* {{co|lightgreen|Energy neutralization duration}} is either attribute {{co|slateblue|942}} (old) or one of {{co|violet|2519}} or {{co|violet|2630}} (new).
 +
* {{co|lightgreen|Energy neutralization chance}} is attribute {{co|slateblue|931}} (old) and '''null''' should be treated as 1 (100% chance) if they otherwise have at least {{co|lightgreen|amount}}, {{co|lightgreen|optimal range}} and {{co|lightgreen|duration}} values.
 +
* {{co|lightgreen|Energy neutralization discharge}} is either {{co|violet|2522}} or {{co|violet|2629}} (new) but will be {{co|slateblue|null}} for old AI (doesn't simulate cap usage).
 +
 +
If you're writing a function or script to check for energy neutralization capabilities, it's best to double-check that you have entries for {{co|lightgreen|energy neutralization amount}}, {{co|lightgreen|optimal range}} and {{co|lightgreen|duration}} (they should all have at least those three entries if they actually have neuting capabilities), then if they do also adjust the {{co|lightgreen|energy neutralization chance}} to 1 if it's null and finally check to see if it's an '''energy neutralizer''' or an '''energy nosferatu'''. The existence of {{co|lightgreen|energy neutralization falloff range}}, {{co|lightgreen|signature}} and {{co|lightgreen|discharge}} will then vary.
 +
 +
== Warp disruption and warp scrambling ==
 +
{| class="wikitable" style="text-font:left;"
 +
! style="background-color:#222222; text-align:left;" | AttributeID
 +
! style="background-color:#222222; text-align:left;" | AttributeName
 +
! style="background-color:#222222; text-align:left;" | Description
 +
! style="background-color:#222222; text-align:left;" | CategoryName
 +
! style="background-color:#222222; color:wheat; text-align:left;" | My notes
 +
|-
 +
|-
 +
| 103
 +
| warpScrambleRange
 +
| Maximum range objects can be warp scrambled from.
 +
| EW - Warp Scrambling
 +
| {{co|slateblue|Old AI}} - Range in meters.
 +
|-
 +
| 105
 +
| warpScrambleStrength
 +
| Amount to modify ships warp scramble status by.
 +
| EW - Warp Scrambling
 +
| {{co|slateblue|Old AI}} - Disrupt/scramble strength (positive).
 +
|-
 +
| 504
 +
| entityWarpScrambleChance
 +
| Chance of entity warp scrambling it's target.
 +
| EW - Warp Scrambling
 +
| {{co|slateblue|Old AI}} - Chance per cycle in decimals (can be null).
 +
|-
 +
| 505
 +
| warpScrambleDuration
 +
| Duration
 +
| EW - Warp Scrambling
 +
| {{co|slateblue|Old AI}} - Duration in miliseconds (can be null).
 +
|-
 +
| 1350
 +
| activationBlockedStrenght
 +
|
 +
| EW - Warp Scrambling
 +
| {{co|slateblue|Old AI}} - Warp scrambling effect (not disruption).
 +
|-
 +
| 2503
 +
| behaviorWarpDisruptDuration
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Disruptor duration in miliseconds.
 +
|-
 +
| 2504
 +
| behaviorWarpDisruptRange
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Disruptor range in meters.
 +
|-
 +
| 2505
 +
| behaviorWarpDisruptDischarge
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Disruptor cap usage in GJ.
 +
|-
 +
| 2510
 +
| behaviorWarpDisruptStrength
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Disruptor strength (positive).
 +
|-
 +
| 2506
 +
| behaviorWarpScrambleDuration
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Scramble uration in miliseconds.
 +
|-
 +
| 2507
 +
| behaviorWarpScrambleRange
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Scramble range in meters.
 +
|-
 +
| 2508
 +
| behaviorWarpScrambleDischarge
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Scramble cap usage in GJ.
 +
|-
 +
| 2509
 +
| behaviorWarpScrambleStrength
 +
|
 +
| Behavior Attributes
 +
| {{co|violet|New AI}} - Scramble strength (positive).
 +
|-
 +
|}
 +
==== Distinguishing between a warp disruptor and a warp scrambler ====
 +
In the good old day no NPC actually warp scrambled (shuts down microjump- and microwarpdrives), they all just warp disrupted at various strengths. With the introduction of the [[Burner Mission|Burner missions]] (2014), followed by diamond ♦-named NPCs and [[Forward Operating Base]]s (2017) as well as [[Triglavian Invasion]]s (2019) this changed. There are now two things to check to see if an NPC uses normal warp disruption or actual warp scrambling:
 +
 +
* {{co|slateblue|Old AI}} - An actual warp scrambler will have the attribute {{co|slateblue|1350}} (''activationBlockedStrenght'') set to 1.
 +
* {{co|violet|New AI}} - NPCs with '''behavior'''-attribute {{co|violet|2509}} (''behaviorWarpScrambleStrength'') use actual warp scramblers and those with {{co|violet|2510}} (''behaviorWarpDisruptStrength'') use warp disruptors.
 +
 +
==== Consolidation and sanity checks ====
 +
So far there doesn't seem to be an overlap of identical types of data between the old and new AI, so you can use things like coalesce in sql, or similar functions, because they will never both be set to non-null values for a single entity. In some cases, you do a triple check by picking either the old or either of the two new and exclusive attributes.
 +
 +
There are also entities with too few attributes, like the '''Renyn Meten''' that only has the attribute {{co|slateblue|504}} but no other attributes so it cannot actually warp disrupt.
 +
 +
* {{co|lightgreen|Warp scramble range}} is either attribute {{co|slateblue|103}} (old) or one of {{co|violet|2507}} or {{co|violet|2504}} (new).
 +
* {{co|lightgreen|Warp scramble strength}} is either attribute {{co|slateblue|105}} (old) or one of {{co|violet|2509}} or {{co|violet|2510}} (new) and values above 1 doesn't necessarily mean it's a scram.
 +
* {{co|lightgreen|Warp scramble duration}} is either attribute {{co|slateblue|505}} (old) or one of {{co|violet|2506}} or {{co|violet|2503}} (new) but can also be null.
 +
* {{co|lightgreen|Warp scramble chance}} is attribute {{co|slateblue|504}} (old) and '''null''' should be treated as 1 (100% chance) if they otherwise have at least {{co|lightgreen|strength}} and {{co|lightgreen|range}} values.
 +
* {{co|lightgreen|Warp scramble discharge}} is either attribute {{co|violet|2508}} or {{co|violet|2505}} (new) but will be {{co|slateblue|null}} for old AI (doesn't simulate cap usage).
 +
* {{co|lightgreen|Warp scrambling effect}} is true if either {{co|slateblue|1350}} (old) or {{co|violet|2509}} (new) is not null.
 +
 +
If you're writing a function or script to check for warp disruption capabilities, it's best to double-check that you have entries for both {{co|lightgreen|warp scramble strength}} and {{co|lightgreen|range}} (they should all have at least those two entries if they actually have warp disrupt capabilities), then if they do also adjust the {{co|lightgreen|warp scramble chance}} to 1 if it's null and finally check to see if it's a '''warp disruptor''' or a '''warp scrambler'''. The existence of {{co|lightgreen|warp scramble duration}} and {{co|lightgreen|discharge}} will then vary.

Latest revision as of 11:08, 13 August 2022

The EVE Swagger Interface (ESI) is a public Application Programming Interface (API) that allows players and applications to pull data about various things in EVE. This article focuses on the Dogma-attributes for NPC stats, such as which EWAR-capabilities they have, their damage output, resists and effective hit points, speeds, orbit ranges and all the other intricate little details that helps us know our enemy and perfect our fits.

Icon information square.png Note: For more general information and other uses of ESI, see the EVE Swagger Interface page.

Working with EVE Swagger Interface (ESI)

You can manually or through scripts pull information directly from CCP's servers with the following URL:

https://esi.evetech.net/latest/universe/types/52213/?datasource=tranquility&language=en-us

This would pull up the data of a specific NPC based off of the typeID, in this case the Anchoring Kikimora. You can adjust this information to pull data from the testserver with the datasource or change the language parameters for localization. See their own user interface page for more information about the specific parameters and which languages are supported.

For more serious work, you're often required to either build up a database of your own or download the Static Data Export (SDE), alternatively work with spreadsheets. That way you can more easily manipulate and present the data in various ways, or just simply make it more readable with the elaborated attribute names and descriptions.

There are various sites that already do this, most notably EVE Ref (which has a convenient name-search function too), which is perfect for people who have no interest or don't feel the need to write their own program but would like to see the information. They also seem to be working on presenting the information in a more readily accessible manner too with grouped info-boxes, but haven't quite finished that. For example you don't see all the EWAR-capabilities that way and so far only turret damage is info-boxed leaving missile damage in the long list of attributes (which can be easy to miss).

Attribute categories

There's currently no endpoint to pull this data directly from ESI, so you'll either have to look it up and add it yourself to your sheets or get it from CCP's SDE if you're using a database.

Most attributes fall into a certain category for easy grouping. In theory, very useful, but sadly the new behavior-attributes are all lumped up into one and won't show up in the various EWAR-categories like the old attributes did and on top of that there's the odd stat that ends up under "Miscellaneous" or something. So while they help a little, it's always best to go through all attributes to make sure you're not missing an important attribute that isn't labelled correctly.

Click the show-button to expand the list and show all the categories.

Examples

A lot of the information is pretty straight forward, but other times it's not immediately obvious if a value is supposed to be used straight up or manipulated into a proper modifier. For example, values for resists are shown as how much damage they take, like 0.3, so to convert that into what we commonly refer to as resists we'd have to take 1 - 0.3 = 0.7 so a 70% resists.

There are also various old data that hasn't been cleaned up, where it seems like a developer simply removed one or two attributes among many for a specific ability to disable it, leaving the rest to clutter up the code. This in combination with some attributes being optional, makes it a bit tricky sometimes to know, at first glance, if a ship actually have the ability to do it.

So below is a summary of various areas that may not be as straightforward as you'd like, so you can avoid misinterpreting the data.

Energy neutralizing and energy nosferatu

AttributeID AttributeName Description CategoryName My notes
90 powerTransferAmount Amount of power to transfer. EW - Energy Neutralizing Old AI - Neutralization amount in GJ (positive).
97 energyNeutralizerAmount An amount to modify the power of the target by. EW - Energy Neutralizing Old AI - Nosferatu amount in GJ (positive).
98 energyNeutralizerRangeOptimal Optimal Range of Energy Neutralizer EW - Energy Neutralizing Old AI - Optimal range in meters.
931 energyNeutralizerEntityChance Chance of NPC effect to be activated each duration EW - Energy Neutralizing Old AI - Chance per cycle in decimals (can be null).
942 energyNeutralizerDuration Duration of NPC Energy Neutralizer effect EW - Energy Neutralizing Old AI - Duration in miliseconds.
2451 energyNeutralizerSignatureResolution Signature Resolution of Energy Neutralizer EW - Energy Neutralizing Old AI - Resolution in meters (can be null).
2452 energyNeutralizerRangeFalloff Falloff Range of Energy Neutralizer EW - Energy Neutralizing Old AI - Falloff in meters (can be null).
2519 behaviorEnergyNeutralizerDuration Behavior Attributes New AI - Neutralizer duration in miliseconds.
2520 behaviorEnergyNeutralizerRange Behavior Attributes New AI - Neutralizer optimal range in meters.
2521 behaviorEnergyNeutralizerFalloff Behavior Attributes New AI - Neutralizer falloff in meters (can be null).
2522 behaviorEnergyNeutralizerDischarge Behavior Attributes New AI - Neutralizer cap usage in GJ (positive).
2630 behaviorEnergyNosferatuDuration Behavior Attributes New AI - Nosferatu duration in miliseconds.
2632 behaviorEnergyNosferatuRange Behavior Attributes New AI - Nosferatu optimal range in meters.
2631 behaviorEnergyNosferatuFalloff Behavior Attributes New AI - Nosferatu falloff in meters (can be null).
2629 behaviorEnergyNosferatuDischarge Behavior Attributes New AI - Nosferatu cap cost in GJ (negative).

Distinguishing between an energy neutralizer or energy nosferatu

Both the old and new AI distinguish between the two:

  • Old AI - Attribute 97 (energyNeutralizerAmount) shows neutralization amount and 90 (powerTransferAmount) shows nosferatu amount.
  • New AI - The behavior-attribute series in 2519 - 2522 (behaviorEnergyNeutralizationX) means neutralizing and in 2629 - 2632 (behaviorEnergyNosferatuX) means nosferatu.

Consolidation and sanity checks

So far there doesn't seem to be an overlap of identical types of data between the old and new AI, so you can use things like coalesce in sql, or similar functions, because they will never both be set to non-null values for a single entity. In some cases, you do a triple check by picking either the old or either of the two new and exclusive attributes.

None of them seem to utilize attribute 2451 (energyNeutralizerSignatureResolution) for signature checks, so it doesn't seem NPCs adhere to the same rules of relative size and signature resolution as players do. There are also entities with too few attributes, like the Blood Clone Soldier Trainer that only has the attribute 90 but no other attributes so it cannot actually nos you.

  • Energy neutralization optimal range is either attribute 98 (old) or one of 2520 or 2632 (new).
  • Energy neutralization falloff range is either attribute 2452 (old) or one of 2521 or 2631 (new) but can also be null.
  • Energy neutralization amount is either 97 (energy neutralization) or 90 (energy nosferatu).
  • Energy neutralization signature is attribute 2451 (old) but can also be null.
  • Energy neutralization duration is either attribute 942 (old) or one of 2519 or 2630 (new).
  • Energy neutralization chance is attribute 931 (old) and null should be treated as 1 (100% chance) if they otherwise have at least amount, optimal range and duration values.
  • Energy neutralization discharge is either 2522 or 2629 (new) but will be null for old AI (doesn't simulate cap usage).

If you're writing a function or script to check for energy neutralization capabilities, it's best to double-check that you have entries for energy neutralization amount, optimal range and duration (they should all have at least those three entries if they actually have neuting capabilities), then if they do also adjust the energy neutralization chance to 1 if it's null and finally check to see if it's an energy neutralizer or an energy nosferatu. The existence of energy neutralization falloff range, signature and discharge will then vary.

Warp disruption and warp scrambling

AttributeID AttributeName Description CategoryName My notes
103 warpScrambleRange Maximum range objects can be warp scrambled from. EW - Warp Scrambling Old AI - Range in meters.
105 warpScrambleStrength Amount to modify ships warp scramble status by. EW - Warp Scrambling Old AI - Disrupt/scramble strength (positive).
504 entityWarpScrambleChance Chance of entity warp scrambling it's target. EW - Warp Scrambling Old AI - Chance per cycle in decimals (can be null).
505 warpScrambleDuration Duration EW - Warp Scrambling Old AI - Duration in miliseconds (can be null).
1350 activationBlockedStrenght EW - Warp Scrambling Old AI - Warp scrambling effect (not disruption).
2503 behaviorWarpDisruptDuration Behavior Attributes New AI - Disruptor duration in miliseconds.
2504 behaviorWarpDisruptRange Behavior Attributes New AI - Disruptor range in meters.
2505 behaviorWarpDisruptDischarge Behavior Attributes New AI - Disruptor cap usage in GJ.
2510 behaviorWarpDisruptStrength Behavior Attributes New AI - Disruptor strength (positive).
2506 behaviorWarpScrambleDuration Behavior Attributes New AI - Scramble uration in miliseconds.
2507 behaviorWarpScrambleRange Behavior Attributes New AI - Scramble range in meters.
2508 behaviorWarpScrambleDischarge Behavior Attributes New AI - Scramble cap usage in GJ.
2509 behaviorWarpScrambleStrength Behavior Attributes New AI - Scramble strength (positive).

Distinguishing between a warp disruptor and a warp scrambler

In the good old day no NPC actually warp scrambled (shuts down microjump- and microwarpdrives), they all just warp disrupted at various strengths. With the introduction of the Burner missions (2014), followed by diamond ♦-named NPCs and Forward Operating Bases (2017) as well as Triglavian Invasions (2019) this changed. There are now two things to check to see if an NPC uses normal warp disruption or actual warp scrambling:

  • Old AI - An actual warp scrambler will have the attribute 1350 (activationBlockedStrenght) set to 1.
  • New AI - NPCs with behavior-attribute 2509 (behaviorWarpScrambleStrength) use actual warp scramblers and those with 2510 (behaviorWarpDisruptStrength) use warp disruptors.

Consolidation and sanity checks

So far there doesn't seem to be an overlap of identical types of data between the old and new AI, so you can use things like coalesce in sql, or similar functions, because they will never both be set to non-null values for a single entity. In some cases, you do a triple check by picking either the old or either of the two new and exclusive attributes.

There are also entities with too few attributes, like the Renyn Meten that only has the attribute 504 but no other attributes so it cannot actually warp disrupt.

  • Warp scramble range is either attribute 103 (old) or one of 2507 or 2504 (new).
  • Warp scramble strength is either attribute 105 (old) or one of 2509 or 2510 (new) and values above 1 doesn't necessarily mean it's a scram.
  • Warp scramble duration is either attribute 505 (old) or one of 2506 or 2503 (new) but can also be null.
  • Warp scramble chance is attribute 504 (old) and null should be treated as 1 (100% chance) if they otherwise have at least strength and range values.
  • Warp scramble discharge is either attribute 2508 or 2505 (new) but will be null for old AI (doesn't simulate cap usage).
  • Warp scrambling effect is true if either 1350 (old) or 2509 (new) is not null.

If you're writing a function or script to check for warp disruption capabilities, it's best to double-check that you have entries for both warp scramble strength and range (they should all have at least those two entries if they actually have warp disrupt capabilities), then if they do also adjust the warp scramble chance to 1 if it's null and finally check to see if it's a warp disruptor or a warp scrambler. The existence of warp scramble duration and discharge will then vary.