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

From EVE University Wiki
Jump to: navigation, search
m
Line 220: Line 220:
 
! style="background-color:#222222; color:wheat; text-align:left;" | My notes
 
! style="background-color:#222222; color:wheat; text-align:left;" | My notes
 
|-
 
|-
| 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
 
| 103
Line 254: Line 231:
 
| Amount to modify ships warp scramble status by.
 
| Amount to modify ships warp scramble status by.
 
| EW - Warp Scrambling
 
| EW - Warp Scrambling
| {{co|slateblue|Old AI}} - Warp disrupt/scramble strength.
+
| {{co|slateblue|Old AI}} - Disrupt/scramble strength (positive).
 
|-
 
|-
 
| 504
 
| 504
Line 260: Line 237:
 
| Chance of entity warp scrambling it's target.
 
| Chance of entity warp scrambling it's target.
 
| EW - Warp Scrambling
 
| EW - Warp Scrambling
| {{co|slateblue|Old AI}} - Some NPCs don't warp disrupt/scram every cycle (can be null).
+
| {{co|slateblue|Old AI}} - Chance per cycle in decimals (can be null).
 
|-
 
|-
 
| 505
 
| 505
Line 272: Line 249:
 
|
 
|
 
| EW - Warp Scrambling
 
| EW - Warp Scrambling
| {{co|slateblue|Old AI}} - Denotes warp scrambling effect (instead of just disruption).
+
| {{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 ====
 
==== Distinguishing between a warp disruptor and a warp scrambler ====
Line 278: Line 304:
  
 
* {{co|slateblue|Old AI}} - An actual warp scrambler will have the attribute {{co|slateblue|1350}} (activationBlockedStrenght) set to 1.
 
* {{co|slateblue|Old AI}} - An actual warp scrambler will have the attribute {{co|slateblue|1350}} (activationBlockedStrenght) set to 1.
* {{co|violet|New AI}} - All NPCs with the behavior-attribute of {{co|violet|2509}} (behaviorWarpScrambleStrength) use actual warp scramblers.
+
* {{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 ====
 
==== 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, 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.
+
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. In some cases, you do a triple check by picking either the old or either of the two new and exclusive attributes.
 +
 
 +
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 {{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 {{co|violet|2507}} (new).
+
* {{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 {{co|violet|2509}} (new) and values above 1 doesn't necessarily mean it's a scram.
+
* {{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 {{co|violet|2506}} (new) but can also be null.
+
* {{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) or {{co|violet|null}} (new) 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 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 attribute {{co|violet|2508}} (new) but will be {{co|slateblue|null}} for old AI (doesn't simulate cap usage).
+
* {{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.
 
* {{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.
 
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.

Revision as of 22:07, 20 August 2019

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 transfers

AttributeID AttributeName Description CategoryName My notes
90 powerTransferAmount Amount of power to transfer. EW - Energy Neutralizing
97 energyNeutralizerAmount An amount to modify the power of the target by. EW - Energy Neutralizing
98 energyNeutralizerRangeOptimal Optimal Range of Energy Neutralizer EW - Energy Neutralizing
931 energyNeutralizerEntityChance Chance of NPC effect to be activated each duration EW - Energy Neutralizing
942 energyNeutralizerDuration Duration of NPC Energy Neutralizer effect EW - Energy Neutralizing
2451 energyNeutralizerSignatureResolution Signature Resolution of Energy Neutralizer EW - Energy Neutralizing
2452 energyNeutralizerRangeFalloff Falloff Range of Energy Neutralizer EW - Energy Neutralizing
2629 behaviorEnergyNosferatuDischarge Behavior Attributes
2630 behaviorEnergyNosferatuDuration Behavior Attributes
2631 behaviorEnergyNosferatuFalloff Behavior Attributes
2632 behaviorEnergyNosferatuRange Behavior Attributes
2519 behaviorEnergyNeutralizerDuration Behavior Attributes
2520 behaviorEnergyNeutralizerRange Behavior Attributes
2521 behaviorEnergyNeutralizerFalloff Behavior Attributes
2522 behaviorEnergyNeutralizerDischarge Behavior Attributes

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.

Currently there are no NPCs with both attributeID 90 and 97 set (just one or the other), so it's safe to assume that it's an either or kind of check. They either simulate Energy Neutralizers or Energy Nosferatu.

Consolidation and sanity checks

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, 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. In some cases, you do a triple check by picking either the old or either of the two new and exclusive attributes.

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.

  • 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.