Compare commits

...

73 Commits

Author SHA1 Message Date
DarkPhoenix
2903c7e0ca Do not penalize effects modifying structure resistance 2014-03-20 22:47:42 +04:00
DarkPhoenix
e00941b2c5 Do not penalize siege module bonus 2014-03-18 22:02:19 +04:00
blitzmann
ffaa707ea9 Fix #62 2014-03-17 18:13:29 -04:00
blitzmann
7337d54511 Added fit import from copied eve chat 2014-03-16 23:57:52 -04:00
blitzmann
dd395aff03 Dev version 2014-03-15 23:40:33 -04:00
DarkPhoenix
4a41638472 Update to rubicon 1.3 2014-03-15 17:33:45 +04:00
blitzmann
50fbda288a Open fits at null-sec.com if not in IGB 2014-03-13 22:06:14 -04:00
blitzmann
7a33aba329 Finished visual improvements to the HTML export and removed debugging statements 2014-03-13 00:14:57 -04:00
blitzmann
ec7a58c592 Update jQuery mobile and add ship group heading. 2014-03-12 18:40:53 -04:00
blitzmann
9ac11f9a7c Quick fix for issue 55 2014-03-11 23:38:01 -04:00
DarkPhoenix
63a088631d Fix #54 2014-03-12 01:04:02 +04:00
DarkPhoenix
4fa585046f Fix potential crash on ansi + unicode concatenation 2014-03-12 00:24:29 +04:00
DarkPhoenix
f90983b541 Fix for #57 2014-03-11 23:40:28 +04:00
Anton Vorobyov
5095ac4881 Merge pull request #60 from bmonty/master
Update .gitignore
2014-03-11 22:23:45 +03:00
DarkPhoenix
c01450d1a1 Expand path for database conversion script 2014-03-11 23:17:10 +04:00
blitzmann
3718d20361 Probably best to generalize. Changed user guide to wiki. 2014-03-10 23:34:00 -04:00
blitzmann
1d66757b28 Added some help menu options the point to external resources 2014-03-10 19:08:06 -04:00
blitzmann
9e67ad032c Removed print debugging. 2014-03-08 22:51:45 -05:00
blitzmann
06bd15079d Improvements to update logic 2014-03-08 22:39:29 -05:00
Benjamin Montgomery
7e59b2d43a Update .gitignore
Ignore the fits html file.
2014-03-08 07:48:14 -10:00
blitzmann
4430204227 Merge branch 'prefs' 2014-03-07 21:36:31 -05:00
blitzmann
652e0738af Rename GlobalPreferences to GeneralPreferences 2014-03-07 21:28:58 -05:00
blitzmann
e6bc831305 Added static line under pref page title 2014-03-07 20:57:39 -05:00
blitzmann
513a02a4d4 Merge branch 'master' into prefs 2014-03-07 20:48:27 -05:00
blitzmann
f355dac322 Dev versioning 2014-03-04 14:35:00 -05:00
blitzmann
85f632bd20 Fixed infinite loop 2014-03-04 14:33:48 -05:00
blitzmann
cb0a5ded49 Merge pull request #53 from blitzmann/fleet
Fleet booster refactoring
2014-03-03 18:48:36 -05:00
blitzmann
bf1df97886 Expand fit choice to available space 2014-03-03 11:38:22 -05:00
blitzmann
b320c6ae77 Merge branch 'master' into fleet 2014-03-03 11:20:06 -05:00
blitzmann
9d2eee3b01 Removing sizing hack now that dialog sizing is correct 2014-03-03 11:19:32 -05:00
blitzmann
9b096524cc Updated update preference view with new icon and text wrapping 2014-03-03 01:53:55 -05:00
blitzmann
35a0b0ce4b Fix for PreferenceDialog sizing issues 2014-03-03 01:52:57 -05:00
blitzmann
5d75b2bd6d Merge branch 'master' into prefs 2014-03-02 23:55:46 -05:00
blitzmann
83cc3fd28a Merge pull request #47 from blitzmann/onlUpdate
Update notifications
2014-03-02 23:45:43 -05:00
blitzmann
2d69705469 Added date in update message 2014-03-02 23:42:16 -05:00
blitzmann
2ff6ecdbec Fixed settings for prerelease suppression 2014-03-02 22:55:11 -05:00
blitzmann
25c9bfe4d4 Check to see if release version is actually higher than current version (shouldn't really happen, but who knows) 2014-03-02 22:45:18 -05:00
blitzmann
91b2eff7b4 Added proxy icon, removed help text for global char and profile options 2014-03-02 22:23:49 -05:00
blitzmann
ea3969e1e3 Show preference pages in the order they appear in builtinPreferenceViews 2014-03-02 20:02:36 -05:00
blitzmann
cd5d047891 Use .Wrap() and the dialogs width to set appropriate sizer of large text 2014-03-02 19:54:35 -05:00
blitzmann
34f27f7995 Do not commit saved data 2014-03-02 17:51:48 -05:00
blitzmann
752b1fe726 Merge pull request #56 from blitzmann/issue52-ghosting
Fix issue #52 - slot ghosting
2014-03-02 17:35:22 -05:00
blitzmann
281e591984 Split general and proxy settings. Added some help text (not currently displayed). Dialog sizing needs to be addressed 2014-03-02 17:28:25 -05:00
blitzmann
b686aa6d0b Merge pull request #49 from blitzmann/searchfix
Fixed issue #48
2014-03-02 17:20:52 -05:00
blitzmann
035e6cea41 Fixes incorrect setting of draggedFitID when selecting booster from menu 2014-02-26 00:32:07 -05:00
blitzmann
5aa34caca6 Help message in fleet window 2014-02-26 00:07:51 -05:00
blitzmann
4fdd3f177a Applying appropriate icons 2014-02-25 23:54:27 -05:00
blitzmann
0826aa4bfe Fix for issue 52 2014-02-24 21:58:42 -05:00
blitzmann
5869fe6d97 Added booster icon
This is technically a button, and acts like a button without a function. Must look into making it a proper icon and not a button.
2014-02-24 03:02:14 -05:00
blitzmann
e877cef3a9 Revert "Added icon to show boosting fits."
This reverts commit f7fdcfcd4e.
2014-02-24 03:00:06 -05:00
blitzmann
f7fdcfcd4e Added icon to show boosting fits. 2014-02-24 02:34:05 -05:00
blitzmann
c6ad328e99 Changed "Set Booster Fit" option to a boolean menu item with fancy checkbox. 2014-02-24 00:56:04 -05:00
blitzmann
d8dfafedfa Refactoring of code, along with general housekeeping. Also, character menu is now disabled with no fit selected. 2014-02-24 00:55:25 -05:00
blitzmann
65cc0bec1c Fixed style issue that caused content to move when switching between choice and static text 2014-02-23 22:20:22 -05:00
blitzmann
c34215f9e3 Got rid of UpdateFleetFitsUI and baked it's functionality into fitSelected; now supports dragging/setting via right click. 2014-02-23 22:18:58 -05:00
blitzmann
354b732c2c Fit choice works and is properly applied. Dragging and setting via context from ship browser does not. 2014-02-22 21:11:59 -05:00
blitzmann
b910982994 Bug fix and more work 2014-02-22 01:14:33 -05:00
blitzmann
f2c1002d58 Fixes bug with fit copy.
`copy.deepcopy` was not copying the booster property of the fit for whatever reason - I blame my poor understanding of copy.
2014-02-22 00:52:29 -05:00
blitzmann
50ce4d37aa GangView is not aware of changes to booster fits 2014-02-21 21:50:18 -05:00
blitzmann
46662d2b72 Added getFitsWithBooster query 2014-02-21 21:47:10 -05:00
blitzmann
7579f3c3e1 Fixed cases where fit.booster column might contain null instead of bool 2014-02-20 23:56:50 -05:00
blitzmann
3842913fe1 Added booster fit toggling in database, menu label toggling, and migration code 2014-02-20 23:26:26 -05:00
blitzmann
aaadcb9b45 Add "Flag as Booster" item to fitting menu 2014-02-20 00:57:12 -05:00
blitzmann
29fc82b771 Semantics. Tweaking working not better represents that pre-release notification is opt-in. Thanks Andro! 2014-02-18 02:04:07 -05:00
blitzmann
48963167fe Reverts previous commit and introduces better way to filter ships 2014-02-17 23:29:02 -05:00
blitzmann
4095365518 Hotfix for issue #48 2014-02-17 22:44:40 -05:00
blitzmann
26b078b69f Tweaking label of update preferences 2014-02-17 11:30:04 -05:00
blitzmann
9c792fc9a7 Pre-release notifications suppressed by default 2014-02-16 18:09:49 -05:00
blitzmann
c0b4e73629 Added logic for notification suppression, along with other tweaks. Did not worry too much on how to handle pre-releases. 2014-02-16 01:26:13 -05:00
blitzmann
024637432c Added settings for update notification suppression. 2014-02-15 21:58:48 -05:00
blitzmann
7ced595cca Custom dialog implemented. 2014-02-15 00:55:04 -05:00
blitzmann
d7dda83314 More work on update notification. Displays debug popup now. 2014-02-13 22:52:36 -05:00
blitzmann
6ee474a8ff Started work on update notification. Successfully prints out alert to stdout if version from GitHub is not the same as internal version. 2014-02-13 22:28:56 -05:00
431 changed files with 1470 additions and 1533 deletions

4
.gitignore vendored
View File

@@ -12,3 +12,7 @@
#Patch files
*.patch
#Personal
/saveddata
#Pyfa file
pyfaFits.html

View File

@@ -13,10 +13,10 @@ debug = False
saveInRoot = False
# Version data
version = "1.1.21"
tag = "Stable"
version = "1.1.23"
tag = "git"
expansionName = "Rubicon"
expansionVersion = "1.1"
expansionVersion = "1.3"
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
getSquad, getBoosterFits
#If using in memory saveddata, you'll want to reflect it so the data structure is good.
if config.saveddata_connectionstring == "sqlite:///:memory:":

View File

@@ -3,7 +3,7 @@ import sqlalchemy
def update(saveddata_engine):
checkPriceFailures(saveddata_engine)
checkApiDefaultChar(saveddata_engine)
checkFitBooster(saveddata_engine)
def checkPriceFailures(saveddata_engine):
# Check if we have 'failed' column
@@ -39,3 +39,21 @@ def checkApiDefaultChar(saveddata_engine):
except sqlalchemy.exc.DatabaseError:
saveddata_engine.execute("ALTER TABLE characters ADD COLUMN defaultChar INTEGER;")
saveddata_engine.execute("ALTER TABLE characters ADD COLUMN chars VARCHAR;")
def checkFitBooster(saveddata_engine):
try:
saveddata_engine.execute("SELECT * FROM fits LIMIT 1")
# If table doesn't exist, it means we're doing everything from scratch
# and sqlalchemy will process everything as needed
except sqlalchemy.exc.DatabaseError:
pass
# If not, we're running on top of existing DB
else:
# Check that we have columns
try:
saveddata_engine.execute("SELECT booster FROM fits LIMIT 1")
# If we don't, create them
except sqlalchemy.exc.DatabaseError:
saveddata_engine.execute("ALTER TABLE fits ADD COLUMN booster BOOLEAN;")
# Set NULL data to 0 (needed in case of downgrade, see GH issue #62
saveddata_engine.execute("UPDATE fits SET booster = 0 WHERE booster IS NULL;")

View File

@@ -17,7 +17,7 @@
# along with eos. If not, see <http://www.gnu.org/licenses/>.
#===============================================================================
from sqlalchemy import Table, Column, Integer, ForeignKey, String
from sqlalchemy import Table, Column, Integer, ForeignKey, String, Boolean
from sqlalchemy.orm import relation, mapper
from sqlalchemy.sql import and_
@@ -36,7 +36,8 @@ fits_table = Table("fits", saveddata_meta,
Column("name", String, nullable = False),
Column("timestamp", Integer, nullable = False),
Column("characterID", ForeignKey("characters.ID"), nullable = True),
Column("damagePatternID", ForeignKey("damagePatterns.ID"), nullable=True))
Column("damagePatternID", ForeignKey("damagePatterns.ID"), nullable=True),
Column("booster", Boolean, nullable = False, index = True, default = 0))
projectedFits_table = Table("projectedFits", saveddata_meta,
Column("sourceID", ForeignKey("fits.ID"), primary_key = True),

View File

@@ -248,6 +248,24 @@ def getFitsWithShip(shipID, ownerID=None, where=None, eager=None):
raise TypeError("ShipID must be integer")
return fits
def getBoosterFits(ownerID=None, where=None, eager=None):
"""
Get all the fits that are flagged as a boosting ship
If no user is passed, do this for all users.
"""
if ownerID is not None and not isinstance(ownerID, int):
raise TypeError("OwnerID must be integer")
filter = Fit.booster == 1
if ownerID is not None:
filter = and_(filter, Fit.ownerID == ownerID)
filter = processWhere(filter, where)
eager = processEager(eager)
with sd_lock:
fits = saveddata_session.query(Fit).options(*eager).filter(filter).all()
return fits
def countFitsWithShip(shipID, ownerID=None, where=None, eager=None):
"""
Get all the fits using a certain ship.

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Valve (8 of 8)
# Modules named like: Dynamic Fuel Valve (8 of 8)
type = "passive"
def handler(fit, container, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Propulsion Module",

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Eifyr Acceleration Control AC (6 of 6)
# Implants named like: Eifyr and Co. 'Rogue' Acceleration Control AC (6 of 6)
type = "passive"
def handler(fit, implant, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Propulsion Module",

View File

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

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: 'Rogue' Afterburner (6 of 6)
# Implants named like: Eifyr and Co. 'Rogue' Afterburner AB (6 of 6)
# Implant: Zor's Custom Navigation Link
# Skill: Afterburner
type = "passive"

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Engine Housing (8 of 8)
# Modules named like: Polycarbon Engine Housing (8 of 8)
type = "passive"
def handler(fit, module, context):
fit.ship.boostItemAttr("agility", module.getModifiedItemAttr("agilityMultiplier"), stackingPenalties = True)

View File

@@ -1,15 +1,5 @@
# Used by:
# Charges from group: Advanced Pulse Laser Crystal (6 of 6)
# Charges from group: Advanced Railgun Charge (6 of 6)
# Charges from group: Capacitor Booster Charge (16 of 16)
# Charges from group: Frequency Crystal (185 of 185)
# Charges from group: Hybrid Charge (209 of 209)
# Charges from group: Mercoxit Mining Crystal (2 of 2)
# Charges from group: Mining Crystal (30 of 30)
# Charge: Focused Warp Disruption Script
# Charge: Void L
# Charge: Void M
# Charge: Void S
# Items from category: Charge (458 of 828)
type = "passive"
def handler(fit, module, context):
# Dirty hack to work around cap charges setting cap booster

View File

@@ -1,13 +1,5 @@
# Used by:
# Charges from group: Advanced Artillery Ammo (6 of 6)
# Charges from group: Advanced Autocannon Ammo (6 of 6)
# Charges from group: Advanced Beam Laser Crystal (6 of 6)
# Charges from group: Advanced Blaster Charge (6 of 6)
# Charges from group: Advanced Pulse Laser Crystal (6 of 6)
# Charges from group: Advanced Railgun Charge (6 of 6)
# Charges from group: Frequency Crystal (185 of 185)
# Charges from group: Hybrid Charge (209 of 209)
# Charges from group: Projectile Ammo (129 of 129)
# Items from category: Charge (559 of 828)
type = "passive"
def handler(fit, module, context):
module.multiplyItemAttr("maxRange", module.getModifiedChargeAttr("weaponRangeMultiplier"))

View File

@@ -1,8 +1,5 @@
# Used by:
# Implant: Improved Exile Booster
# Implant: Standard Exile Booster
# Implant: Strong Exile Booster
# Implant: Synth Exile Booster
# Implants named like: Exile Booster (4 of 4)
type = "passive"
def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems") or mod.item.requiresSkill("Capital Repair Systems"),

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Auxiliary Nano (8 of 8)
# Modules named like: Auxiliary Nano Pump (8 of 8)
type = "passive"
def handler(fit, implant, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Repair Systems"),

View File

@@ -1,10 +1,7 @@
# Used by:
# Modules from group: Armor Coating (202 of 202)
# Modules from group: Armor Plating Energized (187 of 187)
# Module: QA Multiship Module - 10 Players
# Module: QA Multiship Module - 20 Players
# Module: QA Multiship Module - 40 Players
# Module: QA Multiship Module - 5 Players
# Modules named like: QA Multiship Module Players (4 of 4)
type = "passive"
def handler(fit, module, context):
fit.ship.multiplyItemAttr("armorHP", module.getModifiedItemAttr("armorHPMultiplier"))

View File

@@ -1,7 +1,5 @@
# Used by:
# Implant: Inherent Implants 'Highwall' Mining MX-1001
# Implant: Inherent Implants 'Highwall' Mining MX-1003
# Implant: Inherent Implants 'Highwall' Mining MX-1005
# Implants named like: Inherent Implants 'Highwall' Mining MX (3 of 3)
# Implant: Michi's Excavation Augmentor
# Skill: Astrogeology
# Skill: Mining

View File

@@ -1,7 +1,5 @@
# Used by:
# Implant: Poteque 'Prospector' Astrometric Pinpointing AP-602
# Implant: Poteque 'Prospector' Astrometric Pinpointing AP-606
# Implant: Poteque 'Prospector' Astrometric Pinpointing AP-610
# Implants named like: Poteque 'Prospector' Astrometric Pinpointing AP (3 of 3)
# Skill: Astrometric Pinpointing
# Skill: Astrometrics
type = "passive"

View File

@@ -1,17 +1,8 @@
# 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)
# Modules named like: Gravity Capacitor Upgrade (8 of 8)
# Implant: Low-grade Virtue Alpha
# Implant: Low-grade Virtue Beta
# Implant: Low-grade Virtue Delta
# Implant: Low-grade Virtue Epsilon
# Implant: Low-grade Virtue Gamma
# Implant: Poteque 'Prospector' Astrometric Rangefinding AR-802
# Implant: Poteque 'Prospector' Astrometric Rangefinding AR-806
# Implant: Poteque 'Prospector' Astrometric Rangefinding AR-810
# Module: Core Probe Launcher II
# Module: Expanded Probe Launcher II
# Module: Sisters Core Probe Launcher
# Module: Sisters Expanded Probe Launcher
# Skill: Astrometric Rangefinding
# Skill: Astrometrics
type = "passive"

View File

@@ -1,6 +1,5 @@
# Used by:
# Implant: Eifyr and Co. 'Alchemist' Biology BY-805
# Implant: Eifyr and Co. 'Alchemist' Biology BY-810
# Implants named like: Eifyr and Co. 'Alchemist' Biology BY (2 of 2)
# Skill: Biology
type = "passive"
def handler(fit, container, context):

View File

@@ -1,16 +1,5 @@
# Used by:
# Implant: Improved Crash Booster
# Implant: Improved Exile Booster
# Implant: Improved Frentix Booster
# Implant: Improved X-Instinct Booster
# Implant: Standard Crash Booster
# Implant: Standard Exile Booster
# Implant: Standard Frentix Booster
# Implant: Standard X-Instinct Booster
# Implant: Strong Crash Booster
# Implant: Strong Exile Booster
# Implant: Strong Frentix Booster
# Implant: Strong X-Instinct Booster
# Implants from group: Booster (12 of 37)
type = "boosterSideEffect"
def handler(fit, booster, context):
fit.ship.boostItemAttr("armorHP", booster.getModifiedItemAttr("boosterArmorHPPenalty"))

View File

@@ -1,13 +1,5 @@
# Used by:
# Implant: Improved Drop Booster
# Implant: Improved Mindflood Booster
# Implant: Improved Sooth Sayer Booster
# Implant: Standard Drop Booster
# Implant: Standard Mindflood Booster
# Implant: Standard Sooth Sayer Booster
# Implant: Strong Drop Booster
# Implant: Strong Mindflood Booster
# Implant: Strong Sooth Sayer Booster
# Implants from group: Booster (9 of 37)
type = "boosterSideEffect"
def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Armor Repair Unit",

View File

@@ -1,10 +1,6 @@
# Used by:
# Implant: Improved Blue Pill Booster
# Implant: Improved Exile Booster
# Implant: Standard Blue Pill Booster
# Implant: Standard Exile Booster
# Implant: Strong Blue Pill Booster
# Implant: Strong Exile Booster
# Implants named like: Blue Pill Booster (3 of 5)
# Implants named like: Exile Booster (3 of 4)
type = "boosterSideEffect"
def handler(fit, booster, context):
fit.ship.boostItemAttr("capacitorCapacity", booster.getModifiedItemAttr("boosterCapacitorCapacityPenalty"))

View File

@@ -1,16 +1,5 @@
# Used by:
# Implant: Improved Crash Booster
# Implant: Improved Drop Booster
# Implant: Improved Frentix Booster
# Implant: Improved Sooth Sayer Booster
# Implant: Standard Crash Booster
# Implant: Standard Drop Booster
# Implant: Standard Frentix Booster
# Implant: Standard Sooth Sayer Booster
# Implant: Strong Crash Booster
# Implant: Strong Drop Booster
# Implant: Strong Frentix Booster
# Implant: Strong Sooth Sayer Booster
# Implants from group: Booster (12 of 37)
type = "boosterSideEffect"
def handler(fit, booster, context):
fit.ship.boostItemAttr("maxVelocity", booster.getModifiedItemAttr("boosterMaxVelocityPenalty"))

View File

@@ -1,10 +1,6 @@
# Used by:
# Implant: Improved Exile Booster
# Implant: Improved Mindflood Booster
# Implant: Standard Exile Booster
# Implant: Standard Mindflood Booster
# Implant: Strong Exile Booster
# Implant: Strong Mindflood Booster
# Implants named like: Exile Booster (3 of 4)
# Implants named like: Mindflood Booster (3 of 4)
type = "boosterSideEffect"
def handler(fit, booster, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),

View File

@@ -1,7 +1,5 @@
# Used by:
# Implant: Improved Blue Pill Booster
# Implant: Standard Blue Pill Booster
# Implant: Strong Blue Pill Booster
# Implants named like: Blue Pill Booster (3 of 5)
type = "boosterSideEffect"
def handler(fit, booster, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),

View File

@@ -1,10 +1,6 @@
# Used by:
# Implant: Improved Crash Booster
# Implant: Improved X-Instinct Booster
# Implant: Standard Crash Booster
# Implant: Standard X-Instinct Booster
# Implant: Strong Crash Booster
# Implant: Strong X-Instinct Booster
# Implants named like: Crash Booster (3 of 4)
# Implants named like: X Instinct Booster (3 of 4)
type = "boosterSideEffect"
def handler(fit, booster, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),

View File

@@ -1,11 +1,6 @@
# Used by:
# Implant: Eifyr and Co. 'Alchemist' Nanite Control NC-903
# Implant: Eifyr and Co. 'Alchemist' Nanite Control NC-905
# Implant: Low-grade Edge Alpha
# Implant: Low-grade Edge Beta
# Implant: Low-grade Edge Delta
# Implant: Low-grade Edge Epsilon
# Implant: Low-grade Edge Gamma
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
# Implants named like: Low grade Edge (5 of 6)
# Skill: Neurotoxin Control
type = "passive"
def handler(fit, container, context):

View File

@@ -1,11 +1,6 @@
# Used by:
# Implant: Eifyr and Co. 'Alchemist' Nanite Control NC-903
# Implant: Eifyr and Co. 'Alchemist' Nanite Control NC-905
# Implant: Low-grade Edge Alpha
# Implant: Low-grade Edge Beta
# Implant: Low-grade Edge Delta
# Implant: Low-grade Edge Epsilon
# Implant: Low-grade Edge Gamma
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
# Implants named like: Low grade Edge (5 of 6)
# Skill: Neurotoxin Control
type = "passive"
def handler(fit, container, context):

View File

@@ -1,11 +1,6 @@
# Used by:
# Implant: Eifyr and Co. 'Alchemist' Nanite Control NC-903
# Implant: Eifyr and Co. 'Alchemist' Nanite Control NC-905
# Implant: Low-grade Edge Alpha
# Implant: Low-grade Edge Beta
# Implant: Low-grade Edge Delta
# Implant: Low-grade Edge Epsilon
# Implant: Low-grade Edge Gamma
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
# Implants named like: Low grade Edge (5 of 6)
# Skill: Neurotoxin Control
type = "passive"
def handler(fit, container, context):

View File

@@ -1,11 +1,6 @@
# Used by:
# Implant: Eifyr and Co. 'Alchemist' Nanite Control NC-903
# Implant: Eifyr and Co. 'Alchemist' Nanite Control NC-905
# Implant: Low-grade Edge Alpha
# Implant: Low-grade Edge Beta
# Implant: Low-grade Edge Delta
# Implant: Low-grade Edge Epsilon
# Implant: Low-grade Edge Gamma
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
# Implants named like: Low grade Edge (5 of 6)
# Skill: Neurotoxin Control
type = "passive"
def handler(fit, container, context):

View File

@@ -1,11 +1,6 @@
# Used by:
# Implant: Eifyr and Co. 'Alchemist' Nanite Control NC-903
# Implant: Eifyr and Co. 'Alchemist' Nanite Control NC-905
# Implant: Low-grade Edge Alpha
# Implant: Low-grade Edge Beta
# Implant: Low-grade Edge Delta
# Implant: Low-grade Edge Epsilon
# Implant: Low-grade Edge Gamma
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
# Implants named like: Low grade Edge (5 of 6)
# Skill: Neurotoxin Control
type = "passive"
def handler(fit, container, context):

View File

@@ -1,16 +1,5 @@
# Used by:
# Implant: Improved Blue Pill Booster
# Implant: Improved Drop Booster
# Implant: Improved Sooth Sayer Booster
# Implant: Improved X-Instinct Booster
# Implant: Standard Blue Pill Booster
# Implant: Standard Drop Booster
# Implant: Standard Sooth Sayer Booster
# Implant: Standard X-Instinct Booster
# Implant: Strong Blue Pill Booster
# Implant: Strong Drop Booster
# Implant: Strong Sooth Sayer Booster
# Implant: Strong X-Instinct Booster
# Implants from group: Booster (12 of 37)
type = "boosterSideEffect"
def handler(fit, booster, context):
fit.ship.boostItemAttr("shieldCapacity", booster.getModifiedItemAttr("boosterShieldCapacityPenalty"))

View File

@@ -1,10 +1,6 @@
# Used by:
# Implant: Improved Drop Booster
# Implant: Improved X-Instinct Booster
# Implant: Standard Drop Booster
# Implant: Standard X-Instinct Booster
# Implant: Strong Drop Booster
# Implant: Strong X-Instinct Booster
# Implants named like: Drop Booster (3 of 4)
# Implants named like: X Instinct Booster (3 of 4)
type = "boosterSideEffect"
def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"),

View File

@@ -1,13 +1,5 @@
# Used by:
# Implant: Improved Blue Pill Booster
# Implant: Improved Mindflood Booster
# Implant: Improved Sooth Sayer Booster
# Implant: Standard Blue Pill Booster
# Implant: Standard Mindflood Booster
# Implant: Standard Sooth Sayer Booster
# Implant: Strong Blue Pill Booster
# Implant: Strong Mindflood Booster
# Implant: Strong Sooth Sayer Booster
# Implants from group: Booster (9 of 37)
type = "boosterSideEffect"
def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"),

View File

@@ -1,10 +1,6 @@
# Used by:
# Implant: Improved Exile Booster
# Implant: Improved Frentix Booster
# Implant: Standard Exile Booster
# Implant: Standard Frentix Booster
# Implant: Strong Exile Booster
# Implant: Strong Frentix Booster
# Implants named like: Exile Booster (3 of 4)
# Implants named like: Frentix Booster (3 of 4)
type = "boosterSideEffect"
def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"),

View File

@@ -1,10 +1,5 @@
# Used by:
# Implant: Talon Alpha
# Implant: Talon Beta
# Implant: Talon Delta
# Implant: Talon Epsilon
# Implant: Talon Gamma
# Implant: Talon Omega
# Implants named like: Talon (6 of 12)
runTime = "early"
type = "passive"
def handler(fit, implant, context):

View File

@@ -1,6 +1,6 @@
# Used by:
# Implants named like: Inherent Implants Emission Systems ES (6 of 6)
# Modules named like: Egress (8 of 8)
# Implants named like: Inherent Implants 'Squire' Energy Emission Systems ES (6 of 6)
# Modules named like: Egress Port Maximizer (8 of 8)
# Skill: Capacitor Emission Systems
type = "passive"
def handler(fit, container, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Hardwiring Zainou 'Sharpshooter' (6 of 6)
# Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
# Skill: Citadel Torpedoes
type = "passive"
def handler(fit, container, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Hardwiring Zainou 'Sharpshooter' (6 of 6)
# Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
# Skill: Citadel Torpedoes
type = "passive"
def handler(fit, container, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Hardwiring Zainou 'Sharpshooter' (6 of 6)
# Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
# Skill: Citadel Torpedoes
type = "passive"
def handler(fit, container, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Hardwiring Zainou 'Sharpshooter' (6 of 6)
# Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
# Skill: Citadel Torpedoes
type = "passive"
def handler(fit, container, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Core Safeguard (8 of 8)
# Modules named like: Core Defense Capacitor Safeguard (8 of 8)
# Skill: Capital Shield Operation
type = "passive"
def handler(fit, container, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Hybrid Discharge (8 of 8)
# Modules named like: Hybrid Discharge Elutriation (8 of 8)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Hybrid Weapon",

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Energy Discharge (8 of 8)
# Modules named like: Energy Discharge Elutriation (8 of 8)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Weapon",

View File

@@ -1,12 +1,5 @@
# Used by:
# Modules named like: Modified Cloaking Device (5 of 5)
# Module: Caldari Navy Cloaking Device
# Module: Dread Guristas Cloaking Device
# Module: Improved 'Guise' Cloaking Device II
# Module: Improved Cloaking Device II
# Module: Prototype 'Poncho' Cloaking Device I
# Module: Prototype Cloaking Device I
# Module: Syndicate Cloaking Device
# Modules from group: Cloaking Device (12 of 14)
type = "active"
runTime = "early"
#TODO: Rewrite this effect

View File

@@ -1,12 +1,5 @@
# Used by:
# Modules named like: Modified Cloaking Device (5 of 5)
# Module: Caldari Navy Cloaking Device
# Module: Dread Guristas Cloaking Device
# Module: Improved 'Guise' Cloaking Device II
# Module: Improved Cloaking Device II
# Module: Prototype 'Poncho' Cloaking Device I
# Module: Prototype Cloaking Device I
# Module: Syndicate Cloaking Device
# Modules from group: Cloaking Device (12 of 14)
type = "offline"
def handler(fit, module, context):
fit.ship.multiplyItemAttr("scanResolution",

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Systems Stabilizer (8 of 8)
# Modules named like: Targeting Systems Stabilizer (8 of 8)
type = "offline"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda module: module.item.requiresSkill("Cloaking"),

View File

@@ -1,6 +1,5 @@
# Used by:
# Module: 'Smokescreen' Covert Ops Cloaking Device II
# Module: Covert Ops Cloaking Device II
# Modules named like: Covert Ops Cloaking Device II (2 of 2)
type = "active"
runTime = "early"
def handler(fit, ship, context):

View File

@@ -5,6 +5,5 @@ gangBoost = "ewarStrTD"
type = "active", "gang"
def handler(fit, module, context):
for bonus in ("maxRangeBonus", "falloffBonus", "trackingSpeedBonus"):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Tracking Disruptor",
bonus, module.getModifiedItemAttr("commandBonusTD"),
stackingPenalties = True)
fit.modules.filteredItemBoost(lambda mod: lambda mod: mod.item.requiresSkill("Weapon Disruption"),
bonus, module.getModifiedItemAttr("commandBonusTD"))

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Implants Bursts (6 of 6)
# Implants named like: Inherent Implants 'Lancer' Controlled Bursts CB (6 of 6)
# Skill: Controlled Bursts
type = "passive"
def handler(fit, container, context):

View File

@@ -1,7 +1,6 @@
# Used by:
# Module: 'Smokescreen' Covert Ops Cloaking Device II
# Modules named like: Covert Ops Cloaking Device II (2 of 2)
# Module: Covert Cynosural Field Generator I
# Module: Covert Ops Cloaking Device II
type = "passive"
def handler(fit, module, context):
module.increaseItemAttr("cpu", module.getModifiedItemAttr("covertCloakCPUAdd") or 0)

View File

@@ -1,16 +1,5 @@
# Used by:
# Subsystem: Legion Offensive - Assault Optimization
# Subsystem: Legion Offensive - Drone Synthesis Projector
# Subsystem: Legion Offensive - Liquid Crystal Magnifiers
# Subsystem: Loki Offensive - Hardpoint Efficiency Configuration
# Subsystem: Loki Offensive - Projectile Scoping Array
# Subsystem: Loki Offensive - Turret Concurrence Registry
# Subsystem: Proteus Offensive - Dissonic Encoding Platform
# Subsystem: Proteus Offensive - Drone Synthesis Projector
# Subsystem: Proteus Offensive - Hybrid Propulsion Armature
# Subsystem: Tengu Offensive - Accelerated Ejection Bay
# Subsystem: Tengu Offensive - Magnetic Infusion Basin
# Subsystem: Tengu Offensive - Rifling Launcher Pattern
# Subsystems from group: Offensive Systems (12 of 16)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill("Cynosural Field Theory"),

View File

@@ -4,13 +4,9 @@
# Ships from group: Covert Ops (5 of 5)
# Ships from group: Force Recon Ship (5 of 5)
# Ships from group: Stealth Bomber (4 of 4)
# Ships named like: Stratios (2 of 2)
# Subsystems named like: Offensive Covert Reconfiguration (4 of 4)
# Ship: Astero
# Ship: Stratios
# Ship: Stratios Emergency Responder
# Subsystem: Legion Offensive - Covert Reconfiguration
# Subsystem: Loki Offensive - Covert Reconfiguration
# Subsystem: Proteus Offensive - Covert Reconfiguration
# Subsystem: Tengu Offensive - Covert Reconfiguration
type = "passive"
def handler(fit, container, context):
fit.modules.filteredItemForce(lambda mod: mod.item.group.name == "Cloaking Device",

View File

@@ -1,16 +1,5 @@
# Used by:
# Subsystem: Legion Offensive - Assault Optimization
# Subsystem: Legion Offensive - Drone Synthesis Projector
# Subsystem: Legion Offensive - Liquid Crystal Magnifiers
# Subsystem: Loki Offensive - Hardpoint Efficiency Configuration
# Subsystem: Loki Offensive - Projectile Scoping Array
# Subsystem: Loki Offensive - Turret Concurrence Registry
# Subsystem: Proteus Offensive - Dissonic Encoding Platform
# Subsystem: Proteus Offensive - Drone Synthesis Projector
# Subsystem: Proteus Offensive - Hybrid Propulsion Armature
# Subsystem: Tengu Offensive - Accelerated Ejection Bay
# Subsystem: Tengu Offensive - Magnetic Infusion Basin
# Subsystem: Tengu Offensive - Rifling Launcher Pattern
# Subsystems from group: Offensive Systems (12 of 16)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill("Cloaking"),

View File

@@ -1,9 +1,6 @@
# Used by:
# Ships from group: Stealth Bomber (4 of 4)
# Subsystem: Legion Offensive - Covert Reconfiguration
# Subsystem: Loki Offensive - Covert Reconfiguration
# Subsystem: Proteus Offensive - Covert Reconfiguration
# Subsystem: Tengu Offensive - Covert Reconfiguration
# Subsystems named like: Offensive Covert Reconfiguration (4 of 4)
type = "passive"
def handler(fit, container, context):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == "Cloaking Device",

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Hybrid Unit (8 of 8)
# Modules named like: Algid Hybrid Administrations Unit (8 of 8)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Hybrid Weapon",

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Energy Administrations Unit (8 of 8)
# Modules named like: Algid Energy Administrations Unit (8 of 8)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Weapon",

View File

@@ -1,25 +1,5 @@
# Used by:
# Subsystems from group: Electronic Systems (16 of 16)
# Subsystems named like: Defensive Adaptive (5 of 5)
# Subsystem: Legion Defensive - Augmented Plating
# Subsystem: Legion Defensive - Nanobot Injector
# Subsystem: Legion Offensive - Assault Optimization
# Subsystem: Legion Offensive - Drone Synthesis Projector
# Subsystem: Legion Offensive - Liquid Crystal Magnifiers
# Subsystem: Loki Defensive - Amplification Node
# Subsystem: Loki Offensive - Hardpoint Efficiency Configuration
# Subsystem: Loki Offensive - Projectile Scoping Array
# Subsystem: Loki Offensive - Turret Concurrence Registry
# Subsystem: Proteus Defensive - Augmented Plating
# Subsystem: Proteus Defensive - Nanobot Injector
# Subsystem: Proteus Offensive - Dissonic Encoding Platform
# Subsystem: Proteus Offensive - Drone Synthesis Projector
# Subsystem: Proteus Offensive - Hybrid Propulsion Armature
# Subsystem: Tengu Defensive - Amplification Node
# Subsystem: Tengu Defensive - Supplemental Screening
# Subsystem: Tengu Offensive - Accelerated Ejection Bay
# Subsystem: Tengu Offensive - Magnetic Infusion Basin
# Subsystem: Tengu Offensive - Rifling Launcher Pattern
# Items from category: Subsystem (40 of 80)
type = "passive"
def handler(fit, module, context):
fit.ship.increaseItemAttr("cpuOutput", module.getModifiedItemAttr("cpuOutput"))

View File

@@ -1,8 +1,5 @@
# Used by:
# Ship: Arazu
# Ship: Falcon
# Ship: Pilgrim
# Ship: Rapier
# Ships from group: Force Recon Ship (4 of 5)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Cynosural Field",

View File

@@ -1,8 +1,5 @@
# Used by:
# Ship: Arazu
# Ship: Falcon
# Ship: Pilgrim
# Ship: Rapier
# Ships from group: Force Recon Ship (4 of 5)
# Skill: Cynosural Field Theory
type = "passive"
def handler(fit, container, context):

View File

@@ -7,5 +7,6 @@ def handler(fit, module, context):
bonus = "%s%sDamageResonance" % (attrPrefix, damageType)
bonus = "%s%s" % (bonus[0].lower(), bonus[1:])
booster = "%s%sDamageResonance" % (layer, damageType)
penalize = False if layer == 'hull' else True
fit.ship.multiplyItemAttr(bonus, module.getModifiedItemAttr(booster),
stackingPenalties=True, penaltyGroup="preMul")
stackingPenalties=penalize, penaltyGroup="preMul")

View File

@@ -1,6 +1,5 @@
# Used by:
# Modules named like: Data Analyzer (11 of 11)
# Variations of module: Relic Analyzer I (2 of 2)
# Modules from group: Data Miners (13 of 14)
# Module: QA Cross Protocol Analyzer
type = "active"
def handler(fit, module, context):

View File

@@ -1,10 +1,5 @@
# Used by:
# Modules named like: Auxiliary Thrusters (8 of 8)
# Modules named like: Cargohold Optimization (8 of 8)
# Modules named like: Engine I (8 of 8)
# Modules named like: Engine II (8 of 8)
# Modules named like: Low Nozzle (8 of 8)
# Modules named like: Valve (8 of 8)
# Modules from group: Rig Navigation (48 of 64)
type = "passive"
def handler(fit, module, context):
fit.ship.boostItemAttr("armorHP", module.getModifiedItemAttr("drawback"))

View File

@@ -1,8 +1,6 @@
# Used by:
# Modules named like: Anti Pump (32 of 32)
# Modules named like: Remote Augmentor (8 of 8)
# Modules named like: Salvage Tackle (8 of 8)
# Modules named like: Trimark Pump (8 of 8)
# Modules from group: Rig Armor (48 of 64)
# Modules from group: Rig Resource Processing (8 of 10)
type = "passive"
def handler(fit, module, context):
fit.ship.boostItemAttr("maxVelocity", module.getModifiedItemAttr("drawback"),

View File

@@ -1,10 +1,6 @@
# Used by:
# Variations of module: Large Auxiliary Nano Pump I (2 of 2)
# Variations of module: Large Nanobot Accelerator I (2 of 2)
# Variations of module: Medium Auxiliary Nano Pump I (2 of 2)
# Variations of module: Medium Nanobot Accelerator I (2 of 2)
# Variations of module: Small Auxiliary Nano Pump I (2 of 2)
# Variations of module: Small Nanobot Accelerator I (2 of 2)
# Modules named like: Auxiliary Nano Pump (6 of 8)
# Modules named like: Nanobot Accelerator (6 of 8)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems"),

View File

@@ -1,10 +1,7 @@
# Used by:
# Modules from group: Rig Electronic Systems (40 of 48)
# Modules from group: Rig Targeting (16 of 16)
# Modules named like: Diagnostic Subroutines (8 of 8)
# Modules named like: Dispersion (16 of 16)
# Modules named like: Inverted Signal Field Projector (8 of 8)
# Modules named like: Signal Focusing (8 of 8)
# Modules named like: Targeting Systems (8 of 8)
# Modules named like: Signal Focusing Kit (8 of 8)
type = "passive"
def handler(fit, module, context):
fit.ship.boostItemAttr("shieldCapacity", module.getModifiedItemAttr("drawback"))

View File

@@ -1,15 +1,6 @@
# Used by:
# Subsystems from group: Engineering Systems (13 of 16)
# Subsystems from group: Offensive Systems (16 of 16)
# Variations of subsystem: Loki Engineering - Power Core Multiplier (4 of 4)
# Subsystem: Legion Engineering - Augmented Capacitor Reservoir
# Subsystem: Legion Engineering - Capacitor Regeneration Matrix
# Subsystem: Legion Engineering - Power Core Multiplier
# Subsystem: Proteus Engineering - Augmented Capacitor Reservoir
# Subsystem: Proteus Engineering - Capacitor Regeneration Matrix
# Subsystem: Proteus Engineering - Power Core Multiplier
# Subsystem: Tengu Engineering - Augmented Capacitor Reservoir
# Subsystem: Tengu Engineering - Capacitor Regeneration Matrix
# Subsystem: Tengu Engineering - Power Core Multiplier
type = "passive"
def handler(fit, module, context):
fit.ship.increaseItemAttr("droneBandwidth", module.getModifiedItemAttr("droneBandwidth"))

View File

@@ -1,25 +1,5 @@
# Used by:
# Subsystems from group: Defensive Systems (16 of 16)
# Variations of subsystem: Loki Engineering - Power Core Multiplier (4 of 4)
# Variations of subsystem: Loki Offensive - Turret Concurrence Registry (4 of 4)
# Subsystem: Legion Engineering - Augmented Capacitor Reservoir
# Subsystem: Legion Engineering - Capacitor Regeneration Matrix
# Subsystem: Legion Engineering - Power Core Multiplier
# Subsystem: Legion Offensive - Assault Optimization
# Subsystem: Legion Offensive - Drone Synthesis Projector
# Subsystem: Legion Offensive - Liquid Crystal Magnifiers
# Subsystem: Proteus Engineering - Augmented Capacitor Reservoir
# Subsystem: Proteus Engineering - Capacitor Regeneration Matrix
# Subsystem: Proteus Engineering - Power Core Multiplier
# Subsystem: Proteus Offensive - Dissonic Encoding Platform
# Subsystem: Proteus Offensive - Drone Synthesis Projector
# Subsystem: Proteus Offensive - Hybrid Propulsion Armature
# Subsystem: Tengu Engineering - Augmented Capacitor Reservoir
# Subsystem: Tengu Engineering - Capacitor Regeneration Matrix
# Subsystem: Tengu Engineering - Power Core Multiplier
# Subsystem: Tengu Offensive - Accelerated Ejection Bay
# Subsystem: Tengu Offensive - Magnetic Infusion Basin
# Subsystem: Tengu Offensive - Rifling Launcher Pattern
# Items from category: Subsystem (42 of 80)
type = "passive"
def handler(fit, module, context):
fit.ship.increaseItemAttr("droneCapacity", module.getModifiedItemAttr("droneCapacity"))

View File

@@ -1,9 +1,6 @@
# Used by:
# Skill: Amarr Drone Specialization
# Skill: Caldari Drone Specialization
# Skill: Gallente Drone Specialization
# Skills named like: Drone Specialization (4 of 4)
# Skill: Heavy Drone Operation
# Skill: Minmatar Drone Specialization
# Skill: Sentry Drone Interfacing
type = "passive"
def handler(fit, skill, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Durability Enhancer (8 of 8)
# Modules named like: Drone Durability Enhancer (8 of 8)
type = "passive"
def handler(fit, module, context):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"),

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Durability Enhancer (8 of 8)
# Modules named like: Drone Durability Enhancer (8 of 8)
# Skill: Drone Durability
type = "passive"
def handler(fit, container, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Durability Enhancer (8 of 8)
# Modules named like: Drone Durability Enhancer (8 of 8)
type = "passive"
def handler(fit, module, context):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"),

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Drone Scope (8 of 8)
# Modules named like: Drone Scope Chip (8 of 8)
# Skill: Drone Sharpshooting
type = "passive"
def handler(fit, container, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Speed Augmentor (8 of 8)
# Modules named like: Drone Speed Augmentor (8 of 8)
# Skill: Drone Navigation
type = "passive"
def handler(fit, container, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Stasis Augmentor (8 of 8)
# Modules named like: Stasis Drone Augmentor (8 of 8)
type = "passive"
def handler(fit, module, context):
fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == "Stasis Webifying Drone",

View File

@@ -1,8 +1,6 @@
# Used by:
# Ship: Basilisk
# Ship: Etana
# Ships from group: Logistics (3 of 5)
# Ship: Exequror
# Ship: Scimitar
# Ship: Scythe
type = "passive"
def handler(fit, ship, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Thermal Shielding (8 of 8)
# Modules named like: Engine Thermal Shielding (8 of 8)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Propulsion Module",

View File

@@ -1,6 +1,6 @@
# Used by:
# Implants named like: Zainou 'Gypsy' Electronics EE (6 of 6)
# Modules named like: Overclocking (8 of 8)
# Modules named like: Processor Overclocking Unit (8 of 8)
# Implant: Genolution Core Augmentation CA-2
# Skill: CPU Management
type = "passive"

View File

@@ -1,8 +1,5 @@
# Used by:
# Ship: Absolution
# Ship: Astarte
# Ship: Damnation
# Ship: Eos
# Ships from group: Command Ship (4 of 8)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Command Ships").level

View File

@@ -1,8 +1,5 @@
# Used by:
# Ship: Absolution
# Ship: Damnation
# Ship: Nighthawk
# Ship: Vulture
# Ships from group: Command Ship (4 of 8)
type = "passive"
def handler(fit, module, context):
level = fit.character.getSkill("Command Ships").level

View File

@@ -1,8 +1,5 @@
# Used by:
# Ship: Absolution
# Ship: Damnation
# Ship: Nighthawk
# Ship: Vulture
# Ships from group: Command Ship (4 of 8)
type = "passive"
def handler(fit, module, context):
level = fit.character.getSkill("Command Ships").level

View File

@@ -1,8 +1,5 @@
# Used by:
# Ship: Claymore
# Ship: Nighthawk
# Ship: Sleipnir
# Ship: Vulture
# Ships from group: Command Ship (4 of 8)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Command Ships").level

View File

@@ -1,8 +1,5 @@
# Used by:
# Ship: Astarte
# Ship: Claymore
# Ship: Eos
# Ship: Sleipnir
# Ships from group: Command Ship (4 of 8)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Command Ships").level

View File

@@ -1,6 +1,6 @@
# Used by:
# Implants named like: 'Squire' Upgrades EU (6 of 6)
# Modules named like: Powergrid Subroutine (8 of 8)
# Implants named like: Inherent Implants 'Squire' Energy Grid Upgrades EU (6 of 6)
# Modules named like: Powergrid Subroutine Maximizer (8 of 8)
# Skill: Energy Grid Upgrades
type = "passive"
def handler(fit, container, context):

View File

@@ -1,11 +1,8 @@
# Used by:
# Modules named like: Semiconductor Cell (8 of 8)
# Items from market group: Implants & Boosters > Implants > Skill Hardwiring > Engineering Implants > Implant Slot 08 (6 of 6)
# Implants named like: Inherent Implants 'Squire' Energy Management EM (6 of 6)
# Implants named like: Mindflood Booster (4 of 4)
# Modules named like: Semiconductor Memory Cell (8 of 8)
# Implant: Genolution Core Augmentation CA-1
# Implant: Improved Mindflood Booster
# Implant: Standard Mindflood Booster
# Implant: Strong Mindflood Booster
# Implant: Synth Mindflood Booster
# Skill: Capacitor Management
type = "passive"
def handler(fit, container, context):

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Weapons EP (6 of 6)
# Implants named like: Inherent Implants 'Squire' Energy Pulse Weapons EP (6 of 6)
# Skill: Energy Pulse Weapons
type = "passive"
def handler(fit, container, context):

View File

@@ -1,6 +1,6 @@
# Used by:
# Implants named like: Implants 'Squire' Energy Systems Operation (6 of 6)
# Modules named like: Capacitor Circuit (8 of 8)
# Implants named like: Inherent Implants 'Squire' Energy Systems Operation EO (6 of 6)
# Modules named like: Capacitor Control Circuit (8 of 8)
# Implant: Genolution Core Augmentation CA-2
# Skill: Capacitor Systems Operation
type = "passive"

View File

@@ -1,7 +1,5 @@
# Used by:
# Ship: Basilisk
# Ship: Etana
# Ship: Guardian
# Ships from group: Logistics (3 of 5)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Capacitor Transmitter",

View File

@@ -1,10 +1,7 @@
# Used by:
# Modules from group: Heat Sink (25 of 25)
# Modules named like: QA Multiship Module Players (4 of 4)
# Module: QA Damage Module
# Module: QA Multiship Module - 10 Players
# Module: QA Multiship Module - 20 Players
# Module: QA Multiship Module - 40 Players
# Module: QA Multiship Module - 5 Players
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == "Energy Weapon",

View File

@@ -1,5 +1,5 @@
# Used by:
# Modules named like: Energy Accelerator (8 of 8)
# Modules named like: Energy Collision Accelerator (8 of 8)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == "Energy Weapon",

View File

@@ -1,6 +1,6 @@
# Used by:
# Implants named like: 'Squire' EG (6 of 6)
# Modules named like: Ancillary Router (8 of 8)
# Implants named like: Inherent Implants 'Squire' Engineering EG (6 of 6)
# Modules named like: Ancillary Current Router (8 of 8)
# Implant: Genolution Core Augmentation CA-1
# Skill: Power Grid Management
type = "passive"

View File

@@ -1,12 +1,8 @@
# Used by:
# Implants named like: and 'Rogue' EM (6 of 6)
# Modules named like: Low Nozzle Joints (8 of 8)
# Implants named like: Eifyr and Co. 'Rogue' Evasive Maneuvering EM (6 of 6)
# Implants named like: Low grade Nomad (5 of 6)
# Modules named like: Low Friction Nozzle Joints (8 of 8)
# Implant: Genolution Core Augmentation CA-4
# Implant: Low-grade Nomad Alpha
# Implant: Low-grade Nomad Beta
# Implant: Low-grade Nomad Delta
# Implant: Low-grade Nomad Epsilon
# Implant: Low-grade Nomad Gamma
# Skill: Evasive Maneuvering
# Skill: Spaceship Command
type = "passive"

View File

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

View File

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

View File

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

View File

@@ -1,9 +1,5 @@
# Used by:
# Implant: Low-grade Centurion Alpha
# Implant: Low-grade Centurion Beta
# Implant: Low-grade Centurion Delta
# Implant: Low-grade Centurion Epsilon
# Implant: Low-grade Centurion Gamma
# Implants named like: Low grade Centurion (5 of 6)
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: Zainou 'Gypsy' Electronic Warfare (6 of 6)
# Implants named like: Zainou 'Gypsy' Electronic Warfare EW (6 of 6)
# Modules named like: Signal Disruption Amplifier (8 of 8)
# Skill: Electronic Warfare
type = "passive"

View File

@@ -1,5 +1,5 @@
# Used by:
# Implants named like: Zainou 'Gypsy' Electronic Warfare (6 of 6)
# Implants named like: Zainou 'Gypsy' Electronic Warfare EW (6 of 6)
# Modules named like: Signal Disruption Amplifier (8 of 8)
# Skill: Electronic Warfare
type = "passive"

View File

@@ -1,10 +1,6 @@
# Used by:
# Implants named like: Low grade Centurion (5 of 6)
# Modules named like: Particle Dispersion Projector (8 of 8)
# Implant: Low-grade Centurion Alpha
# Implant: Low-grade Centurion Beta
# Implant: Low-grade Centurion Delta
# Implant: Low-grade Centurion Epsilon
# Implant: Low-grade Centurion Gamma
# Skill: Long Distance Jamming
type = "passive"
def handler(fit, container, context):

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