Merge branch 'master' into test-3

Conflicts:
	eos/gamedata.py
	eos/saveddata/booster.py
	eos/saveddata/character.py
	gui/builtinAdditionPanes/commandView.py
	gui/builtinContextMenus/commandFits.py
	gui/builtinMarketBrowser/itemView.py
	gui/builtinMarketBrowser/marketTree.py
	gui/builtinPreferenceViews/pyfaGeneralPreferences.py
	gui/builtinShipBrowser/categoryItem.py
	gui/builtinShipBrowser/fitItem.py
	gui/builtinShipBrowser/navigationPanel.py
	gui/builtinShipBrowser/raceSelector.py
	gui/builtinShipBrowser/shipItem.py
	gui/builtinStatsViews/priceViewFull.py
	gui/builtinViews/fittingView.py
	gui/characterEditor.py
	gui/characterSelection.py
	gui/chromeTabs.py
	gui/crestFittings.py
	gui/itemStats.py
	gui/mainFrame.py
	scripts/itemDiff.py
	service/price.py
This commit is contained in:
blitzmann
2017-11-23 11:19:05 -05:00
462 changed files with 12862 additions and 2421 deletions

View File

@@ -47,7 +47,7 @@ mapper(Item, items_table,
properties={
"group" : relation(Group, backref="items"),
"icon" : relation(Icon),
"_Item__attributes": relation(Attribute, collection_class=attribute_mapped_collection('name')),
"_Item__attributes": relation(Attribute, cascade='all, delete, delete-orphan', collection_class=attribute_mapped_collection('name')),
"effects": relation(Effect, secondary=typeeffects_table, collection_class=attribute_mapped_collection('name')),
"metaGroup" : relation(MetaType,
primaryjoin=metatypes_table.c.typeID == items_table.c.typeID,

View File

@@ -317,7 +317,7 @@ def getVariations(itemids, groupIDs=None, where=None, eager=None):
vars = gamedata_session.query(Item).options(*processEager(eager)).join((groups_table, joinon)).filter(
filter).all()
return vars
return vars
@cachedQuery(1, "attr")

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,9 @@
"""
Migration 26
- Deletes invalid command fit relationships caused by a bug (see #1244)
"""
def upgrade(saveddata_engine):
saveddata_engine.execute("DELETE FROM commandFits WHERE boosterID NOT IN (SELECT ID FROM fits) OR boostedID NOT IN (SELECT ID FROM fits)")

View File

@@ -7,5 +7,5 @@ Overwrites damage profile 0 to reset bad uniform values (bad values set with bug
def upgrade(saveddata_engine):
saveddata_engine.execute('DELETE FROM damagePatterns WHERE name LIKE ? OR ID LIKE ?', ("Uniform", "1"))
saveddata_engine.execute('INSERT INTO damagePatterns VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
(1, "Uniform", 25, 25, 25, 25, None, None, None))
saveddata_engine.execute('INSERT INTO damagePatterns (ID, name, emAmount, thermalAmount, kineticAmount, explosiveAmount, ownerID) VALUES (?, ?, ?, ?, ?, ?, ?)',
(1, "Uniform", 25, 25, 25, 25, None))

View File

@@ -18,35 +18,38 @@
# ===============================================================================
from sqlalchemy import Table, Column, ForeignKey, Integer, Boolean, DateTime
from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.orm import mapper, relation
import datetime
from eos.db import saveddata_meta
from eos.saveddata.booster import Booster
from eos.saveddata.boosterSideEffect import BoosterSideEffect
boosters_table = Table("boosters", saveddata_meta,
Column("ID", Integer, primary_key=True),
Column("itemID", Integer),
Column("fitID", Integer, ForeignKey("fits.ID"), nullable=False),
Column("active", Boolean),
Column("created", DateTime, nullable=True, default=datetime.datetime.now),
Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now),
Column("ID", Integer, primary_key=True),
Column("itemID", Integer),
Column("fitID", Integer, ForeignKey("fits.ID"), nullable=False),
Column("active", Boolean),
Column("created", DateTime, nullable=True, default=datetime.datetime.now),
Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now),
)
# Legacy booster side effect code, should disable but a mapper relies on it.
activeSideEffects_table = Table("boostersActiveSideEffects", saveddata_meta,
Column("boosterID", ForeignKey("boosters.ID"), primary_key=True),
Column("effectID", Integer, primary_key=True))
booster_side_effect_table = Table("boosterSideEffects", saveddata_meta,
Column("boosterID", Integer, ForeignKey("boosters.ID"), primary_key=True, index=True),
Column("effectID", Integer, nullable=False, primary_key=True),
Column("active", Boolean, default=False)
)
class ActiveSideEffectsDummy(object):
def __init__(self, effectID):
self.effectID = effectID
mapper(ActiveSideEffectsDummy, activeSideEffects_table)
mapper(Booster, boosters_table,
properties={"_Booster__activeSideEffectDummies": relation(ActiveSideEffectsDummy)})
properties={
"_Booster__sideEffects": relation(
BoosterSideEffect,
backref="booster",
cascade='all, delete, delete-orphan'),
}
)
Booster._Booster__activeSideEffectIDs = association_proxy("_Booster__activeSideEffectDummies", "effectID")
mapper(BoosterSideEffect, booster_side_effect_table)

View File

@@ -25,8 +25,10 @@ from eos.saveddata.price import Price
prices_table = Table("prices", saveddata_meta,
Column("typeID", Integer, primary_key=True),
Column("price", Float),
Column("price", Float, default=0.0),
Column("time", Integer, nullable=False),
Column("failed", Integer))
mapper(Price, prices_table)
mapper(Price, prices_table, properties={
"_Price__price": prices_table.c.price,
})

View File

@@ -0,0 +1,9 @@
# agilityBonus
#
# Used by:
# Subsystems named like: Propulsion Interdiction Nullifier (4 of 4)
type = "passive"
def handler(fit, src, context):
fit.ship.increaseItemAttr("agility", src.getModifiedItemAttr("agilityBonusAdd"))

View File

@@ -1,9 +1,7 @@
# ammoInfluenceCapNeed
#
# Used by:
# Items from category: Charge (466 of 913)
# Charges from group: Frequency Crystal (185 of 185)
# Charges from group: Hybrid Charge (209 of 209)
# Items from category: Charge (478 of 924)
type = "passive"

View File

@@ -1,7 +1,7 @@
# ammoInfluenceRange
#
# Used by:
# Items from category: Charge (571 of 913)
# Items from category: Charge (572 of 924)
type = "passive"

View File

@@ -3,7 +3,6 @@
# Used by:
# Charges from group: Festival Charges (22 of 22)
# Charges from group: Interdiction Probe (2 of 2)
# Charges from group: Survey Probe (3 of 3)
type = "passive"

View File

@@ -7,7 +7,7 @@
# Charges from group: Advanced Blaster Charge (8 of 8)
# Charges from group: Advanced Pulse Laser Crystal (8 of 8)
# Charges from group: Advanced Railgun Charge (8 of 8)
# Charges from group: Projectile Ammo (129 of 129)
# Charges from group: Projectile Ammo (128 of 128)
type = "passive"

View File

@@ -1,9 +1,9 @@
# armorHPBonusAddPassive
#
# Used by:
# Subsystems from group: Defensive Systems (16 of 16)
# Subsystems from group: Defensive Systems (9 of 12)
type = "passive"
def handler(fit, module, context):
fit.ship.increaseItemAttr("armorHP", module.getModifiedItemAttr("armorHPBonusAdd"))
fit.ship.increaseItemAttr("armorHP", module.getModifiedItemAttr("armorHPBonusAdd") or 0)

View File

@@ -1,10 +1,15 @@
# boosterArmorHpPenalty
#
# Used by:
# Implants from group: Booster (12 of 48)
# Implants from group: Booster (12 of 52)
type = "boosterSideEffect"
activeByDefault = False
# User-friendly name for the side effect
displayName = "Armor Capacity"
# Attribute that this effect targets
attr = "boosterArmorHPPenalty"
def handler(fit, booster, context):
fit.ship.boostItemAttr("armorHP", booster.getModifiedItemAttr("boosterArmorHPPenalty"))
fit.ship.boostItemAttr("armorHP", booster.getModifiedItemAttr(attr))

View File

@@ -5,9 +5,14 @@
# Implants named like: Mindflood Booster (3 of 4)
# Implants named like: Sooth Sayer Booster (3 of 4)
type = "boosterSideEffect"
activeByDefault = False
# User-friendly name for the side effect
displayName = "Armor Repair Amount"
# Attribute that this effect targets
attr = "boosterArmorRepairAmountPenalty"
def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Armor Repair Unit",
"armorDamageAmount", booster.getModifiedItemAttr("boosterArmorRepairAmountPenalty"))
"armorDamageAmount", booster.getModifiedItemAttr(attr))

View File

@@ -4,8 +4,13 @@
# Implants named like: Blue Pill Booster (3 of 5)
# Implants named like: Exile Booster (3 of 4)
type = "boosterSideEffect"
activeByDefault = False
# User-friendly name for the side effect
displayName = "Cap Capacity"
# Attribute that this effect targets
attr = "boosterCapacitorCapacityPenalty"
def handler(fit, booster, context):
fit.ship.boostItemAttr("capacitorCapacity", booster.getModifiedItemAttr("boosterCapacitorCapacityPenalty"))
fit.ship.boostItemAttr("capacitorCapacity", booster.getModifiedItemAttr(attr))

View File

@@ -1,10 +1,15 @@
# boosterMaxVelocityPenalty
#
# Used by:
# Implants from group: Booster (12 of 48)
# Implants from group: Booster (12 of 52)
type = "boosterSideEffect"
activeByDefault = False
# User-friendly name for the side effect
displayName = "Velocity"
# Attribute that this effect targets
attr = "boosterMaxVelocityPenalty"
def handler(fit, booster, context):
fit.ship.boostItemAttr("maxVelocity", booster.getModifiedItemAttr("boosterMaxVelocityPenalty"))
fit.ship.boostItemAttr("maxVelocity", booster.getModifiedItemAttr(attr))

View File

@@ -4,9 +4,14 @@
# Implants named like: Exile Booster (3 of 4)
# Implants named like: Mindflood Booster (3 of 4)
type = "boosterSideEffect"
activeByDefault = False
# User-friendly name for the side effect
displayName = "Missile Explosion Radius"
# Attribute that this effect targets
attr = "boosterMissileAOECloudPenalty"
def handler(fit, booster, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"aoeCloudSize", booster.getModifiedItemAttr("boosterMissileAOECloudPenalty"))
"aoeCloudSize", booster.getModifiedItemAttr(attr))

View File

@@ -3,9 +3,14 @@
# Used by:
# Implants named like: Blue Pill Booster (3 of 5)
type = "boosterSideEffect"
activeByDefault = False
# User-friendly name for the side effect
displayName = "Missile Explosion Velocity"
# Attribute that this effect targets
attr = "boosterAOEVelocityPenalty"
def handler(fit, booster, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"aoeVelocity", booster.getModifiedItemAttr("boosterAOEVelocityPenalty"))
"aoeVelocity", booster.getModifiedItemAttr(attr))

View File

@@ -4,9 +4,14 @@
# Implants named like: Crash Booster (3 of 4)
# Implants named like: X Instinct Booster (3 of 4)
type = "boosterSideEffect"
activeByDefault = False
# User-friendly name for the side effect
displayName = "Missile Velocity"
# Attribute that this effect targets
attr = "boosterMissileVelocityPenalty"
def handler(fit, booster, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"maxVelocity", "boosterMissileVelocityPenalty")
"maxVelocity", booster.getModifiedItemAttr(attr))

View File

@@ -0,0 +1,14 @@
type = "boosterSideEffect"
# User-friendly name for the side effect
displayName = "Shield Boost"
# Attribute that this effect targets
attr = "boosterShieldBoostAmountPenalty"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation"), "shieldBonus",
src.getModifiedItemAttr("boosterShieldBoostAmountPenalty"))
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Operation"), "shieldBonus",
src.getModifiedItemAttr("boosterShieldBoostAmountPenalty"))

View File

@@ -1,10 +1,15 @@
# boosterShieldCapacityPenalty
#
# Used by:
# Implants from group: Booster (12 of 48)
# Implants from group: Booster (12 of 52)
type = "boosterSideEffect"
activeByDefault = False
# User-friendly name for the side effect
displayName = "Shield Capacity"
# Attribute that this effect targets
attr = "boosterShieldCapacityPenalty"
def handler(fit, booster, context):
fit.ship.boostItemAttr("shieldCapacity", booster.getModifiedItemAttr("boosterShieldCapacityPenalty"))
fit.ship.boostItemAttr("shieldCapacity", booster.getModifiedItemAttr(attr))

View File

@@ -4,9 +4,14 @@
# Implants named like: Drop Booster (3 of 4)
# Implants named like: X Instinct Booster (3 of 4)
type = "boosterSideEffect"
activeByDefault = False
# User-friendly name for the side effect
displayName = "Turret Falloff"
# Attribute that this effect targets
attr = "boosterTurretFalloffPenalty"
def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"),
"falloff", booster.getModifiedItemAttr("boosterTurretFalloffPenalty"))
"falloff", booster.getModifiedItemAttr(attr))

View File

@@ -5,9 +5,14 @@
# Implants named like: Mindflood Booster (3 of 4)
# Implants named like: Sooth Sayer Booster (3 of 4)
type = "boosterSideEffect"
activeByDefault = False
# User-friendly name for the side effect
displayName = "Turret Optimal Range"
# Attribute that this effect targets
attr = "boosterTurretOptimalRange"
def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"),
"maxRange", booster.getModifiedItemAttr("boosterTurretOptimalRange"))
"maxRange", booster.getModifiedItemAttr(attr))

View File

@@ -4,9 +4,14 @@
# Implants named like: Exile Booster (3 of 4)
# Implants named like: Frentix Booster (3 of 4)
type = "boosterSideEffect"
activeByDefault = False
# User-friendly name for the side effect
displayName = "Turret Tracking"
# Attribute that this effect targets
attr = "boosterTurretTrackingPenalty"
def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"),
"trackingSpeed", booster.getModifiedItemAttr("boosterTurretTrackingPenalty"))
"trackingSpeed", booster.getModifiedItemAttr(attr))

View File

@@ -1,11 +1,9 @@
# capacitorCapacityAddPassive
#
# Used by:
# Subsystems from group: Engineering Systems (16 of 16)
# Subsystem: Tengu Offensive - Magnetic Infusion Basin
# Items from category: Subsystem (20 of 48)
type = "passive"
def handler(fit, module, context):
fit.ship.increaseItemAttr("capacitorCapacity",
module.getModifiedItemAttr("capacitorCapacity"))
fit.ship.increaseItemAttr("capacitorCapacity", module.getModifiedItemAttr("capacitorCapacity") or 0)

View File

@@ -1,9 +1,10 @@
# capacityAddPassive
#
# Used by:
# Subsystems from group: Defensive Systems (16 of 16)
# Subsystems named like: Defensive Covert Reconfiguration (4 of 4)
# Subsystem: Legion Defensive - Nanobot Injector
type = "passive"
def handler(fit, subsystem, context):
fit.ship.increaseItemAttr("capacity", subsystem.getModifiedItemAttr("capacity") or 0)
fit.ship.increaseItemAttr("capacity", subsystem.getModifiedItemAttr("cargoCapacityAdd") or 0)

View File

@@ -8,6 +8,5 @@ type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Leadership"),
"maxRange",
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Leadership"), "maxRange",
src.getModifiedItemAttr("areaOfEffectBonus") * src.level)

View File

@@ -4,10 +4,10 @@
# Ships from group: Carrier (4 of 4)
# Ships from group: Combat Battlecruiser (13 of 13)
# Ships from group: Command Ship (8 of 8)
# Ships from group: Force Auxiliary (5 of 5)
# Ships from group: Force Auxiliary (6 of 6)
# Ships from group: Supercarrier (6 of 6)
# Ships from group: Titan (6 of 6)
# Subsystems named like: Defensive Warfare Processor (4 of 4)
# Ships from group: Titan (7 of 7)
# Subsystems named like: Offensive Support Processor (4 of 4)
# Ship: Orca
# Ship: Rorqual
type = "passive"

View File

@@ -2,6 +2,7 @@
#
# Used by:
# Ship: Enforcer
# Ship: Marshal
# Ship: Pacifier
type = "passive"

View File

@@ -1,7 +1,7 @@
# covertCynoCpuPenalty
#
# Used by:
# Subsystems from group: Offensive Systems (12 of 16)
# Subsystems from group: Defensive Systems (8 of 12)
type = "passive"

View File

@@ -1,14 +1,14 @@
# covertOpsAndReconOpsCloakModuleDelayBonus
#
# Used by:
# Ships from group: Black Ops (4 of 4)
# Ships from group: Black Ops (5 of 5)
# Ships from group: Blockade Runner (4 of 4)
# Ships from group: Covert Ops (7 of 7)
# Ships from group: Expedition Frigate (2 of 2)
# Ships from group: Force Recon Ship (7 of 7)
# Ships from group: Stealth Bomber (4 of 4)
# Ships from group: Force Recon Ship (7 of 8)
# Ships from group: Stealth Bomber (4 of 5)
# Ships named like: Stratios (2 of 2)
# Subsystems named like: Offensive Covert Reconfiguration (4 of 4)
# Subsystems named like: Defensive Covert Reconfiguration (4 of 4)
# Ship: Astero
# Ship: Rabisu
type = "passive"

View File

@@ -1,7 +1,7 @@
# covertOpsCloakCpuPenalty
#
# Used by:
# Subsystems from group: Offensive Systems (12 of 16)
# Subsystems from group: Defensive Systems (8 of 12)
type = "passive"

View File

@@ -1,8 +1,8 @@
# covertOpsCpuBonus1
#
# Used by:
# Ships from group: Stealth Bomber (4 of 4)
# Subsystems named like: Offensive Covert Reconfiguration (4 of 4)
# Ships from group: Stealth Bomber (4 of 5)
# Subsystems named like: Defensive Covert Reconfiguration (4 of 4)
type = "passive"

View File

@@ -1,7 +1,7 @@
# covertOpsStealthBomberSiegeMissileLauncerPowerNeedBonus
#
# Used by:
# Ships from group: Stealth Bomber (4 of 4)
# Ships from group: Stealth Bomber (4 of 5)
type = "passive"

View File

@@ -1,8 +1,8 @@
# covertOpsStealthBomberTargettingDelayBonus
#
# Used by:
# Ships from group: Black Ops (4 of 4)
# Ships from group: Stealth Bomber (4 of 4)
# Ships from group: Black Ops (5 of 5)
# Ships from group: Stealth Bomber (4 of 5)
# Ship: Caedes
# Ship: Chremoas
# Ship: Endurance

View File

@@ -1,7 +1,7 @@
# cpuOutputAddCpuOutputPassive
#
# Used by:
# Items from category: Subsystem (40 of 80)
# Subsystems from group: Offensive Systems (8 of 12)
type = "passive"

View File

@@ -1,7 +1,7 @@
# cynosuralDurationBonus
#
# Used by:
# Ships from group: Force Recon Ship (6 of 7)
# Ships from group: Force Recon Ship (6 of 8)
type = "passive"

View File

@@ -1,7 +1,7 @@
# cynosuralTheoryConsumptionBonus
#
# Used by:
# Ships from group: Force Recon Ship (6 of 7)
# Ships from group: Force Recon Ship (6 of 8)
# Skill: Cynosural Field Theory
type = "passive"

View File

@@ -1,7 +1,7 @@
# doHacking
#
# Used by:
# Modules from group: Data Miners (15 of 16)
# Modules from group: Data Miners (17 of 18)
type = "active"

View File

@@ -0,0 +1,18 @@
# doomsdayAOEECM
#
# Used by:
# Module: ECM Jammer Burst Projector
from eos.modifiedAttributeDict import ModifiedAttributeDict
type = "projected", "active"
def handler(fit, module, context, **kwargs):
if "projected" in context:
# jam formula: 1 - (1- (jammer str/ship str))^(# of jam mods with same str))
strModifier = 1 - module.getModifiedItemAttr("scan{0}StrengthBonus".format(fit.scanType)) / fit.scanStrength
if 'effect' in kwargs:
strModifier *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
fit.ecmProjectedStr *= strModifier

View File

@@ -1,8 +1,7 @@
# droneBandwidthAddPassive
#
# Used by:
# Subsystems from group: Engineering Systems (13 of 16)
# Subsystems from group: Offensive Systems (16 of 16)
# Subsystems from group: Offensive Systems (12 of 12)
type = "passive"

View File

@@ -1,7 +1,7 @@
# droneCapacityAdddroneCapacityPassive
#
# Used by:
# Items from category: Subsystem (42 of 80)
# Subsystems from group: Offensive Systems (12 of 12)
type = "passive"

View File

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

View File

@@ -1,7 +1,7 @@
# eliteBonusBlackOpsCloakVelocity2
#
# Used by:
# Ships from group: Black Ops (4 of 4)
# Ships from group: Black Ops (5 of 5)
type = "passive"

View File

@@ -0,0 +1,10 @@
# eliteBonusBlackOpsScramblerRange4
#
# Used by:
# Ship: Marshal
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Warp Scrambler", "maxRange",
src.getModifiedItemAttr("eliteBonusBlackOps4"), stackingPenalties=True, skill="Black Ops")

View File

@@ -0,0 +1,9 @@
# eliteBonusBlackOpsWarpVelocity1
#
# Used by:
# Ship: Marshal
type = "passive"
def handler(fit, src, context):
fit.ship.boostItemAttr("warpSpeedMultiplier", src.getModifiedItemAttr("eliteBonusBlackOps1"), stackingPenalties=True, skill="Black Ops")

View File

@@ -0,0 +1,10 @@
# eliteBonusBlackOpsWebRange3
#
# Used by:
# Ship: Marshal
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Stasis Web", "maxRange",
src.getModifiedItemAttr("eliteBonusBlackOps3"), stackingPenalties=True, skill="Black Ops")

View File

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

View File

@@ -1,7 +1,7 @@
# entosisDurationMultiply
#
# Used by:
# Items from market group: Ships > Capital Ships (28 of 37)
# Items from market group: Ships > Capital Ships (31 of 40)
type = "passive"

View File

@@ -1,8 +1,7 @@
# hardPointModifierEffect
#
# Used by:
# Subsystems from group: Engineering Systems (16 of 16)
# Subsystems from group: Offensive Systems (16 of 16)
# Subsystems from group: Offensive Systems (12 of 12)
type = "passive"

View File

@@ -1,7 +1,4 @@
# massAddPassive
#
# Used by:
# Items from category: Subsystem (80 of 80)
# Not used by any item
type = "passive"

View File

@@ -1,7 +1,7 @@
# maxTargetRangeAddPassive
#
# Used by:
# Subsystems from group: Electronic Systems (16 of 16)
# Subsystems named like: Propulsion Interdiction Nullifier (4 of 4)
type = "passive"

View File

@@ -1,7 +1,4 @@
# maxVelocityAddPassive
#
# Used by:
# Subsystems from group: Propulsion Systems (16 of 16)
# Not used by any item
type = "passive"

View File

@@ -0,0 +1,13 @@
# mediumRemoteRepFittingAdjustment
#
# Used by:
# Variations of module: Medium Remote Armor Repairer I (12 of 12)
# Variations of module: Medium Remote Shield Booster I (11 of 11)
# Module: Medium Ancillary Remote Armor Repairer
# Module: Medium Ancillary Remote Shield Booster
type = "passive"
def handler(fit, module, context):
module.multiplyItemAttr("power", module.getModifiedItemAttr("mediumRemoteRepFittingMultiplier"))
module.multiplyItemAttr("cpu", module.getModifiedItemAttr("mediumRemoteRepFittingMultiplier"))

View File

@@ -3,7 +3,7 @@
# Used by:
# Ships from group: Covert Ops (7 of 7)
# Ships named like: Stratios (2 of 2)
# Subsystems named like: Electronics Emergent Locus Analyzer (4 of 4)
# Subsystems named like: Defensive Covert Reconfiguration (4 of 4)
# Ship: Astero
# Ship: Heron
# Ship: Imicus

View File

@@ -1,8 +1,8 @@
# miningInfoMultiplier
#
# Used by:
# Charges from group: Mining Crystal (30 of 30)
# Charges named like: Mining Crystal (32 of 32)
# Charges from group: Mining Crystal (40 of 40)
# Charges named like: Mining Crystal (42 of 42)
type = "passive"

View File

@@ -1,7 +1,7 @@
# missileDMGBonus
#
# Used by:
# Modules from group: Ballistic Control system (17 of 17)
# Modules from group: Ballistic Control system (18 of 18)
type = "passive"

View File

@@ -1,7 +1,7 @@
# missileLauncherSpeedMultiplier
#
# Used by:
# Modules from group: Ballistic Control system (17 of 17)
# Modules from group: Ballistic Control system (18 of 18)
type = "passive"

View File

@@ -1,7 +1,7 @@
# missileSkillFoFAoeCloudSizeBonus
#
# Used by:
# Implants named like: Zainou 'Snapshot' FOF Explosion Radius FR (6 of 6)
# Implants named like: Zainou 'Snapshot' Auto Targeting Explosion Radius FR (6 of 6)
type = "passive"

View File

@@ -1,10 +1,12 @@
# missileSkillWarheadUpgradesEmDamageBonus
#
# Used by:
# Implants named like: Agency Damage Booster (3 of 3)
# Skill: Warhead Upgrades
type = "passive"
def handler(fit, skill, context):
def handler(fit, src, context):
mod = src.level if "skill" in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"emDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level)
"emDamage", src.getModifiedItemAttr("damageMultiplierBonus") * mod)

View File

@@ -1,10 +1,12 @@
# missileSkillWarheadUpgradesExplosiveDamageBonus
#
# Used by:
# Implants named like: Agency Damage Booster (3 of 3)
# Skill: Warhead Upgrades
type = "passive"
def handler(fit, skill, context):
def handler(fit, src, context):
mod = src.level if "skill" in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"explosiveDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level)
"explosiveDamage", src.getModifiedItemAttr("damageMultiplierBonus") * mod)

View File

@@ -1,10 +1,12 @@
# missileSkillWarheadUpgradesKineticDamageBonus
#
# Used by:
# Implants named like: Agency Damage Booster (3 of 3)
# Skill: Warhead Upgrades
type = "passive"
def handler(fit, skill, context):
def handler(fit, src, context):
mod = src.level if "skill" in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"kineticDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level)
"kineticDamage", src.getModifiedItemAttr("damageMultiplierBonus") * mod)

View File

@@ -1,10 +1,12 @@
# missileSkillWarheadUpgradesThermalDamageBonus
#
# Used by:
# Implants named like: Agency Damage Booster (3 of 3)
# Skill: Warhead Upgrades
type = "passive"
def handler(fit, skill, context):
def handler(fit, src, context):
mod = src.level if "skill" in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"thermalDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level)
"thermalDamage", src.getModifiedItemAttr("damageMultiplierBonus") * mod)

View File

@@ -1,7 +1,4 @@
# modifyArmorResonancePassivePreAssignment
#
# Used by:
# Subsystems from group: Defensive Systems (16 of 16)
# Not used by any item
type = "passive"

View File

@@ -1,7 +1,4 @@
# modifyShieldResonancePassivePreAssignment
#
# Used by:
# Subsystems from group: Defensive Systems (16 of 16)
# Not used by any item
type = "passive"

View File

@@ -1,7 +1,4 @@
# modifyShipAgilityPassivePreAssignment
#
# Used by:
# Subsystems from group: Propulsion Systems (16 of 16)
# Not used by any item
runTime = "early"
type = "passive"

View File

@@ -2,6 +2,7 @@
#
# Used by:
# Modules from group: Rig Anchor (4 of 4)
# Implants named like: Agency Speed Booster (3 of 3)
# Implants named like: grade Snake (16 of 18)
# Modules named like: Auxiliary Thrusters (8 of 8)
# Implant: Quafe Zero

View File

@@ -1,4 +1,4 @@
# remoteArmorRepairEntity
# npcEntityRemoteArmorRepairer
#
# Used by:
# Drones named like: Armor Maintenance Bot (6 of 6)

View File

@@ -1,4 +1,4 @@
# remoteHullRepairEntity
# npcEntityRemoteHullRepairer
#
# Used by:
# Drones named like: Hull Maintenance Bot (6 of 6)

View File

@@ -1,4 +1,4 @@
# remoteShieldTransferEntity
# npcEntityRemoteShieldBooster
#
# Used by:
# Drones named like: Shield Maintenance Bot (6 of 6)

View File

@@ -2,7 +2,7 @@
#
# Used by:
# Modules from group: Missile Launcher Torpedo (22 of 22)
# Items from market group: Ship Equipment > Turrets & Bays (428 of 859)
# Items from market group: Ship Equipment > Turrets & Bays (429 of 861)
# Module: Interdiction Sphere Launcher I
type = "overheat"

View File

@@ -1,7 +1,7 @@
# overloadSelfDamageBonus
#
# Used by:
# Modules from group: Energy Weapon (101 of 209)
# Modules from group: Energy Weapon (101 of 213)
# Modules from group: Hybrid Weapon (105 of 221)
# Modules from group: Projectile Weapon (99 of 165)
type = "overheat"

View File

@@ -1,7 +1,7 @@
# powerOutputAddPassive
#
# Used by:
# Items from category: Subsystem (40 of 80)
# Subsystems from group: Offensive Systems (8 of 12)
type = "passive"

View File

@@ -7,4 +7,4 @@ type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Astrometrics"),
"cpu", ship.getModifiedItemAttr("roleBonusTacticalDestroyer1"))
"cpu", ship.getModifiedItemAttr("roleBonusT3ProbeCPU"))

View File

@@ -0,0 +1,10 @@
# probeLauncherCPUPercentRoleBonusT3
#
# Used by:
# Ships from group: Strategic Cruiser (4 of 4)
# Ships from group: Tactical Destroyer (4 of 4)
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Astrometrics"), "cpu", src.getModifiedItemAttr("roleBonusT3ProbeCPU"))

View File

@@ -7,7 +7,8 @@ type = "passive"
def handler(fit, container, context):
groups = ("Stasis Web", "Stasis Grappler", "Warp Scrambler", "Warp Disrupt Field Generator")
level = container.level if "skill" in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Propulsion Jamming"),
"capacitorNeed", container.getModifiedItemAttr("capNeedBonus") * level)

View File

@@ -1,7 +1,4 @@
# rechargeRateAddPassive
#
# Used by:
# Subsystems from group: Engineering Systems (16 of 16)
# Not used by any item
type = "passive"

View File

@@ -1,7 +1,7 @@
# reconShipCloakCpuBonus1
#
# Used by:
# Ships from group: Force Recon Ship (6 of 7)
# Ships from group: Force Recon Ship (6 of 8)
type = "passive"
runTime = "early"

View File

@@ -1,7 +1,7 @@
# salvaging
#
# Used by:
# Modules from group: Salvager (2 of 2)
# Modules from group: Salvager (3 of 3)
type = "active"

View File

@@ -1,7 +1,4 @@
# scanResolutionAddPassive
#
# Used by:
# Subsystems from group: Electronic Systems (16 of 16)
# Not used by any item
type = "passive"

View File

@@ -1,7 +1,4 @@
# scanStrengthAddPassive
#
# Used by:
# Subsystems from group: Electronic Systems (16 of 16)
# Not used by any item
type = "passive"

View File

@@ -1,6 +1,7 @@
# shieldBoostAmplifierPassive
#
# Used by:
# Implants named like: Agency Tank Booster (3 of 3)
# Implants named like: grade Crystal (15 of 18)
type = "passive"

View File

@@ -1,7 +1,7 @@
# shieldCapacityAddPassive
#
# Used by:
# Subsystems from group: Defensive Systems (16 of 16)
# Subsystems from group: Defensive Systems (8 of 12)
type = "passive"

View File

@@ -1,7 +1,4 @@
# shieldRechargeRateAddPassive
#
# Used by:
# Subsystems from group: Defensive Systems (16 of 16)
# Not used by any item
type = "passive"

View File

@@ -1,7 +1,7 @@
# shipAdvancedSpaceshipCommandAgilityBonus
#
# Used by:
# Items from market group: Ships > Capital Ships (37 of 37)
# Items from market group: Ships > Capital Ships (40 of 40)
type = "passive"

View File

@@ -1,6 +1,7 @@
# shipBonusDreadnoughtC2ShieldResists
#
# Used by:
# Ship: Caiman
# Ship: Phoenix
type = "passive"

View File

@@ -0,0 +1,20 @@
# shipBonusDreadnoughtG1KinThermDamageBonus
#
# Used by:
# Ship: Caiman
type = "passive"
def handler(fit, src, context):
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "kineticDamage",
src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "thermalDamage",
src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "kineticDamage",
src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "thermalDamage",
src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "thermalDamage",
src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought")
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "kineticDamage",
src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought")

View File

@@ -1,11 +1,15 @@
# shipBonusForceAuxiliaryC1RemoteBoostAndCapAmount
#
# Used by:
# Ship: Loggerhead
# Ship: Minokawa
type = "passive"
def handler(fit, src, context):
if src.getModifiedItemAttr("shipBonusForceAuxiliaryC1") is None:
return # See GH Issue 1321
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capacitor Emission Systems") or
mod.item.requiresSkill("Capital Capacitor Emission Systems"),
"powerTransferAmount", src.getModifiedItemAttr("shipBonusForceAuxiliaryC1"),

View File

@@ -1,6 +1,7 @@
# shipBonusForceAuxiliaryC2ShieldResists
#
# Used by:
# Ship: Loggerhead
# Ship: Minokawa
type = "passive"

View File

@@ -0,0 +1,10 @@
# shipBonusForceAuxiliaryG1RemoteShieldBoostAmount
#
# Used by:
# Ship: Loggerhead
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Emission Systems"), "shieldBonus",
src.getModifiedItemAttr("shipBonusForceAuxiliaryG1"), skill="Gallente Carrier")

View File

@@ -1,3 +1,7 @@
# shipBonusForceAuxiliaryM2LocalRepairAmount
#
# Used by:
# Ship: Dagon
type = "passive"

View File

@@ -1,6 +1,7 @@
# shipBonusLargeEnergyTurretMaxRangeAB
#
# Used by:
# Ship: Marshal
# Ship: Paladin
type = "passive"

View File

@@ -2,6 +2,7 @@
#
# Used by:
# Ship: Abaddon
# Ship: Marshal
type = "passive"

View File

@@ -0,0 +1,12 @@
# shipBonusLargeMissileFlightTimeCB1
#
# Used by:
# Ship: Marshal
type = "passive"
def handler(fit, src, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Torpedoes"), "explosionDelay",
src.getModifiedItemAttr("shipBonusCB"), skill="Caldari Battleship")
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Cruise Missiles"), "explosionDelay",
src.getModifiedItemAttr("shipBonusCB"), skill="Caldari Battleship")

View File

@@ -0,0 +1,14 @@
# shipBonusLauncherRoF2CB
#
# Used by:
# Ship: Marshal
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Missile Launcher Cruise", "speed",
src.getModifiedItemAttr("shipBonus2CB"), skill="Caldari Battleship")
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Missile Launcher Torpedo", "speed",
src.getModifiedItemAttr("shipBonus2CB"), skill="Caldari Battleship")
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Missile Launcher Rapid Heavy", "speed",
src.getModifiedItemAttr("shipBonus2CB"), skill="Caldari Battleship")

View File

@@ -1,6 +1,7 @@
# shipBonusPTFalloffMB1
#
# Used by:
# Ship: Marshal
# Ship: Vargur
type = "passive"

View File

@@ -1,7 +1,7 @@
# shipBonusRole1CommandBurstCPUBonus
#
# Used by:
# Ships from group: Force Auxiliary (5 of 5)
# Ships from group: Force Auxiliary (6 of 6)
type = "passive"

View File

@@ -1,7 +1,7 @@
# shipBonusRole1NumWarfareLinks
#
# Used by:
# Ships from group: Titan (6 of 6)
# Ships from group: Titan (7 of 7)
type = "passive"

View File

@@ -1,7 +1,7 @@
# shipBonusRole2ArmorPlates&ShieldExtendersBonus
#
# Used by:
# Ships from group: Titan (6 of 6)
# Ships from group: Titan (7 of 7)
type = "passive"

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