Merge pull request #1245 from pyfa-org/release/1.30.0

Release/1.30.0
This commit is contained in:
Ryan Holmes
2017-07-11 19:45:44 -04:00
committed by GitHub
365 changed files with 12799 additions and 2766 deletions

View File

@@ -19,9 +19,9 @@ debug = False
saveInRoot = False saveInRoot = False
# Version data # Version data
version = "1.29.4" version = "1.30.0"
tag = "Stable" tag = "Stable"
expansionName = "YC119.5" expansionName = "YC119.7"
expansionVersion = "1.0" expansionVersion = "1.0"
evemonMinVersion = "4081" evemonMinVersion = "4081"

View File

@@ -47,7 +47,7 @@ mapper(Item, items_table,
properties={ properties={
"group" : relation(Group, backref="items"), "group" : relation(Group, backref="items"),
"icon" : relation(Icon), "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')), "effects": relation(Effect, secondary=typeeffects_table, collection_class=attribute_mapped_collection('name')),
"metaGroup" : relation(MetaType, "metaGroup" : relation(MetaType,
primaryjoin=metatypes_table.c.typeID == items_table.c.typeID, 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( vars = gamedata_session.query(Item).options(*processEager(eager)).join((groups_table, joinon)).filter(
filter).all() filter).all()
return vars return vars
@cachedQuery(1, "attr") @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): def upgrade(saveddata_engine):
saveddata_engine.execute('DELETE FROM damagePatterns WHERE name LIKE ? OR ID LIKE ?', ("Uniform", "1")) saveddata_engine.execute('DELETE FROM damagePatterns WHERE name LIKE ? OR ID LIKE ?', ("Uniform", "1"))
saveddata_engine.execute('INSERT INTO damagePatterns VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)', saveddata_engine.execute('INSERT INTO damagePatterns (ID, name, emAmount, thermalAmount, kineticAmount, explosiveAmount, ownerID) VALUES (?, ?, ?, ?, ?, ?, ?)',
(1, "Uniform", 25, 25, 25, 25, None, None, None)) (1, "Uniform", 25, 25, 25, 25, None))

View File

@@ -18,35 +18,38 @@
# =============================================================================== # ===============================================================================
from sqlalchemy import Table, Column, ForeignKey, Integer, Boolean, DateTime from sqlalchemy import Table, Column, ForeignKey, Integer, Boolean, DateTime
from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.orm import mapper, relation from sqlalchemy.orm import mapper, relation
import datetime import datetime
from eos.db import saveddata_meta from eos.db import saveddata_meta
from eos.saveddata.booster import Booster from eos.saveddata.booster import Booster
from eos.saveddata.boosterSideEffect import BoosterSideEffect
boosters_table = Table("boosters", saveddata_meta, boosters_table = Table("boosters", saveddata_meta,
Column("ID", Integer, primary_key=True), Column("ID", Integer, primary_key=True),
Column("itemID", Integer), Column("itemID", Integer),
Column("fitID", Integer, ForeignKey("fits.ID"), nullable=False), Column("fitID", Integer, ForeignKey("fits.ID"), nullable=False),
Column("active", Boolean), Column("active", Boolean),
Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("created", DateTime, nullable=True, default=datetime.datetime.now),
Column("modified", DateTime, nullable=True, onupdate=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, booster_side_effect_table = Table("boosterSideEffects", saveddata_meta,
Column("boosterID", ForeignKey("boosters.ID"), primary_key=True), Column("boosterID", Integer, ForeignKey("boosters.ID"), primary_key=True, index=True),
Column("effectID", Integer, primary_key=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, 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

@@ -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,9 @@
# ammoInfluenceCapNeed # ammoInfluenceCapNeed
# #
# Used by: # Used by:
# Items from category: Charge (466 of 913) # Items from category: Charge (464 of 898)
# Charges from group: Frequency Crystal (185 of 185) # Charges from group: Frequency Crystal (184 of 184)
# Charges from group: Hybrid Charge (209 of 209) # Charges from group: Hybrid Charge (208 of 208)
type = "passive" type = "passive"

View File

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

View File

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

View File

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

View File

@@ -1,9 +1,9 @@
# armorHPBonusAddPassive # armorHPBonusAddPassive
# #
# Used by: # Used by:
# Subsystems from group: Defensive Systems (16 of 16) # Subsystems from group: Defensive Systems (9 of 12)
type = "passive" type = "passive"
def handler(fit, module, context): 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 # boosterArmorHpPenalty
# #
# Used by: # Used by:
# Implants from group: Booster (12 of 48) # Implants from group: Booster (12 of 55)
type = "boosterSideEffect" 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): 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: Mindflood Booster (3 of 4)
# Implants named like: Sooth Sayer Booster (3 of 4) # Implants named like: Sooth Sayer Booster (3 of 4)
type = "boosterSideEffect" 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): def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Armor Repair Unit", 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: Blue Pill Booster (3 of 5)
# Implants named like: Exile Booster (3 of 4) # Implants named like: Exile Booster (3 of 4)
type = "boosterSideEffect" 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): 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 # boosterMaxVelocityPenalty
# #
# Used by: # Used by:
# Implants from group: Booster (12 of 48) # Implants from group: Booster (12 of 55)
type = "boosterSideEffect" 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): 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: Exile Booster (3 of 4)
# Implants named like: Mindflood Booster (3 of 4) # Implants named like: Mindflood Booster (3 of 4)
type = "boosterSideEffect" 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): def handler(fit, booster, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"), 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: # Used by:
# Implants named like: Blue Pill Booster (3 of 5) # Implants named like: Blue Pill Booster (3 of 5)
type = "boosterSideEffect" 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): def handler(fit, booster, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"), 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: Crash Booster (3 of 4)
# Implants named like: X Instinct Booster (3 of 4) # Implants named like: X Instinct Booster (3 of 4)
type = "boosterSideEffect" 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): def handler(fit, booster, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"), fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"maxVelocity", "boosterMissileVelocityPenalty") "maxVelocity", attr)

View File

@@ -1,10 +1,15 @@
# boosterShieldCapacityPenalty # boosterShieldCapacityPenalty
# #
# Used by: # Used by:
# Implants from group: Booster (12 of 48) # Implants from group: Booster (12 of 55)
type = "boosterSideEffect" 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): 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: Drop Booster (3 of 4)
# Implants named like: X Instinct Booster (3 of 4) # Implants named like: X Instinct Booster (3 of 4)
type = "boosterSideEffect" 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): def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), 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: Mindflood Booster (3 of 4)
# Implants named like: Sooth Sayer Booster (3 of 4) # Implants named like: Sooth Sayer Booster (3 of 4)
type = "boosterSideEffect" 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): def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), 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: Exile Booster (3 of 4)
# Implants named like: Frentix Booster (3 of 4) # Implants named like: Frentix Booster (3 of 4)
type = "boosterSideEffect" 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): def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"),
"trackingSpeed", booster.getModifiedItemAttr("boosterTurretTrackingPenalty")) "trackingSpeed", booster.getModifiedItemAttr(attr))

View File

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

View File

@@ -1,7 +1,8 @@
# capacityAddPassive # capacityAddPassive
# #
# Used by: # 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" type = "passive"

View File

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

View File

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

View File

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

View File

@@ -8,7 +8,7 @@
# Ships from group: Force Recon Ship (7 of 7) # Ships from group: Force Recon Ship (7 of 7)
# Ships from group: Stealth Bomber (4 of 4) # Ships from group: Stealth Bomber (4 of 4)
# Ships named like: Stratios (2 of 2) # 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: Astero
# Ship: Rabisu # Ship: Rabisu
type = "passive" type = "passive"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -3,6 +3,7 @@
# Used by: # Used by:
# Implants named like: Zainou 'Gypsy' CPU Management EE (6 of 6) # Implants named like: Zainou 'Gypsy' CPU Management EE (6 of 6)
# Modules named like: Processor Overclocking Unit (8 of 8) # 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 # Implant: Genolution Core Augmentation CA-2
# Skill: CPU Management # Skill: CPU Management
type = "passive" type = "passive"

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,7 +1,4 @@
# maxVelocityAddPassive # Not used by any item
#
# Used by:
# Subsystems from group: Propulsion Systems (16 of 16)
type = "passive" 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: # Used by:
# Ships from group: Covert Ops (7 of 7) # Ships from group: Covert Ops (7 of 7)
# Ships named like: Stratios (2 of 2) # 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: Astero
# Ship: Heron # Ship: Heron
# Ship: Imicus # Ship: Imicus

View File

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

View File

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

View File

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

View File

@@ -2,6 +2,7 @@
# #
# Used by: # Used by:
# Modules from group: Rig Anchor (4 of 4) # 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) # Implants named like: grade Snake (16 of 18)
# Modules named like: Auxiliary Thrusters (8 of 8) # Modules named like: Auxiliary Thrusters (8 of 8)
# Implant: Quafe Zero # Implant: Quafe Zero

View File

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

View File

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

View File

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

View File

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

View File

@@ -7,4 +7,4 @@ type = "passive"
def handler(fit, ship, context): def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Astrometrics"), 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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -7,5 +7,5 @@ type = "passive"
def handler(fit, ship, context): def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: True, "heatDamage", fit.modules.filteredItemBoost(lambda mod: True, "heatDamage",
ship.getModifiedItemAttr("shipBonusStrategicCruiserAmarr"), ship.getModifiedItemAttr("shipBonusStrategicCruiserAmarr1"),
skill="Amarr Strategic Cruiser") skill="Amarr Strategic Cruiser")

View File

@@ -0,0 +1,11 @@
# shipBonusStrategicCruiserAmarrNaniteRepairTime2
#
# Used by:
# Ship: Legion
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: True, "moduleRepairRate",
ship.getModifiedItemAttr("shipBonusStrategicCruiserAmarr2"),
skill="Amarr Strategic Cruiser")

View File

@@ -7,5 +7,5 @@ type = "passive"
def handler(fit, ship, context): def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: True, "heatDamage", fit.modules.filteredItemBoost(lambda mod: True, "heatDamage",
ship.getModifiedItemAttr("shipBonusStrategicCruiserCaldari"), ship.getModifiedItemAttr("shipBonusStrategicCruiserCaldari1"),
skill="Caldari Strategic Cruiser") skill="Caldari Strategic Cruiser")

View File

@@ -0,0 +1,11 @@
# shipBonusStrategicCruiserCaldariNaniteRepairTime2
#
# Used by:
# Ship: Tengu
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: True, "moduleRepairRate",
ship.getModifiedItemAttr("shipBonusStrategicCruiserCaldari2"),
skill="Caldari Strategic Cruiser")

View File

@@ -7,5 +7,5 @@ type = "passive"
def handler(fit, ship, context): def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: True, "heatDamage", fit.modules.filteredItemBoost(lambda mod: True, "heatDamage",
ship.getModifiedItemAttr("shipBonusStrategicCruiserGallente"), ship.getModifiedItemAttr("shipBonusStrategicCruiserGallente1"),
skill="Gallente Strategic Cruiser") skill="Gallente Strategic Cruiser")

View File

@@ -0,0 +1,11 @@
# shipBonusStrategicCruiserGallenteNaniteRepairTime2
#
# Used by:
# Ship: Proteus
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: True, "moduleRepairRate",
ship.getModifiedItemAttr("shipBonusStrategicCruiserGallente2"),
skill="Gallente Strategic Cruiser")

View File

@@ -7,5 +7,5 @@ type = "passive"
def handler(fit, ship, context): def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: True, "heatDamage", fit.modules.filteredItemBoost(lambda mod: True, "heatDamage",
ship.getModifiedItemAttr("shipBonusStrategicCruiserMinmatar"), ship.getModifiedItemAttr("shipBonusStrategicCruiserMinmatar1"),
skill="Minmatar Strategic Cruiser") skill="Minmatar Strategic Cruiser")

View File

@@ -0,0 +1,11 @@
# shipBonusStrategicCruiserMinmatarNaniteRepairTime2
#
# Used by:
# Ship: Loki
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: True, "moduleRepairRate",
ship.getModifiedItemAttr("shipBonusStrategicCruiserMinmatar2"),
skill="Minmatar Strategic Cruiser")

View File

@@ -0,0 +1,11 @@
# shipMaxLockedTargetsBonusAddPassive
#
# Used by:
# Subsystems named like: Core Dissolution Sequencer (2 of 2)
# Subsystems named like: Core Electronic Efficiency Gate (2 of 2)
# Subsystems named like: Offensive Support Processor (4 of 4)
type = "passive"
def handler(fit, src, context):
fit.ship.increaseItemAttr("maxLockedTargets", src.getModifiedItemAttr("maxLockedTargetsBonus"))

View File

@@ -1,4 +1,4 @@
# moduleBonusAncillaryRemoteArmorRepairer # shipModuleAncillaryRemoteArmorRepairer
# #
# Used by: # Used by:
# Modules from group: Ancillary Remote Armor Repairer (4 of 4) # Modules from group: Ancillary Remote Armor Repairer (4 of 4)

View File

@@ -1,4 +1,4 @@
# moduleBonusAncillaryRemoteShieldBooster # shipModuleAncillaryRemoteShieldBooster
# #
# Used by: # Used by:
# Modules from group: Ancillary Remote Shield Booster (4 of 4) # Modules from group: Ancillary Remote Shield Booster (4 of 4)

View File

@@ -1,4 +1,4 @@
# remoteArmorRepairFalloff # shipModuleRemoteArmorRepairer
# #
# Used by: # Used by:
# Modules from group: Remote Armor Repairer (39 of 39) # Modules from group: Remote Armor Repairer (39 of 39)

View File

@@ -1,4 +1,4 @@
# remoteEnergyTransferFalloff # shipModuleRemoteCapacitorTransmitter
# #
# Used by: # Used by:
# Modules from group: Remote Capacitor Transmitter (41 of 41) # Modules from group: Remote Capacitor Transmitter (41 of 41)

View File

@@ -1,4 +1,4 @@
# remoteHullRepairFalloff # shipModuleRemoteHullRepairer
# #
# Used by: # Used by:
# Modules from group: Remote Hull Repairer (8 of 8) # Modules from group: Remote Hull Repairer (8 of 8)

View File

@@ -1,4 +1,4 @@
# remoteShieldTransferFalloff # shipModuleRemoteShieldBooster
# #
# Used by: # Used by:
# Modules from group: Remote Shield Booster (38 of 38) # Modules from group: Remote Shield Booster (38 of 38)

View File

@@ -0,0 +1,10 @@
# signatureRadiusAddPassive
#
# Used by:
# Subsystems from group: Defensive Systems (8 of 12)
# Subsystems named like: Propulsion Interdiction Nullifier (4 of 4)
type = "passive"
def handler(fit, module, context):
fit.ship.increaseItemAttr("signatureRadius", module.getModifiedItemAttr("signatureRadius"))

View File

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

View File

@@ -1,7 +1,7 @@
# slotModifier # slotModifier
# #
# Used by: # Used by:
# Items from category: Subsystem (80 of 80) # Items from category: Subsystem (48 of 48)
type = "passive" type = "passive"

View File

@@ -1,6 +1,7 @@
# structuralAnalysisEffect # structuralAnalysisEffect
# #
# Used by: # Used by:
# Implants named like: Agency Tank Booster (3 of 3)
# Implants named like: Inherent Implants 'Noble' Repair Proficiency RP (6 of 6) # Implants named like: Inherent Implants 'Noble' Repair Proficiency RP (6 of 6)
# Modules named like: Auxiliary Nano Pump (8 of 8) # Modules named like: Auxiliary Nano Pump (8 of 8)
# Implant: Imperial Navy Modified 'Noble' Implant # Implant: Imperial Navy Modified 'Noble' Implant

View File

@@ -0,0 +1,10 @@
# structureHPBonusAddPassive
#
# Used by:
# Subsystems named like: Defensive Covert Reconfiguration (4 of 4)
# Subsystem: Loki Defensive - Adaptive Defense Node
type = "passive"
def handler(fit, module, context):
fit.ship.increaseItemAttr("hp", module.getModifiedItemAttr("structureHPBonusAdd") or 0)

View File

@@ -0,0 +1,10 @@
# subsystemBonusAmarrCore2EnergyDestabilizerAmount
#
# Used by:
# Subsystem: Legion Core - Energy Parasitic Complex
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Neutralizer", "energyNeutralizerAmount",
src.getModifiedItemAttr("subsystemBonusAmarrCore2"), skill="Amarr Core Systems")

View File

@@ -0,0 +1,9 @@
# subsystemBonusAmarrCore2EnergyResistance
#
# Used by:
# Subsystem: Legion Core - Augmented Antimatter Reactor
type = "passive"
def handler(fit, src, context):
fit.ship.boostItemAttr("energyWarfareResistance", src.getModifiedItemAttr("subsystemBonusAmarrCore2"), skill="Amarr Core Systems")

View File

@@ -0,0 +1,10 @@
# subsystemBonusAmarrCore2EnergyVampireAmount
#
# Used by:
# Subsystem: Legion Core - Energy Parasitic Complex
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Nosferatu", "powerTransferAmount",
src.getModifiedItemAttr("subsystemBonusAmarrCore2"), skill="Amarr Core Systems")

View File

@@ -0,0 +1,10 @@
# subsystemBonusAmarrCore2MaxTargetingRange
#
# Used by:
# Subsystem: Legion Core - Dissolution Sequencer
type = "passive"
def handler(fit, src, context):
fit.ship.boostItemAttr("maxTargetRange", src.getModifiedItemAttr("subsystemBonusAmarrCore2"),
skill="Amarr Core Systems")

View File

@@ -0,0 +1,10 @@
# subsystemBonusAmarrCore3EnergyWarHeatBonus
#
# Used by:
# Subsystem: Legion Core - Energy Parasitic Complex
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ("Energy Nosferatu", "Energy Neutralizer"), "overloadSelfDurationBonus",
src.getModifiedItemAttr("subsystemBonusAmarrCore3"), skill="Amarr Core Systems")

View File

@@ -0,0 +1,10 @@
# subsystemBonusAmarrCore3ScanResolution
#
# Used by:
# Subsystem: Legion Core - Dissolution Sequencer
type = "passive"
def handler(fit, src, context):
fit.ship.boostItemAttr("scanResolution", src.getModifiedItemAttr("subsystemBonusAmarrCore3"),
skill="Amarr Core Systems")

View File

@@ -0,0 +1,9 @@
# subsystemBonusAmarrCoreCapacitorCapacity
#
# Used by:
# Subsystem: Legion Core - Augmented Antimatter Reactor
type = "passive"
def handler(fit, src, context):
fit.ship.boostItemAttr("capacitorCapacity", src.getModifiedItemAttr("subsystemBonusAmarrCore"), skill="Amarr Core Systems")

View File

@@ -0,0 +1,10 @@
# subsystemBonusAmarrCoreScanStrengthRADAR
#
# Used by:
# Subsystem: Legion Core - Dissolution Sequencer
type = "passive"
def handler(fit, src, context):
fit.ship.boostItemAttr("scanRadarStrength", src.getModifiedItemAttr("subsystemBonusAmarrCore"),
skill="Amarr Core Systems")

View File

@@ -0,0 +1,12 @@
# subsystemBonusAmarrDefensive2ArmorRepHeat
#
# Used by:
# Subsystem: Legion Defensive - Nanobot Injector
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems"), "overloadArmorDamageAmount",
src.getModifiedItemAttr("subsystemBonusAmarrDefensive2"), skill="Amarr Defensive Systems")
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems"), "overloadSelfDurationBonus",
src.getModifiedItemAttr("subsystemBonusAmarrDefensive2"), skill="Amarr Defensive Systems")

View File

@@ -0,0 +1,12 @@
# subsystemBonusAmarrDefensive2HardenerHeat
#
# Used by:
# Subsystem: Legion Defensive - Augmented Plating
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Hull Upgrades"), "overloadSelfDurationBonus",
src.getModifiedItemAttr("subsystemBonusAmarrDefensive2"), skill="Amarr Defensive Systems")
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Hull Upgrades"), "overloadHardeningBonus",
src.getModifiedItemAttr("subsystemBonusAmarrDefensive2"), skill="Amarr Defensive Systems")

View File

@@ -1,7 +1,4 @@
# subsystemBonusAmarrDefensive2RemoteArmorRepairAmount # Not used by any item
#
# Used by:
# Subsystem: Legion Defensive - Adaptive Augmenter
type = "passive" type = "passive"
runTime = "early" runTime = "early"

View File

@@ -0,0 +1,15 @@
# subsystemBonusAmarrDefensive3ArmorRepHeat
#
# Used by:
# Subsystem: Legion Defensive - Covert Reconfiguration
# Subsystem: Legion Defensive - Nanobot Injector
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems"),
"overloadSelfDurationBonus", src.getModifiedItemAttr("subsystemBonusAmarrDefensive3"),
skill="Amarr Defensive Systems")
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems"),
"overloadArmorDamageAmount", src.getModifiedItemAttr("subsystemBonusAmarrDefensive3"),
skill="Amarr Defensive Systems")

View File

@@ -1,7 +1,4 @@
# subSystemBonusAmarrDefensiveArmoredWarfare # Not used by any item
#
# Used by:
# Subsystem: Legion Defensive - Warfare Processor
type = "passive" type = "passive"

View File

@@ -1,6 +1,7 @@
# subsystemBonusAmarrDefensiveArmorRepairAmount # subsystemBonusAmarrDefensiveArmorRepairAmount
# #
# Used by: # Used by:
# Subsystem: Legion Defensive - Covert Reconfiguration
# Subsystem: Legion Defensive - Nanobot Injector # Subsystem: Legion Defensive - Nanobot Injector
type = "passive" type = "passive"

View File

@@ -1,7 +1,4 @@
# subsystemBonusAmarrDefensiveArmorResistance # Not used by any item
#
# Used by:
# Subsystem: Legion Defensive - Adaptive Augmenter
type = "passive" type = "passive"

View File

@@ -1,7 +1,4 @@
# subSystemBonusAmarrDefensiveInformationWarfare # Not used by any item
#
# Used by:
# Subsystem: Legion Defensive - Warfare Processor
type = "passive" type = "passive"

View File

@@ -0,0 +1,11 @@
# subSystemBonusAmarrDefensiveScanProbeStrength2
#
# Used by:
# Subsystem: Legion Defensive - Covert Reconfiguration
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Astrometrics"),
"baseSensorStrength", module.getModifiedItemAttr("subsystemBonusAmarrDefensive2"),
skill="Amarr Defensive Systems")

View File

@@ -1,7 +1,4 @@
# subSystemBonusAmarrDefensiveSkirmishWarfare # Not used by any item
#
# Used by:
# Subsystem: Legion Defensive - Warfare Processor
type = "passive" type = "passive"

View File

@@ -0,0 +1,15 @@
# subSystemBonusAmarrDefensiveTractorBeamBonus3
#
# Used by:
# Subsystem: Legion Defensive - Covert Reconfiguration
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Tractor Beam",
"maxRange", module.getModifiedItemAttr("subsystemBonusAmarrDefensive3"),
skill="Amarr Defensive Systems")
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Tractor Beam",
"maxTractorVelocity", module.getModifiedItemAttr("subsystemBonusAmarrDefensive3"),
skill="Amarr Defensive Systems")

View File

@@ -1,7 +1,4 @@
# subsystemBonusAmarrElectronic2MaxTargetingRange # Not used by any item
#
# Used by:
# Subsystem: Legion Electronics - Dissolution Sequencer
type = "passive" type = "passive"

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