Merge branch 'master' into py3EFFS

This commit is contained in:
Maru Maru
2018-06-16 04:52:10 -04:00
340 changed files with 1741 additions and 1870 deletions

View File

@@ -24,10 +24,10 @@ saveInRoot = False
# Version data # Version data
version = "2.0.2" version = "2.1.1"
tag = "Stable" tag = "Stable"
expansionName = "YC120.3" expansionName = "Into the Abyss"
expansionVersion = "1.8" expansionVersion = "1.1"
evemonMinVersion = "4081" evemonMinVersion = "4081"
minItemSearchLength = 3 minItemSearchLength = 3

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable/>
<assemblyIdentity
type="win32"
name="Microsoft.VC90.CRT"
version="9.0.21022.8"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"/>
<file name="MSVCR90.DLL"/>
<file name="MSVCM90.DLL"/>
<file name="MSVCP90.DLL"/>
</assembly>

View File

@@ -5,7 +5,7 @@
; we do some #ifdef conditionals because automated compilation passes these as arguments ; we do some #ifdef conditionals because automated compilation passes these as arguments
#ifndef MyAppVersion #ifndef MyAppVersion
#define MyAppVersion "1.15.0" #define MyAppVersion "2.1.0"
#endif #endif
#ifndef MyAppExpansion #ifndef MyAppExpansion
#define MyAppExpansion "Vanguard 1.0" #define MyAppExpansion "Vanguard 1.0"
@@ -64,7 +64,7 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
[Files] [Files]
Source: "{#MyAppDir}\pyfa.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "{#MyAppDir}\pyfa.exe"; DestDir: "{app}"; Flags: ignoreversion; AfterInstall: RemoveFromVirtualStore
Source: "{#MyAppDir}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs Source: "{#MyAppDir}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
@@ -104,6 +104,22 @@ begin
FSWbemLocator := Unassigned; FSWbemLocator := Unassigned;
end; end;
procedure RemoveFromVirtualStore;
var
VirtualStore,FileName,FilePath:String;
DriveChars:Integer;
begin
VirtualStore:=AddBackslash(ExpandConstant('{localappdata}'))+'VirtualStore';
FileName:=ExpandConstant(CurrentFileName);
DriveChars:=Length(ExtractFileDrive(FileName));
if DriveChars>0 then begin
Delete(FileName,1,DriveChars);
FileName:=VirtualStore+FileName;
FilePath:=ExtractFilePath(FileName);
DelTree(FilePath, True, True, True);
end;
end;
function PrepareToInstall(var NeedsRestart: Boolean): String; function PrepareToInstall(var NeedsRestart: Boolean): String;
begin begin
if(IsAppRunning( 'pyfa.exe' )) then if(IsAppRunning( 'pyfa.exe' )) then

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity name="pyfa" processorArchitecture="x86" type="win32" version="1.0.0.0"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>
</assembly>

View File

@@ -20,6 +20,8 @@ added_files = [
('../../imgs/renders/*.png', 'imgs/renders'), ('../../imgs/renders/*.png', 'imgs/renders'),
('../../service/jargon/*.yaml', 'service/jargon'), ('../../service/jargon/*.yaml', 'service/jargon'),
('../../dist_assets/win/pyfa.ico', '.'), ('../../dist_assets/win/pyfa.ico', '.'),
('../../dist_assets/win/pyfa.exe.manifest', '.'),
('../../dist_assets/win/Microsoft.VC90.CRT.manifest', '.'),
(requests.certs.where(), '.'), # is this needed anymore? (requests.certs.where(), '.'), # is this needed anymore?
('../../eve.db', '.'), ('../../eve.db', '.'),
('../../README.md', '.'), ('../../README.md', '.'),

View File

@@ -11,6 +11,7 @@ debug = False
gamedataCache = True gamedataCache = True
saveddataCache = True saveddataCache = True
gamedata_version = "" gamedata_version = ""
gamedata_date = ""
gamedata_connectionstring = 'sqlite:///' + realpath(join(dirname(abspath(__file__)), "..", "eve.db")) gamedata_connectionstring = 'sqlite:///' + realpath(join(dirname(abspath(__file__)), "..", "eve.db"))
pyfalog.debug("Gamedata connection string: {0}", gamedata_connectionstring) pyfalog.debug("Gamedata connection string: {0}", gamedata_connectionstring)

View File

@@ -51,10 +51,14 @@ try:
config.gamedata_version = gamedata_session.execute( config.gamedata_version = gamedata_session.execute(
"SELECT `field_value` FROM `metadata` WHERE `field_name` LIKE 'client_build'" "SELECT `field_value` FROM `metadata` WHERE `field_name` LIKE 'client_build'"
).fetchone()[0] ).fetchone()[0]
config.gamedata_date = gamedata_session.execute(
"SELECT `field_value` FROM `metadata` WHERE `field_name` LIKE 'dump_time'"
).fetchone()[0]
except Exception as e: except Exception as e:
pyfalog.warning("Missing gamedata version.") pyfalog.warning("Missing gamedata version.")
pyfalog.critical(e) pyfalog.critical(e)
config.gamedata_version = None config.gamedata_version = None
config.gamedata_date = None
saveddata_connectionstring = config.saveddata_connectionstring saveddata_connectionstring = config.saveddata_connectionstring
if saveddata_connectionstring is not None: if saveddata_connectionstring is not None:

View File

@@ -2,7 +2,7 @@
# #
# Used by: # Used by:
# Modules from group: Missile Launcher Bomb (2 of 2) # Modules from group: Missile Launcher Bomb (2 of 2)
# Modules from group: Shield Extender (33 of 33) # Modules from group: Shield Extender (36 of 36)
type = "passive" type = "passive"

View File

@@ -1,7 +1,7 @@
# ammoInfluenceCapNeed # ammoInfluenceCapNeed
# #
# Used by: # Used by:
# Items from category: Charge (478 of 928) # Items from category: Charge (493 of 947)
type = "passive" type = "passive"

View File

@@ -1,7 +1,7 @@
# ammoInfluenceRange # ammoInfluenceRange
# #
# Used by: # Used by:
# Items from category: Charge (572 of 928) # Items from category: Charge (587 of 947)
type = "passive" type = "passive"

View File

@@ -4,6 +4,7 @@
# Charges from group: Festival Charges (23 of 23) # Charges from group: Festival Charges (23 of 23)
# Charges from group: Interdiction Probe (2 of 2) # Charges from group: Interdiction Probe (2 of 2)
# Charges from group: Structure Festival Charges (3 of 3) # Charges from group: Structure Festival Charges (3 of 3)
# Special Edition Assetss from group: Festival Charges Expired (2 of 2)
type = "passive" type = "passive"

View File

@@ -1,12 +1,7 @@
# ammoTrackingMultiplier # ammoTrackingMultiplier
# #
# Used by: # Used by:
# Charges from group: Advanced Artillery Ammo (8 of 8) # Items from category: Charge (182 of 947)
# Charges from group: Advanced Autocannon Ammo (8 of 8)
# Charges from group: Advanced Beam Laser Crystal (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 Railgun Charge (8 of 8)
# Charges from group: Projectile Ammo (128 of 128) # Charges from group: Projectile Ammo (128 of 128)
type = "passive" type = "passive"

View File

@@ -0,0 +1,16 @@
# aoe_beacon_bioluminescence_cloud
#
# Used by:
# Celestials named like: Bioluminescence Cloud (3 of 3)
runTime = "early"
type = ("projected", "passive", "gang")
def handler(fit, beacon, context, **kwargs):
for x in range(1, 3):
if beacon.getModifiedItemAttr("warfareBuff{}ID".format(x)):
value = beacon.getModifiedItemAttr("warfareBuff{}Value".format(x))
id = beacon.getModifiedItemAttr("warfareBuff{}ID".format(x))
if id:
fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early')

View File

@@ -0,0 +1,16 @@
# aoe_beacon_caustic_cloud
#
# Used by:
# Celestials named like: Caustic Cloud (3 of 3)
runTime = "early"
type = ("projected", "passive", "gang")
def handler(fit, beacon, context, **kwargs):
for x in range(1, 3):
if beacon.getModifiedItemAttr("warfareBuff{}ID".format(x)):
value = beacon.getModifiedItemAttr("warfareBuff{}Value".format(x))
id = beacon.getModifiedItemAttr("warfareBuff{}ID".format(x))
if id:
fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early')

View File

@@ -0,0 +1,16 @@
# aoe_beacon_filament_cloud
#
# Used by:
# Celestials named like: Filament Cloud (3 of 3)
runTime = "early"
type = ("projected", "passive", "gang")
def handler(fit, beacon, context, **kwargs):
for x in range(1, 3):
if beacon.getModifiedItemAttr("warfareBuff{}ID".format(x)):
value = beacon.getModifiedItemAttr("warfareBuff{}Value".format(x))
id = beacon.getModifiedItemAttr("warfareBuff{}ID".format(x))
if id:
fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early')

View File

@@ -1,6 +1,7 @@
# armorAllRepairSystemsAmountBonusPassive # armorAllRepairSystemsAmountBonusPassive
# #
# Used by: # Used by:
# Implants named like: Agency 'Hardshell' TB Dose (3 of 4)
# Implants named like: Exile Booster (4 of 4) # Implants named like: Exile Booster (4 of 4)
# Implant: Antipharmakon Kosybo # Implant: Antipharmakon Kosybo
type = "passive" type = "passive"
@@ -9,4 +10,4 @@ type = "passive"
def handler(fit, booster, context): def handler(fit, booster, context):
fit.modules.filteredItemBoost( fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill("Repair Systems") or mod.item.requiresSkill("Capital Repair Systems"), lambda mod: mod.item.requiresSkill("Repair Systems") or mod.item.requiresSkill("Capital Repair Systems"),
"armorDamageAmount", booster.getModifiedItemAttr("armorDamageAmountBonus")) "armorDamageAmount", booster.getModifiedItemAttr("armorDamageAmountBonus") or 0)

View File

@@ -1,7 +1,7 @@
# armorHPBonusAdd # armorHPBonusAdd
# #
# Used by: # Used by:
# Modules from group: Armor Reinforcer (48 of 48) # Modules from group: Armor Reinforcer (51 of 51)
type = "passive" type = "passive"

View File

@@ -1,7 +1,7 @@
# armorReinforcerMassAdd # armorReinforcerMassAdd
# #
# Used by: # Used by:
# Modules from group: Armor Reinforcer (48 of 48) # Modules from group: Armor Reinforcer (51 of 51)
type = "passive" type = "passive"

View File

@@ -1,7 +1,7 @@
# armorRepair # armorRepair
# #
# Used by: # Used by:
# Modules from group: Armor Repair Unit (105 of 105) # Modules from group: Armor Repair Unit (108 of 108)
runTime = "late" runTime = "late"
type = "active" type = "active"

View File

@@ -1,10 +0,0 @@
# Not used by any item
type = "gang", "active"
gangBonus = "armorHpBonus2"
gangBoost = "armorHP"
def handler(fit, module, context):
if "gang" not in context:
return
fit.ship.boostItemAttr("armorHP", module.getModifiedItemAttr("armorHpBonus2"))

View File

@@ -1,7 +1,7 @@
# boosterArmorHpPenalty # boosterArmorHpPenalty
# #
# Used by: # Used by:
# Implants from group: Booster (12 of 62) # Implants named like: Booster (12 of 33)
type = "boosterSideEffect" type = "boosterSideEffect"
# User-friendly name for the side effect # User-friendly name for the side effect

View File

@@ -1,7 +1,7 @@
# boosterMaxVelocityPenalty # boosterMaxVelocityPenalty
# #
# Used by: # Used by:
# Implants from group: Booster (12 of 62) # Implants named like: Booster (12 of 33)
type = "boosterSideEffect" type = "boosterSideEffect"
# User-friendly name for the side effect # User-friendly name for the side effect

View File

@@ -1,7 +1,7 @@
# boosterShieldCapacityPenalty # boosterShieldCapacityPenalty
# #
# Used by: # Used by:
# Implants from group: Booster (12 of 62) # Implants named like: Booster (12 of 33)
type = "boosterSideEffect" type = "boosterSideEffect"
# User-friendly name for the side effect # User-friendly name for the side effect

View File

@@ -4,7 +4,7 @@
# Modules from group: Capacitor Flux Coil (6 of 6) # Modules from group: Capacitor Flux Coil (6 of 6)
# Modules from group: Capacitor Power Relay (20 of 20) # Modules from group: Capacitor Power Relay (20 of 20)
# Modules from group: Power Diagnostic System (23 of 23) # Modules from group: Power Diagnostic System (23 of 23)
# Modules from group: Propulsion Module (65 of 127) # Modules from group: Propulsion Module (68 of 133)
# Modules from group: Reactor Control Unit (22 of 22) # Modules from group: Reactor Control Unit (22 of 22)
type = "passive" type = "passive"

View File

@@ -1,4 +1,7 @@
# Not used by any item # citadelRigBonus
#
# Used by:
# Structures from group: Citadel (9 of 9)
type = "passive" type = "passive"
runTime = "early" runTime = "early"

View File

@@ -2,6 +2,7 @@
# #
# Used by: # Used by:
# Modules from group: CPU Enhancer (19 of 19) # Modules from group: CPU Enhancer (19 of 19)
# Variations of structure module: Standup Co-Processor Array I (2 of 2)
type = "passive" type = "passive"

View File

@@ -1,9 +0,0 @@
# Not used by any item
type = "active", "projected"
def handler(fit, module, context):
if "projected" not in context:
return
fit.ship.boostItemAttr("maxVelocity", module.getModifiedItemAttr("speedFactor"),
stackingPenalties=True)

View File

@@ -0,0 +1,11 @@
# disintegratorWeaponDamageMultiply
#
# Used by:
# Modules from group: Entropic Radiation Sink (3 of 3)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == "Precursor Weapon",
"damageMultiplier", module.getModifiedItemAttr("damageMultiplier"),
stackingPenalties=True)

View File

@@ -0,0 +1,11 @@
# disintegratorWeaponSpeedMultiply
#
# Used by:
# Modules from group: Entropic Radiation Sink (3 of 3)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == "Precursor Weapon",
"speed", module.getModifiedItemAttr("speedMultiplier"),
stackingPenalties=True)

View File

@@ -2,6 +2,7 @@
# #
# Used by: # Used by:
# Module: Warp Disruption Burst Projector # Module: Warp Disruption Burst Projector
# Structure Module: Standup Warp Disruption Burst Projector
type = "projected", "active" type = "projected", "active"

View File

@@ -2,6 +2,7 @@
# #
# Used by: # Used by:
# Module: Sensor Dampening Burst Projector # Module: Sensor Dampening Burst Projector
# Structure Module: Standup Sensor Dampening Burst Projector
type = "projected", "active" type = "projected", "active"

View File

@@ -2,6 +2,7 @@
# #
# Used by: # Used by:
# Module: ECM Jammer Burst Projector # Module: ECM Jammer Burst Projector
# Structure Module: Standup ECM Jammer Burst Projector
from eos.modifiedAttributeDict import ModifiedAttributeDict from eos.modifiedAttributeDict import ModifiedAttributeDict
type = "projected", "active" type = "projected", "active"

View File

@@ -2,6 +2,7 @@
# #
# Used by: # Used by:
# Module: Energy Neutralization Burst Projector # Module: Energy Neutralization Burst Projector
# Structure Module: Standup Energy Neutralization Burst Projector
from eos.saveddata.module import State from eos.saveddata.module import State
from eos.modifiedAttributeDict import ModifiedAttributeDict from eos.modifiedAttributeDict import ModifiedAttributeDict

View File

@@ -2,6 +2,7 @@
# #
# Used by: # Used by:
# Module: Target Illumination Burst Projector # Module: Target Illumination Burst Projector
# Structure Module: Standup Target Illumination Burst Projector
type = "projected", "active" type = "projected", "active"

View File

@@ -2,6 +2,7 @@
# #
# Used by: # Used by:
# Module: Weapon Disruption Burst Projector # Module: Weapon Disruption Burst Projector
# Structure Module: Standup Weapon Disruption Burst Projector
type = "active", "projected" type = "active", "projected"

View File

@@ -2,6 +2,7 @@
# #
# Used by: # Used by:
# Module: Stasis Webification Burst Projector # Module: Stasis Webification Burst Projector
# Structure Module: Standup Stasis Webification Burst Projector
type = "active", "projected" type = "active", "projected"

View File

@@ -1,7 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, skill, context):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"),
"damageMultiplier", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level)

View File

@@ -8,4 +8,4 @@ type = "passive"
def handler(fit, container, context): def handler(fit, container, context):
level = container.level if "skill" in context else 1 level = container.level if "skill" in context else 1
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"), fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"),
"maxVelocity", container.getModifiedItemAttr("droneMaxVelocityBonus") * level) "maxVelocity", container.getModifiedItemAttr("droneMaxVelocityBonus") * level, stackingPenalties=True)

View File

@@ -1,9 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Information Command Specialist"),
"commandBonusHidden",
src.getModifiedItemAttr("eliteBonusCommandDestroyer1"),
skill="Command Destroyers")

View File

@@ -1,7 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("High Speed Maneuvering"), "signatureRadiusBonus",
src.getModifiedItemAttr("eliteBonusCommandDestroyer3"), skill="Command Destroyers")

View File

@@ -1,7 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Information Command Specialist"),
"commandBonusHidden", module.getModifiedItemAttr("eliteBonusCommandShips3"), skill="Command Ships")

View File

@@ -1,6 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, ship, context):
fit.ship.increaseItemAttr("droneCapacity", ship.getModifiedItemAttr("eliteBonusGunship2"), skill="Assault Frigates")

View File

@@ -1,7 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, src, context):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "trackingSpeed",
src.getModifiedItemAttr("eliteBonusGunship2"), stackingPenalties=True, skill="Assault Frigates")

View File

@@ -1,12 +0,0 @@
# Not used by any item
from eos.saveddata.module import State
type = "active", "projected"
def handler(fit, src, context):
if "projected" in context and ((hasattr(src, "state") and src.state >= State.ACTIVE) or hasattr(src, "amountActive")):
multiplier = src.amountActive if hasattr(src, "amountActive") else 1
amount = src.getModifiedItemAttr("energyNeutralizerAmount")
time = src.getModifiedItemAttr("duration")
fit.addDrain(src, time, amount * multiplier, 0)

View File

@@ -1,7 +1,7 @@
# energyNeutralizerFalloff # energyNeutralizerFalloff
# #
# Used by: # Used by:
# Modules from group: Energy Neutralizer (51 of 51) # Modules from group: Energy Neutralizer (54 of 54)
from eos.saveddata.module import State from eos.saveddata.module import State
from eos.modifiedAttributeDict import ModifiedAttributeDict from eos.modifiedAttributeDict import ModifiedAttributeDict

View File

@@ -1,9 +0,0 @@
# Not used by any item
type = "projected", "active"
def handler(fit, src, context):
if "projected" in context:
amount = src.getModifiedItemAttr("powerTransferAmount")
duration = src.getModifiedItemAttr("duration")
fit.addDrain(src, duration, -amount, 0)

View File

@@ -1,8 +0,0 @@
# Not used by any item
type = "projected", "active"
def handler(fit, container, context):
if "projected" in context:
fit.ship.boostItemAttr("signatureRadius", container.getModifiedItemAttr("signatureRadiusBonus"),
stackingPenalties=True)

View File

@@ -1,4 +1,8 @@
# Not used by any item # fighterAbilityAttackM
#
# Used by:
# Items from category: Fighter (50 of 82)
# Fighters from group: Heavy Fighter (34 of 34)
""" """
Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the
effects, and thus this effect file contains some custom information useful only to fighters. effects, and thus this effect file contains some custom information useful only to fighters.

View File

@@ -1,4 +1,7 @@
# Not used by any item # fighterAbilityECM
#
# Used by:
# Fighters named like: Scarab (4 of 4)
""" """
Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the
effects, and thus this effect file contains some custom information useful only to fighters. effects, and thus this effect file contains some custom information useful only to fighters.

View File

@@ -1,4 +1,7 @@
# Not used by any item # fighterAbilityEnergyNeutralizer
#
# Used by:
# Fighters named like: Cenobite (4 of 4)
""" """
Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the
effects, and thus this effect file contains some custom information useful only to fighters. effects, and thus this effect file contains some custom information useful only to fighters.

View File

@@ -1,4 +1,7 @@
# Not used by any item # fighterAbilityEvasiveManeuvers
#
# Used by:
# Fighters from group: Light Fighter (16 of 32)
""" """
Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the
effects, and thus this effect file contains some custom information useful only to fighters. effects, and thus this effect file contains some custom information useful only to fighters.

View File

@@ -1,4 +1,7 @@
# Not used by any item # fighterAbilityLaunchBomb
#
# Used by:
# Fighters from group: Heavy Fighter (16 of 34)
""" """
Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the
effects, and thus this effect file contains some custom information useful only to fighters. effects, and thus this effect file contains some custom information useful only to fighters.

View File

@@ -1,4 +1,7 @@
# Not used by any item # fighterAbilityMicroWarpDrive
#
# Used by:
# Items from category: Fighter (48 of 82)
""" """
Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the
effects, and thus this effect file contains some custom information useful only to fighters. effects, and thus this effect file contains some custom information useful only to fighters.

View File

@@ -1,4 +1,8 @@
# Not used by any item # fighterAbilityMissiles
#
# Used by:
# Items from category: Fighter (48 of 82)
# Fighters from group: Light Fighter (32 of 32)
""" """
Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the
effects, and thus this effect file contains some custom information useful only to fighters. effects, and thus this effect file contains some custom information useful only to fighters.

View File

@@ -1,4 +1,7 @@
# Not used by any item # fighterAbilityStasisWebifier
#
# Used by:
# Fighters named like: Dromi (4 of 4)
""" """
Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the
effects, and thus this effect file contains some custom information useful only to fighters. effects, and thus this effect file contains some custom information useful only to fighters.

View File

@@ -1,4 +1,7 @@
# Not used by any item # fighterAbilityWarpDisruption
#
# Used by:
# Fighters named like: Siren (4 of 4)
""" """
Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the
effects, and thus this effect file contains some custom information useful only to fighters. effects, and thus this effect file contains some custom information useful only to fighters.

View File

@@ -1,11 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, module, context):
# Note: we increase maxGroupActive by two.
# If we only increased it by one, we'd get the number to stay equal
# As Comman Processors use one themselves too
fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == "Gang Coordinator" and
"maxGroupActive" in mod.itemModifiedAttributes,
"maxGroupActive", 1)

View File

@@ -1,7 +1,7 @@
# fueledArmorRepair # fueledArmorRepair
# #
# Used by: # Used by:
# Modules from group: Ancillary Armor Repairer (4 of 4) # Modules from group: Ancillary Armor Repairer (7 of 7)
runTime = "late" runTime = "late"
type = "active" type = "active"

View File

@@ -1,7 +1,7 @@
# fueledShieldBoosting # fueledShieldBoosting
# #
# Used by: # Used by:
# Modules from group: Ancillary Shield Booster (5 of 5) # Modules from group: Ancillary Shield Booster (8 of 8)
runTime = "late" runTime = "late"
type = "active" type = "active"

View File

@@ -1,7 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Ice Harvesting"),
"capacitorNeed", ship.getModifiedItemAttr("iceHarvestCycleBonus"))

View File

@@ -1,8 +0,0 @@
# Not used by any item
type = "gang"
gangBoost = "maxTargetRange"
gangBonus = "maxTargetRangeBonus"
def handler(fit, container, context):
fit.ship.boostItemAttr(gangBoost, container.getModifiedItemAttr(gangBonus))

View File

@@ -1,8 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, implant, context):
fit.character.getSkill("Information Command").suppress()
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Information Command Specialist"),
"commandBonusHidden", implant.getModifiedItemAttr("mindlinkBonus"))

View File

@@ -0,0 +1,11 @@
# largeDisintegratorSkillDmgBonus
#
# Used by:
# Skill: Large Disintegrator Specialization
type = "passive"
def handler(fit, container, context):
level = container.level if "skill" in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Disintegrator Specialization"),
"damageMultiplier", container.getModifiedItemAttr("damageMultiplierBonus") * level)

View File

@@ -0,0 +1,11 @@
# largePrecursorTurretDmgBonusRequiredSkill
#
# Used by:
# Skill: Large Precursor Weapon
type = "passive"
def handler(fit, container, context):
level = container.level if "skill" in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Precursor Weapon"),
"damageMultiplier", container.getModifiedItemAttr("damageMultiplierBonus") * level)

View File

@@ -1,4 +1,7 @@
# Not used by any item # lightningWeapon
#
# Used by:
# Structure Module: Standup Arcing Vorton Projector I
type = 'active' type = 'active'

View File

@@ -1,52 +0,0 @@
# Not used by any item
type = "active"
runTime = "early"
def handler(fit, module, context):
# Resistances
for layer, attrPrefix in (('shield', 'shield'), ('armor', 'armor'), ('hull', '')):
for damageType in ('Kinetic', 'Thermal', 'Explosive', 'Em'):
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=penalize, penaltyGroup="preMul")
# Turrets
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Energy Turret") or
mod.item.requiresSkill("Large Hybrid Turret") or
mod.item.requiresSkill("Large Projectile Turret"),
"maxRange", module.getModifiedItemAttr("maxRangeBonus"),
stackingPenalties=True)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Energy Turret") or
mod.item.requiresSkill("Large Hybrid Turret") or
mod.item.requiresSkill("Large Projectile Turret"),
"falloff", module.getModifiedItemAttr("falloffBonus"),
stackingPenalties=True)
# Missiles
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Torpedoes") or
mod.charge.requiresSkill("Cruise Missiles") or
mod.charge.requiresSkill("Heavy Missiles"),
"maxVelocity", module.getModifiedItemAttr("missileVelocityBonus"))
# Tanking
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill("Capital Repair Systems") or mod.item.requiresSkill("Repair Systems"),
"armorDamageAmount", module.getModifiedItemAttr("armorDamageAmountBonus"),
stackingPenalties=True)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill("Capital Shield Operation") or mod.item.requiresSkill("Shield Operation"),
"shieldBonus", module.getModifiedItemAttr("shieldBoostMultiplier"),
stackingPenalties=True)
# Speed penalty
fit.ship.boostItemAttr("maxVelocity", module.getModifiedItemAttr("speedFactor"))
# Max locked targets
fit.ship.forceItemAttr("maxLockedTargets", module.getModifiedItemAttr("maxLockedTargets"))
# Block Hostile ewar
fit.ship.forceItemAttr("disallowOffensiveModifiers", module.getModifiedItemAttr("disallowOffensiveModifiers"))

View File

@@ -1,6 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, module, context):
fit.ship.increaseItemAttr("mass", module.getModifiedItemAttr("mass") or 0)

View File

@@ -1,6 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, module, context):
fit.ship.increaseItemAttr("maxVelocity", module.getModifiedItemAttr("maxVelocity"))

View File

@@ -0,0 +1,11 @@
# mediumDisintegratorSkillDmgBonus
#
# Used by:
# Skill: Medium Disintegrator Specialization
type = "passive"
def handler(fit, container, context):
level = container.level if "skill" in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Medium Disintegrator Specialization"),
"damageMultiplier", container.getModifiedItemAttr("damageMultiplierBonus") * level)

View File

@@ -0,0 +1,11 @@
# mediumPrecursorTurretDmgBonusRequiredSkill
#
# Used by:
# Skill: Medium Precursor Weapon
type = "passive"
def handler(fit, container, context):
level = container.level if "skill" in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Medium Precursor Weapon"),
"damageMultiplier", container.getModifiedItemAttr("damageMultiplierBonus") * level)

View File

@@ -1,7 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Director"),
"commandBonus", ship.getModifiedItemAttr("commandBonusEffective"))

View File

@@ -1,7 +1,7 @@
# missileSkillWarheadUpgradesEmDamageBonus # missileSkillWarheadUpgradesEmDamageBonus
# #
# Used by: # Used by:
# Implants named like: Agency 'Pyrolancea' DB Dose (3 of 3) # Implants named like: Agency 'Pyrolancea' DB Dose (3 of 4)
# Skill: Warhead Upgrades # Skill: Warhead Upgrades
type = "passive" type = "passive"

View File

@@ -1,7 +1,7 @@
# missileSkillWarheadUpgradesExplosiveDamageBonus # missileSkillWarheadUpgradesExplosiveDamageBonus
# #
# Used by: # Used by:
# Implants named like: Agency 'Pyrolancea' DB Dose (3 of 3) # Implants named like: Agency 'Pyrolancea' DB Dose (3 of 4)
# Skill: Warhead Upgrades # Skill: Warhead Upgrades
type = "passive" type = "passive"

View File

@@ -1,7 +1,7 @@
# missileSkillWarheadUpgradesKineticDamageBonus # missileSkillWarheadUpgradesKineticDamageBonus
# #
# Used by: # Used by:
# Implants named like: Agency 'Pyrolancea' DB Dose (3 of 3) # Implants named like: Agency 'Pyrolancea' DB Dose (3 of 4)
# Skill: Warhead Upgrades # Skill: Warhead Upgrades
type = "passive" type = "passive"

View File

@@ -1,7 +1,7 @@
# missileSkillWarheadUpgradesThermalDamageBonus # missileSkillWarheadUpgradesThermalDamageBonus
# #
# Used by: # Used by:
# Implants named like: Agency 'Pyrolancea' DB Dose (3 of 3) # Implants named like: Agency 'Pyrolancea' DB Dose (3 of 4)
# Skill: Warhead Upgrades # Skill: Warhead Upgrades
type = "passive" type = "passive"

View File

@@ -1,8 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, module, context):
for type in ("Em", "Explosive", "Kinetic", "Thermal"):
fit.ship.preAssignItemAttr("armor{0}DamageResonance".format(type),
module.getModifiedItemAttr("passiveArmor{0}DamageResonance".format(type)))

View File

@@ -1,8 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, module, context):
for type in ("Em", "Explosive", "Kinetic", "Thermal"):
fit.ship.preAssignItemAttr("shield{0}DamageResonance".format(type),
module.getModifiedItemAttr("passiveShield{0}DamageResonance".format(type)))

View File

@@ -1,7 +0,0 @@
# Not used by any item
runTime = "early"
type = "passive"
def handler(fit, module, context):
fit.ship.preAssignItemAttr("agility", module.getModifiedItemAttr("agility"))

View File

@@ -1,7 +1,7 @@
# moduleBonusAfterburner # moduleBonusAfterburner
# #
# Used by: # Used by:
# Modules from group: Propulsion Module (62 of 127) # Modules from group: Propulsion Module (65 of 133)
type = "active" type = "active"
runTime = "late" runTime = "late"

View File

@@ -1,7 +1,7 @@
# moduleBonusMicrowarpdrive # moduleBonusMicrowarpdrive
# #
# Used by: # Used by:
# Modules from group: Propulsion Module (65 of 127) # Modules from group: Propulsion Module (68 of 133)
type = "active" type = "active"
runTime = "late" runTime = "late"

View File

@@ -2,7 +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 'Overclocker' SB Dose (3 of 3) # Implants named like: Agency 'Overclocker' SB Dose (3 of 4)
# 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,10 +0,0 @@
# nosCpuNeedBonusEffect
#
# Used by:
# Ship: Rabisu
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Nosferatu", "cpu",
src.getModifiedItemAttr("nosferatuCpuNeedBonus"))

View File

@@ -1,8 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Emission Systems"),
"falloffEffectiveness", src.getModifiedItemAttr("shipBonusORECapital3"),
skill="Capital Industrial Ships")

View File

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

View File

@@ -1,8 +1,8 @@
# overloadSelfArmorDamageAmountDurationBonus # overloadSelfArmorDamageAmountDurationBonus
# #
# Used by: # Used by:
# Modules from group: Ancillary Armor Repairer (4 of 4) # Modules from group: Ancillary Armor Repairer (7 of 7)
# Modules from group: Armor Repair Unit (105 of 105) # Modules from group: Armor Repair Unit (108 of 108)
type = "overheat" type = "overheat"

View File

@@ -3,6 +3,7 @@
# Used by: # Used by:
# Modules from group: Energy Weapon (101 of 214) # Modules from group: Energy Weapon (101 of 214)
# Modules from group: Hybrid Weapon (105 of 221) # Modules from group: Hybrid Weapon (105 of 221)
# Modules from group: Precursor Weapon (15 of 15)
# Modules from group: Projectile Weapon (99 of 165) # Modules from group: Projectile Weapon (99 of 165)
type = "overheat" type = "overheat"

View File

@@ -2,7 +2,7 @@
# #
# Used by: # Used by:
# Modules from group: Capacitor Booster (59 of 59) # Modules from group: Capacitor Booster (59 of 59)
# Modules from group: Energy Neutralizer (51 of 51) # Modules from group: Energy Neutralizer (54 of 54)
# Modules from group: Energy Nosferatu (51 of 51) # Modules from group: Energy Nosferatu (51 of 51)
# Modules from group: Hull Repair Unit (25 of 25) # Modules from group: Hull Repair Unit (25 of 25)
# Modules from group: Remote Armor Repairer (39 of 39) # Modules from group: Remote Armor Repairer (39 of 39)

View File

@@ -2,8 +2,8 @@
# #
# Used by: # Used by:
# Modules from group: Stasis Grappler (7 of 7) # Modules from group: Stasis Grappler (7 of 7)
# Modules from group: Stasis Web (18 of 18) # Modules from group: Stasis Web (19 of 19)
# Modules from group: Warp Scrambler (52 of 53) # Modules from group: Warp Scrambler (54 of 55)
type = "overheat" type = "overheat"

View File

@@ -1,8 +1,8 @@
# overloadSelfShieldBonusDurationBonus # overloadSelfShieldBonusDurationBonus
# #
# Used by: # Used by:
# Modules from group: Ancillary Shield Booster (5 of 5) # Modules from group: Ancillary Shield Booster (8 of 8)
# Modules from group: Shield Booster (93 of 93) # Modules from group: Shield Booster (97 of 97)
type = "overheat" type = "overheat"

View File

@@ -1,7 +1,7 @@
# overloadSelfSpeedBonus # overloadSelfSpeedBonus
# #
# Used by: # Used by:
# Modules from group: Propulsion Module (127 of 127) # Modules from group: Propulsion Module (133 of 133)
type = "overheat" type = "overheat"

View File

@@ -1,4 +1,7 @@
# Not used by any item # pointDefense
#
# Used by:
# Structure Modules from group: Structure Area Denial Module (2 of 2)
type = 'active' type = 'active'

View File

@@ -5,6 +5,7 @@
# Modules from group: Capacitor Power Relay (20 of 20) # Modules from group: Capacitor Power Relay (20 of 20)
# Modules from group: Power Diagnostic System (23 of 23) # Modules from group: Power Diagnostic System (23 of 23)
# Modules from group: Reactor Control Unit (22 of 22) # Modules from group: Reactor Control Unit (22 of 22)
# Variations of structure module: Standup Reactor Control Unit I (2 of 2)
type = "passive" type = "passive"

View File

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

View File

@@ -1,6 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, module, context):
fit.ship.increaseItemAttr("rechargeRate", module.getModifiedItemAttr("rechargeRate"))

View File

@@ -2,6 +2,7 @@
# #
# Used by: # Used by:
# Modules from group: ECM (39 of 39) # Modules from group: ECM (39 of 39)
# Starbases from group: Electronic Warfare Battery (12 of 12)
from eos.modifiedAttributeDict import ModifiedAttributeDict from eos.modifiedAttributeDict import ModifiedAttributeDict
type = "projected", "active" type = "projected", "active"

View File

@@ -1,11 +0,0 @@
# Not used by any item
type = "projected", "active"
runTime = "late"
def handler(fit, module, context):
if "projected" not in context:
return
bonus = module.getModifiedItemAttr("structureDamageAmount")
duration = module.getModifiedItemAttr("duration") / 1000.0
fit.extraAttributes.increase("hullRepair", bonus / duration)

View File

@@ -2,6 +2,7 @@
# #
# Used by: # Used by:
# Modules from group: Sensor Dampener (6 of 6) # Modules from group: Sensor Dampener (6 of 6)
# Starbases from group: Sensor Dampening Battery (3 of 3)
type = "projected", "active" type = "projected", "active"

View File

@@ -2,7 +2,8 @@
# #
# Used by: # Used by:
# Modules from group: Stasis Grappler (7 of 7) # Modules from group: Stasis Grappler (7 of 7)
# Modules from group: Stasis Web (18 of 18) # Modules from group: Stasis Web (19 of 19)
# Starbases from group: Stasis Webification Battery (3 of 3)
type = "active", "projected" type = "active", "projected"

View File

@@ -1,7 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, skill, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill),
"drawback", skill.getModifiedItemAttr("rigDrawbackBonus") * skill.level)

View File

@@ -1,6 +0,0 @@
# Not used by any item
type = "passive"
def handler(fit, module, context):
fit.ship.increaseItemAttr("scanResolution", module.getModifiedItemAttr("scanResolution"))

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