Compare commits

..

121 Commits

Author SHA1 Message Date
DarkPhoenix
3c6850fe7a Bump version info 2014-06-03 22:52:03 +04:00
DarkPhoenix
e3590f8d16 Fix one of the red giant duration heat effects 2014-06-03 22:48:50 +04:00
DarkPhoenix
5a586c5632 Mention cnc as founder in about window 2014-06-03 22:45:46 +04:00
DarkPhoenix
a946c9c9ed Merge branch 'master' into singularity 2014-06-03 00:36:13 +04:00
Anton Vorobyov
2ea0c57be5 Merge pull request #99 from blitzmann/issue-63
Fixes #63
2014-06-03 00:34:58 +04:00
DarkPhoenix
dcd2cdeddc Fix couple of ewar link effects, add missing SBA heat effect 2014-06-03 00:04:30 +04:00
blitzmann
5a1e39180a Set rack separation/labels and compact needed skills as default
Also refresh fit after modifying compact skills to take affect immediately.
2014-06-02 09:32:59 -04:00
DarkPhoenix
18385584bf Merge branch 'master' into singularity 2014-06-02 00:13:33 +04:00
DarkPhoenix
7d58b2caa1 Show additional cargo parameters in panel and tooltip. Closes #111 2014-06-02 00:12:11 +04:00
DarkPhoenix
08f22172a6 Merge branch 'master' into singularity 2014-06-01 21:31:50 +04:00
DarkPhoenix
88344dcfdc Disable change affecting skills menu for now 2014-06-01 21:18:41 +04:00
DarkPhoenix
4ea69201ea Remove debugging print 2014-06-01 19:09:30 +04:00
Anton Vorobyov
07692584cf Merge pull request #110 from blitzmann/issue-101
Add "Change affecting skill" context menu, resolves #101
2014-06-01 19:06:19 +04:00
DarkPhoenix
96707275be Add new overrides to the list 2014-06-01 17:21:11 +04:00
DarkPhoenix
239fec48e8 Merge branch 'master' into singularity 2014-06-01 17:04:52 +04:00
DarkPhoenix
6fc2cfff71 Unknown for DB items are fetched as None; make sure service doesn't fail in this case 2014-06-01 16:58:42 +04:00
Anton Vorobyov
faff60c5e0 Merge pull request #97 from blitzmann/issue-67
Fixes #67
2014-06-01 16:51:09 +04:00
DarkPhoenix
9a51d1fe3c Update db to 792006 and add new ship icons 2014-05-31 23:34:12 +04:00
DarkPhoenix
8313fa03b8 Rerun 'used by' script and remove unused effects 2014-05-31 22:13:59 +04:00
DarkPhoenix
665a1c473c Add more effects for new items 2014-05-31 22:02:41 +04:00
DarkPhoenix
c9dca6cd2a Implement remaining changes - besides new modules and ships 2014-05-31 19:16:15 +04:00
DarkPhoenix
7b3e0fe3b0 Barge, freighter and phoenix changes 2014-05-31 17:46:53 +04:00
DarkPhoenix
8ea4ef1b44 Implement DST changes 2014-05-31 02:30:38 +04:00
DarkPhoenix
933fbb26d7 Implement pirate ship updates 2014-05-30 02:21:29 +04:00
blitzmann
de9ae5c78c Ensure that we load all skills for a character and some minor tweaks. 2014-05-29 12:59:53 -04:00
blitzmann
0d1c7b93be Add icons to skill context menu 2014-05-28 22:32:23 -04:00
blitzmann
749934b89d Fix #106 2014-05-27 19:35:51 -04:00
blitzmann
1c84e9dc4b Added default value for used parameter 2014-05-27 16:29:22 -04:00
blitzmann
df046769ff Add GUI support for changing affected skills 2014-05-27 16:26:14 -04:00
DarkPhoenix
ae386cae4e Fix broken names in database 2014-05-27 12:48:59 +04:00
DarkPhoenix
d2635d6405 Update database to 788467 2014-05-26 02:17:24 +04:00
blitzmann
45fca2a87d All things that can affect attribute from current fit/ships is included in modifiedAttributeDict.
The previous method was to only add those that change a value. This adds things can can affect it, and then pass a new `used` flag to the dict to show if it's used or not.
2014-05-25 14:48:40 -04:00
blitzmann
f1f9da9214 Merge branch 'issue-102', resolves #102 2014-05-25 10:14:13 -04:00
blitzmann
a1416e6bec Improves on fit loading on startup by only calculating the last fit that is opened.
Issue with FittingView.MakeSnapshot() need an exception catch.
2014-05-25 02:55:28 -04:00
blitzmann
2d82eb7c92 Add thread for opening fits on startup, which allows us of wait dialog
Wait dialog doesn't actually move as the GUI thread is locked when opening the fits, but at least it shows that -something- is happening.
2014-05-24 22:20:26 -04:00
blitzmann
9a2408741e Feature: reopen previous fits on startup 2014-05-23 21:31:36 -04:00
blitzmann
b7e2b62562 Improved fitting window import; revert addition of staticmethod's in fit service 2014-05-23 18:58:09 -04:00
blitzmann
fbc336b038 Moved item override and fit porting to services.
Also sprinkled static methods around Fit service and other PEP8 goodness because why not.
2014-05-22 21:00:42 -04:00
DarkPhoenix
9dea4a26bf Remove nos immunity from ewar immune ships as well 2014-05-22 01:05:35 +04:00
Anton Vorobyov
0ea8a7a921 Merge pull request #77 from blitzmann/issue-69
Fix #69 - Neut on triage/siege/bastion

Not all exclusions are added, i will add the rest in later commits.
2014-05-22 00:45:14 +04:00
blitzmann
0bf956e9b3 Add support for explicitly converting items to another. 2014-05-20 12:46:19 -04:00
blitzmann
3bd66f174d Added skill prereq tooltip compact option to preferences 2014-05-18 01:45:28 -04:00
blitzmann
4f38d71676 Create compact skill requirement list
I probably could have worked this into the existing function instead of creating a new one if I thought about it, but meh.
2014-05-18 00:38:10 -04:00
blitzmann
493294e648 Update "Import Character" label to be less ambiguous 2014-05-16 00:27:24 -04:00
Anton Vorobyov
2a12e4c566 Merge pull request #85 from blitzmann/issue-84
Fix #84 - Bug with projected mods on projected ships
2014-05-16 00:21:13 +04:00
blitzmann
b75c86d251 Ignore Orbital ammo in ammo picker - see #71 2014-05-15 11:44:09 -04:00
blitzmann
a148a6d818 Added some bulk to PFStaticText to allow for more refined layout of text. Will probably increase font size later (it's so teeny!)
(cherry picked from commit 4f0c246e80a6d245bd9bd6be0dc0c0f995e2ae80 branch `tag`)
2014-05-15 01:08:19 -04:00
blitzmann
ee8f514266 Removed debug statement. 2014-05-15 00:47:41 -04:00
blitzmann
8a0778662f Fixes refresh issue with importing from fitting window into empty fit.
This removes a conditional that makes sure we don't fire the FitSelected event if the active fit is same as imported fit. Removing this, to my knowledge, has no adverse effects because when importing we *always* create a new fit (with the exception of the new fitting window import) and thus this conditional is not needed.
2014-05-14 23:44:44 -04:00
blitzmann
f9c141fa25 Adds import support for fitting window copy. Resolves #91
This requires us to pass an active fit to use as a base for the modules, as the format does not include ship information. Features:
* If active fit has modules, makes a new fit using same ship
* Does basic dummy checking. As the format doesn't include ship info, it will probably be common for someone to accidentally try to import a Legion fit to a Rifter by mistake. Import logic checks module legality for fit and, if fails, silently halts import without saving.
2014-05-14 23:39:47 -04:00
blitzmann
b783f0641c Load fleet data of projected fits 2014-05-10 22:49:12 -04:00
blitzmann
a0c1686ac5 Pass withBoosters to projected fits (to flag booster calculation) 2014-05-10 22:48:43 -04:00
blitzmann
af325caecc Fix order of operations (boosting not applied to modules of projected fits) 2014-05-10 22:47:42 -04:00
blitzmann
60a786a6a2 Fix boosting as it related to projected fits (was boosting target fit rather than current fit) 2014-05-10 22:46:25 -04:00
blitzmann
40c1bc8ae6 Added cargo gauge to resources and ability to toggle 2014-05-08 13:58:40 -04:00
blitzmann
6992537750 Fix regression 2014-05-07 17:44:47 -04:00
blitzmann
a604093387 Merge branch 'cargoDrag' - adding improved drag/drop functionality.
fittingView was the only real view that had drag and drop, and that was to support module swapping. I tweaked the dragged data to include source so that other Views can use it. Supported drag/drop:

* Copy / Move / Swap module from fitting to cargo
* Drag market items to fitting and other views
* Probably more that I cannot remember
2014-05-07 17:27:14 -04:00
blitzmann
d9e61a3305 Improved on drag/drop for cargo and fitting views. Can now copy rather than swap 2014-05-07 17:18:01 -04:00
blitzmann
0c42848d52 Fix recalc after module clone. Enforce module restrictions. 2014-05-07 15:53:03 -04:00
blitzmann
294f51ae5d Add support for drag and drop between pyfa displays which explicitly support it (some other tweaks as well) 2014-05-07 11:21:50 -04:00
blitzmann
ecd82ac7a4 Merge branch 'cargo' 2014-05-06 01:00:58 -04:00
blitzmann
5395c04b18 Fix issue with EFT .cfg importing
(cherry picked from commit d05b78a451)
2014-05-04 19:18:34 -04:00
blitzmann
d05b78a451 Fix issue with EFT .cfg importing 2014-05-04 19:16:00 -04:00
blitzmann
19f0bbc811 Add cargo support to XML, DNA, EFT import/export 2014-05-04 19:15:25 -04:00
blitzmann
ac144e51e0 Fix tooltips 2014-05-04 17:13:11 -04:00
blitzmann
f7ef3705b5 Added available cargo to capacity tooltip and cargo volume column 2014-05-04 11:35:13 -04:00
blitzmann
8e9ea0a36b Allow any item to be added to cargo (allows to distribute "refits" with fit) 2014-05-03 21:21:21 -04:00
blitzmann
89a8bde574 Merge branch 'master' into cargo
Conflicts:
	eos/saveddata/fit.py
2014-05-03 20:46:32 -04:00
blitzmann
2651a04880 Refresh active fit upon fit deletion (deleted fit may have been projected) 2014-05-03 01:21:45 -04:00
blitzmann
197a61253f Better way to fix deletion of projection relationships 2014-05-03 00:42:08 -04:00
blitzmann
fb9da5ec8d Revert "Create new Fit relationship with fits that current fit is projected onto (see #90)"
This reverts commit a2727d5f47.
2014-05-03 00:40:13 -04:00
blitzmann
a2727d5f47 Create new Fit relationship with fits that current fit is projected onto (see #90) 2014-05-01 22:08:27 -04:00
blitzmann
0c40aa7244 Merge branch 'about' 2014-04-30 13:13:30 -04:00
blitzmann
234af1ac3d Fix #86 - Importing EFT with cargo 2014-04-30 12:57:00 -04:00
blitzmann
fb1323ba17 Fix #87 - enforce proper Item in Ship.__init__ 2014-04-30 11:52:56 -04:00
blitzmann
38bd33dce4 Fix incorrect indentation which caused improper XML import processing 2014-04-30 10:44:06 -04:00
blitzmann
d32407b9f8 Removed problematic conditional sending projected fit to the wrong path 2014-04-27 01:35:57 -04:00
blitzmann
83c0bbe37b Fix #82 2014-04-24 00:12:10 -04:00
blitzmann
1fea4e5876 Adds missing icons 2014-04-23 23:30:07 -04:00
blitzmann
1fe19c4853 Merge pull request #81 from blitzmann/issue-80
Fix #80
2014-04-23 10:44:15 -04:00
Ryan Holmes
d9653ea43c Redundancy 2014-04-23 10:39:36 -04:00
Ryan Holmes
943ddd3da1 Add loaded charges to XML export 2014-04-23 01:14:35 -04:00
Ryan Holmes
08573899d3 Removes "res:/UI/Texture/Icons/....png" from iconFile 2014-04-23 00:34:54 -04:00
blitzmann
e873f1b88e Include loaded charges from modules in DNA export
https://forums.eveonline.com/default.aspx?g=posts&m=4498408#post4498408
2014-04-22 02:04:15 -04:00
blitzmann
6dc4161a36 Fix #69 2014-04-14 22:14:06 -04:00
blitzmann
507c423e09 Fix #73 2014-04-11 21:44:11 -04:00
blitzmann
631d97e21a Fix #71 2014-04-08 12:48:58 -04:00
blitzmann
23e6331909 Some Mac love, and added missing accelerator for fleet pane (set as CTRL+5) 2014-04-03 19:44:03 -04:00
blitzmann
9bbe7f7fb0 Tweak to HTML export - have ship group link to fit if only 1 fit exists 2014-03-31 00:18:22 -04:00
blitzmann
5df7e193e7 Cargo works, but needs a more TLC 2014-03-30 17:12:32 -04:00
blitzmann
e87ac96c6c Fix incorrect variable order 2014-03-30 17:12:13 -04:00
blitzmann
795724cbe1 Merge branch 'charImprovements' 2014-03-27 22:50:38 -04:00
blitzmann
3cfa1c0822 Layout tweaks 2014-03-27 22:50:21 -04:00
blitzmann
4faa2abe96 HTML can now be manually called. "Enabled" now refers to "Enable Automatic". Also, fixed nagging typo. ("HTMl" lol) 2014-03-27 22:15:34 -04:00
blitzmann
890ff55690 Support CREST kill URL 2014-03-27 18:55:33 -04:00
blitzmann
73a67d0fc3 Merge branch 'master' of https://github.com/DarkFenX/Pyfa 2014-03-27 18:36:33 -04:00
blitzmann
8fad69c344 Update readme.txt 2014-03-27 18:36:18 -04:00
blitzmann
76b6fb5898 Added support for importing killmails copied from chat channel 2014-03-27 13:44:52 -04:00
blitzmann
641f5999f0 Tweak rack labels 2014-03-26 14:18:40 -04:00
blitzmann
47ef37274b Don't attempt to remove a Rack module 2014-03-25 23:45:23 -04:00
blitzmann
264824e7de Removed old @todo's, and OnSelection function - apparently you cannot change selection color :( 2014-03-25 23:29:21 -04:00
blitzmann
fe824943e4 Reel in # of digits for align time tooltip 2014-03-25 23:11:27 -04:00
blitzmann
eb571b3ab3 Merge branch 'master' of https://github.com/DarkFenX/Pyfa 2014-03-25 23:03:03 -04:00
blitzmann
5e464bfcf8 Fix rack labels for t3 cruisers, racks are now bolded without the ugly bug from before. 2014-03-25 22:59:38 -04:00
blitzmann
5df3672adf Fix for text style when turning rack labels on/off in preferences. Disabled bolding of label, as font does not work correctly at the moment. 2014-03-25 21:45:36 -04:00
blitzmann
d5e8938c70 Merge pull request #65 from atwardowski/patch-1
More precision in align time tooltip
2014-03-25 13:20:35 -04:00
blitzmann
1f37656169 Added option to show rack labels 2014-03-25 12:43:15 -04:00
Adam Twardowski
3a05abe490 More precision in align time tooltip 2014-03-25 12:33:09 -04:00
blitzmann
c3ce580b8c Rename DummyModule to Rack 2014-03-25 01:11:23 -04:00
blitzmann
47c46cc9c5 Added copy module by drag/drop module while holding Ctrl key. This has been planned since 2011 according to blame. =D 2014-03-25 00:33:40 -04:00
blitzmann
7a2ddad70c Fixes long-standing issue with swapping modules and modifying position on rack. Also, don't color rack dividers. 2014-03-25 00:24:52 -04:00
blitzmann
2f90ac64ec Refactor how rack separation works 2014-03-24 19:04:11 -04:00
blitzmann
e23ad7b002 Muted slot colors (previous colors were very strong). Think about moving these to prefs 2014-03-24 12:49:09 -04:00
blitzmann
b98edc3f65 Fix and implement preferences 2014-03-24 12:23:22 -04:00
blitzmann
22f92bed24 Fixed nagging bug about extra slots, more tweaks 2014-03-24 00:17:20 -04:00
blitzmann
cbea2dd55a Create mapping of external -> internal indices 2014-03-23 01:31:02 -04:00
blitzmann
26846fd102 Preference UI support for slot divisions 2014-03-23 00:53:09 -04:00
blitzmann
004f9cb062 Preliminary support for slot dividers. Extremely buggy. 2014-03-23 00:47:06 -04:00
blitzmann
4bcb368d17 More about box changes 2014-03-11 21:49:50 -04:00
blitzmann
f42fd1de43 Tweaks to about box, including adding my name as developer 2014-03-11 21:34:19 -04:00
blitzmann
4f4829ebb4 Spaced API information 2014-03-04 14:01:30 -05:00
339 changed files with 2989 additions and 1086 deletions

View File

@@ -13,10 +13,10 @@ debug = False
saveInRoot = False
# Version data
version = "1.1.23"
tag = "git"
expansionName = "Rubicon"
expansionVersion = "1.3"
version = "1.2.0"
tag = "stable"
expansionName = "Kronos"
expansionVersion = "1.0"
evemonMinVersion = "4081"
pyfaPath = None

View File

@@ -66,7 +66,7 @@ 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
getSquad, getBoosterFits, getProjectedFits
#If using in memory saveddata, you'll want to reflect it so the data structure is good.
if config.saveddata_connectionstring == "sqlite:///:memory:":

32
eos/db/saveddata/cargo.py Normal file
View File

@@ -0,0 +1,32 @@
#===============================================================================
# Copyright (C) 2010 Diego Duclos
#
# 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, ForeignKey, Boolean
from sqlalchemy.orm import mapper
from eos.db import saveddata_meta
from eos.types import Cargo
cargo_table = Table("cargo", saveddata_meta,
Column("ID", Integer, primary_key=True),
Column("fitID", Integer, ForeignKey("fits.ID"), nullable = False, index = True),
Column("itemID", Integer, nullable = False),
Column("amount", Integer, nullable = False))
mapper(Cargo, cargo_table)

View File

@@ -24,11 +24,12 @@ from sqlalchemy.sql import and_
from eos.db import saveddata_meta
from eos.db.saveddata.module import modules_table
from eos.db.saveddata.drone import drones_table
from eos.db.saveddata.cargo import cargo_table
from eos.db.saveddata.implant import fitImplants_table
from eos.types import Fit, Module, User, Booster, Drone, Implant, Character, DamagePattern
from eos.types import Fit, Module, User, Booster, Drone, Cargo, Implant, Character, DamagePattern
from eos.effectHandlerHelpers import HandledModuleList, HandledDroneList, \
HandledImplantBoosterList, HandledProjectedModList, HandledProjectedDroneList, \
HandledProjectedFitList
HandledProjectedFitList, HandledCargoList
fits_table = Table("fits", saveddata_meta,
Column("ID", Integer, primary_key = True),
Column("ownerID", ForeignKey("users.ID"), nullable = True, index = True),
@@ -53,6 +54,8 @@ mapper(Fit, fits_table,
"_Fit__boosters" : relation(Booster, collection_class = HandledImplantBoosterList, cascade='all, delete, delete-orphan', single_parent=True),
"_Fit__drones" : relation(Drone, collection_class = HandledDroneList, cascade='all, delete, delete-orphan', single_parent=True,
primaryjoin = and_(drones_table.c.fitID == fits_table.c.ID, drones_table.c.projected == False)),
"_Fit__cargo" : relation(Cargo, collection_class = HandledCargoList, cascade='all, delete, delete-orphan', single_parent=True,
primaryjoin = and_(cargo_table.c.fitID == fits_table.c.ID)),
"_Fit__projectedDrones" : relation(Drone, collection_class = HandledProjectedDroneList, cascade='all, delete, delete-orphan', single_parent=True,
primaryjoin = and_(drones_table.c.fitID == fits_table.c.ID, drones_table.c.projected == True)),
"_Fit__implants" : relation(Implant, collection_class = HandledImplantBoosterList, cascade='all, delete, delete-orphan', single_parent=True,

View File

@@ -21,6 +21,7 @@ from eos.db.util import processEager, processWhere
from eos.db import saveddata_session, sd_lock
from eos.types import User, Character, Fit, Price, DamagePattern, Fleet, MiscData, Wing, Squad
from eos.db.saveddata.fleet import squadmembers_table
from eos.db.saveddata.fit import projectedFits_table
from sqlalchemy.sql import and_
import eos.config
@@ -360,7 +361,15 @@ def getSquadsIDsWithFitID(fitID):
return squads
else:
raise TypeError("Need integer as argument")
def getProjectedFits(fitID):
if isinstance(fitID, int):
with sd_lock:
filter = and_(projectedFits_table.c.sourceID == fitID, Fit.ID == projectedFits_table.c.victimID)
fits = saveddata_session.query(Fit).filter(filter).all()
return fits
else:
raise TypeError("Need integer as argument")
def add(stuff):
with sd_lock:

View File

@@ -187,6 +187,46 @@ class HandledDroneList(HandledList):
return d
class HandledCargoList(HandledList):
# shameless copy of HandledDroneList
# I have no idea what this does, but I needed it
# @todo: investigate this
def find(self, item):
for d in self:
if d.item == item:
yield d
def findFirst(self, item):
for d in self.find(item):
return d
def append(self, cargo):
list.append(self, cargo)
def remove(self, cargo):
HandledList.remove(self, cargo)
def appendItem(self, item, qty = 1):
if qty < 1: ValueError("Amount of cargo to add should be >= 1")
d = self.findFirst(item)
if d is None:
d = eos.types.Cargo(item)
self.append(d)
d.qty += qty
return d
def removeItem(self, item, qty):
if qty < 1: ValueError("Amount of cargo to remove should be >= 1")
d = self.findFirst(item)
if d is None: return
d.qty -= qty
if d.qty <= 0:
self.remove(d)
return None
return d
class HandledImplantBoosterList(HandledList):
def __init__(self):

View File

@@ -1,6 +1,7 @@
# Used by:
# Modules named like: Emission Scope Sharpener (8 of 8)
# Implant: Poteque 'Prospector' Archaeology AC-905
# Implant: Poteque 'Prospector' Environmental Analysis EY-1005
type = "passive"
def handler(fit, container, context):
fit.modules.filteredItemIncrease(lambda module: module.item.requiresSkill("Archaeology"),

View File

@@ -1,5 +1,6 @@
# Used by:
# Modules named like: Memetic Algorithm Bank (8 of 8)
# Implant: Poteque 'Prospector' Environmental Analysis EY-1005
# Implant: Poteque 'Prospector' Hacking HC-905
type = "passive"
def handler(fit, container, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Halo (12 of 12)
# Implants named like: grade Halo (18 of 18)
runTime = "early"
type = "passive"
def handler(fit, implant, context):

View File

@@ -1,6 +1,7 @@
# Used by:
# Modules named like: Emission Scope Sharpener (8 of 8)
# Implant: Poteque 'Prospector' Archaeology AC-905
# Implant: Poteque 'Prospector' Environmental Analysis EY-1005
# Skill: Archaeology
type = "passive"
def handler(fit, container, context):

View File

@@ -1,7 +1,7 @@
# Used by:
# Modules from group: Scan Probe Launcher (4 of 7)
# Implants named like: Low grade Virtue (5 of 6)
# Implants named like: Poteque 'Prospector' Astrometric Rangefinding AR (3 of 3)
# Implants named like: grade Virtue (10 of 12)
# Modules named like: Gravity Capacitor Upgrade (8 of 8)
# Skill: Astrometric Rangefinding
# Skill: Astrometrics

View File

@@ -1,6 +1,6 @@
# Used by:
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
# Implants named like: Low grade Edge (5 of 6)
# Implants named like: grade Edge (10 of 12)
# Skill: Neurotoxin Control
type = "passive"
def handler(fit, container, context):

View File

@@ -1,6 +1,6 @@
# Used by:
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
# Implants named like: Low grade Edge (5 of 6)
# Implants named like: grade Edge (10 of 12)
# Skill: Neurotoxin Control
type = "passive"
def handler(fit, container, context):

View File

@@ -1,6 +1,6 @@
# Used by:
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
# Implants named like: Low grade Edge (5 of 6)
# Implants named like: grade Edge (10 of 12)
# Skill: Neurotoxin Control
type = "passive"
def handler(fit, container, context):

View File

@@ -1,6 +1,6 @@
# Used by:
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
# Implants named like: Low grade Edge (5 of 6)
# Implants named like: grade Edge (10 of 12)
# Skill: Neurotoxin Control
type = "passive"
def handler(fit, container, context):

View File

@@ -1,6 +1,6 @@
# Used by:
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
# Implants named like: Low grade Edge (5 of 6)
# Implants named like: grade Edge (10 of 12)
# Skill: Neurotoxin Control
type = "passive"
def handler(fit, container, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Talon (6 of 12)
# Implants named like: High grade Talon (6 of 6)
runTime = "early"
type = "passive"
def handler(fit, implant, context):

View File

@@ -1,6 +1,7 @@
# 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)
type = "passive"
def handler(fit, module, context):
fit.ship.multiplyItemAttr("capacity", module.getModifiedItemAttr("cargoCapacityMultiplier"))

View File

@@ -1,6 +1,5 @@
# Used by:
# Ship: Chimera
# Ship: Revenant
# Ship: Wyvern
type = "passive"
def handler(fit, ship, context):

View File

@@ -0,0 +1,7 @@
# Used by:
# Ship: Revenant
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Caldari Carrier").level
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Fighters") or drone.item.requiresSkill("Fighter Bombers"),
"signatureRadius", ship.getModifiedItemAttr("carrierCaldariBonus1") * level)

View File

@@ -6,7 +6,7 @@ type = "active", "gang"
def handler(fit, module, context):
if "gang" not in context: return
for scanType in ("Magnetometric", "Radar", "Ladar", "Gravimetric"):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "ECM",
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Electronic Warfare"),
"scan%sStrengthBonus" % scanType,
module.getModifiedItemAttr("commandBonusECM"),
stackingPenalties = True)

View File

@@ -5,8 +5,8 @@ gangBoost = "ewarStrRSD"
type = "active", "gang"
def handler(fit, module, context):
if "gang" not in context: return
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Sensor Damper",
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Sensor Linking"),
"maxTargetRangeBonus", module.getModifiedItemAttr("commandBonusRSD"))
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Sensor Damper",
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Sensor Linking"),
"scanResolutionBonus", module.getModifiedItemAttr("commandBonusRSD"),
stackingPenalties=True)

View File

@@ -1,7 +1,7 @@
# Used by:
# Ships from group: Capital Industrial Ship (2 of 2)
# Ships from group: Command Ship (8 of 8)
# Ship: Orca
# Ship: Rorqual
# Ships from group: Industrial Command Ship (2 of 2)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == "Gang Coordinator",

View File

@@ -7,7 +7,8 @@
# Ships named like: Stratios (2 of 2)
# Subsystems named like: Offensive Covert Reconfiguration (4 of 4)
# Ship: Astero
# Ship: Prospect
type = "passive"
def handler(fit, container, context):
fit.modules.filteredItemForce(lambda mod: mod.item.group.name == "Cloaking Device",
fit.modules.filteredItemForce(lambda mod: mod.item.requiresSkill("Cloaking"),
"moduleReactivationDelay", container.getModifiedItemAttr("covertOpsAndReconOpsCloakModuleDelay"))

View File

@@ -1,5 +1,6 @@
# Used by:
# Ship: Astero
# Ship: Prospect
type = "passive"
runTime = "early"
def handler(fit, ship, context):

View File

@@ -0,0 +1,5 @@
# Used by:
# Modules named like: Transverse Bulkhead (8 of 8)
type = "passive"
def handler(fit, module, context):
fit.ship.boostItemAttr("capacity", module.getModifiedItemAttr("drawback"))

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules from group: Rig Armor (48 of 64)
# Modules from group: Rig Armor (48 of 72)
# Modules from group: Rig Resource Processing (8 of 10)
type = "passive"
def handler(fit, module, context):

View File

@@ -0,0 +1,8 @@
# Used by:
# Ship: Phoenix
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Caldari Dreadnought").level
for damageType in ("em", "thermal", "explosive", "kinetic"):
fit.ship.boostItemAttr("shield{}DamageResonance".format(damageType.capitalize()),
ship.getModifiedItemAttr("dreadnoughtShipBonusC2") * level)

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules from group: Drone Damage Modules (6 of 6)
# Modules from group: Drone Damage Modules (10 of 10)
type = "passive"
def handler(fit, module, context):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"),

View File

@@ -1,7 +1,6 @@
# Used by:
# Skills from group: Drones (8 of 21)
# Skills named like: Drone Specialization (4 of 4)
# Skill: Heavy Drone Operation
# Skill: Sentry Drone Interfacing
type = "passive"
def handler(fit, skill, context):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill(skill),

View File

@@ -1,6 +0,0 @@
# Used by:
# Skill: Combat Drone Operation
type = "passive"
def handler(fit, skill, context):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Scout Drone Operation"),
"damageMultiplier", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level)

View File

@@ -1,6 +1,6 @@
# Used by:
# Modules from group: Drone Navigation Computer (6 of 6)
# Modules from group: Drone Navigation Computer (8 of 8)
type = "passive"
def handler(fit, module, context):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"), "maxVelocity",
module.getModifiedItemAttr("speedBoostFactor"), stackingPenalties = True)
module.getModifiedItemAttr("speedFactor"), stackingPenalties = True)

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules from group: Drone Tracking Modules (7 of 7)
# Variations of module: Omnidirectional Tracking Link I (8 of 8)
type = "active"
def handler(fit, module, context):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"),

View File

@@ -0,0 +1,13 @@
# Used by:
# Variations of module: Omnidirectional Tracking Enhancer I (9 of 9)
type = "passive"
def handler(fit, module, context):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"),
"maxRange", module.getModifiedItemAttr("maxRangeBonus"),
stackingPenalties = True)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"),
"falloff", module.getModifiedItemAttr("falloffBonus"),
stackingPenalties = True)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"),
"trackingSpeed", module.getModifiedItemAttr("trackingSpeedBonus"),
stackingPenalties = True)

View File

@@ -1,5 +1,5 @@
# Used by:
# Ships from group: Exhumer (3 of 3)
# Ships from group: Exhumer (4 of 4)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Exhumers").level

View File

@@ -1,7 +1,7 @@
# Used by:
# Ship: Viator
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Transport Ships").level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems"),
"duration", ship.getModifiedItemAttr("eliteBonusIndustrial2") * level)
# Ships from group: Exhumer (4 of 4)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Exhumers").level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining"),
"duration", ship.getModifiedItemAttr("eliteBonusBarge2") * level)

View File

@@ -0,0 +1,8 @@
# Used by:
# Ships from group: Exhumer (4 of 4)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Exhumers").level
for damageType in ("em", "thermal", "explosive", "kinetic"):
fit.ship.boostItemAttr("shield{}DamageResonance".format(damageType.capitalize()),
ship.getModifiedItemAttr("eliteBonusBarge1") * level)

View File

@@ -1,8 +0,0 @@
# Used by:
# Ships from group: Exhumer (3 of 3)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Exhumers").level
groups = ("Strip Miner", "Frequency Mining Laser")
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
"miningAmount", ship.getModifiedItemAttr("eliteBonusBarge1") * level)

View File

@@ -0,0 +1,7 @@
# Used by:
# Ship: Prospect
type = "passive"
def handler(fit, module, context):
level = fit.character.getSkill("Expedition Frigates").level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining"),
"miningAmount", module.getModifiedItemAttr("eliteBonusExpedition1") * level)

View File

@@ -0,0 +1,6 @@
# Used by:
# Ship: Prospect
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Expedition Frigates").level
fit.ship.boostItemAttr("signatureRadius", ship.getModifiedItemAttr("eliteBonusExpedition2") * level)

View File

@@ -1,5 +1,6 @@
# Used by:
# Ships from group: Jump Freighter (4 of 4)
# Ship: Anshar
# Ship: Ark
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Jump Freighters").level

View File

@@ -1,5 +1,6 @@
# Used by:
# Ships from group: Jump Freighter (4 of 4)
# Ship: Nomad
# Ship: Rhea
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Jump Freighters").level

View File

@@ -0,0 +1,6 @@
# Used by:
# Ships from group: Deep Space Transport (4 of 4)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Afterburner"),
"overloadSpeedFactorBonus", ship.getModifiedItemAttr("roleBonusOverheatDST"))

View File

@@ -0,0 +1,6 @@
# Used by:
# Ships from group: Deep Space Transport (4 of 4)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Hull Upgrades"),
"overloadHardeningBonus", ship.getModifiedItemAttr("roleBonusOverheatDST"))

View File

@@ -0,0 +1,8 @@
# Used by:
# Ships from group: Deep Space Transport (4 of 4)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems"),
"overloadArmorDamageAmount", ship.getModifiedItemAttr("roleBonusOverheatDST"))
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems"),
"overloadSelfDurationBonus", ship.getModifiedItemAttr("roleBonusOverheatDST"))

View File

@@ -0,0 +1,9 @@
# Used by:
# Ship: Impel
# Ship: Occator
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Transport Ships").level
for damageType in ("em", "thermal", "explosive", "kinetic"):
fit.ship.boostItemAttr("armor{}DamageResonance".format(damageType.capitalize()),
ship.getModifiedItemAttr("eliteBonusIndustrial2") * level)

View File

@@ -0,0 +1,6 @@
# Used by:
# Ships from group: Deep Space Transport (4 of 4)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Transport Ships").level
fit.ship.boostItemAttr("fleetHangarCapacity", ship.getModifiedItemAttr("eliteBonusIndustrial1") * level)

View File

@@ -0,0 +1,6 @@
# Used by:
# Ships from group: Deep Space Transport (4 of 4)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("High Speed Maneuvering"),
"overloadSpeedFactorBonus", ship.getModifiedItemAttr("roleBonusOverheatDST"))

View File

@@ -0,0 +1,6 @@
# Used by:
# Ships from group: Deep Space Transport (4 of 4)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Hull Upgrades"),
"overloadSelfDurationBonus", ship.getModifiedItemAttr("roleBonusOverheatDST"))

View File

@@ -0,0 +1,8 @@
# Used by:
# Ships from group: Deep Space Transport (4 of 4)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation"),
"overloadShieldBonus", ship.getModifiedItemAttr("roleBonusOverheatDST"))
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation"),
"overloadSelfDurationBonus", ship.getModifiedItemAttr("roleBonusOverheatDST"))

View File

@@ -0,0 +1,6 @@
# Used by:
# Ships from group: Deep Space Transport (4 of 4)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Tactical Shield Manipulation"),
"overloadHardeningBonus", ship.getModifiedItemAttr("roleBonusOverheatDST"))

View File

@@ -0,0 +1,9 @@
# Used by:
# Ship: Bustard
# Ship: Mastodon
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Transport Ships").level
for damageType in ("em", "thermal", "explosive", "kinetic"):
fit.ship.boostItemAttr("shield{}DamageResonance".format(damageType.capitalize()),
ship.getModifiedItemAttr("eliteBonusIndustrial2") * level)

View File

@@ -0,0 +1,6 @@
# Used by:
# Ships from group: Blockade Runner (4 of 4)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Transport Ships").level
fit.ship.boostItemAttr("warpSpeedMultiplier", ship.getModifiedItemAttr("eliteBonusIndustrial1") * level)

View File

@@ -1,6 +1,6 @@
# Used by:
# Implants named like: Eifyr and Co. 'Rogue' Evasive Maneuvering EM (6 of 6)
# Implants named like: Low grade Nomad (5 of 6)
# Implants named like: grade Nomad (10 of 12)
# Modules named like: Low Friction Nozzle Joints (8 of 8)
# Implant: Genolution Core Augmentation CA-4
# Skill: Evasive Maneuvering

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Low grade Centurion (5 of 6)
# Implants named like: grade Centurion (10 of 12)
type = "passive"
def handler(fit, implant, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote ECM Burst",

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Low grade Centurion (5 of 6)
# Implants named like: grade Centurion (10 of 12)
type = "passive"
def handler(fit, implant, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Sensor Damper",

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Low grade Centurion (5 of 6)
# Implants named like: grade Centurion (10 of 12)
type = "passive"
def handler(fit, implant, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Tracking Disruptor",

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Low grade Centurion (5 of 6)
# Implants named like: grade Centurion (10 of 12)
type = "passive"
def handler(fit, implant, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Target Painter",

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Low grade Centurion (5 of 6)
# Implants named like: grade Centurion (10 of 12)
# Modules named like: Particle Dispersion Projector (8 of 8)
# Skill: Long Distance Jamming
type = "passive"

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Spur (6 of 12)
# Implants named like: High grade Spur (6 of 6)
type = "passive"
runTime = "early"
def handler(fit, implant, context):

View File

@@ -0,0 +1,6 @@
# Used by:
# Implants named like: grade Harvest (10 of 12)
type = "passive"
def handler(fit, implant, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Frequency Mining Laser",
"maxRange", implant.getModifiedItemAttr("maxRangeBonus"))

View File

@@ -4,8 +4,8 @@ type = "gang", "active"
gangBoost = "miningMaxRange"
def handler(fit, module, context):
if "gang" not in context: return
groups = ("Mining Laser", "Strip Miner", "Frequency Mining Laser",
"Ice Harvester", "Gas Cloud Harvester")
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gas Cloud Harvesting") or mod.item.requiresSkill("Ice Harvesting") or mod.item.requiresSkill("Mining"),
"maxRange", module.getModifiedItemAttr("commandBonus"),
stackingPenalties = True)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("CPU Management"),
"surveyScanRange", module.getModifiedItemAttr("commandBonus"))

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Low grade Harvest (5 of 6)
# Implants named like: grade Harvest (10 of 12)
type = "passive"
def handler(fit, implant, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Gas Cloud Harvester",

View File

@@ -3,4 +3,4 @@
type = "passive"
def handler(fit, implant, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gas Cloud Harvesting"),
"duration", implant.getModifiedItemAttr("durationBonus"))
"duration", implant.getModifiedItemAttr("durationBonus"))

View File

@@ -1,6 +1,6 @@
# Used by:
# Ship: Venture
# Variations of ship: Venture (2 of 2)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Gas Cloud Harvesting"),
"miningAmount", module.getModifiedItemAttr("miningAmountMultiplier"))
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == "Gas Cloud Harvester",
"miningAmount", module.getModifiedItemAttr("miningAmountMultiplier"))

View File

@@ -1,5 +1,6 @@
# Used by:
# Modules named like: Memetic Algorithm Bank (8 of 8)
# Implant: Poteque 'Prospector' Environmental Analysis EY-1005
# Implant: Poteque 'Prospector' Hacking HC-905
# Skill: Hacking
type = "passive"

View File

@@ -0,0 +1,6 @@
# Used by:
# Modules from group: Shield Boost Amplifier (25 of 25)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation"),
"heatDamage", module.getModifiedItemAttr("heatDamageBonus"))

View File

@@ -1,7 +1,8 @@
# Used by:
# Implants named like: Slave (10 of 12)
# Implants named like: grade Slave (15 of 18)
# Modules named like: Trimark Armor Pump (8 of 8)
# Implant: Low-grade Snake Epsilon
# Implant: Mid-grade Snake Epsilon
# Skill: Hull Upgrades
type = "passive"
def handler(fit, container, context):

View File

@@ -1,6 +1,7 @@
# Used by:
# Variations of ship: Procurer (2 of 2)
# Variations of ship: Retriever (2 of 2)
# Ships from group: Exhumer (3 of 4)
# Ship: Procurer
# Ship: Retriever
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Ice Harvesting"),

View File

@@ -1,6 +1,7 @@
# Used by:
# Variations of ship: Procurer (2 of 2)
# Variations of ship: Retriever (2 of 2)
# Ships from group: Exhumer (3 of 4)
# Ship: Procurer
# Ship: Retriever
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Ice Harvesting"),

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Grail (6 of 12)
# Implants named like: High grade Grail (6 of 6)
type = "passive"
runTime = "early"
def handler(fit, implant, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Ascendancy (12 of 12)
# Implants named like: grade Ascendancy (12 of 12)
runTime = "early"
type = "passive"
def handler(fit, implant, context):

View File

@@ -1,5 +1,6 @@
# Used by:
# Implants named like: Inherent Implants 'Noble' Mechanic MC (6 of 6)
# Modules named like: Transverse Bulkhead (8 of 8)
# Skill: Mechanics
type = "passive"
def handler(fit, container, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Module: Large Micro Jump Drive
# Modules from group: Micro Jump Drive (2 of 2)
type = "active"
def handler(fit, module, context):
fit.ship.boostItemAttr("signatureRadius", module.getModifiedItemAttr("signatureRadiusBonusPercent"))

View File

@@ -1,5 +1,5 @@
# Used by:
# Ship: Rorqual
# Ships from group: Capital Industrial Ship (2 of 2)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Director"),

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Low grade Harvest (5 of 6)
# Implants named like: grade Harvest (10 of 12)
type = "passive"
def handler(fit, implant, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Mining Laser",

View File

@@ -1,7 +1,8 @@
# Used by:
# Variations of ship: Procurer (2 of 2)
# Variations of ship: Retriever (2 of 2)
# Ship: Venture
# Ships from group: Exhumer (3 of 4)
# 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"),

View File

@@ -1,6 +0,0 @@
# Used by:
# Modules from group: Reinforced Bulkhead (12 of 12)
type = "passive"
def handler(fit, module, context):
fit.ship.multiplyItemAttr("maxVelocity", module.getModifiedItemAttr("maxVelocityBonus"),
stackingPenalties = True)

View File

@@ -1,5 +1,6 @@
# Used by:
# Implant: Low-grade Snake Alpha
# Implant: Mid-grade Snake Alpha
type = "passive"
def handler(fit, implant, context):
fit.ship.boostItemAttr("maxVelocity", implant.getModifiedItemAttr("velocityBonus"))

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Snake (11 of 12)
# Implants named like: grade Snake (16 of 18)
# Modules named like: Auxiliary Thrusters (8 of 8)
# Implant: Quafe Zero
# Skill: Navigation

View File

@@ -1,5 +1,5 @@
# Used by:
# Ship: Rorqual
# Ships from group: Capital Industrial Ship (2 of 2)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Capital Industrial Ships").level

View File

@@ -1,8 +1,8 @@
# Used by:
# Modules from group: Drone Tracking Modules (7 of 7)
# Modules from group: Remote Tracking Computer (10 of 10)
# Modules from group: Tracking Computer (14 of 14)
# Modules from group: Tracking Disruptor (10 of 10)
# Variations of module: Omnidirectional Tracking Link I (8 of 8)
type = "overheat"
def handler(fit, module, context):
module.boostItemAttr("maxRangeBonus", module.getModifiedItemAttr("overloadTrackingModuleStrengthBonus"))

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Jackal (6 of 12)
# Implants named like: High grade Jackal (6 of 6)
runTime = "early"
type = "passive"
def handler(fit, implant, context):

View File

@@ -0,0 +1,7 @@
# Used by:
# Ships from group: Freighter (4 of 4)
# Ships from group: Jump Freighter (4 of 4)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Reinforced Bulkhead",
"cpu", ship.getModifiedItemAttr("cpuNeedBonus"))

View File

@@ -1,5 +1,5 @@
# Used by:
# Ship: Rorqual
# Ships from group: Capital Industrial Ship (2 of 2)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Cargo Scanner",

View File

@@ -1,5 +1,5 @@
# Used by:
# Ship: Rorqual
# Ships from group: Capital Industrial Ship (2 of 2)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Survey Scanner",

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants from group: Cyberimplant (20 of 157)
# Implants named like: High grade (20 of 60)
type = "passive"
def handler(fit, implant, context):
for type in ("Gravimetric", "Magnetometric", "Radar", "Ladar"):

View File

@@ -1,7 +1,6 @@
# Used by:
# Modules named like: Drone Control Range Augmentor (8 of 8)
# Skill: Electronic Warfare Drone Interfacing
# Skill: Scout Drone Operation
# Skills named like: Drone Avionics (2 of 2)
type = "passive"
def handler(fit, container, context):
level = container.level if "skill" in context else 1

View File

@@ -0,0 +1,6 @@
# Used by:
# Charges from group: Tracking Disruption Script (2 of 2)
# Charges from group: Tracking Script (2 of 2)
type = "passive"
def handler(fit, module, context):
module.boostItemAttr("falloffBonus", module.getModifiedChargeAttr("falloffBonusBonus"))

View File

@@ -4,4 +4,3 @@
type = "passive"
def handler(fit, module, context):
module.boostItemAttr("maxRangeBonus", module.getModifiedChargeAttr("maxRangeBonusBonus"))
module.boostItemAttr("falloffBonus", module.getModifiedChargeAttr("falloffBonusBonus"))

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Talisman (12 of 12)
# Implants named like: grade Talisman (18 of 18)
runTime = "early"
type = "passive"
def handler(fit, implant, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Talisman (10 of 12)
# Implants named like: grade Talisman (15 of 18)
type = "passive"
def handler(fit, implant, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capacitor Emission Systems"),

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Crystal (12 of 12)
# Implants named like: grade Crystal (18 of 18)
runTime = "early"
type = "passive"
def handler(fit, implant, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Low grade Centurion (6 of 6)
# Implants named like: grade Centurion (12 of 12)
runTime = "early"
type = "passive"
def handler(fit, implant, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Low grade Harvest (6 of 6)
# Implants named like: grade Harvest (12 of 12)
runTime = "early"
type = "passive"
def handler(fit, implant, context):

View File

@@ -1,6 +1,6 @@
# Used by:
# Implants named like: Slave (12 of 12)
# Implant: Halo Omega
# Implants named like: grade Slave (18 of 18)
# Implant: High-grade Halo Omega
runTime = "early"
type = "passive"
def handler(fit, implant, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Snake (12 of 12)
# Implants named like: grade Snake (18 of 18)
runTime = "early"
type = "passive"
def handler(fit, implant, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Low grade Virtue (6 of 6)
# Implants named like: grade Virtue (12 of 12)
runTime = "early"
type = "passive"
def handler(fit, implant, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Low grade Edge (6 of 6)
# Implants named like: grade Edge (12 of 12)
runTime = "early"
type = "passive"
def handler(fit, implant, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Low grade Nomad (6 of 6)
# Implants named like: grade Nomad (12 of 12)
runTime = "early"
type = "passive"
def handler(fit, implant, context):

Some files were not shown because too many files have changed in this diff Show More