Compare commits

..

21 Commits

Author SHA1 Message Date
DarkPhoenix
55ad95081b Fix alternate tree display in case units did not have display names 2020-01-28 15:16:48 +03:00
DarkPhoenix
da8da1759f Bump version 2020-01-28 14:59:20 +03:00
DarkPhoenix
b4e758b9ee Add new and old but missing conversions 2020-01-28 14:58:54 +03:00
DarkPhoenix
3ba41db699 Update data to 1655072 2020-01-28 14:39:35 +03:00
DarkPhoenix
cfc47cf483 When learning skill in character editor, learn all the prerequisites 2020-01-27 11:44:20 +03:00
DarkPhoenix
38c8be995b Add even more condensed tooltip version (not used yet) 2020-01-24 17:56:07 +03:00
DarkPhoenix
492207700b Force pyinstaller to 3.3 on mac as well 2020-01-21 22:17:29 +03:00
DarkPhoenix
b69adefbf8 Restore matplotlib pyinstaller hook which is still needed in 3.3 2020-01-21 22:00:08 +03:00
DarkPhoenix
361299f51e Bump version 2020-01-21 21:51:02 +03:00
DarkPhoenix
025091c3f6 Roll back pyinstaller to 3.3 for windows builds 2020-01-21 21:50:10 +03:00
DarkPhoenix
a54d70036b Bump version number 2020-01-21 15:32:16 +03:00
DarkPhoenix
9e67b5962c Update the way we update pip on appveyor 2020-01-21 15:31:48 +03:00
Anton Vorobyov
ed0c080163 Merge pull request #2123 from Neugeniko/master
Update Invasion Damage Profiles due to npc changes.
2020-01-21 15:26:53 +03:00
Neugeniko
21389d84fc Update Invasion Damage Profiles due to npc changes.
#2122
2020-01-21 23:17:37 +11:00
DarkPhoenix
0fe54631ad Update staticdata to 1651039 2020-01-21 15:00:21 +03:00
DarkPhoenix
36ea5200f2 Remove pyinstaller from requirements as it's needed just for packaging 2020-01-21 13:33:17 +03:00
DarkPhoenix
d9934160a6 Compatibility with pyinstaller 2020-01-21 13:30:48 +03:00
DarkPhoenix
b9c92c48d3 Bump wx version 2020-01-17 17:15:21 +03:00
DarkPhoenix
6d23df6156 Fix on-effect resistance definition 2020-01-17 16:08:55 +03:00
DarkPhoenix
a913ab72c2 Bump version of pyinstaller to avoid security issues 2020-01-17 11:14:28 +03:00
DarkPhoenix
f6d33a2ac1 Use effect IDs rather than effect amount when deciding if we should rebuild abilities 2020-01-16 19:02:10 +03:00
19 changed files with 1514 additions and 282 deletions

View File

@@ -45,7 +45,7 @@ install:
# Upgrade to the latest version of pip to avoid it displaying warnings
# about it being out of date.
- "pip install --disable-pip-version-check --user --upgrade pip"
- "python -m pip install --disable-pip-version-check --user --upgrade pip"
# Install the build dependencies of the project. If some dependencies contain
# compiled extensions and are not provided as pre-built wheel packages,
@@ -53,7 +53,7 @@ install:
# target Python version and architecture
- ECHO "Install pip requirements:"
- "python -m pip install -r requirements.txt"
- "python -m pip install PyInstaller"
- "python -m pip install PyInstaller==3.3"
before_build:
# directory that will contain the built files

View File

@@ -32,7 +32,7 @@ DB_PATH = os.path.join(ROOT_DIR, 'eve.db')
JSON_DIR = os.path.join(ROOT_DIR, 'staticdata')
if ROOT_DIR not in sys.path:
sys.path.insert(0, ROOT_DIR)
GAMEDATA_SCHEMA_VERSION = 2
GAMEDATA_SCHEMA_VERSION = 3
def db_needs_update():
@@ -206,7 +206,7 @@ def update_db():
def processDogmaEffects():
print('processing dogmaeffects')
data = _readData('fsd_binary', 'dogmaeffects', keyIdName='effectID')
_addRows(data, eos.gamedata.Effect)
_addRows(data, eos.gamedata.Effect, fieldMap={'resistanceAttributeID': 'resistanceID'})
def processDogmaTypeEffects(eveTypesData):
print('processing dogmatypeeffects')

View File

@@ -8,43 +8,25 @@ many upgrade files as there are database versions (version 5 would include
upgrade files 1-5)
"""
import pkgutil
import re
from eos.utils.pyinst_support import iterNamespace
updates = {}
appVersion = 0
prefix = __name__ + "."
# load modules to work based with and without pyinstaller
# from: https://github.com/webcomics/dosage/blob/master/dosagelib/loader.py
# see: https://github.com/pyinstaller/pyinstaller/issues/1905
# load modules using iter_modules()
# (should find all filters in normal build, but not pyinstaller)
module_names = [m[1] for m in pkgutil.iter_modules(__path__, prefix)]
# special handling for PyInstaller
importers = map(pkgutil.get_importer, __path__)
toc = set()
for i in importers:
if hasattr(i, 'toc'):
toc |= i.toc
for elm in toc:
if elm.startswith(prefix):
module_names.append(elm)
for modname in module_names:
for modName in iterNamespace(__name__, __path__):
# loop through python files, extracting update number and function, and
# adding it to a list
modname_tail = modname.rsplit('.', 1)[-1]
module = __import__(modname, fromlist=True)
modname_tail = modName.rsplit('.', 1)[-1]
m = re.match("^upgrade(?P<index>\d+)$", modname_tail)
if not m:
continue
index = int(m.group("index"))
appVersion = max(appVersion, index)
module = __import__(modName, fromlist=True)
upgrade = getattr(module, "upgrade", False)
if upgrade:
updates[index] = upgrade

View File

@@ -40,7 +40,7 @@ class Effect4(BaseEffect):
shieldBoosting
Used by:
Modules from group: Shield Booster (97 of 97)
Modules from group: Shield Booster (89 of 89)
"""
runTime = 'late'
@@ -144,7 +144,7 @@ class Effect27(BaseEffect):
armorRepair
Used by:
Modules from group: Armor Repair Unit (108 of 108)
Modules from group: Armor Repair Unit (100 of 100)
"""
runTime = 'late'
@@ -1756,7 +1756,7 @@ class Effect598(BaseEffect):
ammoSpeedMultiplier
Used by:
Charges from group: Festival Charges (27 of 28)
Charges from group: Festival Charges (28 of 28)
Charges from group: Interdiction Probe (2 of 2)
Charges from group: Structure Festival Charges (2 of 2)
Special Edition Assetss from group: Festival Charges Expired (4 of 4)
@@ -9578,7 +9578,7 @@ class Effect3200(BaseEffect):
Used by:
Modules from group: Ancillary Armor Repairer (7 of 7)
Modules from group: Armor Repair Unit (108 of 108)
Modules from group: Armor Repair Unit (100 of 100)
"""
type = 'overheat'
@@ -9596,7 +9596,7 @@ class Effect3201(BaseEffect):
Used by:
Modules from group: Ancillary Shield Booster (8 of 8)
Modules from group: Shield Booster (97 of 97)
Modules from group: Shield Booster (89 of 89)
"""
type = 'overheat'
@@ -23579,7 +23579,7 @@ class Effect5994(BaseEffect):
resistanceKillerHullAll
Used by:
Modules named like: Polarized (12 of 18)
Modules named like: Polarized (12 of 15)
"""
type = 'passive'
@@ -23596,7 +23596,7 @@ class Effect5995(BaseEffect):
resistanceKillerShieldArmorAll
Used by:
Modules named like: Polarized (12 of 18)
Modules named like: Polarized (12 of 15)
"""
type = 'passive'
@@ -36211,7 +36211,7 @@ class Effect8011(BaseEffect):
shieldHpBonusPostPercentHpLocationShip
Used by:
Implants named like: grade Nirvana (10 of 12)
Implants named like: grade Nirvana (15 of 18)
"""
type = 'passive'
@@ -36226,7 +36226,7 @@ class Effect8013(BaseEffect):
setBonusNirvana
Used by:
Implants named like: grade Nirvana (12 of 12)
Implants named like: grade Nirvana (18 of 18)
"""
runTime = 'early'

View File

@@ -118,15 +118,15 @@ BUILTINS = OrderedDict([
# Source: ticket #2067
(-86, ('[NPC][Invasion][Invading Precursor Entities]Dread', 0, 417, 0, 583)),
(-87, ('[NPC][Invasion][Invading Precursor Entities]Normal Subcaps', 0, 610, 0, 390)),
(-88, ('[NPC][Invasion][Invading Precursor Entities]Subcaps w/missiles 0% spool up', 363, 160, 363, 115)),
(-89, ('[NPC][Invasion][Invading Precursor Entities]Subcaps w/missiles 50% spool up', 286, 249, 286, 179)),
(-90, ('[NPC][Invasion][Invading Precursor Entities]Subcaps w/missiles 100% spool up', 236, 307, 236, 221)),
(-88, ('[NPC][Invasion][Invading Precursor Entities]Subcaps w/missiles 0% spool up', 367, 155, 367, 112)),
(-89, ('[NPC][Invasion][Invading Precursor Entities]Subcaps w/missiles 50% spool up', 291, 243, 291, 175)),
(-90, ('[NPC][Invasion][Invading Precursor Entities]Subcaps w/missiles 100% spool up', 241, 301, 241, 217)),
(-91, ('[NPC][Invasion][Retaliating Amarr Entities]Dread/Subcaps', 583, 417, 0, 0)),
(-92, ('[NPC][Invasion][Retaliating Caldari Entities]Dread', 1000, 0, 0, 0)),
(-93, ('[NPC][Invasion][Retaliating Caldari Entities]Subcaps', 511, 21, 29, 439)),
(-93, ('[NPC][Invasion][Retaliating Caldari Entities]Subcaps', 511, 21, 29, 440)),
(-94, ('[NPC][Invasion][Retaliating Gallente Entities]Dread/Subcaps', 0, 417, 583, 0)),
(-95, ('[NPC][Invasion][Retaliating Minmatar Entities]Dread', 0, 0, 583, 417)),
(-96, ('[NPC][Invasion][Retaliating Minmatar Entities]Subcaps', 302, 132, 330, 236)),
(-96, ('[NPC][Invasion][Retaliating Minmatar Entities]Subcaps', 302, 136, 328, 234)),
(-97, ('[NPC][Mission]Amarr Empire', 4464, 3546, 97, 0)),
(-98, ('[NPC][Mission]Caldari State', 0, 2139, 4867, 0)),
(-99, ('[NPC][Mission]CONCORD', 336, 134, 212, 412)),

View File

@@ -99,7 +99,7 @@ class Fighter(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
self.__itemModifiedAttributes = ModifiedAttributeDict()
self.__chargeModifiedAttributes = ModifiedAttributeDict()
if len(self.abilities) != len(self.item.effects):
if {a.effectID for a in self.abilities} != {e.ID for e in self.item.effects.values()}:
self.__abilities = []
for ability in self.__getAbilities():
self.__abilities.append(ability)

View File

@@ -0,0 +1,39 @@
"""
Slightly modified version of function taken from here:
https://github.com/pyinstaller/pyinstaller/issues/1905#issuecomment-525221546
"""
import pkgutil
def iterNamespace(name, path):
"""Pyinstaller-compatible namespace iteration.
Yields the name of all modules found at a given Fully-qualified path.
To have it running with pyinstaller, it requires to ensure a hook inject the
"hidden" modules from your plugins folder inside the executable:
- if your plugins are under the ``myappname/pluginfolder`` module
- create a file ``specs/hook-<myappname.pluginfolder>.py``
- content of this file should be:
.. code-block:: python
from PyInstaller.utils.hooks import collect_submodules
hiddenimports = collect_submodules('<myappname.pluginfolder>')
"""
prefix = name + "."
for p in pkgutil.iter_modules(path, prefix):
yield p[1]
# special handling when the package is bundled with PyInstaller 3.5
# See https://github.com/pyinstaller/pyinstaller/issues/1905#issuecomment-445787510
toc = set()
for importer in pkgutil.iter_importers(name.partition(".")[0]):
if hasattr(importer, 'toc'):
toc |= importer.toc
for name in toc:
if name.startswith(prefix):
yield name

View File

@@ -171,7 +171,7 @@ class ItemAffectedBy(wx.Panel):
def sortAttrDisplayName(self, attr):
info = self.stuff.item.attributes.get(attr)
if info and info.displayName != "":
if info and info.displayName:
return info.displayName
return attr
@@ -251,7 +251,7 @@ class ItemAffectedBy(wx.Panel):
for attrName in attrOrder:
attrInfo = self.stuff.item.attributes.get(attrName)
displayName = attrInfo.displayName if attrInfo and attrInfo.displayName != "" else attrName
displayName = attrInfo.displayName if attrInfo and attrInfo.displayName else attrName
if attrInfo:
if attrInfo.iconID is not None:
@@ -444,7 +444,7 @@ class ItemAffectedBy(wx.Panel):
attrModifier = "-"
attrAmount = -attrAmount
attributes.append((attrName, (displayName if displayName != "" else attrName), attrModifier,
attributes.append((attrName, (displayName if displayName else attrName), attrModifier,
attrAmount, penalized, attrIcon))
attrSorted = sorted(attributes, key=lambda attribName: attribName[0])
@@ -454,14 +454,14 @@ class ItemAffectedBy(wx.Panel):
if self.showRealNames:
display = "%s %s %.2f %s" % (attrName, attrModifier, attrAmount, penalized)
saved = "%s %s %.2f %s" % (
displayName if displayName != "" else attrName,
displayName if displayName else attrName,
attrModifier,
attrAmount,
penalized
)
else:
display = "%s %s %.2f %s" % (
displayName if displayName != "" else attrName,
displayName if displayName else attrName,
attrModifier,
attrAmount,
penalized

View File

@@ -303,7 +303,6 @@ class CharacterSelection(wx.Panel):
if tabulationLevel == 0:
for item, subReqs in reqs.items():
skillsMap = self._buildSkillsTooltipCondensed(subReqs, item.name, 1, skillsMap)
sorted(skillsMap, key=skillsMap.get)
else:
for name, info in reqs.items():
level, ID, more = info
@@ -323,3 +322,25 @@ class CharacterSelection(wx.Panel):
skillsMap = self._buildSkillsTooltipCondensed(more, currItem, tabulationLevel + 1, skillsMap)
return skillsMap
def _buildSkillsTooltipSuperCondensed(self, reqs, currItem="", tabulationLevel=0, skillsMap=None):
allReqs = {}
implicitReqs = {}
def traverseReqs(itemReqs, topLevel=True):
for skillName, (skillLevel, skillTypeID, subReqs) in itemReqs.items():
if (skillTypeID, skillName) not in allReqs or allReqs[(skillTypeID, skillName)] < skillLevel:
allReqs[(skillTypeID, skillName)] = skillLevel
if not topLevel and (skillTypeID not in implicitReqs or implicitReqs[skillTypeID] < skillLevel):
implicitReqs[skillTypeID] = skillLevel
traverseReqs(subReqs, topLevel=False)
for item, itemReqs in reqs.items():
traverseReqs(itemReqs)
newReqs = {}
for (skillTypeID, skillName), skillLevel in allReqs.items():
if skillTypeID not in implicitReqs or implicitReqs[skillTypeID] < skillLevel:
newReqs[skillName] = skillLevel, skillTypeID
return newReqs

View File

@@ -1,4 +1,4 @@
wxPython == 4.0.6
wxPython == 4.0.7.post2
logbook >= 1.0.0
matplotlib == 3.0.3
numpy==1.16.4
@@ -11,4 +11,3 @@ packaging == 16.8
roman == 2.0.0
beautifulsoup4 == 4.6.0
pyyaml >= 5.1
PyInstaller == 3.3

View File

@@ -5,3 +5,4 @@ sudo python3 -m ensurepip --upgrade
# A manual check that the correct version of Python is running.
python3 --version
python3 -m pip install -r requirements.txt
python3 -m pip install PyInstaller==3.3

View File

@@ -376,8 +376,8 @@ class Character:
char.apiUpdateCharSheet(skills, securitystatus)
eos.db.commit()
@staticmethod
def changeLevel(charID, skillID, level, persist=False, ifHigher=False):
@classmethod
def changeLevel(cls, charID, skillID, level, persist=False, ifHigher=False):
char = eos.db.getCharacter(charID)
skill = char.getSkill(skillID)
@@ -386,10 +386,19 @@ class Character:
if isinstance(level, str) or level > 5 or level < 0:
skill.setLevel(None, persist)
else:
eos.db.commit()
elif skill.level != level:
cls._trainSkillReqs(char, skill, persist)
skill.setLevel(level, persist)
eos.db.commit()
eos.db.commit()
@classmethod
def _trainSkillReqs(cls, char, skill, persist):
for childSkillItem, neededSkillLevel in skill.item.requiredSkills.items():
childSkill = char.getSkill(childSkillItem.ID)
if childSkill.level < neededSkillLevel:
childSkill.setLevel(neededSkillLevel, persist)
cls._trainSkillReqs(char, childSkill, persist)
@staticmethod
def revertLevel(charID, skillID):
@@ -442,13 +451,13 @@ class Character:
if subThing is not None:
if isinstance(thing, es_Fighter) and attr == "charge":
continue
self._checkRequirements(fit, fit.character, subThing, subReqs)
self._checkRequirements(fit.character, subThing, subReqs)
if subReqs:
reqs[subThing] = subReqs
return reqs
def _checkRequirements(self, fit, char, subThing, reqs):
def _checkRequirements(self, char, subThing, reqs):
for req, level in subThing.requiredSkills.items():
name = req.name
ID = req.ID
@@ -456,8 +465,7 @@ class Character:
currLevel, subs = info if info is not None else 0, {}
if level > currLevel and (char is None or char.getSkill(req).level < level):
reqs[name] = (level, ID, subs)
self._checkRequirements(fit, char, req, subs)
self._checkRequirements(char, req, subs)
return reqs

View File

@@ -7,37 +7,17 @@ item's name. The name of the file is usually arbitrary unless it's used in logic
elsewhere (in which case can be accessed with packs[name])
"""
import pkgutil
from eos.utils.pyinst_support import iterNamespace
# init parent dict
all = {}
# init container to store the separate conversion packs in case we need them
packs = {}
prefix = __name__ + "."
# load modules to work based with and without pyinstaller
# from: https://github.com/webcomics/dosage/blob/master/dosagelib/loader.py
# see: https://github.com/pyinstaller/pyinstaller/issues/1905
# load modules using iter_modules()
# (should find all filters in normal build, but not pyinstaller)
module_names = [m[1] for m in pkgutil.iter_modules(__path__, prefix)]
# special handling for PyInstaller
importers = map(pkgutil.get_importer, __path__)
toc = set()
for i in importers:
if hasattr(i, 'toc'):
toc |= i.toc
for elm in toc:
if elm.startswith(prefix):
module_names.append(elm)
for modname in module_names:
conversionPack = __import__(modname, fromlist="dummy")
for modName in iterNamespace(__name__, __path__):
conversionPack = __import__(modName, fromlist="dummy")
all.update(conversionPack.CONVERSIONS)
modname_tail = modname.rsplit('.', 1)[-1]
modname_tail = modName.rsplit('.', 1)[-1]
packs[modname_tail] = conversionPack.CONVERSIONS

View File

@@ -1,5 +1,5 @@
"""
Conversion pack for Januray 2020 release
Conversion pack for January 2020 release
"""
CONVERSIONS = {
@@ -10,5 +10,29 @@ CONVERSIONS = {
'Large Clarity Ward Booster I': 'Large Clarity Ward Enduring Shield Booster',
'Large C5-L Emergency Shield Overload I': 'Large C5-L Compact Shield Booster',
'X-Large Clarity Ward Booster I': 'X-Large Clarity Ward Enduring Shield Booster',
'X-Large C5-L Emergency Shield Overload I': 'X-Large C5-L Compact Shield Booster'
'X-Large C5-L Emergency Shield Overload I': 'X-Large C5-L Compact Shield Booster',
'Small I-a Polarized Armor Regenerator': 'Small I-a Enduring Armor Repairer',
'Small \'Accommodation\' Vestment Reconstructer I': 'Small ACM Compact Armor Repairer',
'Medium I-a Polarized Armor Regenerator': 'Medium I-a Enduring Armor Repairer',
'Medium \'Accommodation\' Vestment Reconstructer I': 'Medium ACM Compact Armor Repairer',
'Large I-a Polarized Armor Regenerator': 'Large I-a Enduring Armor Repairer',
'Large \'Accommodation\' Vestment Reconstructer I': 'Large ACM Compact Armor Repairer',
# Entries below were removed from DB, but CCP converted them to another item type
'Small Converse Deflection Catalyzer': 'Small Clarity Ward Enduring Shield Booster',
'Small Neutron Saturation Injector I': 'Small C5-L Compact Shield Booster',
'Medium Converse Deflection Catalyzer': 'Medium Clarity Ward Enduring Shield Booster',
'Medium Neutron Saturation Injector I': 'Medium C5-L Compact Shield Booster',
'Large Converse Deflection Catalyzer': 'Large Clarity Ward Enduring Shield Booster',
'Large Neutron Saturation Injector I': 'Large C5-L Compact Shield Booster',
'X-Large Converse Deflection Catalyzer': 'X-Large Clarity Ward Enduring Shield Booster',
'X-Large Neutron Saturation Injector I': 'X-Large C5-L Compact Shield Booster',
'Small Inefficient Armor Repair Unit': 'Small ACM Compact Armor Repairer',
'Small Automated Carapace Restoration': 'Small I-a Enduring Armor Repairer',
'Medium Inefficient Armor Repair Unit': 'Medium ACM Compact Armor Repairer',
'Medium Automated Carapace Restoration': 'Medium I-a Enduring Armor Repairer',
'Medium Nano Armor Repair Unit I': '\'Meditation\' Medium Armor Repairer I',
'Large Inefficient Armor Repair Unit': 'Large ACM Compact Armor Repairer',
'Large Automated Carapace Restoration': 'Large I-a Enduring Armor Repairer',
# This item was not mentioned, assuming conversion to storyline
'Large \'Reprieve\' Vestment Reconstructer I': '\'Protest\' Large Armor Repairer I'
}

View File

@@ -87986,5 +87986,65 @@
"3380": [
4
]
},
"53839": {
"3411": [
5
]
},
"53853": {
"3411": [
2
]
},
"53854": {
"3411": [
2
]
},
"53855": {
"3411": [
3
]
},
"53856": {
"3411": [
3
]
},
"53857": {
"3411": [
4
]
},
"53859": {
"3380": [
4
]
},
"53860": {
"3380": [
4
]
},
"53861": {
"3380": [
4
]
},
"53862": {
"3380": [
4
]
},
"53863": {
"3380": [
4
]
},
"53864": {
"3380": [
4
]
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -5362,12 +5362,11 @@
"descriptionID": 87829,
"groupID": 40,
"iconID": 84,
"marketGroupID": 610,
"mass": 0.0,
"metaGroupID": 1,
"metaLevel": 2,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 2,
"radius": 500.0,
"techLevel": 1,
@@ -5406,12 +5405,11 @@
"descriptionID": 95300,
"groupID": 40,
"iconID": 84,
"marketGroupID": 610,
"mass": 0.0,
"metaGroupID": 1,
"metaLevel": 1,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 8,
"radius": 500.0,
"techLevel": 1,
@@ -5450,12 +5448,11 @@
"descriptionID": 87832,
"groupID": 40,
"iconID": 84,
"marketGroupID": 611,
"mass": 0.0,
"metaGroupID": 1,
"metaLevel": 2,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 2,
"radius": 500.0,
"techLevel": 1,
@@ -5494,12 +5491,11 @@
"descriptionID": 95295,
"groupID": 40,
"iconID": 84,
"marketGroupID": 611,
"mass": 0.0,
"metaGroupID": 1,
"metaLevel": 1,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 8,
"radius": 500.0,
"techLevel": 1,
@@ -5538,12 +5534,11 @@
"descriptionID": 87835,
"groupID": 40,
"iconID": 84,
"marketGroupID": 612,
"mass": 0.0,
"metaGroupID": 1,
"metaLevel": 2,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 2,
"radius": 500.0,
"techLevel": 1,
@@ -5582,12 +5577,11 @@
"descriptionID": 95315,
"groupID": 40,
"iconID": 84,
"marketGroupID": 612,
"mass": 0.0,
"metaGroupID": 1,
"metaLevel": 1,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 8,
"radius": 500.0,
"techLevel": 1,
@@ -36877,7 +36871,7 @@
"marketGroupID": 1051,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 7,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -36898,7 +36892,7 @@
"marketGroupID": 1051,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -36919,7 +36913,7 @@
"marketGroupID": 1051,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -36940,7 +36934,7 @@
"marketGroupID": 1050,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 7,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -36961,7 +36955,7 @@
"marketGroupID": 1050,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -36982,7 +36976,7 @@
"marketGroupID": 1050,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -37003,7 +36997,7 @@
"marketGroupID": 1049,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 7,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -37024,7 +37018,7 @@
"marketGroupID": 1049,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -37045,7 +37039,7 @@
"marketGroupID": 1049,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -56244,7 +56238,7 @@
"marketGroupID": 1049,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -56265,7 +56259,7 @@
"marketGroupID": 1050,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -56286,7 +56280,7 @@
"marketGroupID": 1051,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -83156,7 +83150,7 @@
"marketGroupID": 1051,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 7,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -83177,7 +83171,7 @@
"marketGroupID": 1050,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 7,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -83198,7 +83192,7 @@
"marketGroupID": 1049,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 7,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -84023,7 +84017,7 @@
"marketGroupID": 1051,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -84044,7 +84038,7 @@
"marketGroupID": 1050,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -84065,7 +84059,7 @@
"marketGroupID": 1049,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -146773,7 +146767,7 @@
"marketGroupID": 1050,
"mass": 500.0,
"metaGroupID": 3,
"metaLevel": 7,
"metaLevel": 6,
"portionSize": 1,
"published": true,
"techLevel": 1,
@@ -146825,7 +146819,7 @@
"marketGroupID": 1051,
"mass": 500.0,
"metaGroupID": 3,
"metaLevel": 7,
"metaLevel": 6,
"portionSize": 1,
"published": true,
"techLevel": 1,
@@ -232483,7 +232477,7 @@
"marketGroupID": 1051,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -232575,7 +232569,7 @@
"marketGroupID": 1050,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -232721,7 +232715,7 @@
"marketGroupID": 1049,
"mass": 500.0,
"metaGroupID": 4,
"metaLevel": 9,
"metaLevel": 8,
"portionSize": 1,
"published": true,
"raceID": 4,
@@ -510303,7 +510297,7 @@
"raceID": 1,
"techLevel": 1,
"typeID": 4529,
"typeName": "Small I-a Polarized Armor Regenerator",
"typeName": "Small I-a Enduring Armor Repairer",
"typeNameID": 77030,
"variationParentTypeID": 523,
"volume": 5.0
@@ -510334,13 +510328,13 @@
"descriptionID": 87515,
"groupID": 62,
"iconID": 80,
"marketGroupID": 1049,
"mass": 500.0,
"metaGroupID": 1,
"metaLevel": 2,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 2,
"radius": 1.0,
"techLevel": 1,
"typeID": 4531,
"typeName": "Small Inefficient Armor Repair Unit",
@@ -510358,13 +510352,13 @@
"marketGroupID": 1049,
"mass": 500.0,
"metaGroupID": 1,
"metaLevel": 4,
"metaLevel": 1,
"portionSize": 1,
"published": true,
"raceID": 4,
"techLevel": 1,
"typeID": 4533,
"typeName": "Small 'Accommodation' Vestment Reconstructer I",
"typeName": "Small ACM Compact Armor Repairer",
"typeNameID": 77032,
"variationParentTypeID": 523,
"volume": 5.0
@@ -510376,13 +510370,13 @@
"descriptionID": 87517,
"groupID": 62,
"iconID": 80,
"marketGroupID": 1049,
"mass": 500.0,
"metaGroupID": 1,
"metaLevel": 3,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 8,
"radius": 1.0,
"techLevel": 1,
"typeID": 4535,
"typeName": "Small Automated Carapace Restoration",
@@ -514477,7 +514471,7 @@
"raceID": 1,
"techLevel": 1,
"typeID": 4569,
"typeName": "Medium I-a Polarized Armor Regenerator",
"typeName": "Medium I-a Enduring Armor Repairer",
"typeNameID": 77034,
"variationParentTypeID": 3528,
"volume": 10.0
@@ -514808,13 +514802,13 @@
"descriptionID": 87519,
"groupID": 62,
"iconID": 80,
"marketGroupID": 1050,
"mass": 500.0,
"metaGroupID": 1,
"metaLevel": 2,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 2,
"radius": 1.0,
"techLevel": 1,
"typeID": 4571,
"typeName": "Medium Inefficient Armor Repair Unit",
@@ -515131,13 +515125,13 @@
"marketGroupID": 1050,
"mass": 500.0,
"metaGroupID": 1,
"metaLevel": 4,
"metaLevel": 1,
"portionSize": 1,
"published": true,
"raceID": 4,
"techLevel": 1,
"typeID": 4573,
"typeName": "Medium 'Accommodation' Vestment Reconstructer I",
"typeName": "Medium ACM Compact Armor Repairer",
"typeNameID": 77036,
"variationParentTypeID": 3528,
"volume": 10.0
@@ -515461,13 +515455,13 @@
"descriptionID": 87521,
"groupID": 62,
"iconID": 80,
"marketGroupID": 1050,
"mass": 500.0,
"metaGroupID": 1,
"metaLevel": 3,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 8,
"radius": 1.0,
"techLevel": 1,
"typeID": 4575,
"typeName": "Medium Automated Carapace Restoration",
@@ -516087,7 +516081,7 @@
"mass": 500.0,
"metaLevel": 4,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 2,
"techLevel": 1,
"typeID": 4579,
@@ -520665,7 +520659,7 @@
"raceID": 1,
"techLevel": 1,
"typeID": 4609,
"typeName": "Large I-a Polarized Armor Regenerator",
"typeName": "Large I-a Enduring Armor Repairer",
"typeNameID": 77039,
"variationParentTypeID": 3538,
"volume": 50.0
@@ -520996,13 +520990,13 @@
"descriptionID": 87524,
"groupID": 62,
"iconID": 80,
"marketGroupID": 1051,
"mass": 500.0,
"metaGroupID": 1,
"metaLevel": 2,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 2,
"radius": 1.0,
"techLevel": 1,
"typeID": 4611,
"typeName": "Large Inefficient Armor Repair Unit",
@@ -521320,13 +521314,13 @@
"marketGroupID": 1051,
"mass": 500.0,
"metaGroupID": 1,
"metaLevel": 4,
"metaLevel": 1,
"portionSize": 1,
"published": true,
"raceID": 4,
"techLevel": 1,
"typeID": 4613,
"typeName": "Large 'Accommodation' Vestment Reconstructer I",
"typeName": "Large ACM Compact Armor Repairer",
"typeNameID": 77041,
"variationParentTypeID": 3538,
"volume": 50.0
@@ -521638,13 +521632,13 @@
"descriptionID": 87526,
"groupID": 62,
"iconID": 80,
"marketGroupID": 1051,
"mass": 500.0,
"metaGroupID": 1,
"metaLevel": 3,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 8,
"radius": 1.0,
"techLevel": 1,
"typeID": 4615,
"typeName": "Large Automated Carapace Restoration",
@@ -522579,7 +522573,7 @@
"mass": 500.0,
"metaLevel": 5,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 4,
"techLevel": 1,
"typeID": 4621,
@@ -597089,7 +597083,7 @@
"radius": 1.0,
"techLevel": 2,
"typeID": 53722,
"typeName": "Mid-Grade Nirvana Alpha Blueprint",
"typeName": "Mid-grade Nirvana Alpha Blueprint",
"typeNameID": 555323,
"volume": 0.01
},
@@ -597105,7 +597099,7 @@
"radius": 1.0,
"techLevel": 2,
"typeID": 53723,
"typeName": "Mid-Grade Nirvana Beta Blueprint",
"typeName": "Mid-grade Nirvana Beta Blueprint",
"typeNameID": 555324,
"volume": 0.01
},
@@ -597121,7 +597115,7 @@
"radius": 1.0,
"techLevel": 2,
"typeID": 53724,
"typeName": "Mid-Grade Nirvana Delta Blueprint",
"typeName": "Mid-grade Nirvana Delta Blueprint",
"typeNameID": 555325,
"volume": 0.01
},
@@ -597137,7 +597131,7 @@
"radius": 1.0,
"techLevel": 2,
"typeID": 53725,
"typeName": "Mid-Grade Nirvana Epsilon Blueprint",
"typeName": "Mid-grade Nirvana Epsilon Blueprint",
"typeNameID": 555326,
"volume": 0.01
},
@@ -597153,7 +597147,7 @@
"radius": 1.0,
"techLevel": 2,
"typeID": 53726,
"typeName": "Mid-Grade Nirvana Gamma Blueprint",
"typeName": "Mid-grade Nirvana Gamma Blueprint",
"typeNameID": 555327,
"volume": 0.01
},
@@ -597169,7 +597163,7 @@
"radius": 1.0,
"techLevel": 2,
"typeID": 53727,
"typeName": "Mid-Grade Nirvana Omega Blueprint",
"typeName": "Mid-grade Nirvana Omega Blueprint",
"typeNameID": 555328,
"volume": 0.01
},
@@ -597185,7 +597179,7 @@
"radius": 1.0,
"techLevel": 2,
"typeID": 53728,
"typeName": "High-Grade Nirvana Alpha Blueprint",
"typeName": "High-grade Nirvana Alpha Blueprint",
"typeNameID": 555329,
"volume": 0.01
},
@@ -597201,7 +597195,7 @@
"radius": 1.0,
"techLevel": 2,
"typeID": 53729,
"typeName": "High-Grade Nirvana Beta Blueprint",
"typeName": "High-grade Nirvana Beta Blueprint",
"typeNameID": 555330,
"volume": 0.01
},
@@ -597217,7 +597211,7 @@
"radius": 1.0,
"techLevel": 2,
"typeID": 53730,
"typeName": "High-Grade Nirvana Delta Blueprint",
"typeName": "High-grade Nirvana Delta Blueprint",
"typeNameID": 555331,
"volume": 0.01
},
@@ -597233,7 +597227,7 @@
"radius": 1.0,
"techLevel": 2,
"typeID": 53731,
"typeName": "High-Grade Nirvana Epsilon Blueprint",
"typeName": "High-grade Nirvana Epsilon Blueprint",
"typeNameID": 555332,
"volume": 0.01
},
@@ -597249,7 +597243,7 @@
"radius": 1.0,
"techLevel": 2,
"typeID": 53732,
"typeName": "High-Grade Nirvana Gamma Blueprint",
"typeName": "High-grade Nirvana Gamma Blueprint",
"typeNameID": 555333,
"volume": 0.01
},
@@ -597265,7 +597259,7 @@
"radius": 1.0,
"techLevel": 2,
"typeID": 53733,
"typeName": "High-Grade Nirvana Omega Blueprint",
"typeName": "High-grade Nirvana Omega Blueprint",
"typeNameID": 555334,
"volume": 0.01
},
@@ -597285,6 +597279,26 @@
"typeNameID": 555558,
"volume": 1.0
},
"53839": {
"basePrice": 800000.0,
"capacity": 0.0,
"description": "This Omega implant appears to have been developed using Sansha's Nation technology and is likely to be used by elite pilots of Nation and related factions.\r\n\r\nThis type of implant has no inherent effect of its own but when used in conjunction with other Nirvana implants it will boost their effectiveness.\r\n\r\n10% bonus to the strength of all Nirvana implant secondary effects. ",
"descriptionID": 555581,
"groupID": 300,
"iconID": 2224,
"isDynamicType": false,
"marketGroupID": 1506,
"mass": 0.0,
"metaGroupID": 2,
"portionSize": 1,
"published": true,
"radius": 1.0,
"techLevel": 2,
"typeID": 53839,
"typeName": "Low-grade Nirvana Omega",
"typeNameID": 555580,
"volume": 1.0
},
"53846": {
"basePrice": 0.0,
"capacity": 0.0,
@@ -597319,6 +597333,202 @@
"typeNameID": 555748,
"volume": 0.1
},
"53853": {
"basePrice": 0.0,
"capacity": 0.0,
"description": "This ocular filter appears to have been developed using Sansha's Nation technology and is likely to be used by elite pilots of Nation and related factions. It provides increasing shield hitpoint bonuses when plugged in alongside other implants from the same set.\r\n\r\nPrimary Effect: +2 bonus to Perception\r\n\r\nSecondary Effect: 1% bonus to shield hitpoints\r\n\r\nSet Effect: 2.5% bonus to the strength of all Nirvana implant secondary effects",
"descriptionID": 556162,
"groupID": 300,
"iconID": 2053,
"isDynamicType": false,
"marketGroupID": 618,
"mass": 0.0,
"metaGroupID": 2,
"portionSize": 1,
"published": true,
"radius": 1.0,
"techLevel": 2,
"typeID": 53853,
"typeName": "Low-grade Nirvana Alpha",
"typeNameID": 556161,
"volume": 1.0
},
"53854": {
"basePrice": 800000.0,
"capacity": 0.0,
"description": "This memory augmentation appears to have been developed using Sansha's Nation technology and is likely to be used by elite pilots of Nation and related factions. It provides increasing shield hitpoint bonuses when plugged in alongside other implants from the same set.\r\n\r\nPrimary Effect: +2 bonus to Memory\r\n\r\nSecondary Effect: 2% bonus to shield hitpoints\r\n\r\nSet Effect: 2.5% bonus to the strength of all Nirvana implant secondary effects",
"descriptionID": 556165,
"groupID": 300,
"iconID": 2061,
"isDynamicType": false,
"marketGroupID": 619,
"mass": 0.0,
"metaGroupID": 2,
"portionSize": 1,
"published": true,
"radius": 1.0,
"techLevel": 2,
"typeID": 53854,
"typeName": "Low-grade Nirvana Beta",
"typeNameID": 556164,
"volume": 1.0
},
"53855": {
"basePrice": 800000.0,
"capacity": 0.0,
"description": "This neural boost implant appears to have been developed using Sansha's Nation technology and is likely to be used by elite pilots of Nation and related factions. It provides increasing shield hitpoint bonuses when plugged in alongside other implants from the same set.\r\n\r\nPrimary Effect: +2 bonus to Willpower\r\n\r\nSecondary Effect: 3% bonus to shield hitpoints\r\n\r\nSet Effect: 2.5% bonus to the strength of all Nirvana implant secondary effects",
"descriptionID": 556178,
"groupID": 300,
"iconID": 2054,
"isDynamicType": false,
"marketGroupID": 620,
"mass": 0.0,
"metaGroupID": 2,
"portionSize": 1,
"published": true,
"radius": 1.0,
"techLevel": 2,
"typeID": 53855,
"typeName": "Low-grade Nirvana Gamma",
"typeNameID": 556177,
"volume": 1.0
},
"53856": {
"basePrice": 800000.0,
"capacity": 0.0,
"description": "This cybernetic subprocessor appears to have been developed using Sansha's Nation technology and is likely to be used by elite pilots of Nation and related factions. It provides increasing shield hitpoint bonuses when plugged in alongside other implants from the same set.\r\n\r\nPrimary Effect: +2 bonus to Intelligence\r\n\r\nSecondary Effect: 4% bonus to shield hitpoints\r\n\r\nSet Effect: 2.5% bonus to the strength of all Nirvana implant secondary effects",
"descriptionID": 556370,
"groupID": 300,
"iconID": 2062,
"isDynamicType": false,
"marketGroupID": 621,
"mass": 0.0,
"metaGroupID": 2,
"portionSize": 1,
"published": true,
"radius": 1.0,
"techLevel": 2,
"typeID": 53856,
"typeName": "Low-grade Nirvana Delta",
"typeNameID": 556369,
"volume": 1.0
},
"53857": {
"basePrice": 800000.0,
"capacity": 0.0,
"description": "This social adaptation chip appears to have been developed using Sansha's Nation technology and is likely to be used by elite pilots of Nation and related factions. It provides increasing shield hitpoint bonuses when plugged in alongside other implants from the same set.\r\n\r\nPrimary Effect: +2 bonus to Charisma\r\n\r\nSecondary Effect: 5% bonus to shield hitpoints\r\n\r\nSet Effect: 2.5% bonus to the strength of all Nirvana implant secondary effects (copy)",
"descriptionID": 556372,
"groupID": 300,
"iconID": 2060,
"isDynamicType": false,
"marketGroupID": 622,
"mass": 0.0,
"metaGroupID": 2,
"portionSize": 1,
"published": true,
"radius": 1.0,
"techLevel": 2,
"typeID": 53857,
"typeName": "Low-grade Nirvana Epsilon",
"typeNameID": 556371,
"volume": 1.0
},
"53859": {
"basePrice": 0.0,
"capacity": 0.0,
"groupID": 724,
"iconID": 2053,
"mass": 0.0,
"metaGroupID": 2,
"portionSize": 1,
"published": true,
"radius": 1.0,
"techLevel": 2,
"typeID": 53859,
"typeName": "Low-grade Nirvana Alpha Blueprint",
"typeNameID": 557151,
"volume": 0.01
},
"53860": {
"basePrice": 0.0,
"capacity": 0.0,
"groupID": 724,
"iconID": 2061,
"mass": 0.0,
"metaGroupID": 2,
"portionSize": 1,
"published": true,
"radius": 1.0,
"techLevel": 2,
"typeID": 53860,
"typeName": "Low-grade Nirvana Beta Blueprint",
"typeNameID": 557154,
"volume": 0.01
},
"53861": {
"basePrice": 0.0,
"capacity": 0.0,
"groupID": 724,
"iconID": 2062,
"mass": 0.0,
"metaGroupID": 2,
"portionSize": 1,
"published": true,
"radius": 1.0,
"techLevel": 2,
"typeID": 53861,
"typeName": "Low-grade Nirvana Delta Blueprint",
"typeNameID": 557168,
"volume": 0.01
},
"53862": {
"basePrice": 0.0,
"capacity": 0.0,
"groupID": 724,
"iconID": 2060,
"mass": 0.0,
"metaGroupID": 2,
"portionSize": 1,
"published": true,
"radius": 1.0,
"techLevel": 2,
"typeID": 53862,
"typeName": "Low-grade Nirvana Epsilon Blueprint",
"typeNameID": 557169,
"volume": 0.01
},
"53863": {
"basePrice": 0.0,
"capacity": 0.0,
"groupID": 724,
"iconID": 2054,
"mass": 0.0,
"metaGroupID": 2,
"portionSize": 1,
"published": true,
"radius": 1.0,
"techLevel": 2,
"typeID": 53863,
"typeName": "Low-grade Nirvana Gamma Blueprint",
"typeNameID": 557170,
"volume": 0.01
},
"53864": {
"basePrice": 0.0,
"capacity": 0.0,
"groupID": 724,
"iconID": 2224,
"mass": 0.0,
"metaGroupID": 2,
"portionSize": 1,
"published": true,
"radius": 1.0,
"techLevel": 2,
"typeID": 53864,
"typeName": "Low-grade Nirvana Omega Blueprint",
"typeNameID": 557171,
"volume": 0.01
},
"5399": {
"basePrice": 0.0,
"capacity": 0.0,
@@ -602690,12 +602900,11 @@
"descriptionID": 87666,
"groupID": 40,
"iconID": 84,
"marketGroupID": 609,
"mass": 0.0,
"metaGroupID": 1,
"metaLevel": 2,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 2,
"radius": 500.0,
"techLevel": 1,
@@ -602759,12 +602968,11 @@
"descriptionID": 95311,
"groupID": 40,
"iconID": 84,
"marketGroupID": 609,
"mass": 0.0,
"metaGroupID": 1,
"metaLevel": 1,
"portionSize": 1,
"published": true,
"published": false,
"raceID": 8,
"radius": 500.0,
"techLevel": 1,

View File

@@ -1,10 +1,10 @@
[
{
"field_name": "client_build",
"field_value": 1646988
"field_value": 1655072
},
{
"field_name": "dump_time",
"field_value": 1579174763
"field_value": 1580211149
}
]

View File

@@ -1 +1 @@
version: v2.16.0
version: v2.16.3