Compare commits
155 Commits
preview_cr
...
v1.19.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c67e7dd93 | ||
|
|
df81a146d2 | ||
|
|
9bfb697f1e | ||
|
|
2e227cdbd5 | ||
|
|
fb7c227a10 | ||
|
|
e3742c0420 | ||
|
|
373ccbcee5 | ||
|
|
785060f12b | ||
|
|
4e509bbaee | ||
|
|
7e305aab67 | ||
|
|
55eed0d029 | ||
|
|
c7d5f2533a | ||
|
|
a6cfbcb331 | ||
|
|
45074952fd | ||
|
|
a73d9abc60 | ||
|
|
9fc31d6a55 | ||
|
|
9cb99a1170 | ||
|
|
f3f1d022ef | ||
|
|
253ebdc4e1 | ||
|
|
5d45f1d3f3 | ||
|
|
e253af9763 | ||
|
|
a355a82f8a | ||
|
|
ceb7eb15c3 | ||
|
|
115b154f0b | ||
|
|
2d1344b785 | ||
|
|
bdf793072c | ||
|
|
2f879d39f3 | ||
|
|
36ab224853 | ||
|
|
52d19b8de4 | ||
|
|
7be5ec844f | ||
|
|
3d26a31ee2 | ||
|
|
343d605a84 | ||
|
|
ef1228eb32 | ||
|
|
ad738f7e7c | ||
|
|
4a66fa0138 | ||
|
|
331338e7b9 | ||
|
|
8e28925336 | ||
|
|
df0e829dbe | ||
|
|
0c278b668c | ||
|
|
6e7ba714a8 | ||
|
|
d8e2e3ace1 | ||
|
|
69c3dd188e | ||
|
|
57da36f1cf | ||
|
|
753ba00ac0 | ||
|
|
290f7d116f | ||
|
|
81fa88a36d | ||
|
|
0dd98330aa | ||
|
|
ae55a2c1d2 | ||
|
|
43ae593568 | ||
|
|
81963a6a7d | ||
|
|
fbf67c134b | ||
|
|
a0cfe05eb5 | ||
|
|
ba6e8d7ad1 | ||
|
|
cbd2ed603f | ||
|
|
a2f1623b00 | ||
|
|
87ebcf0818 | ||
|
|
f329c9956e | ||
|
|
2ac62ece06 | ||
|
|
f9db5eb201 | ||
|
|
0a10f2d72a | ||
|
|
4325ccab8a | ||
|
|
04c6fad531 | ||
|
|
ca92285ff3 | ||
|
|
96eee3a173 | ||
|
|
a74c3c9b3d | ||
|
|
b4373cb0c5 | ||
|
|
9029c04ce6 | ||
|
|
c7c0c49218 | ||
|
|
191dd1c71b | ||
|
|
3b64373393 | ||
|
|
0f6c67e852 | ||
|
|
209297769f | ||
|
|
2d4e3a6ddf | ||
|
|
350f4c9f89 | ||
|
|
9c9a6b69fe | ||
|
|
2b9d85a4bc | ||
|
|
f053e45671 | ||
|
|
4d701f561e | ||
|
|
3cb6d03487 | ||
|
|
7dbe6dbe2d | ||
|
|
81f122467a | ||
|
|
20759d205c | ||
|
|
b37aea40a7 | ||
|
|
f95e864119 | ||
|
|
7a9de8cd99 | ||
|
|
dde8b1f802 | ||
|
|
89b756d760 | ||
|
|
3b1edd3283 | ||
|
|
5369b17ebf | ||
|
|
2fadaa890b | ||
|
|
31bdb75c51 | ||
|
|
0124f63d9a | ||
|
|
95dba166eb | ||
|
|
83adadd71f | ||
|
|
4baf65c0c7 | ||
|
|
72cdd3e104 | ||
|
|
febc2eee09 | ||
|
|
b302a0a6e5 | ||
|
|
1f6a14ee36 | ||
|
|
99a15af26e | ||
|
|
dff7a4d6ac | ||
|
|
3c8e6a61f2 | ||
|
|
fb997ab16d | ||
|
|
8fe5f43875 | ||
|
|
c8cfee3511 | ||
|
|
bf0b89f3b5 | ||
|
|
1d295c04e3 | ||
|
|
11ebde87c9 | ||
|
|
88c4de9820 | ||
|
|
09e0a0576c | ||
|
|
fc84c5dc94 | ||
|
|
687ebbc41b | ||
|
|
0abe953a70 | ||
|
|
2a8f3e4855 | ||
|
|
8cd36f3cbf | ||
|
|
5577e1976b | ||
|
|
4b27becb5f | ||
|
|
3c055b78d3 | ||
|
|
eb5ce91cb2 | ||
|
|
ef36dc5ba3 | ||
|
|
d9c710c5a1 | ||
|
|
c436e0e669 | ||
|
|
e80917e3d1 | ||
|
|
0d0ec42daf | ||
|
|
0e4cca6138 | ||
|
|
b701acb275 | ||
|
|
4eb61051c6 | ||
|
|
56aba37758 | ||
|
|
f432b08149 | ||
|
|
3e0b2fd09c | ||
|
|
c7b8d94e4f | ||
|
|
31a9b03436 | ||
|
|
f33f558006 | ||
|
|
bb4fe63a7c | ||
|
|
ccb9e085b2 | ||
|
|
702d249bad | ||
|
|
cc2835a341 | ||
|
|
d73c53cb10 | ||
|
|
73409a3324 | ||
|
|
24f770aa7b | ||
|
|
649b99d7bd | ||
|
|
a8b50032c4 | ||
|
|
d1d276ae68 | ||
|
|
6eafbb0a25 | ||
|
|
aedd7ce2de | ||
|
|
b0511ed856 | ||
|
|
d60b288e0e | ||
|
|
f7d5287087 | ||
|
|
6ed81e9bae | ||
|
|
1415de9573 | ||
|
|
73de795082 | ||
|
|
bb9760f79c | ||
|
|
53b8ca3940 | ||
|
|
8a9107c798 | ||
|
|
52f06bbd43 |
17
README.md
17
README.md
@@ -1,5 +1,7 @@
|
||||
# pyfa
|
||||
|
||||
[](https://gitter.im/pyfa-org/Pyfa?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
||||

|
||||
|
||||
## What is it?
|
||||
@@ -12,19 +14,28 @@ The latest version along with release notes can always be found on the projects
|
||||
## Installing
|
||||
Windows and OS X users are supplied self-contained builds of pyfa that can be run without additional software. An `.exe` installer is also available for the Windows builds. There is no self-contained package for Linux users, which are expected to run pyfa through their distributions Python interpreter. However, there are a number of third-party packages available that handle the dependencies and updates for pyfa (for example, [pyfa for Arch Linux](https://aur.archlinux.org/packages/pyfa/)). Please check your distributions repositories.
|
||||
|
||||
## Requirements
|
||||
### Requirements
|
||||
If you wish to help with development or simply need to run pyfa through a Python interpreter, the following software is required:
|
||||
|
||||
* Python >= 2.6
|
||||
* Python 2.7
|
||||
* `wxPython` 2.8/3.0
|
||||
* `sqlalchemy` >= 0.6
|
||||
* `dateutil`
|
||||
* `matplotlib` (for some Linux distributions, you may need to install separate wxPython bindings, such as `python-matplotlib-wx`)
|
||||
* `requests`
|
||||
|
||||
### Linux Distro-specific Packages
|
||||
The following is a list of pyfa packages available for certain distros. Please note that these packages are maintained by third-parties and are not evaluated by the pyfa developers.
|
||||
|
||||
* Debian/Ubuntu/derivitives: https://github.com/AdamMajer/Pyfa/releases
|
||||
* Arch: https://aur.archlinux.org/packages/pyfa/
|
||||
* openSUSE: https://build.opensuse.org/package/show/home:rmk2/pyfa
|
||||
* FreeBSD: http://www.freshports.org/games/pyfa/ (see #484 for instructions)
|
||||
|
||||
## Bug Reporting
|
||||
The preferred method of reporting bugs is through the projects GitHub Issues interface. Alternatively, posting a report in the pyfa thread on the official EVE Online forums is acceptable. Guidelines for bug reporting can be found on [this wiki page](https://github.com/DarkFenX/Pyfa/wiki/Bug-Reporting).
|
||||
|
||||
## Liscense
|
||||
## License
|
||||
pyfa is licensed under the GNU GPL v3.0, see LICENSE
|
||||
|
||||
## Resources
|
||||
|
||||
11
config.py
11
config.py
@@ -18,14 +18,12 @@ debug = False
|
||||
saveInRoot = False
|
||||
|
||||
# Version data
|
||||
version = "1.15.1"
|
||||
tag = "git"
|
||||
expansionName = "Vanguard"
|
||||
expansionVersion = "1.0"
|
||||
version = "1.19.1"
|
||||
tag = "Stable"
|
||||
expansionName = "February 2016"
|
||||
expansionVersion = "1.1"
|
||||
evemonMinVersion = "4081"
|
||||
|
||||
clientID = 'af87365240d644f7950af563b8418bad'
|
||||
|
||||
pyfaPath = None
|
||||
savePath = None
|
||||
saveDB = None
|
||||
@@ -96,6 +94,7 @@ def defPaths():
|
||||
|
||||
if isFrozen():
|
||||
os.environ["REQUESTS_CA_BUNDLE"] = os.path.join(pyfaPath, "cacert.pem")
|
||||
os.environ["SSL_CERT_FILE"] = os.path.join(pyfaPath, "cacert.pem")
|
||||
|
||||
format = '%(asctime)s %(name)-24s %(levelname)-8s %(message)s'
|
||||
logging.basicConfig(format=format, level=logLevel)
|
||||
|
||||
@@ -59,26 +59,20 @@ class CapSimulator(object):
|
||||
return duration, capNeed
|
||||
|
||||
def init(self, modules):
|
||||
"""prepare modules. a list of (duration, capNeed, clipSize) tuples is
|
||||
"""prepare modules. a list of (duration, capNeed, clipSize, disableStagger) tuples is
|
||||
expected, with clipSize 0 if the module has infinite ammo.
|
||||
"""
|
||||
mods = {}
|
||||
for module in modules:
|
||||
if module in mods:
|
||||
mods[module] += 1
|
||||
else:
|
||||
mods[module] = 1
|
||||
|
||||
self.modules = mods
|
||||
|
||||
self.modules = modules
|
||||
|
||||
def reset(self):
|
||||
"""Reset the simulator state"""
|
||||
self.state = []
|
||||
mods = {}
|
||||
period = 1
|
||||
disable_period = False
|
||||
|
||||
for (duration, capNeed, clipSize), amount in self.modules.iteritems():
|
||||
# Loop over modules, clearing clipSize if applicable, and group modules based on attributes
|
||||
for (duration, capNeed, clipSize, disableStagger) in self.modules:
|
||||
if self.scale:
|
||||
duration, capNeed = self.scale_activation(duration, capNeed)
|
||||
|
||||
@@ -87,7 +81,15 @@ class CapSimulator(object):
|
||||
if not self.reload and capNeed > 0:
|
||||
clipSize = 0
|
||||
|
||||
if self.stagger:
|
||||
# Group modules based on their properties
|
||||
if (duration, capNeed, clipSize, disableStagger) in mods:
|
||||
mods[(duration, capNeed, clipSize, disableStagger)] += 1
|
||||
else:
|
||||
mods[(duration, capNeed, clipSize, disableStagger)] = 1
|
||||
|
||||
# Loop over grouped modules, configure staggering and push to the simulation state
|
||||
for (duration, capNeed, clipSize, disableStagger), amount in mods.iteritems():
|
||||
if self.stagger and not disableStagger:
|
||||
if clipSize == 0:
|
||||
duration = int(duration/amount)
|
||||
else:
|
||||
@@ -167,13 +169,13 @@ class CapSimulator(object):
|
||||
|
||||
iterations += 1
|
||||
|
||||
t_last = t_now
|
||||
|
||||
if cap < cap_lowest:
|
||||
if cap < 0.0:
|
||||
break
|
||||
cap_lowest = cap
|
||||
|
||||
t_last = t_now
|
||||
|
||||
# queue the next activation of this module
|
||||
t_now += duration
|
||||
shot += 1
|
||||
|
||||
@@ -68,14 +68,8 @@ from eos.db.gamedata import *
|
||||
from eos.db.saveddata import *
|
||||
|
||||
#Import queries
|
||||
from eos.db.gamedata.queries import getItem, searchItems, getVariations, getItemsByCategory, directAttributeRequest, \
|
||||
getMarketGroup, getGroup, getCategory, getAttributeInfo, getMetaData, getMetaGroup
|
||||
from eos.db.saveddata.queries import getUser, getCharacter, getFit, getFitsWithShip, countFitsWithShip, searchFits, \
|
||||
getCharacterList, getPrice, getDamagePatternList, getDamagePattern, \
|
||||
getFitList, getFleetList, getFleet, save, remove, commit, add, \
|
||||
getCharactersForUser, getMiscData, getSquadsIDsWithFitID, getWing, \
|
||||
getSquad, getBoosterFits, getProjectedFits, getTargetResistsList, getTargetResists,\
|
||||
clearPrices, countAllFits, getCrestCharacters, getCrestCharacter
|
||||
from eos.db.gamedata.queries import *
|
||||
from eos.db.saveddata.queries import *
|
||||
|
||||
#If using in memory saveddata, you'll want to reflect it so the data structure is good.
|
||||
if config.saveddata_connectionstring == "sqlite:///:memory:":
|
||||
|
||||
116
eos/db/migrations/upgrade11.py
Normal file
116
eos/db/migrations/upgrade11.py
Normal file
@@ -0,0 +1,116 @@
|
||||
"""
|
||||
Migration 11
|
||||
|
||||
- Converts modules based on December Release 2015 Tiericide
|
||||
Some modules have been unpublished (and unpublished module attributes are removed
|
||||
from database), which causes pyfa to crash. We therefore replace these
|
||||
modules with their new replacements
|
||||
"""
|
||||
|
||||
|
||||
CONVERSIONS = {
|
||||
16467: ( # Medium Gremlin Compact Energy Neutralizer
|
||||
16471, # Medium Unstable Power Fluctuator I
|
||||
),
|
||||
22947: ( # 'Beatnik' Small Remote Armor Repairer
|
||||
23414, # 'Brotherhood' Small Remote Armor Repairer
|
||||
),
|
||||
8295: ( # Type-D Restrained Shield Flux Coil
|
||||
8293, # Beta Reactor Control: Shield Flux I
|
||||
),
|
||||
16499: ( # Heavy Knave Scoped Energy Nosferatu
|
||||
16501, # E500 Prototype Energy Vampire
|
||||
),
|
||||
16477: ( # Heavy Infectious Scoped Energy Neutralizer
|
||||
16473, # Heavy Rudimentary Energy Destabilizer I
|
||||
),
|
||||
16475: ( # Heavy Gremlin Compact Energy Neutralizer
|
||||
16479, # Heavy Unstable Power Fluctuator I
|
||||
),
|
||||
16447: ( # Medium Solace Scoped Remote Armor Repairer
|
||||
16445, # Medium 'Arup' Remote Armor Repairer
|
||||
),
|
||||
508: ( # 'Basic' Shield Flux Coil
|
||||
8325, # Alpha Reactor Shield Flux
|
||||
8329, # Marked Generator Refitting: Shield Flux
|
||||
8323, # Partial Power Plant Manager: Shield Flux
|
||||
8327, # Type-E Power Core Modification: Shield Flux
|
||||
),
|
||||
1419: ( # 'Basic' Shield Power Relay
|
||||
8341, # Alpha Reactor Shield Power Relay
|
||||
8345, # Marked Generator Refitting: Shield Power Relay
|
||||
8339, # Partial Power Plant Manager: Shield Power Relay
|
||||
8343, # Type-E Power Core Modification: Shield Power Relay
|
||||
),
|
||||
16439: ( # Small Solace Scoped Remote Armor Repairer
|
||||
16437, # Small 'Arup' Remote Armor Repairer
|
||||
),
|
||||
16505: ( # Medium Ghoul Compact Energy Nosferatu
|
||||
16511, # Medium Diminishing Power System Drain I
|
||||
),
|
||||
8297: ( # Mark I Compact Shield Flux Coil
|
||||
8291, # Local Power Plant Manager: Reaction Shield Flux I
|
||||
),
|
||||
16455: ( # Large Solace Scoped Remote Armor Repairer
|
||||
16453, # Large 'Arup' Remote Armor Repairer
|
||||
),
|
||||
6485: ( # M51 Benefactor Compact Shield Recharger
|
||||
6491, # Passive Barrier Compensator I
|
||||
6489, # 'Benefactor' Ward Reconstructor
|
||||
6487, # Supplemental Screen Generator I
|
||||
),
|
||||
5137: ( # Small Knave Scoped Energy Nosferatu
|
||||
5135, # E5 Prototype Energy Vampire
|
||||
),
|
||||
8579: ( # Medium Murky Compact Remote Shield Booster
|
||||
8581, # Medium 'Atonement' Remote Shield Booster
|
||||
),
|
||||
8531: ( # Small Murky Compact Remote Shield Booster
|
||||
8533, # Small 'Atonement' Remote Shield Booster
|
||||
),
|
||||
16497: ( # Heavy Ghoul Compact Energy Nosferatu
|
||||
16503, # Heavy Diminishing Power System Drain I
|
||||
),
|
||||
4477: ( # Small Gremlin Compact Energy Neutralizer
|
||||
4475, # Small Unstable Power Fluctuator I
|
||||
),
|
||||
8337: ( # Mark I Compact Shield Power Relay
|
||||
8331, # Local Power Plant Manager: Reaction Shield Power Relay I
|
||||
),
|
||||
23416: ( # 'Peace' Large Remote Armor Repairer
|
||||
22951, # 'Pacifier' Large Remote Armor Repairer
|
||||
),
|
||||
5141: ( # Small Ghoul Compact Energy Nosferatu
|
||||
5139, # Small Diminishing Power System Drain I
|
||||
),
|
||||
4471: ( # Small Infectious Scoped Energy Neutralizer
|
||||
4473, # Small Rudimentary Energy Destabilizer I
|
||||
),
|
||||
16469: ( # Medium Infectious Scoped Energy Neutralizer
|
||||
16465, # Medium Rudimentary Energy Destabilizer I
|
||||
),
|
||||
8335: ( # Type-D Restrained Shield Power Relay
|
||||
8333, # Beta Reactor Control: Shield Power Relay I
|
||||
),
|
||||
405: ( # 'Micro' Remote Shield Booster
|
||||
8631, # Micro Asymmetric Remote Shield Booster
|
||||
8627, # Micro Murky Remote Shield Booster
|
||||
8629, # Micro 'Atonement' Remote Shield Booster
|
||||
8633, # Micro S95a Remote Shield Booster
|
||||
),
|
||||
8635: ( # Large Murky Compact Remote Shield Booster
|
||||
8637, # Large 'Atonement' Remote Shield Booster
|
||||
),
|
||||
16507: ( # Medium Knave Scoped Energy Nosferatu
|
||||
16509, # E50 Prototype Energy Vampire
|
||||
),
|
||||
}
|
||||
|
||||
def upgrade(saveddata_engine):
|
||||
|
||||
# Convert modules
|
||||
for replacement_item, list in CONVERSIONS.iteritems():
|
||||
for retired_item in list:
|
||||
saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item))
|
||||
saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item))
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
__all__ = ["character", "fit", "module", "user", "crest", "skill", "price",
|
||||
"booster", "drone", "implant", "fleet", "damagePattern",
|
||||
"miscData", "targetResists"]
|
||||
__all__ = [
|
||||
"character",
|
||||
"fit",
|
||||
"module",
|
||||
"user",
|
||||
"skill",
|
||||
"price",
|
||||
"booster",
|
||||
"drone",
|
||||
"implant",
|
||||
"fleet",
|
||||
"damagePattern",
|
||||
"miscData",
|
||||
"targetResists",
|
||||
"override",
|
||||
"crest"
|
||||
]
|
||||
|
||||
|
||||
31
eos/db/saveddata/override.py
Normal file
31
eos/db/saveddata/override.py
Normal file
@@ -0,0 +1,31 @@
|
||||
#===============================================================================
|
||||
# Copyright (C) 2010 Diego Duclos
|
||||
#
|
||||
# This file is part of eos.
|
||||
#
|
||||
# eos is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# eos is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
#===============================================================================
|
||||
|
||||
from sqlalchemy import Table, Column, Integer, Float
|
||||
from sqlalchemy.orm import mapper
|
||||
|
||||
from eos.db import saveddata_meta
|
||||
from eos.types import Override
|
||||
|
||||
overrides_table = Table("overrides", saveddata_meta,
|
||||
Column("itemID", Integer, primary_key=True, index = True),
|
||||
Column("attrID", Integer, primary_key=True, index = True),
|
||||
Column("value", Float, nullable = False))
|
||||
|
||||
mapper(Override, overrides_table)
|
||||
@@ -19,7 +19,8 @@
|
||||
|
||||
from eos.db.util import processEager, processWhere
|
||||
from eos.db import saveddata_session, sd_lock
|
||||
from eos.types import User, Character, Fit, Price, DamagePattern, Fleet, MiscData, Wing, Squad, TargetResists, CrestChar
|
||||
|
||||
from eos.types import User, Character, Fit, Price, DamagePattern, Fleet, MiscData, Wing, Squad, TargetResists, Override, CrestChar
|
||||
from eos.db.saveddata.fleet import squadmembers_table
|
||||
from eos.db.saveddata.fit import projectedFits_table
|
||||
from sqlalchemy.sql import and_
|
||||
@@ -182,7 +183,7 @@ def getFit(lookfor, eager=None):
|
||||
else:
|
||||
eager = processEager(eager)
|
||||
with sd_lock:
|
||||
fit = saveddata_session.query(Fit).options(*eager).filter(Fit.ID == fitID).first()
|
||||
fit = saveddata_session.query(Fit).options(*eager).filter(Fit.ID == lookfor).first()
|
||||
else:
|
||||
raise TypeError("Need integer as argument")
|
||||
|
||||
@@ -440,6 +441,21 @@ def getCrestCharacter(lookfor, eager=None):
|
||||
raise TypeError("Need integer or string as argument")
|
||||
return character
|
||||
|
||||
def getOverrides(itemID, eager=None):
|
||||
if isinstance(itemID, int):
|
||||
return saveddata_session.query(Override).filter(Override.itemID == itemID).all()
|
||||
else:
|
||||
raise TypeError("Need integer as argument")
|
||||
|
||||
def clearOverrides():
|
||||
with sd_lock:
|
||||
deleted_rows = saveddata_session.query(Override).delete()
|
||||
commit()
|
||||
return deleted_rows
|
||||
|
||||
def getAllOverrides(eager=None):
|
||||
return saveddata_session.query(Override).all()
|
||||
|
||||
def removeInvalid(fits):
|
||||
invalids = [f for f in fits if f.isInvalid]
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# ammoInfluenceCapNeed
|
||||
#
|
||||
# Used by:
|
||||
# Items from category: Charge (458 of 831)
|
||||
# Items from category: Charge (458 of 833)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
# Dirty hack to work around cap charges setting cap booster
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# ammoInfluenceRange
|
||||
#
|
||||
# Used by:
|
||||
# Items from category: Charge (559 of 831)
|
||||
# Items from category: Charge (559 of 833)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
module.multiplyItemAttr("maxRange", module.getModifiedChargeAttr("weaponRangeMultiplier"))
|
||||
11
eos/effects/armorrepairprojectorfalloffbonus.py
Normal file
11
eos/effects/armorrepairprojectorfalloffbonus.py
Normal file
@@ -0,0 +1,11 @@
|
||||
# armorRepairProjectorFalloffBonus
|
||||
#
|
||||
# Used by:
|
||||
# Variations of ship: Navitas (2 of 2)
|
||||
# Ship: Augoror
|
||||
# Ship: Deacon
|
||||
# Ship: Exequror
|
||||
# Ship: Inquisitor
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Armor Repairer", "falloffEffectiveness", src.getModifiedItemAttr("falloffBonus"))
|
||||
@@ -1,10 +1,11 @@
|
||||
# armorRepairProjectorMaxRangeBonus
|
||||
#
|
||||
# Used by:
|
||||
# Variations of ship: Navitas (2 of 2)
|
||||
# Ship: Augoror
|
||||
# Ship: Deacon
|
||||
# Ship: Exequror
|
||||
# Ship: Inquisitor
|
||||
# Ship: Navitas
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Armor Repairer",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# armorTankingGang2
|
||||
# armorWarfareArmorHpReplacer
|
||||
#
|
||||
# Used by:
|
||||
# Implant: Armored Warfare Mindlink
|
||||
@@ -1,7 +1,7 @@
|
||||
# boosterArmorHpPenalty
|
||||
#
|
||||
# Used by:
|
||||
# Implants from group: Booster (12 of 39)
|
||||
# Implants from group: Booster (12 of 37)
|
||||
type = "boosterSideEffect"
|
||||
def handler(fit, booster, context):
|
||||
fit.ship.boostItemAttr("armorHP", booster.getModifiedItemAttr("boosterArmorHPPenalty"))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# boosterArmorRepairAmountPenalty
|
||||
#
|
||||
# Used by:
|
||||
# Implants from group: Booster (9 of 39)
|
||||
# Implants from group: Booster (9 of 37)
|
||||
type = "boosterSideEffect"
|
||||
def handler(fit, booster, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Armor Repair Unit",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# boosterMaxVelocityPenalty
|
||||
#
|
||||
# Used by:
|
||||
# Implants from group: Booster (12 of 39)
|
||||
# Implants from group: Booster (12 of 37)
|
||||
type = "boosterSideEffect"
|
||||
def handler(fit, booster, context):
|
||||
fit.ship.boostItemAttr("maxVelocity", booster.getModifiedItemAttr("boosterMaxVelocityPenalty"))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# boosterShieldCapacityPenalty
|
||||
#
|
||||
# Used by:
|
||||
# Implants from group: Booster (12 of 39)
|
||||
# Implants from group: Booster (12 of 37)
|
||||
type = "boosterSideEffect"
|
||||
def handler(fit, booster, context):
|
||||
fit.ship.boostItemAttr("shieldCapacity", booster.getModifiedItemAttr("boosterShieldCapacityPenalty"))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# boosterTurretOptimalRangePenalty
|
||||
#
|
||||
# Used by:
|
||||
# Implants from group: Booster (9 of 39)
|
||||
# Implants from group: Booster (9 of 37)
|
||||
type = "boosterSideEffect"
|
||||
def handler(fit, booster, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
# caldariShipEwCapacitorNeedCF2
|
||||
#
|
||||
# Used by:
|
||||
# Variations of ship: Griffin (2 of 2)
|
||||
# Ship: Griffin
|
||||
# Ship: Kitsune
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "ECM",
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
# Modules from group: Power Diagnostic System (23 of 23)
|
||||
# Modules from group: Propulsion Module (114 of 114)
|
||||
# Modules from group: Reactor Control Unit (22 of 22)
|
||||
# Modules from group: Shield Flux Coil (11 of 11)
|
||||
# Modules from group: Shield Power Relay (11 of 11)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.multiplyItemAttr("capacitorCapacity", module.getModifiedItemAttr("capacitorCapacityMultiplier"))
|
||||
|
||||
8
eos/effects/carrieramarrarmortransferfalloff3.py
Normal file
8
eos/effects/carrieramarrarmortransferfalloff3.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# carrierAmarrArmorTransferFalloff3
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Aeon
|
||||
# Ship: Archon
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Remote Armor Repair Systems"), "falloffEffectiveness", src.getModifiedItemAttr("carrierAmarrBonus3"), skill="Amarr Carrier")
|
||||
@@ -7,6 +7,6 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Emission Systems"),
|
||||
"shieldTransferRange", ship.getModifiedItemAttr("carrierCaldariBonus3"), skill="Caldari Carrier")
|
||||
"maxRange", ship.getModifiedItemAttr("carrierCaldariBonus3"), skill="Caldari Carrier")
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Capacitor Emission Systems"),
|
||||
"powerTransferRange", ship.getModifiedItemAttr("carrierCaldariBonus3"), skill="Caldari Carrier")
|
||||
|
||||
9
eos/effects/carriercaldarishieldtransferfalloff3.py
Normal file
9
eos/effects/carriercaldarishieldtransferfalloff3.py
Normal file
@@ -0,0 +1,9 @@
|
||||
# carrierCaldariShieldTransferFalloff3
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Chimera
|
||||
# Ship: Revenant
|
||||
# Ship: Wyvern
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Emission Systems"), "falloffEffectiveness", src.getModifiedItemAttr("carrierCaldariBonus3"), skill="Caldari Carrier")
|
||||
@@ -0,0 +1,8 @@
|
||||
# carrierGallenteArmor&ShieldTransferFalloff3
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Nyx
|
||||
# Ship: Thanatos
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Emission Systems") or mod.item.requiresSkill("Capital Remote Armor Repair Systems"), "falloffEffectiveness", src.getModifiedItemAttr("carrierGallenteBonus3"), skill="Gallente Carrier")
|
||||
@@ -6,6 +6,6 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Emission Systems"),
|
||||
"shieldTransferRange", ship.getModifiedItemAttr("carrierGallenteBonus3"), skill="Gallente Carrier")
|
||||
"maxRange", ship.getModifiedItemAttr("carrierGallenteBonus3"), skill="Gallente Carrier")
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Remote Armor Repair Systems"),
|
||||
"maxRange", ship.getModifiedItemAttr("carrierGallenteBonus3"), skill="Gallente Carrier")
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
# carrierMinmatarArmor&ShieldTransferFalloff3
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Hel
|
||||
# Ship: Nidhoggur
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Emission Systems") or mod.item.requiresSkill("Capital Remote Armor Repair Systems"), "falloffEffectiveness", src.getModifiedItemAttr("carrierMinmatarBonus3"), skill="Minmatar Carrier")
|
||||
@@ -6,6 +6,6 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Emission Systems"),
|
||||
"shieldTransferRange", ship.getModifiedItemAttr("carrierMinmatarBonus3"), skill="Minmatar Carrier")
|
||||
"maxRange", ship.getModifiedItemAttr("carrierMinmatarBonus3"), skill="Minmatar Carrier")
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Remote Armor Repair Systems"),
|
||||
"maxRange", ship.getModifiedItemAttr("carrierMinmatarBonus3"), skill="Minmatar Carrier")
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
gangBonus = "commandBonusECM"
|
||||
gangBoost = "ewarStrECM"
|
||||
type = "active", "gang"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
for scanType in ("Magnetometric", "Radar", "Ladar", "Gravimetric"):
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
gangBonus = "commandBonusRSD"
|
||||
gangBoost = "ewarStrRSD"
|
||||
type = "active", "gang"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Sensor Linking"),
|
||||
|
||||
@@ -5,8 +5,18 @@
|
||||
gangBonus = "commandBonusTD"
|
||||
gangBoost = "ewarStrTD"
|
||||
type = "active", "gang"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
for bonus in ("maxRangeBonus", "falloffBonus", "trackingSpeedBonus"):
|
||||
for bonus in (
|
||||
"missileVelocityBonus",
|
||||
"explosionDelayBonus",
|
||||
"aoeVelocityBonus",
|
||||
"falloffBonus",
|
||||
"maxRangeBonus",
|
||||
"aoeCloudSizeBonus",
|
||||
"trackingSpeedBonus"
|
||||
):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Weapon Disruption"),
|
||||
bonus, module.getModifiedItemAttr("commandBonusTD"))
|
||||
|
||||
@@ -5,8 +5,10 @@
|
||||
gangBonus = "commandBonusTP"
|
||||
gangBoost = "ewarStrTP"
|
||||
type = "active", "gang"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Target Painter",
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Target Painting"),
|
||||
"signatureRadiusBonus", module.getModifiedItemAttr("commandBonusTP"),
|
||||
stackingPenalties = True)
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
# Ships from group: Black Ops (4 of 4)
|
||||
# Ships from group: Blockade Runner (4 of 4)
|
||||
# Ships from group: Covert Ops (5 of 5)
|
||||
# Ships from group: Expedition Frigate (2 of 2)
|
||||
# Ships from group: Force Recon Ship (6 of 6)
|
||||
# Ships from group: Stealth Bomber (4 of 4)
|
||||
# Ships named like: Stratios (2 of 2)
|
||||
# Subsystems named like: Offensive Covert Reconfiguration (4 of 4)
|
||||
# Ship: Astero
|
||||
# Ship: Prospect
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
fit.modules.filteredItemForce(lambda mod: mod.item.requiresSkill("Cloaking"),
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
type = "passive"
|
||||
runTime = "early"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Cloaking Device",
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Cloaking"),
|
||||
"cpu", ship.getModifiedItemAttr("eliteBonusCoverOps1"), skill="Covert Ops")
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# covertOpsCloakCPUPercentBonusPirateFaction
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Expedition Frigate (2 of 2)
|
||||
# Ship: Astero
|
||||
# Ship: Prospect
|
||||
# Ship: Victorieux Luxury Yacht
|
||||
type = "passive"
|
||||
runTime = "early"
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
# Ships from group: Black Ops (4 of 4)
|
||||
# Ships from group: Stealth Bomber (4 of 4)
|
||||
# Ship: Chremoas
|
||||
# Ship: Endurance
|
||||
# Ship: Etana
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
# droneArmorDamageBonusEffect
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Logistics (5 of 5)
|
||||
# Ship: Exequror
|
||||
# Ship: Guardian
|
||||
# Ship: Oneiros
|
||||
# Ship: Scythe
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# droneDmgBonus
|
||||
#
|
||||
# Used by:
|
||||
# Skills from group: Drones (8 of 21)
|
||||
# Skills from group: Drones (8 of 23)
|
||||
# Skills named like: Drone Specialization (4 of 4)
|
||||
type = "passive"
|
||||
def handler(fit, skill, context):
|
||||
|
||||
9
eos/effects/dronehullrepairbonuseffect.py
Normal file
9
eos/effects/dronehullrepairbonuseffect.py
Normal file
@@ -0,0 +1,9 @@
|
||||
# droneHullRepairBonusEffect
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Logistics (5 of 5)
|
||||
# Ship: Exequror
|
||||
# Ship: Scythe
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == "Logistic Drone", "structureDamageAmount", src.getModifiedItemAttr("droneArmorDamageAmountBonus"))
|
||||
@@ -1,7 +1,7 @@
|
||||
# droneShieldBonusBonusEffect
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Logistics (3 of 5)
|
||||
# Ships from group: Logistics (5 of 5)
|
||||
# Ship: Exequror
|
||||
# Ship: Scythe
|
||||
type = "passive"
|
||||
|
||||
8
eos/effects/elitebonuscommanddestroyerarmored1.py
Normal file
8
eos/effects/elitebonuscommanddestroyerarmored1.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# eliteBonusCommandDestroyerArmored1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Magus
|
||||
# Ship: Pontifex
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Armored Warfare Specialist"), "commandBonus", src.getModifiedItemAttr("eliteBonusCommandDestroyer1"), skill="Command Destroyers")
|
||||
8
eos/effects/elitebonuscommanddestroyerinfo1.py
Normal file
8
eos/effects/elitebonuscommanddestroyerinfo1.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# eliteBonusCommandDestroyerInfo1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Pontifex
|
||||
# Ship: Stork
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Information Warfare Specialist"), "commandBonus", src.getModifiedItemAttr("eliteBonusCommandDestroyer1"), skill="Command Destroyers")
|
||||
8
eos/effects/elitebonuscommanddestroyerinfohidden1.py
Normal file
8
eos/effects/elitebonuscommanddestroyerinfohidden1.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# eliteBonusCommandDestroyerInfoHidden1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Pontifex
|
||||
# Ship: Stork
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Information Warfare Specialist"), "commandBonusHidden", src.getModifiedItemAttr("eliteBonusCommandDestroyer1"), skill="Command Destroyers")
|
||||
7
eos/effects/elitebonuscommanddestroyermjfgspool2.py
Normal file
7
eos/effects/elitebonuscommanddestroyermjfgspool2.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# eliteBonusCommandDestroyerMJFGspool2
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Command Destroyers (4 of 4)
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Micro Jump Drive Operation"), "duration", src.getModifiedItemAttr("eliteBonusCommandDestroyer2"), skill="Command Destroyers")
|
||||
7
eos/effects/elitebonuscommanddestroyermwdsigradius3.py
Normal file
7
eos/effects/elitebonuscommanddestroyermwdsigradius3.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# eliteBonusCommandDestroyerMWDSigRadius3
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Command Destroyers (4 of 4)
|
||||
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")
|
||||
8
eos/effects/elitebonuscommanddestroyersiege1.py
Normal file
8
eos/effects/elitebonuscommanddestroyersiege1.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# eliteBonusCommandDestroyerSiege1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Bifrost
|
||||
# Ship: Stork
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Siege Warfare Specialist"), "commandBonus", src.getModifiedItemAttr("eliteBonusCommandDestroyer1"), skill="Command Destroyers")
|
||||
8
eos/effects/elitebonuscommanddestroyerskirmish1.py
Normal file
8
eos/effects/elitebonuscommanddestroyerskirmish1.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# eliteBonusCommandDestroyerSkirmish1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Bifrost
|
||||
# Ship: Magus
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Skirmish Warfare Specialist"), "commandBonus", src.getModifiedItemAttr("eliteBonusCommandDestroyer1"), skill="Command Destroyers")
|
||||
@@ -1,8 +0,0 @@
|
||||
# eliteBonusElectronicAttackShipEnergyNeutRange1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Sentinel
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Destabilizer",
|
||||
"energyDestabilizationRange", ship.getModifiedItemAttr("eliteBonusElectronicAttackShip1"), skill="Electronic Attack Ships")
|
||||
@@ -1,8 +0,0 @@
|
||||
# eliteBonusElectronicAttackShipEnergyVampireRange1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Sentinel
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Vampire",
|
||||
"powerTransferRange", ship.getModifiedItemAttr("eliteBonusElectronicAttackShip1"), skill="Electronic Attack Ships")
|
||||
7
eos/effects/elitebonuslogifrigarmorhp2.py
Normal file
7
eos/effects/elitebonuslogifrigarmorhp2.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# eliteBonusLogiFrigArmorHP2
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Deacon
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.ship.boostItemAttr("armorHP", src.getModifiedItemAttr("eliteBonusLogiFrig2"), skill="Logistics Frigates")
|
||||
9
eos/effects/elitebonuslogifrigarmorrepspeedcap1.py
Normal file
9
eos/effects/elitebonuslogifrigarmorrepspeedcap1.py
Normal file
@@ -0,0 +1,9 @@
|
||||
# eliteBonusLogiFrigArmorRepSpeedCap1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Deacon
|
||||
# Ship: Thalia
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), "capacitorNeed", src.getModifiedItemAttr("eliteBonusLogiFrig1"), skill="Logistics Frigates")
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), "duration", src.getModifiedItemAttr("eliteBonusLogiFrig1"), skill="Logistics Frigates")
|
||||
7
eos/effects/elitebonuslogifrigshieldhp2.py
Normal file
7
eos/effects/elitebonuslogifrigshieldhp2.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# eliteBonusLogiFrigShieldHP2
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Kirin
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.ship.boostItemAttr("shieldCapacity", src.getModifiedItemAttr("eliteBonusLogiFrig2"), skill="Logistics Frigates")
|
||||
9
eos/effects/elitebonuslogifrigshieldrepspeedcap1.py
Normal file
9
eos/effects/elitebonuslogifrigshieldrepspeedcap1.py
Normal file
@@ -0,0 +1,9 @@
|
||||
# eliteBonusLogiFrigShieldRepSpeedCap1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Kirin
|
||||
# Ship: Scalpel
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Emission Systems"), "duration", src.getModifiedItemAttr("eliteBonusLogiFrig1"), skill="Logistics Frigates")
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Emission Systems"), "capacitorNeed", src.getModifiedItemAttr("eliteBonusLogiFrig1"), skill="Logistics Frigates")
|
||||
8
eos/effects/elitebonuslogifrigsignature2.py
Normal file
8
eos/effects/elitebonuslogifrigsignature2.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# eliteBonusLogiFrigSignature2
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Scalpel
|
||||
# Ship: Thalia
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.ship.boostItemAttr("signatureRadius", src.getModifiedItemAttr("eliteBonusLogiFrig2"), skill="Logistics Frigates")
|
||||
@@ -5,4 +5,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Capacitor Transmitter",
|
||||
"capacitorNeed", ship.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics")
|
||||
"capacitorNeed", ship.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics Cruisers")
|
||||
|
||||
@@ -6,4 +6,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Capacitor Transmitter",
|
||||
"capacitorNeed", ship.getModifiedItemAttr("eliteBonusLogistics2"), skill="Logistics")
|
||||
"capacitorNeed", ship.getModifiedItemAttr("eliteBonusLogistics2"), skill="Logistics Cruisers")
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Armor Repairer",
|
||||
"capacitorNeed", ship.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics")
|
||||
"capacitorNeed", ship.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics Cruisers")
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Armor Repairer",
|
||||
"capacitorNeed", ship.getModifiedItemAttr("eliteBonusLogistics2"), skill="Logistics")
|
||||
"capacitorNeed", ship.getModifiedItemAttr("eliteBonusLogistics2"), skill="Logistics Cruisers")
|
||||
|
||||
@@ -6,4 +6,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Shield Booster",
|
||||
"capacitorNeed", ship.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics")
|
||||
"capacitorNeed", ship.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics Cruisers")
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Shield Booster",
|
||||
"capacitorNeed", ship.getModifiedItemAttr("eliteBonusLogistics2"), skill="Logistics")
|
||||
"capacitorNeed", ship.getModifiedItemAttr("eliteBonusLogistics2"), skill="Logistics Cruisers")
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Tracking Computer",
|
||||
"falloffBonus", ship.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics")
|
||||
"falloffBonus", ship.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics Cruisers")
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Tracking Computer",
|
||||
"falloffBonus", ship.getModifiedItemAttr("eliteBonusLogistics2"), skill="Logistics")
|
||||
"falloffBonus", ship.getModifiedItemAttr("eliteBonusLogistics2"), skill="Logistics Cruisers")
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Tracking Computer",
|
||||
"maxRangeBonus", ship.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics")
|
||||
"maxRangeBonus", ship.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics Cruisers")
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Tracking Computer",
|
||||
"maxRangeBonus", ship.getModifiedItemAttr("eliteBonusLogistics2"), skill="Logistics")
|
||||
"maxRangeBonus", ship.getModifiedItemAttr("eliteBonusLogistics2"), skill="Logistics Cruisers")
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Tracking Computer",
|
||||
"trackingSpeedBonus", ship.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics")
|
||||
"trackingSpeedBonus", ship.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics Cruisers")
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Tracking Computer",
|
||||
"trackingSpeedBonus", ship.getModifiedItemAttr("eliteBonusLogistics2"), skill="Logistics")
|
||||
"trackingSpeedBonus", ship.getModifiedItemAttr("eliteBonusLogistics2"), skill="Logistics Cruisers")
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
# Ship: Pilgrim
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Vampire",
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Nosferatu",
|
||||
"powerTransferAmount", ship.getModifiedItemAttr("eliteBonusReconShip2"), skill="Recon Ships")
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
# Ship: Pilgrim
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Destabilizer",
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Neutralizer",
|
||||
"energyDestabilizationAmount", ship.getModifiedItemAttr("eliteBonusReconShip2"), skill="Recon Ships")
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
# eliteReconBonusEnergyNeutRange1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Curse
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Destabilizer",
|
||||
"energyDestabilizationRange", ship.getModifiedItemAttr("eliteBonusReconShip1"), skill="Recon Ships")
|
||||
@@ -1,8 +0,0 @@
|
||||
# eliteReconBonusNeutRange3
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Pilgrim
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Destabilizer",
|
||||
"energyDestabilizationRange", ship.getModifiedItemAttr("eliteBonusReconShip3"), skill="Recon Ships")
|
||||
@@ -1,8 +0,0 @@
|
||||
# eliteReconBonusVampRange3
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Pilgrim
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Vampire",
|
||||
"powerTransferRange", ship.getModifiedItemAttr("eliteBonusReconShip3"), skill="Recon Ships")
|
||||
@@ -1,8 +0,0 @@
|
||||
# eliteReconEnergyVampireRangeBonus1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Curse
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Vampire",
|
||||
"powerTransferRange", ship.getModifiedItemAttr("eliteBonusReconShip1"), skill="Recon Ships")
|
||||
@@ -1,8 +1,7 @@
|
||||
# energyDestabilizationNew
|
||||
#
|
||||
# Used by:
|
||||
# Drones from group: Cap Drain Drone (3 of 3)
|
||||
# Modules from group: Energy Destabilizer (41 of 41)
|
||||
# Drones from group: Energy Neutralizer Drone (3 of 3)
|
||||
from eos.types import State
|
||||
type = "active", "projected"
|
||||
def handler(fit, container, context):
|
||||
|
||||
13
eos/effects/energyneutralizerfalloff.py
Normal file
13
eos/effects/energyneutralizerfalloff.py
Normal file
@@ -0,0 +1,13 @@
|
||||
# energyNeutralizerFalloff
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Energy Neutralizer (45 of 45)
|
||||
from eos.types import State
|
||||
type = "active", "projected"
|
||||
def handler(fit, container, context):
|
||||
if "projected" in context and ((hasattr(container, "state") \
|
||||
and container.state >= State.ACTIVE) or hasattr(container, "amountActive")):
|
||||
multiplier = container.amountActive if hasattr(container, "amountActive") else 1
|
||||
amount = container.getModifiedItemAttr("energyDestabilizationAmount")
|
||||
time = container.getModifiedItemAttr("duration")
|
||||
fit.addDrain(time, amount * multiplier, 0)
|
||||
@@ -1,7 +1,7 @@
|
||||
# leech
|
||||
# energyNosferatuFalloff
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Energy Vampire (52 of 52)
|
||||
# Modules from group: Energy Nosferatu (45 of 45)
|
||||
type = "active", "projected"
|
||||
runTime = "late"
|
||||
def handler(fit, module, context):
|
||||
@@ -10,4 +10,4 @@ def handler(fit, module, context):
|
||||
if "projected" in context:
|
||||
fit.addDrain(time, amount, 0)
|
||||
elif "module" in context:
|
||||
module.itemModifiedAttributes.force("capacitorNeed", -amount)
|
||||
module.itemModifiedAttributes.force("capacitorNeed", -amount)
|
||||
@@ -6,4 +6,4 @@
|
||||
type = "passive"
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Capacitor Transmitter",
|
||||
"powerTransferRange", ship.getModifiedItemAttr("maxRangeBonus"))
|
||||
"powerTransferRange", ship.getModifiedItemAttr("maxRangeBonus2"))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# entosisCPUAddition
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Entosis Link (2 of 2)
|
||||
# Modules from group: Entosis Link (6 of 6)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
module.increaseItemAttr("cpu", module.getModifiedItemAttr("entosisCPUAdd"))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# entosisLink
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Entosis Link (2 of 2)
|
||||
# Modules from group: Entosis Link (6 of 6)
|
||||
type = "active"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.forceItemAttr("disallowAssistance", module.getModifiedItemAttr("disallowAssistance"))
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
# Implants named like: grade Centurion (10 of 12)
|
||||
type = "passive"
|
||||
def handler(fit, implant, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Tracking Disruptor",
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Weapon Disruptor",
|
||||
"maxRange", implant.getModifiedItemAttr("rangeSkillBonus"))
|
||||
16
eos/effects/ewskillguidancedisruptionbonus.py
Normal file
16
eos/effects/ewskillguidancedisruptionbonus.py
Normal file
@@ -0,0 +1,16 @@
|
||||
# ewSkillGuidanceDisruptionBonus
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Tracking Diagnostic Subroutines (8 of 8)
|
||||
# Skill: Weapon Destabilization
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
level = src.level if "skill" in context else 1
|
||||
for attr in (
|
||||
"explosionDelayBonus",
|
||||
"aoeVelocityBonus",
|
||||
"aoeCloudSizeBonus",
|
||||
"missileVelocityBonus"
|
||||
):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Weapon Disruption"),
|
||||
attr, src.getModifiedItemAttr("scanSkillEwStrengthBonus") * level)
|
||||
@@ -4,5 +4,5 @@
|
||||
# Skill: Frequency Modulation
|
||||
type = "passive"
|
||||
def handler(fit, skill, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Tracking Disruptor",
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Weapon Disruptor",
|
||||
"falloff", skill.getModifiedItemAttr("falloffBonus") * skill.level)
|
||||
@@ -6,6 +6,6 @@
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
level = container.level if "skill" in context else 1
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Tracking Disruptor",
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Weapon Disruptor",
|
||||
"maxRange", container.getModifiedItemAttr("rangeSkillBonus") * level,
|
||||
stackingPenalties = "skill" not in context)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Tracking Diagnostic Subroutines (8 of 8)
|
||||
# Skill: Turret Destabilization
|
||||
# Skill: Weapon Destabilization
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
level = container.level if "skill" in context else 1
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Tracking Diagnostic Subroutines (8 of 8)
|
||||
# Skill: Turret Destabilization
|
||||
# Skill: Weapon Destabilization
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
level = container.level if "skill" in context else 1
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Tracking Disruptor",
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Weapon Disruptor",
|
||||
"trackingSpeedBonus", container.getModifiedItemAttr("scanSkillEwStrengthBonus") * level)
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# expeditionFrigateBonusIceHarvestingCycleTime2
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Endurance
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Ice Harvesting"), "duration", src.getModifiedItemAttr("eliteBonusExpedition2"), skill="Expedition Frigates")
|
||||
10
eos/effects/expeditionfrigateshieldresistance1.py
Normal file
10
eos/effects/expeditionfrigateshieldresistance1.py
Normal file
@@ -0,0 +1,10 @@
|
||||
# expeditionFrigateShieldResistance1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Endurance
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.ship.boostItemAttr("shieldThermalDamageResonance", src.getModifiedItemAttr("eliteBonusExpedition1"), skill="Expedition Frigates")
|
||||
fit.ship.boostItemAttr("shieldKineticDamageResonance", src.getModifiedItemAttr("eliteBonusExpedition1"), skill="Expedition Frigates")
|
||||
fit.ship.boostItemAttr("shieldExplosiveDamageResonance", src.getModifiedItemAttr("eliteBonusExpedition1"), skill="Expedition Frigates")
|
||||
fit.ship.boostItemAttr("shieldEmDamageResonance", src.getModifiedItemAttr("eliteBonusExpedition1"), skill="Expedition Frigates")
|
||||
@@ -4,6 +4,8 @@
|
||||
# Variations of module: Skirmish Warfare Link - Rapid Deployment I (2 of 2)
|
||||
type = "gang", "active"
|
||||
gangBoost = "speedFactor"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Propulsion Module",
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
# Variations of module: Armored Warfare Link - Passive Defense I (2 of 2)
|
||||
type = "gang", "active"
|
||||
gangBoost = "armorResistance"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
for damageType in ("Em", "Thermal", "Explosive", "Kinetic"):
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
# Variations of module: Armored Warfare Link - Damage Control I (2 of 2)
|
||||
type = "gang", "active"
|
||||
gangBoost = "armorRepairCapacitorNeed"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems") or mod.item.requiresSkill("Remote Armor Repair Systems"),
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
# Variations of module: Armored Warfare Link - Rapid Repair I (2 of 2)
|
||||
type = "gang", "active"
|
||||
gangBoost = "armorRepairDuration"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems") or mod.item.requiresSkill("Remote Armor Repair Systems"),
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
# Variations of module: Skirmish Warfare Link - Evasive Maneuvers I (2 of 2)
|
||||
type = "gang", "active"
|
||||
gangBoost = "signatureRadius"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
fit.ship.boostItemAttr("signatureRadius", module.getModifiedItemAttr("commandBonus"),
|
||||
|
||||
@@ -4,9 +4,11 @@
|
||||
# Variations of module: Information Warfare Link - Recon Operation I (2 of 2)
|
||||
type = "gang", "active"
|
||||
gangBoost = "electronicMaxRange"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
groups = ("Target Painter", "Tracking Disruptor", "Remote Sensor Damper", "ECM", "ECM Burst")
|
||||
groups = ("Target Painter", "Weapon Disruptor", "Remote Sensor Damper", "ECM", "ECM Burst")
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
|
||||
"maxRange", module.getModifiedItemAttr("commandBonus"),
|
||||
stackingPenalties = True)
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
# gangInformationWarfareSuperiorityAll
|
||||
# gangInformationWarfareSuperiorityAll2
|
||||
#
|
||||
# Used by:
|
||||
# Variations of module: Information Warfare Link - Electronic Superiority I (2 of 2)
|
||||
type = "active"
|
||||
|
||||
def handler(fit, module, context):
|
||||
module.multiplyItemAttr("commandBonusTD", module.getModifiedItemAttr("commandBonusHidden"))
|
||||
module.multiplyItemAttr("commandBonusECM", module.getModifiedItemAttr("commandBonusHidden"))
|
||||
@@ -4,9 +4,11 @@
|
||||
# Variations of module: Skirmish Warfare Link - Interdiction Maneuvers I (2 of 2)
|
||||
type = "gang", "active"
|
||||
gangBoost = "interdictionMaxRange"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
groups = ("Stasis Web","Warp Scrambler")
|
||||
groups = ("Stasis Web", "Warp Scrambler")
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
|
||||
"maxRange", module.getModifiedItemAttr("commandBonus"),
|
||||
stackingPenalties = True)
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
type = "gang", "active"
|
||||
gangBoost = "maxTargetRange"
|
||||
gangBonus = "commandBonus"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
fit.ship.boostItemAttr("maxTargetRange", module.getModifiedItemAttr("commandBonus"),
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
# Variations of module: Siege Warfare Link - Shield Efficiency I (2 of 2)
|
||||
type = "gang", "active"
|
||||
gangBoost = "shieldRepairCapacitorNeed"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill("Shield Emission Systems"),
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
# Variations of module: Siege Warfare Link - Active Shielding I (2 of 2)
|
||||
type = "gang", "active"
|
||||
gangBoost = "shieldRepairDuration"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill("Shield Emission Systems"),
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
# Variations of module: Siege Warfare Link - Shield Harmonizing I (2 of 2)
|
||||
type = "gang", "active"
|
||||
gangBoost = "shieldResistance"
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
if "gang" not in context: return
|
||||
for damageType in ("Em", "Explosive", "Thermal", "Kinetic"):
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
# GCHYieldMultiplyPassive
|
||||
#
|
||||
# Used by:
|
||||
# Variations of ship: Venture (2 of 2)
|
||||
# Ship: Prospect
|
||||
# Ship: Venture
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == "Gas Cloud Harvester",
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Tracking Enhancer (17 of 17)
|
||||
# Module: QA Damage Module
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"),
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Tracking Enhancer (17 of 17)
|
||||
# Module: QA Damage Module
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"),
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user