Compare commits
198 Commits
v1.6.1
...
singularit
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
edfd446e46 | ||
|
|
de0b03630a | ||
|
|
90a2a79d5b | ||
|
|
21efd6d06a | ||
|
|
ea288a6133 | ||
|
|
23baaa7dba | ||
|
|
8008c986d3 | ||
|
|
b9efc919ea | ||
|
|
3395f8ebe6 | ||
|
|
1d45102100 | ||
|
|
1694d74afa | ||
|
|
9c9f1dcefa | ||
|
|
a4ca2e90f9 | ||
|
|
dbfcfd9acf | ||
|
|
8c30ee3fd3 | ||
|
|
ca17d17232 | ||
|
|
b78c0a5845 | ||
|
|
ef6e25bfce | ||
|
|
e81f7eb765 | ||
|
|
26122f6da7 | ||
|
|
cca7f1112a | ||
|
|
c809a614f9 | ||
|
|
2c366faa66 | ||
|
|
06252d761d | ||
|
|
bb8d5d0d65 | ||
|
|
7606bded40 | ||
|
|
daaf48d02a | ||
|
|
d18cf7b3b0 | ||
|
|
33a0c10650 | ||
|
|
2077655694 | ||
|
|
0dc3cbb7c7 | ||
|
|
a3c19f6f2b | ||
|
|
f97b037011 | ||
|
|
dd3dd799b2 | ||
|
|
ac881ac371 | ||
|
|
d734ccbf0d | ||
|
|
024e0ad4f5 | ||
|
|
545d98883a | ||
|
|
742abc3250 | ||
|
|
294e213ac2 | ||
|
|
557f32ab91 | ||
|
|
e5430cac84 | ||
|
|
39c14b62fd | ||
|
|
940035fa8c | ||
|
|
5eaaaf070b | ||
|
|
0bc9264c28 | ||
|
|
cb1de9589e | ||
|
|
370e34cff9 | ||
|
|
28c3fc720f | ||
|
|
04b3a687fc | ||
|
|
629f6e60a4 | ||
|
|
f801d7905c | ||
|
|
694a2a3d9b | ||
|
|
222888984a | ||
|
|
bb96ecb647 | ||
|
|
e082077dfc | ||
|
|
a31769bde3 | ||
|
|
be7e8be85b | ||
|
|
b16d2eae15 | ||
|
|
0ef05ffaf8 | ||
|
|
9ee7671a3c | ||
|
|
ca301f8d5b | ||
|
|
471261275a | ||
|
|
55f2f3bfe8 | ||
|
|
3ce673d8af | ||
|
|
3e2053b2dd | ||
|
|
931e48d9a0 | ||
|
|
6c19f446be | ||
|
|
d4842c2f8e | ||
|
|
dc77ee9353 | ||
|
|
6d29fd6bc1 | ||
|
|
cbcd5ccca5 | ||
|
|
30d2ab23ad | ||
|
|
f4f028b843 | ||
|
|
ef62f102bc | ||
|
|
7b8bb79cbe | ||
|
|
3a26790109 | ||
|
|
c861adc5ed | ||
|
|
36a3ac70b6 | ||
|
|
54d1b35ce7 | ||
|
|
675213f20f | ||
|
|
3a9e1f8b85 | ||
|
|
e520758334 | ||
|
|
073309de0a | ||
|
|
1bce724190 | ||
|
|
2c47d0758e | ||
|
|
8f7ae4b00c | ||
|
|
f11f3bfb79 | ||
|
|
68703f3db5 | ||
|
|
ad18560412 | ||
|
|
d3def54b5a | ||
|
|
27d72ed909 | ||
|
|
55e45b6bc1 | ||
|
|
252f56732b | ||
|
|
d52e88cdaa | ||
|
|
371e33764e | ||
|
|
9b8b7aba07 | ||
|
|
0a6274474e | ||
|
|
0ff69068c0 | ||
|
|
731477b366 | ||
|
|
0295f04ec4 | ||
|
|
059af217aa | ||
|
|
2a391fa38b | ||
|
|
88b1426fe0 | ||
|
|
07da5aa861 | ||
|
|
192d6f4605 | ||
|
|
487f65d62b | ||
|
|
c202aefd2e | ||
|
|
0ed91e4079 | ||
|
|
9c2a667635 | ||
|
|
19579fb087 | ||
|
|
ea77e6851e | ||
|
|
1c3f9ccf5b | ||
|
|
e42671fbec | ||
|
|
18c86daea6 | ||
|
|
c59b818677 | ||
|
|
71bf1556a1 | ||
|
|
26e50f2e8a | ||
|
|
25e30672fe | ||
|
|
e8268633e3 | ||
|
|
1b3c058eab | ||
|
|
adcae42ae7 | ||
|
|
238712e62c | ||
|
|
f2b959895e | ||
|
|
ffb7719937 | ||
|
|
3c1bf22e87 | ||
|
|
e0488dce4f | ||
|
|
88074c8516 | ||
|
|
359840aee8 | ||
|
|
77e3a0f666 | ||
|
|
3d4eef2466 | ||
|
|
663cf7104c | ||
|
|
0d6a55dcb6 | ||
|
|
85608616dd | ||
|
|
d5ce666d8d | ||
|
|
2bff11e5ab | ||
|
|
5adaaac75e | ||
|
|
a49269b759 | ||
|
|
a96efaee1a | ||
|
|
299de38bf6 | ||
|
|
b29019f0a7 | ||
|
|
da15b63831 | ||
|
|
20b2f1e5fc | ||
|
|
f1cdabf37c | ||
|
|
94e1c7aba3 | ||
|
|
797db36a42 | ||
|
|
ac18c58a0a | ||
|
|
281850d7df | ||
|
|
2e460adbc9 | ||
|
|
5660b2b8ed | ||
|
|
de9fbd672f | ||
|
|
85029f6be8 | ||
|
|
337db326fd | ||
|
|
795230dae6 | ||
|
|
022a929399 | ||
|
|
b64238634a | ||
|
|
4b0e0300ad | ||
|
|
7762bb365f | ||
|
|
dfec7d8fa2 | ||
|
|
5c5ec60efd | ||
|
|
2a7e35ff6f | ||
|
|
d7ab709d52 | ||
|
|
831478e034 | ||
|
|
d0b5f3ad78 | ||
|
|
190c1f135f | ||
|
|
374d6d6d34 | ||
|
|
edbdaf5631 | ||
|
|
23a71e7448 | ||
|
|
892c5c5b60 | ||
|
|
081e32da6f | ||
|
|
7100e8997b | ||
|
|
9a8642e789 | ||
|
|
a565abe6f7 | ||
|
|
b93b59fe4d | ||
|
|
9782ca3a29 | ||
|
|
f9fd894c9f | ||
|
|
ee8395e8fd | ||
|
|
7836506444 | ||
|
|
8df7593223 | ||
|
|
8351b0fc9d | ||
|
|
88ee1d60be | ||
|
|
dda1494b90 | ||
|
|
f53384c4c2 | ||
|
|
d4af877e47 | ||
|
|
5242c6df60 | ||
|
|
8c1d14ec4a | ||
|
|
f187caa549 | ||
|
|
70d52fd0b2 | ||
|
|
222ee22fe3 | ||
|
|
76f1f217e1 | ||
|
|
6f42e7c286 | ||
|
|
ff55f2817b | ||
|
|
198ee8d129 | ||
|
|
7db13bd3ba | ||
|
|
5be0d4b70e | ||
|
|
a603a4359a | ||
|
|
b4f4024903 | ||
|
|
df18651b4f |
6
.gitignore
vendored
6
.gitignore
vendored
@@ -11,8 +11,12 @@
|
||||
|
||||
#Patch files
|
||||
*.patch
|
||||
|
||||
#Personal
|
||||
/saveddata
|
||||
saveddata/
|
||||
|
||||
#PyCharm
|
||||
.idea/
|
||||
|
||||
#Pyfa file
|
||||
pyfaFits.html
|
||||
|
||||
185
config.py
185
config.py
@@ -1,90 +1,95 @@
|
||||
import os
|
||||
import sys
|
||||
|
||||
# Load variable overrides specific to distribution type
|
||||
try:
|
||||
import configforced
|
||||
except ImportError:
|
||||
configforced = None
|
||||
|
||||
# Turns on debug mode
|
||||
debug = False
|
||||
# Defines if our saveddata will be in pyfa root or not
|
||||
saveInRoot = False
|
||||
|
||||
# Version data
|
||||
version = "1.6.1"
|
||||
tag = "Stable"
|
||||
expansionName = "Phoebe"
|
||||
expansionVersion = "1.0"
|
||||
evemonMinVersion = "4081"
|
||||
|
||||
# Database version (int ONLY)
|
||||
# Increment every time we need to flag for user database upgrade/modification
|
||||
dbversion = 2
|
||||
|
||||
pyfaPath = None
|
||||
savePath = None
|
||||
staticPath = None
|
||||
saveDB = None
|
||||
gameDB = None
|
||||
|
||||
def defPaths():
|
||||
global pyfaPath
|
||||
global savePath
|
||||
global staticPath
|
||||
global saveDB
|
||||
global gameDB
|
||||
global saveInRoot
|
||||
# The main pyfa directory which contains run.py
|
||||
# Python 2.X uses ANSI by default, so we need to convert the character encoding
|
||||
pyfaPath = getattr(configforced, "pyfaPath", pyfaPath)
|
||||
if pyfaPath is None:
|
||||
pyfaPath = unicode(os.path.dirname(os.path.realpath(os.path.abspath(
|
||||
sys.modules['__main__'].__file__))), sys.getfilesystemencoding())
|
||||
|
||||
# Where we store the saved fits etc, default is the current users home directory
|
||||
if saveInRoot is True:
|
||||
savePath = getattr(configforced, "savePath", None)
|
||||
if savePath is None:
|
||||
savePath = os.path.join(pyfaPath, "saveddata")
|
||||
else:
|
||||
savePath = getattr(configforced, "savePath", None)
|
||||
if savePath is None:
|
||||
savePath = unicode(os.path.expanduser(os.path.join("~", ".pyfa")),
|
||||
sys.getfilesystemencoding())
|
||||
|
||||
# Redirect stderr to file if we're requested to do so
|
||||
stderrToFile = getattr(configforced, "stderrToFile", None)
|
||||
if stderrToFile is True:
|
||||
if not os.path.exists(savePath):
|
||||
os.mkdir(savePath)
|
||||
sys.stderr = open(os.path.join(savePath, "error_log.txt"), "w")
|
||||
|
||||
# Same for stdout
|
||||
stdoutToFile = getattr(configforced, "stdoutToFile", None)
|
||||
if stdoutToFile is True:
|
||||
if not os.path.exists(savePath):
|
||||
os.mkdir(savePath)
|
||||
sys.stdout = open(os.path.join(savePath, "output_log.txt"), "w")
|
||||
|
||||
# Static EVE Data from the staticdata repository, should be in the staticdata
|
||||
# directory in our pyfa directory
|
||||
staticPath = os.path.join(pyfaPath, "staticdata")
|
||||
|
||||
# The database where we store all the fits etc
|
||||
saveDB = os.path.join(savePath, "saveddata.db")
|
||||
|
||||
# The database where the static EVE data from the datadump is kept.
|
||||
# This is not the standard sqlite datadump but a modified version created by eos
|
||||
# maintenance script
|
||||
gameDB = os.path.join(staticPath, "eve.db")
|
||||
|
||||
## DON'T MODIFY ANYTHING BELOW ##
|
||||
import eos.config
|
||||
|
||||
#Caching modifiers, disable all gamedata caching, its unneeded.
|
||||
eos.config.gamedataCache = False
|
||||
# saveddata db location modifier, shouldn't ever need to touch this
|
||||
eos.config.saveddata_connectionstring = "sqlite:///" + saveDB + "?check_same_thread=False"
|
||||
eos.config.gamedata_connectionstring = "sqlite:///" + gameDB + "?check_same_thread=False"
|
||||
import os
|
||||
import sys
|
||||
|
||||
# Load variable overrides specific to distribution type
|
||||
try:
|
||||
import configforced
|
||||
except ImportError:
|
||||
configforced = None
|
||||
|
||||
# Turns on debug mode
|
||||
debug = False
|
||||
# Defines if our saveddata will be in pyfa root or not
|
||||
saveInRoot = False
|
||||
|
||||
# Version data
|
||||
version = "1.12.1"
|
||||
tag = "git"
|
||||
expansionName = "Singularity"
|
||||
expansionVersion = "908326"
|
||||
evemonMinVersion = "4081"
|
||||
|
||||
# Database version (int ONLY)
|
||||
# Increment every time we need to flag for user database upgrade/modification
|
||||
dbversion = 7
|
||||
|
||||
pyfaPath = None
|
||||
savePath = None
|
||||
staticPath = None
|
||||
saveDB = None
|
||||
gameDB = None
|
||||
|
||||
# TODO: move back to pyfa.py main loop
|
||||
# We moved it here just to avoid rebuilding windows skeleton for now (any change to pyfa.py needs it)
|
||||
import logging
|
||||
logging.basicConfig()
|
||||
|
||||
def defPaths():
|
||||
global pyfaPath
|
||||
global savePath
|
||||
global staticPath
|
||||
global saveDB
|
||||
global gameDB
|
||||
global saveInRoot
|
||||
# The main pyfa directory which contains run.py
|
||||
# Python 2.X uses ANSI by default, so we need to convert the character encoding
|
||||
pyfaPath = getattr(configforced, "pyfaPath", pyfaPath)
|
||||
if pyfaPath is None:
|
||||
pyfaPath = unicode(os.path.dirname(os.path.realpath(os.path.abspath(
|
||||
sys.modules['__main__'].__file__))), sys.getfilesystemencoding())
|
||||
|
||||
# Where we store the saved fits etc, default is the current users home directory
|
||||
if saveInRoot is True:
|
||||
savePath = getattr(configforced, "savePath", None)
|
||||
if savePath is None:
|
||||
savePath = os.path.join(pyfaPath, "saveddata")
|
||||
else:
|
||||
savePath = getattr(configforced, "savePath", None)
|
||||
if savePath is None:
|
||||
savePath = unicode(os.path.expanduser(os.path.join("~", ".pyfa")),
|
||||
sys.getfilesystemencoding())
|
||||
|
||||
# Redirect stderr to file if we're requested to do so
|
||||
stderrToFile = getattr(configforced, "stderrToFile", None)
|
||||
if stderrToFile is True:
|
||||
if not os.path.exists(savePath):
|
||||
os.mkdir(savePath)
|
||||
sys.stderr = open(os.path.join(savePath, "error_log.txt"), "w")
|
||||
|
||||
# Same for stdout
|
||||
stdoutToFile = getattr(configforced, "stdoutToFile", None)
|
||||
if stdoutToFile is True:
|
||||
if not os.path.exists(savePath):
|
||||
os.mkdir(savePath)
|
||||
sys.stdout = open(os.path.join(savePath, "output_log.txt"), "w")
|
||||
|
||||
# Static EVE Data from the staticdata repository, should be in the staticdata
|
||||
# directory in our pyfa directory
|
||||
staticPath = os.path.join(pyfaPath, "staticdata")
|
||||
|
||||
# The database where we store all the fits etc
|
||||
saveDB = os.path.join(savePath, "saveddata.db")
|
||||
|
||||
# The database where the static EVE data from the datadump is kept.
|
||||
# This is not the standard sqlite datadump but a modified version created by eos
|
||||
# maintenance script
|
||||
gameDB = os.path.join(staticPath, "eve.db")
|
||||
|
||||
## DON'T MODIFY ANYTHING BELOW ##
|
||||
import eos.config
|
||||
|
||||
#Caching modifiers, disable all gamedata caching, its unneeded.
|
||||
eos.config.gamedataCache = False
|
||||
# saveddata db location modifier, shouldn't ever need to touch this
|
||||
eos.config.saveddata_connectionstring = "sqlite:///" + saveDB + "?check_same_thread=False"
|
||||
eos.config.gamedata_connectionstring = "sqlite:///" + gameDB + "?check_same_thread=False"
|
||||
|
||||
@@ -82,18 +82,25 @@ class CapSimulator(object):
|
||||
if self.scale:
|
||||
duration, capNeed = self.scale_activation(duration, capNeed)
|
||||
|
||||
if self.stagger:
|
||||
duration = int(duration/amount)
|
||||
else:
|
||||
capNeed *= amount
|
||||
|
||||
period = lcm(period, duration)
|
||||
|
||||
# set clipSize to infinite if reloads are disabled unless it's
|
||||
# a cap booster module.
|
||||
if not self.reload and capNeed > 0:
|
||||
clipSize = 0
|
||||
|
||||
if self.stagger:
|
||||
if clipSize == 0:
|
||||
duration = int(duration/amount)
|
||||
else:
|
||||
stagger_amount = (duration*clipSize+10000)/(amount*clipSize)
|
||||
for i in range(1, amount):
|
||||
heapq.heappush(self.state,
|
||||
[i*stagger_amount, duration,
|
||||
capNeed, 0, clipSize])
|
||||
else:
|
||||
capNeed *= amount
|
||||
|
||||
period = lcm(period, duration)
|
||||
|
||||
# period optimization doesn't work when reloads are active.
|
||||
if clipSize:
|
||||
disable_period = True
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import os.path
|
||||
from os.path import realpath, join, dirname, abspath
|
||||
import sys
|
||||
|
||||
debug = False
|
||||
gamedataCache = True
|
||||
saveddataCache = True
|
||||
gamedata_connectionstring = 'sqlite:///' + os.path.expanduser(os.path.join("~", ".pyfa","eve.db"))
|
||||
gamedata_connectionstring = 'sqlite:///' + unicode(realpath(join(dirname(abspath(__file__)), "..", "staticdata", "eve.db")), sys.getfilesystemencoding())
|
||||
saveddata_connectionstring = 'sqlite:///:memory:'
|
||||
|
||||
#Autodetect path, only change if the autodetection bugs out.
|
||||
path = os.path.dirname(unicode(__file__, sys.getfilesystemencoding()))
|
||||
path = dirname(unicode(__file__, sys.getfilesystemencoding()))
|
||||
|
||||
@@ -40,6 +40,15 @@ gamedata_meta = MetaData()
|
||||
gamedata_meta.bind = gamedata_engine
|
||||
gamedata_session = sessionmaker(bind=gamedata_engine, autoflush=False, expire_on_commit=False)()
|
||||
|
||||
# This should be moved elsewhere, maybe as an actual query. Current, without try-except, it breaks when making a new
|
||||
# game db because we haven't reached gamedata_meta.create_all()
|
||||
try:
|
||||
config.gamedata_version = gamedata_session.execute(
|
||||
"SELECT `field_value` FROM `metadata` WHERE `field_name` LIKE 'client_build'"
|
||||
).fetchone()[0]
|
||||
except:
|
||||
config.gamedata_version = None
|
||||
|
||||
saveddata_connectionstring = config.saveddata_connectionstring
|
||||
if saveddata_connectionstring is not None:
|
||||
if callable(saveddata_connectionstring):
|
||||
@@ -65,7 +74,8 @@ from eos.db.saveddata.queries import getUser, getCharacter, getFit, getFitsWithS
|
||||
getCharacterList, getPrice, getDamagePatternList, getDamagePattern, \
|
||||
getFitList, getFleetList, getFleet, save, remove, commit, add, \
|
||||
getCharactersForUser, getMiscData, getSquadsIDsWithFitID, getWing, \
|
||||
getSquad, getBoosterFits, getProjectedFits, getTargetResistsList, getTargetResists
|
||||
getSquad, getBoosterFits, getProjectedFits, getTargetResistsList, getTargetResists,\
|
||||
clearPrices, countAllFits
|
||||
|
||||
#If using in memory saveddata, you'll want to reflect it so the data structure is good.
|
||||
if config.saveddata_connectionstring == "sqlite:///:memory:":
|
||||
@@ -74,3 +84,4 @@ if config.saveddata_connectionstring == "sqlite:///:memory:":
|
||||
def rollback():
|
||||
with sd_lock:
|
||||
saveddata_session.rollback()
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ items_table = Table("invtypes", gamedata_meta,
|
||||
Column("typeName", String, index=True),
|
||||
Column("description", String),
|
||||
Column("raceID", Integer),
|
||||
Column("factionID", Integer),
|
||||
Column("volume", Float),
|
||||
Column("mass", Float),
|
||||
Column("capacity", Float),
|
||||
|
||||
@@ -23,7 +23,7 @@ from eos.types import MetaData
|
||||
from eos.db import gamedata_meta
|
||||
|
||||
metadata_table = Table("metadata", gamedata_meta,
|
||||
Column("fieldName", String, primary_key=True),
|
||||
Column("fieldValue", String))
|
||||
Column("field_name", String, primary_key=True),
|
||||
Column("field_value", String))
|
||||
|
||||
mapper(MetaData, metadata_table)
|
||||
|
||||
13
eos/db/migrations/upgrade3.py
Normal file
13
eos/db/migrations/upgrade3.py
Normal file
@@ -0,0 +1,13 @@
|
||||
"""
|
||||
Migration 3
|
||||
|
||||
- Adds mode column for fits (t3 dessy)
|
||||
"""
|
||||
|
||||
import sqlalchemy
|
||||
|
||||
def upgrade(saveddata_engine):
|
||||
try:
|
||||
saveddata_engine.execute("SELECT modeID FROM fits LIMIT 1")
|
||||
except sqlalchemy.exc.DatabaseError:
|
||||
saveddata_engine.execute("ALTER TABLE fits ADD COLUMN modeID INTEGER")
|
||||
141
eos/db/migrations/upgrade4.py
Normal file
141
eos/db/migrations/upgrade4.py
Normal file
@@ -0,0 +1,141 @@
|
||||
"""
|
||||
Migration 4
|
||||
|
||||
- Converts modules based on Proteus Module Tiericide
|
||||
Some modules have been unpublished (and unpublished module attributes are removed
|
||||
from database), which causes pyfa to crash. We therefore replace these
|
||||
modules with their new replacements
|
||||
|
||||
Based on http://community.eveonline.com/news/patch-notes/patch-notes-for-proteus/
|
||||
and output of itemDiff.py
|
||||
"""
|
||||
|
||||
|
||||
CONVERSIONS = {
|
||||
506: ( # 'Basic' Capacitor Power Relay
|
||||
8205, # Alpha Reactor Control: Capacitor Power Relay
|
||||
8209, # Marked Generator Refitting: Capacitor Power Relay
|
||||
8203, # Partial Power Plant Manager: Capacity Power Relay
|
||||
8207, # Type-E Power Core Modification: Capacitor Power Relay
|
||||
),
|
||||
8177: ( # Mark I Compact Capacitor Power Relay
|
||||
8173, # Beta Reactor Control: Capacitor Power Relay I
|
||||
),
|
||||
8175: ( # Type-D Restrained Capacitor Power Relay
|
||||
8171, # Local Power Plant Manager: Capacity Power Relay I
|
||||
),
|
||||
|
||||
421: ( # 'Basic' Capacitor Recharger
|
||||
4425, # AGM Capacitor Charge Array,
|
||||
4421, # F-a10 Buffer Capacitor Regenerator
|
||||
4423, # Industrial Capacitor Recharger
|
||||
4427, # Secondary Parallel Link-Capacitor
|
||||
),
|
||||
4435: ( # Eutectic Compact Cap Recharger
|
||||
4433, # Barton Reactor Capacitor Recharger I
|
||||
4431, # F-b10 Nominal Capacitor Regenerator
|
||||
4437, # Fixed Parallel Link-Capacitor I
|
||||
),
|
||||
|
||||
1315: ( # 'Basic' Expanded Cargohold
|
||||
5483, # Alpha Hull Mod Expanded Cargo
|
||||
5479, # Marked Modified SS Expanded Cargo
|
||||
5481, # Partial Hull Conversion Expanded Cargo
|
||||
5485, # Type-E Altered SS Expanded Cargo
|
||||
),
|
||||
5493: ( # Type-D Restrained Expanded Cargo
|
||||
5491, # Beta Hull Mod Expanded Cargo
|
||||
5489, # Local Hull Conversion Expanded Cargo I
|
||||
5487, # Mark I Modified SS Expanded Cargo
|
||||
),
|
||||
|
||||
1401: ( # 'Basic' Inertial Stabilizers
|
||||
5523, # Alpha Hull Mod Inertial Stabilizers
|
||||
5521, # Partial Hull Conversion Inertial Stabilizers
|
||||
5525, # Type-E Altered SS Inertial Stabilizers
|
||||
),
|
||||
5533: ( # Type-D Restrained Inertial Stabilizers
|
||||
5531, # Beta Hull Mod Inertial Stabilizers
|
||||
5529, # Local Hull Conversion Inertial Stabilizers I
|
||||
5527, # Mark I Modified SS Inertial Stabilizers
|
||||
5519, # Marked Modified SS Inertial Stabilizers
|
||||
),
|
||||
|
||||
5239: ( # EP-S Gaussian Scoped Mining Laser
|
||||
5241, # Dual Diode Mining Laser I
|
||||
),
|
||||
5233: ( # Single Diode Basic Mining Laser
|
||||
5231, # EP-R Argon Ion Basic Excavation Pulse
|
||||
5237, # Rubin Basic Particle Bore Stream
|
||||
5235, # Xenon Basic Drilling Beam
|
||||
),
|
||||
5245: ( # Particle Bore Compact Mining Laser
|
||||
5243, # XeCl Drilling Beam I
|
||||
),
|
||||
|
||||
22619: ( # Frigoris Restrained Ice Harvester Upgrade
|
||||
22617, # Crisium Ice Harvester Upgrade
|
||||
),
|
||||
22611: ( # Elara Restrained Mining Laser Upgrade
|
||||
22609, # Erin Mining Laser Upgrade
|
||||
),
|
||||
|
||||
1242: ( # 'Basic' Nanofiber Internal Structure
|
||||
5591, # Alpha Hull Mod Nanofiber Structure
|
||||
5595, # Marked Modified SS Nanofiber Structure
|
||||
5559, # Partial Hull Conversion Nanofiber Structure
|
||||
5593, # Type-E Altered SS Nanofiber Structure
|
||||
),
|
||||
5599: ( # Type-D Restrained Nanofiber Structure
|
||||
5597, # Beta Hull Mod Nanofiber Structure
|
||||
5561, # Local Hull Conversion Nanofiber Structure I
|
||||
5601, # Mark I Modified SS Nanofiber Structure
|
||||
),
|
||||
|
||||
1192: ( # 'Basic' Overdrive Injector System
|
||||
5613, # Alpha Hull Mod Overdrive Injector
|
||||
5617, # Marked Modified SS Overdrive Injector
|
||||
5611, # Partial Hull Conversion Overdrive Injector
|
||||
5615, # Type-E Altered SS Overdrive Injector
|
||||
),
|
||||
5631: ( # Type-D Restrained Overdrive Injector
|
||||
5629, # Beta Hull Mod Overdrive Injector
|
||||
5627, # Local Hull Conversion Overdrive Injector I
|
||||
5633, # Mark I Modified SS Overdrive Injector
|
||||
),
|
||||
|
||||
1537: ( # 'Basic' Power Diagnostic System
|
||||
8213, # Alpha Reactor Control: Diagnostic System
|
||||
8217, # Marked Generator Refitting: Diagnostic System
|
||||
8211, # Partial Power Plant Manager: Diagnostic System
|
||||
8215, # Type-E Power Core Modification: Diagnostic System
|
||||
8255, # Type-E Power Core Modification: Reaction Control
|
||||
),
|
||||
8225: ( # Mark I Compact Power Diagnostic System
|
||||
8221, # Beta Reactor Control: Diagnostic System I
|
||||
8219, # Local Power Plant Manager: Diagnostic System I
|
||||
8223, # Type-D Power Core Modification: Diagnostic System
|
||||
),
|
||||
|
||||
1240: ( # 'Basic' Reinforced Bulkheads
|
||||
5677, # Alpha Hull Mod Reinforced Bulkheads
|
||||
5681, # Marked Modified SS Reinforced Bulkheads
|
||||
5675, # Partial Hull Conversion Reinforced Bulkheads
|
||||
5679, # Type-E Altered SS Reinforced Bulkheads
|
||||
),
|
||||
5649: ( # Mark I Compact Reinforced Bulkheads
|
||||
5645, # Beta Hull Mod Reinforced Bulkheads
|
||||
),
|
||||
5647: ( # Type-D Restrained Reinforced Bulkheads
|
||||
5643, # Local Hull Conversion Reinforced Bulkheads I
|
||||
),
|
||||
}
|
||||
|
||||
def upgrade(saveddata_engine):
|
||||
|
||||
# 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))
|
||||
|
||||
8
eos/db/migrations/upgrade5.py
Normal file
8
eos/db/migrations/upgrade5.py
Normal file
@@ -0,0 +1,8 @@
|
||||
"""
|
||||
Migration 5
|
||||
|
||||
Simply deletes damage profiles with a blank name. See GH issue #256
|
||||
"""
|
||||
|
||||
def upgrade(saveddata_engine):
|
||||
saveddata_engine.execute('DELETE FROM damagePatterns WHERE name LIKE ?', ("",))
|
||||
9
eos/db/migrations/upgrade6.py
Normal file
9
eos/db/migrations/upgrade6.py
Normal file
@@ -0,0 +1,9 @@
|
||||
"""
|
||||
Migration 6
|
||||
|
||||
Overwrites damage profile 0 to reset bad uniform values (bad values set with bug)
|
||||
"""
|
||||
|
||||
def upgrade(saveddata_engine):
|
||||
saveddata_engine.execute('DELETE FROM damagePatterns WHERE name LIKE ? OR ID LIKE ?', ("Uniform", "1"))
|
||||
saveddata_engine.execute('INSERT INTO damagePatterns VALUES (?, ?, ?, ?, ?, ?, ?)', (1, "Uniform", 25, 25, 25, 25, None))
|
||||
24
eos/db/migrations/upgrade7.py
Normal file
24
eos/db/migrations/upgrade7.py
Normal file
@@ -0,0 +1,24 @@
|
||||
"""
|
||||
Migration 7
|
||||
|
||||
- Converts Scorpion Ishukone Watch to Scorpion
|
||||
|
||||
Mosaic introduced proper skinning system, and Ishukone Scorp
|
||||
was the only ship which was presented as stand-alone ship in
|
||||
Pyfa.
|
||||
"""
|
||||
|
||||
|
||||
CONVERSIONS = {
|
||||
640: ( # Scorpion
|
||||
4005, # Scorpion Ishukone Watch
|
||||
)
|
||||
}
|
||||
|
||||
def upgrade(saveddata_engine):
|
||||
|
||||
# Convert ships
|
||||
for replacement_item, list in CONVERSIONS.iteritems():
|
||||
for retired_item in list:
|
||||
saveddata_engine.execute('UPDATE "fits" SET "shipID" = ? WHERE "shipID" = ?', (replacement_item, retired_item))
|
||||
|
||||
88
eos/db/migrations/upgrade8.py
Normal file
88
eos/db/migrations/upgrade8.py
Normal file
@@ -0,0 +1,88 @@
|
||||
"""
|
||||
Migration 4
|
||||
|
||||
- Converts modules based on Proteus Module Tiericide
|
||||
Some modules have been unpublished (and unpublished module attributes are removed
|
||||
from database), which causes pyfa to crash. We therefore replace these
|
||||
modules with their new replacements
|
||||
|
||||
Based on http://community.eveonline.com/news/patch-notes/patch-notes-for-proteus/
|
||||
and output of itemDiff.py
|
||||
"""
|
||||
|
||||
|
||||
CONVERSIONS = {
|
||||
8529: ( # Large F-S9 Regolith Compact Shield Extender
|
||||
8409, # Large Subordinate Screen Stabilizer I
|
||||
),
|
||||
8419: ( # Large Azeotropic Restrained Shield Extender
|
||||
8489, # Large Supplemental Barrier Emitter I
|
||||
),
|
||||
8517: ( # Medium F-S9 Regolith Compact Shield Extender
|
||||
8397, # Medium Subordinate Screen Stabilizer I
|
||||
),
|
||||
8433: ( # Medium Azeotropic Restrained Shield Extender
|
||||
8477, # Medium Supplemental Barrier Emitter I
|
||||
),
|
||||
20627: ( # Small 'Trapper' Shield Extender
|
||||
8437, # Micro Azeotropic Ward Salubrity I
|
||||
8505, # Micro F-S9 Regolith Shield Induction
|
||||
3849, # Micro Shield Extender I
|
||||
3851, # Micro Shield Extender II
|
||||
8387, # Micro Subordinate Screen Stabilizer I
|
||||
8465, # Micro Supplemental Barrier Emitter I
|
||||
),
|
||||
8521: ( # Small F-S9 Regolith Compact Shield Extender
|
||||
8401, # Small Subordinate Screen Stabilizer I
|
||||
),
|
||||
8427: ( # Small Azeotropic Restrained Shield Extender
|
||||
8481, # Small Supplemental Barrier Emitter I
|
||||
),
|
||||
11343: ( # 100mm Crystalline Carbonide Restrained Plates
|
||||
11345, # 100mm Reinforced Nanofiber Plates I
|
||||
),
|
||||
11341: ( # 100mm Rolled Tungsten Compact Plates
|
||||
11339, # 100mm Reinforced Titanium Plates I
|
||||
),
|
||||
11327: ( # 1600mm Crystalline Carbonide Restrained Plates
|
||||
11329, # 1600mm Reinforced Nanofiber Plates I
|
||||
),
|
||||
11325: ( # 1600mm Rolled Tungsten Compact Plates
|
||||
11323, # 1600mm Reinforced Titanium Plates I
|
||||
),
|
||||
11351: ( # 200mm Crystalline Carbonide Restrained Plates
|
||||
11353, # 200mm Reinforced Nanofiber Plates I
|
||||
),
|
||||
11349: ( # 200mm Rolled Tungsten Compact Plates
|
||||
11347, # 200mm Reinforced Titanium Plates I
|
||||
),
|
||||
11311: ( # 400mm Crystalline Carbonide Restrained Plates
|
||||
11313, # 400mm Reinforced Nanofiber Plates I
|
||||
),
|
||||
11309: ( # 400mm Rolled Tungsten Compact Plates
|
||||
11307, # 400mm Reinforced Titanium Plates I
|
||||
),
|
||||
23791: ( # 'Citadella' 100mm Steel Plates
|
||||
11335, # 50mm Reinforced Crystalline Carbonide Plates I
|
||||
11337, # 50mm Reinforced Nanofiber Plates I
|
||||
11333, # 50mm Reinforced Rolled Tungsten Plates I
|
||||
11291, # 50mm Reinforced Steel Plates I
|
||||
20343, # 50mm Reinforced Steel Plates II
|
||||
11331, # 50mm Reinforced Titanium Plates I
|
||||
),
|
||||
11319: ( # 800mm Crystalline Carbonide Restrained Plates
|
||||
11321, # 800mm Reinforced Nanofiber Plates I
|
||||
),
|
||||
11317: ( # 800mm Rolled Tungsten Compact Plates
|
||||
11315, # 800mm Reinforced Titanium Plates I
|
||||
),
|
||||
}
|
||||
|
||||
def upgrade(saveddata_engine):
|
||||
|
||||
# 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))
|
||||
|
||||
@@ -40,7 +40,9 @@ fits_table = Table("fits", saveddata_meta,
|
||||
Column("characterID", ForeignKey("characters.ID"), nullable = True),
|
||||
Column("damagePatternID", ForeignKey("damagePatterns.ID"), nullable=True),
|
||||
Column("booster", Boolean, nullable = False, index = True, default = 0),
|
||||
Column("targetResistsID", ForeignKey("targetResists.ID"), nullable=True))
|
||||
Column("targetResistsID", ForeignKey("targetResists.ID"), nullable=True),
|
||||
Column("modeID", Integer, nullable=True),
|
||||
)
|
||||
|
||||
projectedFits_table = Table("projectedFits", saveddata_meta,
|
||||
Column("sourceID", ForeignKey("fits.ID"), primary_key = True),
|
||||
|
||||
@@ -267,6 +267,11 @@ def getBoosterFits(ownerID=None, where=None, eager=None):
|
||||
fits = saveddata_session.query(Fit).options(*eager).filter(filter).all()
|
||||
return fits
|
||||
|
||||
def countAllFits():
|
||||
with sd_lock:
|
||||
count = saveddata_session.query(Fit).count()
|
||||
return count
|
||||
|
||||
def countFitsWithShip(shipID, ownerID=None, where=None, eager=None):
|
||||
"""
|
||||
Get all the fits using a certain ship.
|
||||
@@ -308,6 +313,12 @@ def getPrice(typeID):
|
||||
raise TypeError("Need integer as argument")
|
||||
return price
|
||||
|
||||
def clearPrices():
|
||||
with sd_lock:
|
||||
deleted_rows = saveddata_session.query(Price).delete()
|
||||
commit()
|
||||
return deleted_rows
|
||||
|
||||
def getMiscData(field):
|
||||
if isinstance(field, basestring):
|
||||
with sd_lock:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Missile Launcher Bomb (2 of 2)
|
||||
# Modules from group: Shield Extender (37 of 37)
|
||||
# Modules from group: Shield Extender (25 of 25)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.increaseItemAttr("signatureRadius", module.getModifiedItemAttr("signatureRadiusAdd"))
|
||||
@@ -1,9 +1,9 @@
|
||||
# agilityMultiplierEffect
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Inertia Stabilizer (12 of 12)
|
||||
# Modules from group: Nanofiber Internal Structure (14 of 14)
|
||||
# Modules from group: Reinforced Bulkhead (12 of 12)
|
||||
# Modules from group: Inertial Stabilizer (7 of 7)
|
||||
# Modules from group: Nanofiber Internal Structure (7 of 7)
|
||||
# Modules from group: Reinforced Bulkhead (8 of 8)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.boostItemAttr("agility",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# ammoInfluenceCapNeed
|
||||
#
|
||||
# Used by:
|
||||
# Items from category: Charge (458 of 829)
|
||||
# Items from category: Charge (458 of 831)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
# Dirty hack to work around cap charges setting cap booster
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# ammoInfluenceRange
|
||||
#
|
||||
# Used by:
|
||||
# Items from category: Charge (559 of 829)
|
||||
# Items from category: Charge (559 of 831)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
module.multiplyItemAttr("maxRange", module.getModifiedChargeAttr("weaponRangeMultiplier"))
|
||||
@@ -1,7 +1,7 @@
|
||||
# armorHPBonusAdd
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Armor Reinforcer (57 of 57)
|
||||
# Modules from group: Armor Reinforcer (41 of 41)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.increaseItemAttr("armorHP", module.getModifiedItemAttr("armorHPBonusAdd"))
|
||||
@@ -1,7 +1,8 @@
|
||||
# armorReinforcerMassAdd
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Armor Reinforcer (57 of 57)
|
||||
# Modules from group: Armor Reinforcer (41 of 41)
|
||||
# Modules from group: Entosis Link (2 of 2)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.increaseItemAttr("mass", module.getModifiedItemAttr("massAddition"))
|
||||
@@ -2,7 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Scorpion
|
||||
# Ship: Scorpion Ishukone Watch
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Caldari Battleship").level
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Scorpion
|
||||
# Ship: Scorpion Ishukone Watch
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Caldari Battleship").level
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Scorpion
|
||||
# Ship: Scorpion Ishukone Watch
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Caldari Battleship").level
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Scorpion
|
||||
# Ship: Scorpion Ishukone Watch
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Caldari Battleship").level
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Capacitor Flux Coil (6 of 6)
|
||||
# Modules from group: Capacitor Power Relay (26 of 26)
|
||||
# Modules from group: Power Diagnostic System (31 of 31)
|
||||
# Modules from group: Propulsion Module (107 of 107)
|
||||
# Modules from group: Capacitor Power Relay (20 of 20)
|
||||
# Modules from group: Power Diagnostic System (23 of 23)
|
||||
# Modules from group: Propulsion Module (114 of 114)
|
||||
# Modules from group: Reactor Control Unit (22 of 22)
|
||||
# Modules from group: Shield Flux Coil (11 of 11)
|
||||
# Modules from group: Shield Power Relay (11 of 11)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# cargoCapacityMultiply
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Expanded Cargohold (13 of 13)
|
||||
# Modules from group: Overdrive Injector System (14 of 14)
|
||||
# Modules from group: Reinforced Bulkhead (12 of 12)
|
||||
# Modules from group: Expanded Cargohold (7 of 7)
|
||||
# Modules from group: Overdrive Injector System (7 of 7)
|
||||
# Modules from group: Reinforced Bulkhead (8 of 8)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.multiplyItemAttr("capacity", module.getModifiedItemAttr("cargoCapacityMultiplier"))
|
||||
|
||||
@@ -6,6 +6,7 @@ gangBonus = "commandBonusTD"
|
||||
gangBoost = "ewarStrTD"
|
||||
type = "active", "gang"
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
for bonus in ("maxRangeBonus", "falloffBonus", "trackingSpeedBonus"):
|
||||
fit.modules.filteredItemBoost(lambda mod: lambda mod: mod.item.requiresSkill("Weapon Disruption"),
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Weapon Disruption"),
|
||||
bonus, module.getModifiedItemAttr("commandBonusTD"))
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# commandshipMultiRelayEffect
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Capital Industrial Ship (2 of 2)
|
||||
# Ships from group: Command Ship (8 of 8)
|
||||
# Ships from group: Industrial Command Ship (2 of 2)
|
||||
# Ship: Orca
|
||||
# Ship: Rorqual
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == "Gang Coordinator",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# Used by:
|
||||
# Ship: Astero
|
||||
# Ship: Prospect
|
||||
# Ship: Victorieux Luxury Yacht
|
||||
type = "passive"
|
||||
runTime = "early"
|
||||
def handler(fit, ship, context):
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# drawbackArmorHP
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Rig Navigation (48 of 68)
|
||||
# Modules from group: Rig Navigation (48 of 64)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.boostItemAttr("armorHP", module.getModifiedItemAttr("drawback"))
|
||||
@@ -2,7 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Rig Drones (64 of 64)
|
||||
# Modules named like: Optimizer (16 of 16)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.boostItemAttr("cpuOutput", module.getModifiedItemAttr("drawback"))
|
||||
@@ -2,6 +2,7 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Rig Shield (72 of 72)
|
||||
# Modules named like: Optimizer (16 of 16)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.boostItemAttr("signatureRadius", module.getModifiedItemAttr("drawback"), stackingPenalties = True)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# drawbackWarpSpeed
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Higgs Anchor I (4 of 4)
|
||||
# Modules from group: Rig Anchor (4 of 4)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.boostItemAttr("warpSpeedMultiplier", module.getModifiedItemAttr("drawback"), stackingPenalties=True)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBargeBonusIceHarvestingCycleTimeBarge3
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Exhumer (4 of 4)
|
||||
# Ships from group: Exhumer (3 of 3)
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Exhumers").level
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBargeBonusMiningDurationBarge2
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Exhumer (4 of 4)
|
||||
# Ships from group: Exhumer (3 of 3)
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Exhumers").level
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBargeShieldResistance1
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Exhumer (4 of 4)
|
||||
# Ships from group: Exhumer (3 of 3)
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Exhumers").level
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusHeavyInterdictorsWarpDisruptFieldGeneratorWarpScrambleRange2
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Heavy Interdiction Cruiser (4 of 4)
|
||||
# Ships from group: Heavy Interdiction Cruiser (4 of 5)
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Heavy Interdiction Cruisers").level
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusMaraudersCruiseAndTorpedoDamageRole1
|
||||
#
|
||||
# Used by:
|
||||
# Ships named like: Golem (4 of 4)
|
||||
# Ship: Golem
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
damageTypes = ("em", "explosive", "kinetic", "thermal")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusMaraudersHeavyMissileDamageEMRole1
|
||||
#
|
||||
# Used by:
|
||||
# Ships named like: Golem (4 of 4)
|
||||
# Ship: Golem
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusMaraudersHeavyMissileDamageExpRole1
|
||||
#
|
||||
# Used by:
|
||||
# Ships named like: Golem (4 of 4)
|
||||
# Ship: Golem
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusMaraudersHeavyMissileDamageKinRole1
|
||||
#
|
||||
# Used by:
|
||||
# Ships named like: Golem (4 of 4)
|
||||
# Ship: Golem
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusMaraudersHeavyMissileDamageThermRole1
|
||||
#
|
||||
# Used by:
|
||||
# Ships named like: Golem (4 of 4)
|
||||
# Ship: Golem
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
# eliteBonusMarauderShieldBonus2a
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Marauder (8 of 16)
|
||||
# Ship: Golem
|
||||
# Ship: Vargur
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Marauders").level
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusViolatorsEwTargetPainting1
|
||||
#
|
||||
# Used by:
|
||||
# Ships named like: Golem (4 of 4)
|
||||
# Ship: Golem
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Marauders").level
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusViolatorsLargeEnergyTurretDamage1
|
||||
#
|
||||
# Used by:
|
||||
# Ships named like: Paladin (4 of 4)
|
||||
# Ship: Paladin
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Marauders").level
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusViolatorsLargeEnergyTurretDamageRole1
|
||||
#
|
||||
# Used by:
|
||||
# Ships named like: Paladin (4 of 4)
|
||||
# Ship: Paladin
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Energy Turret"),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusViolatorsLargeHybridTurretDamageRole1
|
||||
#
|
||||
# Used by:
|
||||
# Ships named like: Kronos (4 of 4)
|
||||
# Ship: Kronos
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Hybrid Turret"),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusViolatorsLargeHybridTurretTracking1
|
||||
#
|
||||
# Used by:
|
||||
# Ships named like: Kronos (4 of 4)
|
||||
# Ship: Kronos
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Marauders").level
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusViolatorsLargeProjectileTurretDamageRole1
|
||||
#
|
||||
# Used by:
|
||||
# Ships named like: Vargur (4 of 4)
|
||||
# Ship: Vargur
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Projectile Turret"),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusViolatorsLargeProjectileTurretTracking1
|
||||
#
|
||||
# Used by:
|
||||
# Ships named like: Vargur (4 of 4)
|
||||
# Ship: Vargur
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Marauders").level
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
# eliteBonusViolatorsRepairSystemsArmorDamageAmount2
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Marauder (8 of 16)
|
||||
# Ship: Kronos
|
||||
# Ship: Paladin
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Marauders").level
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusViolatorsTractorBeamMaxRangeRole2
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Marauder (16 of 16)
|
||||
# Ships from group: Marauder (4 of 4)
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Tractor Beam",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# eliteBonusViolatorsTractorBeamMaxTractorVelocityRole3
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Marauder (16 of 16)
|
||||
# Ships from group: Marauder (4 of 4)
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Tractor Beam",
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
# eliteReconBonusAssaultLauncherROF1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Huginn
|
||||
# Ship: Lachesis
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Recon Ships").level
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Missile Launcher Rapid Light",
|
||||
"speed", ship.getModifiedItemAttr("eliteBonusReconShip1") * level)
|
||||
@@ -1,9 +0,0 @@
|
||||
# eliteReconBonusHeavyAssaultLauncherROF1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Huginn
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Recon Ships").level
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Missile Launcher Heavy Assault",
|
||||
"speed", ship.getModifiedItemAttr("eliteBonusReconShip1") * level)
|
||||
@@ -1,10 +0,0 @@
|
||||
# eliteReconBonusHeavyLauncherROF1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Huginn
|
||||
# Ship: Lachesis
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Recon Ships").level
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Missile Launcher Heavy",
|
||||
"speed", ship.getModifiedItemAttr("eliteBonusReconShip1") * level)
|
||||
9
eos/effects/elitereconbonusmhtoptimalrange1.py
Normal file
9
eos/effects/elitereconbonusmhtoptimalrange1.py
Normal file
@@ -0,0 +1,9 @@
|
||||
# eliteReconBonusMHTOptimalRange1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Lachesis
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Recon Ships").level
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Medium Hybrid Turret"),
|
||||
"maxRange", ship.getModifiedItemAttr("eliteBonusReconShip1") * level)
|
||||
9
eos/effects/elitereconbonusmptdamage1.py
Normal file
9
eos/effects/elitereconbonusmptdamage1.py
Normal file
@@ -0,0 +1,9 @@
|
||||
# eliteReconBonusMPTdamage1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Huginn
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Recon Ships").level
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Medium Projectile Turret"),
|
||||
"damageMultiplier", ship.getModifiedItemAttr("eliteBonusReconShip1") * level)
|
||||
9
eos/effects/elitereconbonusneutrange3.py
Normal file
9
eos/effects/elitereconbonusneutrange3.py
Normal file
@@ -0,0 +1,9 @@
|
||||
# eliteReconBonusNeutRange3
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Pilgrim
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Recon Ships").level
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Destabilizer",
|
||||
"energyDestabilizationRange", ship.getModifiedItemAttr("eliteBonusReconShip3") * level)
|
||||
9
eos/effects/elitereconbonusvamprange3.py
Normal file
9
eos/effects/elitereconbonusvamprange3.py
Normal file
@@ -0,0 +1,9 @@
|
||||
# eliteReconBonusVampRange3
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Pilgrim
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Recon Ships").level
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Vampire",
|
||||
"powerTransferRange", ship.getModifiedItemAttr("eliteBonusReconShip3") * level)
|
||||
12
eos/effects/entosisdurationmultiply.py
Normal file
12
eos/effects/entosisdurationmultiply.py
Normal file
@@ -0,0 +1,12 @@
|
||||
# entosisDurationMultiply
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Carrier (4 of 4)
|
||||
# Ships from group: Dreadnought (4 of 4)
|
||||
# Ships from group: Supercarrier (5 of 5)
|
||||
# Ships from group: Titan (4 of 4)
|
||||
# Ship: Rorqual
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Infomorph Psychology"),
|
||||
"duration", ship.getModifiedItemAttr("entosisDurationMultiplier") or 1)
|
||||
7
eos/effects/entosislink.py
Normal file
7
eos/effects/entosislink.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# entosisLink
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Entosis Link (2 of 2)
|
||||
type = "active"
|
||||
def handler(fit, module, context):
|
||||
pass
|
||||
@@ -1,9 +1,9 @@
|
||||
# evasiveManeuveringAgilityBonusPostPercentAgilityShip
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Rig Anchor (4 of 4)
|
||||
# Implants named like: Eifyr and Co. 'Rogue' Evasive Maneuvering EM (6 of 6)
|
||||
# Implants named like: grade Nomad (10 of 12)
|
||||
# Modules named like: Higgs Anchor I (4 of 4)
|
||||
# Modules named like: Low Friction Nozzle Joints (8 of 8)
|
||||
# Implant: Genolution Core Augmentation CA-4
|
||||
# Skill: Evasive Maneuvering
|
||||
|
||||
8
eos/effects/freighteragilitybonus2o2.py
Normal file
8
eos/effects/freighteragilitybonus2o2.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# freighterAgilityBonus2O2
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Bowhead
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("ORE Freighter").level
|
||||
fit.ship.boostItemAttr("shipMaintenanceBayCapacity", ship.getModifiedItemAttr("freighterBonusO1")*level)
|
||||
9
eos/effects/freightersmacapacitybonuso1.py
Normal file
9
eos/effects/freightersmacapacitybonuso1.py
Normal file
@@ -0,0 +1,9 @@
|
||||
# freighterSMACapacityBonusO1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Bowhead
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("ORE Freighter").level
|
||||
fit.ship.boostItemAttr("agility", ship.getModifiedItemAttr("freighterBonusO2")*level,
|
||||
stackingPenalties = True)
|
||||
@@ -1,7 +1,7 @@
|
||||
# iceHarvestCycleTimeModulesRequiringIceHarvestingOnline
|
||||
#
|
||||
# Used by:
|
||||
# Variations of module: Ice Harvester Upgrade I (6 of 6)
|
||||
# Variations of module: Ice Harvester Upgrade I (5 of 5)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Ice Harvesting"),
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
# iceHarvesterCapacitorNeedMultiplier
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Exhumer (3 of 4)
|
||||
# Ship: Procurer
|
||||
# Ship: Retriever
|
||||
# Variations of ship: Procurer (2 of 2)
|
||||
# Variations of ship: Retriever (2 of 2)
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Ice Harvesting"),
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
# iceHarvesterDurationMultiplier
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Exhumer (3 of 4)
|
||||
# Ship: Procurer
|
||||
# Ship: Retriever
|
||||
# Variations of ship: Procurer (2 of 2)
|
||||
# Variations of ship: Retriever (2 of 2)
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Ice Harvesting"),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# iceMinerCpuUsagePercent
|
||||
#
|
||||
# Used by:
|
||||
# Variations of module: Ice Harvester Upgrade I (6 of 6)
|
||||
# Variations of module: Ice Harvester Upgrade I (5 of 5)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Ice Harvesting"),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# increaseSignatureRadiusOnline
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Inertia Stabilizer (12 of 12)
|
||||
# Modules from group: Inertial Stabilizer (7 of 7)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.boostItemAttr("signatureRadius", module.getModifiedItemAttr("signatureRadiusBonus"))
|
||||
@@ -1,7 +1,7 @@
|
||||
# Interceptor2WarpScrambleRange
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Interceptor (5 of 9)
|
||||
# Ships from group: Interceptor (5 of 10)
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Interceptors").level
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# interceptorMWDSignatureRadiusBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Interceptor (9 of 9)
|
||||
# Ships from group: Interceptor (9 of 10)
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Interceptors").level
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# massReductionBonusPassive
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Higgs Anchor I (4 of 4)
|
||||
# Modules from group: Rig Anchor (4 of 4)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.boostItemAttr("mass", module.getModifiedItemAttr("massBonusPercentage"), stackingPenalties=True)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# minerCpuUsageMultiplyPercent2
|
||||
#
|
||||
# Used by:
|
||||
# Variations of module: Mining Laser Upgrade I (6 of 6)
|
||||
# Variations of module: Mining Laser Upgrade I (5 of 5)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining"),
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
# Ships from group: Covert Ops (5 of 5)
|
||||
# Ships named like: Stratios (2 of 2)
|
||||
# Subsystems named like: Electronics Emergent Locus Analyzer (4 of 4)
|
||||
# Variations of ship: Heron (3 of 3)
|
||||
# Variations of ship: Imicus (3 of 3)
|
||||
# Variations of ship: Magnate (4 of 6)
|
||||
# Variations of ship: Probe (3 of 3)
|
||||
# Ship: Astero
|
||||
# Ship: Heron
|
||||
# Ship: Imicus
|
||||
# Ship: Magnate
|
||||
# Ship: Nestor
|
||||
# Ship: Probe
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
level = container.level if "skill" in context else 1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# miningDirectorBonusCommandBonusEffective
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Capital Industrial Ship (2 of 2)
|
||||
# Ship: Rorqual
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Director"),
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Frequency Mining Laser (3 of 3)
|
||||
# Modules from group: Mining Laser (17 of 17)
|
||||
# Modules from group: Mining Laser (12 of 12)
|
||||
# Modules from group: Strip Miner (5 of 5)
|
||||
type = 'active'
|
||||
def handler(fit, module, context):
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# miningYieldMultiplyPassive
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Exhumer (3 of 4)
|
||||
# Variations of ship: Procurer (2 of 2)
|
||||
# Variations of ship: Retriever (2 of 2)
|
||||
# Variations of ship: Venture (2 of 2)
|
||||
# Ship: Procurer
|
||||
# Ship: Retriever
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Mining"),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# miningYieldMultiplyPercent
|
||||
#
|
||||
# Used by:
|
||||
# Variations of module: Mining Laser Upgrade I (6 of 6)
|
||||
# Variations of module: Mining Laser Upgrade I (5 of 5)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining"),
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Bellicose
|
||||
# Ship: Rapier
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Minmatar Cruiser").level
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Huginn
|
||||
# Ship: Rapier
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
level = fit.character.getSkill("Minmatar Cruiser").level
|
||||
|
||||
4
eos/effects/missileaoecloudsizebonusonline.py
Normal file
4
eos/effects/missileaoecloudsizebonusonline.py
Normal file
@@ -0,0 +1,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
|
||||
"aoeCloudSize", container.getModifiedItemAttr("aoeCloudSizeBonus"))
|
||||
4
eos/effects/missileaoevelocitybonusonline.py
Normal file
4
eos/effects/missileaoevelocitybonusonline.py
Normal file
@@ -0,0 +1,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
|
||||
"aoeVelocity", container.getModifiedItemAttr("aoeVelocityBonus"))
|
||||
5
eos/effects/missileexplosiondelaybonusonline.py
Normal file
5
eos/effects/missileexplosiondelaybonusonline.py
Normal file
@@ -0,0 +1,5 @@
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
|
||||
"explosionDelay", container.getModifiedItemAttr("explosionDelayBonus"),
|
||||
stackingPenalties=True)
|
||||
11
eos/effects/missileguidancecomputerbonus4.py
Normal file
11
eos/effects/missileguidancecomputerbonus4.py
Normal file
@@ -0,0 +1,11 @@
|
||||
type = "active"
|
||||
def handler(fit, container, context):
|
||||
for srcAttr, tgtAttr, penalize in (
|
||||
("aoeCloudSizeBonus", "aoeCloudSize", False),
|
||||
("aoeVelocityBonus", "aoeVelocity", False),
|
||||
("missileVelocityBonus", "maxVelocity", True),
|
||||
("explosionDelayBonus", "explosionDelay", True),
|
||||
):
|
||||
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
|
||||
tgtAttr, container.getModifiedItemAttr(srcAttr),
|
||||
stackingPenalties=penalize)
|
||||
@@ -5,4 +5,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill("Defender Missiles"),
|
||||
"maxVelocity", container.getModifiedItemAttr("missileVelocityBonus"))
|
||||
"maxVelocity", container.getModifiedItemAttr("missileVelocityBonus"))
|
||||
|
||||
5
eos/effects/missilevelocitybonusonline.py
Normal file
5
eos/effects/missilevelocitybonusonline.py
Normal file
@@ -0,0 +1,5 @@
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
|
||||
"maxVelocity", container.getModifiedItemAttr("missileVelocityBonus"),
|
||||
stackingPenalties=True)
|
||||
12
eos/effects/modeagilitypostdiv.py
Normal file
12
eos/effects/modeagilitypostdiv.py
Normal file
@@ -0,0 +1,12 @@
|
||||
# modeAgilityPostDiv
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Propulsion Mode (4 of 4)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.multiplyItemAttr(
|
||||
"agility",
|
||||
1 / module.getModifiedItemAttr("modeAgilityPostDiv"),
|
||||
stackingPenalties=True,
|
||||
penaltyGroup="postDiv"
|
||||
)
|
||||
7
eos/effects/modearmorrepdurationpostdiv.py
Normal file
7
eos/effects/modearmorrepdurationpostdiv.py
Normal file
@@ -0,0 +1,7 @@
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.modules.filteredItemMultiply(
|
||||
lambda mod: mod.item.requiresSkill("Repair Systems"),
|
||||
"duration",
|
||||
1 / module.getModifiedItemAttr("modeArmorRepDurationPostDiv")
|
||||
)
|
||||
18
eos/effects/modearmorresonancepostdiv.py
Normal file
18
eos/effects/modearmorresonancepostdiv.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# modeArmorResonancePostDiv
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Defense Mode (3 of 4)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
for srcResType, tgtResType in (
|
||||
("Em", "Em"),
|
||||
("Explosive", "Explosive"),
|
||||
("Kinetic", "Kinetic"),
|
||||
("Thermic", "Thermal")
|
||||
):
|
||||
fit.ship.multiplyItemAttr(
|
||||
"armor{0}DamageResonance".format(tgtResType),
|
||||
1 / module.getModifiedItemAttr("mode{0}ResistancePostDiv".format(srcResType)),
|
||||
stackingPenalties=True,
|
||||
penaltyGroup="postDiv"
|
||||
)
|
||||
16
eos/effects/modehullresonancepostdiv.py
Normal file
16
eos/effects/modehullresonancepostdiv.py
Normal file
@@ -0,0 +1,16 @@
|
||||
# modeHullResonancePostDiv
|
||||
#
|
||||
# Used by:
|
||||
# Module: Hecate Defense Mode
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
for srcResType, tgtResType in (
|
||||
("Em", "em"),
|
||||
("Explosive", "explosive"),
|
||||
("Kinetic", "kinetic"),
|
||||
("Thermic", "thermal")
|
||||
):
|
||||
fit.ship.multiplyItemAttr(
|
||||
"{0}DamageResonance".format(tgtResType),
|
||||
1 / module.getModifiedItemAttr("mode{0}ResistancePostDiv".format(srcResType))
|
||||
)
|
||||
13
eos/effects/modemwdboostpostdiv.py
Normal file
13
eos/effects/modemwdboostpostdiv.py
Normal file
@@ -0,0 +1,13 @@
|
||||
# modeMWDBoostPostDiv
|
||||
#
|
||||
# Used by:
|
||||
# Module: Hecate Propulsion Mode
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.modules.filteredItemMultiply(
|
||||
lambda mod: mod.item.requiresSkill("High Speed Maneuvering"),
|
||||
"speedFactor",
|
||||
1 / module.getModifiedItemAttr("modeMWDVelocityPostDiv"),
|
||||
stackingPenalties=True,
|
||||
penaltyGroup="postDiv"
|
||||
)
|
||||
11
eos/effects/modemwdcappostdiv.py
Normal file
11
eos/effects/modemwdcappostdiv.py
Normal file
@@ -0,0 +1,11 @@
|
||||
# modeMWDCapPostDiv
|
||||
#
|
||||
# Used by:
|
||||
# Module: Hecate Propulsion Mode
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.modules.filteredItemMultiply(
|
||||
lambda mod: mod.item.requiresSkill("High Speed Maneuvering"),
|
||||
"capacitorNeed",
|
||||
1 / module.getModifiedItemAttr("modeMWDCapPostDiv")
|
||||
)
|
||||
13
eos/effects/modemwdsigradiuspostdiv.py
Normal file
13
eos/effects/modemwdsigradiuspostdiv.py
Normal file
@@ -0,0 +1,13 @@
|
||||
# modeMWDSigRadiusPostDiv
|
||||
#
|
||||
# Used by:
|
||||
# Module: Svipul Defense Mode
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.modules.filteredItemMultiply(
|
||||
lambda mod: mod.item.requiresSkill("High Speed Maneuvering"),
|
||||
"signatureRadiusBonus",
|
||||
1 / module.getModifiedItemAttr("modeMWDSigPenaltyPostDiv"),
|
||||
stackingPenalties=True,
|
||||
penaltyGroup="postDiv"
|
||||
)
|
||||
19
eos/effects/modeshieldresonancepostdiv.py
Normal file
19
eos/effects/modeshieldresonancepostdiv.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# modeShieldResonancePostDiv
|
||||
#
|
||||
# Used by:
|
||||
# Module: Jackdaw Defense Mode
|
||||
# Module: Svipul Defense Mode
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
for srcResType, tgtResType in (
|
||||
("Em", "Em"),
|
||||
("Explosive", "Explosive"),
|
||||
("Kinetic", "Kinetic"),
|
||||
("Thermic", "Thermal")
|
||||
):
|
||||
fit.ship.multiplyItemAttr(
|
||||
"shield{0}DamageResonance".format(tgtResType),
|
||||
1 / module.getModifiedItemAttr("mode{0}ResistancePostDiv".format(srcResType)),
|
||||
stackingPenalties=True,
|
||||
penaltyGroup="postDiv"
|
||||
)
|
||||
9
eos/effects/modesigradiuspostdiv.py
Normal file
9
eos/effects/modesigradiuspostdiv.py
Normal file
@@ -0,0 +1,9 @@
|
||||
# modeSigRadiusPostDiv
|
||||
#
|
||||
# Used by:
|
||||
# Module: Confessor Defense Mode
|
||||
# Module: Jackdaw Defense Mode
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.multiplyItemAttr("signatureRadius", 1 / module.getModifiedItemAttr("modeSignatureRadiusPostDiv"),
|
||||
stackingPenalties=True, penaltyGroup="postDiv")
|
||||
12
eos/effects/modevelocitypostdiv.py
Normal file
12
eos/effects/modevelocitypostdiv.py
Normal file
@@ -0,0 +1,12 @@
|
||||
# modeVelocityPostDiv
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Propulsion Mode (3 of 4)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.multiplyItemAttr(
|
||||
"maxVelocity",
|
||||
1 / module.getModifiedItemAttr("modeVelocityPostDiv"),
|
||||
stackingPenalties=True,
|
||||
penaltyGroup="postDiv"
|
||||
)
|
||||
@@ -1,7 +1,7 @@
|
||||
# modifyMaxVelocityOfShipPassive
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Expanded Cargohold (13 of 13)
|
||||
# Modules from group: Expanded Cargohold (7 of 7)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.multiplyItemAttr("maxVelocity", module.getModifiedItemAttr("maxVelocityBonus"),
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Capacitor Flux Coil (6 of 6)
|
||||
# Modules from group: Capacitor Power Relay (26 of 26)
|
||||
# Modules from group: Capacitor Recharger (25 of 25)
|
||||
# Modules from group: Power Diagnostic System (31 of 31)
|
||||
# Modules from group: Capacitor Power Relay (20 of 20)
|
||||
# Modules from group: Capacitor Recharger (18 of 18)
|
||||
# Modules from group: Power Diagnostic System (23 of 23)
|
||||
# Modules from group: Reactor Control Unit (22 of 22)
|
||||
# Modules from group: Shield Flux Coil (11 of 11)
|
||||
# Modules from group: Shield Power Relay (11 of 11)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user