Compare commits
81 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3394fabfc8 | ||
|
|
1bdfd7f924 | ||
|
|
b69a46f9b1 | ||
|
|
c17579505c | ||
|
|
2f990b9de2 | ||
|
|
c9f33f200d | ||
|
|
4abde609d8 | ||
|
|
9c09cef783 | ||
|
|
7570fee97b | ||
|
|
22e8330045 | ||
|
|
98c37a253f | ||
|
|
a931d46cb0 | ||
|
|
f4de596193 | ||
|
|
973a081e8d | ||
|
|
3054ac9d90 | ||
|
|
4ea2636788 | ||
|
|
b5f2df58ce | ||
|
|
6d15645198 | ||
|
|
a1bd671d89 | ||
|
|
aba5d43fc7 | ||
|
|
c903dff8ad | ||
|
|
35d5c49745 | ||
|
|
030e6aa9db | ||
|
|
cc770898d9 | ||
|
|
8e383a085e | ||
|
|
5fef07a552 | ||
|
|
72e272084e | ||
|
|
a2499cc070 | ||
|
|
c262acd0dc | ||
|
|
da047106f3 | ||
|
|
c04bb8f82c | ||
|
|
bb16e649af | ||
|
|
035443b4ff | ||
|
|
0e10ac3928 | ||
|
|
f0473f1eab | ||
|
|
a95eabac7b | ||
|
|
1ab76a7170 | ||
|
|
53c4a31334 | ||
|
|
f02be0b0fd | ||
|
|
0524b901f5 | ||
|
|
d5a701ab31 | ||
|
|
55c7488a0d | ||
|
|
8c8cf05207 | ||
|
|
ab9822b37e | ||
|
|
4e5f27a643 | ||
|
|
92c9e1afc3 | ||
|
|
e6e503f9e8 | ||
|
|
578716767f | ||
|
|
ec083428da | ||
|
|
f57c18810e | ||
|
|
5d4c0b443e | ||
|
|
b89f55c675 | ||
|
|
81d991b48d | ||
|
|
944bc971bd | ||
|
|
cf44af3586 | ||
|
|
3e70a6fd7c | ||
|
|
59be18506c | ||
|
|
b1bf14de29 | ||
|
|
2dd8453bbb | ||
|
|
4e61d1b17a | ||
|
|
458e89a534 | ||
|
|
493bf5cb0d | ||
|
|
0032163a38 | ||
|
|
84ac71f528 | ||
|
|
e8041470c8 | ||
|
|
8928d394c0 | ||
|
|
0881abae7b | ||
|
|
0686b602c6 | ||
|
|
fa5edbb804 | ||
|
|
1279b20370 | ||
|
|
ed1b9854a0 | ||
|
|
4fe80b7554 | ||
|
|
a5773a3fd6 | ||
|
|
ca61be2476 | ||
|
|
ae02e214f0 | ||
|
|
a0093d9760 | ||
|
|
11891340af | ||
|
|
e60735a1f2 | ||
|
|
ce3772ecee | ||
|
|
bec61e43ae | ||
|
|
d29b4d91e9 |
10
config.py
10
config.py
@@ -13,12 +13,16 @@ debug = False
|
|||||||
saveInRoot = False
|
saveInRoot = False
|
||||||
|
|
||||||
# Version data
|
# Version data
|
||||||
version = "1.3.1"
|
version = "1.5.0"
|
||||||
tag = "git"
|
tag = "Stable"
|
||||||
expansionName = "Crius"
|
expansionName = "Oceanus"
|
||||||
expansionVersion = "1.0"
|
expansionVersion = "1.0"
|
||||||
evemonMinVersion = "4081"
|
evemonMinVersion = "4081"
|
||||||
|
|
||||||
|
# Database version (int ONLY)
|
||||||
|
# Increment every time we need to flag for user database upgrade/modification
|
||||||
|
dbversion = 1
|
||||||
|
|
||||||
pyfaPath = None
|
pyfaPath = None
|
||||||
savePath = None
|
savePath = None
|
||||||
staticPath = None
|
staticPath = None
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ if saveddata_connectionstring is not None:
|
|||||||
|
|
||||||
saveddata_meta = MetaData()
|
saveddata_meta = MetaData()
|
||||||
saveddata_meta.bind = saveddata_engine
|
saveddata_meta.bind = saveddata_engine
|
||||||
migration.update(saveddata_engine)
|
|
||||||
saveddata_session = sessionmaker(bind=saveddata_engine, autoflush=False, expire_on_commit=False)()
|
saveddata_session = sessionmaker(bind=saveddata_engine, autoflush=False, expire_on_commit=False)()
|
||||||
|
|
||||||
# Lock controlling any changes introduced to session
|
# Lock controlling any changes introduced to session
|
||||||
@@ -66,7 +65,7 @@ from eos.db.saveddata.queries import getUser, getCharacter, getFit, getFitsWithS
|
|||||||
getCharacterList, getPrice, getDamagePatternList, getDamagePattern, \
|
getCharacterList, getPrice, getDamagePatternList, getDamagePattern, \
|
||||||
getFitList, getFleetList, getFleet, save, remove, commit, add, \
|
getFitList, getFleetList, getFleet, save, remove, commit, add, \
|
||||||
getCharactersForUser, getMiscData, getSquadsIDsWithFitID, getWing, \
|
getCharactersForUser, getMiscData, getSquadsIDsWithFitID, getWing, \
|
||||||
getSquad, getBoosterFits, getProjectedFits
|
getSquad, getBoosterFits, getProjectedFits, getTargetResistsList, getTargetResists
|
||||||
|
|
||||||
#If using in memory saveddata, you'll want to reflect it so the data structure is good.
|
#If using in memory saveddata, you'll want to reflect it so the data structure is good.
|
||||||
if config.saveddata_connectionstring == "sqlite:///:memory:":
|
if config.saveddata_connectionstring == "sqlite:///:memory:":
|
||||||
|
|||||||
@@ -1,59 +1,32 @@
|
|||||||
import sqlalchemy
|
import config
|
||||||
|
import shutil
|
||||||
|
import time
|
||||||
|
|
||||||
|
def getVersion(db):
|
||||||
|
cursor = db.execute('PRAGMA user_version')
|
||||||
|
return cursor.fetchone()[0]
|
||||||
|
|
||||||
def update(saveddata_engine):
|
def update(saveddata_engine):
|
||||||
checkPriceFailures(saveddata_engine)
|
currversion = getVersion(saveddata_engine)
|
||||||
checkApiDefaultChar(saveddata_engine)
|
|
||||||
checkFitBooster(saveddata_engine)
|
|
||||||
|
|
||||||
def checkPriceFailures(saveddata_engine):
|
if currversion == config.dbversion:
|
||||||
# Check if we have 'failed' column
|
return
|
||||||
try:
|
|
||||||
saveddata_engine.execute("SELECT failed FROM prices")
|
|
||||||
except sqlalchemy.exc.DatabaseError:
|
|
||||||
# As we don't have any important data there, let's just drop
|
|
||||||
# and recreate whole table
|
|
||||||
from eos.db.saveddata.price import prices_table
|
|
||||||
# Attempt to drop/create table only if it's already there
|
|
||||||
try:
|
|
||||||
prices_table.drop(saveddata_engine)
|
|
||||||
prices_table.create(saveddata_engine)
|
|
||||||
except sqlalchemy.exc.DatabaseError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
if currversion < config.dbversion:
|
||||||
|
# Automatically backup database
|
||||||
|
toFile = "%s/saveddata_migration_%d-%d_%s.db"%(
|
||||||
|
config.savePath,
|
||||||
|
currversion,
|
||||||
|
config.dbversion,
|
||||||
|
time.strftime("%Y%m%d_%H%M%S"))
|
||||||
|
|
||||||
def checkApiDefaultChar(saveddata_engine):
|
shutil.copyfile(config.saveDB, toFile)
|
||||||
try:
|
|
||||||
saveddata_engine.execute("SELECT * FROM characters LIMIT 1")
|
|
||||||
# If table doesn't exist, it means we're doing everything from scratch
|
|
||||||
# and sqlalchemy will process everything as needed
|
|
||||||
except sqlalchemy.exc.DatabaseError:
|
|
||||||
pass
|
|
||||||
# If not, we're running on top of existing DB
|
|
||||||
else:
|
|
||||||
# Check that we have columns
|
|
||||||
try:
|
|
||||||
saveddata_engine.execute("SELECT defaultChar, chars FROM characters LIMIT 1")
|
|
||||||
# If we don't, create them
|
|
||||||
# This is ugly as hell, but we can't use proper migrate packages as it
|
|
||||||
# will require us to rebuild skeletons, including mac
|
|
||||||
except sqlalchemy.exc.DatabaseError:
|
|
||||||
saveddata_engine.execute("ALTER TABLE characters ADD COLUMN defaultChar INTEGER;")
|
|
||||||
saveddata_engine.execute("ALTER TABLE characters ADD COLUMN chars VARCHAR;")
|
|
||||||
|
|
||||||
def checkFitBooster(saveddata_engine):
|
for version in xrange(currversion, config.dbversion):
|
||||||
try:
|
module = __import__('eos.db.migrations.upgrade%d'%(version+1), fromlist=True)
|
||||||
saveddata_engine.execute("SELECT * FROM fits LIMIT 1")
|
upgrade = getattr(module, "upgrade", False)
|
||||||
# If table doesn't exist, it means we're doing everything from scratch
|
if upgrade:
|
||||||
# and sqlalchemy will process everything as needed
|
upgrade(saveddata_engine)
|
||||||
except sqlalchemy.exc.DatabaseError:
|
|
||||||
pass
|
# when all is said and done, set version to current
|
||||||
# If not, we're running on top of existing DB
|
saveddata_engine.execute('PRAGMA user_version = %d'%config.dbversion)
|
||||||
else:
|
|
||||||
# Check that we have columns
|
|
||||||
try:
|
|
||||||
saveddata_engine.execute("SELECT booster FROM fits LIMIT 1")
|
|
||||||
# If we don't, create them
|
|
||||||
except sqlalchemy.exc.DatabaseError:
|
|
||||||
saveddata_engine.execute("ALTER TABLE fits ADD COLUMN booster BOOLEAN;")
|
|
||||||
# Set NULL data to 0 (needed in case of downgrade, see GH issue #62
|
|
||||||
saveddata_engine.execute("UPDATE fits SET booster = 0 WHERE booster IS NULL;")
|
|
||||||
|
|||||||
9
eos/db/migrations/__init__.py
Normal file
9
eos/db/migrations/__init__.py
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
"""
|
||||||
|
The migration module includes migration logic to update database scheme and/or
|
||||||
|
data for the user database.
|
||||||
|
|
||||||
|
To create a migration, simply create a file upgrade<migration number>.py and
|
||||||
|
define an upgrade() function with the logic. Please note that there must be as
|
||||||
|
many upgrade files as there are database versions (version 5 would include
|
||||||
|
upgrade files 1-5)
|
||||||
|
"""
|
||||||
97
eos/db/migrations/upgrade1.py
Normal file
97
eos/db/migrations/upgrade1.py
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
"""
|
||||||
|
Migration 1
|
||||||
|
|
||||||
|
- Alters fits table to introduce target resist attribute
|
||||||
|
- Converts modules based on Oceanus Module Tiericide
|
||||||
|
Some modules have been deleted, which causes pyfa to crash when fits are
|
||||||
|
loaded as they no longer exist in the database. We therefore replace these
|
||||||
|
modules with their new replacements
|
||||||
|
|
||||||
|
Based on http://community.eveonline.com/news/patch-notes/patch-notes-for-oceanus/
|
||||||
|
and output of itemDiff.py
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sqlalchemy
|
||||||
|
|
||||||
|
CONVERSIONS = {
|
||||||
|
6135: [ # Scoped Cargo Scanner
|
||||||
|
6133, # Interior Type-E Cargo Identifier
|
||||||
|
],
|
||||||
|
6527: [ # Compact Ship Scanner
|
||||||
|
6525, # Ta3 Perfunctory Vessel Probe
|
||||||
|
6529, # Speculative Ship Identifier I
|
||||||
|
6531, # Practical Type-E Ship Probe
|
||||||
|
],
|
||||||
|
6569: [ # Scoped Survey Scanner
|
||||||
|
6567, # ML-3 Amphilotite Mining Probe
|
||||||
|
6571, # Rock-Scanning Sensor Array I
|
||||||
|
6573, # 'Dactyl' Type-E Asteroid Analyzer
|
||||||
|
],
|
||||||
|
509: [ # 'Basic' Capacitor Flux Coil
|
||||||
|
8163, # Partial Power Plant Manager: Capacitor Flux
|
||||||
|
8165, # Alpha Reactor Control: Capacitor Flux
|
||||||
|
8167, # Type-E Power Core Modification: Capacitor Flux
|
||||||
|
8169, # Marked Generator Refitting: Capacitor Flux
|
||||||
|
],
|
||||||
|
8135: [ # Restrained Capacitor Flux Coil
|
||||||
|
8131, # Local Power Plant Manager: Capacitor Flux I
|
||||||
|
],
|
||||||
|
8133: [ # Compact Capacitor Flux Coil
|
||||||
|
8137, # Mark I Generator Refitting: Capacitor Flux
|
||||||
|
],
|
||||||
|
3469: [ # Basic Co-Processor
|
||||||
|
8744, # Nanoelectrical Co-Processor
|
||||||
|
8743, # Nanomechanical CPU Enhancer
|
||||||
|
8746, # Quantum Co-Processor
|
||||||
|
8745, # Photonic CPU Enhancer
|
||||||
|
15425, # Naiyon's Modified Co-Processor (never existed but convert
|
||||||
|
# anyway as some fits may include it)
|
||||||
|
],
|
||||||
|
8748: [ # Upgraded Co-Processor
|
||||||
|
8747, # Nanomechanical CPU Enhancer I
|
||||||
|
8750, # Quantum Co-Processor I
|
||||||
|
8749, # Photonic CPU Enhancer I
|
||||||
|
],
|
||||||
|
1351: [ # Basic Reactor Control Unit
|
||||||
|
8251, # Partial Power Plant Manager: Reaction Control
|
||||||
|
8253, # Alpha Reactor Control: Reaction Control
|
||||||
|
8257, # Marked Generator Refitting: Reaction Control
|
||||||
|
],
|
||||||
|
8263: [ # Compact Reactor Control Unit
|
||||||
|
8259, # Local Power Plant Manager: Reaction Control I
|
||||||
|
8265, # Mark I Generator Refitting: Reaction Control
|
||||||
|
8261, # Beta Reactor Control: Reaction Control I
|
||||||
|
],
|
||||||
|
16537: [ # Compact Micro Auxiliary Power Core
|
||||||
|
16539, # Micro B88 Core Augmentation
|
||||||
|
16541, # Micro K-Exhaust Core Augmentation
|
||||||
|
],
|
||||||
|
31936: [ # Navy Micro Auxiliary Power Core
|
||||||
|
16543, # Micro 'Vigor' Core Augmentation
|
||||||
|
],
|
||||||
|
8089: [ # Compact Light Missile Launcher
|
||||||
|
8093, # Prototype 'Arbalest' Light Missile Launcher
|
||||||
|
],
|
||||||
|
8091: [ # Ample Light Missile Launcher
|
||||||
|
7993, # Experimental TE-2100 Light Missile Launcher
|
||||||
|
],
|
||||||
|
# Surface Cargo Scanner I was removed from game, however no mention of
|
||||||
|
# replacement module in patch notes. Morphing it to meta 0 module to be safe
|
||||||
|
442: [ # Cargo Scanner I
|
||||||
|
6129, # Surface Cargo Scanner I
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
def upgrade(saveddata_engine):
|
||||||
|
# Update fits schema
|
||||||
|
try:
|
||||||
|
saveddata_engine.execute("SELECT targetResistsID FROM fits LIMIT 1")
|
||||||
|
except sqlalchemy.exc.DatabaseError:
|
||||||
|
saveddata_engine.execute("ALTER TABLE fits ADD COLUMN targetResistsID INTEGER;")
|
||||||
|
|
||||||
|
# Convert modules
|
||||||
|
for replacement_item, list in CONVERSIONS.iteritems():
|
||||||
|
for retired_item in list:
|
||||||
|
saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item))
|
||||||
|
saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item))
|
||||||
|
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
__all__ = ["character", "fit", "module", "user", "skill", "price",
|
__all__ = ["character", "fit", "module", "user", "skill", "price",
|
||||||
"booster", "drone", "implant", "fleet", "damagePattern",
|
"booster", "drone", "implant", "fleet", "damagePattern",
|
||||||
"miscData"]
|
"miscData", "targetResists"]
|
||||||
|
|||||||
@@ -26,10 +26,11 @@ from eos.db.saveddata.module import modules_table
|
|||||||
from eos.db.saveddata.drone import drones_table
|
from eos.db.saveddata.drone import drones_table
|
||||||
from eos.db.saveddata.cargo import cargo_table
|
from eos.db.saveddata.cargo import cargo_table
|
||||||
from eos.db.saveddata.implant import fitImplants_table
|
from eos.db.saveddata.implant import fitImplants_table
|
||||||
from eos.types import Fit, Module, User, Booster, Drone, Cargo, Implant, Character, DamagePattern
|
from eos.types import Fit, Module, User, Booster, Drone, Cargo, Implant, Character, DamagePattern, TargetResists
|
||||||
from eos.effectHandlerHelpers import HandledModuleList, HandledDroneList, \
|
from eos.effectHandlerHelpers import HandledModuleList, HandledDroneList, \
|
||||||
HandledImplantBoosterList, HandledProjectedModList, HandledProjectedDroneList, \
|
HandledImplantBoosterList, HandledProjectedModList, HandledProjectedDroneList, \
|
||||||
HandledProjectedFitList, HandledCargoList
|
HandledProjectedFitList, HandledCargoList
|
||||||
|
|
||||||
fits_table = Table("fits", saveddata_meta,
|
fits_table = Table("fits", saveddata_meta,
|
||||||
Column("ID", Integer, primary_key = True),
|
Column("ID", Integer, primary_key = True),
|
||||||
Column("ownerID", ForeignKey("users.ID"), nullable = True, index = True),
|
Column("ownerID", ForeignKey("users.ID"), nullable = True, index = True),
|
||||||
@@ -38,7 +39,8 @@ fits_table = Table("fits", saveddata_meta,
|
|||||||
Column("timestamp", Integer, nullable = False),
|
Column("timestamp", Integer, nullable = False),
|
||||||
Column("characterID", ForeignKey("characters.ID"), nullable = True),
|
Column("characterID", ForeignKey("characters.ID"), nullable = True),
|
||||||
Column("damagePatternID", ForeignKey("damagePatterns.ID"), nullable=True),
|
Column("damagePatternID", ForeignKey("damagePatterns.ID"), nullable=True),
|
||||||
Column("booster", Boolean, nullable = False, index = True, default = 0))
|
Column("booster", Boolean, nullable = False, index = True, default = 0),
|
||||||
|
Column("targetResistsID", ForeignKey("targetResists.ID"), nullable=True))
|
||||||
|
|
||||||
projectedFits_table = Table("projectedFits", saveddata_meta,
|
projectedFits_table = Table("projectedFits", saveddata_meta,
|
||||||
Column("sourceID", ForeignKey("fits.ID"), primary_key = True),
|
Column("sourceID", ForeignKey("fits.ID"), primary_key = True),
|
||||||
@@ -64,6 +66,7 @@ mapper(Fit, fits_table,
|
|||||||
secondary = fitImplants_table),
|
secondary = fitImplants_table),
|
||||||
"_Fit__character" : relation(Character, backref = "fits"),
|
"_Fit__character" : relation(Character, backref = "fits"),
|
||||||
"_Fit__damagePattern" : relation(DamagePattern),
|
"_Fit__damagePattern" : relation(DamagePattern),
|
||||||
|
"_Fit__targetResists" : relation(TargetResists),
|
||||||
"_Fit__projectedFits" : relation(Fit,
|
"_Fit__projectedFits" : relation(Fit,
|
||||||
primaryjoin = projectedFits_table.c.victimID == fits_table.c.ID,
|
primaryjoin = projectedFits_table.c.victimID == fits_table.c.ID,
|
||||||
secondaryjoin = fits_table.c.ID == projectedFits_table.c.sourceID,
|
secondaryjoin = fits_table.c.ID == projectedFits_table.c.sourceID,
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
from eos.db.util import processEager, processWhere
|
from eos.db.util import processEager, processWhere
|
||||||
from eos.db import saveddata_session, sd_lock
|
from eos.db import saveddata_session, sd_lock
|
||||||
from eos.types import User, Character, Fit, Price, DamagePattern, Fleet, MiscData, Wing, Squad
|
from eos.types import User, Character, Fit, Price, DamagePattern, Fleet, MiscData, Wing, Squad, TargetResists
|
||||||
from eos.db.saveddata.fleet import squadmembers_table
|
from eos.db.saveddata.fleet import squadmembers_table
|
||||||
from eos.db.saveddata.fit import projectedFits_table
|
from eos.db.saveddata.fit import projectedFits_table
|
||||||
from sqlalchemy.sql import and_
|
from sqlalchemy.sql import and_
|
||||||
@@ -322,6 +322,12 @@ def getDamagePatternList(eager=None):
|
|||||||
patterns = saveddata_session.query(DamagePattern).options(*eager).all()
|
patterns = saveddata_session.query(DamagePattern).options(*eager).all()
|
||||||
return patterns
|
return patterns
|
||||||
|
|
||||||
|
def getTargetResistsList(eager=None):
|
||||||
|
eager = processEager(eager)
|
||||||
|
with sd_lock:
|
||||||
|
patterns = saveddata_session.query(TargetResists).options(*eager).all()
|
||||||
|
return patterns
|
||||||
|
|
||||||
@cachedQuery(DamagePattern, 1, "lookfor")
|
@cachedQuery(DamagePattern, 1, "lookfor")
|
||||||
def getDamagePattern(lookfor, eager=None):
|
def getDamagePattern(lookfor, eager=None):
|
||||||
if isinstance(lookfor, int):
|
if isinstance(lookfor, int):
|
||||||
@@ -340,6 +346,24 @@ def getDamagePattern(lookfor, eager=None):
|
|||||||
raise TypeError("Need integer or string as argument")
|
raise TypeError("Need integer or string as argument")
|
||||||
return pattern
|
return pattern
|
||||||
|
|
||||||
|
@cachedQuery(TargetResists, 1, "lookfor")
|
||||||
|
def getTargetResists(lookfor, eager=None):
|
||||||
|
if isinstance(lookfor, int):
|
||||||
|
if eager is None:
|
||||||
|
with sd_lock:
|
||||||
|
pattern = saveddata_session.query(TargetResists).get(lookfor)
|
||||||
|
else:
|
||||||
|
eager = processEager(eager)
|
||||||
|
with sd_lock:
|
||||||
|
pattern = saveddata_session.query(TargetResists).options(*eager).filter(TargetResists.ID == lookfor).first()
|
||||||
|
elif isinstance(lookfor, basestring):
|
||||||
|
eager = processEager(eager)
|
||||||
|
with sd_lock:
|
||||||
|
pattern = saveddata_session.query(TargetResists).options(*eager).filter(TargetResists.name == lookfor).first()
|
||||||
|
else:
|
||||||
|
raise TypeError("Need integer or string as argument")
|
||||||
|
return pattern
|
||||||
|
|
||||||
def searchFits(nameLike, where=None, eager=None):
|
def searchFits(nameLike, where=None, eager=None):
|
||||||
if not isinstance(nameLike, basestring):
|
if not isinstance(nameLike, basestring):
|
||||||
raise TypeError("Need string as argument")
|
raise TypeError("Need string as argument")
|
||||||
@@ -361,7 +385,7 @@ def getSquadsIDsWithFitID(fitID):
|
|||||||
return squads
|
return squads
|
||||||
else:
|
else:
|
||||||
raise TypeError("Need integer as argument")
|
raise TypeError("Need integer as argument")
|
||||||
|
|
||||||
def getProjectedFits(fitID):
|
def getProjectedFits(fitID):
|
||||||
if isinstance(fitID, int):
|
if isinstance(fitID, int):
|
||||||
with sd_lock:
|
with sd_lock:
|
||||||
@@ -369,7 +393,7 @@ def getProjectedFits(fitID):
|
|||||||
fits = saveddata_session.query(Fit).filter(filter).all()
|
fits = saveddata_session.query(Fit).filter(filter).all()
|
||||||
return fits
|
return fits
|
||||||
else:
|
else:
|
||||||
raise TypeError("Need integer as argument")
|
raise TypeError("Need integer as argument")
|
||||||
|
|
||||||
def add(stuff):
|
def add(stuff):
|
||||||
with sd_lock:
|
with sd_lock:
|
||||||
|
|||||||
35
eos/db/saveddata/targetResists.py
Normal file
35
eos/db/saveddata/targetResists.py
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
#===============================================================================
|
||||||
|
# Copyright (C) 2014 Ryan Holmes
|
||||||
|
#
|
||||||
|
# This file is part of eos.
|
||||||
|
#
|
||||||
|
# eos is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# eos is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
|
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#===============================================================================
|
||||||
|
|
||||||
|
from sqlalchemy import Table, Column, Integer, Float, ForeignKey, String
|
||||||
|
from sqlalchemy.orm import mapper
|
||||||
|
|
||||||
|
from eos.db import saveddata_meta
|
||||||
|
from eos.types import TargetResists
|
||||||
|
|
||||||
|
targetResists_table = Table("targetResists", saveddata_meta,
|
||||||
|
Column("ID", Integer, primary_key = True),
|
||||||
|
Column("name", String),
|
||||||
|
Column("emAmount", Float),
|
||||||
|
Column("thermalAmount", Float),
|
||||||
|
Column("kineticAmount", Float),
|
||||||
|
Column("explosiveAmount", Float),
|
||||||
|
Column("ownerID", ForeignKey("users.ID"), nullable=True))
|
||||||
|
|
||||||
|
mapper(TargetResists, targetResists_table)
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# accerationControlCapNeedBonusPostPercentCapacitorNeedLocationShipGroupAfterburner
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules named like: Dynamic Fuel Valve (8 of 8)
|
# Modules named like: Dynamic Fuel Valve (8 of 8)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# accerationControlSkillAb&MwdSpeedBoost
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implant: Zor's Custom Navigation Hyper-Link
|
# Implant: Zor's Custom Navigation Hyper-Link
|
||||||
# Skill: Acceleration Control
|
# Skill: Acceleration Control
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# accerationControlSpeedFBonusPostPercentSpeedFactorLocationShipGroupAfterburner
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Eifyr and Co. 'Rogue' Acceleration Control AC (6 of 6)
|
# Implants named like: Eifyr and Co. 'Rogue' Acceleration Control AC (6 of 6)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# accessDifficultyBonusModifierRequiringArchaelogy
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules named like: Emission Scope Sharpener (8 of 8)
|
# Modules named like: Emission Scope Sharpener (8 of 8)
|
||||||
# Implant: Poteque 'Prospector' Archaeology AC-905
|
# Implant: Poteque 'Prospector' Archaeology AC-905
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# accessDifficultyBonusModifierRequiringHacking
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules named like: Memetic Algorithm Bank (8 of 8)
|
# Modules named like: Memetic Algorithm Bank (8 of 8)
|
||||||
# Implant: Poteque 'Prospector' Environmental Analysis EY-1005
|
# Implant: Poteque 'Prospector' Environmental Analysis EY-1005
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# adaptiveArmorHardener
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Module: Reactive Armor Hardener
|
# Module: Reactive Armor Hardener
|
||||||
type = "active"
|
type = "active"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# addToSignatureRadius2
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules from group: Shield Extender (37 of 37)
|
# Modules from group: Shield Extender (37 of 37)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# advancedDroneInterfacingMaxGroupDCUSkillLevel
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Skill: Advanced Drone Interfacing
|
# Skill: Advanced Drone Interfacing
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# afterburnerDurationBonusPostPercentDurationLocationShipModulesRequiringAfterburner
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Eifyr and Co. 'Rogue' Afterburner AB (6 of 6)
|
# Implants named like: Eifyr and Co. 'Rogue' Afterburner AB (6 of 6)
|
||||||
# Implant: Zor's Custom Navigation Link
|
# Implant: Zor's Custom Navigation Link
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# agilityMultiplierEffect
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules from group: Inertia Stabilizer (12 of 12)
|
# Modules from group: Inertia Stabilizer (12 of 12)
|
||||||
# Modules from group: Nanofiber Internal Structure (14 of 14)
|
# Modules from group: Nanofiber Internal Structure (14 of 14)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# agilityMultiplierEffectPassive
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules named like: Polycarbon Engine Housing (8 of 8)
|
# Modules named like: Polycarbon Engine Housing (8 of 8)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# ammoFallofMultiplier
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Charges from group: Advanced Artillery Ammo (6 of 6)
|
# Charges from group: Advanced Artillery Ammo (6 of 6)
|
||||||
# Charges from group: Advanced Autocannon Ammo (6 of 6)
|
# Charges from group: Advanced Autocannon Ammo (6 of 6)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# ammoInfluenceCapNeed
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Items from category: Charge (458 of 828)
|
# Items from category: Charge (458 of 828)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# ammoInfluenceRange
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Items from category: Charge (559 of 828)
|
# Items from category: Charge (559 of 828)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# ammoSpeedMultiplier
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Charges from group: Festival Charges (8 of 8)
|
# Charges from group: Festival Charges (8 of 8)
|
||||||
# Charges from group: Survey Probe (3 of 3)
|
# Charges from group: Survey Probe (3 of 3)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# ammoTrackingMultiplier
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Charges from group: Advanced Artillery Ammo (6 of 6)
|
# Charges from group: Advanced Artillery Ammo (6 of 6)
|
||||||
# Charges from group: Advanced Autocannon Ammo (6 of 6)
|
# Charges from group: Advanced Autocannon Ammo (6 of 6)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# angelsetbonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: grade Halo (18 of 18)
|
# Implants named like: grade Halo (18 of 18)
|
||||||
runTime = "early"
|
runTime = "early"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# antiWarpScramblingPassive
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules from group: Warp Core Stabilizer (8 of 8)
|
# Modules from group: Warp Core Stabilizer (8 of 8)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# archaeologySkillVirusBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules named like: Emission Scope Sharpener (8 of 8)
|
# Modules named like: Emission Scope Sharpener (8 of 8)
|
||||||
# Implant: Poteque 'Prospector' Archaeology AC-905
|
# Implant: Poteque 'Prospector' Archaeology AC-905
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# armorAllRepairSystemsAmountBonusPassive
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Exile Booster (4 of 4)
|
# Implants named like: Exile Booster (4 of 4)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# armorDamageAmountBonusCapitalArmorRepairers
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules named like: Auxiliary Nano Pump (8 of 8)
|
# Modules named like: Auxiliary Nano Pump (8 of 8)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# armoredSquadronCommand
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Skill: Armored Warfare Specialist
|
# Skill: Armored Warfare Specialist
|
||||||
runTime = "early"
|
runTime = "early"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# armoredWarfareMindlink
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implant: Armored Warfare Mindlink
|
# Implant: Armored Warfare Mindlink
|
||||||
# Implant: Federation Navy Warfare Mindlink
|
# Implant: Federation Navy Warfare Mindlink
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# armorHPBonusAdd
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules from group: Armor Reinforcer (57 of 57)
|
# Modules from group: Armor Reinforcer (57 of 57)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# armorHPBonusAddPassive
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Subsystems from group: Defensive Systems (16 of 16)
|
# Subsystems from group: Defensive Systems (16 of 16)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# armorHPMultiply
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules from group: Armor Coating (202 of 202)
|
# Modules from group: Armor Coating (202 of 202)
|
||||||
# Modules from group: Armor Plating Energized (187 of 187)
|
# Modules from group: Armor Plating Energized (187 of 187)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# armorReinforcerMassAdd
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules from group: Armor Reinforcer (57 of 57)
|
# Modules from group: Armor Reinforcer (57 of 57)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# armorRepair
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules from group: Armor Repair Unit (100 of 100)
|
# Modules from group: Armor Repair Unit (100 of 100)
|
||||||
runTime = "late"
|
runTime = "late"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# armorRepairProjectorMaxRangeBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Augoror
|
# Ship: Augoror
|
||||||
# Ship: Exequror
|
# Ship: Exequror
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# armorTankingGang
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Skill: Armored Warfare
|
# Skill: Armored Warfare
|
||||||
type = "gang"
|
type = "gang"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# armorTankingGang2
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implant: Armored Warfare Mindlink
|
# Implant: Armored Warfare Mindlink
|
||||||
# Implant: Federation Navy Warfare Mindlink
|
# Implant: Federation Navy Warfare Mindlink
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# armorUpgradesMassPenaltyReductionBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Skill: Armor Layering
|
# Skill: Armor Layering
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# astrogeologyMiningAmountBonusPostPercentMiningAmountLocationShipModulesRequiringMining
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Inherent Implants 'Highwall' Mining MX (3 of 3)
|
# Implants named like: Inherent Implants 'Highwall' Mining MX (3 of 3)
|
||||||
# Implant: Michi's Excavation Augmentor
|
# Implant: Michi's Excavation Augmentor
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# baseMaxScanDeviationModifierModuleOnline2None
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Variations of module: Scan Pinpointing Array I (2 of 2)
|
# Variations of module: Scan Pinpointing Array I (2 of 2)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# baseMaxScanDeviationModifierRequiringAstrometrics
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Poteque 'Prospector' Astrometric Pinpointing AP (3 of 3)
|
# Implants named like: Poteque 'Prospector' Astrometric Pinpointing AP (3 of 3)
|
||||||
# Skill: Astrometric Pinpointing
|
# Skill: Astrometric Pinpointing
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# baseSensorStrengthModifierModule
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Variations of module: Scan Rangefinding Array I (2 of 2)
|
# Variations of module: Scan Rangefinding Array I (2 of 2)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# baseSensorStrengthModifierRequiringAstrometrics
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules from group: Scan Probe Launcher (4 of 7)
|
# Modules from group: Scan Probe Launcher (4 of 7)
|
||||||
# Implants named like: Poteque 'Prospector' Astrometric Rangefinding AR (3 of 3)
|
# Implants named like: Poteque 'Prospector' Astrometric Rangefinding AR (3 of 3)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# bcLargeEnergyTurretCapacitorNeedBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Oracle
|
# Ship: Oracle
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# bcLargeEnergyTurretCPUNeedBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Oracle
|
# Ship: Oracle
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# bcLargeEnergyTurretPowerNeedBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Oracle
|
# Ship: Oracle
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# bcLargeHybridTurretCapacitorNeedBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Naga
|
# Ship: Naga
|
||||||
# Ship: Talos
|
# Ship: Talos
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# bcLargeHybridTurretCPUNeedBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Naga
|
# Ship: Naga
|
||||||
# Ship: Talos
|
# Ship: Talos
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# bcLargeHybridTurretPowerNeedBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Naga
|
# Ship: Naga
|
||||||
# Ship: Talos
|
# Ship: Talos
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# bcLargeProjectileTurretCPUNeedBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Tornado
|
# Ship: Tornado
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# bcLargeProjectileTurretPowerNeedBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Tornado
|
# Ship: Tornado
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# biologyTimeBonusFixed
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Eifyr and Co. 'Alchemist' Biology BY (2 of 2)
|
# Implants named like: Eifyr and Co. 'Alchemist' Biology BY (2 of 2)
|
||||||
# Skill: Biology
|
# Skill: Biology
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# blockadeRunnerCloakCpuPercentBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ships from group: Blockade Runner (4 of 4)
|
# Ships from group: Blockade Runner (4 of 4)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# boosterArmorHpPenalty
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants from group: Booster (12 of 37)
|
# Implants from group: Booster (12 of 37)
|
||||||
type = "boosterSideEffect"
|
type = "boosterSideEffect"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# boosterArmorRepairAmountPenalty
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants from group: Booster (9 of 37)
|
# Implants from group: Booster (9 of 37)
|
||||||
type = "boosterSideEffect"
|
type = "boosterSideEffect"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# boosterCapacitorCapacityPenalty
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Blue Pill Booster (3 of 5)
|
# Implants named like: Blue Pill Booster (3 of 5)
|
||||||
# Implants named like: Exile Booster (3 of 4)
|
# Implants named like: Exile Booster (3 of 4)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# boosterMaxVelocityPenalty
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants from group: Booster (12 of 37)
|
# Implants from group: Booster (12 of 37)
|
||||||
type = "boosterSideEffect"
|
type = "boosterSideEffect"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# boosterMissileExplosionCloudPenaltyFixed
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Exile Booster (3 of 4)
|
# Implants named like: Exile Booster (3 of 4)
|
||||||
# Implants named like: Mindflood Booster (3 of 4)
|
# Implants named like: Mindflood Booster (3 of 4)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# boosterMissileExplosionVelocityPenalty
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Blue Pill Booster (3 of 5)
|
# Implants named like: Blue Pill Booster (3 of 5)
|
||||||
type = "boosterSideEffect"
|
type = "boosterSideEffect"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# boosterMissileVelocityPenalty
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Crash Booster (3 of 4)
|
# Implants named like: Crash Booster (3 of 4)
|
||||||
# Implants named like: X Instinct Booster (3 of 4)
|
# Implants named like: X Instinct Booster (3 of 4)
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
# boosterModifyBoosterArmorPenalties
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
|
# Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2)
|
||||||
# Implants named like: grade Edge (10 of 12)
|
# Implants named like: grade Edge (10 of 12)
|
||||||
# Skill: Neurotoxin Control
|
# Skill: Neurotoxin Control
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
# boosterModifyBoosterMaxVelocityAndCapacitorPenalty
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
|
# Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2)
|
||||||
# Implants named like: grade Edge (10 of 12)
|
# Implants named like: grade Edge (10 of 12)
|
||||||
# Skill: Neurotoxin Control
|
# Skill: Neurotoxin Control
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
# boosterModifyBoosterMissilePenalty
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
|
# Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2)
|
||||||
# Implants named like: grade Edge (10 of 12)
|
# Implants named like: grade Edge (10 of 12)
|
||||||
# Skill: Neurotoxin Control
|
# Skill: Neurotoxin Control
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
# boosterModifyBoosterShieldPenalty
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
|
# Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2)
|
||||||
# Implants named like: grade Edge (10 of 12)
|
# Implants named like: grade Edge (10 of 12)
|
||||||
# Skill: Neurotoxin Control
|
# Skill: Neurotoxin Control
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
# boosterModifyBoosterTurretPenalty
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
|
# Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2)
|
||||||
# Implants named like: grade Edge (10 of 12)
|
# Implants named like: grade Edge (10 of 12)
|
||||||
# Skill: Neurotoxin Control
|
# Skill: Neurotoxin Control
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# boosterShieldCapacityPenalty
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants from group: Booster (12 of 37)
|
# Implants from group: Booster (12 of 37)
|
||||||
type = "boosterSideEffect"
|
type = "boosterSideEffect"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# boosterTurretFalloffPenalty
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Drop Booster (3 of 4)
|
# Implants named like: Drop Booster (3 of 4)
|
||||||
# Implants named like: X Instinct Booster (3 of 4)
|
# Implants named like: X Instinct Booster (3 of 4)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# boosterTurretOptimalRangePenalty
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants from group: Booster (9 of 37)
|
# Implants from group: Booster (9 of 37)
|
||||||
type = "boosterSideEffect"
|
type = "boosterSideEffect"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# boosterTurretTrackingPenalty
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Exile Booster (3 of 4)
|
# Implants named like: Exile Booster (3 of 4)
|
||||||
# Implants named like: Frentix Booster (3 of 4)
|
# Implants named like: Frentix Booster (3 of 4)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# caldarisetbonus3
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: High grade Talon (6 of 6)
|
# Implants named like: High grade Talon (6 of 6)
|
||||||
runTime = "early"
|
runTime = "early"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# caldarisetLGbonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Low grade Talon (6 of 6)
|
# Implants named like: Low grade Talon (6 of 6)
|
||||||
runTime = "early"
|
runTime = "early"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# caldariShipECMBurstOptimalRangeCB3
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Scorpion
|
# Ship: Scorpion
|
||||||
# Ship: Scorpion Ishukone Watch
|
# Ship: Scorpion Ishukone Watch
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
|
# caldariShipEwCapacitorNeedCC
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
|
# Ship: Chameleon
|
||||||
# Ship: Falcon
|
# Ship: Falcon
|
||||||
# Ship: Rook
|
# Ship: Rook
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# caldariShipEwCapacitorNeedCF2
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Variations of ship: Griffin (2 of 2)
|
# Variations of ship: Griffin (2 of 2)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# caldariShipEwFalloffRangeCB3
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Scorpion
|
# Ship: Scorpion
|
||||||
# Ship: Scorpion Ishukone Watch
|
# Ship: Scorpion Ishukone Watch
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# caldariShipEwFalloffRangeCC2
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Blackbird
|
# Ship: Blackbird
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# caldariShipEwOptimalRangeCB3
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Scorpion
|
# Ship: Scorpion
|
||||||
# Ship: Scorpion Ishukone Watch
|
# Ship: Scorpion Ishukone Watch
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# caldariShipEwOptimalRangeCC2
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Blackbird
|
# Ship: Blackbird
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# caldariShipEwStrengthCB
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Ship: Scorpion
|
# Ship: Scorpion
|
||||||
# Ship: Scorpion Ishukone Watch
|
# Ship: Scorpion Ishukone Watch
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capacitorCapacityAddPassive
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Subsystems from group: Engineering Systems (16 of 16)
|
# Subsystems from group: Engineering Systems (16 of 16)
|
||||||
# Subsystem: Tengu Offensive - Magnetic Infusion Basin
|
# Subsystem: Tengu Offensive - Magnetic Infusion Basin
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capacitorCapacityBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules from group: Capacitor Battery (27 of 27)
|
# Modules from group: Capacitor Battery (27 of 27)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
|
# capacitorCapacityMultiply
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules from group: Capacitor Flux Coil (12 of 12)
|
# Modules from group: Capacitor Flux Coil (6 of 6)
|
||||||
# Modules from group: Capacitor Power Relay (26 of 26)
|
# Modules from group: Capacitor Power Relay (26 of 26)
|
||||||
# Modules from group: Power Diagnostic System (31 of 31)
|
# Modules from group: Power Diagnostic System (31 of 31)
|
||||||
# Modules from group: Propulsion Module (107 of 107)
|
# Modules from group: Propulsion Module (107 of 107)
|
||||||
# Modules from group: Reactor Control Unit (28 of 28)
|
# Modules from group: Reactor Control Unit (22 of 22)
|
||||||
# Modules from group: Shield Flux Coil (11 of 11)
|
# Modules from group: Shield Flux Coil (11 of 11)
|
||||||
# Modules from group: Shield Power Relay (11 of 11)
|
# Modules from group: Shield Power Relay (11 of 11)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
# capacitorEmissionSystemskill
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Inherent Implants 'Squire' Energy Emission Systems ES (6 of 6)
|
# Implants named like: Inherent Implants 'Squire' Capacitor Emission Systems ES (6 of 6)
|
||||||
# Modules named like: Egress Port Maximizer (8 of 8)
|
# Modules named like: Egress Port Maximizer (8 of 8)
|
||||||
# Skill: Capacitor Emission Systems
|
# Skill: Capacitor Emission Systems
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capacityAddPassive
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Subsystems from group: Defensive Systems (16 of 16)
|
# Subsystems from group: Defensive Systems (16 of 16)
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capitalLauncherSkillCitadelEmDamage
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
|
# Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
|
||||||
# Skill: Citadel Torpedoes
|
# Skill: Citadel Torpedoes
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capitalLauncherSkillCitadelExplosiveDamage
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
|
# Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
|
||||||
# Skill: Citadel Torpedoes
|
# Skill: Citadel Torpedoes
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capitalLauncherSkillCitadelKineticDamage
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
|
# Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
|
||||||
# Skill: Citadel Torpedoes
|
# Skill: Citadel Torpedoes
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capitalLauncherSkillCitadelThermalDamage
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
|
# Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
|
||||||
# Skill: Citadel Torpedoes
|
# Skill: Citadel Torpedoes
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capitalLauncherSkillCruiseCitadelEmDamage1
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Skill: Citadel Cruise Missiles
|
# Skill: Citadel Cruise Missiles
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capitalLauncherSkillCruiseCitadelExplosiveDamage1
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Skill: Citadel Cruise Missiles
|
# Skill: Citadel Cruise Missiles
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capitalLauncherSkillCruiseCitadelKineticDamage1
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Skill: Citadel Cruise Missiles
|
# Skill: Citadel Cruise Missiles
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capitalLauncherSkillCruiseCitadelThermalDamage1
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Skill: Citadel Cruise Missiles
|
# Skill: Citadel Cruise Missiles
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capitalRemoteArmorRepairerCapNeedBonusSkill
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Variations of module: Capital Remote Repair Augmentor I (2 of 2)
|
# Variations of module: Capital Remote Repair Augmentor I (2 of 2)
|
||||||
# Skill: Capital Remote Armor Repair Systems
|
# Skill: Capital Remote Armor Repair Systems
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capitalRemoteEnergyTransferCapNeedBonusSkill
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Skill: Capital Capacitor Emission Systems
|
# Skill: Capital Capacitor Emission Systems
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capitalRemoteShieldTransferCapNeedBonusSkill
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Skill: Capital Shield Emission Systems
|
# Skill: Capital Shield Emission Systems
|
||||||
type = "passive"
|
type = "passive"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capitalRepairSystemsSkillDurationBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules named like: Nanobot Accelerator (8 of 8)
|
# Modules named like: Nanobot Accelerator (8 of 8)
|
||||||
# Skill: Capital Repair Systems
|
# Skill: Capital Repair Systems
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# capitalShieldOperationSkillCapacitorNeedBonus
|
||||||
|
#
|
||||||
# Used by:
|
# Used by:
|
||||||
# Modules named like: Core Defense Capacitor Safeguard (8 of 8)
|
# Modules named like: Core Defense Capacitor Safeguard (8 of 8)
|
||||||
# Skill: Capital Shield Operation
|
# Skill: Capital Shield Operation
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user